C++ opengl 3.3/glew 1.9 VBO支持返回false
我构建了一个简单的OpenGL窗口并检查了它的支持。它返回的支持:C++ opengl 3.3/glew 1.9 VBO支持返回false,c++,opengl,vbo,glew,C++,Opengl,Vbo,Glew,我构建了一个简单的OpenGL窗口并检查了它的支持。它返回的支持: GLEW:1.9.0 OpenGL:3.3.0 我遇到的问题是由于创建形状(VBO)。根据教程创建形状时,我无法将图像(简单的三角形)显示在屏幕上。实现这一点的唯一方法是使用即时模式或基本顶点数组 我询问过如何使用GLEW检查vbo支持,但我发现的所有建议如下: if ( glewGetExtension("GL_VERSION_1_9") && glewGetExtension( "GL_ARB_
- GLEW:1.9.0
- OpenGL:3.3.0
if ( glewGetExtension("GL_VERSION_1_9")
&& glewGetExtension( "GL_ARB_vertex_buffer_object" ))
{
std::cout << "VBO supported." << std::endl;
}
else
{
std::cerr << "ARB_vertex_buffer_object not supported!" << std::endl;
}
if(glewGetExtension(“GL\U版本1\U 9”)
&&glewGetExtension(“GL_ARB_顶点_缓冲区_对象”))
{
std::cout停止检查ARB\u vertex\u buffer\u对象
。事实上,停止使用ARB\u vertex\u buffer\u对象。使用,而不是扩展功能。如果您要求的是OpenGL 3.3版,那么您的核心中就有buffer对象功能。使用它
glewGetExtension("GL_VERSION_1_9")
没有这样的扩展,也没有OpenGL版本1.9,所以我不知道你为什么要这样检查它
如果您想检查OpenGL版本,您应该:
GLint major = 0;
GLint minor = 0;
glGetIntegerv(GL_MAJOR_VERSION, &major);
glGetIntegerv(GL_MINOR_VERSION, &minor);
找出了出现错误的原因。问题是我在创建窗口之前检查了glew。因此,我在创建窗口后添加了条件后,一切都开始正常工作。万一有人遇到此问题,请调用glewInit()
创建窗口后。感谢您的输入,但这无助于检查VBO是否受支持。另外,未定义glGetIntegerv(我收到错误)。@SpicyWeenie:ifglGetIntegerv
为“未定义”,您的代码中存在严重问题。这意味着您甚至找不到基本的GL 1.1函数。如果您使用的是核心函数(不是ARB),只需检查OpenGL 1.5(如If(!GLEW_VERSION_1_5){error();}
)就足够了。