0

我已经构建了一个简单的 OpenGL 窗口并检查了它的支持。它返回的支持:

  • 发光: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;
        }

返回错误。

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

4

2 回答 2

1

停止检查ARB_vertex_buffer_object。事实上,停止使用ARB_vertex_buffer_object。使用核心功能,不是扩展功能。如果您要求使用 OpenGL 3.3 版,那么您在核心中缓冲区对象功能。用那个。

glewGetExtension("GL_VERSION_1_9")

没有这样的扩展。也没有 OpenGL 1.9 版,所以我不知道你为什么要这样检查。

如果要检查 OpenGL 版本,则应使用 OpenGL 功能来执行此操作:

GLint major = 0;
GLint minor = 0;
glGetIntegerv​(GL_MAJOR_VERSION​, &major);
glGetIntegerv​(GL_MINOR_VERSION​, &minor);
于 2013-04-20T10:52:42.980 回答
0

弄清楚我为什么会出错。问题是我在创建窗口之前检查了 glew 。所以我在创建窗口后添加条件后,一切都开始正常工作。万一有人遇到这个问题,请glewInit()在创建窗口后调用。

于 2013-04-21T07:49:22.723 回答