1

OpenFrameworks を使い始めたばかりで、簡単なことをしようとしています。画面上の特定のポイントでピクセルの色をテストします。

openFrameworks でこれを行う良い方法はないと思いますが、openGL と glReadPixels にドロップダウンできます。しかし、私はそれで多くの問題を抱えています。

http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xmlに基づいて、私はこれをやろうとして始めました:

glReadPixels(x,y, 1,1, GL_RGB, GL_INT, &an_int);

単一のピクセル (幅と高さは 1) の値をチェックし、フォーマットとして GL_RGB 型として GL_INT を与えているので、単一のピクセルは単一の int (4 バイト) を占める必要があると考えました。データ引数としての int。

ただし、最初に気付いたのは、glReadPixels が関数内の他のローカル変数を壊しているように見えることでした。そのため、10 個の int の配列を作成するように変更し、それを渡しました。これにより、奇妙な副作用はなくなりましたが、返されるものを解釈する方法はまだわかりません。

では、RGB 値に簡単にアンパックできるものを安全に取得するために渡す必要がある、フォーマット引数と型引数の正しい組み合わせは何ですか? (私はopenFrameworksを介してこれを行っているので、openGLを自分で明示的に設定していないことに注意してください.openFramework / openGLのデフォルトを取得しているだけだと思います.私が知っている構成の唯一のビットは、アルファを設定することではありません. -ブレンディング。これは、ピクセルが3バイト(R、G、B、ただしアルファなし)で表されることを意味すると思います。GL_RGB がこれに該当するフォーマットだと思います。

4

1 に答える 1

3

その場合、3 つの int が必要です。1 つは R 用、もう 1 つは G 用、もう 1 つは B 用です。

unsigned char RGB[3];
glReadPixels(x,y, 1,1, GL_RGB, GL_UNSIGNED_BYTE, rgb);
于 2010-11-17T14:37:37.437 に答える