openGL ES(iPhone用)を使用してテクスチャにレンダリングしてから、画面にテクスチャを表示しようとしています。テクスチャの上部に32行のギャップがあり、下部の32行が切り取られていることを除いて、すべてが機能します。すべての描画が32ピクセル下にオフセットされているようです。その結果、下の32行はテクスチャの外側にあるため描画されません。
非常に簡単な例を次に示します。
void RenderToTexture( int texture )
{
unsigned char buffer[4 * 320 * 480];
unsigned char colour[4];
colour[0] = 255;
colour[1] = 0;
colour[2] = 0;
colour[3] = 128;
for ( int i = 0; i < 4 * 320 * 480; i += 4 )
{
buffer[i] = colour[0];
buffer[i+1] = colour[1];
buffer[i+2] = colour[2];
buffer[i+3] = colour[3];
}
glBindTexture( GL_TEXTURE_2D, texture );
glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 320, 480, GL_RGBA, GL_UNSIGNED_BYTE, buffer );
}
結果は次のとおりです。
RenderToTexture()を呼び出す代わりにglColor4f()を使用して色を設定するだけで、期待どおりに赤い画面が表示されます。