美文网首页
(五)OpenGL着色器

(五)OpenGL着色器

作者: faceowener | 来源:发表于2020-03-01 16:09 被阅读0次

什么是着色器

1、glsl:在GPU上运行的程序,是可编程的,OpenGL Shading Language,主要分为两个部分顶点着色器以及片源着色器;

2、attribute:用于各个顶点各不相同的量,如顶点颜色、顶点坐标。只能在顶点着色器中使用;

3、uniform:用于对3D物体中所有顶点都相同的量,例如光源位置,统一变换矩阵。不能被修改,由外部传递进来;

4、varying:表示易变量,用于顶点着色器传递到片元着色器的量;

5、gl_Position:属常用内建变量,顶点的位置,在顶点着色器中使用,四维向量;

6、gl_FragColor:属常用内建变量,顶点颜色,在片元着色器中使用,四维向量;

7、texture2D:属常用内建变量,获取纹理某个位置的纹理,第一个参数是纹理句柄,第二个是纹理位置;

编译着色器

1、获取着色器路径,着色器就是一个program,需要在bundle里面加载资源;

2、创建可执行程序,获取着色器内容,加入、编译、附着、链接、执行;

image.png image2.png image3.png

着色器工作流程

1、基于顶点的操作

顶点着色器处理顶点,每个顶点由空间矩阵变换,有效地将其3D坐标系统改变为新的坐标系统。就像摄影相机将3D风景转换成2D照片一样

2、图元装配

以指定的顺序连接顶点构建基本体状态

3、图元处理

屏幕外面的任何图元都被剪辑并在下一阶段忽略

4、栅格化

测试像素是否在图元的边内。如果他们不是,他们被丢弃。如果他们在图元内,他们被带到下一个阶段。通过测试的像素集被称为片段

5、片面处理

将颜色或纹理应用到片段内的像素

6、基于片段的操作

片段被提交到几个测试,如:透明度(Alpha)测试,模板(Stencil)测试,深度(Depth)测试等

结果

像素被保存在帧缓存(Framebuffer)中,更具体地,保存在Default-Framebuffer中。这些是你在移动设备屏幕上看到的像素

相关文章

  • OpenGL绘制方式

    OpenGL图元 这里不考虑几何着色器和细分曲面着色器。OpenGL的图元类型为点、线、面。 点 OpenGL在显...

  • 着色器

    着色器 OpenGL ES着色器语言之变量和数据类型(一) 我的OpenGL ES学习之路(一):GLSL着色器语言

  • 从0开始的OpenGL学习(二十五)-几何着色器

    本章主要解决1个问题: 如何在OpenGL使用几何着色器? 引言 除了顶点着色器和片元着色器,OpenGL还提供了...

  • OpenGL入门(二)-基本图元绘制

    OpenGL与着色器 在OpenGL 3.0之前,OpenGL包含一个固定功能的管线,它可以在不使用着色器的情况下...

  • OpenGL 学习之渲染基础

    一、OpenGL与着色器 在OpenGL3.0之前,OpenGL包含一个固定功能的管线,它可以在不使用着色器的情况...

  • OpenGL ES 学习笔记(一)

    一. 着色器 顶点着色器的输出在OpenGL ES 2.0中称作varying,但是在OpenGL ES 3.0改...

  • OpenGL ES 3.0 subroutine问题

    本文档只是测试OpenGL ES着色器语言是否支持subroutine功能。结论是,OpenGL着色器语言支持,O...

  • OpenGL ES 3.0 | 着色器编译器

    概述 当你要求OpenGL ES 编译和链接着色器时,思考 OpenGL ES 实现 必须要做的事情; 着色器代码...

  • GLSL语言

    什么是GLSLGLSL(OpenGL Shading Language)OpenGL着色器语言。 GLSL基础类型...

  • OpenGL_002_OpenGL基础渲染

    OpenGL基础渲染 一、OpenGL 与 着色器 在OpenGL 3.0之前,OpenGL包含一个固定功能的管线...

网友评论

      本文标题:(五)OpenGL着色器

      本文链接:https://www.haomeiwen.com/subject/fqmckhtx.html