私は補間されたサーフェスの例を作成しようとしています。 まず、補間されたトレフォイルの例を作成しました。 GL_PATCHESを渡す方法
ここでは、私のexampleのソースです。 それから、アニメーションが20-30FPSくらい遅いことに気がついた。 いくつかの論文の後で、私は、トレフォイルの評価をGPUに「移動」させなければならないことを知っています。そこで、テッセレーションシェーダについていくつかの論文を勉強しました。
#version 130
in vec4 Position;
in vec3 Normal;
uniform mat4 Projection;
uniform mat4 Modelview;
uniform mat3 NormalMatrix;
uniform vec3 DiffuseMaterial;
out vec3 EyespaceNormal;
out vec3 Diffuse;
void main()
{
EyespaceNormal = NormalMatrix * Normal;
gl_Position = Projection * Modelview * Position;
Diffuse = DiffuseMaterial;
}
は、今私は、乗算質問している:私はすでにTriangle_Stripsで行ったように私はGL_PATCHESを渡すために、頂点の配列を
- を使用していますか?私はシェーダ頂点単に次のバインド瞬間 どの方が速いの? DrawElements?
glDrawElements(GL_TRIANGLE_STRIP, Indices.Length, OpenGL.GL_UNSIGNED_SHORT, IntPtr.Zero);
または私はインデックスの配列について
glPatchParameteri(GL_PATCH_VERTICES,16);
glBegin(GL_PATCHES);
glVertex3f(x0,y0,z0)
...
glEnd();
何を使うべきでしょうか?どのようにしてパスの順序を決めることができますか?
シェーダの法線も計算しますか?
私は、テッセレーションシェーダの例をいくつか見つけたが
#version400
に私は同様のモバイルデバイス上でこのバージョンを使用することはできますか?(のOpenGL ES)私はマルチスレッドでGPUに複数のパッチを渡すことはできますか?
多くの方々には前もって感謝します。
トレフォイルメッシュデータをCPUに作成せず、頂点バッファと頂点配列オブジェクトを作成します(1回限り)。次に、メッシュを連続して描くことができます。メッシュは、頂点配列オブジェクトに記述されており、最大のパフォーマンスで描画されます。あるいは、メッシュ自体が何らかの形でアニメーション化されていますか(スキニングやモーフィングなど)? – Rabbid76
@ Rabbid76: "OpenGL ESは、ジオメトリシェーダシェーダまたはテッセレーションシェイダを提供していません。 ES 3.2は確かにそうです。 –
@ Rabbid76はい、メッシュ自体もアニメーション化する必要があります。現時点では、VBOとVAOを一度作成しますが、残念なことに、トレフォイルはCPU上のメッシュデータです。したがって、私はGPU上にメッシュデータを作成する予定ですが、最高のパフォーマンス達成のために何を使用するのか分かりません。 – TimDor