我使用 SDL + OpenGL 制作了这个小游戏。游戏在我的电脑上运行良好,但在朋友的电脑上,他只是得到白框和黑屏。
我认为这可能是一个问题,因为我的纹理在维度上不是 2 的幂。我无法更改纹理尺寸,因此经过一番搜索,我发现使用GL_ARB_texture_non_power_of_two会以某种方式强制(?)npot纹理。但是,令我惊讶的是,我的电脑上出现了白框和其他东西,而我的朋友们甚至都没有。我无法理解问题所在。任何帮助将不胜感激。
代码:
numColors = images[i]->format->BytesPerPixel;
if ( numColors == 4 )
{
if (images[i]->format->Rmask == 0x000000FF)
textureFormat = GL_RGBA;
else
textureFormat = GL_BGRA;
}
else if ( numColors == 3 )
{
if (images[i]->format->Rmask == 0x000000FF)
textureFormat = GL_RGBA;
else
textureFormat = GL_BGRA;
}
glPixelStorei(GL_UNPACK_ALIGNMENT,4);
glGenTextures( 1, &textures[i] );
glBindTexture( GL_ARB_texture_non_power_of_two, textures[i] );
glTexParameteri(GL_ARB_texture_non_power_of_two,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_ARB_texture_non_power_of_two,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_ARB_texture_non_power_of_two, 0, numColors, images[i]->w, images[i]->h, 0, textureFormat, GL_UNSIGNED_BYTE, images[i]->pixels);