week03
step01-1下載課本範例
https://jsyeh.org/3dcg10/ 下載 win32和data並且解壓縮
可以調整角度 拉動綠色數字即可
#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();
}
step02-2
移動物體
#include <GL/glut.h>
void display()
{
glPushMatrix();///備份矩陣
glTranslated(0.5,0.5,0);///改變矩陣
glutSolidTeapot(0.3);
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMainLoop();
}
開啟新的專案複製step02-2程式碼再加上(紅色)或改變(藍色)
#include <GL/glut.h>
float X=0,Y=0,Z=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT );
glPushMatrix();
glTranslated(X,Y,Z);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int buttom,int state,int x,int y)
{
X=(x-150)/150.0;
Y=-(y-150)/150.0;
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
用滑鼠作畫
刪除中間程式再加一些(紅色) 畫圖(藍色)
#include <GL/glut.h>
#include<stdio.h>
float X=0,Y=0,Z=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT );
glBegin(GL_POLYGON);
glEnd();
glutSwapBuffers();
}
void mouse(int buttom,int state,int x,int y)
{
X=(x-150)/150.0;
Y=-(y-150)/150.0;
if(state==GLUT_DOWN) printf(" glVertex2f(%.2f,%.2f);\n",X,Y);
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
上傳GITHUB😢



沒有留言:
張貼留言