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

2024-01-08 22:08

本文主要是介绍OpenGL ES的状态机说法其实也没那么云山雾照,比较容易理解!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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


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

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

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

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


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

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

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

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


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


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


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


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


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

这篇关于OpenGL ES的状态机说法其实也没那么云山雾照,比较容易理解!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584981

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

SpringBoot整合easy-es的详细过程

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

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的