尝试绘制一条三角形,如下所示:
完成了objc.io tutorial,他们在其中使用两个三角形绘制了一个四边形。三角形是断开连接并单独绘制的,这意味着我需要指定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
};
有没有一种方法可以像OpenGL ES中那样绘制一 strip 而无需复制顶点?
最佳答案
简短的答案是这样的:
renderEncoder.drawPrimitives(MTLPrimitiveType.TriangleStrip, vertexStart: 0, vertexCount: 6)
相当于
GL_TRIANGLE_STRIP
。另外,您可能要使用索引绘图,那么您将只加载一次每个顶点,然后,您将需要使用顶点索引数组来指定绘制顺序。这样,您将通过不指定重复的顶点来保存数据。
这是索引图纸的调用。
renderEncoder.drawIndexedPrimitives(submesh.primitiveType, indexCount: submesh.indexCount, indexType: submesh.indexType, indexBuffer: submesh.indexBuffer.buffer, indexBufferOffset: submesh.indexBuffer.offset)
干杯!