SDL + OpenGL を使用してこの小さなゲームを作成しました。ゲームは私の PC では正常に動作しますが、友人の PC では白いボックスと空白の画面が表示されます。
テクスチャの次元が 2 のべき乗ではないため、問題になるのではないかと考えました。テクスチャの寸法を変更することはできないので、いくつか検索した結果、GL_ARB_texture_non_power_of_twoを使用すると何らかの形で npot テクスチャが強制 (?) されることがわかりました。しかし、驚いたことに、白いボックスなどは PC に表示され、友達にも表示されません。何が問題なのか理解できません。どんな助けでも大歓迎です。
コード:
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);