metal draw indexed
This commit is contained in:
@@ -91,3 +91,31 @@ void gnCommandDrawFn(struct gnCommandBuffer_t* buffer, int vertexCount, int firs
|
|||||||
[encoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:firstVertex vertexCount:vertexCount instanceCount:instanceCount baseInstance:firstInstance];
|
[encoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:firstVertex vertexCount:vertexCount instanceCount:instanceCount baseInstance:firstInstance];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void gnCommandDrawIndexedFn(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance) {
|
||||||
|
id<MTLRenderCommandEncoder> encoder = (id<MTLRenderCommandEncoder>)buffer->commandBuffer->encoder;
|
||||||
|
MTLPrimitiveType primative;
|
||||||
|
switch (buffer->commandBuffer->boundGraphcisPipeline->info.primitiveType) {
|
||||||
|
case GN_PRIMITIVE_POINTS: primative = MTLPrimitiveTypePoint; break;
|
||||||
|
case GN_PRIMITIVE_LINE_STRIP: primative = MTLPrimitiveTypeLineStrip; break;
|
||||||
|
case GN_PRIMITIVE_LINES: primative = MTLPrimitiveTypeLine; break;
|
||||||
|
case GN_PRIMITIVE_TRIANGLE_STRIP: primative = MTLPrimitiveTypeTriangleStrip; break;
|
||||||
|
case GN_PRIMITIVE_TRIANGLES: primative = MTLPrimitiveTypeTriangle; break;
|
||||||
|
}
|
||||||
|
[encoder
|
||||||
|
drawIndexedPrimitives:primative
|
||||||
|
indexCount:indexCount
|
||||||
|
indexType:((type == GN_UINT32) ? MTLIndexTypeUInt32 : MTLIndexTypeUInt16)
|
||||||
|
indexBuffer:buffer->commandBuffer->indexBuffer->buffer->buffer
|
||||||
|
indexBufferOffset:0
|
||||||
|
instanceCount:instanceCount
|
||||||
|
baseVertex:vertexOffset
|
||||||
|
baseInstance:firstInstance
|
||||||
|
];
|
||||||
|
|
||||||
|
// [encoder drawIndexedPrimitives:(MTLPrimitiveType)
|
||||||
|
// indexCount:indexCount
|
||||||
|
// indexType:((type == GN_UINT32) ? MTLIndexTypeUInt32 : MTLIndexTypeUInt16)
|
||||||
|
// indexBuffer:buffer->commandBuffer->indexBuffer->buffer->buffer
|
||||||
|
// indexBufferOffset:firstIndex
|
||||||
|
// ];
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user