gpt4 book ai didi

ios - 如何在 OpenGL ES 中启用彩色顶点(使用 GLKit)?

转载 作者:行者123 更新时间:2023-11-29 11:08:30 25 4
gpt4 key购买 nike

我从这个周末开始学习 OpenGL,并发现了一个相当大的学习曲线。大多数事情我已经设法解决了,但现在我被困住了......

我创建了一个顶点数组。每个顶点 (vertexT) 由 3 个向量(位置、法线和颜色)组成。每个向量 (GLKVector3) 都是 float 的三元组(即 x,y,z 或 r,g,b)。由于 GLKVector3 被定义为适用于颜色,我假设 opengl 乐于使用未指定第三个 float (即 alpha)的颜色值

我设置 gl 对象的函数如下所示: glBindVertexArrayOES(_vertexArrayObject);

glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexT) * _vertexCount, [_vertexData mutableBytes], GL_STATIC_DRAW);

glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(vertexT), BUFFER_OFFSET(0));

glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, sizeof(vertexT), BUFFER_OFFSET(sizeof(GLKVector3)));

到目前为止一切顺利。我没有使用交错数组的颜色部分,整个对象呈现为白色,在我的绘制函数中使用以下调用:

glBindVertexArrayOES(_vertexArrayObject);
glDrawElements(GL_TRIANGLES, _triangleCount * 3, GL_UNSIGNED_SHORT, [_triangleData mutableBytes]);

所以现在我想为我的模型设置一个顶点颜色,所以我添加了以下内容:

glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, 3, GL_FLOAT, GL_FALSE, sizeof(vertexT), BUFFER_OFFSET(sizeof(GLKVector3)*2));

但它仍然是白色的。我设法找到了 a question这听起来像是我的问题,但提供的解决方案是使用 GL_COLOR_MATERIAL 调用 glEnable,据我所知,这个常量在 OpenGL ES 中无效(根据 Khronos 的 sdk page)。

我敢肯定这很简单。但我没有看到它。有一点帮助吗?

最佳答案

最终找到了一种在 GLKit 中启用颜色 Material 的方法。

这一行可以解决问题:

self.effect.colorMaterialEnabled = GL_TRUE;

关于ios - 如何在 OpenGL ES 中启用彩色顶点(使用 GLKit)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12685210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com