2024年3月25日 星期一

小白學圖學 Week06

OpenGL圖學期中考-模擬練習 

jsyeh.org/gl























## week06-0_sample_code

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

1.File-New-Project,GLUT專案,Week06-0_smaple_code

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

20行程式碼 8+12行

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

_____________________________________________________________________________

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-1_lightning

1.File-New-Project,GLUT專案,week06-1_lightning

2.先貼上11行GLUT的程式

3.再把剛剛的20行程式碼拿來用















程式碼照片





程式照片







透過更改Position數值可以改變光源位置
























透過更改Diffuse數值可以改變光源顏色





















## week06-2_lighting_glNormal3f
1.File-New-Project,GLUT專案,week06-2_lighting_glNormal3f
2.貼上剛剛的week06-1_lightning程式
3.我們要把茶壺變成一個正方形
4.加上mouse轉動這個正方形






程式照片










## week06-3_glm_obj_model
1.File-New-Project,GLUT專案,week06-3_glm_obj_model
2.把11行GLUT,先做出來
3.參考sorce裡面的transformation.c
3.1.#include "glm.h"
3.2.GLModel*pmodel = Null;
3.3讀模型,畫模型



沒有留言:

張貼留言