OpenGL ES的状态机说法其实也没那么云山雾照,比较容易理解!

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

OpenGL ES的学习,很多人,或者说大多数人,先了解到的是,它是一个状态机。

直到现在,我才明白状态机的真正含义,原来以为就是简单的上下文记录着所有状态,其实这是不全面的理解,更重要的上一个上下文的概念。

尤其像渲染缓冲区、纹理单元、顶点缓存对象等,相关的API操作并未提供明了的参数,指定是针对谁操作的,其实是根据状态记录来选择的。

这可能也是为什么OpenGL ES学起来要难的原因吧。

打个比方,一个屠夫,卖猪肉、牛肉、羊肉,也或者挂着羊头卖狗肉?这个不行,状态机对不上啊,哈哈哈!

当有人要买猪肉时,那么屠夫就在猪肉案板上,把一片子猪肉摆上来,开始按猪的身体结构开剔,开剁;

又来人要买另一片子猪肉,那么这个屠夫只好把前一块猪肉剩下的从案板上挪下去,再把这片子新的猪肉挪上来。

有可能有的人要的少,那么再把前一片肉卖剩下的拿上来,继续操作。

等到有买猪肉和羊肉时,猪肉得用猪肉的案板,羊肉有可能有牛肉的案板,这两个肉都有山味儿,应该问题不大,就像颜色缓存和深度缓冲一样。

好了,以上的描述太清楚不过了,无论你屠夫怎么动家伙,砍、剁、剔、割、片这些刀法,都是针对案板上的肉进行的,那么具体操作的是哪块儿肉,那就得看客人要的哪块肉,就把它拿到案板上来。

好了,到此为止,这个案板就是状态机,屠夫永远是针对案板上的肉操作,案板记录着要切的肉,这就是状态机的另一种理解。

也就是这个状态机的道理理解浅了,致使一直没有明白很多操作是干什么的只能先死记硬背,而终了还是没掌握。

噢,别忘了,我们是要理解状态机,不是来讲怎么卖猪肉的,哈哈。

OpenGL ES的状态机说法其实也没那么云山雾照,比较容易理解!相关推荐

  1. OPENGL ES 3.0 学习总结

    Opengl ES是opengl的一个分支,opengl es集中了opengl中高效的绘图功能部分,省去了低效繁杂的绘图功能部分,主要应用于手持和嵌入式设备的3D绘图,突出的优点就是处理快,消耗小. ...

  2. OpenGL ES 2.0 总体概述

    文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...

  3. OPENGL ES 2.0 知识串讲 (8) ——OPENGL ES 详解II(传入绘制信息)

    上节回顾 上一节讲述了如何通过 OpenGL ES 给 GPU 关联一套可以使用的 shader,这 一套 shader 是被放在一个 program 中当作一个整体供 GPU 使用的.那么 GPU ...

  4. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  5. OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

    更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...

  6. EGL接口介绍-----Android OpenGL ES底层开发

    引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之 ...

  7. 以OpenGL/ES视角介绍gfx-hal(Vulkan) Framebuffer接口使用

    文档列表见:Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录) 草稿状态 以OpenGL/ES Framebuffer角度看,如果用gfx-hal(Vulkan)接口实现类似OpenGL/ES ...

  8. cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0

    cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0 到了2.X版本中,cocos2d-x for Android已经不再支持(或者说放弃支持)opengl es 1 ...

  9. OpenGL ES着色器语言之变量和数据类型

    所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符.变量在声明的时候首先要标明类型,后边可以跟多个变量,之间用逗号隔开.很多情 ...

最新文章

  1. 选型必看:RabbitMQ 七战 Kafka,差异立现
  2. 帝国cms后台使用savesufer.js生成大音频audio彩色频谱数据
  3. 【直播回放】新手如何入门并学习计算机视觉?
  4. PostMessage发送字符串和结构体
  5. 麦森数(洛谷P1045题题解,Java语言描述)
  6. mysql 6位随机数_MySQL生成固定位数的随机数
  7. Dematel模型的指标分析
  8. 单片机 上传服务器协议,单片机数据上传到云服务器
  9. 空城计课件软件测试,空城计课件公开课.ppt
  10. 微软自带虚拟机Hyper—V启用
  11. 《大江大河2》中教科书般的精神自救-如何让反感你的人欣赏你
  12. matlab电解电容在哪,基于MATLAB的电容器直流局部放电检测.pdf
  13. SinuTrain for SINUMERIK 仿真西门子最新版仿真软件
  14. n1 armbian php,斐讯N1盒子armbian 5.77蓝牙连接详细步骤斐讯N1刷入armbian 5.77写入emmc...
  15. C++ 性能优化篇一《优化概述》
  16. 基于单片机的家庭火灾警报系统设计
  17. 《设计模式之禅》-桥梁模式
  18. 算法计算出股票最佳交易时间点
  19. python graphql_详解Python Graphql
  20. GCC总结、C语言关键字和运算符

热门文章

  1. python的matplotlib画饼状图
  2. 计算机系统字体变大,手把手教你如何调整电脑字体大小
  3. 贤者之路,Cuda block内部矩阵求逆,mxm矩阵 复杂度为O(m)
  4. spring引入多个properties文件
  5. 蜂蜜梨文案:销售水果蜂蜜梨文案,朋友圈水果文案蜂蜜梨
  6. 基于JAVA星星电影购票网站计算机毕业设计源码+系统+数据库+lw文档+部署
  7. 从成交量变化抓住股票涨跌
  8. Python云端系统开发——将Python数据分析代码发布到Django网站上
  9. 江南科友 hac linux shell,运维安全审计系统(HAC 1000E、HAC 1000P)
  10. rust:错误处理 Blocking waiting for file lock on package cache