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

相关文章

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渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,