作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在许多论坛(这里和其他地方)中搜索以找到如何在 OpenGL 中正确放大对象。大量阅读之后,我终于弄明白了如何使用 GluLookAt()。我可以毫无问题地让相机像我想的那样移动。我知道它有效,因为当相机移动时物体会消失。但是,我想在平移相机时放大物体。我认为相机位置会处理它,但更新相机位置似乎没有帮助。我也试过 gScalef(),但当我按下“w”键时它只被调用一次。
void keyboard(unsigned char c, int x,int y)
{
if(c==27)
{exit(0);}
if (c=='w')
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
float forward_x, forward_y,forward_z;
gluLookAt(current[0], current[1], current[2],
current[0]+center_x, current[1]+center_y, current[2]+center_z,
0.0, 1.0, 0.0);
// glScalef(1.2,1.2,1.2);
current[0]= (current[0]- 0.1*center_x);
current[1]= (current[1]-0.1*center_y);
current[2]= (current[2]- 0.1*center_z);
}
}
void Camera_rotation(int x, int y)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
center_x = cos(-0.05*x)*sin(-.05*y);
center_y = cos(-.05*y);
center_z = sin(0.05*x)*sin(.05*y);
eye_x = x; eye_y = 1.0,
float new_x = x;
gluLookAt(current[0], current[1], current[2],
current[0]+center_x,
current[1]+center_y,
current[2]+center_z,
0.0, 1.0, 0.0);
render();
}
'current' 和 'center_x[yz]' 是全局变量。有人可以帮忙吗?
最佳答案
只要相机对准目标,您就应该能够在Perspective Projection Matrix
上设置FOV
(Field of View)以实现缩放效果。 FOV
越小,可视区域就越小,从而产生缩放的错觉。
可以找到有关该主题的精彩教程 here .它在最后谈到缩放。
关于c++ - 如何在 OpenGL 中正确移动(移入和移出对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198401/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!