2011-08-16 15 views
3

私はMS WindowsXPの、私のビデオカードの下で働くにはitel GMA4500、 私のコードです:openglステンシルバッファがゼロで初期化されていませんか?

glClearStencil(0); 
glClear(GL_STENCIL_BUFFER_BIT); 

unsigned char* data = new unsigned char[width*height]; 
glPixelStorei(GL_PACK_ALIGNMENT,1); 
glReadPixels(0,0,width,height,GL_STENCIL_INDEX,GL_UNSIGNED_BYTE,data); 

が、私は、データバッファをチェックすると、私はバイトが全てゼロではないことを見ることができ、 ので、問題は何でしょう?


YES、私は私がステンシルバッファを持っていると確信している、とコールglReadPixelsの後、私はエラーがありません、glGetErrorをチェックします。私もmemsetをゼロでデータバッファを埋めるように試みたが、結果は変更されませんでした。

+0

あなたの 'glReadPixels()'コールの前に 'memset()' 'data'を0にすると何か変わりますか? – genpfault

+0

したがって、バッファのほとんどはゼロですか?それは非ゼロで揺るがしいですか、それともブロック、開始時、終了時に非ゼロですか? (非常に)小さな16進ダンプを貼り付けることができますか? また、幅と高さは何ですか? – MattiasF

答えて

5

実際にステンシルバッファーはありますか?そうでない場合、glReadPixelsは、エラーを発生させ(チェックglGetError(...))、ターゲットバッファの内容は変更しません。

0

あなたはステンシルバッファの内容を取得しようとしているので、

glPixelStorei(GL_UNPACK_ALIGNMENT,1); 

を使用することを意味しましたか?

+0

いいえ、 'GL_PACK_ALIGNMENT'は正しいです、あなたがGPUからクライアントメモリにパックしているので。 –

関連する問題