1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

0025544: Visualization, TKOpenGl - support grayscale textures

Image_PixMap::ImgFormat - extend enumeration by ImgAlpha and ImgAlphaF.
OpenGl_Workspace::setTextureParams() - specify GL_REPLACE for 1-component textures with disabled modulation.
OpenGl_Texture::GetDataFormat() - return GL_LUMINANCE format for ImgGray format and GL_ALPHA for ImgAlpha.

vmarkerstest - override pixel format for grayscale images to ImgAlpha.

Add test case bugs/vis/bug25544_graytexture.
This commit is contained in:
kgv
2014-12-04 15:31:31 +03:00
committed by bugmaster
parent a319f03ff9
commit 076ca35c3f
13 changed files with 186 additions and 39 deletions

View File

@@ -367,6 +367,17 @@ void OpenGl_Workspace::setTextureParams (Handle(OpenGl_Texture)&
OpenGl_Utils::Rotate (aTextureMat, -aParams->Rotation(), 0.0f, 0.0f, 1.0f);
glLoadMatrixf (aTextureMat);
GLint anEnvMode = GL_MODULATE; // lighting mode
if (!aParams->IsModulate())
{
anEnvMode = GL_DECAL;
if (theTexture->GetFormat() == GL_ALPHA
|| theTexture->GetFormat() == GL_LUMINANCE)
{
anEnvMode = GL_REPLACE;
}
}
// setup generation of texture coordinates
switch (aParams->GenMode())
{
@@ -416,7 +427,7 @@ void OpenGl_Workspace::setTextureParams (Handle(OpenGl_Texture)&
{
glEnable (GL_POINT_SPRITE);
glTexEnvi (GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
anEnvMode = GL_REPLACE;
GetGlContext()->core15->glPointParameteri (GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);
}
break;
@@ -426,10 +437,7 @@ void OpenGl_Workspace::setTextureParams (Handle(OpenGl_Texture)&
}
// setup lighting
if (aParams->GenMode() != Graphic3d_TOTM_SPRITE)
{
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, aParams->IsModulate() ? GL_MODULATE : GL_DECAL);
}
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, anEnvMode);
#endif
// get active sampler object to override default texture parameters