这个上下文创建有什么问题?

时间:2011-02-13 01:53:50

标签: c++ windows opengl

我想创建一个渲染上下文来使用opengl。 wglMakeCurrent(hdc,hrc)返回true。

但由于某些原因,OpenGL函数被忽略。

以下是上下文创建的代码:

int pixelFormat;

hdc = GetDC(hwnd);

PIXELFORMATDESCRIPTOR pfd;
memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
pfd.nSize  = sizeof(PIXELFORMATDESCRIPTOR);
pfd.nVersion   = 1;
pfd.dwFlags    = PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 32;
pfd.cDepthBits = 32;
pfd.iLayerType = PFD_MAIN_PLANE;

pixelFormat = ChoosePixelFormat(hdc,&pfd);
SetPixelFormat(hdc,pixelFormat,&pfd);

hrc = wglCreateContext(hdc);
wglMakeCurrent(hdc, hrc);

窗口创建:

hinst = GetModuleHandle(NULL);

WNDCLASSEX wnd;
memset(&wnd, 0, sizeof(WNDCLASSEX));
wnd.hInstance = hinst;
wnd.style = CS_HREDRAW | CS_VREDRAW;
        wnd.cbSize = sizeof(WNDCLASSEX);
        wnd.lpszClassName = "__myGLApp__";
        wnd.lpfnWndProc = WndProc;
        RegisterClassEx(&wnd);

        hwnd = CreateWindowEx(WS_EX_TOOLWINDOW, 
            "__myGLApp__",
            "valami",
            WS_VISIBLE,
            xpos,
            ypos,
            width,
            height,
            NULL,
            NULL,
            hinst,
            NULL);

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

您可以使用glGetError()函数来获取错误代码。您还可以使用实用程序库中的函数gluErrorString()和gluErrorUnicodStringEXT()获取文本描述。像这样:

char *message;
message = gluErrorString(glGetError());
printf("OpenGL error: %s\n", message);