繁体   English   中英

创建上下文有什么问题?

[英]What is wrong with this context creation?

我想创建一个渲染上下文以使用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);

我要去哪里错了?

您可以使用glGetError()函数获取错误代码。 您还可以从实用程序库中使用功能gluErrorString()和gluErrorUnicodStringEXT()获得文本说明。 像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM