Complete wrapper around Metal (Apple's low-level graphics API).
#include "mtlpp.hpp"
int main()
{
mtlpp::Device device = mtlpp::Device::CreateSystemDefaultDevice();
mtlpp::CommandQueue commandQueue = device.NewCommandQueue();
mtlpp::CommandBuffer commandBuffer = commandQueue.CommandBuffer();
mtlpp::TextureDescriptor textureDesc = mtlpp::TextureDescriptor::Texture2DDescriptor(
mtlpp::PixelFormat::RGBA8Unorm, 320, 240, false);
textureDesc.SetUsage(mtlpp::TextureUsage::RenderTarget);
mtlpp::Texture texture = device.NewTexture(textureDesc);
// ...
return 0;
}
- Complete API wrapper (iOS 10, tvOS 10, and OS X 10.12).
- Objective-C free headers - allow compiling agains the Metal API on any platform (no linking on platforms without Metal).
- Configurable AVAILABILITY and DEPRECATED validation.
- Amalgamated
mtlpp.hpp
andmtlpp.mm
- or use the contents ofsrc/
folder.
mtlpp uses Toll-Free Bridging. The example below demonstrates how MTKView
(MetalKit) can interop with mtlpp.
MTKView * mtkView;
// Objective-C to C++
mtlpp::Device device = ns::Handle{ (__bridge void*)mtkView.device };
// C++ to Objective-C
mtkView.device = (__bridge id<MTLDevice>)device.GetPtr();