![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipERCCxabh9FQAQex6pZqpRBXwQPagkS6ExeIaApKh4bSrz3ogiMYL9WQ-USSYsOi42-UzJV1l3WeySwDopCYK7LuVVLbXRWo3M-6nYlsIV1fXt2oNKmsjxKYmbG85Q3Ugf-uZCbbpAlux/s640/1.png)
然後刪減程式碼
#include <Gl/glut.h>
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(x,y,z);
///glRotated(a,x,y,z);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
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 };
/* Program entry point */
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glClearColor(1,1,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);
glutMainLoop();
return EXIT_SUCCESS;
}
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg89CdsLGva4982XEssfntkrVTTSuKTnLU5b2-MAq06P3bCMZTqTSVovZo8TiLLj-wwuAUiYzPze1XVC6XEcLwpYJyPIWJMmmfyYs6BkcUdgsuF8S15hJQDyjt5v2JZ1sY0Hn8at1cCiTrc/s640/2.png)
改變參數讓光改變
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 };
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBl6KyPWbydz-x6JuAOGMIs_SQ4gygFTKh6YX7IuEBDe17Y-hshgeXR0WMGBSz00hjjlCpvpMiE0kiS3PD77CNUZnPwa6zJO1AzF7tpZwMjY18SiVflJClzAkXqO8ILWoaXRHMz8sulWf_/s640/3.png)
加入程式碼讓茶壺轉動
#include <Gl/glut.h>
float angle=0;
static void display(void)
{
angle++;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0,0.6,0);
glutSolidTeapot(0.3);
glPopMatrix();
glPushMatrix();
glRotated(angle,0,1,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
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 };
/* Program entry point */
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutIdleFunc(display);
glutDisplayFunc(display);
glClearColor(1,1,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);
glutMainLoop();
return EXIT_SUCCESS;
}
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0zcmV9vnSp6-SAFKggQ6bB5XVTSf6owOngBoxjh2yomwlNRypVTI4-sojMkYysTc1K-vmIEJs7wy1NRC27I2Q5tysA7XnjPA3MPqV4Xqq3NL-OwlY9I7yLxmQvuQpPhGGseNNxZfBKdZX/s640/4.png)
加入輸出方形的程式碼
glutSolidCube(0.3);
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-WH_DmimOKDjuqBWg6vhfcHDmruWflpfno_YbRW5XiMMJTHzxSlxXksXUwldybrzFx0N76sRneY8fsKTXKTb1_VyujPKS9f0XGNLE_mRQkKqRdVKx2VaJjBsLIKOW1YHFZrrY-EkEnBVT/s640/5.png)
加入輸出圓錐的程式碼
glutSolidCone(0.3 ,0.3,10,10);
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXrCCaBqUzCl2KHan7dRojXo26qfLqR8oXjYsvdGEvPRj_AicTQtcSjPvTckRIFoLM9cxMPuM7ddDD_7Q8Bqf0VWflN6ggU0bdV2ZmC2Fb5_gBpeSMcN1Ymcd7ifPzR6urNd-NxtIy22v2/s640/6.png)
加入輸出圓形的程式碼
glutSolidSphere(0.3,30,30);
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPLpyiukMIJvdPLhXJUbG5SKUI2lLYu3nuXGpCLKAwfo6rsT21w7MSv58WpLY4i76pRdscvkWZl1p82FlN_otjmV-pnRfLs46YtObcgWJfvSu460BJ6q3gmxm4KYEfsQhm47HJKIUQTHK0/s640/7.png)
沒有留言:
張貼留言