OpenGl ES 3.0 笔记一:初步概念

🎯 整体比喻:开一场 3D 打印画展!

想象你在做一件事情:「拿设计图,把它画在一张纸上」。
这整个流程就好像 GPU 在渲染一幅画。
而下面这几个阶段,就是这场「画展」里每个具体的人或机器要做的事情:


1. 顶点着色器(Vertex Shader)

作用:处理每一个点(顶点),决定它放在哪里、长什么样。

🧠 比喻:
就像你在设计图上标出各个点的位置
比如「头顶在这里,手在这里」,每个点可能还有颜色、大小之类信息。

🛠 举例:

  • 输入:一个三角形的三个顶点 (坐标、颜色、法线等)
  • 顶点着色器:
    • 乘以MVP矩阵,把本地坐标变成屏幕上的位置。
    • 可以改变点的颜色、大小等。
  • 输出:每个点的新位置、新属性。

✅ 记忆口诀:“点”搬到正确位置上!


2. 图元装配(Primitive Assembly)

作用:把一个个点连起来,组成「图形」比如三角形、线段。

🧠 比喻:
就像把设计图上的点用线连接起来,画出三角形、矩形、房子轮廓!

🛠 举例:

  • 输入:三个顶点
  • 图元装配:
    • 发现这三个点要组成一个三角形
  • 输出:一个确定了顶点顺序的三角形

✅ 记忆口诀:“点连成线/面”!


3. 光栅化(Rasterization)

作用:把连续的三角形变成一堆小格子(像素),决定要涂哪块。

🧠 比喻:
想象你拿一张方格纸(像素格子),用铅笔把三角形里属于的格子都涂黑。
光栅化就是在格子上“染色”!

🛠 举例:

  • 输入:一个大三角形(顶点位置)
  • 光栅化:
    • 计算哪些像素格子在三角形内部
    • 对每个像素插值颜色、纹理坐标等
  • 输出:每个像素点准备好要着色的信息

✅ 记忆口诀:“面变成一堆像素点”!


4. 片段着色器(Fragment Shader)

作用:每个像素自己决定怎么最终着色。

🧠 比喻:
就像每个被铅笔点到的小格子自己决定画红的?蓝的?加纹理?加亮?

🛠 举例:

  • 输入:一个像素的位置、插值后的颜色、纹理坐标
  • 片段着色器:
    • 查纹理,混合颜色,做光照计算
  • 输出:最终这个像素的颜色(比如红色、绿色、透明度等)

✅ 记忆口诀:“每个像素自己上色”!


5. 逐片段操作(Per-Fragment Operations)

作用:最终的「管控」:裁剪、不透明度混合、写进屏幕缓存。

🧠 比喻:
就像审查员,每个格子画完后,检查一遍:

  • 这个像素要不要丢掉?
  • 这个像素透明吗?
  • 如果是透明的,要怎么跟下面的叠加?

🛠 举例:

  • 深度测试:当前片段是不是比已有的片段更靠前?
  • 混合:比如透明玻璃的叠加效果。
  • 模板测试:做一些遮罩效果。

✅ 记忆口诀:“最终审核决定能不能留”!


📈 总流程图示意

顶点数据↓
【顶点着色器】(点的位置、颜色)↓
【图元装配】(连接成三角形)↓
【光栅化】(确定哪些像素被覆盖)↓
【片段着色器】(每个像素自己决定颜色)↓
【逐片段操作】(测试深度/混合,决定最后显示)↓
屏幕画面

✨ 小总结记忆法

阶段比喻关键词
顶点着色器点的位置/初步化妆定点位置
图元装配点连成面连线成形
光栅化三角形染色面转像素
片段着色器每个像素化妆颜色决定
逐片段操作审核打分能不能画

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人类社会的第四阶段

本书的主旨是探讨一场新的权力革命,它将以20世纪民族国家的毁灭为代价, 解放出个体。创新,以前所未有的方式改变了暴力的逻辑,并且正在革新未来的 边界。如果我们的推论是正确的,你们正站在一场有史以来最宏大的革命的…

位置差在坐标系间的相互转换

1 NED转经纬高 (n 系下的北向、东向和垂向位置差异(单位 m)转化为纬度、经度和高程分量的差异) 2 基站坐标转换 纬度、经度、高程 到 ECEF %纬度、经度、高程 到 ECEF clc; clear; glvs; addpath(genpath(E:\GNSSINS\ACES)…

WPF定义扩展属性和依赖属性

WPF扩展属性与依赖属性详解 一、依赖属性(Dependency Property)详解 1. 什么是依赖属性? 依赖属性是WPF框架的核心特性之一,它允许属性值依赖于: 父元素的属性值(继承)样式和模板动画数据绑定资源查找2. 依赖属性的特点 ​​属性值继承​​:子元素可以继承父元素的属性…

边缘函数:全栈开发的最后1毫秒性能革命

一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据: 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)

每周五篇博客:(4/5) https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区,巴尔贝索沃机场也不例外。在某个时候,Sheremetyevo的一位管理员提出了一个不寻常的想法:将行李索…

LLM(大语言模型)技术的最新进展可总结

