diff --git a/src/OpenGl/OpenGl_Texture.cxx b/src/OpenGl/OpenGl_Texture.cxx index 3b03c64bbc..0603ce5d1d 100644 --- a/src/OpenGl/OpenGl_Texture.cxx +++ b/src/OpenGl/OpenGl_Texture.cxx @@ -413,6 +413,14 @@ bool OpenGl_Texture::Init (const Handle(OpenGl_Context)& theCtx, const GLint anIntFormat = theCtx->IsGlGreaterEqual (3, 0) ? theTextFormat : thePixelFormat; #endif + if (theDataType == GL_FLOAT && !theCtx->arbTexFloat) + { + theCtx->PushMessage (GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, + "Error: floating-point textures are not supported by hardware."); + Release (theCtx.operator->()); + return false; + } + const GLsizei aMaxSize = theCtx->MaxTextureSize(); if (theSizeX > aMaxSize || theSizeY > aMaxSize) @@ -515,7 +523,7 @@ bool OpenGl_Texture::Init (const Handle(OpenGl_Context)& theCtx, glTexImage1D (GL_PROXY_TEXTURE_1D, 0, anIntFormat, theSizeX, 0, thePixelFormat, theDataType, NULL); - glGetTexLevelParameteriv (GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &aTestWidth); + glGetTexLevelParameteriv (GL_PROXY_TEXTURE_1D, 0, GL_TEXTURE_WIDTH, &aTestWidth); if (aTestWidth == 0) { // no memory or broken input parameters @@ -540,6 +548,8 @@ bool OpenGl_Texture::Init (const Handle(OpenGl_Context)& theCtx, Unbind (theCtx); return true; #else + theCtx->PushMessage (GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, + "Error: 1D textures are not supported by hardware."); Release (theCtx.operator->()); return false; #endif diff --git a/src/Shaders/Declarations.glsl b/src/Shaders/Declarations.glsl index 716eed8126..001565ef6a 100644 --- a/src/Shaders/Declarations.glsl +++ b/src/Shaders/Declarations.glsl @@ -24,13 +24,17 @@ #define THE_SHADER_IN in #define THE_SHADER_OUT out #define THE_OUT out + #define occTexture1D texture #define occTexture2D texture + #define occTexture3D texture #else #define THE_ATTRIBUTE attribute #define THE_SHADER_IN varying #define THE_SHADER_OUT varying #define THE_OUT + #define occTexture1D texture1D #define occTexture2D texture2D + #define occTexture3D texture3D #endif #ifdef GL_ES diff --git a/src/Shaders/Shaders_Declarations_glsl.pxx b/src/Shaders/Shaders_Declarations_glsl.pxx index d2d9191fbf..7476af2974 100644 --- a/src/Shaders/Shaders_Declarations_glsl.pxx +++ b/src/Shaders/Shaders_Declarations_glsl.pxx @@ -27,13 +27,17 @@ static const char Shaders_Declarations_glsl[] = " #define THE_SHADER_IN in\n" " #define THE_SHADER_OUT out\n" " #define THE_OUT out\n" + " #define occTexture1D texture\n" " #define occTexture2D texture\n" + " #define occTexture3D texture\n" "#else\n" " #define THE_ATTRIBUTE attribute\n" " #define THE_SHADER_IN varying\n" " #define THE_SHADER_OUT varying\n" " #define THE_OUT\n" + " #define occTexture1D texture1D\n" " #define occTexture2D texture2D\n" + " #define occTexture3D texture3D\n" "#endif\n" "\n" "#ifdef GL_ES\n"