Step01-1 認識攝影機
Step01-2
up:調整攝影機旋轉的角度(類似手機拍攝會歪一點,不一定正的)Step02-1 開啟專案
打開codeblock 名稱為week15-1_gluPerspective,測試一遍看是不是下方的圖
Step02-2 認識gluPerspective
如果glOrtho數值照抄glFrustum 會發現變成下方圖片
Step02-3
開啟專案 week15-2_gluLookAt
並打下方程式
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void reshape(int w,int h)
{
float ar = w/(float) h;
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week15");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
}
接者新增程式在reshape裡面 (完成會有胖茶壺)
void reshape(int w,int h)
{
glViewport(0,0,w,h);///視窗裡.會看到的2D範圍
float ar = w/(float) h;///aspect,長寬比
glMatrixMode(GL_PROJECTION);///切換Project矩陣
glLoadIdentity();///還原單位矩陣
gluPerspective(60,ar,0.01,100);
glMatrixMode(GL_MODELVIEW);///切換model view 矩陣
glLoadIdentity();///還原單位矩陣
gluLookAt(0,0,1, 0,0,0, 0,1,0);
glutPostRedisplay();
}
float eyeX=0,eyeY=0;
void motion(int x,int y)
{
eyeX=(x-150.0)/150.0;
eyeY=(150.0-y)/150.0;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eyeX,eyeY,1, 0,0,0, 0,1,0);
glutPostRedisplay();
}
在keybroad函式加入
if(key=='s')
{
if(fout == NULL)fout =fopen("motion.txt","w");
for(int i=0; i<20;i++)
{
fprintf(fout,"%.2f",angle[i]);
}
fprintf(fout, "\n");
}else if(key =='r')
{
if(fin==NULL)fin = fopen("motiom.txt","r");
for(int i=0;i<20;i++)
{
fscanf(fin,"%f",&angle[i]);
}
}
glutPostRedisplay();
沒有留言:
張貼留言