[英]GLSL and glBegin(GL_TRIANGLES) not working
此代码仅呈现十二面体,而完全忽略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();
这两个着色器非常简单:
顶点着色器:
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();
glBegin(..); glEnd();
可以成功使用GLSL着色器创建块,因此必须可行。 可能缺少什么?
glBegin / glEnd块中三角形的顶点坐标为
11, 0, 0
-11, 0, 0
0, 0, 11
这意味着它在视图中完全平坦。 这就像从如此硬的角度观看一张纸一样,它变成一条线。 因为三角形没有厚度,所以甚至没有画出这条线,并且三角形看起来不可见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.