根据这个页面(以及其他几个页面(,您需要创建一个虚拟窗口,然后创建一个伪遗留上下文,然后使用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.%dn", major, minor);
我得到了";4.6〃;。为什么这个版本不像2.0,为什么需要假上下文?
如果你愿意限制你的应用程序永远不使用WGL扩展(即:你不能做控制vsync、使用更高级的像素格式、创建健壮或调试OpenGL上下文或任何其他工具(,并且总是使用兼容上下文,那么是的,你可以不使用更现代的上下文创建API。但没有理由对你的项目施加这样的限制。