今天我遲到第二節課才到教室
但積極向上的我跟上進度
畫出一個圓
void display()
{
glBegin(GL_POLYGON);
for(float angle=0; angle <= 3.1415926*2; angle += 0.01)
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
並在main中加上
glutDisplayFunc(display);
然後使用Mouse函式
在main中加入
glutMouseFunc(mouse);
打上
void mouse(int button,int state, int x, int y)
{
printf("%d %d %d %d\n",button,state,x,y);
glColor3f(1,x/300.0,y/300.0);
}
mouse函式使用四個int整數
第一個整數button代表滑鼠左(0)中(1)右(2)鍵
第二個整數state代表滑鼠動作按下(0)放開(1)
第三個第四個整數x,y則代表座標
在這邊特別使用printf把四個整數秀出來讓大家更清楚了解函式內容
記得加上include <stido.h>
glColor3f(1,x/300.0,y/300.0);
後方x,y除300.0意義在
此圓視窗為300*300
整數除以浮點數讓後方兩個值會在0~1間
如何不用一直點滑鼠讓他改變顏色?
使用motion函式
在main中加入glutMotionfunc(motion);
函式使用兩個整數int,x座標與y座標
void motion(int x,int y)
{
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}
按下滑鼠後移動座標就可以持續改變顏色
glutPostRedisplay();作用在於
讓程式重覆執行display函式
畫出小精靈式的嘴巴開口
先在外面宣告一個mouth浮點數為0
void motion(int x,int y)
{
mouth = x/300.0;
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}.
在motion函式中加入mouth=x/300.0;
讓開口跟著滑鼠座標改變大小
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
///這行每次都必打 清畫面
glBegin(GL_TRIANGLE_FAN);
///使用TRAINGLE FAN 扇形
glVertex2f(0,0);
///宣告扇形起始座標為0.0
for(float angle=0+mouth; angle <= 3.1415926*2-mouth; angle += 0.01)
///畫圓起始點+mouth,結束點-mouth
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
可愛的小精靈出現ㄌ



沒有留言:
張貼留言