none
DeviceContext et OpenGL RRS feed

  • Discussion générale

  • Bonjour,

    je développe actuellement une petite appli win32 utilisant opengl, et j'ai besoin de réduire la zone de dessin opengl à une portion particulière de l'écran, je me suis inspiré de plusieurs codes trouvé sur le net et mon code semble conforme, mais un bug persiste apparement.

    J'ai une fonction qui initialise opengl avec le DeviceContext de la fenetre principale, puis change la Region du DC, mais au moment de l'execution, la fenetre ne se peint pas en noir (comme elle le fait en récupérant simplement le DC depuis la fenetre, et sans le modifier). Voici le code de la fonction :

    void Init(HWND hWnd, HDC * hDC, HGLRC * hRC)
    
    	{
    
    		PIXELFORMATDESCRIPTOR pfd;
    
    		int format;
    
    	
    
    		RECT rc;
    
    		GetClientRect(hWnd, &rc);
    
    		HRGN aaaa ;
    
    		aaaa = CreateRectRgn(rc.left, rc.top, rc.right, rc.bottom);
    
    
    
    		// get the device context (DC)
    
    		*hDC = GetDC( hWnd );
    
    		SelectObject(*hDC, aaaa);
    
    		// set the pixel format for the DC
    
    		ZeroMemory( &pfd, sizeof( pfd ) );
    
    		pfd.nSize = sizeof( pfd );
    
    		pfd.nVersion = 1;
    
    		pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    
    		pfd.iPixelType = PFD_TYPE_RGBA;
    
    		pfd.cColorBits = 24;
    
    		pfd.cDepthBits = 16;
    
    		pfd.iLayerType = PFD_MAIN_PLANE;
    
    		format = ChoosePixelFormat( *hDC, &pfd );
    
    		SetPixelFormat( *hDC, format, &pfd );
    
    	
    
    		// create and enable the render context (RC)
    
    		*hRC = wglCreateContext( *hDC );
    
    		wglMakeCurrent( *hDC, *hRC );
    
    		//
    
    	}
    
    

    La fenetre est ensuite actualisé avec un simple glClear() et SwapBuffers(), la ClearColor étant initialisé avec une couleur noire.

    Merci d'avance.

    vendredi 2 juillet 2010 23:45

Toutes les réponses