2019年3月22日 星期五

week05-Light

(一)
  1. 下載[data][win32glut32.dll ⇒ http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
  2. 解壓縮後資料夾內容如圖⇘














開啟Light Material
在左上區塊按右鍵可變更模型

可換Material


  1. 調整數值可改變光線位置
(圖為改變Y軸光線)
















(二)
























加入程式碼:

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };    
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };    
const GLfloat light_position[] = { -1.0f, -1.0f, -2.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };    
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };    
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };    
const GLfloat high_shininess[] = { 100.0f };



glClearColor(1,0,1,1);                   
glEnable(GL_CULL_FACE);    
glCullFace(GL_BACK);
    
glEnable(GL_DEPTH_TEST);    
glDepthFunc(GL_LESS);

glEnable(GL_LIGHT0);    
glEnable(GL_NORMALIZE);    
glEnable(GL_COLOR_MATERIAL);    
glEnable(GL_LIGHTING);
    
glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    
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_SHININESS, high_shininess);



(三)

新增程式碼:
float angle=0;
/
glRotatef(angle,0,1,0);
glutSolidTeapot( 0.3 );
glPopMatrix();
angle+=3;
/
glutIdleFunc(display);















































沒有留言:

張貼留言