私はglReadPixelsを使ってアルファピクセル値を読み取ろうとしています。私が最初にしたことは、ピクセルを個別に読み取ることでした。物事をスピードアップしようとすると、すべてのピクセルを一度に読み取ろうとしました。glReadPixelsとGL_ALPHA
GLubyte *pixels = new GLubyte[w*h*4];
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
それはうまくいったが、実際は遅いです。今私は、RGBコンポーネントにスペースを無駄にすることなく、単にアルファ値を取得しようとしている:
GLubyte *pixels = new GLubyte[w*h];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, pixels);
しかし、私は得る:OpenGL error 0x0500 in -[EAGLView swapBuffers]
。
INVALID_ENUM (0x0500)
がスローされた理由は何ですか?
ありがとうございます。あなたの最後の提案については、それを実装する方法に関する指針がありますか? – sharvey
@sharvey - こちらの記事を参照してください:http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios私がそこに持っているサンプルアプリケーション:http://www.sunsetlakesoftware.com/sites/default/files/ColorTracking.zipは、オフスクリーンのフレームバッファを使ってテクスチャにレンダリングしますが、私は 'glReadPixels()'を使って結果を取り込みます。私が望むGPUベースのカラー平均化を完了できませんでした。私はこれを行うために、より遅いCルーチンを使用して終了しました。私はある時点でこれを完成させます。 –