1.到https://jsyeh.org/3dcg10/下載 windows.zip 和 data.zip
2.windows.zip 和 data.zip 解壓縮 下載 Transformation.exe
執行:
綠色xyz可以移動
修改main.cpp
複製貼上:#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("GLUT Shapes");
glutDisplayFunc(display);
glutMainLoop();
}
第二步:
使用github gist貼上week02-1的程式碼,副檔名.cpp
修改程式:
增加:
#include <GL/glut.h>
void display()
{
glPushMatrix();//備份矩陣
glTranslatef(0.5,0.5,0);//會改變矩陣
glutSolidTeapot( 0.3 );
glPopMatrix();//還原矩陣
glutSwapBuffers();
}
week03-2:
開新的GLUT project
複製week03-1程式碼再貼上程式碼
再修改程式碼:#include <GL/glut.h>
float X=0,Y=0,Z=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(X,Y,Z);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button,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();
}
week03-3_homework:
修改程式:
#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);
glPushMatrix();
glTranslatef(X,Y,Z);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button,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();
}
註記:
glBegin(GL.POLYGON);glVertex2f(中間座標......);
glEnd();







沒有留言:
張貼留言