opengl 3.3 / glew 1.9 VBO支持返回false

时间:2013-04-20 09:37:12

标签: 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_vertex_buffer_object" ))
        {
            std::cout << "VBO supported." << std::endl;
        }
    else
        {
            std::cerr << "ARB_vertex_buffer_object not supported!" << std::endl;
        }

返回false。

关于可能出现什么问题的任何建议?

2 个答案:

答案 0 :(得分:1)

停止检查ARB_vertex_buffer_object。实际上,使用 ARB_vertex_buffer_object停止。使用the core functionality,而不是扩展功能。如果您要求OpenGL版本3.3,那么在核心中具有缓冲区对象功能。使用它。

glewGetExtension("GL_VERSION_1_9")

没有这样的延期。还没有OpenGL版本1.9,所以我不知道为什么你会这样检查。

如果要检查OpenGL版本,则应use the OpenGL functionality执行此操作:

GLint major = 0;
GLint minor = 0;
glGetIntegerv​(GL_MAJOR_VERSION​, &major);
glGetIntegerv​(GL_MINOR_VERSION​, &minor);

答案 1 :(得分:0)

弄清楚我收到错误的原因。问题是我在创建窗口之前检查了一下。所以我在窗口创建之后添加条件后,一切都开始工作了。如果有人遇到此问题,请在创建窗口后调用glewInit()