wgext - 扩展未安装在 OpenGL 上下文中

Posted

技术标签:

【中文标题】wgext - 扩展未安装在 OpenGL 上下文中【英文标题】:wglext - extension not installed in OpenGL context 【发布时间】:2015-12-03 10:06:50 【问题描述】:

我正在尝试使用 wglSwapIntervalEXT(int interval) 在 WGL_EXT_swap_control 中禁用 OpenGl 中的垂直同步。

我正在尝试包含 wgext 标头,但经过大量搜索后,它似乎没有安装在我的电脑上(使用 opengl 扩展查看器找到它)。我已尝试安装 windows sdk 并更新 .net 框架,但仍然无法安装此扩展。

无论如何要包括这个。我的显卡是 nVidia GTX 770m。 或者有没有更简单的方法来禁用 vsync。

谢谢

【问题讨论】:

【参考方案1】:

所以,一位朋友不费吹灰之力就设法解决了这个问题。因此,如果有人需要帮助,这应该与您正在寻找的内容类似

void SetVSync(bool sync)  
   
typedef BOOL(APIENTRY *PFNWGLSWAPINTERVALPROC)(int);
PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT = 0;

const char *extensions = (char*)glGetString(GL_EXTENSIONS);

wglSwapIntervalEXT = (PFNWGLSWAPINTERVALPROC)wglGetProcAddress("wglSwapIntervalEXT");

if (wglSwapIntervalEXT)
    wglSwapIntervalEXT(sync);

【讨论】:

【参考方案2】:

仅仅包含标题#include "gl\wglext.h" 是不够的。您还需要将扩展​​注册到 OpenGL。如果您不知道怎么做,请在谷歌上获取一些教程,但更简单、更安全的是使用一些扩展注册库,例如 GLEW,请参阅:

using GLEW complete GL+VAO/VBO+GLSL+shaders example in C++ Multi-texturing example 最后是完成 C++ GL 项目的下载链接,其中包含 GLEW 源代码

glewInit(); 呼叫成功后,您的分机应该可用(如果存在于 gfx 卡/驱动程序上。

如果不注册扩展,您只能访问基本的 OpenGL 1.0 内容。

【讨论】:

干杯,试一试! @Zecbmo btw 对于 GL,您不需要任何 .NET 或 SDK,只需要 GL 标头(最新版本可从 nVidia 服务器下载)和 GLEW 顺便说一句,如果您的卡上缺少一些额外的扩展/driver 你可以试试 nVemulate ...

以上是关于wgext - 扩展未安装在 OpenGL 上下文中的主要内容,如果未能解决你的问题,请参考以下文章

QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用

Opengl 未定义行为

不同的opengl上下文是不是有不同的opengl扩展?

SDL2 丢失 OpenGL 上下文或未定义函数

OpenGL上下文创建期间未记录的错误

在 OSX 上的核心配置文件上获取可用的 opengl 扩展