1

-

2

Orion_ :
en fait je voudrait afficher une fenetre a l'interieur d'opengl, en fait c'est un quad avec une texture de fenetre smile
le probleme c'est que je voudrais pouvoir moduler la taille de ma fenetre, il faudrait donc que je repete les textures sur les cotés
suivant la longueur, pour economiser j'avait pensé utiliser des lignes pour dessiner les contours de ma fenetre
mais ça merde pas mal les lignes sad ça me fait des degrader zarb, et quand on rajoute un quad texturé semi transparent par dessus ça merde encore plus, (je doit avoir des reglages pas bon ou pas encore avoir pigé le truc, ça c'est sur)
ou sinon, a la limite je pensait decouper les bords en plusieurs quad, et a la fin, si ça tombe pas juste sur une taille puissance de 2
je reduit la taille de mon quad, mais sans pour autant reduire la taille de ma texture (hum) ,en fait, est-il possible d'appliquer une texture sur un quad qui n'est pas a sa taille sans que la texture ne soit deformé a la taille du quad ? (c plus clair la ? grin)
Ben je vois pas le problème confus. Tu as juste besoin de la texture représentant la fenêtre, et après, tu peux faire comme windows xp fait avec les thèmes.... Il te suffit d'avoir une petite liste de coordonnées adaptée à la texture smile
Ta fenêtre comporte plusieurs éléments: 4 coins, 4 côtés, et une zone client.
Il te faut les coordonées de ces éléments sur la texture pour pouvoir dessinner la fenêtre à n'importe quelle taille. Les coins ne changent pas de taille, seuls les côtés et la zone client le font. Utilise ça pour dessiner ta fenêtre happy (J'espère que tu vois où je veux en venir)
et puis un autre truc aussi, comment savoir la longueur d'un texte dans une font ??
Si c'est une police windows -> GetTextExtent32 devrait suffire
parceque la hauteur elle ne change pas, mais la longueur n'est pas la même suivant les charactére et la font sad y'a pas une fonction windows pour ça ?
^^
ah, autre chose, (pour mon futur texgen), comment afficher un texte dans une font dans une zone mémoire qui peut étre assimilé a une image ? (genre, on a un bmp en mémoire, comment dessiner un texte dedans, sachant la taille du bmp, etc...)
Ben si c'est un bitmap, il te suffit juste d'utiliser les fonctions GDI pour ça happy Sinon, tu dois te débrouiller autrement, il différentes possibilités
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

-

4

donc a la limite, pour créer une fenetre il faudrait que je créer une texture en mémoire ou je dessine ma fenetre a la taille, et j'affiche juste une seule texture de la fenetre complete ?
Créer un texture en mémoire n'est pas ce quil y a de plus rapide
c vrai que c'est plus economique et plus facile de dessiner en mémoire que d'afficher des bouts de textures dans des bouts de quad
Justement, la solution que je te donnais c'était de dessinner des bouts de textures dans des bouts de quads grin Je pense que dessiner en mémoire est une perte de temps
Imagines que tu dessines plein de fenêtres... C'est carrément pas économique de dessiner un texture pour chacune cheeky
Tout ce que le hardware peut faire à ta place (découper les textures dans le cas présent) est autant de travail que ton programme n'aura pas à faire wink
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

-

6

Ben une fenêtre ça fait quoi... 9 quads, soit 18 triangles... Vraiment pas grand chose, quoi happy Si ta carte graphique est pas capable de dessiner ça c'est un engin préhistorique grin
Sinon, pourquoi plein de textures ? Il te suffit d'une seule texture pour dessiner ta fenêtre
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

-

8

je parlais de plusieurs texture parceque y'en aura plusieurs qui seront affiché a l'ecran grin suivant la grandeurs de la fenetre
Euh, pourquoi confus Y'a pas de coordonnées de texture en OpenGL ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

9

-

10

Ben ce que j'appelle des bouts de texture, moi, c une partie de la texture principale tongue
Sachant que seul la taille des quadrilatères pour les côtés change, et pas les coordonnées de texture, c'est largement assez précis
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

11

-

12

Orion_ :
mmmmmmh
c a dire un seul quad, avec plusieurs texture ?
je c pas si c possible neutral
Une seule texture mappée sur plusieurs quads, pas le contraire grin
apres reflexion: ahhh ok grin c a dire utiliser une seule texture pour les cotés mais en mode tile ?
Mode tile ? Je vois aps trop ce que tu veux dire neutral Il suffit d'étirer le fragment de texture pour les côtés... (donc tu changes les coordonnées du quad sans changer celles de la texture...)
apres suivant la taille du quad ça n'a plus d'importance cheeky
ok, ok, faut que je regarde par contre si on peu donner des coordonées tiles de textures au pixel pres.
Ben tu calcules u=x/largeur_texture et v=y/hauteur_texture... c amplement suffisant
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

13

-

14

Ben c simple. Tu as une texture de fenêtre, jusque là tout va bien...
Tu découpes ->virtuellement<- cette texture en quadrilatères, de façon à obtenir les coordonnées des différents éléments de la fenêtre sur la texture.
Ensuite, pour dessiner ta fenêtre, tu dois dessiner un quadrilatère pour chaque coin, et la taille de ces quadrilatères est fixée à la taille exacte en pixels de la zone correspondante sur la texture (bien sûr tu associes les bonnes coordonnées de texture à cacun de ces quadrilatères)
Tu dois aussi dessiner un quadrilatère pour chaque côté de la fenêtre, mais cette fois-ci, pour les côtés horizontaux, hauteur est fixée, alors que la largeur variera en fonction de la taille de la fenêtre, et pour les côtés verticaux, seule la hauteur varie alors que la largeur est fixée.
Et finalement, tu dessines la zone client au milieu de tout ça.
C'est la manière la plus simple que je connaisse, c'est juste compliqué à expliquer sans dessins tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

15

-

16

heurf...
il est ou le probleme?
ton quad fait x*y pixels, et ta texture c'est du u*v, tout ce que t'as a faire pour avoir les coords de texture aux extremites c'est:

Uext = x / U;
Vext = y / V;

du coup pour chcun des coins de ton quad les texcoords ca sera:

0, 0
Uext, 0
Uext, Vext
0, Vext

et tu recalcule Uext et Vext a chaque fois que ta fenetre est resizee... et du moment que tu dessine le quad aligne sur un pixel, ta texture le sera aussi, et le ratio de mapping texel/pixel sera de 1/1... d'ailleurs tant qu'a faire tu les filtre en GL_NEAREST (si c'est pas deja fait)
*** Ne sous-estimez pas la puissance de la Marmotte ***


© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

17

Ben tu calcules u=x/largeur_texture et v=y/hauteur_texture... c amplement suffisant


euh merde dsl j'avais pas vu ca gol
*** Ne sous-estimez pas la puissance de la Marmotte ***


© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

18

qqn a des doc pour la 2D en open gl? parce que nehe c surtout de la 3d si je me souviens bien non?

19

Il n'y a rien de spécial... tu te mets en projection ortho (gluOrtho2D), puis tu utilises des glVertex2i pour envoyer des coordonnées x,y... les primitives sont toutes les mêmes qu'en 3D.
So much code to write, so little time.

20

ok merci