2021年3月17日 星期三

Xian筆記-Week02

 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(); }






























沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...