cra*_*xel 9 opengl 3d graphics opengl-1.x
我正在努力想出一些东西让我说我渲染一些高度为100,宽度为100的图像.
我正在一个glOrtho(0,100,0,100,-100,100)和glViewPort(0,0,50,50)时定义为(左,右,顶部,底部,zNear,zFar)和glViewPort被定义为(左下角的x,左下角Y,宽度,高度)glOrthois.
我正在一个glOrtho(0,50,0,50,-100,100)和glViewPort(0,0,100,100)
时glOrthois定义为(左,右,顶部,底部,zNear,zFar)和glViewPort被定义为(左下角的x,左下角Y,宽度,高度)
这基本上意味着在场景A中,图像将被渲染到比它需要的更低的宽度和高度(即,将每两个像素渲染一次).在原始图像中将映射到目标"表面"中的一个,但仍然可以看到整个图像.
但是,在场景B中,图像将被剪裁,因此只能看到它的左上角.我对么?- 只是为了清楚,这是一个CG测试的问题我有tommorow,我想确保我正确得到openGL ...(已经读过API ... =\)
Gam*_*per 26
glViewPort 采用屏幕像素单位:就是这样,它与显卡"内部"的3D世界无关.它只是告诉窗口的一部分将用于渲染(或只是可见).
相反,glOrtho 改变了"内部"世界并且是OpenGL单元:更多OpenGL单元将适合屏幕的可见部分,因此如果增加正交尺寸,"更大"的对象将很容易适合可视区域.
修改视口不会改变视锥,实际上相同的图像将被拉伸以适应新的视口.
解释图像:
图1:视口是半窗口

图2:如果我只是将视口加倍,图像就会变得拉伸(相同的平截头体填充不同的表面)

因此,保持纵横比的唯一解决方案是加倍正交尺寸(在这种情况下,我是双左右值)
图3:最终结果(请注意,现在可以看到3d世界的更大部分):

有关OpenGL NeHe制作的相当熟悉的网站提供了更多详细信息.
| 归档时间: |
|
| 查看次数: |
18722 次 |
| 最近记录: |