10#include <Metal/Metal.hpp>
23 for (
int col = 0; col < 4; ++col) {
24 for (
int row = 0; row < 4; ++row) {
25 out.columns[col][row] = matrix.
getElement(col, row);
34 switch (primitiveType) {
36 return MTL::PrimitiveTypePoint;
38 return MTL::PrimitiveTypeLine;
41 return MTL::PrimitiveTypeLineStrip;
43 return MTL::PrimitiveTypeTriangleStrip;
47 return MTL::PrimitiveTypeTriangle;
56 return MTL::CullModeBack;
58 return MTL::CullModeFront;
62 return MTL::CullModeNone;
69 if (!device || width <= 0 || height <= 0) {
73 auto* desc = MTL::TextureDescriptor::alloc()->init();
74 desc->setTextureType(MTL::TextureType2D);
75 desc->setPixelFormat(MTL::PixelFormatDepth32Float);
76 desc->setWidth(
static_cast<NS::UInteger
>(width));
77 desc->setHeight(
static_cast<NS::UInteger
>(height));
78 desc->setMipmapLevelCount(1);
79 desc->setSampleCount(1);
80 desc->setStorageMode(MTL::StorageModePrivate);
81 desc->setUsage(MTL::TextureUsageRenderTarget);
83 auto* texture = device->newTexture(desc);
virtual void destroyFrameBuffers()=0
RenderTarget(const RenderTargetOptions &options={})
virtual void createFrameBuffers()=0
4x4 column-major transformation matrix with SIMD acceleration.
float getElement(const int col, int row) const