OpenGL ES中的坐标转换的最后一步视口转换。将标准化的设备坐标(Normalized Device Cordinate,NDC)转换为屏幕坐标。
void glViewport(GLint x,
GLint y,
GLsizei width,
GLsizei height);
参数
x,y
指定了左下角的视口的矩形区域。注意:单位是像素,初始化值为(0, 0)
NOTE:iOS设备来说,大多数都是全屏展示,几乎很少有非全屏显示。
width, height
指定了视口的宽高。当一个上下文(GL Context)关联一个屏幕窗口时,宽和高会设置到屏幕的方向上。
描述
glViewport 指定了从NDC到屏幕坐标的仿射变换。计算公式如下。
Xnd、Ynd 表示标准化的设备坐标(x 、y坐标 -1.0 - 1.0,z坐标也是-1.0-1.0. DirectX z是0 - 1.0);
视口的宽度最大尺寸有一个范围的,可以通过glGet获取。
GLint dimension;
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &dimension);
NOTE:如在iPhone 6plus 的OpenGL ES 2.0 ,dimension = 8192。
在iPhone 7Plus 的OpenGL ES 2.0 ,dimension = 16384。
具体和设备性能有关系。
错误
如果width或者height 设置为负数,会产生 GL_INVALID_VALUE
错误。
网友评论