2024年3月28日 星期四

week06

可在這個網址練習其中考內容https://jsyeh.org/gl/opengl_10_func.html


必背10行程式碼

1.glPushMatrix()://備份矩陣
2.  glTranslatef(x,y,z);平移
3.  glRotatef(angle,x,y,z);轉動
4.  glScalef(x,y,z);//放大縮小
5.  glBegin(GL_POLYGON);開始畫
6.    glColor3f(r,b,b);//顏色
7.    glTexCoord2f(tx,ty)//貼圖座標
8.    glNormal3f(nx,ny,nz);//打光的法向量
9.    glVertex3f(a,b,c);//頂點座標
10. glEnd();//結束畫
11.glPopMatrix();還遠矩陣

 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_lighting

                                             開GLUT專案並取成week06-1_lighting

                                 貼上GLUT 11行程式並貼上week06-0_sample程式碼

                                                        執行後茶壺是黑色的

                                                               因為背光

                                                     所以需要更改光線的位置

                        const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };//改成-5


改完之後會變成銀色的


jsyeh.org/3dcg10下載 source data win32
windows.zip>下載\windows\Light Material.exe
data.zip>下載\windows\data\一堆模型檔


File-New-Project, GLUT專案,week06-2_lighting_glNormal3f
把剛剛的程式week06-1_lighting拿來用
加上四邊形, 有設定法向量



File-New-Project, GLUT專案,week06-3_glm_obj_model
貼入11行的GLUT程式
從課本範例學習source.zip有3個程式檔:transformation.c glm.h glm.c解壓縮
要將專案做設定
把glm.h放到桌面\week06-3_glm_obj_model目錄裡,改檔名 glm.cpp
在專案裡按右鍵Add Files,加入glm.cpp
用Notedpad++開啟 transformation.c研究他的程式碼,關鍵字glm找到程式碼

把Codeblocks關閉,並Yes存檔(不然專案會出錯)
看檔案總管 只留.cpp .h.cbp 檔案,其他全刪
開啟GitHub, 今天的程式(乾乾淨淨)上傳














沒有留言:

張貼留言