2021年3月3日 星期三

chjyuʕ •ᴥ•ʔ week02 座標貼圖+上色

 1.簡化程式碼

(1)CodeBlocks打開OpenGL-找到OpenGL程式碼

*留下反白的五行










(2)到moodle下載glut,放到桌面-改檔名libglut32.a








(3)同個頁面再開啟glut-打開Glut程式碼








(4)更改GLUT程式碼,先把初始程式碼放在Notepad++-更改程式碼










更新後的程式碼:

#include <GL/glut.h>

static void display(void)///使用GLUT外掛程式

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景

    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);///初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    ///初始化Display功能

    glutCreateWindow("我是08160910 GOOD!");///建立GLUT視窗

    glutDisplayFunc(display);

    glutMainLoop();

}

執行結果:



















(5)改變茶壺顏色
程式碼:
#include <GL/glut.h>

static void display(void)

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f( 1, 0, 0 );///多加這一行
    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("我是08160910 GOOD!");


    glutDisplayFunc(display);


    glutMainLoop();

}

執行結果:




















(6)從OpenGL擷取三角形程式碼:













程式碼:
glBegin(GL_TRIANGLES);

        glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f,   1.0f);
        glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.87f,  -0.5f);
        glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.87f, -0.5f);

    glEnd();

(7)把OpenGL程式碼加進glut

程式碼:
#include <GL/glut.h>

static void display(void)///使用GLUT外掛程式

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_TRIANGLES);///增加的程式碼

        glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f,   1.0f);
        glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.87f,  -0.5f);
        glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.87f, -0.5f);

    glEnd();

    glColor3f( 0.5, 1, 0.1 );
    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);///初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    ///初始化Display功能

    glutCreateWindow("我是08160910 GOOD!");///建立GLUT視窗


    glutDisplayFunc(display);


    glutMainLoop();

}
執行結果:

*glColor3f( R, G, B):顏色

 gl         = GL程式
 Color3 = 三原色(紅綠藍)
 f           = float小數點(顏色可增加小數點)

*glvertex3f(x, y, z):頂點
gl         = GL程式
vertex  = 頂點
3f        = xyz
2f        = xy


(8)GL...程式碼變化



EX:程式碼
#include <GL/glut.h>

static void display(void)///使用GLUT外掛程式
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_LINE_LOOP);///更變程式碼

        glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f,   1.0f);
        glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.87f,  -0.5f);
        glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.87f, -0.5f);

    glEnd();

    glColor3f( 0.5, 1, 0.1 );
    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);///初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    ///初始化Display功能

    glutCreateWindow("我是08160910 GOOD!");///建立GLUT視窗


    glutDisplayFunc(display);


    glutMainLoop();

}

執行結果:




(9)畫出圓
程式碼:
#include <GL/glut.h>
#include <math.h>

static void display(void)///使用GLUT外掛程式
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);

        glColor3f(1.0f, 0.0f, 1.0f);
        for(float angle=0; angle<=3.14159265358979*2; angle+=0.01){
            glVertex2f( 0.5*cos(angle), 0.5*sin(angle));///不一定要用0.5,因為想讓圓小一點所以才用0.5
        }

    glEnd();

    glColor3f( 0.5, 1, 0.1 );
    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);///初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    ///初始化Display功能

    glutCreateWindow("我是08160910 GOOD!");///建立GLUT視窗


    glutDisplayFunc(display);


    glutMainLoop();

}
執行結果:




















執行結果:(未*0.5)



















沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...