2011-01-08 8 views
2

DrawElementsを一度呼び出して描画するとき定数を指定できるかどうか不思議でした。私はVAOとVBOを使用していますので、すべての頂点に対して一度ロードしてVBO IDを保存するだけで問題はありませんが、グラフィックカードのメモリを解放することができます。glDrawElements定数が通常の場合

これはデータをロードする方法ですグラフィックスに:

glBindBuffer(GL_ARRAY_BUFFER,VBO[Grid][Normals]); 
glNormalPointer(GL_FLOAT, sizeof(vector3f), 0); 
glEnableClientState(GL_NORMAL_ARRAY); 

私はいくつかの5x5x5グリッドを指定して立方surphaceを作成するために、インデックスを使用しているため、それが法線に対処するために、いくつかの定数を使用することが役立つだろうあまりありません:)

+2

どの種類のハードウェアをターゲットにしていますか?一様な入力として普通になる頂点シェーダーを使用しない理由(または通常のハードコード化されたもの)? – Grizzly

+0

ターゲットOpenGLのバージョンを必ず指定してください。 – Kos

答えて

2

あなたが使用して機能を実現することができます常に同じ法線を指定する頂点シェーダです。したがって、法線を均一に指定する必要があるのは、これらの頂点で同じですからです。

+0

ええ、私は今は固定パイプラインを使用しています。シェーダを使用する必要があるステージにはないので、ちょうどそこにシェーダをロードしてシンプルなシェーダを作成するためのコードをスローする方が簡単かもしれません... – Raven

+1

はいシェーダで始める前に少しの努力がありますが、固定パイプラインの実装のために回避することなく、最良のアルゴリズムを実装することができます。 – Luca

+0

固定パイプラインの制限を回避する必要がなくても、いくつかの固定パイプライン関数を一緒に使用し始めると、シェイダーでより簡単に実行できます。 – Grizzly