截至2025年4月26日,LLM(大语言模型)技术的最新进展可总结为以下关键方向: 1. 架构创新与性能突破 多模态能力深化:GPT-4o等模型通过统一架构支持文本、图像、音频和视频的跨模态推理,显著提升复杂场景下的…

黑马点评redis改 part 6

GEO数据结构 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息,包含&a…

Spring_MVC 中的 JSON 数据处理与 REST 风格开发

Spring_MVC 中的 JSON 数据处理与 REST 风格开发 一、JSON 格式参数 1. 格式布置 依赖导入 为了处理 JSON 数据&#xff0c;需要在项目中引入 Jackson 库&#xff0c;它是 Spring_MVC 默认使用的 JSON 处理工具。 <dependency><groupId>com.fasterxml.jackson…

蓝桥杯 8. 移动距离

移动距离 原题目链接 题目描述 X 星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。楼房的编号为 1, 2, 3, ⋯⋯。 当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。 例如&#xff0c;当小区排号宽度为 6 时&#xff0c;排列如下&#xff1a; 1 2 …

第11章 安全网络架构和组件(一)

11.1 OSI 模型 协议可通过网络在计算机之间进行通信。 协议是一组规则和限制&#xff0c;用于定义数据如何通过网络介质&#xff08;如双绞线、无线传输等&#xff09;进行传输。 国际标准化组织(ISO)在20世纪70年代晚期开发了开放系统互连(OSI)参考模型。 11.1.1 OSI模型的…

文献分享:一种四价双特异性抗体的功能性和IgG样稳定性、药理学和可开发特性研究

背景 双特异性抗体&#xff08;bsAb&#xff09;是一种有前途的药物形式&#xff0c;能够同时结合相同或不同抗原上的两个不同表位。迄今为止&#xff0c;已有14个双特异性抗体药物获得上市批准&#xff0c;尽管取得了这些成功并且迄今为止设计了多种形式&#xff0c;但具有高…

英文中数字读法规则

以下是英文中数字读法的详细规则&#xff0c;涵盖基本数字、大数字、小数、分数、序数词及特殊场景&#xff08;如电话号码、年份、金额等&#xff09;&#xff1a; 一、基本数字&#xff08;0-10&#xff09; 数字基数词&#xff08;Cardinal&#xff09;序数词&#xff08;O…

32BIT的SPI主机控制

SPI传输位数可参数化配置。 SPI_MASTER: timescale 1ns / 1ps module SPI_Master #(parameter CLK_FREQ 50,parameter SPI_CLK 1000,parameter CPOL 0,parameter CPHA 0 )(input clk,input rst_n,input WrRdReq, //读/写数据请求output …

vue响应式原理——vue2和vue3的响应式实现区别

Vue的核心功能点之一是响应式&#xff1a;Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM。 简单的来说就是&#xff0c;页面的渲染效果会随着数据变化而变化&#xff0c;不用我们去手动操作DOM树进行数据变化后的渲染。为了实现这一目的&#xff0c;我们最简…

Kaamel白皮书:2025版COPPA落地实操指南

COPPA简介 《儿童在线隐私保护法案》&#xff08;COPPA&#xff09;于1998年在美国颁布&#xff0c;其最初的动因源于人们日益增长的对互联网上收集儿童个人信息的担忧。为了响应这一问题&#xff0c;联邦贸易委员会&#xff08;FTC&#xff09;被授权制定并执行相关法规。COP…

测试基础笔记第十四天

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、字符串1.字符串2.字符串切片3.查找find&#xff08;&#xff09;4.去除两端空白字符 strip5.字符串转换大小写 lower、upper5.拆分 split()6.字符串的其他常见方…

什么是Lua模块?你会如何使用NGINX的Lua模块来定制请求处理流程?

大家好&#xff0c;我是锋哥。今天分享关于【什么是Lua模块&#xff1f;你会如何使用NGINX的Lua模块来定制请求处理流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是Lua模块&#xff1f;你会如何使用NGINX的Lua模块来定制请求处理流程&#xff1f; 1000道 互联…

ubuntu扩展逻辑卷并调整文件系统大小步骤

安装好ubuntu如果没有调整磁盘空间,一般默认给你100G的空间,在用完时再调整也还来得及,下面是 ubuntu扩展逻辑卷并调整文件系统大小步骤&#xff1a; 1. 扩展逻辑卷 运行以下命令来扩展逻辑卷 /dev/ubuntu-vg/ubuntu-lv&#xff0c;使其使用卷组中所有未分配的空间&#xff…

复杂背景下无人机影像小目标检测:MPE-YOLO抗遮挡与抗背景干扰设计

目录 一、引言 二、挑战和贡献 密集小目标和遮挡 实时性要求与精度权衡 复杂背景 三、MPE-YOLO模型细节 多级特征集成器&#xff08;MFI&#xff09; 感知增强卷积&#xff08;PEC&#xff09; 增强范围C2f模块&#xff08;ES-C2f&#xff09; 四、Coovally AI模型训…

【C++】13.list的模拟实现

首先&#xff0c;我们需要把链表管理起来&#xff0c;也就是把一个个节点管理起来&#xff0c;但是每个节点的信息我们也需要管理&#xff0c;例如节点的前驱指针和后驱指针&#xff0c;以及节点的值&#xff0c;所以我们这里先封装两个类来管理节点和链表。 namespace Ro {te…