0

私はAndroidプラットフォーム(Samsung Galaxy S2)でOpenGL2.0を使用しています。GL_fragcolorを使用して値を設定すると、完全なグレーのシェードになると思われますが、代わりに、シーンをレンダリングするときに、赤と青の値の2、3上または下に緑のコンポーネントが表示されます。

"   void main() {                               " +
"       vec4 c = texture2D(texture0, tCoord);   " +
"       c *= vColor;                            " +
"       gl_FragColor = vec4(c.r,c.r,c.r,1);     " + 
"   }                                           ";  

ご覧のとおり、上記のこのルーチンの最終結果は、各コンポーネントに対して同じ値を出力するはずです。(これは、グレースケール出力の使用に関する問題を誇張するための一時的なルーチンです)

RGBブリーディングの問題を撮影したスクリーンショット。ここに写真を投稿するのに十分なポイントがないので、photobucketにアップロードしてください...

http://s1267.photobucket.com/albums/jj556/mrpookie99/?action=view¤t=rgb.png

したがって、出力解像度を画面に設定できるドキュメントが見つからないため、8ビット値を565値などに変換しているかどうかはわかりません...

助けてくれてありがとう、

アンドリュー。

4

1 に答える 1

3

さて、私は今、なぜこの状況が発生するのかを知っています...

GLSurfaceViewでデフォルト設定を使用すると、ディスプレイ用に16ビットの深さのバッファーが作成されます@ 565 RGB ...

これを回避するために、デフォルトのバッファを16ビットから32ビットに変更し、すべてが修正されました:)

http://developer.android.com/reference/android/opengl/GLSurfaceView.html

開発者ガイドからの引用:「setEGLConfigChooserメソッドが呼び出されない場合、デフォルトでは、ビューは少なくとも16ビットの深度バッファー深度を持つRGB_565サーフェスを選択します。」

これが将来他の人に役立つことを願っています...

于 2012-06-16T11:13:53.220 に答える