OpenGL ES手册翻译---2.OpenGL ES操作(四)

2.11 图元装配和着色后顶点处理

处理顶点之后,根据绘制函数(见2.6.1和2.8)的mode参数,顶点被装配到图元中。在接下来的章节中将会介绍图元装配的步骤

  • 裁剪坐标系的透视分割(2.12节)
  • 视口映射,包括深度范围缩放(2.12.1节)
  • 图元侧键(2.13节)
  • 裁剪可变输出(2.13.1节)
image

2.12 坐标变换

顶点着色器执行后产生一个顶点坐标系gl_Position,这个坐标系被认为是裁剪坐标。裁剪坐标系通过透视分割后产生归一化的设备坐标系,再通过视口转换变成窗口坐标系(如果2.4)。

裁剪坐标系是一个四维的齐次向量,按照顺序由x,y,z和w坐标组成。如果顶点裁剪坐标系是
\begin{pmatrix} x_c \\ y_c \\ z_c \\ w_c \\ \end{pmatrix}
那么顶点的归一化设备坐标系是:
\begin{pmatrix} x_d \\ y_d \\ z_d \end{pmatrix} = \begin{pmatrix} \frac {x_c} {w_c} \\ \frac {y_c} {w_c} \\ \frac {z_c} {w_c} \end{pmatrix}

2.12.1 控制视口

视口变换由视口的像素宽高决定,即p_x,p_y,各自的中心点(o_x,o_y)也是像素衡量的中心。顶点的窗口坐标\begin{pmatrix} x_w\\ y_w \\ z_w \end{pmatrix} 通过下面计算得到:

\begin{pmatrix} x_w \\ y_w \\ z_w \end{pmatrix} = \begin{pmatrix} \frac {p_x} {2}x_d + o_x \\ \frac {p_y} {2}y_d + o_y \\ \frac {f-n} {2}z_d + \frac {n+f} {2} \end{pmatrix}
作用于z_d的因子和偏移量由nf共同决定,使用函数:

void DepthRangef(clampf n, clampf f)

每个nf都被限制在[0,1]中,所有的参数都是clampf类型。z_w是被认为是以固定点表示的,其位数至少和帧缓冲区的深度缓冲区的位数相同,如果用在2.1.2节中帧缓冲区部分中描述的那样。

视口转换参数被指定使用:

void Viewport(int x, int y ,sizei w, sizei h)

其中,x和y给出了视口左下角的窗口坐标系的x和y值,w和h各自给出了视口的长和宽。视口的参数在上面的等式中通过这些值建立:o_x = x + \frac {w} {2},o_y = y + \frac {h} {2},p_x = w, p_y = h

当被指定时,视口的宽和长会被牵拉到实现相关的最大值。最大的长宽值可以调用一个合适的Get函数来查询到(见第6章)。最大的视口维度必须要大于或者等于要被渲染显示的可视的维度。w或者h如果是负的,将会产生INVALED_VALUE错误。

实现视口转换需要四个整形数和两个固定的浮点值。在初始状态,w和h各自被设置为窗口的宽和高,然后传递给GL做渲染。o_x,o_y被设置为\frac {w} {2}, \frac {h} {2}。n和f分别被设置为0.0和1.0。

2.13 图元裁剪

图元按照裁剪量裁剪,在裁剪坐标系中,裁剪量被定义为

-w_c \le x_c \le w_c \\ -w_c \le y_c \le w_c \\ -w_c \le z_c \le w_c \\

如果要处理的图元是点,这个点在近裁剪平面和远裁剪平面之外,裁剪机制将会忽略这个点。

如果要处理的图元是一个线段,整个线段都在近裁剪平面和远裁剪平面之内,裁剪机制不会做处理,如果整个线段都在两个裁剪平面之外,裁剪机制也会忽略它。

如果线段的一部分在俩那个裁剪平面之内,另一部分在外面,那么线段将会根据俩那个平面重新裁剪,并且顶点的顶点坐标系也会重新计算。

裁剪操作产生一个值,对每个裁剪操作过的顶点都有0 \le t \le 1。如果裁剪过的顶点的坐标系为P,原始的顶点坐标系为P1P2,那么t有下面公式给出:
P = tP_1 + (1-t)P_2

如果图元是三角形,每个边缘全部都在裁剪区域内才会被执行,部分在外的顶点会被裁剪,全部在外的顶点也会被忽略。裁剪操作会引起三角形的边被裁剪,但因为连接性必须被保持,这些被裁剪的边使用裁剪时裁剪区域的边际产生的新的边来重新连接起来。因此,裁剪操作可能会引进一个新的顶点给三角形,从而编程一个广义上的多边形。

如果一个三角形和裁剪区域的边界相交,被裁剪的三角形必须包含这个边界上的一点。

线段或者三角形的顶点拥有不同符号的w_c值时,可能会在裁剪操作之后产生多个相互连接的部分。GL的实现不要求处理这种情况。这意味着,只有在w_c > 0的区域中的图元的部分需要被裁剪操作处理。

2.13.1 裁剪变量输出

之后,顶点着色器的varying变量被裁剪了。在裁剪区域中的顶点和相关的varying变量的值不受裁剪操作影响。如果图元被裁剪了,通过裁剪操作产生的分配给顶点的varying值就是裁剪过后的值。

未裁剪的边上的两个顶点P1P2分配的varying变量的值为c1和c2。对于一个裁剪过的P值,其t的值(见2.13)通常和P的值有以下关系:
c = tc_1 + (1-t)c_2
(通过放缩因子放缩一个varying变量的值意味着放缩每一个x,y,z和w的值)

多边形裁剪操作可能会产生一个沿着裁剪区域边界的被裁剪的顶点。多边形裁剪是通过一次裁剪剪辑区域边界的一个平面来处理这种情况的。varying值的裁剪操作也是这样完成的,被才见的点总是出现在多边形的边和裁剪区域边界相交的地方。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容