下載 data & win32 & glut32.dll 並將 data & win32 解壓縮
並將 data 和 glut32.dll 放入windows裡面
點網址(http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/?fbclid=IwAR1OGK_CF1Q4ivit6p57lyewO2CpG1Gs1ufsFWW7pge-hee5zFTuN7Umvks)
2.複習上週
將GLUT程式修改並顯示出茶壺
程式碼 ↓#include <GL/glut.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}
3.加入mouse函式並加入printf的標頭
點茶壺可在另一個小黑出現數值
程式碼 ↓
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse(int botton,int state,int x,int y)
{
printf("%d %d %d %d\n",botton,state,x,y);
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
4.用滑鼠可改變茶壺的位置
程式碼 ↓
#include <GL/glut.h>
#include <stdio.h>
float teapotX=0,teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int botton,int state,int x,int y)
{
teapotX = (x-150)/150.0;
teapotY = -(y-150)/150.0;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
5.依照小畫家的座標做圖案出來
程式碼 ↓
#include <GL/glut.h>void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f( (171-150)/150.0 , -( 93-150)/150.0 );///170,89
glVertex2f( (181-150)/150.0 , -(124-150)/150.0 );///182,123
glVertex2f( (218-150)/150.0 , -(127-150)/150.0 );///218,127
glVertex2f( (190-150)/150.0 , -(148-150)/150.0 );///190,148
glVertex2f( (197-150)/150.0 , -(182-150)/150.0 );///197,182
glVertex2f( (168-150)/150.0 , -(168-150)/150.0 );///168,163
glVertex2f( (140-150)/150.0 , -(182-150)/150.0 );///140,182
glVertex2f( (151-150)/150.0 , -(148-150)/150.0 );///151,148
glVertex2f( (119-150)/150.0 , -(126-150)/150.0 );///119,126
glVertex2f( (155-150)/150.0 , -(124-150)/150.0 );///155,124
glEnd();
glutSwapBuffers();
}
void mouse(int botton,int state,int x,int y)
{
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}








沒有留言:
張貼留言