2017-11-08 9 views
0

私はPhongライティングモデルを組み込む必要があるOpenGL割り当てに取り組んでいます。しかし、私は2つの1x3ベクトルを一緒に乗算しようとするとちらつきが見えてきます。OpenGLベクトルが乗算されたときのちらつき

ダブルスワップが有効で、ミップマップも有効です。

例:

色=テクスチャ(myTextureSampler、UV).rgb * vec3(0.5、0.5、0.5)。

色=テクスチャ(myTextureSampler、UV).rgb * vec3(0.9、0.9、0.9)。

色=テクスチャ(myTextureSampler、UV).rgb * 0.9。

色=テクスチャ(myTextureSampler、UV).rgb * vec3(1.0、1.0、1.0)。

UPDATE(はい、それはGIF'S):これでも点滅:

色= vec3(0.9、0.1、0.2)。

完全なソースコードがopengl-tutorials.org codeに基づいていますが(うまくいけば)この質問は、問題の最小限の再生に非常にすぐに更新されますhereです。

乾杯

+1

ベクトルをベクトルで掛けることは、メンバーの乗算によってメンバーを行います。したがって、それはあなたが思うとは思わないかもしれません。 代わりに1つの値で拡散色を乗算し、出力をvec4に設定してみてください:'out vec4 color;' 'color = vec4(MaterialDiffuseColor * 0.5,1。0); ' –

+1

これは、乗算によるものよりもはるかにバグが多いようです。したがって、実際のソースコードを提供する必要があります。 –

+0

@IanYoungはポインタをありがとう!私は 'GL_BLEND'をオンにしたが、' vec3'の出力を出したことが原因であることが分かります。私はこれを1日と呼び、これを明日の "解決策"として投稿します。もう一度ありがとう、私は最終的に安全かつ健全に眠ることができます。 –

答えて

0

それは問題は私がGL_BLENDを有効にしているためOpenGLのではなく、RGB(vec3)のRGBA(vec4)出力を期待されていることであることが判明しました。

解決策1glEnable(GL_BLEND)を削除してGL_BLENDをオフにします。

解決策2vec4を返します。 vec4(existing_vec3, 1.0)を使って1x4ベクトルに「パッド」することができます。

関連する問題