From c68c346d2bf899694ee756c92a3ab6c8f63effd6 Mon Sep 17 00:00:00 2001 From: mzernova Date: Tue, 10 Dec 2019 14:39:56 +0300 Subject: [PATCH] 0030600: Visualization, TKOpenGl - include GLES3/gl3.h instead of GLES2/gl2.h Changed GLES2/gl2.h to GLES3/gl3.h. OpenGl_Window_1.mm has been updated, now it is trying to create kEAGLRenderingAPIOpenGLES3 before trying to create kEAGLRenderingAPIOpenGLES2. --- dox/dev_guides/building/android/android.md | 2 +- src/OpenGl/OpenGl_GlFunctions.hxx | 129 +++++---------------- src/OpenGl/OpenGl_HaltonSampler.hxx | 4 +- src/OpenGl/OpenGl_TextureFormat.hxx | 3 - src/OpenGl/OpenGl_Window_1.mm | 14 ++- 5 files changed, 40 insertions(+), 112 deletions(-) diff --git a/dox/dev_guides/building/android/android.md b/dox/dev_guides/building/android/android.md index b74aedc629..6df5af2c45 100644 --- a/dox/dev_guides/building/android/android.md +++ b/dox/dev_guides/building/android/android.md @@ -64,7 +64,7 @@ Then makefiles will appear in the build folder (e.g. D:/occt/build-android < Alternatively one may specify the values without a toolchain file: -> cmake -G "MinGW Makefiles" -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=D:/DevTools/android-ndk-r13b -DCMAKE_ANDROID_STL_TYPE=gnustl_shared -DCMAKE_SYSTEM_VERSION=15 -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_MAKE_PROGRAM=D:/DevTools/MinGW/bin/mingw32-make.exe -D3RDPARTY_DIR=D:/occt-3rdparty D:/occt +> cmake -G "MinGW Makefiles" -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=D:/DevTools/android-ndk-r13b -DCMAKE_ANDROID_STL_TYPE=gnustl_shared -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_MAKE_PROGRAM=D:/DevTools/MinGW/bin/mingw32-make.exe -D3RDPARTY_DIR=D:/occt-3rdparty D:/occt @figure{/dev_guides/building/android/images/android_image006.png} diff --git a/src/OpenGl/OpenGl_GlFunctions.hxx b/src/OpenGl/OpenGl_GlFunctions.hxx index dee15c7133..6cc1c66a29 100644 --- a/src/OpenGl/OpenGl_GlFunctions.hxx +++ b/src/OpenGl/OpenGl_GlFunctions.hxx @@ -49,7 +49,7 @@ // macOS 10.4 deprecated OpenGL framework - suppress useless warnings #define GL_SILENCE_DEPRECATION #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE - #include + #include #else #include #endif @@ -60,8 +60,7 @@ // however OCCT is expected to be linked against libGLESv2 #define GL_GLEXT_PROTOTYPES #endif - #include - //#include + #include #else #include #endif @@ -70,113 +69,44 @@ // define items to unify code paths with desktop OpenGL typedef double GLdouble; typedef double GLclampd; - typedef uint64_t GLuint64; - #define GL_NONE 0 - - // OpenGL ES 3.0+ or GL_OES_element_index_uint extension - #define GL_UNSIGNED_INT 0x1405 // GL_EXT_sRGB_write_control extension for OpenGL ES // adds GL_FRAMEBUFFER_SRGB_EXT flag as on desktop OpenGL #define GL_FRAMEBUFFER_SRGB 0x8DB9 - #define GL_TEXTURE_BASE_LEVEL 0x813C - #define GL_TEXTURE_MAX_LEVEL 0x813D - // OpenGL ES 3.1+ #define GL_TEXTURE_2D_MULTISAMPLE 0x9100 - #define GL_MAX_SAMPLES 0x8D57 // OpenGL ES 3.2+ or GL_EXT_texture_buffer for OpenGL ES 3.1+ #define GL_TEXTURE_BUFFER 0x8C2A - // in core since OpenGL ES 3.0, extension GL_EXT_texture_rg - #define GL_RED 0x1903 - #define GL_R8 0x8229 // in core since OpenGL ES 3.0, extension GL_OES_rgb8_rgba8 - #define GL_RGB8 0x8051 - #define GL_RGBA8 0x8058 - #define GL_LUMINANCE8 0x8040 + #define GL_LUMINANCE8 0x8040 // GL_EXT_texture_format_BGRA8888 - #define GL_BGRA_EXT 0x80E1 // same as GL_BGRA on desktop - - #define GL_SRGB 0x8C40 - #define GL_SRGB8 0x8C41 - #define GL_SRGB8_ALPHA8 0x8C43 - - #define GL_R16 0x822A - #define GL_R16F 0x822D - #define GL_R32F 0x822E - #define GL_RGB16F 0x881B - #define GL_RGBA32F 0x8814 - #define GL_RGB32F 0x8815 - #define GL_RGBA16F 0x881A - #define GL_RGB16F 0x881B - #define GL_RGB4 0x804F - #define GL_RGB5 0x8050 - #define GL_RGB8 0x8051 - #define GL_RGB10 0x8052 - #define GL_RGB12 0x8053 - #define GL_RGB16 0x8054 - #define GL_RGBA8 0x8058 - #define GL_RGB10_A2 0x8059 - #define GL_RGBA12 0x805A - #define GL_RGBA16 0x805B - #define GL_ALPHA8 0x803C - #define GL_ALPHA16 0x803E - - #define GL_RG 0x8227 - #define GL_RG8 0x822B - #define GL_RG16 0x822C - #define GL_RG16F 0x822F - #define GL_RG32F 0x8230 - #define GL_RG_INTEGER 0x8228 - #define GL_RED_INTEGER 0x8D94 - - #define GL_R8I 0x8231 - #define GL_R8UI 0x8232 - #define GL_R16I 0x8233 - #define GL_R16UI 0x8234 - #define GL_R32I 0x8235 - #define GL_R32UI 0x8236 - #define GL_RG8I 0x8237 - #define GL_RG8UI 0x8238 - #define GL_RG16I 0x8239 - #define GL_RG16UI 0x823A - #define GL_RG32I 0x823B - #define GL_RG32UI 0x823C - #define GL_RG8_SNORM 0x8F95 - #define GL_RGBA32UI 0x8D70 - #define GL_RGB32UI 0x8D71 - #define GL_RGBA16UI 0x8D76 - #define GL_RGB16UI 0x8D77 - #define GL_RGBA8UI 0x8D7C - #define GL_RGB8UI 0x8D7D - #define GL_RGBA32I 0x8D82 - #define GL_RGB32I 0x8D83 - #define GL_RGBA16I 0x8D88 - #define GL_RGB16I 0x8D89 - #define GL_RGBA8I 0x8D8E - #define GL_RGB8I 0x8D8F - - // GL_OES_packed_depth_stencil - #define GL_DEPTH_STENCIL 0x84F9 - #define GL_UNSIGNED_INT_24_8 0x84FA - #define GL_DEPTH24_STENCIL8 0x88F0 - #define GL_DEPTH_STENCIL_ATTACHMENT 0x821A - - // OpenGL ES 3.0+ - #define GL_DEPTH_COMPONENT24 0x81A6 - #define GL_DEPTH_COMPONENT32F 0x8CAC - #define GL_DEPTH32F_STENCIL8 0x8CAD - #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD - - #define GL_READ_FRAMEBUFFER 0x8CA8 - #define GL_DRAW_FRAMEBUFFER 0x8CA9 - #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 - - #define GL_TEXTURE_3D 0x806F - #define GL_TEXTURE_WRAP_R 0x8072 + #define GL_BGRA_EXT 0x80E1 // same as GL_BGRA on desktop + + #define GL_R16 0x822A + #define GL_RGB4 0x804F + #define GL_RGB5 0x8050 + #define GL_RGB10 0x8052 + #define GL_RGB12 0x8053 + #define GL_RGB16 0x8054 + #define GL_RGB10_A2 0x8059 + #define GL_RGBA12 0x805A + #define GL_RGBA16 0x805B + #define GL_ALPHA8 0x803C + #define GL_ALPHA16 0x803E + #define GL_RG16 0x822C + + #define GL_R16_SNORM 0x8F98 + #define GL_RG16_SNORM 0x8F99 + #define GL_RGB16_SNORM 0x8F9A + #define GL_RGBA16_SNORM 0x8F9B + + #define GL_RED_SNORM 0x8F90 + #define GL_RG_SNORM 0x8F91 + #define GL_RGB_SNORM 0x8F92 + #define GL_RGBA_SNORM 0x8F93 // GL_EXT_texture_filter_anisotropic #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE @@ -207,12 +137,7 @@ #define GL_DEBUG_SEVERITY_MEDIUM 0x9147 #define GL_DEBUG_SEVERITY_LOW 0x9148 - // GL_ARB_draw_buffers (GL_EXT_draw_buffers) extension - #define GL_MAX_COLOR_ATTACHMENTS 0x8CDF - #define GL_MAX_DRAW_BUFFERS 0x8824 - // OpenGL ES 3.0+ or OES_texture_half_float - #define GL_HALF_FLOAT 0x140B #define GL_HALF_FLOAT_OES 0x8D61 // OpenGL ES 3.1+ diff --git a/src/OpenGl/OpenGl_HaltonSampler.hxx b/src/OpenGl/OpenGl_HaltonSampler.hxx index 63f8a4c02f..07758430cd 100644 --- a/src/OpenGl/OpenGl_HaltonSampler.hxx +++ b/src/OpenGl/OpenGl_HaltonSampler.hxx @@ -104,7 +104,7 @@ private: return (myPerm3[theIndex % 243u] * 14348907u + myPerm3[(theIndex / 243u) % 243u] * 59049u + myPerm3[(theIndex / 59049u) % 243u] * 243u - + myPerm3[(theIndex / 14348907u) % 243u]) * float(0.999999999999999f / 3486784401u); // Results in [0,1). + + myPerm3[(theIndex / 14348907u) % 243u]) * float(0.999999999999999 / 3486784401u); // Results in [0,1). } float halton5 (unsigned theIndex) const @@ -112,7 +112,7 @@ private: return (myPerm5[theIndex % 125u] * 1953125u + myPerm5[(theIndex / 125u) % 125u] * 15625u + myPerm5[(theIndex / 15625u) % 125u] * 125u - + myPerm5[(theIndex / 1953125u) % 125u]) * float(0.999999999999999f / 244140625u); // Results in [0,1). + + myPerm5[(theIndex / 1953125u) % 125u]) * float(0.999999999999999 / 244140625u); // Results in [0,1). } private: diff --git a/src/OpenGl/OpenGl_TextureFormat.hxx b/src/OpenGl/OpenGl_TextureFormat.hxx index 7bd95b6a8c..244f641fb7 100644 --- a/src/OpenGl/OpenGl_TextureFormat.hxx +++ b/src/OpenGl/OpenGl_TextureFormat.hxx @@ -182,8 +182,6 @@ template<> struct OpenGl_TextureFormatSelector } }; -//! Only unsigned formats are available in OpenGL ES 2.0 -#if !defined(GL_ES_VERSION_2_0) //! Specialization for signed byte. template<> struct OpenGl_TextureFormatSelector { @@ -234,7 +232,6 @@ template<> struct OpenGl_TextureFormatSelector } } }; -#endif // ======================================================================= // function : Create diff --git a/src/OpenGl/OpenGl_Window_1.mm b/src/OpenGl/OpenGl_Window_1.mm index d9e0afad5d..f3a86ef32e 100644 --- a/src/OpenGl/OpenGl_Window_1.mm +++ b/src/OpenGl/OpenGl_Window_1.mm @@ -91,13 +91,19 @@ OpenGl_Window::OpenGl_Window (const Handle(OpenGl_GraphicDriver)& theDriver, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, NULL]; - aGLContext = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; + aGLContext = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES3]; if (aGLContext == NULL || ![EAGLContext setCurrentContext: aGLContext]) { - TCollection_AsciiString aMsg ("OpenGl_Window::CreateWindow: EAGLContext creation failed"); - throw Aspect_GraphicDeviceDefinitionError(aMsg.ToCString()); - return; + aGLContext = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; + + if (aGLContext == NULL + || ![EAGLContext setCurrentContext: aGLContext]) + { + TCollection_AsciiString aMsg ("OpenGl_Window::CreateWindow: EAGLContext creation failed"); + throw Aspect_GraphicDeviceDefinitionError(aMsg.ToCString()); + return; + } } myGlContext->Init (aGLContext, Standard_False); -- 2.20.1