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

相关文章

Java 接口定义变量的示例代码

《Java接口定义变量的示例代码》文章介绍了Java接口中的变量和方法,接口中的变量必须是publicstaticfinal的,用于定义常量,而方法默认是publicabstract的,必须由实现类... 在 Java 中,接口是一种抽象类型,用于定义类必须实现的方法。接口可以包含常量和方法,但不能包含实例

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Python之变量命名规则详解

《Python之变量命名规则详解》Python变量命名需遵守语法规范(字母开头、不使用关键字),遵循三要(自解释、明确功能)和三不要(避免缩写、语法错误、滥用下划线)原则,确保代码易读易维护... 目录1. 硬性规则2. “三要” 原则2.1. 要体现变量的 “实际作用”,拒绝 “无意义命名”2.2. 要让

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