OpenGL Shading language学习总结

2023-10-27

这篇文章是根据<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例 >中对应章节的总结,看了好几本OpenGL ES的入门图书,只有这本让我在入门的时候不那么迷茫,强烈推荐!非常遗憾,这本书没有电子正版,我只能购买一本正版图书,然后下载一个pdf版本在公交上阅读。


着色语言概述

OpenGL ES 着色语言是一种高级的图形编程语言,其源自于广泛使用的C语言,同时具有RenderMan以及其他着色语言的一些优良特性,易于被开发人员掌握。简单来说,OpenGL ES着色语言主要包括一下特性:
  • OpenGL ES 着色语言是一种高级的过程语言(注意,不是面向对象)
  • 对顶点着色器、片元着色器使用的是同样的语言,不做区分
  • 基于C/C++的语法以及流程控制
  • 完美支持向量和矩阵的各种操作
  • 通过类型限定符来管理输入和输出
  • 拥有大量的内置函数来提供丰富的功能

着色语言基础

一. 数据类型概述

总体来说,数据类型可以分为标量,向量,矩阵,采样器,结构体以及数组等几类。
1. 标量:标量也被称为“无向量”,其值只具有大小,并不具有方向。OpenGL ES 着色语言支持的标量类型有bool、int、float。
2. 向量:OpenGL ES 着色语言中,向量可以看做是同样类型的标量组成的,其基本类型也分为bool、int以及float 3种。每个向量可以由2个、3个或者4个相同的标量组成。向量在着色器代码的开发中有着十分重要的作用,可以很方便地存储以及操作颜色、位置、纹理坐标等不仅包含一个组成部分的量。访问向量中的各个分量不但可以采用“.”加上不同的分量名,还可以将向量看成一个数组,用下标来进行访问。
3. 矩阵:矩阵按尺寸可以分为2x2矩阵,3x3矩阵,以及4x4矩阵。OpenGL ES 着色语言中,矩阵是按列顺序组织的,也就是一个矩阵可以看作为几个列向量组成的。对于矩阵的访问,可以将矩阵作为列向量的数据来访问,如:matrix为一个mat4,可以使用matrix[2]来获取该矩阵的第3列,其为一个vec4。
4. 采样器:采样器是着色语言中不同于C语言的一种特殊的基本数据类型,其专门用来进行纹理采样的相关操作。一般情况下,一个采样器变量代表一幅或一套纹理贴图。
5. 结构体:OpenGL ES 着色语言还提供了类似于C语言中的用户自定义结构体,同样也是使用struct关键字进行声明。
6. 数组:在着色语言中,开发人员可以声明任何类型的数组。声明数组的方式主要有两种:
        
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL Shading language学习总结 的相关文章

  • opengl es 3D要素——贴图

    前不久开始了正式的opengl es学习 目前为止 成就有 显示一些三维元素 一些可以自由旋转 一些可以用手指控制左右上下的旋转 下一步准备开始写光照了 在此之前先整理下思路 我的工程已经开始变得庞大了 需要声明下 我不太会把全部的代码贴出
  • OpenGL Shading language学习总结

    这篇文章是根据
  • OpenGL ES EGL介绍

    前面已经在android平台上使用OpenGL ES的API了解了如何创建3D图形已经使用FBO渲染到纹理进行一些其他的操作 起初我学习OpenGL ES的目的就是为了研究Android平台上录制屏幕的方案 到目前为止 基础知识已经具备了
  • OpenGL ES 3.0 开发(一)

    什么是 OpenGLES OpenGLES 全称 OpenGL for Embedded Systems 是三维图形应用程序接口 OpenGL 的子集 本质上是一个跨编程语言 跨平台的编程接口规范 主要应用于嵌入式设备 如手机 平板等 由科
  • android游戏开发(OpenGL ES绘制矩形平面)

    接触android将近一年了 以前学的应用开发 现在自学android游戏开发 把自己学到的分享出来一下 这也是我的第一篇博客 不说废话了 开始正文 GLRender类用于图形的渲染工作 Util类用于glrender中的数据缓冲 GLRe
  • Mali GPU OpenGL ES 应用性能优化--基本概念

    1 基本概念 1 1 Mali GPU家族 Mali GPU家族都包含以下通用的硬件 基于分块的延迟渲染 Mali GPU把framebuffer分成许多块 16 x 16像素 然后一块一块地进行渲染 基于分块的渲染是有效的 因为像素值使用
  • Cocos2dx-OpenGL ES2.0教程:你的第一个立方体(5)

    在上篇文章中 我们介绍了VBO索引的使用 使用VBO索引可以有效地减少顶点个数 优化内存 提高程序效率 本教程将带领大家一起走进3D 绘制一个立方体 其实画立方体本质上和画三角形没什么区别 所有的模型最终都要转换为三角形 同时 本文还会介绍
  • Cocos2dx-OpenGL ES2.0教程:初识MVP(3)

    在上一篇文章中 我在介绍vertex shader的时候挖了一个坑 CC MVPMatrix 它其实是一个uniform 每一个cocos2d x预定义的shader都包含有这个uniform 但是如果你在shader里面不使用这个变量的话
  • Android OpenGL ES2.0(一):详细讲解如何绘制一个三角形

    一 Android OpenGL ES2 0简介 1 什么是OpenGL OpenGL 全写Open Graphics Library 是指定义了一个跨编程语言 跨平台的编程接口规格的专业的图形程序接口 它用于三维图像 二维的亦可 是一个功
  • OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out

    有几个学习图形学不久的同学都问到这个问题 做一阐述 1 关键字的小修改大概由如下两点决定 第一 先考虑一个成本原则 一个关键字的定义是否修改 是由熟练程序员在使用该关键字时的思维成本来决定的 当然 还有一个原则 是由初学者的学习成本来决定的
  • IOS Opengl ES 用多光源实现材质,阴影,高光效果

    在Opengl ES 1 0 中 要实现材质效果 往往需要光源的设置 如果环境光和漫反射光强了 材质效果难以体现 如果环境光和漫反射光弱了 材质就暗了 实现阴影效果 可以放置一个主平行光源 为了材质效果 需要将环境光设到比较弱 漫反射光设到
  • Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程

    1 使用DS 5 Streamline定位瓶颈 DS 5 Streamline要求GPU驱动启用性能测试 在Mali GPU驱动中激活性能测试对性能影响微不足道 1 1 DS 5 Streamline简介 可使用DS 5 Streamlin
  • OpenGL ES之十一——绘制3D图形

    概述 这是一个系列的Android平台下OpenGl ES介绍 从最基本的使用最终到VR图的展示的实现 属于基础篇 后面针对VR视频会再有几篇文章 属于进阶篇 OpenGL ES之一 概念扫盲 OpenGL ES之二 Android中的Op
  • GLSL(着色器语言)

    GLSL 着色器语言 简介 OpenGLES的着色器语言GLSL是一种高级的图形化编程语言 其源自应用广泛的C语言 与传统的c语言不同的是 它提供了更加丰富的针对于图像处理的原生类型 诸如向量 矩阵之类 OpenGLES 主要包含以下特性
  • Android OpenGLES2.0(十六)——3D模型贴图及光照处理(obj+mtl)

    在Android OpenGLES2 0 十四 Obj格式3D模型加载中实现了Obj格式的3D模型的加载 加载的是一个没有贴图 没有光照处理的帽子 为了呈现出立体效果 手动 加了光照 拥有贴图的纹理及光照又该怎么加载呢 模型文件 本篇博客例
  • android native 使用opengl es画点线面图形(纯c++)

    一 首先需要对EGL进行初始化 void Renderer initEGL const EGLint attribs EGL SURFACE TYPE EGL WINDOW BIT EGL BLUE SIZE 8 EGL GREEN SIZ
  • 【OPENGLES】opengles-jni实例1

    首先 说明下为什么要用jni实现opengl es 在进行移动端图像算法开发的过程中 需要完成对大量的数据进行处理 opengl是在进行图形渲染或者大批量图像运算处理时有着很大的优势 如果能够在算法库开发中加入opengl 则对于提升算法运
  • Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)

    在上篇文章中 我给大家介绍了如何在cocos2d x里面绘制一个三角形 当时我们使用的是cocos2d x引擎自带的shader和一些辅助函数 在本文中 我将演示一下如何编写自己的shader 同时 我们还会介绍VBO 顶点缓冲区对象 和V
  • 在Android下初始化Native OpenGL ES

    在上一篇文章中 介绍了在Android Native层初始化EGL及OpenGL ES的方法 其中 大量代码花费在EGL的初始化上面 非常的麻烦 在本文中 将展示利用GLSurfaceView来代替我们手动初始化EGL的过程 用GLSurf
  • OpenGL ES 2.0升级到3.0配置win32环境以及编译所遇bug

    安装win32平台的OpenGL ES 3 0模拟器 一 安装3 0模拟器 一般用32位的 https developer arm com products software development tools graphics devel

