From f59ba947cbbd878c79eef69473d0e3d3dfe02272 Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Fri, 12 Jul 2013 22:27:46 -0700 Subject: [PATCH] iOS WIP. --- makefile | 1 + premake/bgfx.lua | 2 +- premake/premake4.lua | 7 +++++++ src/glcontext_ios.h | 38 ++++++++++++++++++++++++++++++++++++++ src/renderer_gl.cpp | 10 ++++++++++ src/renderer_gl.h | 2 ++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100755 src/glcontext_ios.h diff --git a/makefile b/makefile index 0629419e0..6b4f97cbb 100755 --- a/makefile +++ b/makefile @@ -13,6 +13,7 @@ all: premake4 --file=premake/premake4.lua --gcc=mingw gmake premake4 --file=premake/premake4.lua --gcc=linux gmake premake4 --file=premake/premake4.lua --gcc=osx gmake + premake4 --file=premake/premake4.lua --gcc=ios gmake premake4 --file=premake/premake4.lua --gcc=qnx-arm gmake premake4 --file=premake/premake4.lua xcode4 make -s --no-print-directory -C src diff --git a/premake/bgfx.lua b/premake/bgfx.lua index 8e718ca19..e495396bd 100644 --- a/premake/bgfx.lua +++ b/premake/bgfx.lua @@ -35,7 +35,7 @@ project "bgfx" BGFX_DIR .. "src/**.mm", } - configuration { "vs* or linux or mingw or osx" } + configuration { "vs* or linux or mingw or osx or ios" } includedirs { --nacl has GLES2 headers modified... BGFX_DIR .. "3rdparty/glext", diff --git a/premake/premake4.lua b/premake/premake4.lua index f778da9df..7a455b910 100644 --- a/premake/premake4.lua +++ b/premake/premake4.lua @@ -102,6 +102,13 @@ function exampleProject(_name, _uuid) "OpenGL.framework", } + configuration { "ios" } + linkoptions { + "-framework CoreFoundation", + "-framework Foundation", + "-framework OpenGLES", + } + configuration { "qnx*" } targetextension "" links { diff --git a/src/glcontext_ios.h b/src/glcontext_ios.h new file mode 100755 index 000000000..eba25bd11 --- /dev/null +++ b/src/glcontext_ios.h @@ -0,0 +1,38 @@ +/* + * Copyright 2011-2013 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#ifndef __GLCONTEXT_NSGL_H__ +#define __GLCONTEXT_NSGL_H__ + +#if BX_PLATFORM_IOS + +namespace bgfx +{ + struct GlContext + { + GlContext() + : m_context(0) + { + } + + void create(uint32_t _width, uint32_t _height); + void destroy(); + void resize(uint32_t _width, uint32_t _height, bool _vsync); + void swap(); + void import(); + + bool isValid() const + { + return 0 != m_context; + } + + void* m_view; + void* m_context; + }; +} // namespace bgfx + +#endif // BX_PLATFORM_IOS + +#endif // __GLCONTEXT_NSGL_H__ diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index d67558b30..47d9a5e95 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -159,6 +159,16 @@ namespace bgfx } #endif // BGFX_CONFIG_DEBUG_GREMEDY +#if BX_PLATFORM_IOS + PFNGLBINDVERTEXARRAYOESPROC glBindVertexArrayOES = NULL; + PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArraysOES = NULL; + PFNGLGENVERTEXARRAYSOESPROC glGenVertexArraysOES = NULL; + PFNGLPROGRAMBINARYOESPROC glProgramBinaryOES = NULL; + PFNGLGETPROGRAMBINARYOESPROC glGetProgramBinaryOES = NULL; + PFLGLDRAWARRAYSINSTANCEDANGLEPROC glDrawArraysInstanced = NULL; + PFLGLDRAWELEMENTSINSTANCEDANGLEPROC glDrawElementsInstanced = NULL; +#endif // BX_PLATFORM_IOS + typedef void (*PostSwapBuffersFn)(uint32_t _width, uint32_t _height); static void rgbaToBgra(uint8_t* _data, uint32_t _width, uint32_t _height) diff --git a/src/renderer_gl.h b/src/renderer_gl.h index cf6325518..522e600f8 100755 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -211,6 +211,8 @@ typedef void (*PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)(GLuint shader, GLsizei b # include "glcontext_glx.h" #elif BX_PLATFORM_OSX # include "glcontext_nsgl.h" +#elif BX_PLATFORM_IOS +# include "glcontext_ios.h" #endif // BX_PLATFORM_ #if BGFX_CONFIG_DEBUG_GREMEDY && (BX_PLATFORM_WINDOWS || BX_PLATFORM_LINUX)