2018年3月5日 星期一

week02 呆江的筆記

第二周進度:點線面、顏色

Demo程式:shape

來源:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
需要檔案:data.zip、windows.zip、glut32.dll

下載完畢後解壓縮
§glut32.dll需與執行檔在同一層

執行結果


glColor3f(r,g,b);
gl 表示是OpenGL的函式
Color 表示顏色
3 表示參數數量為3
f 表示為float浮點數(範圍由0.0 - 1.0)

glVertex2f(x,y);
gl 表示是OpenGL的函式
Vertex 表示頂點
2 表示參數數量為2
f 表示為float浮點數

實作:

我們所需要的程式碼:
 glVertex2f(x,y); ///頂點位置
glColor3ub(0,0,0); ///顏色

建立新專案(GLUT)

§GLUT程式碼,除圈起處為前面OpenGL檔複製的程式碼





執行結果

三角形



茶壺
glutSolidTeapot(0.3); ///繪製茶壺
glColor3f(1,1,0); ///黃色





























三角形(程式碼如結果旁)











當周作業:繪製20點以上的圖






















程式碼:

#include <GL/glut.h>

static void display(void)
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glColor3ub(255,255,255); ///白色

        glVertex2f((153-150)/150.0,-(95-150)/150.0);
        glVertex2f((173-150)/150.0,-(98-150)/150.0);
        glVertex2f((177-150)/150.0,-(99-150)/150.0);
        glVertex2f((183-150)/150.0,-(100-150)/150.0);
        glVertex2f((195-150)/150.0,-(107-150)/150.0);
        glVertex2f((201-150)/150.0,-(112-150)/150.0);
        glVertex2f((205-150)/150.0,-(116-150)/150.0);
        glVertex2f((209-150)/150.0,-(122-150)/150.0);
        glVertex2f((211-150)/150.0,-(130-150)/150.0);
        glVertex2f((214-150)/150.0,-(138-150)/150.0);
        glVertex2f((214-150)/150.0,-(146-150)/150.0);
        glVertex2f((214-150)/150.0,-(153-150)/150.0);
        glVertex2f((213-150)/150.0,-(160-150)/150.0);
        glVertex2f((209-150)/150.0,-(168-150)/150.0);
        glVertex2f((207-150)/150.0,-(175-150)/150.0);
        glVertex2f((202-150)/150.0,-(182-150)/150.0);
        glVertex2f((196-150)/150.0,-(186-150)/150.0);
        glVertex2f((189-150)/150.0,-(191-150)/150.0);
        glVertex2f((183-150)/150.0,-(193-150)/150.0);
        glVertex2f((175-150)/150.0,-(197-150)/150.0);
        glVertex2f((168-150)/150.0,-(198-150)/150.0);
        glVertex2f((159-150)/150.0,-(199-150)/150.0);
        glVertex2f((149-150)/150.0,-(199-150)/150.0);
        glVertex2f((139-150)/150.0,-(198-150)/150.0);
        glVertex2f((131-150)/150.0,-(197-150)/150.0);
        glVertex2f((124-150)/150.0,-(193-150)/150.0);
        glVertex2f((119-150)/150.0,-(190-150)/150.0);
        glVertex2f((115-150)/150.0,-(186-150)/150.0);
        glVertex2f((110-150)/150.0,-(181-150)/150.0);
        glVertex2f((105-150)/150.0,-(175-150)/150.0);
        glVertex2f((103-150)/150.0,-(169-150)/150.0);
        glVertex2f((100-150)/150.0,-(161-150)/150.0);
        glVertex2f((98-150)/150.0,-(154-150)/150.0);
        glVertex2f((98-150)/150.0,-(146-150)/150.0);
        glVertex2f((99-150)/150.0,-(139-150)/150.0);
        glVertex2f((101-150)/150.0,-(131-150)/150.0);
        glVertex2f((104-150)/150.0,-(123-150)/150.0);
        glVertex2f((108-150)/150.0,-(116-150)/150.0);
        glVertex2f((114-150)/150.0,-(109-150)/150.0);
        glVertex2f((118-150)/150.0,-(105-150)/150.0);
        glVertex2f((123-150)/150.0,-(102-150)/150.0);
        glVertex2f((129-150)/150.0,-(100-150)/150.0);
        glVertex2f((138-150)/150.0,-(98-150)/150.0);
        glVertex2f((147-150)/150.0,-(96-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
        glColor3ub(0,0,0); ///黑色
        glVertex2f((168-150)/150.0,-(128-150)/150.0);
        glVertex2f((171-150)/150.0,-(141-150)/150.0);
        glVertex2f((166-150)/150.0,-(142-150)/150.0);
        glVertex2f((163-150)/150.0,-(130-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
        glVertex2f((198-150)/150.0,-(123-150)/150.0);
        glVertex2f((201-150)/150.0,-(137-150)/150.0);
        glVertex2f((205-150)/150.0,-(137-150)/150.0);
        glVertex2f((203-150)/150.0,-(123-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
        glVertex2f((180-150)/150.0,-(146-150)/150.0);
        glVertex2f((197-150)/150.0,-(145-150)/150.0);
        glVertex2f((197-150)/150.0,-(151-150)/150.0);
        glVertex2f((180-150)/150.0,-(152-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
        glColor3ub(253,212,204); ///粉紅色
        glVertex2f((159-150)/150.0,-(141-150)/150.0);
        glVertex2f((155-150)/150.0,-(144-150)/150.0);
        glVertex2f((153-150)/150.0,-(148-150)/150.0);
        glVertex2f((153-150)/150.0,-(153-150)/150.0);
        glVertex2f((157-150)/150.0,-(157-150)/150.0);
        glVertex2f((163-150)/150.0,-(158-150)/150.0);
        glVertex2f((167-150)/150.0,-(156-150)/150.0);
        glVertex2f((169-150)/150.0,-(152-150)/150.0);
        glVertex2f((169-150)/150.0,-(147-150)/150.0);
        glVertex2f((166-150)/150.0,-(144-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
        glColor3ub(253,212,204); ///粉紅色
        glVertex2f((202-150)/150.0,-(140-150)/150.0);
        glVertex2f((201-150)/150.0,-(144-150)/150.0);
        glVertex2f((206-150)/150.0,-(151-150)/150.0);
        glVertex2f((211-150)/150.0,-(150-150)/150.0);
        glVertex2f((212-150)/150.0,-(147-150)/150.0);
        glVertex2f((212-150)/150.0,-(144-150)/150.0);
        glVertex2f((212-150)/150.0,-(141-150)/150.0);
        glVertex2f((207-150)/150.0,-(138-150)/150.0);
    glEnd();
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize( 300, 300 ); ///視窗大小300*300
    glutCreateWindow("05163021"); ///視窗名字
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f); ///視窗底色:黑


    glutDisplayFunc(display);

    glutMainLoop();

    return EXIT_SUCCESS;
}


沒有留言:

張貼留言