1

Quake2 ソースから、関数 GL_BeginBuildingLightmaps at gl_rsufr.c から、次のコードを見ました。

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 );

qglTexImage2DglTexImage2D と同じです。

問題はデバッグによるもので、 の 3 番目のパラメーター (internalFormat) の入力値が 3qglTexImage2Dgl_tex_solid_formatあることがわかりました。3 はパラメーター internalFormat の有効な値ですか?

4

2 に答える 2

2

3の完全に正当な値ですinternalFormat

ドキュメントから:_glTexImage2D()

internalFormat: テクスチャのカラー コンポーネントの数を指定します。1、2、3、または 4、または次の記号定数のいずれかでなければなりません: ...

于 2013-01-28T15:12:38.030 に答える
0

変数gl_tex_solid_formatの値はどこから来ていますか?GL_RGBAを変数gl_tex_solid_formatに割り当てましたか?変数gl_tex_solid_formatに3を割り当てた可能性があります。

于 2013-01-28T15:06:59.703 に答える