From 8a0144ae8d5b933f7d9d3bc1052ac215bc4d108c Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 9 Jun 2011 16:19:22 +0000 Subject: [PATCH] Add driver attrributes for ogles2. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@3839 dfc29bdd-3216-0410-991c-e03cc46cb475 --- source/Irrlicht/COGLES2Driver.cpp | 23 +- source/Irrlicht/COGLES2ExtensionHandler.cpp | 28 +- source/Irrlicht/COGLES2ExtensionHandler.h | 5 +- source/Irrlicht/COGLESDriver.cpp | 4 - source/Irrlicht/COGLESExtensionHandler.cpp | 544 ++++++++++---------- 5 files changed, 305 insertions(+), 299 deletions(-) diff --git a/source/Irrlicht/COGLES2Driver.cpp b/source/Irrlicht/COGLES2Driver.cpp index abacc9f0..de8ceeae 100644 --- a/source/Irrlicht/COGLES2Driver.cpp +++ b/source/Irrlicht/COGLES2Driver.cpp @@ -280,21 +280,32 @@ namespace video StencilBuffer = stencilBuffer; + DriverAttributes->setAttribute("MaxTextures", MaxTextureUnits); + DriverAttributes->setAttribute("MaxSupportedTextures", MaxSupportedTextures); + DriverAttributes->setAttribute("MaxLights", MaxLights); + DriverAttributes->setAttribute("MaxAnisotropy", MaxAnisotropy); + DriverAttributes->setAttribute("MaxUserClipPlanes", MaxUserClipPlanes); +// DriverAttributes->setAttribute("MaxAuxBuffers", MaxAuxBuffers); +// DriverAttributes->setAttribute("MaxMultipleRenderTargets", MaxMultipleRenderTargets); + DriverAttributes->setAttribute("MaxIndices", (s32)MaxIndices); + DriverAttributes->setAttribute("MaxTextureSize", (s32)MaxTextureSize); + DriverAttributes->setAttribute("MaxTextureLODBias", MaxTextureLODBias); + DriverAttributes->setAttribute("Version", Version); + DriverAttributes->setAttribute("AntiAlias", AntiAlias); + FixedPipeline = new COGLES2FixedPipelineShader(this, FileSystem); FixedPipeline->useProgram(); //For setting the default uniforms (Alpha) TwoDRenderer = new COGLES2Renderer2d(this, FileSystem); - glPixelStorei(GL_PACK_ALIGNMENT, 2); + glPixelStorei(GL_PACK_ALIGNMENT, 1); // Reset The Current Viewport glViewport(0, 0, screenSize.Width, screenSize.Height); + UserClipPlane.reallocate(0); + setAmbientLight(SColorf(0.0f, 0.0f, 0.0f, 0.0f)); -#ifdef GL_separate_specular_color - if (FeatureAvailable[IRR_separate_specular_color]) - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); -#endif glClearDepthf(1.0f); //TODO : OpenGL ES 2.0 Port : GL_PERSPECTIVE_CORRECTION_HINT @@ -303,8 +314,6 @@ namespace video glDepthFunc(GL_LEQUAL); glFrontFace(GL_CW); - UserClipPlane.reallocate(0); - // create material renderers createMaterialRenderers(); diff --git a/source/Irrlicht/COGLES2ExtensionHandler.cpp b/source/Irrlicht/COGLES2ExtensionHandler.cpp index 4405979f..c732e02e 100644 --- a/source/Irrlicht/COGLES2ExtensionHandler.cpp +++ b/source/Irrlicht/COGLES2ExtensionHandler.cpp @@ -118,8 +118,9 @@ namespace video COGLES2ExtensionHandler::COGLES2ExtensionHandler() : - EGLVersion(0), Version(0), MaxTextureUnits(0), MaxLights(0), MaxAnisotropy(1), - MaxUserClipPlanes(1), MaxTextureSize(1), CommonProfile(false), MultiTextureExtension(false), + EGLVersion(0), Version(0), MaxTextureUnits(0), MaxSupportedTextures(0), + MaxLights(0), MaxAnisotropy(1), MaxUserClipPlanes(6), MaxTextureSize(1), + MaxIndices(0xffff), MaxTextureLODBias(0.f), MultiTextureExtension(false), MultiSamplingExtension(false), StencilBuffer(false) { for (u32 i=0; i(eglQueryString(display, EGL_VERSION))); EGLVersion = static_cast(core::floor32(egl_ver) * 100 + core::round32(core::fract(egl_ver) * 10.0f)); core::stringc eglExtensions = eglQueryString(display, EGL_EXTENSIONS); os::Printer::log(eglExtensions.c_str()); -#endif + const core::stringc stringVer(glGetString(GL_VERSION)); - //CommonProfile = (stringVer[11] == 'M'); - const f32 ogl_ver = core::fast_atof(stringVer.c_str() + 13); + const f32 ogl_ver = core::fast_atof(stringVer.c_str() + 10); Version = static_cast(core::floor32(ogl_ver) * 100 + core::round32(core::fract(ogl_ver) * 10.0f)); core::stringc extensions = glGetString(GL_EXTENSIONS); os::Printer::log(extensions.c_str()); + // typo in the simulator (note the postfixed s) if (extensions.find("GL_IMG_user_clip_planes")) FeatureAvailable[IRR_IMG_user_clip_plane] = true; @@ -184,11 +184,11 @@ namespace video GLint val = 0; glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &val); - MaxTextureUnits = core::min_(MATERIAL_MAX_TEXTURES, static_cast(val)); + MaxSupportedTextures = core::min_(MATERIAL_MAX_TEXTURES, static_cast(val)); MultiTextureExtension = true; //TODO : OpenGL ES 2.0 Port //glGetIntegerv(GL_MAX_LIGHTS, &val); - MaxLights = static_cast(val); + MaxLights = 8; #ifdef GL_EXT_texture_filter_anisotropic if (FeatureAvailable[IRR_EXT_texture_filter_anisotropic]) { @@ -198,13 +198,11 @@ namespace video #endif glGetIntegerv(GL_MAX_TEXTURE_SIZE, &val); MaxTextureSize=static_cast(val); - if ((Version > 100) || FeatureAvailable[IRR_IMG_user_clip_plane] ) - { - //TODO : OpenGL ES 2.0 Port - //glGetIntegerv(GL_MAX_CLIP_PLANES, &val); - val = 6; - MaxUserClipPlanes = static_cast(val); - } +#ifdef GL_EXT_texture_lod_bias + if (FeatureAvailable[IRR_EXT_texture_lod_bias]) + glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &MaxTextureLODBias); +#endif + MaxTextureUnits = core::min_(MaxSupportedTextures, static_cast(MATERIAL_MAX_TEXTURES)); } } // end namespace video diff --git a/source/Irrlicht/COGLES2ExtensionHandler.h b/source/Irrlicht/COGLES2ExtensionHandler.h index ff3f89c7..71e40779 100644 --- a/source/Irrlicht/COGLES2ExtensionHandler.h +++ b/source/Irrlicht/COGLES2ExtensionHandler.h @@ -185,11 +185,14 @@ namespace video u16 EGLVersion; u16 Version; u8 MaxTextureUnits; + u8 MaxSupportedTextures; u8 MaxLights; u8 MaxAnisotropy; u8 MaxUserClipPlanes; u32 MaxTextureSize; - bool CommonProfile; + u32 MaxIndices; + f32 MaxTextureLODBias; + bool MultiTextureExtension; bool MultiSamplingExtension; bool StencilBuffer; diff --git a/source/Irrlicht/COGLESDriver.cpp b/source/Irrlicht/COGLESDriver.cpp index bd3fb98f..88e0f953 100644 --- a/source/Irrlicht/COGLESDriver.cpp +++ b/source/Irrlicht/COGLESDriver.cpp @@ -332,10 +332,6 @@ bool COGLES1Driver::genericDriverInit(const core::dimension2d& screenSize, setTransform(static_cast(i), core::IdentityMatrix); setAmbientLight(SColorf(0.0f,0.0f,0.0f,0.0f)); -#ifdef GL_EXT_separate_specular_color - if (FeatureAvailable[IRR_EXT_separate_specular_color]) - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); -#endif // TODO ogl-es // glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); diff --git a/source/Irrlicht/COGLESExtensionHandler.cpp b/source/Irrlicht/COGLESExtensionHandler.cpp index cda8f55c..ed5e95d4 100644 --- a/source/Irrlicht/COGLESExtensionHandler.cpp +++ b/source/Irrlicht/COGLESExtensionHandler.cpp @@ -1,273 +1,273 @@ -// Copyright (C) 2008 Christian Stehno -// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in Irrlicht.h - -#include "IrrCompileConfig.h" - -#ifdef _IRR_COMPILE_WITH_OGLES1_ - -#include "COGLESExtensionHandler.h" -#include "COGLESDriver.h" -#include "fast_atof.h" -#include "irrString.h" - -namespace irr -{ -namespace video -{ - - static const char* const OGLESFeatureStrings[] = - { - "GL_AMD_compressed_3DC_texture", - "GL_AMD_compressed_ATC_texture", - "GL_AMD_performance_monitor", - "GL_AMD_program_binary_Z400", - "GL_ANGLE_framebuffer_blit", - "GL_ANGLE_framebuffer_multisample", - "GL_APPLE_framebuffer_multisample", - "GL_APPLE_rgb_422", - "GL_APPLE_texture_2D_limited_npot", - "GL_APPLE_texture_format_BGRA8888", - "GL_APPLE_texture_max_level", - "GL_ARB_texture_env_combine", - "GL_ARB_texture_env_dot3", - "GL_ARM_mali_shader_binary", - "GL_ARM_rgba8", - "GL_DMP_shader_binary", - "GL_EXT_blend_minmax", - "GL_EXT_discard_framebuffer", - "GL_EXT_frag_depth", - "GL_EXT_multi_draw_arrays", - "GL_EXT_read_format_bgra", - "GL_EXT_shader_texture_lod", - "GL_EXT_texture_compression_dxt1", - "GL_EXT_texture_filter_anisotropic", - "GL_EXT_texture_format_BGRA8888", - "GL_EXT_texture_lod_bias", - "GL_EXT_texture_type_2_10_10_10_REV", - "GL_IMG_multisampled_render_to_texture", - "GL_IMG_program_binary", - "GL_IMG_read_format", - "GL_IMG_shader_binary", - "GL_IMG_texture_compression_pvrtc", - "GL_IMG_texture_env_enhanced_fixed_function", - "GL_IMG_texture_format_BGRA8888", - "GL_IMG_user_clip_plane", - "GL_IMG_vertex_program", - "GL_NV_coverage_sample", - "GL_NV_depth_nonlinear", - "GL_NV_fence", - "GL_OES_blend_equation_separate", - "GL_OES_blend_func_separate", - "GL_OES_blend_subtract", - "GL_OES_byte_coordinates", - "GL_OES_compressed_ETC1_RGB8_texture", - "GL_OES_compressed_paletted_texture", - "GL_OES_depth24", - "GL_OES_depth32", - "GL_OES_depth_texture", - "GL_OES_draw_texture", - "GL_OES_EGL_image", - "GL_OES_EGL_image_external", - "GL_OES_EGL_sync", - "GL_OES_element_index_uint", - "GL_OES_extended_matrix_palette", - "GL_OES_fbo_render_mipmap", - "GL_OES_fixed_point", - "GL_OES_fragment_precision_high", - "GL_OES_framebuffer_object", - "GL_OES_get_program_binary", - "GL_OES_mapbuffer", - "GL_OES_matrix_get", - "GL_OES_matrix_palette", - "GL_OES_packed_depth_stencil", - "GL_OES_point_size_array", - "GL_OES_point_sprite", - "GL_OES_query_matrix", - "GL_OES_read_format", - "GL_OES_rgb8_rgba8", - "GL_OES_single_precision", - "GL_OES_standard_derivatives", - "GL_OES_stencil1", - "GL_OES_stencil4", - "GL_OES_stencil8", - "GL_OES_stencil_wrap", - "GL_OES_texture_3D", - "GL_OES_texture_cube_map", - "GL_OES_texture_env_crossbar", - "GL_OES_texture_float", - "GL_OES_texture_float_linear", - "GL_OES_texture_half_float", - "GL_OES_texture_half_float_linear", - "GL_OES_texture_mirrored_repeat", - "GL_OES_texture_npot", - "GL_OES_vertex_array_object", - "GL_OES_vertex_half_float", - "GL_OES_vertex_type_10_10_10_2", - "GL_QCOM_driver_control", - "GL_QCOM_extended_get", - "GL_QCOM_extended_get2", - "GL_QCOM_performance_monitor_global_mode", - "GL_QCOM_tiled_rendering", - "GL_QCOM_writeonly_rendering", - "GL_SUN_multi_draw_arrays", - "GL_VIV_shader_binary" - }; - - -COGLES1ExtensionHandler::COGLES1ExtensionHandler() : -#if defined(_IRR_OPENGL_USE_EXTPOINTER_) - pGlDrawTexiOES(0), pGlDrawTexfOES(0), - pGlDrawTexivOES(0), pGlDrawTexfvOES(0), - pGlBindRenderbufferOES(0), pGlDeleteRenderbuffersOES(0), - pGlGenRenderbuffersOES(0), pGlRenderbufferStorageOES(0), - pGlBindFramebufferOES(0), pGlDeleteFramebuffersOES(0), - pGlGenFramebuffersOES(0), pGlCheckFramebufferStatusOES(0), - pGlFramebufferRenderbufferOES(0), pGlFramebufferTexture2DOES(0), - pGlGenerateMipMapOES(0), -#endif - EGLVersion(0), Version(0), MaxTextureUnits(0), MaxLights(0), - MaxAnisotropy(1), MaxUserClipPlanes(0), MaxAuxBuffers(0), - MaxMultipleRenderTargets(1), MaxIndices(65535), MaxTextureSize(1), - MaxTextureLODBias(0.f), CommonProfile(false), - MultiTextureExtension(false), MultiSamplingExtension(false), - StencilBuffer(false) -{ - for (u32 i=0; i(eglQueryString(display, EGL_VERSION))); - EGLVersion = static_cast(core::floor32(egl_ver)*100+core::round32(core::fract(egl_ver)*10.0f)); - core::stringc eglExtensions = eglQueryString(display, EGL_EXTENSIONS); - os::Printer::log(eglExtensions.c_str()); -#endif - const core::stringc stringVer(glGetString(GL_VERSION)); - CommonProfile = (stringVer[11]=='M'); - const f32 ogl_ver = core::fast_atof(stringVer.c_str()+13); - Version = static_cast(core::floor32(ogl_ver)*100+core::round32(core::fract(ogl_ver)*10.0f)); - core::stringc extensions = glGetString(GL_EXTENSIONS); - os::Printer::log(extensions.c_str()); - - // typo in the simulator (note the postfixed s) - if (extensions.find("GL_IMG_user_clip_planes")) - FeatureAvailable[IRR_IMG_user_clip_plane] = true; - - { - const u32 size = extensions.size()+1; - c8* str = new c8[size]; - strncpy(str, extensions.c_str(), extensions.size()); - str[extensions.size()]=' '; - c8* p = str; - - for (u32 i=0; i(val)); - MultiTextureExtension = true; - glGetIntegerv(GL_MAX_LIGHTS, &val); - MaxLights = static_cast(val); -#ifdef GL_EXT_texture_filter_anisotropic - if (FeatureAvailable[IRR_EXT_texture_filter_anisotropic]) - { - glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &val); - MaxAnisotropy = static_cast(val); - } -#endif -#ifdef GL_MAX_ELEMENTS_INDICES - glGetIntegerv(GL_MAX_ELEMENTS_INDICES, &val); - MaxIndices=val; -#endif - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &val); - MaxTextureSize=static_cast(val); -#ifdef GL_EXT_texture_lod_bias - if (FeatureAvailable[IRR_EXT_texture_lod_bias]) - glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &MaxTextureLODBias); -#endif - if ((Version>100) || FeatureAvailable[IRR_IMG_user_clip_plane]) - { - glGetIntegerv(GL_MAX_CLIP_PLANES, &val); - MaxUserClipPlanes = static_cast(val); - } - glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine); - glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint); - glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, DimSmoothedLine); - glGetFloatv(GL_SMOOTH_POINT_SIZE_RANGE, DimSmoothedPoint); - +// Copyright (C) 2008 Christian Stehno +// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in Irrlicht.h + +#include "IrrCompileConfig.h" + +#ifdef _IRR_COMPILE_WITH_OGLES1_ + +#include "COGLESExtensionHandler.h" +#include "COGLESDriver.h" +#include "fast_atof.h" +#include "irrString.h" + +namespace irr +{ +namespace video +{ + + static const char* const OGLESFeatureStrings[] = + { + "GL_AMD_compressed_3DC_texture", + "GL_AMD_compressed_ATC_texture", + "GL_AMD_performance_monitor", + "GL_AMD_program_binary_Z400", + "GL_ANGLE_framebuffer_blit", + "GL_ANGLE_framebuffer_multisample", + "GL_APPLE_framebuffer_multisample", + "GL_APPLE_rgb_422", + "GL_APPLE_texture_2D_limited_npot", + "GL_APPLE_texture_format_BGRA8888", + "GL_APPLE_texture_max_level", + "GL_ARB_texture_env_combine", + "GL_ARB_texture_env_dot3", + "GL_ARM_mali_shader_binary", + "GL_ARM_rgba8", + "GL_DMP_shader_binary", + "GL_EXT_blend_minmax", + "GL_EXT_discard_framebuffer", + "GL_EXT_frag_depth", + "GL_EXT_multi_draw_arrays", + "GL_EXT_read_format_bgra", + "GL_EXT_shader_texture_lod", + "GL_EXT_texture_compression_dxt1", + "GL_EXT_texture_filter_anisotropic", + "GL_EXT_texture_format_BGRA8888", + "GL_EXT_texture_lod_bias", + "GL_EXT_texture_type_2_10_10_10_REV", + "GL_IMG_multisampled_render_to_texture", + "GL_IMG_program_binary", + "GL_IMG_read_format", + "GL_IMG_shader_binary", + "GL_IMG_texture_compression_pvrtc", + "GL_IMG_texture_env_enhanced_fixed_function", + "GL_IMG_texture_format_BGRA8888", + "GL_IMG_user_clip_plane", + "GL_IMG_vertex_program", + "GL_NV_coverage_sample", + "GL_NV_depth_nonlinear", + "GL_NV_fence", + "GL_OES_blend_equation_separate", + "GL_OES_blend_func_separate", + "GL_OES_blend_subtract", + "GL_OES_byte_coordinates", + "GL_OES_compressed_ETC1_RGB8_texture", + "GL_OES_compressed_paletted_texture", + "GL_OES_depth24", + "GL_OES_depth32", + "GL_OES_depth_texture", + "GL_OES_draw_texture", + "GL_OES_EGL_image", + "GL_OES_EGL_image_external", + "GL_OES_EGL_sync", + "GL_OES_element_index_uint", + "GL_OES_extended_matrix_palette", + "GL_OES_fbo_render_mipmap", + "GL_OES_fixed_point", + "GL_OES_fragment_precision_high", + "GL_OES_framebuffer_object", + "GL_OES_get_program_binary", + "GL_OES_mapbuffer", + "GL_OES_matrix_get", + "GL_OES_matrix_palette", + "GL_OES_packed_depth_stencil", + "GL_OES_point_size_array", + "GL_OES_point_sprite", + "GL_OES_query_matrix", + "GL_OES_read_format", + "GL_OES_rgb8_rgba8", + "GL_OES_single_precision", + "GL_OES_standard_derivatives", + "GL_OES_stencil1", + "GL_OES_stencil4", + "GL_OES_stencil8", + "GL_OES_stencil_wrap", + "GL_OES_texture_3D", + "GL_OES_texture_cube_map", + "GL_OES_texture_env_crossbar", + "GL_OES_texture_float", + "GL_OES_texture_float_linear", + "GL_OES_texture_half_float", + "GL_OES_texture_half_float_linear", + "GL_OES_texture_mirrored_repeat", + "GL_OES_texture_npot", + "GL_OES_vertex_array_object", + "GL_OES_vertex_half_float", + "GL_OES_vertex_type_10_10_10_2", + "GL_QCOM_driver_control", + "GL_QCOM_extended_get", + "GL_QCOM_extended_get2", + "GL_QCOM_performance_monitor_global_mode", + "GL_QCOM_tiled_rendering", + "GL_QCOM_writeonly_rendering", + "GL_SUN_multi_draw_arrays", + "GL_VIV_shader_binary" + }; + + +COGLES1ExtensionHandler::COGLES1ExtensionHandler() : +#if defined(_IRR_OPENGL_USE_EXTPOINTER_) + pGlDrawTexiOES(0), pGlDrawTexfOES(0), + pGlDrawTexivOES(0), pGlDrawTexfvOES(0), + pGlBindRenderbufferOES(0), pGlDeleteRenderbuffersOES(0), + pGlGenRenderbuffersOES(0), pGlRenderbufferStorageOES(0), + pGlBindFramebufferOES(0), pGlDeleteFramebuffersOES(0), + pGlGenFramebuffersOES(0), pGlCheckFramebufferStatusOES(0), + pGlFramebufferRenderbufferOES(0), pGlFramebufferTexture2DOES(0), + pGlGenerateMipMapOES(0), +#endif + EGLVersion(0), Version(0), MaxTextureUnits(0), MaxLights(0), + MaxAnisotropy(1), MaxUserClipPlanes(0), MaxAuxBuffers(0), + MaxMultipleRenderTargets(1), MaxIndices(65535), MaxTextureSize(1), + MaxTextureLODBias(0.f), CommonProfile(false), + MultiTextureExtension(false), MultiSamplingExtension(false), + StencilBuffer(false) +{ + for (u32 i=0; i(eglQueryString(display, EGL_VERSION))); + EGLVersion = static_cast(core::floor32(egl_ver)*100+core::round32(core::fract(egl_ver)*10.0f)); + core::stringc eglExtensions = eglQueryString(display, EGL_EXTENSIONS); + os::Printer::log(eglExtensions.c_str()); +#endif + const core::stringc stringVer(glGetString(GL_VERSION)); + CommonProfile = (stringVer[11]=='M'); + const f32 ogl_ver = core::fast_atof(stringVer.c_str()+13); + Version = static_cast(core::floor32(ogl_ver)*100+core::round32(core::fract(ogl_ver)*10.0f)); + core::stringc extensions = glGetString(GL_EXTENSIONS); + os::Printer::log(extensions.c_str()); + + // typo in the simulator (note the postfixed s) + if (extensions.find("GL_IMG_user_clip_planes")) + FeatureAvailable[IRR_IMG_user_clip_plane] = true; + + { + const u32 size = extensions.size()+1; + c8* str = new c8[size]; + strncpy(str, extensions.c_str(), extensions.size()); + str[extensions.size()]=' '; + c8* p = str; + + for (u32 i=0; i(val)); + MultiTextureExtension = true; + glGetIntegerv(GL_MAX_LIGHTS, &val); + MaxLights = static_cast(val); +#ifdef GL_EXT_texture_filter_anisotropic + if (FeatureAvailable[IRR_EXT_texture_filter_anisotropic]) + { + glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &val); + MaxAnisotropy = static_cast(val); + } +#endif +#ifdef GL_MAX_ELEMENTS_INDICES + glGetIntegerv(GL_MAX_ELEMENTS_INDICES, &val); + MaxIndices=val; +#endif + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &val); + MaxTextureSize=static_cast(val); +#ifdef GL_EXT_texture_lod_bias + if (FeatureAvailable[IRR_EXT_texture_lod_bias]) + glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &MaxTextureLODBias); +#endif + if ((Version>100) || FeatureAvailable[IRR_IMG_user_clip_plane]) + { + glGetIntegerv(GL_MAX_CLIP_PLANES, &val); + MaxUserClipPlanes = static_cast(val); + } + glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine); + glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint); + glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, DimSmoothedLine); + glGetFloatv(GL_SMOOTH_POINT_SIZE_RANGE, DimSmoothedPoint); + MaxTextureUnits = core::min_(MaxSupportedTextures, static_cast(MATERIAL_MAX_TEXTURES)); - -#if defined(_IRR_OPENGL_USE_EXTPOINTER_) - if (FeatureAvailable[IRR_OES_draw_texture]) - { - pGlDrawTexiOES = (PFNGLDRAWTEXIOES) eglGetProcAddress("glDrawTexiOES"); - pGlDrawTexfOES = (PFNGLDRAWTEXFOES) eglGetProcAddress("glDrawTexfOES"); - pGlDrawTexivOES = (PFNGLDRAWTEXIVOES) eglGetProcAddress("glDrawTexivOES"); - pGlDrawTexfvOES = (PFNGLDRAWTEXFVOES) eglGetProcAddress("glDrawTexfvOES"); - } - if (FeatureAvailable[IRR_OES_framebuffer_object]) - { - pGlBindRenderbufferOES = (PFNGLBINDRENDERBUFFEROES) eglGetProcAddress("glBindRenderbufferOES"); - pGlDeleteRenderbuffersOES = (PFNGLDELETERENDERBUFFERSOES) eglGetProcAddress("glDeletedRenderbuffersOES"); - pGlGenRenderbuffersOES = (PFNGLGENRENDERBUFFERSOES) eglGetProcAddress("glGenRenderbuffersOES"); - pGlRenderbufferStorageOES = (PFNGLRENDERBUFFERSTORAGEOES) eglGetProcAddress("glRenderbufferStorageOES"); - pGlBindFramebufferOES = (PFNGLBINDFRAMEBUFFEROES) eglGetProcAddress("glBindFramebufferOES"); - pGlDeleteFramebuffersOES = (PFNGLDELETEFRAMEBUFFERSOES) eglGetProcAddress("glDeleteFramebuffersOES"); - pGlGenFramebuffersOES = (PFNGLGENFRAMEBUFFERSOES) eglGetProcAddress("glGenFramebuffersOES"); - pGlCheckFramebufferStatusOES = (PFNGLCHECKFRAMEBUFFERSTATUSOES) eglGetProcAddress("glCheckFramebufferStatusOES"); - pGlFramebufferRenderbufferOES = (PFNGLFRAMEBUFFERRENDERBUFFEROES) eglGetProcAddress("glFramebufferRenderbufferOES"); - pGlFramebufferTexture2DOES = (PFNGLFRAMEBUFFERTEXTURE2DOES) eglGetProcAddress("glFramebufferTexture2DOES"); - pGlGenerateMipMapOES = (PFNGLGENERATEMIPMAPOES) eglGetProcAddress("glGenerateMipMapOES"); - } -#endif -} - -} // end namespace video -} // end namespace irr - - -#endif // _IRR_COMPILE_WITH_OGLES1_ + +#if defined(_IRR_OPENGL_USE_EXTPOINTER_) + if (FeatureAvailable[IRR_OES_draw_texture]) + { + pGlDrawTexiOES = (PFNGLDRAWTEXIOES) eglGetProcAddress("glDrawTexiOES"); + pGlDrawTexfOES = (PFNGLDRAWTEXFOES) eglGetProcAddress("glDrawTexfOES"); + pGlDrawTexivOES = (PFNGLDRAWTEXIVOES) eglGetProcAddress("glDrawTexivOES"); + pGlDrawTexfvOES = (PFNGLDRAWTEXFVOES) eglGetProcAddress("glDrawTexfvOES"); + } + if (FeatureAvailable[IRR_OES_framebuffer_object]) + { + pGlBindRenderbufferOES = (PFNGLBINDRENDERBUFFEROES) eglGetProcAddress("glBindRenderbufferOES"); + pGlDeleteRenderbuffersOES = (PFNGLDELETERENDERBUFFERSOES) eglGetProcAddress("glDeletedRenderbuffersOES"); + pGlGenRenderbuffersOES = (PFNGLGENRENDERBUFFERSOES) eglGetProcAddress("glGenRenderbuffersOES"); + pGlRenderbufferStorageOES = (PFNGLRENDERBUFFERSTORAGEOES) eglGetProcAddress("glRenderbufferStorageOES"); + pGlBindFramebufferOES = (PFNGLBINDFRAMEBUFFEROES) eglGetProcAddress("glBindFramebufferOES"); + pGlDeleteFramebuffersOES = (PFNGLDELETEFRAMEBUFFERSOES) eglGetProcAddress("glDeleteFramebuffersOES"); + pGlGenFramebuffersOES = (PFNGLGENFRAMEBUFFERSOES) eglGetProcAddress("glGenFramebuffersOES"); + pGlCheckFramebufferStatusOES = (PFNGLCHECKFRAMEBUFFERSTATUSOES) eglGetProcAddress("glCheckFramebufferStatusOES"); + pGlFramebufferRenderbufferOES = (PFNGLFRAMEBUFFERRENDERBUFFEROES) eglGetProcAddress("glFramebufferRenderbufferOES"); + pGlFramebufferTexture2DOES = (PFNGLFRAMEBUFFERTEXTURE2DOES) eglGetProcAddress("glFramebufferTexture2DOES"); + pGlGenerateMipMapOES = (PFNGLGENERATEMIPMAPOES) eglGetProcAddress("glGenerateMipMapOES"); + } +#endif +} + +} // end namespace video +} // end namespace irr + + +#endif // _IRR_COMPILE_WITH_OGLES1_