iam*_*mer 6 iphone opengl-es ios metal
试图画一条三角形,如下图所示:

完成了objc.io 教程,他们使用两个三角形绘制四边形.三角形是断开连接并单独绘制的,这意味着我需要指定6个顶点而不是4个顶点.
// Interleaved vertex data X,Y,Z,W, R,G,B,A
static float vertexData[] = {
// First triangle: From bottom right, clockwise
0.5, -0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // bottom right
-0.5, -0.5, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, // bottom left
-0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top left
// Second triangle: From top right, clockwise
0.5, 0.5, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, // top right
0.5, -0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // bottom right
-0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top left
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在OpenGL ES中绘制条带而不重复顶点?
简短的回答是这样的:
renderEncoder.drawPrimitives(MTLPrimitiveType.TriangleStrip, vertexStart: 0, vertexCount: 6)
Run Code Online (Sandbox Code Playgroud)
它相当于GL_TRIANGLE_STRIP.
此外,您可能希望使用索引绘图,然后您将只加载每个顶点一次,之后您将需要使用顶点索引数组来指定绘制顺序.这样,您将通过不指定重复的顶点来保存数据.
这是对索引绘图的调用.
renderEncoder.drawIndexedPrimitives(submesh.primitiveType, indexCount: submesh.indexCount, indexType: submesh.indexType, indexBuffer: submesh.indexBuffer.buffer, indexBufferOffset: submesh.indexBuffer.offset)
Run Code Online (Sandbox Code Playgroud)
干杯!
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |