Java ou C++ pour le 2D !

Bonjour,

Je dois réaliser une application qui fais des dessins 2D (à l’aide de lignes et de courbes). Est ce que pour cela je doit utiliser OpenGl ou une bibliothèque comme SDL ?

Si jamais j’utilise java, est ce que c’est approprié pour le 2D et j’aurais besoin de quels outils pour cela ?

Merci de me donner votre avis, j’en ai besoin.

Lili.

Hum pour C++ tu es effectivement forcé de passer par une librairie additionelle, il n’en existe pas de base dans C++.
Maintenant utiliser OpenGL… oui pourquoi pas, mais peut-être en existe-t-il de plus simple. Mais bon, OpenGL reste très simple à utiliser et permet des trucs très sympa. (Si tu veux je dois même avoir une petite applic 2D très simple faite en OpenGL pour te donner un exemple).

Pour Java, ça peut être aussi une bonne solution, avec Swing tu as la possibilité de faire très simplement des dessins 2D dans une application fenêtrée. L’avantage de Swing c’est que tu pourras aussi très simplement faire l’interface graphique (avec des boutons etc…) ce qui risque d’être un poil plus dur à faire en C++.

Maintenant tout dépend aussi de tes besoins au niveau de la vitesse d’exécution. Sous Java, surtout avec Swing, ça risque d’être relativement lent, mais bon si c’est juste pour dessiner 2 traits et 3 cercles ça devrait très bien le faire et représenter une masse de travail beaucoup moins grande.

Dis nous un peu plus sur ton application et on pourra te donner une réponse un peu plus précise !

+1 sur ce que dit Gimli.

Pour la lenteur il est vrai qu’une appli java sera moin réactive qu’une appli en C++ au démarrage, mais pour une appli de dessin ça ne pose aucun problème.

Le gros avantage de Java dans ton cas est qu’il dispose de tous les outils nécessaires pour faire de la 2D simple (API Java2D) et même du traitement d’image assez avancé (Java Advanced Imaging API). Ces API te permettrons de gagner un temps assez considérable dans la mesure où elle sont parfaitement intégrées (puisque faisant partie des API officielles Sun) et surtout largement documentées.

Que rajouter à part un +1, même si pas mal de personne n’aime pas Java, il a pas mal d’API sympa bien documenté facile à utiliser, alors que le C++… :stuck_out_tongue:

SDL ?

[quote name=‘kursk’ date=’ 9 Jan 2005, 21:40’]SDL ?
[right][post=“320621”]<{POST_SNAPBACK}>[/post][/right][/quote]
une alternative à DirectX, portable…
http://www.libsdl.org/index.php

Tout dépends de la plateforme cible, en même temps. Il faudrait préciser si c’est pour *nix, pour windows, ou pour les deux…

La vitesse d’exécution est très importante pour moi, donc je vais essayer le C et le java, je doit les comparer. Si vous me donnez vos avis personnels, ce serait sympa.

En fait le dessin à réaliser est une surface fermée, pas de texture ni de couleur (que du noire), le contour est un ensemble de lignes et de courbes qui se joignent.

ben Gimly, une appli 2D avec openGL pourrai me donner une idée plus claire.

Ca m’interesse des liens (tuto ou articles) pour Swing et SDL.

Merci à tous.

Lili.

[quote name=‘Lili_Dur’ date=’ 11 Jan 2005, 09:27’]La vitesse d’exécution est très importante pour moi,
[right][post=“321071”]<{POST_SNAPBACK}>[/post][/right][/quote]

Bah, la aujourd’hui Java est aussi rapide que le C ou le C++. Pas mal de bench ont ete fait sur le net prouvent cela. C’est du a la fois a la puissance de nos PC aujourd’hui, et au fait que les JVM sont de plus en plus performante.
Le seul ecart encore perceptible se situe a la limite au coût en ram du programme, puisqu’il faut ajouter le JVM.

Mais bon, c’est pas ca qui te permettra de trancher entre Java et C++ …

Si c’est sous windows, et que la rapidité est un problème, j’aurai tendance à dire C++ avec du Win32 inside, qui comporte tout ce qu’il faut de fonctions simples de dessin, et pas foncièrement difficilé à utiliser dès qu’on en a compris la logique.

C’est clair que ce sera moins simple à faire qu’en Java, mais ensuite, c’est toi qui voit.

[quote name=‹ Lili_Dur › date=’ 11 Jan 2005, 09:27’]En fait le dessin à réaliser est une surface fermée, pas de texture ni de couleur (que du noire), le contour est un ensemble de lignes et de courbes qui se joignent.

