OpenGL ES 2.0 笔记 - 特殊的内建变量

2024-03-06 22:48

本文主要是介绍OpenGL ES 2.0 笔记 - 特殊的内建变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

特殊的内建变量

一般用来实现渲染管线固定功能部分与自定义顶点或片元着色器之间的信息交互.

顶点着色器中的内建变量

  • gl_Position
    顶点着色器从应用程序获取原始的顶点位置数据,这些原始的顶点数据在顶点着色器中经过
    平移,旋转,缩放等数学变换后,生成新的顶点位置.新的顶点位置通过顶点着色器写入gl_Position
    传递到渲染管线的后继阶段继续处理.
    gl_Postion的类型是vec4
  • gl_PointSize
    顶点着色器中可以计算一个点的大小(单位:像素),并将其赋值给gl_PointSize(标量float)
    以传递给渲染管线.如果没有明确赋值,就采用默认值1.gl_PointSize的值一般只有采用点绘制方式之后才有意义.

片元着色器中的内建变量

  1. 片元着色器中的内建输入变量主要有gl_FragCoord以及 gl_FrontFacing.这两个内建变量都是只读的,由渲染
    管线中片元着色器之前的阶段生成.

    • gl_FragCoord
      内建变量gl_FragCoord(vec4类型)中含有当前片元相对于窗口的坐标值x,y,z与1/w
      其中x与y分别为片元相对于窗口的二维坐标.如果窗口的大小800*480(单位:像素),
      那么x的取值范围0~800,y的取值范围为0~480, z部分为该片元的深度值.
      这里写图片描述

    • gl_FrontFacing
      gl_FrontFacing是一个布尔型的内建变量,判断正在处理的片元是否属于在光栅化阶段生成此片元的对应图元的正面.
      对于点,线段没有正反面之分的图元,其生成的片元都会默认为正面的.

  2. 内建输出变量
    片元着色器的内建输出变量主要有gl_FlagColor 与 gl_FlagData,在片元着色器中根据具体情况需要给这两个内建变量写入值.

    • gl_FragColor
      gl_FragColor(vec4类型)内建变量用来由片元着色器写入计算完成的片元颜色值,此颜色值将送入渲染管线处理.
    • gl_FragData
      gl_FragData内建变量本身是一个vec4类型的数组,写入时要给出下标,如”gl_FragData[0]”.

    提示: 实际开发中,对上述两个内建输出变量赋值时应该根据具体情况仅选用其中的一个.
    若执行了discard操作,则两个内建变量都不需要写入值了.

这篇关于OpenGL ES 2.0 笔记 - 特殊的内建变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781612

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析