c++ - OpenGL 4 : Draw with glVertexAttrib

标签 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() 但还没有让它工作。

最佳答案

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/

相关文章:

c++ - 使用带有 TinyXPath 和 TinyXML 的 XPath 获取属性

c++ - 调整 C++ 类动态数组的大小

c++ - 无法将 OpenGL 缓冲区打印到 GLEW 应用程序中的控制台

java - libGDX:如何渲染瓦片 map ?

opengl - 有没有更好/更有效的方法来在 Linux 中捕获复合 X 窗口?

c++ - c++ 是否像奇怪的重复模板模式一样保证将祖母基类向下转换为孙子类?

C++ 自动为 boost::make_shared 生成包装器

c++ - 是否有类似 Filestorage 类的东西来存储文件?

opengl - OpenGL中三角形缠绕方向的实际标准是什么?

opengl - 在 DirectX 中使用 GLUTesselator 可以吗?