首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于GLEW和WGL的OpenGL抗混叠

基于GLEW和WGL的OpenGL抗混叠
EN

Stack Overflow用户
提问于 2014-08-23 09:42:08
回答 1查看 1.4K关注 0票数 0

我是相对较新的OpenGL,我想增加我的C++ Win32项目的反别名。当接收到WM_CREATE消息时,我目前在窗口过程中获得一个设备上下文,然后使用像素格式描述符创建OpenGL上下文,如下所示:

代码语言:javascript
复制
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
//...

switch (msg) {
    case WM_CREATE:
        log("Starting WM_CREATE...");
        hDC = GetDC(hWnd);

        //Pixel Format
        ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
        pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
        pfd.nVersion = 1;
        pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
        pfd.iPixelType = PFD_TYPE_RGBA;
        pfd.cColorBits = 32;
        pfd.cDepthBits = 24;
        pfd.cStencilBits = 8;

        format = ChoosePixelFormat(hDC, &pfd);
        if (!SetPixelFormat(hDC, format, &pfd)) {
           log("Error: Could not set pixel format.");
           PostQuitMessage(1);
           break;
        }
        //Create Render Context
        hRC = wglCreateContext(hDC);
        if (!wglMakeCurrent(hDC, hRC)) {
           log("Error: Could not activate render context.");
           PostQuitMessage(1);
           break;
        }

        //Initialize GLEW
        if (glewInit()) {
           log("Error: Could not initialize GLEW.");
           PostQuitMessage(1);
           break;
        }

        //Other initialization goes here
        //...

        break;
    //...
    }
    return 0;
}

为了使抗别名工作,我知道我需要使用像WGL_ARB_multisample这样的扩展。似乎很少有实际使用这个的例子,特别是在GLEW中。我将如何修改我的代码以使其正常工作?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-23 17:41:30

GLEW还支持WGL和glX扩展。对于wgl,您需要wglew.h头文件。它的工作方式与GL扩展相同: GLEW将使用glewInit()调用自动获取wgl扩展的函数指针。

在windows上,您实际上需要做的是:

  1. 创建一个具有(尽可能多的)与实际要创建的GL上下文相同的属性的“助手”GL上下文。注意,GL和WGL扩展将取决于您在windows上创建的GL上下文。
  2. 使用helper上下文获取wgl扩展指针。当然,您还应该检查扩展是否可用。
  3. 使用WGL扩展创建真实的GL上下文,以及
  4. 销毁助手上下文。

现在,多样本本身并没有定义任何wgl扩展函数。它只是从wglChoosePixelFormatEXT()定义了来自起绒的新属性。这就是你必须在步骤3中调用的,以请求支持多采样的像素格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25460601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档