我是相对较新的OpenGL,我想增加我的C++ Win32项目的反别名。当接收到WM_CREATE消息时,我目前在窗口过程中获得一个设备上下文,然后使用像素格式描述符创建OpenGL上下文,如下所示:
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中。我将如何修改我的代码以使其正常工作?谢谢。
发布于 2014-08-23 17:41:30
GLEW还支持WGL和glX扩展。对于wgl,您需要wglew.h头文件。它的工作方式与GL扩展相同: GLEW将使用glewInit()调用自动获取wgl扩展的函数指针。
在windows上,您实际上需要做的是:
现在,多样本本身并没有定义任何wgl扩展函数。它只是从wglChoosePixelFormatEXT()定义了来自起绒的新属性。这就是你必须在步骤3中调用的,以请求支持多采样的像素格式。
https://stackoverflow.com/questions/25460601
复制相似问题