gpt4 book ai didi

c++ - OpenGL:如何检查用户是否支持 glGenBuffers()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:38 25 4
gpt4 key购买 nike

我检查了文档,它说 OpenGL 版本必须至少为 1.5 才能使 glGenBuffers() 工作。用户的版本是1.5,但是函数调用会导致崩溃。这是文档中的错误,还是用户的驱动程序问题?

我正在为 VBO 使用这个 glGenBuffers(),我如何检查用户是否支持这个?

编辑:我使用 glew 和 glewInit() 来初始化 VBO

Edit2: 我通过 glGenBuffersARB() 函数调用在用户身上工作。但我仍在寻找一种方法来确定何时应该使用 glGenBuffers() 以及何时应该使用 glGenBuffersARB() 以及如果没有 VBO 函数我应该何时使用 VertexArrays支持调用。

我还发现 if(GLEW_VERSION_1_5) 对用户返回 false,但是 GL_VERSION 给出 1.5.0,这没有任何意义!

最佳答案

我现在要告诉你远离 GLEW 或任何这些库,主要是因为它们没用,这就是我一直这样做的方式。

#ifndef STRINGIFY
#define STRINGIFY(x) #x
#endif
#ifdef WIN32
#include <windows.h>
#define glGetProcAddress(a) wglGetProcAddress(a)
#endif
#ifdef X11
#define glGetProcAddress(a) glXGetProcAddress ( \
reinterpret_cast<const unsigned char*>(a) \
)
#endif

#ifndef GetExtension
#define GetExtension(Type, ExtenName) \
ExtenName = (Type) \
glGetProcAddress(STRINGIFY(ExtenName)); \
if(!ExtenName) \
{ \
std:cout << "Your Computer Does Not " \
<< "Support GL Extension: " \
<< STRINGIFY(ExtenName) \
<< std::endl; \
exit(1); \
} \
else \
{ \
std::cout << "Loadded Extension: " \
<< STRINGIFY(ExtenName) \
<< std::endl; \
}
#endif

// then just use this :D
GetExtension(PFNGLGENBUFFERSARBPROC, glGenBuffersARB)
// after your done you can do this
#undef GetExtension
#undef glGetProcAddress
// you can then also undef the STRINGIFY macro
// though it does come in handy.

关于c++ - OpenGL:如何检查用户是否支持 glGenBuffers()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com