首页 > 解决方案 > 创建现代 OpenGL 上下文是否需要假上下文?

问题描述

根据此页面(和其他几个页面),您需要创建一个虚拟窗口,然后是一个虚拟的遗留上下文,然后用于wglCreateContextAttribsARB创建一个现代上下文。

但是我尝试使用旧方式wglCreateContext手动加载功能:

glCreateShader = wglGetProcAddress("glCreateShader");
glShaderSource = wglGetProcAddress("glShaderSource");
glCompileShader = wglGetProcAddress("glCompileShader");
...etc for all other functions that I need

然后我检查了上下文版本:

int minor;
int major;
glGetIntegerv(GL_MAJOR_VERSION, &major);
glGetIntegerv(GL_MINOR_VERSION, &minor);
printf("%d.%d\n", major, minor);

我得到了“4.6”。为什么版本不是 2.0 之类的,为什么需要假上下文?

标签: copengl

解决方案


如果您愿意将您的应用程序限制为从不使用 WGL 扩展(即:您不能做诸如控制 vsync、使用更高级的像素格式、创建健壮调试OpenGL 上下文或任何数量的其他工具之类的事情)并且始终使用兼容性上下文,那么是的,您可以不使用更现代的上下文创建 API。但是没有理由对你的程序施加这样的限制。


推荐阅读