[C/C++/OPENGL] comment ecrire dans un HDC

comment ecrire dans un HDC [C/C++/OPENGL] - Programmation

Marsh Posté le 21-03-2001 à 11:19:00    

voila, je m'interresse à la programmation graphique depuis quelque temps, et je me pose quelques question.
Est il possible de faire du 2D en opengl?(je crois pas)
Peut-on ecrire dans un HDC? ca doit etre une zone memoire representant chque pixel de l'ecran?
merci d'avance
 
KICK

Reply

Marsh Posté le 21-03-2001 à 11:19:00   

Reply

Marsh Posté le 21-03-2001 à 11:30:54    

un HDC (a la sauce windows) ca represente beaucoup plus: tout ton etat graphique en fait.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 21-03-2001 à 11:34:51    

il est tt a fait possible de faire de la 2D en opengl !!!

Reply

Marsh Posté le 21-03-2001 à 12:14:01    

OpenGL = API 2D/3D
 
Je vais t'etonner:
il est meme possible d'accelerer de l'affichage 2D
avec une carte acceleratrice 3D.
 
Voila
LEGREG

Reply

Marsh Posté le 21-03-2001 à 14:36:57    

Voici le code si tu veux inserer de l'opengl avec une application sous MFC (Windows) :  
 
HWND  ghWnd;
HDC   ghDC;
HGLRC ghRC;
CDC*   cDC;
 
 
cDC = m_Opengl.GetDC();
ghDC = cDC->m_hDC;
 
ghRC = wglCreateContext(ghDC);
wglMakeCurrent(ghDC, ghRC);
 
displayGL(ghDC);
 
 
m_Opengl represente un objet graphique.
displayGL affiche les objets opengl.

Reply

Marsh Posté le 21-03-2001 à 16:30:40    

oui merci, c'est bien bo tout ca, mais meme si on peut faire du 2d, on peut pas acceder à la zone memoire representant l'ecran, pour faire par exemple, un effet de feu par exemple.  
Et autrement, comment faire pour afficher à des coordonnées voulus sur l'ecran quand il y a une camera(les coordonnées sont relative à la camera et non plus à la resolution de l'ecran).voila, merci quand meme pour vos reponse ci dessus.

Reply

Marsh Posté le 21-03-2001 à 16:50:48    

tu peux recuperer et logiquement remplacer une partie de l'image en cours de realisation
 
glReadPixels(0,0,largeur_ecran,hauteur_ecran,GL_RGB, GL_UNSIGNED_BYTE, image);

Reply

Marsh Posté le 23-03-2001 à 13:35:46    

merci, mais je sais pas comment on ecrit dans un hdc, ya pas des tutoriaux  
merci

Reply

Marsh Posté le 23-03-2001 à 17:50:18    

on ne peut écrire directement sur une surface openGL? il ne faut pas espérer avoir un pointeur sur les données graphiques, et de toute manière c'est tant mieux, car ça ralentirait tout d'obliger le bus AGP à transférer des données non consécutives et dans les deux sens en plus.
Le mieux pour tripatouiller directement et avoir des effets est de rendre son effet en RGB (par exemple) dans une zone mémoire réservée par ses propres soins, et de la copier à l'écran avec glCopyPixels.
Enfin, y'a pas de données graphiques dans un HDC, c'est juste le contexte graphique.

Reply

Marsh Posté le 23-03-2001 à 18:17:50    

Pour écrire dans un HDC il faut utliser les primitive graphiques GDI de windows ( Bitblt entre autre)
Donc tu fais une recherche sur "GDI" dans le SDK de microsoft et tu trouve ton bonheur.

Reply

Marsh Posté le 23-03-2001 à 18:17:50   

Reply

Marsh Posté le 24-03-2001 à 11:33:37    

ok je vais essayer avec glcopypixel, mais ca risque pas d'etre un peut lent si je fait un truc du style à chaque frame

Reply

Marsh Posté le 25-03-2001 à 12:54:36    

petite question, comment on fait pour reserver une zone memoire en rgb, pasqu'avec glCopyPixels, le dernier parametre representant la surface correspond à un unsigned int et je sais pas comment on associe une zone memoire à un entier
 
HEEEEEEEELLLLLLLPPPPPPPPPPPPPPPP

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed