是否可以仅使用 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() 但还没有让它工作。
最佳答案
glBegin/glEnd 是已弃用的遗留功能,自版本 3.1 以来,它们不再是 OpenGL 核心配置文件的一部分。简而言之,不应再使用它们。尽管如此,如果你想使用它们,你可以,但在那种情况下你必须使用 compatibility profile在您的 OpenGL 上下文中,否则它们不受支持。
如果您使用 GLFW对于上下文和窗口创建,您可以在 context creation 处设置兼容性配置文件带有以下提示:
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);
我强烈推荐以下教程网站
了解现代 OpenGL 功能和用法。
关于c++ - OpenGL 4 : Draw with glVertexAttrib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556385/