2

我正在尝试使用 wglSwapIntervalEXT(int 间隔)在带有 WGL_EXT_swap_control 的 OpenGl 中禁用 vsync。

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

反正有没有包括这个。我的显卡是 nVidia GTX 770m。或者有没有更简单的方法来禁用 vsync。

谢谢

4

2 回答 2

4

因此,一位朋友设法解决了这个问题。因此,如果有人需要帮助,这应该与您正在寻找的类似

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);
}
于 2016-05-02T10:36:45.980 回答
1

仅仅包含标题#include "gl\wglext.h"是不够的。您还需要将扩展​​注册到OpenGL。如果您不知道如何做一些教程,但更容易和更安全的是使用一些扩展注册库,如GLEW,请参阅:

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

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

于 2015-12-03T11:08:32.613 回答