我在 .OBJ 文件中有一个人体模型,我想将其显示为带有三角形的网格。没有纹理。我还希望能够在 3D 中移动、缩放和旋转。
第一个也是可行的选项是使用数学手动将顶点投影到 2D,然后使用 Quartz 2D 绘制它们。这行得通,因为我知道透视投影的基本数学概念。
但是我想使用 OpenGL ES 来实现该方法,但我不确定如何绘制三角形。
例如 - (void)drawRect:(CGRect)rect 中的代码是:
glClearColor(1,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
GLKBaseEffect *effect = [[GLKBaseEffect alloc] init];
[effect prepareToDraw];
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
怎么办?我有一个顶点位置数组(每个顶点 3 个浮点数)和一个三角形索引数组,所以我尝试了这个:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, numVertices,pVertices);
glDrawElements(GL_TRIANGLES, numTriangles, GL_UNSIGNED_INT,pTriangles);
但这并没有显示任何东西。我从一个示例中看到了 glEnableVertexAttribArray(GLKVertexAttribPosition) 和 glDrawArrays 的用法,但我不确定如何使用它们。
我也明白用ES渲染线框是不可能的?所以我必须将颜色属性应用于顶点。没关系,但在此之前必须先显示三角形。