From ba292befccd10ef6fe2b3b172ef237c57f9551fc Mon Sep 17 00:00:00 2001 From: "spartanj@gmail.com" Date: Tue, 23 Aug 2011 03:25:20 -0300 Subject: [PATCH] Added OS detection for Android and iOS. --- src/base.hpp | 27 ++++++++++++++++++++++++-- src/graphics/base.hpp | 36 ++++++++++++++++++++++------------- src/graphics/renderer/cgl.cpp | 22 ++++++++------------- 3 files changed, 56 insertions(+), 29 deletions(-) diff --git a/src/base.hpp b/src/base.hpp index 939d188e2..4df2f48b9 100644 --- a/src/base.hpp +++ b/src/base.hpp @@ -31,6 +31,8 @@ #define EE_PLATFORM_BSD 4 #define EE_PLATFORM_SOLARIS 5 #define EE_PLATFORM_HAIKU 6 +#define EE_PLATFORM_ANDROID 7 +#define EE_PLATFORM_IOS 8 #if defined( __WIN32__ ) || defined( _WIN32 ) || defined( _WIN64 ) #define EE_PLATFORM EE_PLATFORM_WIN @@ -39,7 +41,15 @@ #define EE_COMPILER_MSVC #endif #elif defined( __APPLE_CC__ ) || defined ( __APPLE__ ) - #define EE_PLATFORM EE_PLATFORM_MACOSX + + #include + + #if defined( __IPHONE__ ) || ( defined( TARGET_OS_IPHONE ) && TARGET_OS_IPHONE ) || ( defined( TARGET_IPHONE_SIMULATOR ) && TARGET_IPHONE_SIMULATOR ) + #define EE_PLATFORM EE_PLATFORM_IOS + #else + #define EE_PLATFORM EE_PLATFORM_MACOSX + #endif + #elif defined ( linux ) || defined( __linux__ ) #define EE_PLATFORM EE_PLATFORM_LINUX #elif defined( __FreeBSD__ ) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined( __DragonFly__ ) @@ -48,6 +58,20 @@ #define EE_PLATFORM EE_PLATFORM_SOLARIS #elif defined( __HAIKU__ ) || defined( __BEOS__ ) #define EE_PLATFORM EE_PLATFORM_HAIKU +#elif defined( __ANDROID__ ) || defined( ANDROID ) + #define EE_PLATFORM EE_PLATFORM_ANDROID +#endif + +#if EE_PLATFORM == EE_PLATFORM_ANDROID + #if !defined( EE_GLES1 ) && !defined( EE_GLES2 ) + #define EE_GLES1 + #endif +#endif + +#if EE_PLATFORM == EE_PLATFORM_IOS + #if !defined( EE_GLES1 ) && !defined( EE_GLES2 ) + #define EE_GLES1 + #endif #endif #if defined ( linux ) || defined( __linux__ ) \ @@ -235,7 +259,6 @@ namespace EE { #else typedef SOPHIST_uint32 Uint64; // Fallback to a 32 bit int typedef SOPHIST_int32 Int64; // All the desktop platforms support 64bit ints, so this should not happend. - #warning 64bit ints represented with 32bit ints because the compiler or platform doesnt support it. #endif #define EE_PI 3.14159265358979323846 diff --git a/src/graphics/base.hpp b/src/graphics/base.hpp index 5d37a4978..14e87aef8 100644 --- a/src/graphics/base.hpp +++ b/src/graphics/base.hpp @@ -45,16 +45,30 @@ //! GLES2 ( programmable pipeline ) #ifdef EE_GLES2 - #include - #include + #if EE_PLATFORM_IOS + #include + #include + #else + #include + #include + #endif //! GLES1 ( fixed pipeline ) #elif defined( EE_GLES1 ) - #include + #if EE_PLATFORM_IOS + #include + #include + #else + #include + #include + #endif #endif #endif #ifdef EE_GLES +typedef GLfloat GLdouble; +typedef char GLchar; + #define glCheckFramebufferStatusEXT glCheckFramebufferStatus #define glDeleteFramebuffersEXT glDeleteFramebuffers #define glGenFramebuffersEXT glGenFramebuffers @@ -70,11 +84,7 @@ #define glBufferDataARB glBufferData #define glBufferSubDataARB glBufferSubData #define glVertexAttribPointerARB glVertexAttribPointer -typedef GLfloat GLdouble; -#endif -#ifdef EE_GLES2 -typedef char GLchar; #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 @@ -98,6 +108,12 @@ typedef char GLchar; #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 #endif +#ifdef EE_GLES + #define EE_QUAD_VERTEX 6 +#else + #define EE_QUAD_VERTEX 4 +#endif + #define STBI_TYPE_SPECIFIC_FUNCTIONS #include "../helper/SOIL/stb_image.h" #include "../helper/SOIL/SOIL.h" @@ -124,10 +140,4 @@ using namespace EE::System; #include "renders.hpp" -#ifdef EE_GLES - #define EE_QUAD_VERTEX 6 -#else - #define EE_QUAD_VERTEX 4 -#endif - #endif diff --git a/src/graphics/renderer/cgl.cpp b/src/graphics/renderer/cgl.cpp index 50a22b55a..86ad46bb4 100644 --- a/src/graphics/renderer/cgl.cpp +++ b/src/graphics/renderer/cgl.cpp @@ -44,16 +44,10 @@ cGL * cGL::CreateSingleton() { if ( ms_singleton == 0 ) { #ifdef EE_GLES2 ms_singleton = eeNew( cRendererGL3, () ); - #elif EE_GLES1 + #elif defined( EE_GLES1 ) ms_singleton = eeNew( cRendererGL, () ); #else - #ifdef EE_GL3_ENABLED - /** Implement an OpenGL3 compilant renderer */ - if ( '3' == glGetString(GL_VERSION)[0] ) - ms_singleton = eeNew( cRendererGL3, () ); - else - #endif - ms_singleton = eeNew( cRendererGL, () ); + ms_singleton = eeNew( cRendererGL, () ); #endif } @@ -115,7 +109,7 @@ void cGL::Init() { WriteExtension( EEGL_EXT_framebuffer_object , GLEW_EXT_framebuffer_object ); WriteExtension( EEGL_ARB_multitexture , GLEW_ARB_multitexture ); WriteExtension( EEGL_EXT_texture_compression_s3tc , GLEW_EXT_texture_compression_s3tc ); - WriteExtension( EEGL_ARB_vertex_buffer_object , GLEW_ARB_vertex_buffer_object ); + WriteExtension( EEGL_ARB_vertex_buffer_object , GLEW_ARB_vertex_buffer_object ); WriteExtension( EEGL_ARB_vertex_array_object , GLEW_ARB_vertex_array_object ); } else @@ -131,7 +125,7 @@ void cGL::Init() { WriteExtension( EEGL_EXT_framebuffer_object , IsExtension( "GL_EXT_framebuffer_object" ) ); WriteExtension( EEGL_ARB_multitexture , IsExtension( "GL_ARB_multitexture" ) ); WriteExtension( EEGL_EXT_texture_compression_s3tc , IsExtension( "GL_EXT_texture_compression_s3tc" ) ); - WriteExtension( EEGL_ARB_vertex_buffer_object , IsExtension( "GL_ARB_vertex_buffer_object" ) ); + WriteExtension( EEGL_ARB_vertex_buffer_object , IsExtension( "GL_ARB_vertex_buffer_object" ) ); WriteExtension( EEGL_ARB_vertex_array_object , IsExtension( "GL_ARB_vertex_array_object" ) ); glewOn = false; /// avoid compiler warning @@ -345,13 +339,13 @@ std::string cGL::GetVersion() { return std::string( reinterpret_cast ( cGL::instance()->GetString( GL_VERSION ) ) ); } -std::string cGL::GetShadingLanguageVersion() { +std::string cGL::GetShadingLanguageVersion() { if ( ShadersSupported() ) { #ifdef GL_SHADING_LANGUAGE_VERSION return std::string( reinterpret_cast ( cGL::instance()->GetString( GL_SHADING_LANGUAGE_VERSION ) ) ); - #endif - } - + #endif + } + return std::string( "Shaders not supported" ); }