Bonjour,
J'ai un grave problème : je n'arrive pas à utiliser à la fois OpenGL et GDI+... quand je dis GDI+, je veux dire que je n'utilise pas les CFrame et autres structures de bases de Windows, mais bien les fonctions GDI pour écrire directement sur mon écran. J'imagine que cela doit être un problème rencontré souvent, mais je n'ai trouvé que peu de choses à ce sujet... peut-être est-ce tellement simple que personne n'a besoin d'aide !
En gros, je crée une bitmap pour faire mon backbuffer, je dessine dedans, puis je la pousse... je fais comme tout le mode quoi.
Jusque là, tout va bien... jusqu'au moment ou je veux utiliser OpenGL !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 HDC hdcMem = CreateCompatibleDC(ps->hdc); HBITMAP hbmMem = CreateCompatibleBitmap(ps->hdc, rc.right-rc.left, rc.bottom-rc.top); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbmMem); //... rendu dans hdcMem BitBlt(ps->hdc, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, hdcMem, 0, 0, SRCCOPY); SelectObject(hdcMem, hbmOld);
En fait, si je comprends bien, OpenGL écrit dans un Device Context grâce à :
Le problème, c'est que quand je lui envoie un HDC que j'obtiens avec GetDC(hWnd), et que j'utilise SwapBuffers(), il ne me dessine rien, et en plus, il remplace tout ce qui a été rendu par GDI...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 hRC=wglCreateContext(hdc); wglMakeCurrent(hdc,hRC);
Sauriez-vous comment faire pour ne séectionner qu'un seule partie d'une fenêtre qui soit affectée par OpenGL ? J'aimerais conserver mon affichage 2D GDI+, mais venir écraser une partie de l'écran avec un affichage par OpenGL.
Merci d'avance !
Partager