2022年6月14日 星期二

電腦圖學筆記week17

總複習

 Step01

  • 開啟CodeBlocks
  • 建立新GLUT專案  week17_demo
  • 將week17_demo.cbp檔打開然後將workingdir " "內改成"."
  • 回去執行程式後發現城市跑不動
         
  • 所以要去freeglut資料夾->bin->freeglut.dll將他複製到week17_demo的資料夾裡面

  • 可以執行了
  • 將10行程式碼導入

  • 加入打光函式,打完再將mylight()導入main函式
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 };

void mylight(){
    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);
}

  • 把glm.h、glm.c加入week17_demo,把glm.c改成glm.cpp
  • add files將glm.cpp導入CodeBlocks中

  • 加入攝影機,並在main函式加入glutReshapeFunc(reshape);
void reshape(int w,int h){
    float ar = (float)w/(float)h;
    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60,ar,0.1,100.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0,0,-5, 0,0,0, 0,1,0);
}

  • 加入複數貼圖,先宣告兩個整數 GLuinit tex1,tex2;
  • 在main函式中 加入 tex1= myTexture("data/.......");
  • tex2 = myTexture("data/......");
  • 在 display()內加入 glBindTexture(GL_TEXTURE_2D, tex1);
  • glBindTexture(GL_TEXTURE_2D , tex2);

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...