gpt4 book ai didi

c++ - 如何在 OpenGL 中正确移动(移入和移出对象)

转载 作者:太空狗 更新时间:2023-10-29 21:19:29 25 4
gpt4 key购买 nike

我一直在许多论坛(这里和其他地方)中搜索以找到如何在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com