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样例在关闭过程中随着窗口的变小图像会随着变小的原因。
分享到:
相关推荐
opengl中模型变换,投影变换,视点变换,视口变换比较让人头晕,看个这个演示就会有清楚的认识啦 http://www.99pan.com/Invite?uid=171324
OpenGL利用C语言做出4个不同的视口,每个视口中都有一个按不同方向旋转的带颜色的四棱锥,C语言代码完整,并标注完整注释,适合初学者参考学习。
本软件可实现单视口到多视口的变换
本书共12张,第一章:OpenGL概述,第二章:着色器基础,第三章:OpenGL绘制方式,第四章:颜色、像素和帧缓存,第五章:视口变换、剪切与反馈,第六章:纹理,第七章:光照与阴影,第八章:程序式纹理,第九章:细分...
实现opengl多视口显示模型 窗口分割
多视口OpenGL程序,将单文档的窗口分成左右两个部分,使其独立渲染图形。
窗口到视口的坐标变换源代码
OpenGL教程第42课多重视口.rar
OpenGL 图形管线 渲染管线 坐标变换 模型观测变换 投影变换 正交投影 投影设置 视口变换
OpenGL通过相机模拟可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。 为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一...
另外,您可以在不使用任何组件的情况下使用它。 < script src =" ../standalone/viewport.js " > </ script > 用法 首先,添加以下元视口: < meta name =" viewport " content =" width=device-...
视口单位视口单元现场测试
您是否需要在元素每次进入视口时触发动画? 好吧,这是我们的插件开箱即用的。 此外,您将能够设置动画的延迟,偏移,想要动画的次数以及动画的持续时间。 所有这些都通过数据属性! Tadaam是一个轻量级,结构良好...
使用opengl写的关于图形和颜色变换的VC++程序。 主要涉及有关投影,视口变换,旋转、平移和缩放等有关的编程方法。
窗口 视口 概念区别 详解 如何对其进行判别
使用 var slider = require('nd-slider'); new Slider({ paginator: '#paginator', activeClass: 'active', container: '#container', slides: '.slide', slideWrap: '.slide-wrap', speed: 1000, events: { ...
实验一 OpenGL+GLUT开发平台搭建 5 小实验1: 开发环境设置 5 小实验2: 控制窗口位置和大小 6 小实验3:默认的可视化范围 6 小实验4:自定义可视化范围 7 小实验5: 几何对象变形的原因 8 小实验6: 视口坐标系及...
使用Mip映射数据结构的OpenGL加速查看器 在一个视口中拖动和缩放时同步多个视口 拖放以打开图像 从图像中裁剪区域 所有动作的键盘快捷键 在特定像素上设置标记 双击状态栏中的信息,将值复制到剪
使用openGL、glad、glfw创建鼠标和键盘wsad控制窗口内的视口,并加载纹理,封装了openGL中的相机、矩阵变换、纹理处理,窗口键盘鼠标事件响应,参考learn openGL