看opengl 写代码(12) 光

来源:互联网 发布:为什么要反乌托邦 知乎 编辑:程序博客网 时间:2024/05/21 22:20

虽然 还不能完全 明白 这段代码的含义,但是 看到 效果,小伙伴门真的惊呆了!!还是 决定 要好好学习 opengl。

下面上代码:

// light.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <gl/glut.h>void init(){GLfloat mat_specular[] = {1,1,1,1};GLfloat mat_shininess[] = {50.0};GLfloat light_position[] = {1,1,1,0};GLfloat white_light[] = {1,1,1,1};GLfloat lmodel_ambient[] = {0.1,0.1,0.1,1};glClearColor(0,0,0,0);glShadeModel(GL_SMOOTH);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT0,GL_DIFFUSE,white_light);glLightfv(GL_LIGHT0,GL_SPECULAR,white_light);glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_DEPTH_TEST);}void display(){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glutSolidSphere(1,20,16);glFlush();}void reShape(GLsizei w,GLsizei h){glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if (w <= h){glOrtho(-1.5,1.5,-1.5*h/w,1.5*h/w,-10,10);}else{glOrtho(-1.5*w/h,1.5*w/h,-1.5,1.5,-10,10);}glMatrixMode(GL_MODELVIEW);glLoadIdentity();}int _tmain(int argc, _TCHAR* argv[]){glutInit(&argc,(char**) argv);glutInitWindowPosition(100,100);glutInitWindowSize(500,500);glutCreateWindow("light");init();glutDisplayFunc(display);glutReshapeFunc(reShape);glutMainLoop();return 0;}


1 0
原创粉丝点击