|
|
@@ -10,51 +10,43 @@
|
|
|
# include <Cocoa/Cocoa.h>
|
|
|
# include <bx/os.h>
|
|
|
|
|
|
-static void* NSGLGetProcAddress (const char* name) {
|
|
|
- static void* dylib =
|
|
|
- bx::dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL");
|
|
|
- return dylib ? bx::dlsym(dylib, name) : NULL;
|
|
|
-}
|
|
|
-
|
|
|
namespace bgfx
|
|
|
{
|
|
|
|
|
|
# define GL_IMPORT(_optional, _proto, _func) _proto _func
|
|
|
-# include "glimports.h"
|
|
|
+# include "glimports.h"
|
|
|
# undef GL_IMPORT
|
|
|
|
|
|
+ static void* s_opengl = NULL;
|
|
|
+
|
|
|
void GlContext::create(uint32_t _width, uint32_t _height)
|
|
|
{
|
|
|
+ s_opengl = bx::dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL");
|
|
|
+ BX_CHECK(NULL != s_opengl, "OpenGL dynamic library is not found!");
|
|
|
+
|
|
|
NSWindow* nsWindow = (NSWindow*)g_bgfxNSWindow;
|
|
|
-
|
|
|
+
|
|
|
NSOpenGLPixelFormatAttribute pixelFormatAttributes[] = {
|
|
|
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy, // NSOpenGLProfileVersion3_2Core,
|
|
|
- NSOpenGLPFAColorSize , 24,
|
|
|
- NSOpenGLPFAAlphaSize , 8,
|
|
|
- NSOpenGLPFADepthSize , 24,
|
|
|
- NSOpenGLPFAStencilSize , 8,
|
|
|
- NSOpenGLPFADoubleBuffer ,
|
|
|
- NSOpenGLPFAAccelerated ,
|
|
|
- NSOpenGLPFANoRecovery ,
|
|
|
- 0
|
|
|
+ NSOpenGLPFAColorSize, 24,
|
|
|
+ NSOpenGLPFAAlphaSize, 8,
|
|
|
+ NSOpenGLPFADepthSize, 24,
|
|
|
+ NSOpenGLPFAStencilSize, 8,
|
|
|
+ NSOpenGLPFADoubleBuffer, true,
|
|
|
+ NSOpenGLPFAAccelerated, true,
|
|
|
+ NSOpenGLPFANoRecovery, true,
|
|
|
+ 0, 0,
|
|
|
};
|
|
|
-
|
|
|
- NSOpenGLPixelFormat* pixelFormat =
|
|
|
- [[NSOpenGLPixelFormat alloc]
|
|
|
- initWithAttributes:pixelFormatAttributes];
|
|
|
-
|
|
|
+
|
|
|
+ NSOpenGLPixelFormat* pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:pixelFormatAttributes];
|
|
|
NSRect glViewRect = [[nsWindow contentView] bounds];
|
|
|
-
|
|
|
- NSOpenGLView* glView =
|
|
|
- [[NSOpenGLView alloc]
|
|
|
- initWithFrame:glViewRect
|
|
|
- pixelFormat:pixelFormat];
|
|
|
+ NSOpenGLView* glView = [[NSOpenGLView alloc] initWithFrame:glViewRect pixelFormat:pixelFormat];
|
|
|
|
|
|
[pixelFormat release];
|
|
|
-
|
|
|
[nsWindow setContentView:glView];
|
|
|
|
|
|
NSOpenGLContext* glContext = [glView openGLContext];
|
|
|
+
|
|
|
[glContext makeCurrentContext];
|
|
|
|
|
|
m_view = glView;
|
|
|
@@ -69,6 +61,8 @@ namespace bgfx
|
|
|
m_view = 0;
|
|
|
m_context = 0;
|
|
|
[glView release];
|
|
|
+
|
|
|
+ bx::dlclose(s_opengl);
|
|
|
}
|
|
|
|
|
|
void GlContext::resize(uint32_t _width, uint32_t _height, bool _vsync)
|
|
|
@@ -86,7 +80,7 @@ namespace bgfx
|
|
|
{
|
|
|
# define GL_IMPORT(_optional, _proto, _func) \
|
|
|
{ \
|
|
|
- _func = (_proto)NSGLGetProcAddress(#_func); \
|
|
|
+ _func = (_proto)bx::dlsym(s_opengl, #_func); \
|
|
|
BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGL context. NSGLGetProcAddress(\"%s\")", #_func); \
|
|
|
}
|
|
|
# include "glimports.h"
|