2024年3月28日 星期四

week06

 



https://jsyeh.org/gl/

期中模擬考題>可以在考試前多試一試


##第一個程式碼week06-0_sample

Ctrl-F搜尋light 有八行

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


MainLoop( )之前的2+12行的程式

 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_lighting

貼上GLUT 11 行程式

#include <GL/glut.h>

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("week056 lighting");

    glutDisplayFunc(display);

    ///等等要放12+2行的程式

    glutMainLoop();

}

加上上面的8行跟12+2的程式碼

茶壺會變得有光影


去老師的網站下載https://jsyeh.org/3dcg10/

source data win32

把source data 丟進window並開啟Light&Material


##week06-2_lighting_glNormal3f

把week06-1_lighting的程式拿來用

加上四邊形,有設定法向量



加上上面的程式茶壺就會開始轉動


##week06-3_glm_obj_model

複製11行程式碼

將source裡面的3個城市檔transformation.c   glm.h  glm.c解壓縮

要將專案做設定

把glm.h拉進桌面week06-3_glm_obj_model 目錄裡面

把glm.c拉進桌面week06-3_glm_obj_model 目錄裡面 並把黨名改成cpp

在專案裡面按右鍵Add Files 加入glm.cpp

要把data資料夾 放到桌面\freeglut\bin目錄裡面

用notepad++打開transformation.c 並搜尋glm

會有三個程式碼

1.

#include "glm.h"

2.

GLMmodel* pmodel = NULL;

3.

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

}



更改檔名就能改變顯示的圖形

##把今天的程式碼上傳到gitgub

把codeblicks關閉 並yes存檔

看檔案總管 只留

開啟github 今天的程式乾乾淨淨的上傳

沒有留言:

張貼留言