Week02
(當日未到 Sorry~,事後用小葉老師上課影片補做!)
1.開啟OpenGL & 開啟GLUT (詳情請見Week01 !!!)
2.將GLUT中程式碼精簡留下需學習內容!!! (額外說明可善用Notepad++)
3.介紹程式碼內容及增加茶壺~
#include <GL/glut.h>///使用GLUT外掛
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景
glutSolidTeapot(0.5);///茶壺!!!
glutSwapBuffers();///更新畫面
}
int main(int argc, char *argv[])///main()函式
{
glutInit(&argc, argv);///Init初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///Init初始化Display功能
glutCreateWindow("07160325 小乖的茶壺");///建立自訂名稱的GLUT視窗
glutDisplayFunc(display);///準備display()函式
glutMainLoop();///主要函式
}
中場補充int main() & notepad++複製大法 !!!
4.顏色怎麼來?
glColor3f(R,G,B);///增加顏色
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景
glColor3f(1,0,0);///增加顏色,RGB隨意更改
glutSolidTeapot(0.5);///畫茶壺
glutSwapBuffers();///更新畫面
}
5.課程繼續 ! 開始畫&結束畫 & 有色三角形背景 !
glBegin(GL_TRIANGLES); ///開始畫
glVertex2f(x,y); ///頂點的座標,Vertex=頂點
glEnd(); ///結束畫
static void display(void)
{
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(1,0,0);///增加顏色
glutSolidTeapot(0.5);///畫茶壺
glutSwapBuffers();///更新畫面
}
6.介紹GLBegin
POINTS ///純粹的點
LINE_STRIP ///按照順序的連線
LINE_LOOP ///同上,但最後一點會連回第一點
TRIANGLES ///三角形,每三個點做一個三角形
GL_POLYGON ///多邊形
7.畫圓形!! (用了數學外掛!!)
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
for(float angle=0;angle<3.14159265*2;angle+=0.01){
glVertex2f( cos(angle), sin(angle));
}
glEnd();///圓形
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
for(float angle=0;angle<3.14159265*2;angle+=0.01){
glVertex2f(0.5*cos(angle),0.5*sin(angle));
}
glEnd();///圓形
///如何縮小那個圓 :)
-----------------------------------------------------------------------------------------------------------------------------
正式作圖!!!
怎麼抓色彩?
Ans:使用小畫家的滴管>編輯色彩>RGB編號
怎麼抓位置?
Ans:小畫家>游標移到某個點上>下面會告訴你座標
開畫!
#include <GL/glut.h> ///使用GLUT外掛
#include <math.h> ///使用數學外掛 cos() sin()
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);///"-"表跟小畫家座標上下顛倒,這是那個衣服啦
glColor3f(72/255.0, 90/255.0, 116/255.0);
glVertex2f( (102-150)/150.0 , -(250-150)/150.0 );
glVertex2f( (216-150)/150.0 , -(250-150)/150.0 );
glVertex2f( (192-150)/150.0 , -(176-150)/150.0 );
glVertex2f( (133-150)/150.0 , -(148-150)/150.0 );
glEnd();
glBegin(GL_POLYGON);///"-"表跟小畫家座標上下顛倒,這是那個原諒色
glColor3f(176/255.0, 199/255.0, 146/255.0);
glVertex2f( (156-150)/150.0 , -(136-150)/150.0 );
glVertex2f( (140-150)/150.0 , -(170-150)/150.0 );
glVertex2f( (196-150)/150.0 , -(166-150)/150.0 );
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
///少寫一個,因為預設就是RGB
glutCreateWindow("Week02 07361092!!!");
glutDisplayFunc(display);
glutMainLoop();
}




















沒有留言:
張貼留言