2011-01-15 11 views
1

画面にテクスチャを描画するのに問題はありませんが、メモリから印刷するときは右のピクセルを取得できません。私は4x4ピクセルの4x4 PNGイメージを持っており、それらを印刷しようとしています。これは私が行うことです:iphoneのglreadPixelsに関する問題

glBindTexture(GL_TEXTURE_2D, m_textureId); 

const int size = m_width * m_height * 4; 
GLubyte pixels[size]; 

glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); 
if(glGetError() != GL_NO_ERROR) 
    assert(false && "opengl error"); 


for(int index = 0; index < size; index+=4) 
{ 
    cout << "red " << (unsigned)pixels[index+0] << endl; 
    cout << "green " << (unsigned)pixels[index+1] << endl; 
    cout << "blue " << (unsigned)pixels[index+2] << endl; 
} 

しかし、私はすべてのランダムな値を取得し、私が期待するものではありません。誰でも私が間違っていることを見ることができますか?

答えて

1

glReadPixelsはテクスチャではなくフレームバッファから読み込みます。テクスチャオブジェクトの内容を取得するには、http://www.opengl.org/sdk/docs/man/xhtml/glGetTexImage.xml

+0

haha​​の説明がたくさんあります:) – Merni

+0

しかし、glGetTexImageはopenglに存在しますか? – Merni

+1

@Merni right、OpenGL-ESにはglGetTexImageはありません。とにかく、プログラムが提供するデータからテクスチャが作成されるので、いつでもプログラムがそのデータにアクセスできると期待できるので、これはほとんど必要ありません。テクスチャがレンダリングによって作成され、glCopyTexImageがglReadPixelsをglCopyTexImageを使用する同じポイントで使用できる場合は、 – datenwolf

関連する問題