2018年3月9日 星期五

Week 02 宋侑恩

Week 02 - Part 1 - 使用較高級的GLUT

先開啟一個OpenGL專案

開啟一個GLUT專案

再開啟一個GLUT專案命名為week02_mytirangle(今天的程式碼通通都寫在這個專案裡)

將week02_mytriangle專案中main.cpp的所有程式刪除,寫下自己的程式碼

#include <stdio.h>
#include <GL/glut.h>
///使用比較高級的GLUT (OpenGL User Toolkit)
int main (int argc,char ** argv)
///這個參數的意思,是把作業系統的參數塞進來
///argc : 參數個數
///argv : 參數的字串值
{
    for(int i=0;i<argc;i++){
        printf("argv[%d]:%s\n",i,argv[i]);
    }
}


打開已經接壓縮的freeglut→bin 複製 freeglut.dll
打開week02_mytriangle → bin → Debug 將剛剛複製的freeglut.dll貼上

打開cmd小黑盒子看剛剛程式的結果
C:\Users\N>cd Desktop\week02_mytriangle\bin\Debug
C:\Users\N>cd Desktop\week02_mytriangle\bin\Debug>week02_triangle.exe show the result
最後就可以看到結果了!!!

Week 02 - Part 2 - 畫出茶壺

#include <stdio.h>
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT); ///清畫面
    glutSolidTeapot(0.3); ///大小為0.3的茶壺
    glutSwapBuffers(); ///交換double buffers來顯示畫出來的畫面
}
int main (int argc,char ** argv) ///主要的函式 main
///這個參數的意思,是把作業系統的參數,塞進來
{
    glutInit(&argc,argv); ///初始Initialize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE); ///顯示模式:double buffers
    glutCreateWindow("Week02 Hello World Triangle"); ///建立視窗

    glutDisplayFunc(display); ///顯示函式display()來畫圖
    glutMainLoop(); ///主要的迴圈,來控制程式
}


幫茶壺上色

void display()
{
    glClearColor(64/255.0,0,128/255.0,1); ///背景的顏色和透明度
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3ub(255,174,201);///今天教的程式:Color
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

今天教的程式碼:Color(兩種寫法)
(1)glColor3f(1,174/255.0,201/255.0); ///3f : 3代表3個參數,f代表float浮點數(0.0~1.0)
(2)glColor3ub(255,174,201); ///ub : unsigned char byte(0~255)
    ///括號中代表 R G B : glColor3f(R,G,B)/glColor3ub(R,G,B)
幫背景上色

glClearColor(64/255.0,0,128/255.0,1); 
///幫背景上色,括號中代表 R,G,B,透明度,glClearColor(R,G,B,透明度)

Week 02 - Part 3 - My Triangle 畫出一個三角形

利用點線面來畫出一個三角形

void display()
{
    glClearColor(64/255.0,0,128/255.0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);///開始畫
        glColor3ub( 0 ,255,255); glVertex2f(-1,-1);///glColor3ub(R,G,B) 上色
        glColor3ub(255,255,128); glVertex2f(+1,-1);///glVertex2f(x,y) 代表頂點位置
        glColor3ub(255,128,255); glVertex2f(0,1);
    glEnd();///結束畫
    glutSwapBuffers();
}

沒有留言:

張貼留言