Demo程式:shape
來源:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
需要檔案:data.zip、windows.zip、glut32.dll
下載完畢後解壓縮
§glut32.dll需與執行檔在同一層
執行結果
glColor3f(r,g,b);
gl 表示是OpenGL的函式
Color 表示顏色
3 表示參數數量為3
f 表示為float浮點數(範圍由0.0 - 1.0)
glVertex2f(x,y);
gl 表示是OpenGL的函式
Vertex 表示頂點
2 表示參數數量為2
f 表示為float浮點數
實作:
我們所需要的程式碼:
glColor3ub(0,0,0); ///顏色
建立新專案(GLUT)
§GLUT程式碼,除圈起處為前面OpenGL檔複製的程式碼
執行結果
三角形
茶壺
glutSolidTeapot(0.3); ///繪製茶壺
glColor3f(1,1,0); ///黃色
三角形(程式碼如結果旁)
當周作業:繪製20點以上的圖
程式碼:
#include <GL/glut.h>
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3ub(255,255,255); ///白色
glVertex2f((153-150)/150.0,-(95-150)/150.0);
glVertex2f((173-150)/150.0,-(98-150)/150.0);
glVertex2f((177-150)/150.0,-(99-150)/150.0);
glVertex2f((183-150)/150.0,-(100-150)/150.0);
glVertex2f((195-150)/150.0,-(107-150)/150.0);
glVertex2f((201-150)/150.0,-(112-150)/150.0);
glVertex2f((205-150)/150.0,-(116-150)/150.0);
glVertex2f((209-150)/150.0,-(122-150)/150.0);
glVertex2f((211-150)/150.0,-(130-150)/150.0);
glVertex2f((214-150)/150.0,-(138-150)/150.0);
glVertex2f((214-150)/150.0,-(146-150)/150.0);
glVertex2f((214-150)/150.0,-(153-150)/150.0);
glVertex2f((213-150)/150.0,-(160-150)/150.0);
glVertex2f((209-150)/150.0,-(168-150)/150.0);
glVertex2f((207-150)/150.0,-(175-150)/150.0);
glVertex2f((202-150)/150.0,-(182-150)/150.0);
glVertex2f((196-150)/150.0,-(186-150)/150.0);
glVertex2f((189-150)/150.0,-(191-150)/150.0);
glVertex2f((183-150)/150.0,-(193-150)/150.0);
glVertex2f((175-150)/150.0,-(197-150)/150.0);
glVertex2f((168-150)/150.0,-(198-150)/150.0);
glVertex2f((159-150)/150.0,-(199-150)/150.0);
glVertex2f((149-150)/150.0,-(199-150)/150.0);
glVertex2f((139-150)/150.0,-(198-150)/150.0);
glVertex2f((131-150)/150.0,-(197-150)/150.0);
glVertex2f((124-150)/150.0,-(193-150)/150.0);
glVertex2f((119-150)/150.0,-(190-150)/150.0);
glVertex2f((115-150)/150.0,-(186-150)/150.0);
glVertex2f((110-150)/150.0,-(181-150)/150.0);
glVertex2f((105-150)/150.0,-(175-150)/150.0);
glVertex2f((103-150)/150.0,-(169-150)/150.0);
glVertex2f((100-150)/150.0,-(161-150)/150.0);
glVertex2f((98-150)/150.0,-(154-150)/150.0);
glVertex2f((98-150)/150.0,-(146-150)/150.0);
glVertex2f((99-150)/150.0,-(139-150)/150.0);
glVertex2f((101-150)/150.0,-(131-150)/150.0);
glVertex2f((104-150)/150.0,-(123-150)/150.0);
glVertex2f((108-150)/150.0,-(116-150)/150.0);
glVertex2f((114-150)/150.0,-(109-150)/150.0);
glVertex2f((118-150)/150.0,-(105-150)/150.0);
glVertex2f((123-150)/150.0,-(102-150)/150.0);
glVertex2f((129-150)/150.0,-(100-150)/150.0);
glVertex2f((138-150)/150.0,-(98-150)/150.0);
glVertex2f((147-150)/150.0,-(96-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glColor3ub(0,0,0); ///黑色
glVertex2f((168-150)/150.0,-(128-150)/150.0);
glVertex2f((171-150)/150.0,-(141-150)/150.0);
glVertex2f((166-150)/150.0,-(142-150)/150.0);
glVertex2f((163-150)/150.0,-(130-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((198-150)/150.0,-(123-150)/150.0);
glVertex2f((201-150)/150.0,-(137-150)/150.0);
glVertex2f((205-150)/150.0,-(137-150)/150.0);
glVertex2f((203-150)/150.0,-(123-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((180-150)/150.0,-(146-150)/150.0);
glVertex2f((197-150)/150.0,-(145-150)/150.0);
glVertex2f((197-150)/150.0,-(151-150)/150.0);
glVertex2f((180-150)/150.0,-(152-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glColor3ub(253,212,204); ///粉紅色
glVertex2f((159-150)/150.0,-(141-150)/150.0);
glVertex2f((155-150)/150.0,-(144-150)/150.0);
glVertex2f((153-150)/150.0,-(148-150)/150.0);
glVertex2f((153-150)/150.0,-(153-150)/150.0);
glVertex2f((157-150)/150.0,-(157-150)/150.0);
glVertex2f((163-150)/150.0,-(158-150)/150.0);
glVertex2f((167-150)/150.0,-(156-150)/150.0);
glVertex2f((169-150)/150.0,-(152-150)/150.0);
glVertex2f((169-150)/150.0,-(147-150)/150.0);
glVertex2f((166-150)/150.0,-(144-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glColor3ub(253,212,204); ///粉紅色
glVertex2f((202-150)/150.0,-(140-150)/150.0);
glVertex2f((201-150)/150.0,-(144-150)/150.0);
glVertex2f((206-150)/150.0,-(151-150)/150.0);
glVertex2f((211-150)/150.0,-(150-150)/150.0);
glVertex2f((212-150)/150.0,-(147-150)/150.0);
glVertex2f((212-150)/150.0,-(144-150)/150.0);
glVertex2f((212-150)/150.0,-(141-150)/150.0);
glVertex2f((207-150)/150.0,-(138-150)/150.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize( 300, 300 ); ///視窗大小300*300
glutCreateWindow("05163021"); ///視窗名字
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); ///視窗底色:黑
glutDisplayFunc(display);
glutMainLoop();
return EXIT_SUCCESS;
}

沒有留言:
張貼留言