OpenGL ES之glOrtho函数

59 篇文章 5 订阅

名称:

glOrtho—— 使用一个正交矩阵乘以当前矩阵


函数原型:

void glOrthof(GLfloat left,  GLfloat right,  GLfloat bottom,  GLfloat top,  GLfloat near,  GLfloat far);

void glOrthox(GLfixed left,  GLfixed right,  GLfixed bottom,  GLfixed top,  GLfixed near,  GLfixed far);


函数参数:

left,right         指定左边和右边垂直切面的坐标

bottom,top    指定下边和上边水平切面的坐标

near,far         指定近端和远端深度切面的距离,如果面在观察者后面,这两个值都要为负数。


描述:

glOrtho描述了一个产生平行投影的变换。这个矩阵乘以当前矩阵的积,将代替当前矩阵,当glMultMatrix以如下参数被调用时:


通常,矩阵模式是GL_PROJECTION, 假设眼睛的位置在(0,0,0), (left, bottom, -near) 和 (right, top,  -near)指明了近切面的点,并且被映射到窗口的左下角和右上角。-far指明了远切面的位置。near 和 far可以是正数或负数。

使用 glPushMatrix 或 glPopMatrix来保存或恢复缩放前的坐标系统。


错误:

GL_INVALID_VALUE         如果left等于right,top等于bottom,near等于far,那么将产生GL_INVALID_VALUE错误。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenGL ES 中的投影矩阵可以使用透视投影和正交投影两种方式进行设置。 透视投影是一种模拟人眼观察物体的方式,近处的物体看起来比远处的物体大,而且在远处的物体看起来比在近处的物体更小。在 OpenGL ES 中,透视投影的矩阵通常由 glFrustum() 或者 gluPerspective() 函数生成。这些函数所需要的参数包括视角、画面宽高比、近裁剪面和远裁剪面的距离。 正交投影则是一种无论远近都能保持物体大小一致的投影方式。在 OpenGL ES 中,正交投影的矩阵通常由 glOrtho() 函数生成。这个函数需要指定可视空间的左、右、上、下、近、远六个面。 下面是一个简单的 OpenGL ES 代码示例,使用透视投影和正交投影来绘制一个立方体: ```c++ // 使用透视投影绘制立方体 glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1, 1, -1, 1, 1, 10); // 绘制立方体 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0, 0, -5); glRotatef(angle, 1, 1, 1); glColor3f(1, 0, 0); glutWireCube(2); // 使用正交投影绘制立方体 glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-2, 2, -2, 2, 1, 10); // 绘制立方体 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0, 0, -5); glRotatef(angle, 1, 1, 1); glColor3f(0, 0, 1); glutWireCube(2); ``` 其中,glFrustum() 函数生成的透视投影矩阵,可以让离观察者比较近的物体显得比较大,而离观察者比较远的物体显得比较小。glOrtho() 函数生成的正交投影矩阵,则可以让物体无论离观察者多远,都保持一致的大小。 需要注意的是,在使用不同的投影方式时,需要先将当前矩阵模式设置为投影矩阵模式,然后再进行矩阵的设置和变换。最后,需要将矩阵模式设置回模型视图矩阵模式,以便绘制物体。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值