2024年3月25日 星期一

軒week06

##期中模擬考練習6666


打光

##week06-0_sample_code

1.安裝freeglut,將lib\libfreeglut.a複製成libglut32.a

2.File-New-Project,GLUT專案,week06-0_sample_code

3.研究一下,main.cpp程式碼177行,找到全部的 light 光 相關的程式


##week06-1_lighting

1.先貼上11行GLUT的程式

2.再把剛剛20行程式拿來用

3.會畫出一個很立體的茶壺

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);


##課本範例


##week06-2_lighting_glNormal3f

1.貼上week06-1_lighting的程式

2.把茶壺變成正方形

3.加上mouse轉動這個茶壺


##week06-3_glm_obj_model

1.把11行程式GLUT先做出來

2.參考 source.zip 裡面的 transformation.c 

/*void drawmodel(void)

{

    if (!pmodel) {

pmodel = glmReadOBJ("data/porsche.obj");

if (!pmodel) exit(0);

glmUnitize(pmodel);

glmFacetNormals(pmodel);

glmVertexNormals(pmodel, 90.0);

    }

    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);

}*/

3.1.#include "glm.h"

3.2.GLMmodel * pmodel = NULL;

4.讀模型、畫模型 void drawmodel

5.檔案準備好:

5.1.glm.h 放到 week06-3_glm_obj_model 目錄裡

5.2.glm.c 放到 week06-3_glm_obj_model 目錄裡,改檔名 glm.cpp

5.3.專案,按右鍵,新增檔案,將 glm.cpp 加入專案

5.4.將 data 資料夾,複製到桌面 \freeglut\bin 執行目錄裡

5.5.把 glutSolidTeapot(0.3); 換成 drawmodel();


 

沒有留言:

張貼留言