OpenGL ES 2.0
文章平均质量分 92
光头小杨
发挥自己最大的价值
展开
-
从渲染管线学 GLES2.0(九)----测试与混合
深度测试,根据片段的深度值来判断片段能否被渲染,如果一个物体有遮挡,那么我们只希望绘制我们可以看得到的片段,离我们比较远被遮挡的片段是不希望被绘制出来的。在屏幕空间中,物体表面上的任意点的坐标 z 值代表一个深度值,深度值的范围是 [0, 1],其中值为 0 代表在近平面上,为 1 代表在远平面上,也就是说深度值越小则离观察者是越近的。深度测试发生在模板测试之后,当深度测试被启用的时候,就会将一个片段的深度值与对应位置的深度缓冲值比较,如果这个深度测试失败了,片段也就将会被丢弃。原创 2024-04-15 10:28:00 · 835 阅读 · 0 评论 -
从渲染管线学 GLES2.0(八)----纹理
纹理环绕纹理环绕的作用主要是为了处理超出 [0, 1] 范围之外的纹理坐标,不同的纹理环绕方式对超出坐标处理的也不一样。在 OpenGL ES 2.0 中,纹理环绕方式有 3 种环绕方式描述GL_REPEAT对纹理的默认行为。重复纹理图像。和GL_REPEAT一样,但每次重复图片是镜像放置的。纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘,产生一种边缘被拉伸的效果。原创 2024-04-12 14:14:42 · 638 阅读 · 0 评论 -
从渲染管线学 GLES2.0(七)----光栅化(包含透视校正)
光栅化是把图元画在屏幕上的一个过程,也就是把图元的顶点数据转换为片段的过程。该过程主要包含两部分工作,第一部分决定窗口内的哪些栅格区域被图元占有,第二部分计算出来每一个顶点的属性值。光栅化都是在视窗变换之后进行的。原创 2024-04-09 17:28:32 · 929 阅读 · 0 评论 -
从渲染管线学 GLES2.0(六)----面剔除和视窗变换
之前在变换文章中提到过三维向量的叉乘,它会生成第三个垂直于前两个向量的法向量,叉乘公式为在二维中,是没有 z 的,那么我们可以把 z 当作是 0,那么二维向量的叉乘就变成了这个时候我们就可以把二维向量的叉乘值定义为一个标量二维向量的叉乘公式又为那么我们就可以利用二维向量的叉乘来计算三角形的环绕顺序,同时也可以利用二维向量的叉乘来计算平行四边形的面积。原创 2024-04-09 09:43:38 · 698 阅读 · 0 评论 -
从渲染管线学 GLES2.0(五)----裁剪
OpenGL 规定了我们可见的顶点都应该在标准视体之内,也就是在标准化设备坐标(NDC)中,每个顶点的 x、y、z 坐标都应该在 -1.0 到 1.0 之间,对应的 xyz 范围就是 -1 <= x,y,z <= 1,超出这个范围的顶点都将不可见。原创 2024-04-03 17:03:42 · 567 阅读 · 0 评论 -
从渲染管线学 GLES2.0(四)----图元装配
本来这一节应该讲的是裁剪,但是裁剪的时候,根据不同的图元类型处理裁剪的方式也是不一样的,所以在裁剪之前先来说一下图元装配。原创 2024-04-02 14:37:17 · 678 阅读 · 0 评论 -
从渲染管线学 GLES2.0(三)----变换(MVP变换)
向量最基本的定义就是一个方向,或者更正式的说,向量有一个方向和大小。如果一个向量有两个维度,它表示一个平面的方向,当它有 3 个维度的时候它可以表达一个 3D 世界的方向。比如下面就表示一个平面向量。对于三维向量来讲,一般我们会使用字母上面加一横表示向量,当用在公式时它们通常是这样的由于向量是一个方向,所以有些时候很难形象的将它们用位置表示出来。为了让其更加直观,我们通常设定这个方向的原点为(0, 0, 0),然后指向一个方向。原创 2024-04-02 13:50:20 · 1004 阅读 · 0 评论 -
从渲染管线学 GLES2.0(二)----着色器
现代 OpenGL ES 渲染管线严重依赖着色器来处理传入的数据,如果不使用着色器,那么用 OpenGL ES 可以做到的事情就只有清除窗口内容了,可见着色器与 OpenGL ES 的重要性。无论是 OpenGL ES 还是其它图形的 API 着色器,通常都是通过一种特殊的编程语言去编写的,对于 OpenGL ES 来说使用的是 GLSL,也就是 OpenGL Shading Language,虽然 GLSL 是一种专门为图形开发设计的语言,但是它与 C 语言非常相似,当然还有一点 C++ 的影子。原创 2024-03-27 11:43:28 · 570 阅读 · 0 评论 -
从渲染管线学 GLES2.0(一)----初识渲染管线
OpenGL ES 是以满足早期的嵌入式设备的需要,比如移动电话和机顶盒。OpenGL ES 的最初版本 1.0 版源自 OpenGL 的 1.3 版本,并且很快扩展到 OpenGL ES 的 1.1 版本,它是基于 OpenGL 的 1.5 版本,这个版本在带有固定功能图形硬件的手机上得到了很大的普及。随着移动图形硬件变得更强大,主要由于可编程着色器,这促使需要一个新的 OpenGL ES 版本,OpenGL ES2.0 版基于 OpenGL 2.0 版本。原创 2024-03-25 11:00:03 · 778 阅读 · 0 评论