2016-08-17 6 views
0

私はOpenGLを使用して、stimpやobjなどの3DモデルファイルをAssimpで表示しています。外部ファイルのKNNに基づくGLSLシェーダ(.ver​​tまたは.fragの外部ファイルを開きます)

Iは、点の集合及び対応する値(必ずしもオブジェクトに)を含むファイルがあると私はそれがすべての値の範囲内にある場所に基づいて、形状の各頂点を着色したいです。

私の現在の計画は、私の.vertまたは.fragファイルから.txtファイルを開き、そのように頂点に色付けすることです。しかし、GLSLの構文とC++の構文がどのように異なるかは、私には分かりません。同様の構文を使用してファイルを開き、.vertファイルを使用してすべての値を使用できますか?それを行う別の方法がありますか?

+0

この文脈では、「対応する価値」が何を意味するのかは不明です。頂点はどのようにすべての値の範囲内にあるのですか?任意の位置に関連して頂点について話していますか? –

+0

GLSLコードからファイルを読み取ることはできません。シェーダコードはGPU上で実行されます。ファイルの内容を読み取るために必要なライブラリ/システムコールを行うには、CPU上でコードを実行する必要があります。 –

+0

@RetoKoradi、ありがとう! – faeophyta

答えて

1

OpenGLシェーダからファイルからデータを読み取ることができません。あなたができることは、あなたのcppコードのデータを読んで、属性または統一としてデータをバインドすることです。データが非常に大きい場合は、テクスチャとして送信できます。

+0

私は対応する値で約5000点を持っています。どの方法をお勧めしますか?将来、ポイントの数は増加する可能性があります。 – faeophyta

+0

各情報がメッシュの特定の頂点に属していることを意味する場合は、属性を送信するのが適切な方法です。つまり、対応する頂点を処理するときに、シェーダでその特定の情報を利用できるようになります。頂点の色情報に非常によく似たもの。いくつかの例では、シェーダで頂点の色を送る方法を検索できます。 – codetiger

関連する問題