GlviewPort问题 - 获得伸展的相机视图
glViewport issue - getting stretched camera views
你好,我尝试在四个视口中拆分一个窗口,我想在每个视口中呈现一个场景。为简单起见,我简化了代码仅包含单个相机视图。代码大致如下:
void setup_trf(const PolarCoords& pc, double aspect)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60, aspect, 0.01, 1000);
//glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
double eye_x, eye_y, eye_z;
pc.to_cartesian(eye_x, eye_y, eye_z);
double look_x = 0;
double look_y = 0;
double look_z = 0;
double up_x = 0;
double up_y = 0;
double up_z = 1;
gluLookAt(
eye_x, eye_y, eye_z,
look_x, look_y, look_z,
up_x, up_y, up_z);
}
void draw_scene(int w, int h) {
glClearColor(0.0f, 0.75f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
double aspect = w / double(h);
glViewport(0, h / 2, w / 2, h);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
glViewport(w / 2, h / 2, w, h);
setup_trf(app_state.m_polar, aspect*0.5);
draw_sphere();
glViewport(0, 0, w / 2, h/2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
glViewport(w / 2, 0, w, h / 2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
}
的结果是:球体的视图
有人知道为什么图像在不同的视口上伸展?
glViewport
的第一个和第二个参数是viewport矩形的左下坐标(原点)。但是第三参数和第四参数是视口矩形的宽度和高度,而不是右上坐标。
这意味着在每种情况下必须是窗口大小的一半(w/2
,h/2
)的一半:
glViewport(0, h/2, w/2, h/2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
glViewport(w/2, h/2, w/2, h/2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
glViewport(0, 0, w/2, h/2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
glViewport(w/2, 0, w/2, h/2);
setup_trf(app_state.m_polar, aspect);
draw_sphere();
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 视图中的参数推导失败:take_while
- 了解 GLM- openGL 中的相机转换
- OpenGL相机和相机空间转型的困惑
- 如何维护资源管理器项目视图中当前可见的项目列表
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- OpenVR:向视图方向移动
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 将所选值(通过视图)从 boost::multi_array 复制到另一个数组 (C++)
- 如何在不使用滚动条的情况下使视图更改
- 通过 API 控制 DJI 相机
- 如何使用gluLookAt围绕OpenGL中的点旋转相机视图
- 基于Quaternion的第一人称视图相机
- GlviewPort问题 - 获得伸展的相机视图
- 嵌入UI视图内部现场相机视图BlackBerry 10
- 计算相机视图矩阵
- GLFW - 用鼠标旋转相机的视图矩阵使其旋转
- 在OpenGL中保存一个特定的相机视图为图像
- 相机/视图矩阵