OpenGL 光照方程的计算
生活随笔
收集整理的這篇文章主要介紹了
OpenGL 光照方程的计算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?????? 分析程序并計算,請看下面的一段程序,并計算三個頂點1、2和3處的光照的顏色值。必須寫出過程,只有結果不得分。
#include <GL/glut.h>void init(void) {GLfloat mat_ambient[] = { 0.2, 0.2, 0.2, 1.0 };GLfloat mat_diffuse[] = { 0.8, 0.8, 0.8, 1.0 };GLfloat mat_emission[] = { 0.0, 0.0, 0.0, 1.0 };GLfloat mat_specular[] = { 0.3, 0.3, 0.3, 1.0 };GLfloat mat_shininess[] = { 2.0 };GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };GLfloat light_ambient[] = {0.2, 0.2, 0.2, 1.0};GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};GLfloat light_specular[] ={1.0, 1.0, 1.0, 1.0};GLfloat lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0};glClearColor (0.0, 0.0, 0.0, 0.0);glShadeModel (GL_SMOOTH);glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission);glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);glLightfv(GL_LIGHT0, GL_POSITION, light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_DEPTH_TEST); } void display(void) {glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glBegin(GL_TRIANGLES);glNormal3f(0.0f, 0.0f, 1.0f);glVertex3f(0.0, 0.0, 0.0); //1glVertex3f(1.0, 0.0, 0.0); //2glVertex3f(1.0, 1.0, 0.0); //3glEnd();glFlush (); } void reshape (int w, int h) {glViewport (0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode (GL_PROJECTION);glLoadIdentity();if (w <= h)glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0);elseglOrtho (-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity(); } int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100);glutCreateWindow (argv[0]);init ();glutDisplayFunc(display); glutReshapeFunc(reshape);glutMainLoop();return 0; }?????? ?上述程序代碼運行后,產生了一個三角形,使用QQ截圖獲取頂點1的像素值(該程序中頂點1的像素是(0,0,0))。。
?????? 使用方法如下圖:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的OpenGL 光照方程的计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL 期末考试作业
- 下一篇: OSG使用更新回调来更改模型