##期中考題
1.期中考試練習網址: https://jsyeh.org/gl/
2.必備10函式,作答評分完會給答案
##week06-0_sample
1. 桌面有「葉正聖老師上課用軟體」 freeglut 安裝(拉到桌面),再把 lib的 libfreeglut.a 複製成 libglut32.a
2. CodeBlocks File-New-Project, GLUT專案, week06_0_sample
3.不刪程式,ctrl+F加入尋找light並加入
##week06-1_lighting
1. 貼上GLUT的11行程式
2.貼上剛剛week06-0_sample找到打光的程式碼
3.打光的陣列宣告8行:
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[] = { 2.0f, 5.0f, 5.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 };
4.打光的12+2行程式碼:
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);
5.代表光的位置:
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };
6.代表光的顏色(是光的顏色改變,茶壺一樣是白色):
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 0.0f, 1.0f };
##課本範例
1. https://jsyeh.org/3dcg10 下載data win32
2.解壓縮windows.zip
3.將data.zip中的data資料夾加入解壓縮後的windows資料夾
4.開啟windows資料夾中的Light Material
5.調整數值
##week06-2_lighting_glNormal3f
1. 把剛剛的程式week06-1_lighting拿來用
2.加上四邊形,有設定法向量
3.加入程式碼:
```
float angle=0;
```
glPushMatrix();
glRotatef(angle++, 0, 1, 0);///對Y軸旋轉
glBegin(GL_POLYGON);
glNormal3f(0,0,1);///打光的法向量
glVertex2f(-1,-1);
glVertex2f(+1,-1);
glVertex2f(+1,+1);
glVertex2f(-1,+1);
glEnd();
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
```(記得在main函式裡要加glutIdleFunc(display);)
glutIdleFunc(display);
glEnable(GL_DEPTH_TEST);
##week06-3_glm_obj_model
1. 貼入11行程式碼
2.從課本範例學習source.zip有三個程式檔:transformation.c glm.h glm.c解壓縮
3.要做專案設定:
3.1.把glm.h到桌面\week03-3_glm_obj_model目錄裡
3.2.把glm.c到桌面\week03-3_glm_obj_model目錄裡,改檔名glm.cpp
3.3.在專案裡按右鍵Add Files,加入glm.cpp
4.1.要#include "glm.h"
4.2.要GLMmodel* pmodel = NULL;
4.3要貼上drawmodel()的程式
5.用Notepad++開啟transformation.c研究他的程式碼,關鍵字gim找到程式碼
6.GLMmodel* pmodel = NULL;
7.
沒有留言:
張貼留言