Quake2中第三个qglTexImage2D的internalFormat

时间:2012-12-24 05:32:49

标签: c opengl quake2

从Quake2源代码,gl_rsufr.c的函数GL_BeginBuildingLightmaps,我看到了这些代码:

if ( toupper( gl_monolightmap->string[0] ) == 'A' )
{
    gl_lms.internal_format = gl_tex_alpha_format;
}
/*
** try to do hacked colored lighting with a blended texture
*/
else if ( toupper( gl_monolightmap->string[0] ) == 'C' )
{
    gl_lms.internal_format = gl_tex_alpha_format;
}
else if ( toupper( gl_monolightmap->string[0] ) == 'I' )
{
    gl_lms.internal_format = GL_INTENSITY8;
}
else if ( toupper( gl_monolightmap->string[0] ) == 'L' ) 
{
    gl_lms.internal_format = GL_LUMINANCE8;
}
else
{
    gl_lms.internal_format = gl_tex_solid_format;
}
GL_Bind( gl_state.lightmap_textures + 0 );
qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
qglTexImage2D( GL_TEXTURE_2D, 
               0, 
               gl_lms.internal_format,
               BLOCK_WIDTH, BLOCK_HEIGHT, 
               0, 
               GL_LIGHTMAP_FORMAT, 
               GL_UNSIGNED_BYTE, 
               dummy );

qglTexImage2D与glTexImage2D相同。

问题出在调试中我看到qglTexImage2D的第三个参数(internalFormat)的输入值是gl_tex_solid_format,它是3. 3是参数internalFormat的有效值吗?

2 个答案:

答案 0 :(得分:2)

3internalFormat完全合法的值。

来自the glTexImage2D() documentation

  

internalFormat:指定纹理中的颜色分量数。 必须为1,2,3或4 ,或以下符号常量之一:...

答案 1 :(得分:0)

变量gl_tex_solid_format的值来自哪里?您确定已将GL_RGBA分配给变量gl_tex_solid_format吗?也许你为变量gl_tex_solid_format分配了3。