Added OS detection for Android and iOS.

This commit is contained in:
spartanj@gmail.com
2011-08-23 03:25:20 -03:00
parent 49fd857449
commit ba292befcc
3 changed files with 56 additions and 29 deletions

View File

@@ -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 <TargetConditionals.h>
#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

View File

@@ -45,16 +45,30 @@
//! GLES2 ( programmable pipeline )
#ifdef EE_GLES2
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#if EE_PLATFORM_IOS
#include <OpenGLES/ES2/gl.h>
#include <OpenGLES/ES2/glext.h>
#else
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#endif
//! GLES1 ( fixed pipeline )
#elif defined( EE_GLES1 )
#include <GLES/gl.h>
#if EE_PLATFORM_IOS
#include <OpenGLES/ES1/gl.h>
#include <OpenGLES/ES1/glext.h>
#else
#include <GLES/gl.h>
#include <GLES/glext.h>
#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

View File

@@ -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<const char*> ( 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<const char*> ( cGL::instance()->GetString( GL_SHADING_LANGUAGE_VERSION ) ) );
#endif
}
#endif
}
return std::string( "Shaders not supported" );
}