From a08d61ad46cb91f2b52b560d2af6049488104827 Mon Sep 17 00:00:00 2001 From: Samuliak <samuliak77@gmail.com> Date: Wed, 3 Jul 2024 15:16:03 +0200 Subject: [PATCH] use proper primitive types --- include/renderer_mtl/pica_to_mtl.hpp | 13 +++++++++++++ src/core/renderer_mtl/renderer_mtl.cpp | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/renderer_mtl/pica_to_mtl.hpp b/include/renderer_mtl/pica_to_mtl.hpp index bbd48fd5..f4437da2 100644 --- a/include/renderer_mtl/pica_to_mtl.hpp +++ b/include/renderer_mtl/pica_to_mtl.hpp @@ -97,4 +97,17 @@ inline MTL::StencilOperation toMTLStencilOperation(u8 op) { return MTL::StencilOperationKeep; } +inline MTL::PrimitiveType toMTLPrimitiveType(PrimType primType) { + switch (primType) { + case PrimType::TriangleList: return MTL::PrimitiveTypeTriangle; + case PrimType::TriangleStrip: return MTL::PrimitiveTypeTriangleStrip; + case PrimType::TriangleFan: + Helpers::warn("Triangle fans are not supported on Metal, using triangles instead"); + return MTL::PrimitiveTypeTriangle; + case PrimType::GeometryPrimitive: + Helpers::warn("Geometry primitives are not yet, using triangles instead"); + return MTL::PrimitiveTypeTriangle; + } +} + } // namespace PICA diff --git a/src/core/renderer_mtl/renderer_mtl.cpp b/src/core/renderer_mtl/renderer_mtl.cpp index ea466663..9d20224a 100644 --- a/src/core/renderer_mtl/renderer_mtl.cpp +++ b/src/core/renderer_mtl/renderer_mtl.cpp @@ -405,7 +405,7 @@ void RendererMTL::drawVertices(PICA::PrimType primType, std::span<const PICA::Ve renderCommandEncoder->setFragmentBytes(®s[0x48], 0x200 - 0x48, 0); // TODO: respect primitive type - renderCommandEncoder->drawPrimitives(MTL::PrimitiveTypeTriangle, NS::UInteger(0), NS::UInteger(vertices.size())); + renderCommandEncoder->drawPrimitives(toMTLPrimitiveType(primType), NS::UInteger(0), NS::UInteger(vertices.size())); } void RendererMTL::screenshot(const std::string& name) {