このコードは12面体のみをレンダリングし、glBegin(GL_TRIANGLES)
ブロックを完全に無視します。
glutSolidDodecahedron();
glBegin(GL_TRIANGLES);
glNormal3f(1, 0, 0);
glVertex3f(11, 0, 0);
glNormal3f(0, 1, 1);
glVertex3f(-11, 0, 0);
glNormal3f(0, 0, 1);
glVertex3f(0, 0, 11);
glEnd();
2つのシェーダーは非常に単純です。
頂点シェーダー:
varying vec3 normal;
void main()
{
gl_Position = ftransform();
gl_FrontColor = gl_Color;
gl_BackColor = gl_Color;
normal = gl_Normal;
normal = gl_NormalMatrix * normal;
}
と断片:
uniform vec3 lightDir;
varying vec3 normal;
void main()
{
float intensity = dot(lightDir, normal);
gl_FragColor = 0.5 * (1.5 + intensity) * gl_Color;
}
このglutSolidX
例(Lightouse3Dチュートリアルに基づく)では関数の種類が適切に機能しますが、フレームごとに座標を変更する三角形をすばやく描画するにはどうすればよいですか(配列とGL_DYNAMIC_DRAWを試しましたが、古い「固定パイプライン」と比較すると、作業が多すぎます。 " アプローチ)。他の人がまだglBegin(..); glEnd();
GLSLシェーダーでブロックをうまく使用しているのを見たので、それは可能であるに違いありません。何が欠けている可能性がありますか?