diff --git a/base/PCMain.cpp b/base/PCMain.cpp index aea696da83..0f2a3b3ff6 100644 --- a/base/PCMain.cpp +++ b/base/PCMain.cpp @@ -209,6 +209,7 @@ int main(int argc, char *argv[]) { SDL_Quit(); return(2); } +#ifndef BLACKBERRY SDL_WM_SetCaption(app_name_nice.c_str(), NULL); if (GLEW_OK != glewInit()) { @@ -222,6 +223,7 @@ int main(int argc, char *argv[]) { printf("Sorry, this program requires OpenGL 2.0.\n"); return 1; } +#endif #ifdef _MSC_VER // VFSRegister("temp/", new DirectoryAssetReader("E:\\Temp\\")); diff --git a/base/logging.h b/base/logging.h index 5d716a1448..9433babef5 100644 --- a/base/logging.h +++ b/base/logging.h @@ -22,7 +22,7 @@ inline void Crash() { __asm { int 3 }; } #else -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) #undef Crash inline void Crash() { diff --git a/gfx/gl_debug_log.cpp b/gfx/gl_debug_log.cpp index 9d5249ab74..324bf7e497 100644 --- a/gfx/gl_debug_log.cpp +++ b/gfx/gl_debug_log.cpp @@ -1,4 +1,4 @@ -#if defined(ANDROID) +#if defined(ANDROID) || defined(BLACKBERRY) #include #include typedef char GLchar; @@ -20,7 +20,7 @@ void glCheckzor(const char *file, int line) { } } -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) #if 0 void log_callback(GLenum source, GLenum type, GLuint id, @@ -56,7 +56,7 @@ void log_callback(GLenum source, GLenum type, #endif void gl_log_enable() { -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) #if 0 glEnable(DEBUG_OUTPUT_SYNCHRONOUS_ARB); // TODO: Look into disabling, for more perf glDebugMessageCallback(&log_callback, 0); diff --git a/gfx/gl_debug_log.h b/gfx/gl_debug_log.h index f6cc7f2f4e..cb2cd12f7e 100644 --- a/gfx/gl_debug_log.h +++ b/gfx/gl_debug_log.h @@ -6,7 +6,7 @@ void gl_log_enable(); -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) //#define DEBUG_OPENGL #endif diff --git a/gfx/texture.cpp b/gfx/texture.cpp index 38f7016127..36733be002 100644 --- a/gfx/texture.cpp +++ b/gfx/texture.cpp @@ -1,4 +1,4 @@ -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) #include #include #else @@ -14,7 +14,7 @@ #include #include -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) #include "image/png_load.h" #include "ext/etcpack/etcdec.h" #endif @@ -76,7 +76,7 @@ bool Texture::Load(const char *filename) { glBindTexture(GL_TEXTURE_2D, id_); if (bpp == 1) { -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, w, h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); #else glTexImage2D(GL_TEXTURE_2D, 0, 1, w, h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); @@ -118,7 +118,7 @@ bool Texture::Load(const char *filename) { const char *name = fn; if (zim && 0==memcmp(name, "Media/textures/", strlen("Media/textures"))) name += strlen("Media/textures/"); len = strlen(name); -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) if (!strcmp("png", &name[len-3]) || !strcmp("PNG", &name[len-3])) { if (!LoadPNG(fn)) { @@ -141,7 +141,7 @@ bool Texture::Load(const char *filename) { return false; } -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) bool Texture::LoadPNG(const char *filename) { unsigned char *image_data; if (1 != pngLoad(filename, &width_, &height_, &image_data, false)) { @@ -184,7 +184,7 @@ bool Texture::LoadXOR() { } -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) // Allocates using new[], doesn't free. uint8_t *ETC1ToRGBA(uint8_t *etc1, int width, int height) { @@ -244,7 +244,7 @@ bool Texture::LoadZIM(const char *filename) { int data_h = height[l]; if (data_w < 4) data_w = 4; if (data_h < 4) data_h = 4; -#if defined(ANDROID) +#if defined(ANDROID) || defined(BLACKBERRY) int compressed_image_bytes = data_w * data_h / 2; glCompressedTexImage2D(GL_TEXTURE_2D, l, GL_ETC1_RGB8_OES, width[l], height[l], 0, compressed_image_bytes, image_data[l]); GL_CHECK(); @@ -255,7 +255,7 @@ bool Texture::LoadZIM(const char *filename) { #endif } GL_CHECK(); -#if !defined(ANDROID) +#if !defined(ANDROID) && !defined(BLACKBERRY) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, num_levels - 2); #endif } else { diff --git a/gfx/texture.h b/gfx/texture.h index 3c3f953e21..1823c49494 100644 --- a/gfx/texture.h +++ b/gfx/texture.h @@ -14,7 +14,7 @@ public: ~Texture(); bool LoadZIM(const char *filename); -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) bool LoadPNG(const char *filename); #endif bool LoadXOR(); // Loads a placeholder texture. diff --git a/gfx/texture_dx11.cpp b/gfx/texture_dx11.cpp index 7d72849ca6..a6ef42a750 100644 --- a/gfx/texture_dx11.cpp +++ b/gfx/texture_dx11.cpp @@ -10,7 +10,7 @@ #include #include -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) #include "image/png_load.h" #include "ext/etcpack/etcdec.h" #endif @@ -98,7 +98,7 @@ bool Texture::Load(const char *filename) { const char *name = fn; if (zim && 0 == memcmp(name, "Media/textures/", strlen("Media/textures"))) name += strlen("Media/textures/"); len = strlen(name); - #ifndef ANDROID + #if !defined(ANDROID) && !defined(BLACKBERRY) if (!strcmp("png", &name[len-3]) || !strcmp("PNG", &name[len-3])) { if (!LoadPNG(fn)) { @@ -122,7 +122,7 @@ bool Texture::Load(const char *filename) { } #ifndef METRO -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) bool Texture::LoadPNG(const char *filename) { unsigned char *image_data; if (1 != pngLoad(filename, &width_, &height_, &image_data, false)) { @@ -176,7 +176,7 @@ bool Texture::LoadXOR() { } -#ifndef ANDROID +#if !defined(ANDROID) && !defined(BLACKBERRY) // Allocates using new[], doesn't free. uint8_t *ETC1ToRGBA(uint8_t *etc1, int width, int height) { @@ -236,7 +236,7 @@ bool Texture::LoadZIM(const char *filename) { int data_h = height[l]; if (data_w < 4) data_w = 4; if (data_h < 4) data_h = 4; -#if defined(ANDROID) +#if defined(ANDROID) || defined(BLACKBERRY) int compressed_image_bytes = data_w * data_h / 2; glCompressedTexImage2D(GL_TEXTURE_2D, l, GL_ETC1_RGB8_OES, width[l], height[l], 0, compressed_image_bytes, image_data[l]); GL_CHECK(); @@ -247,7 +247,7 @@ bool Texture::LoadZIM(const char *filename) { #endif } GL_CHECK(); -#if !defined(ANDROID) +#if !defined(ANDROID) && !defined(BLACKBERRY) //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, num_levels - 2); #endif } else { diff --git a/gfx_es2/draw_buffer.cpp b/gfx_es2/draw_buffer.cpp index 9c3069bff5..c4452d0bfe 100644 --- a/gfx_es2/draw_buffer.cpp +++ b/gfx_es2/draw_buffer.cpp @@ -1,4 +1,4 @@ -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) #include #include #else diff --git a/gfx_es2/fbo.cpp b/gfx_es2/fbo.cpp index a64f56bb99..571db9c318 100644 --- a/gfx_es2/fbo.cpp +++ b/gfx_es2/fbo.cpp @@ -1,4 +1,4 @@ -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) #include #include #else @@ -10,6 +10,20 @@ #endif #endif +// Required for Blackberry10 GLES2 implementation +#ifndef GL_RGBA8 +#define GL_RGBA8 GL_RGBA +#endif +#ifndef GL_READ_FRAMEBUFFER +#define GL_READ_FRAMEBUFFER GL_FRAMEBUFFER +#endif +#ifndef GL_DRAW_FRAMEBUFFER +#define GL_DRAW_FRAMEBUFFER GL_FRAMEBUFFER +#endif +#ifndef GL_DEPTH_COMPONENT24 +#define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES +#endif + #include "base/logging.h" #include "gfx_es2/fbo.h" @@ -45,6 +59,7 @@ FBO *fbo_create(int width, int height, int num_color_textures, bool z_stencil) { glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo->handle); glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fbo->color_texture, 0); glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, fbo->z_stencil_buffer); +#ifndef BLACKBERRY GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); switch(status) { case GL_FRAMEBUFFER_COMPLETE_EXT: @@ -57,6 +72,7 @@ FBO *fbo_create(int width, int height, int num_color_textures, bool z_stencil) { FLOG("Other framebuffer error: %i", status); break; } +#endif // Unbind state we don't need glBindRenderbuffer(GL_RENDERBUFFER, 0); glBindTexture(GL_TEXTURE_2D, 0); diff --git a/gfx_es2/glsl_program.cpp b/gfx_es2/glsl_program.cpp index f11f264171..2f7ecf8b1f 100644 --- a/gfx_es2/glsl_program.cpp +++ b/gfx_es2/glsl_program.cpp @@ -1,4 +1,4 @@ -#if defined(ANDROID) +#if defined(ANDROID) || defined(BLACKBERRY) #include #include typedef char GLchar; @@ -37,7 +37,7 @@ bool CompileShader(const char *source, GLuint shader, const char *filename) { ELOG("Error in shader compilation of %s!\n", filename); ELOG("Info log: %s\n", infoLog); ELOG("Shader source:\n%s\n", (const char *)source); -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) exit(1); #endif return false; diff --git a/gfx_es2/glsl_program.h b/gfx_es2/glsl_program.h index c5acbfff7f..18fa819fc8 100644 --- a/gfx_es2/glsl_program.h +++ b/gfx_es2/glsl_program.h @@ -4,7 +4,7 @@ #ifndef _RENDER_UTIL #define _RENDER_UTIL -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) #include #include #else diff --git a/math/math_util.cpp b/math/math_util.cpp index 2eebdf6036..70ecede4da 100644 --- a/math/math_util.cpp +++ b/math/math_util.cpp @@ -17,7 +17,7 @@ unsigned int GenerateRandomNumber() { #include -#ifdef ANDROID +#if defined(ANDROID) || defined(BLACKBERRY) void EnableFZ() {