2018年3月12日 星期一

Week02_彭仁慧

寫出我的第一個OpenGL

(1)開啟一個新的GLUT專案



(2)檔名設為week02_mytriangle


(3)這個步驟和之前一樣,之後Finish


(4)然後把程式碼全部刪除,重新撰寫


#include <stdio.h>
#include <GL/glut.h>
///(1)我們使用比較高級的GLUT (OpengGL User Toolkit)
void display()
{
    glClear(GL_COLOR_BUFFER_BIT); ///(8)清理畫面
    glutSolidTeapot(0.3); ///(9)大小為0.3的茶壺

    glutSwapBuffers(); ///(10)交換 double buffers來顯示畫出來的畫面
}
int main(int argc, char **argv) ///(2)這個參數的意思, 是把作業系統的參數塞進來
{
    glutInit(&argc, argv); ///(3)初始Initialize 你的glut參數設定
    glutInitDisplayMode(GLUT_DOUBLE); ///(4)顯示模式:double buffers
    glutCreateWindow("Week02 Hello World Triangle"); ///(5)建立視窗

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

(5)茶杯和背景可以換顏色
◆ glClearColor(147/255.0, 253/255.0, 253/255.0, 1); ///清背景的顏色
◆ glColor3f(252/255.0, 221/255.0, 48/255.0); ///茶杯的顏色
顏色函式是RGB:glColor3f(紅, 綠, 藍);
   背景顏色函式要注意第四個是透明程度,透明設0, 不透明設1。
   想要的顏色可以從小畫家知道他的RGB ↓
   
   上面 glColor3f 的f 是浮點數,所以要介於0到1之間,要除以255.0
   或是用glColor3ub寫就不用換成浮點數。ex: glColor3ub(252, 221, 48);
↓ ↓ ↓著色後的茶壺 ↓ ↓ 

(6)畫彩色三角形
 
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(); ///結束畫

*glVertex2f(x座標, y座標); 是座標函式,範圍要在 -1 到 1 之間。

(7)用小畫家找出座標
小畫家的左下角有座標
↓ 程式碼 ↓
glBegin(GL_POLYGON); ///開始畫
        glColor3ub(252, 221, 48); ///用小畫家來取顏色, 也可以取出座標
        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 再除400, 便會介於-1, +1
glEnd(); ///結束畫
燈燈燈 ↓ ↓ 

沒有留言:

張貼留言