下の画像のように、テクスチャを別のテクスチャの上にレンダリングしようとしています。
ただし、その画像のみが適切にレンダリングされます。私の他の画像は文字化けして「ねじれ」ます。よく見ると、行がずれているように見えます。
上記の例では、背景にまったく同じ猫の写真を使用しました。この猫の写真と私が作成した他のすべての画像は、何らかの理由で 1 つの特別な画像を除いて文字化けしてしまいます。EXIF データを見てみましたが、sRGB を使用していないことを除けば、他のデータとまったく同じ形式です。アルファチャンネルとすべてがあります。
行がどのようにシフトされるかを考えると、ピクセルの配置と関係があると思いますが、文字通りすべての可能な配置の組み合わせを試しましたが、これまでのところ何も機能していません。これが私のコードです:
int height, width = 512;
m_pSubImage = SOIL_load_image("sample.png", &width, &height, 0, SOIL_LOAD_RGBA);
glGenTextures(1, &m_textureObj);
glBindTexture(m_textureTarget, m_textureObj);
...
glActiveTexture(TextureUnit);
glBindTexture(m_textureTarget, m_textureObj);
glTexSubImage2D(GL_TEXTURE_2D, 0, 20, 10, 100, 100, GL_RGBA, GL_UNSIGNED_BYTE, m_pSubImage);
背景画像をロードするコードは、glTexSubImage2D の代わりにこの呼び出しを使用することを除いて、似ています。
glTexImage2D(m_textureTarget, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, m_pImage);