☆程式碼+註解
glPushMatrix();/備份矩陣
glTranslatef(x ,y ,z );//移動 ---
glTotatef(angle ,x ,y ,z );//旋轉 | --->尾巴是" f "
glScalef(x ,y ,z );//縮放 ---
glBegin();//開始畫
glColor3f(r ,g ,b );//顏色
glNormal3f(nx ,ny ,nz );打光法向量 ☆
glTexCoord2f(tx ,ty )//頂點 ☆
glVertex3f(x ,y ,z );//結束
gPMatrix();//還原矩陣
gPMatrix();//還原矩陣
(2)T-R-T
1.旋轉茶壺
(3)打光
STEP:
1.刪除多餘的程式碼留下要用的部分
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
2.留下光源的部分(作用:宣告光源及調整光的方向)
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, 0.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 };
3.成果如下
(4)機器人
(形狀測試)
1.旋轉茶壺
STEP:
1.加入程式碼在 main 函式
glutIdleFunc(display);
2.宣告 float angle=0;
3.加入程式碼
---->移動
---->旋轉STEP:
1.刪除多餘的程式碼留下要用的部分
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
2.留下光源的部分(作用:宣告光源及調整光的方向)
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, 0.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 };
3.成果如下
-----------------------------------------------------我是分隔線-------------------------------------------------------
1.由上往下打光
2.由下往上打光
(形狀測試)
1.正立方體
glutSolidCube(0.5);
沒有留言:
張貼留言