1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-04 18:06:22 +03:00

0028734: Visualization, OpenGl_Texture - fix initialization of 1D texture

OpenGl_Texture::Init() - fixed proxy check for 1D textures.
Declarations.glsl - defined occTexture1D/3D aliases similar to occTexture2D.
This commit is contained in:
isk 2016-04-14 12:04:54 +03:00 committed by bugmaster
parent b7c18ef8b0
commit ff6665dc50
3 changed files with 19 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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"