0

cpp/marmalade を使用して iOS 用のゲームを作成していますが、テクスチャが破損することがあります。ソース テクスチャ ファイルは次のとおりです。

http://files.moonmana.com/forums/source-rune.png

壊れたテクスチャの例:

ここに画像の説明を入力

このコードでテクスチャをロードしています:

VGTexture2D* VGTextureLoader::loadImage(std::string imagefile)
{


CIwImage img;
 img.LoadFromFile(imagefile.c_str());

 // Convert to an OpenGL ES native format
 CIwImage nativeImg;
 nativeImg.SetFormat(CIwImage::ABGR_8888);
 img.ConvertToImage(&nativeImg);

 // Generate texture object
 GLuint texture;
 glGenTextures(1, &texture);
 glBindTexture(GL_TEXTURE_2D, texture);

 // Upload
 uint32 width = img.GetWidth();
 uint32 height = img.GetHeight();
 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nativeImg.GetTexels());


 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

 // Create and return texture
 VGTexture2D* tex = new VGTexture2D(texture, (float)width, (float)height);

 return tex;
}
4

1 に答える 1

3

テクスチャは壊れていませんが、チャンネルが反転しているようです。画像を A​​BGR_8888 に変換してから GL_RGBA としてアップロードしている可能性がありますか?

于 2012-04-22T03:36:52.447 に答える