WEEK02點線面色彩
依照上週方法開啟GLUT
CodeBlocks: File-New-Project, 選 GLUT專案, 按GO
按Next->輸入檔名week01-2_GLUT->next->Finish
再把 GLUT 的目錄, 設成 桌面的 freeglut
按下Sources 中的Main.pp
更改其中的程式碼
1.製作茶壺
#include <GL/glut.h>
void display(){
glutSolidTeapot(0.3);///畫出實心的茶盒
glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
glutInit(&argc, argv);///要開始GLUT的功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
glutCreateWindow("GLUT Shapes");///建一個窗字
glutDisplayFunc(display);///要顯示的函式
glutMainLoop();///主要迴圈卡最後面
}
按下Build&Run就會跑出茶壺圖案
2.更改茶壺顏色
新增前三行 增加一個茶壺 改顏色
glColor3f(r,b,g);
#include <GL/glut.h>
void display(){
glColor3f(2,2,0);///色彩
glutSolidTeapot(0.5);///畫出實心的大茶壺
glColor3f(0,2,2);///色彩
glutSolidTeapot(0.3);///畫出實心的小茶壺
glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///要開始GLUT的功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
glutCreateWindow("week02");///建一個窗字
glutDisplayFunc(display);///要顯示的函式
glutMainLoop();///主要迴圈卡最後面
}
3.用頂點劃出外圍三角形
新增:
glBegin(GL_POLYGON);
glVertex2f();
glEnd();
#include <GL/glut.h>
void display(){
glColor3f(0,1,0);///色彩
glBegin(GL_POLYGON);
glVertex2f(0,1);
glVertex2f(-1,-1);
glVertex2f(+1,-1);
glEnd();
glColor3f(1,1,0);
glutSolidTeapot(0.3);///畫出實心的大茶壺
glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///要開始GLUT的功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
glutCreateWindow("week02");///建一個窗字
glutDisplayFunc(display);///要顯示的函式
glutMainLoop();///主要迴圈卡最後面
}
#include <GL/glut.h>
void display()
{
///glColor3f(0,1,0);///色彩
glBegin(GL_POLYGON);
glColor3f(1,0,0); glVertex2f(0,1);///上面(紅色)
glColor3f(0,1,0); glVertex2f(-1,-1);///左下(綠色)
glColor3f(0,0,1); glVertex2f(+1,-1);///右下(藍色)
glEnd();
glColor3f(1,1,0);
glutSolidTeapot(0.3);///畫出實心的大茶壺
glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///要開始GLUT的功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
glutCreateWindow("week02");///建一個窗字
glutDisplayFunc(display);///要顯示的函式
glutMainLoop();///主要迴圈卡最後面
}
頂點要在1和-1間
(x-100)/100.0
顏色也是要在1和-1間
x/255
5.畫圓
#include <GL/glut.h>
#include <math.h>
void myCircle(float r,float x,float y)
{
glBegin(GL_POLYGON);
for (float a=0 ;a<=2*3.1415926535897932;a+=0.01){
glVertex2f(r*cos(a)+x,r*sin(a)+y);
}
glEnd();
}
void display()
{
glColor3f(233/255.0,141/255.0,128/255.0);
myCircle(0.5,0,0);
glColor3f(1,1,0);
myCircle(0.3,0.5,0.5);
glColor3f(1,0,0);
myCircle(0.3,-0.5,0.5);
glColor3f(0,1,0);
myCircle(0.3,-0.5,-0.5);
glColor3f(0,0,1);
myCircle(0.3,0.5,-0.5);
glutSwapBuffers();
}
int main(int argc, char * argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}




沒有留言:
張貼留言