随机推荐

  • fiddler设置好代理后不能上网(方法二)

    1 打开fiddler在工具栏找到Tools gt options Connections选项如下图 将Allow remote computers to connect 勾选上 然后记住默认8888这个端口 可更改 设置手机代理时会用到
  • 2023高教社数学建模国赛A题 - 定日镜场的优化设计 - 思路

    问题1 计算年平均光学效率和输出热功率 建立模型的坐标系 以圆形区域中心为原点 正东方向为x轴 正北方向为y轴 垂直地面向上为z轴 计算吸收塔和定日镜的位置 吸收塔建于圆形定日镜场中心 根据给定的数据确定定日镜的位置 计算每个定日镜的光学效
  • 使用阿里云OSS实现文件的上传、下载、删除及修改功能

    一 配置OSS相关配置信息 1 要配置 OSS 相关配置信息 您可以按照以下步骤操作 登录阿里云控制台 进入 OSS 控制台 创建一个新的 OSS Bucket 并记录下以下信息 Bucket 名称 Bucket 所属地域 AccessKe
  • 如何解决git上传文件出错[rejected] master -> master (fetch first) error: failed to push some refs to '

    rejected master gt master fetch first error failed to push some refs to git gitee co 上传到码云的时候 报了这个错误 rejected master gt
  • 使用sklearn学习多项式回归(三)

    目录 1 什么是线性 1 1 变量之间的线性关系 1 2 数据间的线性与非线性 1 3 线性模型与非线性模型 1 4 使用分箱处理非线性问题 2 多项式回归PolynomialFeatures 2 1 什么是多项式回归 2 2 多项式回归处
  • 使用 Openssl 验证自签名证书

    原文地址 http blog csdn net kmyhy article details 6546072 iOS的 security framework 框架前面已经介绍 这个框架提供有限的功能 使用它能做到的 比你想象的要少 笔者一直想
  • html input 禁用缓存

    多数浏览器默认会缓存input的值 只有使用ctl F5强制刷新的才可以清除缓存记录 如果不想让浏览器缓存input的值 有2种方法 input 的属性autocomplete 默认为on 其含义代表是否让浏览器自动记录之前输入的值 很多时
  • word编辑公式简单方法

    安装Python包 pix2tex 在终端输入 pip install pix2tex gui i https pypi doubanio com simple 就可以安装 安装好以后 在终端输入pix2tex gui就可以启动 第一次启动
  • Android多级树形选择列表案例 - 手把手教你快速实现

    公司项目中有一个选择联系人的界面 一看里面关系极其复杂 最多时有5层关系嵌套 层数还不一定 有的是第五级是人员 有的是第四级是人员 崩溃中 原来的实现方式是分了三个Activity去分别加载 个人觉得太过臃肿麻烦 选个人要调四次页面 太繁琐
  • Vite原理学习之预编译

    前言 Vite是下一代的前端开发与构建工具 为什么称为下一代 根本原因在于其基于原生ES Module 在目前的前端工程化生态中 webpack rollup esbuild等非常流行 而Vite真是构建在一些流行的技术上 Vite的出现实
  • mysql按升序创建索引_MySQL中如何使用索引

    原标题 MySQL中如何使用索引 者 Airy 在数据分析之路狂奔 立志成为大咖级人物 前言 学完基础的MySQL知识 以及MySQL的增删改查 我们要学习一些性能方面的东西 今天来讲一下索引 Index 索引 在关系数据库中 索引是一种单
  • BUUCTF学习笔记-EasySQL

    BUUCTF学习笔记 EasySQL 时间 2020 03 14 考点 堆叠注入 SQL模式 打开是一个输入框 提交参数查询 随意提交几个参数 发现存在堆叠注入 输入1显示Array 0 gt 1 输入2显示Array 0 gt 1 输入2
  • SQL基础之增、删、改、查

    文章目录 SQL基础之增 删 改 查 SELECT INSERT UPDATE DELETE 参考 SQL基础之增 删 改 查 SQL Structured Query Language SELECT 查 SELECT FROM 整张表查询
  • ACwing算法基础课全程笔记(2021年8月12日开始重写+优化)

    更好的阅读体验 基础模板 2021年8月12日开始对基础课笔记进行重写 优化 请大家支持AcWing正版 购买网课能让自己获得更好的学习体验哦 链接 https www acwing com about 比赛常用技巧及库函数 1 快速读 快
  • win11 install wsl2

    在 Windows 11 上安装 WSL 2 的步骤如下 首先 确保你的 Windows 版本是 Windows 11 或者更新的版本 并且支持 WSL 2 然后 打开 设置 应用 在 更新与安全 页面的 开发人员选项 中 启用 Windo
  • 用200行C语言代码写出一个贪吃蛇——1.0(基本版)

    1 设计思路 总的来说 贪吃蛇这个小游戏涉及到的东西不多 但是对逻辑思维是比较吃基本功的 贪吃蛇 显示给我们看的有三部分 蛇 食物 地图边界 我们可以用一个二维数组来标记这些部分 例如这里我创建了一个 5 10 的二维数组 其中 1 表食物
  • 手写模拟Spring的底层原理2.1

    先来引入两个问题 第一个懒加载还是立即加载的问题 这个问题还是在于就是说 当我们xml配置了一个对象bean的时候 它在spring容器里面是什么时候开始会给我们创建这个对象 那如果我们想对某个对象启动懒加载 可以添加 lazy这个注解 这
  • Fiddler抓包工具保姆级使用教程(超详细)

    超文本传输协议 HTTP 是一个简单的请求 响应协议 其主要是基于TCP来实现的 可以通过Chrome开发者工具或者Wireshark或者Fiddler抓包 以便分析 HTTP 请求 响应的细节 本篇博客主要谈论如何使用Fiddler抓取H
  • vector 二维数组

    动态数组 int p p new int m 注意 int m 表示一个有m个元素的指针数组 p new int 8 表示分配一个int空间并初始化为8 for int i 0 i lt m i p i new int 5 利用Vector
  • OpenGL Shading language学习总结

    这篇文章是根据