ben Gimly, une appli 2D avec openGL pourrai me donner une idée plus claire.
[right][post=« 321071 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Une sorte d’éditeur de polygones? J’ai fait ça en Java (bon juste avec un ensemble de lignes) et c’est super simple à faire en Java… Par contre faire pareil en C, c’est beaucoup moins simple, surtout si tu veux ensuite remplir ces polygones!

J’ai aussi un exemple d’éditeur de polygone je te l’envoie, envoie moi un mp pour me donner ton adresse e-mail.

Mais explique nous ce qu’est réellement ton programme (c’est pas un projet top secret, si? :stuck_out_tongue: ) ça nous permettera d’avoir plus d’idées de tes besoins en performance et ainsi te dire vers quel language te tourner!

[quote name=‹ cben76 › date=’ 11 Jan 2005, 09:43’]Bah, la aujourd’hui Java est aussi rapide que le C ou le C++. Pas mal de bench ont ete fait sur le net prouvent cela.
[right][post=« 321078 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Mmh, même avec Swing? J’émet quelques petits doutes là… Swing restant quand même une affreuse usine à gaz pas mal lente.

[quote]Mmh, même avec Swing? J’émet quelques petits doutes là… Swing restant quand même une affreuse usine à gaz pas mal lente.
[right][post=« 321094 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Clair, vu la gestion des évènements de swing…
Par contre si tu commences a prendre des autres trucs genre ceux fournis par eclipse, tu commences a faire des machins jolis et qui tournent trés vite :stuck_out_tongue:

Mais bon je préfère le C++ :stuck_out_tongue: (ca offre un sentiment de puissance tout autre, ce qui est relativement important en prog pour l’ego :P)

Donc pour moi, soit tu fais ca en c++, soit en java mais avec autre chose que swing (swing m’a fait croire pendant des années que java était pourri)

la lib graphique utilisée par eclipse c’est le SWT je croit… par contre il parait (jamais touché :P" ) que c’est quand même plus chaud a utiliser que swing…

Beuh et du C# avec du GDI+ ou du managed direct draw derriere dans une appli windows forms? Ca enterre SWING ou SWT. Ca va tracer et ca sera juste trop simple a programmer et si un truc te plait pas dans System.Drawing.dll ou System.Windows.Forms.dll tu m’en parle parceque je fais parti des gens qui s’en occupent, on vera ce qu’on fait pour .net 3.0 ou 2.1 :stuck_out_tongue: (bon GDI+ c’est pas moi donc je suis limite dans ce que je peux faire mais on peut toujours en discuter)…

[quote name=‹ GloP › date=’ 11 Jan 2005, 12:44’]Beuh et du C# avec du GDI+ ou du managed direct draw derriere dans une appli windows forms? Ca enterre SWING ou SWT. Ca va tracer et ca sera juste trop simple a programmer et si un truc te plait pas dans System.Drawing.dll ou System.Windows.Forms.dll tu m’en parle parceque je fais parti des gens qui s’en occupent, on vera ce qu’on fait pour .net 3.0 ou 2.1 :stuck_out_tongue: (bon GDI+ c’est pas moi donc je suis limite dans ce que je peux faire mais on peut toujours en discuter)…
[right][post=« 321171 »]<{POST_SNAPBACK}>[/post][/right][/quote]

[troll]ouais moi j’ai une demande pour .net 3.0… la portabilitée sous linux…[/troll]

[quote name=‹ Bafman › date=’ 12 Jan 2005, 01:00’][troll]ouais moi j’ai une demande pour .net 3.0… la portabilitée sous linux…[/troll]
[right][post=« 321468 »]<{POST_SNAPBACK}>[/post][/right][/quote]
TU l’as ca s’appelle Mono. Mais pour directx et GDI+ et les windows forms effectivement vu que ca exploite des technos windows ca n’existe que sous windows :stuck_out_tongue: Faut bien recolter les avantages des annees de taf de ouf pour rendre la vie des devs plus facile hehe…

Rien a voir avec GDI+ mais plutot avec C#: fait enlever les virtual/overrides et donne nous les exceptions renvoyes par les methodes en tant que signature. Ce dernier point est le truc qui me deplait le plus dans C#: tu ne sais pas qu’elles exceptions sont levees! Trop trop chiant!

[quote name=‹ Trevidos › date=’ 12 Jan 2005, 07:12’]Rien a voir avec GDI+ mais plutot avec C#: fait enlever les virtual/overrides et donne nous les exceptions renvoyes par les methodes en tant que signature. Ce dernier point est le truc qui me deplait le plus dans C#: tu ne sais pas qu’elles exceptions sont levees! Trop trop chiant!
[right][post=« 321613 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Non au contraire, trop trop bien. C’est une decision de design completement consciente, longuement et murement reflechie, et faite expres. C’est une des meilleure decisions faites pour le C#. Tu peux ecouter/lire les nombreuses interview de Anders Hejlsberg sur le sujet (google est ton ami) qui est le createur de Pascal et de C# (et une mega tronche au passage) pour se rendre compte que c’est une des grandes choses qui fait la flexibilite et la facilite d’utilisation de C#.

De meme que les virtual/overrides qui ne sont pas par defaut, c’est un grand plus a l’usage. Donc oui, c’est pas pareil que d’autre langage, c’est fait expres, c’est different mais je peux te dire qu’apres plus de 3 ans, j’adore ces changements qui en font un super compromi entre rigueur handicapante et flexibilite/facilite d’utilisation. Et je touche du bois de plus avoir a faire du Java en pro avant looooooongtemps :stuck_out_tongue: 2 ans c’etait bon et tout mais la moi je m’arracherait les cheveux.

[quote name=‹ Trevidos › date=’ 12 Jan 2005, 16:12’]Rien a voir avec GDI+ mais plutot avec C#: fait enlever les virtual/overrides et donne nous les exceptions renvoyes par les methodes en tant que signature. Ce dernier point est le truc qui me deplait le plus dans C#: tu ne sais pas qu’elles exceptions sont levees! Trop trop chiant!
[right][post=« 321613 »]<{POST_SNAPBACK}>[/post][/right][/quote]

[quote name=‹ GloP › date=’ 12 Jan 2005, 22:36’]Non au contraire, trop trop bien. C’est une decision de design completement consciente, longuement et murement reflechie, et faite expres. C’est une des meilleure decisions faites pour le C#. Tu peux ecouter/lire les nombreuses interview de Anders Hejlsberg sur le sujet (google est ton ami) qui est le createur de Pascal et de C# (et une mega tronche au passage) pour se rendre compte que c’est une des grandes choses qui fait la flexibilite et la facilite d’utilisation de C#.

De meme que les virtual/overrides qui ne sont pas par defaut, c’est un grand plus a l’usage. Donc oui, c’est pas pareil que d’autre langage, c’est fait expres, c’est different mais je peux te dire qu’apres plus de 3 ans, j’adore ces changements qui en font un super compromi entre rigueur handicapante et flexibilite/facilite d’utilisation. Et je touche du bois de plus avoir a faire du Java en pro avant looooooongtemps :stuck_out_tongue: 2 ans c’etait bon et tout mais la moi je m’arracherait les cheveux.
[right][post=« 321734 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Ouais, surtout pas… Pour les exceptions levées, t’as la doc, pour ca… tout mettre dans la signature tue le principe, et force, en java, les feignasses a soit faire un try-catch(exception), soit a mettre direct un throws Exception pour pas se faire chier (or, tout bon dev étant une feignasse a la base …).

Pareil pour les virtual/override, ils sont la pour une bonne raison, ils donnent énormément plus de souplesse au modèle objet de la bestiole. De plus, si t’as un bon éditeur, c’est pas vraiment ce qui pose problème ici.

Tzim, alergique a java…

[quote name=‘Tzim’ date=’ 13 Jan 2005, 12:55’]Pareil pour les virtual/override, ils sont la pour une bonne raison, ils donnent énormément plus de souplesse au modèle objet de la bestiole. De plus, si t’as un bon éditeur, c’est pas vraiment ce qui pose problème ici.

Tzim, alergique a java…
[right][post=“321947”]<{POST_SNAPBACK}>[/post][/right][/quote]
Je pense que le monsieur souhaitais avoir comme en java pas besoin de déclarer virtual/overrive.
Ce qui, et je rejoins Glop, serait une mauvaise idée, car c’est justement ce qui permet au code managé d’être plus rapide que Java et de prendre moins de place en mémoire (ça vire les tables de pointeurs des fonctions systématiques, ça les laisse là pour les cas qui en ont besoin).
Reste que ça sera toujours plus lent que du C++, faut pas se leurrer. Maintenant vaut voir aussi que faire du c# c’est juste super plus rapide et facile que du C++.