在BlackBerry上使用OpenGL绘图(十):视口变换
2011-09-26 11:16
274 查看
10 视口变换
相对于以上变换,视口变换更为简单一些,视口变换最终决定显示出来的图片大小。视口变换类似于冲印的照片底片后最终决定放大还是缩小照片,还决定照片放在相框的哪个位置。视口变换通过方法glViewport实现,该方法接受四个参数,第一个参数和第二个参数指定图片的左下角出现在什么位置,第三个和第四个参数用于指定生成图片的宽和高。
在上一节讨论的投影变换中已经指定了生成图片的纵横比例,一般而言视口变换中指定的高和宽的比例应该和投影变换中指定的纵横比相同,这样图像才不会变形。如果视口变换中指定的高宽比例和投影变换中的纵横比不相同,则系统会自动对图片进行变形处理,使投影变换中生成的图片适应视口变换中指定的高宽比例。
另外需要注意的是前两个参数所指定的图片位置是图片左下角的位置,同时坐标轴的原点在屏幕的左下角上。如果调用方法glViewport(0,0,100,100)表示图片的高和宽都是100,图片的左下角对齐屏幕的左下角。如果调用方法glViewport(50,30,100,100)则表示图片左下角离屏幕左边50个像素点,离屏幕下边30个像素点。
OpenGLDemo样例在CubeRenderer的sizeChanged方法中调用了glViewport,代码片段如下,传入的width和height是窗口的大小,glViewport方法将图片设置成和窗口大小相同。
public void sizeChanged(GL10 gl, int width,int height) {
gl.glViewport(0, 0, width, height);
// 其它设置…
}
而OpenGLScreen的renderFrame方法在运行过程中会计算屏幕大小是否有变化,如果有变化的话则调用CubeRenderer的sizeChanged方法重设视口大小。这也是为什么OpenGLScreen样例在关闭过程中随着窗口的变小图像会随着变小的原因。
相关文章推荐
- 在BlackBerry上使用OpenGL绘图(六):3D变换介绍
- 在BlackBerry上使用OpenGL绘图(七):视图变换:观察点的运动
- OpenGL多视口变换函数:glViewport使用
- 在BlackBerry上使用OpenGL绘图(三):OpenGL样例结构分析
- 在BlackBerry上使用OpenGL绘图(四):顶点数组与法向量数组
- (7)OpenGL多视口变换函数:glViewport使用
- 在BlackBerry上使用OpenGL绘图(十一):纹理数组
- 在BlackBerry上使用OpenGL绘图(八):模型的运动
- 在BlackBerry上使用OpenGL绘图(十二):光照
- 在BlackBerry上使用 OpenGL绘图(一): OpenGL介绍
- 在BlackBerry上使用OpenGL绘图(五):动画的产生
- 在BlackBerry上使用OpenGL绘图(九):投影变换
- 在BlackBerry上使用OpenGL绘图(汇总)
- 在BlackBerry上使用OpenGL绘图(二):运行OpenGL样例
- 《iPhone开发基础教程》第12章 使用Quartz和OpenGL绘图
- OpenGL学习:使用EBO索引绘图
- 使用OpenGL的变换反馈(transform feedback)构造粒子系统
- iPhone开发基础教程笔记(十二)--第十二章 使用Quartz和OpenGL绘图
- OpenGL中视口变换的矩阵求解
- opengl 关于 投影变换,模型视图变换,视口变换 和多视口 的综合例子