茶壺
1.開一個OpenGL,下載freeglut,再開一個GLUT,簡化main()函式並更改視窗名稱
int main(int argc, char *argv[])///main()函式
{
glutInit(&argc, argv);///Init初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
///Init初始化Display的功能
glutCreateWindow("08160173張淳雅O.O");///建立GLUT視窗
glutDisplayFunc(display);///準備display()函式
glutMainLoop();///主要函式
}
簡化display()函式並繪製一個茶壺
static void display(void)
{
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;///清背景
glutSolidTeapot(0.3);
glutSwapBuffers();///更新畫面
}
2.重新開啟新的GLUT,新增顏色
#include <GL/glut.h>
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1, 0, 0);///(R,G,B)
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("08160173張淳雅O.O");
glutDisplayFunc(display);
glutMainLoop();
}
3.在茶壺後面加三角形(先寫三角形,再寫茶壺)
void display(){
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, 1, 1);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
*各種繪圖參數*
來源: http://www.dgp.toronto.edu/~ah/csc418/fall_2001/tut/ogl_draw.html
4.利用數學運算、多邊形參數
#include <GL/glut.h>
#include <math.h> ///使用數學外掛 cos()、sin()
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);///多邊形
glColor3f(1.0f, 0.0f, 0.0f);
for (float angle=0; angle<3.1415963*2; angle+=0.01){
glVertex2f( cos(angle), sin(angle) );
}
glEnd();
glColor3f(1, 1, 1);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
畫圖
1.沿用上面的檔案做修改劃出一個三角形
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(176/225.0, 199/225.0, 146/225.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();
}
2.加入第二個色塊
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(72/225.0, 90/225.0, 116/225.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/225.0, 199/225.0, 146/225.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();
}
*作業二*
利用頂點、色彩, 畫出你覺得很帥的圖片
請利用老師上課時教的點線面顏色, 來設計畫出你想要呈現的圖
註: 請上傳「1張截圖」, 同時看到CodeBlocks程式碼, 也有執行時秀出來的圖
1. 頂點可以多一點
2. 色彩可以漂亮一點
3. 老師教小畫家,可幫你找出色彩、座標, 記得做單位換算成 -1...+1












沒有留言:
張貼留言