按右鍵點選GL_POINTS,為六個點,右邊綠色數字上可用滑鼠拖曳移動,
來調整顏色及點的位置。
按右鍵點選GL_LINE,為兩條直線,可更改點、線的顏色及座標。
按右鍵點選GL_LINE_LOOP,為一個迴圈,最後一個點會與第一個點連起來。
按右鍵點選GL_LINE_STRIP,最後一個點不會跟第一個點連起來(彩帶)。
按右鍵點選GL_TRIANGLES,為一個三角形。
按右鍵點選GL_TRIANGLES_FAN,為一個四邊形,可調整形狀
(每個頂點都可換顏色)。
按右鍵點選GL_TRIANGLES_STRIP,為一個四邊形,可調整形狀,也可摺疊。
按右鍵點選GL_QUADS,為一個四邊形,可調整形狀(只有一個顏色)。
按右鍵點選GL_QUAD_STRIP,為一個x六邊形,可調整形狀(可摺疊)。
按右鍵點選GL_POLYGON,為一個三角形,跟點選GL_TRIANGLES一樣。
作業二:
1. 自己做一個三角形(同一個顏色)。
程式碼:
#include <GL/glut.h>
void display()
{
glBegin(GL_POLYGON);
glColor3f(0.5, 0.0, 0.3);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glVertex3f(1.0, 1.0, 1.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("hello");
glutDisplayFunc(display);
glutMainLoop();
}
2. 三個點不同顏色
程式碼:
#include <GL/glut.h>
void display()
{
glBegin(GL_POLYGON);
glColor3f(0.5, 0.0, 0.3);
glColor3f(0.5, 0.0, 0.5); glVertex3f(0.0, 0.0, 0.0);
glColor3f(1.0, 0.0, 0.3); glVertex3f(1.0, 0.0, 0.0);
glColor3f(0.0, 0.5, 0.3); glVertex3f(1.0, 1.0, 1.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("hello");
glutDisplayFunc(display);
glutMainLoop();
}
3. 更改背景顏色,glClearColor(0.0, 0.8, 0.5, 1),
最後要加一個 1 。
程式碼:
#include <Gl/glut.h>
void display()
{
glClearColor(0.0, 0.8, 0.5, 1);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(0.5, 0.0, 0.3);
glColor3f(0.5, 0.0, 0.5); glVertex3f(0.0, 0.0, 0.0);
glColor3f(1.0, 0.0, 0.3); glVertex3f(1.0, 0.0, 0.0);
glColor3f(0.0, 0.5, 0.3); glVertex3f(1.0, 1.0, 1.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("hello");
glutDisplayFunc(display);
glutMainLoop();
}
作業三:
1. 在小畫家按滴管,吸一個顏色,RGB數值記下來。
2. glClearColor(149/255.0, 86/255.0, 42/255.0, 1);
(記得要除255)

3. 自己做一個圖形
程式碼:
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glClearColor(149/255.0, 86/255.0, 42/255.0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(0.0, 0.3, 0.3);
glVertex3f((165-170)/170.0,-(0-170)/170.0,0.0);
glVertex3f((0-170)/170.0,-(165-170)/170.0,0.0);
glVertex3f((335-170)/170.0,-(165-170)/170.0,0.0);
glVertex3f((48-170)/170.0,-(150-170)/170.0,0.0);
glVertex3f((215-170)/170.0,-(150-170)/170.0,0.0);
glVertex3f((288-170)/170.0,-(338-170)/170.0,0.0);
glVertex3f((48-170)/170.0,-(338-170)/170.0,0.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("hello");
glutDisplayFunc(display);
glutMainLoop();
}
作業四:
查看游標座標位置
新增程式碼:
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN)
printf(" glVertex3f(%d-170)/170.0, -(%d-170/170.0, 0.0);\n", x,y);
}
並且
glutDisplayFunc(display)下面增加改glutMouseFunc(mouse);
















沒有留言:
張貼留言