gpt4 book ai didi

c++ - OpenGL 相机位置和天空盒

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:10 26 4
gpt4 key购买 nike

一直在整合这个相机教程http://www.swiftless.com/tutorials/opengl/camera2.html并且在将相机置于天空盒中心时遇到了一些麻烦。

使用下面的代码让我的相机在盒子里:

void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-1.0, 1.0, -1.0*(GLfloat)h/(GLfloat)w,
1.0*(GLfloat)h/(GLfloat)w, -10.0, 10.0);
else
glOrtho(-1.0*(GLfloat)w/(GLfloat)h,
1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}

为了绘制天空盒,我遵循了这个教程:http://sidvind.com/wiki/Skybox_tutorial我一直在尝试将物体平移到更靠近相机的位置,但没有达到我的预期。现在我不确定我需要做什么。

感谢任何帮助。

最佳答案

首先:不要在整形处理程序中应用投影。否则简单的事情似乎是不可能的(比如做一个天空盒)。第二:要使天空盒起作用,您必须使用与渲染场景其余部分完全相同的投影。您应该更改的是将模型 View 转换为 0,同时保持相机方向。

您可以通过将模型 View 矩阵的最后一列设置为 (0,0,0,1) 来实现。

所以这使得您的渲染代码如下:

void render_skybox()
{

push_modelview();
set_modelview_column(3, 0, 0, 1);
draw_skybox();
pop_modelview();

}

void render()
{
set_viewport();
set_projection();

apply_camera_transform();

render_skybox();
render_scene();
}

关于c++ - OpenGL 相机位置和天空盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105692/

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