opengl探照灯效果的问题

Dracuuula 2010-12-16 05:35:12
#include <GL/glut.h>
#include <stdlib.h>

//三角形顶点坐标
static GLfloat verts[6] =
{
-200.0, -200.0,
0.0, 200.0,
200.0, -200.0
};

//顶点坐标法线向量
static GLfloat norverts[9] =
{
0,0,1,
0,0,1,
0,0,1
};



static void init(void)
{

glClearColor (0.0, 0.0, 0.0, 0.0);

GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess[] = { 50.0 };
GLfloat light_position0[] = { 0.0, 0.0, 350.0, 1.0 };


glShadeModel (GL_SMOOTH);

glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

glLightfv(GL_LIGHT0, GL_POSITION, light_position0);

glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30.0);//探照灯角度

glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);

}

static void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glEnable(GL_NORMALIZE);
glVertexPointer(2, GL_FLOAT, 0, verts);
glNormalPointer(GL_FLOAT, 0, norverts);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
/*draw the object*/
glDrawArrays(GL_TRIANGLES, 0, 3);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

glFlush ();
}

static void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();

glOrtho (-0.5*w, 0.5*w, -0.5*h, 0.5*h, -10.0, 10.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

}

/* ARGSUSED1 */
static void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;
}
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (600, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
以上是我写的一个程序,本以为会出来从三角形中间向四周逐渐变暗的效果
结果出来一个从最上面的顶点到下面逐渐变暗的效果。

那位大牛给解决以下,或者给个解释之类的。
谢了!
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guiyanwork 2010-12-24
  • 打赏
  • 举报
回复
楼主结帖给分吧
Dracuuula 2010-12-17
  • 打赏
  • 举报
回复
没人理阿...汗

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