我一直在用OpenGL编写程序.最近,我开始学习OpenGL着色语言.我是新手; 所以请详细说明你的答案.
我的问题是:
我只熟悉从"顶点着色器"传递到"片段着色器"以在顶点之间进行插值的"变化"变量.除此之外,我什么都不知道.
我是GLSL的新手.所以,我正在浏览网上的教程.
本教程有一个名为Flatten Shader的示例,它将GLUT茶壶显示为展平的茶壶.这是Flatten Shader的链接.
我完成了与教程中提到的步骤完全相同的所有操作,但我的茶壶并不像教程中的茶壶那样平坦.它看起来像一个普通的茶壶.
以下是顶点着色器的代码:
void main()
{
vec4 v = vec4(gl_Vertex);
v.z = 0.0;
gl_Position = gl_ModelViewProjectionMatrix * v;
}
Run Code Online (Sandbox Code Playgroud)
这是我的片段着色器:
void main()
{
gl_FragColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)
以下是我绘制茶壶的方法:
void display ( void )
{
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( 0.0, 0.0, 2.0,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0
);
glMultMatrixd(trackball->getRotation());
const GLfloat diffuseIntensity[] = { 0.8, 0.4, 0.4, 1.0 };
const GLfloat specularIntensity[] = { 0.5, 0.5, 0.5, 1.0 …
Run Code Online (Sandbox Code Playgroud)