2019年3月29日 星期五

我九歲_Week06

2019/3/8 week6

今天內容: 打光、3D模型OBJ、GLM讀入OBJ

/1/ 先下載解壓縮[data][win32] glut32.dll  source
在桌面創一個windows的資料夾,把解壓縮後的data、win32、glut32.dill 、source放進去


/2/到 https://www.transmissionzero.co.uk/software/freeglut-devel/
下載 Download freeglut 3.0.0 for MinGW 並解壓縮



/3/將freeglut資料夾的libfreeglut複製貼上 並改名為 libglut32.a


/4/在codeblocks開啟一個project
並將source裡的glm.c glm.h貼到codeblocks的資料夾內(glm.c改成glm.cpp)


/5/在codeblocks內的專案按右鍵選擇 Add files 選擇glm.cpp
會加入一個程式碼


/6/將data資料夾放進freeglut裡的bin資料夾即可



/7/執行程式碼


**程式碼**

#include <GL/glut.h> #include "glm.h" GLMmodel* pmodel = NULL; 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 }; float angle=0;///+++ void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (!pmodel) { pmodel = glmReadOBJ("data/soccerball.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH); glutSwapBuffers(); } int main(int argc,char ** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("Week06"); glutDisplayFunc(display); glutIdleFunc(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(); }


沒有留言:

張貼留言