是否可以使用 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()但是没有让它工作。
答案 0 :(得分:1)
glBegin / glEnd是不推荐使用的旧版功能,它们不是自3.1版以来OpenGL核心配置文件的一部分。简而言之,他们不应再被使用了。如果你想尽可能地使用它们,你可以,但在这种情况下你必须在OpenGL上下文中使用compatibility profile,否则它们将不受支持。
如果您使用GLFW创建上下文和窗口,可以使用以下提示在context creation设置兼容性配置文件:
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);
我强烈推荐以下教程网站
了解现代OpenGL的功能和用法。