11

明確にするために、私は私の質問から始めます:

RenderMonkey 1.82 の (OpenGL) ストリーム マッピングでTEXCOORD用に設定したカスタム アトリビュート名を(シェーダー コードで) 使用することは可能ですか? それとも gl_MultiTexCoord0 を使用する必要がありますか? (質問はNORMAL の使用法、つまりカスタム名またはgl_Normalにも有効である可能性があります)

バックグラウンド:

RenderMonkey バージョン 1.82 を使用します。ストリーム マッピングを使用して一般的な頂点属性「位置」(およびおそらく「法線」) をマッピングすることに成功しましたが、テクスチャ座標が正しく転送されていないようです。シェーダー コードには、#version 330 と GLSL の "in" 修飾子を使用します。RM はシェーダー自体をコンパイルしない (OpenGL ドライバーはコンパイルする) ため、これで問題ありません。

.obj ファイルと .3ds ファイル (blender からエクスポート) の両方を試しました。波面の .obj ファイルを確認すると、頂点の位置と法線だけでなく、すべてのテクスチャ座標情報がそこにあります。

それが不可能な場合は、ストリーム マッピングが壊れており、ストリーム マッピング エディタで変数に名前を付けても意味がありません (機能する頂点位置ストリームを除いて)。とにかく組み込み変数を使用する必要があるためです。

更新: 非推奨の組み込み変数を使用する場合は、シェーダーで互換モードを使用する必要があります。

#version 330 compatibility
out vec2 vTexCoord;

そして、メイン関数では:

vTexCoord = vec2(gl_MultiTexCoord0);

(現在、法線のストリーム マッピングについてもよくわかりません。テクスチャ座標が機能するようになるとすぐに、通常の問題が発生し、gl_Normal に戻す必要がありました。)

これは実用的なソリューションの写真ですが、組み込み変数を使用しています(はい、写真のコメント付きのtexcoord変数はストリームマッピングダイアログと同じ名前ではありませんが、使用しようとしたときは同じ名前でしたそれでOKです。):組み込み変数でバイパスされたストリーム マッピング

4

2 に答える 2

0

一般的な頂点の属性を使用してみることができます。 http://open.glを参照してください。これは素晴らしいチュートリアルです ;) (ただし、変換を手動で処理するためにコードを書き直す必要があることを意味すると思います...)

于 2013-08-10T21:47:42.177 に答える