2018年3月9日 星期五

week02 帥氣GLUT實作 葉政翰


第一個自己寫程式碼

#include <stdio.h>
#include <GL/glut.h>
int main(int argc, char **argv)
{
    for(int i=0;i<argc;i++)
    {
           printf("argv[i] : %s\n", i ,argv);
    }
}

打上上面的程式碼之後
    (1) 把freeglut\bin裡的freeglut.dll複製到codeblocks專案資料夾的bin\Debug裡
    (2)試著執行程式碼
    (3)開啟cmd、輸入cd 去檔案中的bin\Debug 後按Enter
                                                   ex: cd Desktop\week02_GLUT\bin\Debug
    (4) 再輸入 (檔案名字).exe (輸入你要的字串)

附上一張圖:
 
寫一個茶壺圖:

#include <stdio.h>
#include <GL/glut.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE);
    glutCreateWindow("Week Hello World Triangle");

    glutDisplayFunc(display);
    glutMainLoop();
}



茶壺的顏色變換 --- 方法1

#include <stdio.h>
#include <GL/glut.h>
///(1) 我們要使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);///(8)清畫面
    glColor3f(120/255.0,1,205/255.0);///今天交的程式碼:color
    glutSolidTeapot(0.3);///(9) 大小為0.3的茶壺
    glutSwapBuffers();///(10)交換double buffers 來顯示畫出來的畫面
}
int main(int argc, char **argv)///(2)主要的函式 main
{ /// 這個參數的意思,是把作育系統的參數,塞進來
    glutInit(&argc, argv);///(3)初始Initizlize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE);///(4)顯示模式:double buffers (以後再教其他)
    glutCreateWindow("Week Hello World Triangle");///(5)建立視窗

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


茶壺的顏色變換 --- 方法2

#include <stdio.h>
#include <GL/glut.h>
///(1) 我們要使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);///(8)清畫面
    ///glColor3f(120/255.0,1,205/255.0);///今天交的程式碼:color
    ///gl代表示OpenGL的函式 (cf. glut開頭, 表示是GLUT的函式)
    /// 3f 3表示3個參數, f表示float浮點數 0.0 ... 1.0
    glColor3ub(248, 199, 20); ///ub: unsigned char byte 0...255
    glutSolidTeapot(0.3);///(9) 大小為0.3的茶壺
    glutSwapBuffers();///(10)交換double buffers 來顯示畫出來的畫面
}
int main(int argc, char **argv)///(2)主要的函式 main
{ /// 這個參數的意思,是把作育系統的參數,塞進來
    glutInit(&argc, argv);///(3)初始Initizlize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE);///(4)顯示模式:double buffers (以後再教其他)
    glutCreateWindow("Week Hello World Triangle");///(5)建立視窗

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



茶壺的背景顏色變換

#include <stdio.h>
#include <GL/glut.h>
///(1) 我們要使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClearColor(68/255.0, 178/255.0, 134/255.0, 1);///清背景顏色
    glClear(GL_COLOR_BUFFER_BIT);///(8)清畫面
    ///glColor3f(120/255.0,1,205/255.0);///今天交的程式碼:color
    ///gl代表示OpenGL的函式 (cf. glut開頭, 表示是GLUT的函式)
    /// 3f 3表示3個參數, f表示float浮點數 0.0 ... 1.0
    glColor3ub(248, 199, 20); ///ub: unsigned char byte 0...255
    glutSolidTeapot(0.3);///(9) 大小為0.3的茶壺
    glutSwapBuffers();///(10)交換double buffers 來顯示畫出來的畫面
}
int main(int argc, char **argv)///(2)主要的函式 main
{ /// 這個參數的意思,是把作育系統的參數,塞進來
    glutInit(&argc, argv);///(3)初始Initizlize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE);///(4)顯示模式:double buffers (以後再教其他)
    glutCreateWindow("Week Hello World Triangle");///(5)建立視窗

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



多邊形頂點

#include <stdio.h>
#include <GL/glut.h>
///(1) 我們要使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClearColor(68/255.0, 178/255.0, 134/255.0, 1);///清背景顏色
    glClear(GL_COLOR_BUFFER_BIT);///(8)清畫面
    glBegin(GL_POLYGON);
        glColor3f(1,0,0);   glVertex2f(-1,-1);
        glColor3f(0,1,0);   glVertex2f(+1,-1);
        glColor3f(0,0,1);   glVertex2f(0,1);
    glEnd();
    glutSwapBuffers();///(10)交換double buffers 來顯示畫出來的畫面
}
int main(int argc, char **argv)///(2)主要的函式 main
{ /// 這個參數的意思,是把作育系統的參數,塞進來
    glutInit(&argc, argv);///(3)初始Initizlize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE);///(4)顯示模式:double buffers (以後再教其他)
    glutCreateWindow("Week Hello World Triangle");///(5)建立視窗

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




多邊形頂點2

#include <stdio.h>
#include <GL/glut.h>
///(1) 我們要使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClearColor(68/255.0, 178/255.0, 134/255.0, 1);///清背景顏色
    glClear(GL_COLOR_BUFFER_BIT);///(8)清畫面
    glBegin(GL_POLYGON); ///開始畫
        glColor3ub(51,97,161);///用小畫家來取顏色, 也可以取出座標
        glVertex2f((137-400)/400.0, -(467-400)/400.0);///如果座標是137, 467 (800X800的圖)
        glVertex2f((177-400)/400.0, -(194-400)/400.0);///先把中心點減掉 (137-400) (467-400)
        glVertex2f((243-400)/400.0, -(245-400)/400.0);///-400 ... +400 便會介於 -1...+1
    glEnd();///結束畫
    glutSwapBuffers();///(10)交換double buffers 來顯示畫出來的畫面
}
int main(int argc, char **argv)///(2)主要的函式 main
{ /// 這個參數的意思,是把作育系統的參數,塞進來
    glutInit(&argc, argv);///(3)初始Initizlize你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE);///(4)顯示模式:double buffers (以後再教其他)
    glutCreateWindow("Week Hello World Triangle");///(5)建立視窗

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


沒有留言:

張貼留言