電腦圖學---6
下載
data (裡面有MAYA圖案,移動到Windows資料夾)
win32 (解壓縮會有Windows資料夾)
glut32.dll (移動到Windows資料夾)
點選 Windows資料夾 裡面的 Light Material
下載 source
把 glm.cpp 、glm.h 、lightmaterial.c 解壓縮到Windows
( 把glm.c→glm.cpp )
把 data放到 freeglut 中的 bin 資料夾中
貼上 上禮拜的程式碼
#include <GL/glut.h>
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 };
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
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()的前面
glutMainLoop();
}
剪貼程式碼,製作立體足球
#include <GL/glut.h>
#include "glm.h" ///讀入3D模型 第一步,使用GLM,"glm.h"要放在同一個目錄
GLMmodel* pmodel = NULL; ///讀入3D模型 第二步,GLMmodel 變數,等一下讀入的3D模型
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 };
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (!pmodel) { ///第三步 讀入3D模型
pmodel = glmReadOBJ("data/soccerball.obj"); ///讀入3D模型
if (!pmodel) exit(0); ///讀入3D模型
glmUnitize(pmodel); ///讀入3D模型
glmFacetNormals(pmodel); ///讀入3D模型
glmVertexNormals(pmodel, 90.0);///讀入3D模型
}
glmDraw(pmodel, GLM_SMOOTH); ///讀入3D模型
glutSwapBuffers();
}
int main(int argc, char * argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("alanhc");
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);
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
⧪ 解釋三大目錄 include && link && bin
1.include: 拉進去,匯入作用 #include<stdio.h>
2.link: 鏈結,連結作用
3.bin: binanry二進位,電腦部顯示,為亂碼,看不懂的程式碼放的地方
➽補充
如何把程式貼的好看
打開codeblocks
↓
外掛
↓
NppExport
↓
Export to HTML
↓
就會有 彩色的 美美的 程式碼
沒有留言:
張貼留言