Blender  V3.3
GHOST_ContextCGL.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2014 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 #include "GHOST_Context.h"
11 
12 @class CAMetalLayer;
13 @class MTLCommandQueue;
14 @class MTLRenderPipelineState;
15 @class MTLTexture;
16 @class NSOpenGLContext;
17 @class NSOpenGLView;
18 @class NSView;
19 
21  public:
25  GHOST_ContextCGL(bool stereoVisual,
26  NSView *metalView,
27  CAMetalLayer *metalLayer,
28  NSOpenGLView *openglView);
29 
34 
40 
46 
52 
53  unsigned int getDefaultFramebuffer();
54 
60 
67 
73  GHOST_TSuccess setSwapInterval(int interval);
74 
81 
88 
89  private:
91  NSView *m_metalView;
92  CAMetalLayer *m_metalLayer;
93  MTLCommandQueue *m_metalCmdQueue;
94  MTLRenderPipelineState *m_metalRenderPipeline;
95 
97  NSOpenGLView *m_openGLView;
98 
100  NSOpenGLContext *m_openGLContext;
101 
103  unsigned int m_defaultFramebuffer;
104 
106  MTLTexture *m_defaultFramebufferMetalTexture;
107 
108  bool m_coreProfile;
109 
110  const bool m_debug;
111 
113  static NSOpenGLContext *s_sharedOpenGLContext;
114  static int s_sharedCount;
115 
116  /* Metal functions */
117  void metalInit();
118  void metalFree();
119  void metalInitFramebuffer();
120  void metalUpdateFramebuffer();
121  void metalSwapBuffers();
122 };
GHOST_TSuccess
Definition: GHOST_Types.h:74
GHOST_TSuccess setSwapInterval(int interval)
unsigned int getDefaultFramebuffer()
GHOST_TSuccess swapBuffers()
GHOST_TSuccess initializeDrawingContext()
GHOST_ContextCGL(bool stereoVisual, NSView *metalView, CAMetalLayer *metalLayer, NSOpenGLView *openglView)
GHOST_TSuccess releaseDrawingContext()
GHOST_TSuccess activateDrawingContext()
GHOST_TSuccess releaseNativeHandles()
GHOST_TSuccess getSwapInterval(int &)
GHOST_TSuccess updateDrawingContext()