OpenGL glViewport()函数
1.glViewport() 用来设置视口大小
void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);
对于一个OpenGL坐标(xnd,ynd),它变换后的坐标为(Xw,Yw),那么变换公式为
解释一下这个公式的意义:视口变换也就是glViewport()做的工作,它是把OpenGL的标准化设备坐标转换为屏幕空间坐标,而OpenGL的标准化设备坐标是(-1,1),视口变换需要将该坐标变换到glViewport()参数指定的坐标范围内,所以就出现了上面的公式。它就是将经过了MVP矩阵变换后的三维坐标转换为二维空间的屏幕坐标,缺少的“第三维”就是深度信息,会被存储在z-buffer;
2.glViewport()的使用
视口变换通常要出现在调整OpenGL窗口大小的时候,如果改变了窗口大小,但是没有进行视口变换是肯定会出错的,比如你在屏幕中心绘制了一个三角形,如果没有进行视口变换,那么当年改变窗口大小的时候,发现这个三角形没有任何变换。但是如果进行了视口变换,它就会自动根据窗口的大小去调整三角形的位置,三角形永远在窗口的正中心。
这个是通过glfwSetFramebufferSizeCallback()设置对应的回调函数来实现的。
glfwSetFramebufferSizeCallback(window,framebuffer_size_callback);
函数原型:glfwSetFramebufferSizeCallback(GLFWwindow* window,GLFWframebuffersizefun),第一个是指定当前窗口,第二个是一个函数指针类型,其定义如下 typedef void(* GLFWframebuffersizefun)(GLFWwindow *,int ,int);
所以我们可以注册一个回调函数
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {glViewport(0,0,width,height);
}
这样,当改变窗口的大小以后,也能进行正确的视口变换了。
OpenGL glViewport()函数相关推荐
- OpenGL之glViewPort函数的用法
其函数原型为:glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以像素为单位,指定了视口的左下角位置. width,height ...
- glViewport()函数和glOrtho()函数的理解
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- glViewport()函数和glOrtho()函数的理解(转)
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- glViewport函数和glOrtho函数的理解
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- OpenGL gluLookat()函数的实现
OpenGL gluLookat()函数的实现 函数形式: gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble center ...
- OpenGL画矩形函数:glRectf,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标
OpenGL画矩形函数:glRectf glRectf:画一个矩形,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标(并且以窗口的中心点为原点,相当于以它为原点建立了一个二维坐标系) 例 ...
- OpenGL的函数(GL)
目前OpenGL的函数主要包含在3个库中 1.GL 函数库 2.GLU 函数库 3.GLUT 函数库 1.GL 库函数 颜色编辑 ------------------- glShadeMo ...
- glViewport函数用法
一. 其函数原型为glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以像素为单位,指定了窗口的左下角位置. width,heig ...
- OpenGL QT glViewport 函数的作用
函数原型: void glViewport(GLintx, GLinty, GLsizeiwidth, GLsizei height) 函数作用: 改变OpengL描绘结果原点在屏幕的位置及尺寸 参数 ...
最新文章
- springmvc集成oracle,SpringMVC整合druid
- PS如何批量生成缩略图(方法可以通用其他重复劳动)
- 推荐系统炼丹笔记:阿里边缘计算+奉送20个推荐系统强特
- jpa添加索引的几种方式
- ES6+mocha+istanbul,针对ES6语法的带覆盖率检查的mocha测试
- python3 类实例化流程
- 从 TFS 迁移源代码到 git
- cma检测_CMA检测方法
- Redis——持久化RDB和AOF
- 解决Chrome浏览器不能访问https网站的问题
- RabbitMQ 概念
- 几个清华和交大学霸的公众号,值得学习
- 清华刘知远:教你用HowNet在深度学习时代搞事情(附论文下载)
- win10 安装redis 解压版
- 2017兰州高中计算机考试时间,兰州2017年中考考试时间安排
- 百度mip推送工具_链接提交主动推送(实时)、熊掌号天级/周级提交、MIP提交
- DS二叉树—二叉树构建与遍历(不含框架)
- 22(线性方程组求解)高斯赛德尔迭代法
- Google Map API 使用总结
- flash保存html,如何把网页上的flash动画保存为swf格式文件(缓存提取)