OpenGL 4:使用glVertexAttrib绘制

时间:2015-09-14 02:05:01

标签: c++ opengl

是否可以使用 glVertexAttrib3f 调用来绘制OpenGL 4+?以下适用于传统的OpenGL模式,但当我切换到OpenGL 4时,没有任何内容被渲染。

glBegin(GL_TRIANGLES);
glVertexAttrib3f(1,  0, 0, -1);
glVertexAttrib3f(0, -0.5, -0.5, -0.5 );
glVertexAttrib3f(0, -0.5,  0.5, -0.5 );
glVertexAttrib3f(0,  0.5,  0.5, -0.5 );

glVertexAttrib3f(1,  0, 0, 1);
glVertexAttrib3f(0,  0.5, -0.5, 0.5 );
glVertexAttrib3f(0,  0.5,  0.5, 0.5 );
glVertexAttrib3f(0, -0.5,  0.5, 0.5 );
....
glEnd();

我想我应该摆脱那些glBegin()glEnd()函数,也许可以调用glDrawArrays()但是没有让它工作。

1 个答案:

答案 0 :(得分:1)

glBegin / glEnd是不推荐使用的旧版功能,它们不是自3.1版以来OpenGL核心配置文件的一部分。简而言之,他们不应再被使用了。如果你想尽可能地使用它们,你可以,但在这种情况下你必须在OpenGL上下文中使用compatibility profile,否则它们将不受支持。

如果您使用GLFW创建上下文和窗口,可以使用以下提示在context creation设置兼容性配置文件:

glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);

我强烈推荐以下教程网站

了解现代OpenGL的功能和用法。