2021年5月3日 星期一

week11

 2.File-New-Project,GLUT專案(把freeglut準備好)

2.1.source.zip裡:glm.h放專案:桌面week10_modle

2.2 glm.c(改成gim.cpp) 放專案:桌面 week10_modle

2.3 transformation.c 複製內容, 到main.cpp裡

2.4 在CodeBlocks裡 左邊Add File,glm.cpp加入 


放入data模型

#include"glm.h"

GLMmodel*pmodel=NULL;


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

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    drawmodel();

    glutSwapBuffers();

}

int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("week11");


    glutDisplayFunc(display);

    glutMainLoop();

}

開始寫自己的glm程式
#include "glm.h"
GLModel *pmodel=NULL
void drawmodel()
display()裡 呼叫drawmodel()即可



整合打光
copy上週的 打光陣列
copy上週的 打光設定
調光的位置(Z的正負改一下)
模型轉到正面

#include"glm.h"

GLMmodel*pmodel=NULL;


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

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    drawmodel();

    glutSwapBuffers();

}


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



int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("week11");

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




    glutDisplayFunc(display);

    glutMainLoop();

}

 





沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...