2011-07-15 4 views
10

は明確にするために、私は私の質問で始まる:GLSLのTEXCOORDストリームマッピングでRenderMonkeyにバグがありますか?

は(シェーダコードで)使用することが可能ですカスタムは、私はRenderMonkey中(OpenGLの)ストリームマッピングでTEXCOORDの使用に設定された名前属性1.82またはgl_MultiTexCoord0を使用する必要がありますか?

背景(質問は、あまりにすなわちカスタム名またはgl_Normal通常の使用に対して有効であるかもしれない):RenderMonkeyバージョン1.82を使用して

。 一般的な頂点属性 "position"(そしてたぶん "normal")をマッピングするためにストリームマッピングを使用しましたが、テクスチャ座標が正しく転送されていないようです。 シェーダコードについては、GLSLの#version 330と "in"修飾子を使用します。これは、RMがシェーダ自体をコンパイルしないためです(OpenGLドライバが行う)。

私はblenderからエクスポートされた.objファイルと.3dsファイルを試しました。波面.objファイルをチェックすると、すべてのテクスチャ座標情報がそこにあり、頂点の位置と法線もあります。

ストリームマッピングが壊れていて、ストリームマッピングエディタ(動作する頂点位置ストリームのほかに)に変数の名前を付けることに意味がありません。なぜなら、ビルトインとにかく変数。

更新: 非推奨の組み込み変数を使用している場合、1は、シェーダなど

#version 330 compatibility 
out vec2 vTexCoord; 

と、メイン関数内で互換性モードを使用する必要があります:

vTexCoord = vec2(gl_MultiTexCoord0); 

(今I法線のストリームマッピングについてもわかりません。テクスチャ座標が働くとすぐに、通常の問題があり、gl_Normalに戻らなければなりませんでした。)

ここでは動作するソリューションの写真ですが、変数が組み込まれています(そして、ピクチャ内のコメント付きtexcoord変数はストリームマッピングダイアログと同じ名前ではありませんが、試したときに同じ名前でした )(私はそれはあなたがマニュアルにコードを書き換える必要があるだろう意味するものではありだと思う。Stream mapping bypassed with built in variables

+1

私はANを持っていないために実用的なソリューションです)...変換を扱いますあなたの質問に応えてください、しかし、私はマルチプラットフォームの代替案、ShaderMakerを提案することができます:http://cg.in.tu-clausthal.de/teaching/shader_maker/index.shtml – appas

+0

あなたの提案をありがとう。私はShaderMakerを評価していませんが、それは固定パイプラインに向けられているようです。どうやら、ルミナと呼ばれる別のプロジェクトもあります。 – Deorbit

+0

レンダリングサルは、シェーダ3.30を一切サポートできませんか?私はそれがOpenGL 2.1の機能だけだと思った... –

答えて

0

あなたはhttp://open.glを参照し、一般的な頂点の属性を使用しようとすることができ、それは素晴らしいチュートリアルです:それはOKですので)、それを使用します

0
#version 330 

layout(location = 0) in vec3 bla_bla_bla_Vertex; 
layout(location = 2) in vec3 bla_bla_bla_Normal; 
layout(location = 8) in vec3 bla_bla_bla_TexCoord0; 

これはRM 1.82

関連する問題