glViewPort详解

2018-07-04  本文已影响0人  似奔跑的野马

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错误。

引用
khronos开发文档
iPhone 3D Programming
苹果官方文档

上一篇 下一篇

猜你喜欢

热点阅读