7

私はOpenGLを学び始めたばかりです。私が見たすべてのチュートリアルでは、フラグメント シェーダーを使用してビュー内のすべてのオブジェクトの色を設定する方法を示しています。私がまだ見つけていないのは、オブジェクトの 1 つだけにフラグメント シェーダーを使用して、さまざまなオブジェクトにさまざまな色を与える方法です。どうやってそれをしますか?

質問の背景を提供するために、家と道路のある単純なシーンを 2D で描いています。固定グラフィック パイプラインを使用して各オブジェクト (家の本体、窓など) の色を設定する方法を発見しましたが、フラグメント シェーダーを使用して色を設定する方法がわかりません。

私が何か誤解している場合の修正を含め、明確化をいただければ幸いです。

4

2 に答える 2

4

glDrawArraysまたはでオブジェクトを描画する前にglDrawElements、色を変数としてシェーダーに渡します。

http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml

サンプル GLSL フラグメント シェーダー:

uniform vec4 u_color;

void main(void)
{
     gl_FragColor = u_color;
 }

私はこの答えを拡張しますが、私は怠惰です。それが多少役立つことを願っています。オンラインにはたくさんのチュートリアルがあります。glsl、glUniform4f などを検索してください。

于 2012-11-06T04:43:41.737 に答える
4

質問の背景を提供するために、家と道路のある単純なシーンを 2D で描いています。固定グラフィック パイプラインを使用して各オブジェクト (家の本体、窓など) の色を設定する方法を発見しましたが、フラグメント シェーダーを使用して色を設定する方法がわかりません。

Robert Rouhani が言ったように、色を均一にして、オブジェクトごとに変更します。


OpenGLでフラグメントシェーダーを1つのオブジェクトにのみ適用するには?

別のシェーダーを使用した後で、シェーダー プログラムをglUseProgramおよびレンダリング コールで変更するだけです。

これを参照してください: https://gamedev.stackexchange.com/questions/22216/using-multiple-shaders

于 2012-11-06T04:44:40.067 に答える