| @@ -104,6 +104,18 @@ AC_CHECK_LIB(sysmodule_stub, cellSysmoduleLoadModule, | |||
| AM_CONDITIONAL(USE_MAKE_FSELF, test "${MAKE_FSELF}" != "no") | |||
| LIBS_save="$LIBS" | |||
| LIBS="$LIBS -Wl,-framework -Wl,OpenGL" | |||
| AC_MSG_CHECKING(for -framework OpenGL) | |||
| AC_TRY_LINK([], [], | |||
| [ac_cv_my_have_cocoa="yes" | |||
| AC_MSG_RESULT(yes) | |||
| GL_LIBS="${GL_LIBS} -framework OpenGL" | |||
| CXXFLAGS="${CXXFLAGS} -ObjC++"], | |||
| [AC_MSG_RESULT(no)]) | |||
| LIBS="$LIBS_save" | |||
| dnl Which version of OpenGL to use? | |||
| ac_cv_my_have_gl="no" | |||
| PKG_CHECK_MODULES(GLES2, glesv2, | |||
| @@ -232,20 +244,6 @@ AM_CONDITIONAL(USE_SDL_MIXER, test "${ac_cv_my_have_sdl_mixer}" = "yes") | |||
| AM_CONDITIONAL(USE_SDL_IMAGE, test "${ac_cv_my_have_sdl_image}" = "yes") | |||
| dnl Use Cocoa? | |||
| ac_cv_my_have_cocoa="no" | |||
| LIBS_save="$LIBS" | |||
| LIBS="$LIBS -Wl,-framework -Wl,Cocoa" | |||
| AC_MSG_CHECKING(for -framework Cocoa) | |||
| AC_TRY_LINK([], [], | |||
| [ac_cv_my_have_cocoa="yes" | |||
| AC_MSG_RESULT(yes) | |||
| CXXFLAGS="${CXXFLAGS} -ObjC++"], | |||
| [AC_MSG_RESULT(no)]) | |||
| LIBS="$LIBS_save" | |||
| AM_CONDITIONAL(USE_COCOA, test "${ac_cv_my_have_cocoa}" != "no") | |||
| dnl Use EGL? | |||
| ac_cv_my_have_egl="no" | |||
| PKG_CHECK_MODULES(EGL, egl, [ac_cv_my_have_egl="yes"], [:]) | |||
| @@ -153,7 +153,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| if (!data->initialised && !IsDestroying()) | |||
| { | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
| glGenVertexArrays(NUM_ARRAYS, data->array); | |||
| #endif | |||
| glGenBuffers(NUM_BUFFERS, data->buffer); | |||
| @@ -183,7 +183,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| } | |||
| else if (data->initialised && IsDestroying()) | |||
| { | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
| glDeleteVertexArrays(NUM_ARRAYS, data->array); | |||
| #endif | |||
| glDeleteBuffers(NUM_BUFFERS, data->buffer); | |||
| @@ -915,7 +915,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| * Renders a multicoloured square with varying colors xored with an | |||
| * animated distorted checkerboard. | |||
| */ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
| if (!shader[0]) | |||
| { | |||
| shader[0] = Shader::Create( | |||
| @@ -985,7 +985,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| * Renders a multicoloured square with varying colors xored with an | |||
| * animated distorted checkerboard. | |||
| */ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ | |||
| #if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
| if (!shader[0]) | |||
| { | |||
| shader[0] = Shader::Create( | |||
| @@ -33,7 +33,7 @@ class GradientData | |||
| private: | |||
| Shader *shader; | |||
| GLuint bufs[2]; | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| GLuint vaos[1]; | |||
| #endif | |||
| }; | |||
| @@ -154,7 +154,7 @@ void Gradient::TickDraw(float deltams) | |||
| #endif | |||
| #if !defined __CELLOS_LV2__ | |||
| glGenBuffers(2, data->bufs); | |||
| # if defined HAVE_GL_2X | |||
| # if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glGenVertexArrays(1, data->vaos); | |||
| # endif | |||
| #endif | |||
| @@ -195,7 +195,7 @@ void Gradient::TickDraw(float deltams) | |||
| /* Bind vertex, color and texture coordinate buffers */ | |||
| #if !defined __CELLOS_LV2__ | |||
| # if defined HAVE_GL_2X | |||
| # if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glBindVertexArray(data->vaos[0]); | |||
| # endif | |||
| glEnableVertexAttribArray(attr_pos); | |||
| @@ -222,7 +222,7 @@ void Gradient::TickDraw(float deltams) | |||
| glDrawArrays(GL_TRIANGLES, 0, 6); | |||
| #if !defined __CELLOS_LV2__ | |||
| # if defined HAVE_GL_2X | |||
| # if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glBindVertexArray(0); | |||
| # endif | |||
| glDisableVertexAttribArray(attr_pos); | |||
| @@ -23,12 +23,20 @@ | |||
| # undef HAVE_GLES_2X | |||
| #endif | |||
| /* Include GL */ | |||
| #if defined USE_GLEW | |||
| /* Include GL development headers. | |||
| * Do not include glew.h on OS X, because the version shipped with Fink | |||
| * links with X11 whereas we want the system’s Cocoa-friendly GL libs. */ | |||
| #if defined USE_GLEW && !defined __APPLE__ | |||
| # include <glew.h> | |||
| #elif defined HAVE_GL_2X | |||
| # if defined __APPLE__ && defined __MACH__ | |||
| # if defined __APPLE__ && defined __MACH__ && defined __arm__ | |||
| # include <OpenGL/gl.h> | |||
| # elif defined __APPLE__ && defined __MACH__ | |||
| # define MACOS_OPENGL | |||
| # define GL_GLEXT_PROTOTYPES | |||
| # include <OpenGL/OpenGL.h> | |||
| # include <OpenGL/gl.h> | |||
| # include <OpenGL/glext.h> | |||
| # else | |||
| # define GL_GLEXT_PROTOTYPES | |||
| # include <GL/gl.h> | |||
| @@ -59,7 +59,7 @@ private: | |||
| int ntiles; | |||
| float angle; | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| GLuint vao; | |||
| #endif | |||
| GLuint *bufs; | |||
| @@ -84,7 +84,7 @@ Scene::Scene(float angle) | |||
| data->bufs = 0; | |||
| data->nbufs = 0; | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glGenVertexArrays(1, &data->vao); | |||
| #endif | |||
| } | |||
| @@ -96,7 +96,7 @@ Scene::~Scene() | |||
| /* XXX: The test is necessary because of a crash with PSGL. */ | |||
| if (data->nbufs > 0) | |||
| glDeleteBuffers(data->nbufs, data->bufs); | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glDeleteVertexArrays(1, &data->vao); | |||
| #endif | |||
| free(data->bufs); | |||
| @@ -320,7 +320,7 @@ void Scene::Render() // XXX: rename to Blit() | |||
| glEnable(GL_TEXTURE_2D); | |||
| glEnable(GL_DEPTH_TEST); | |||
| glDepthFunc(GL_LEQUAL); | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glEnable(GL_ALPHA_TEST); | |||
| glAlphaFunc(GL_GEQUAL, 0.01f); | |||
| #endif | |||
| @@ -359,7 +359,7 @@ void Scene::Render() // XXX: rename to Blit() | |||
| data->tiles[i].tileset->Bind(); | |||
| /* Bind vertex, color and texture coordinate buffers */ | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glBindVertexArray(data->vao); | |||
| #endif | |||
| #if !defined __CELLOS_LV2__ // Use cgGLEnableClientState etc. | |||
| @@ -386,7 +386,7 @@ void Scene::Render() // XXX: rename to Blit() | |||
| /* Draw arrays */ | |||
| glDrawArrays(GL_TRIANGLES, 0, (n - i) * 6); | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glBindVertexArray(0); | |||
| #endif | |||
| #if !defined __CELLOS_LV2__ // Use cgGLEnableClientState etc. | |||
| @@ -33,7 +33,7 @@ class VideoData | |||
| private: | |||
| static mat4 proj_matrix, view_matrix; | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ || defined __APPLE__ | |||
| static ivec2 saved_viewport; | |||
| #endif | |||
| }; | |||
| @@ -41,7 +41,7 @@ private: | |||
| mat4 VideoData::proj_matrix; | |||
| mat4 VideoData::view_matrix; | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ || defined __APPLE__ | |||
| ivec2 VideoData::saved_viewport = 0; | |||
| #endif | |||
| @@ -51,7 +51,7 @@ ivec2 VideoData::saved_viewport = 0; | |||
| void Video::Setup(ivec2 size) | |||
| { | |||
| #if defined USE_GLEW | |||
| #if defined USE_GLEW && !defined __APPLE__ | |||
| /* Initialise GLEW if necessary */ | |||
| GLenum glerr = glewInit(); | |||
| if (glerr != GLEW_OK) | |||
| @@ -64,14 +64,14 @@ void Video::Setup(ivec2 size) | |||
| /* Initialise OpenGL */ | |||
| glViewport(0, 0, size.x, size.y); | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ | |||
| #if defined __ANDROID__ || defined __CELLOS_LV2__ || defined __APPLE__ | |||
| VideoData::saved_viewport = size; | |||
| #endif | |||
| glClearColor(0.1f, 0.2f, 0.3f, 0.0f); | |||
| glClearDepth(1.0); | |||
| #if defined HAVE_GL_2X | |||
| #if defined HAVE_GL_2X && !defined __APPLE__ | |||
| glShadeModel(GL_SMOOTH); | |||
| glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); | |||
| #endif | |||
| @@ -183,6 +183,8 @@ ivec2 Video::GetSize() | |||
| #elif defined __CELLOS_LV2__ | |||
| // FIXME: use psglCreateDeviceAuto && psglGetDeviceDimensions | |||
| return VideoData::saved_viewport; | |||
| #elif defined __APPLE__ | |||
| return VideoData::saved_viewport; | |||
| #else | |||
| GLint v[4]; | |||
| glGetIntegerv(GL_VIEWPORT, v); | |||