2019年3月29日 星期五

ㄟOWOㄏ - Week06

{\__/}
( • - •)
❤️ < \

\先來看看我們的成品圖/




步驟開始 ↓ 


STEP 1 → 先將開啟GLUT的前置作業做完。(參考ㄟOWOㄏ - Week01)

STEP 2 →參考ㄟOWOㄏ - Week02的模擬器下載流程,下載那三個檔案以及source。
                 (3+1個檔案)

STEP 3 →開啟codeblocks將程式碼複製進去。(有一部份手打,完整程式碼請看最下方)

STEP 4 →將data.zip裡的data資料夾拉入freeglut的bin資料夾裡。



STEP 5 →再從source.zip裡把glm.h和glm.c拉至你已經開起的codeblocks檔案裡。
                 (glm.c記得改成glm.cpp)



STEP 6 →在06160070那按右鍵→Add files→glm.cpp



STEP 7 →快跑跑看吧!



補程式碼 ↓ 


#include <GL/glut.h>
#include "glm.h"
GLMmodel*pmodel = NULL;

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

float angle=0;///+++

void display()

{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    if(!pmodel){
        pmodel=glmReadOBJ("data/AL.obj");
        if(!pmodel) exit(0);
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel,90.0);
    }
    glmDraw(pmodel,GLM_SMOOTH);
    glutSwapBuffers();
}

int main(int argc,char ** argv)

{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week05 light");
    glutDisplayFunc(display);
    glutIdleFunc(display);///+++

    glClearColor(1,1,1,1);
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);
    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);

    glutMainLoop();

}























沒有留言:

張貼留言