WEEK03
Step01-1
3D圖學:網站下載 下載window.zip 和 data.zip
glRotatef可以更改角度,glScalef可以更改大小
Step02-1
開啟CODEBLOCK
開專案
打專案名稱 選擇檔案存檔位置
解壓縮freeglut
codeblock選擇freeglut完成>他跑出來就會生成三個神祕圖形
Step02-2
#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();
}
Step02-3
更改茶杯的位置
#include <GL/glut.h>
void display()
{
glPushMatrix();///備份矩陣
glTranslatef(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();
}
寫出下面的程式碼 茶杯就會隨著滑鼠的點擊而移動了😆
#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();
}
Step03-1
開新專案複製Step02-3的程式
Step03-2
寫出讓滑鼠點到哪就寫出那個地方的位置
#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);
glPopMatrix();
glutSwapBuffers();
glBegin(GL_POLYGON);
glEnd();
}
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();
}









沒有留言:
張貼留言