From d731a15e6d39b635d1977916d823df5fcedc9fe1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Apr 2024 18:11:46 -0500 Subject: [PATCH] move init of render pass --- src/gui/render/renderMetal.mm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/gui/render/renderMetal.mm b/src/gui/render/renderMetal.mm index 3b2219ea2..70c9844a7 100644 --- a/src/gui/render/renderMetal.mm +++ b/src/gui/render/renderMetal.mm @@ -165,7 +165,16 @@ bool FurnaceGUIRenderMetal::init(SDL_Window* win, int swapInterval) { logI("retrieving context..."); priv->context=(__bridge CAMetalLayer*)SDL_RenderGetMetalLayer(sdlRend); + + if (priv->context==NULL) { + logE("Metal layer is NULL!"); + return false; + } + priv->context.pixelFormat=MTLPixelFormatBGRA8Unorm; + + priv->cmdQueue=[priv->context.device newCommandQueue]; + priv->renderPass=[MTLRenderPassDescriptor new]; return true; } @@ -173,19 +182,16 @@ void FurnaceGUIRenderMetal::initGUI(SDL_Window* win) { logI("Metal: initGUI()"); ImGui_ImplMetal_Init(priv->context.device); ImGui_ImplSDL2_InitForMetal(win); - - priv->cmdQueue=[priv->context.device newCommandQueue]; - priv->renderPass=[MTLRenderPassDescriptor new]; } void FurnaceGUIRenderMetal::quitGUI() { ImGui_ImplMetal_Shutdown(); - [priv->renderPass release]; - [priv->cmdQueue release]; } bool FurnaceGUIRenderMetal::quit() { if (sdlRend==NULL) return false; + [priv->renderPass release]; + [priv->cmdQueue release]; SDL_DestroyRenderer(sdlRend); sdlRend=NULL; return true;