OpenGL-------状态机】的更多相关文章

状态机是理论上的一种机器,呃这个说法非常非常的抽象.通俗一点理解,状态机描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的动因,条件及转变中所执行的活动.或者说,状态机是一种行为,说明对象在其生命周期中响应事件所经历的状态序列以及对那些状态事件的响应.因此具有以下特点: 1.有记忆功能,能记住其当前的状态: 2.可以接收输入,根据输入的内容和自己的原先状态,修改自己当前状态,并且可以有对应输出: 3.当进入特殊状态(停机状态)的时候,变不再接收输入,停止工作: 虽然还是很抽象…
基本概念 透视(Perspective)变换(Transformation)投影矩阵(Projection Matrix):用于将3D坐标转换为2D屏幕坐标光栅化(Rasterization): 实际绘制或填充每个顶点之间的像素形成线段着色器(Shader) 是在图形硬件上执行的单独程序,用来处理顶点和执行光栅化任务纹理贴图(Texture Mapping)混合(Blending): 将不同的颜色混在一起可编程着色器(Programmable Shader)位平面(bitplane):指一块内存…
OpenGL 性能优化 作者: Yang Jian (jyang@cad.zju.edu.cn) 日期: 2009-05-04 本文从硬件体系结构.状态机.光照.纹理.顶点数组.LOD.Cull等方面分析了如何优化 OpenGL 程序的性能. OpenGL状态机(State Machine) OpenGL状态机的目前只有1.1版本,也是最经典的,大家可以参考下述链接: ftp://ftp.sgi.com/opengl/doc/opengl1.1/state.pdf ftp://ftp.sgi.c…
引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口.本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建 Context 和绘制Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX .本章中将涵盖如下几个方面:          EGL 综述          E…
读到这里,应该对OpenGL渲染管线有了初步简单了解.下面着重分析CPU管线,即逻辑控制中心做了什么,这部分还是容易理解的.如下图: 一,将数据加载到显存中. 这是由GPU是访问显存中的数据决定的.因为显卡访问显存的速度更快,且大多数显卡没有权限直接访问RAM. 当数据(如顶点,纹理坐标,颜色和法线量等)加载到显卡,便可移除RAM中的数据,但如果CPU仍需要访问这些数据如CPU访问网格数据进行碰撞检测,那就保留不移除,因为数据从硬盘加载到RAM的过程是很耗时的. 二,设置渲染状态. 什么是渲染状…
opengl: 图形硬件的一种软件接口:最大的优点:它的速度快于光线追踪器或软件渲染引擎. GLUT: AUX是OpenGL辅助函数库. 数据类型: GLboolean 位宽:1 GLbyte 8 GLubyte 8 GLuchar 8 GLshort 16 GLushort 16 GLhalf 16 半精度浮点数 GLint 32 GLuint 32 GLsizei 32 无符号32位整数 GLenum 32 无符号32位整数 GLfloat 32 32位浮点数 GLclampf 32 [0,…
GLTools: 一些有用且可复用的函数 GLEW: OpenGL API的一些扩展机制 GLUT: OpenGL Utility toolkit, OpenGL跨平台相关,隐藏平台相关细节 RC代表渲染环境(Rendering Context),是运行中的OpenGL状态机句柄 使用OpenGL绘制三角形: // Triangle.cpp // Our first OpenGL program that will just draw a triangle on the screen. #inc…
一.tao.Opengl技术简介 Opengl是一种C风格的图形库,即opengl中没有类和对象,只有大量的函数.Opengl在内部就是一个状态机,利用不同的函数来修改opengl状态机的状态,以达到需要的效果. Tao框架是C#使用Opengl的一种图形库,其他可供C#使用的图形库有诸如Sharpgl等.Tao框架包含了许多C库,如表1.Tao库结合了C#语言的特点,使得在使用Tao库时更加方便.   库 用途 1 Tao.OpenAl 丰富的音频库 2 Tao.OpenGl 即可使用的图形库…
原文地址:http://ogldev.atspace.co.uk/ 原文中使用gnu make进行项目管理,本系列文章使用visual studio2012.在翻译过程中并非直译,加入了一些笔者个人观点. OpenGl官方使用规范中并没有提供创建和操作窗口的API,目前像window.linux等支持图形化界面的操作系统都支持OpenGl,提供一个与OpenGl上下文绑定的窗口系统.例如在X window中可以使用GLX创建窗口,Windows平台和MacOS平台则可以分别使用WGL.CGL.直…
1. EGL概述 EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,它主要由系统制造商实现. EGL提供如下机制: 与设备的原生窗口系统通信 查询绘图表面的可用类型和配置 创建绘图表面 在OpenGL ES 和其他图形渲染API之间同步渲染 管理纹理贴图等渲染资源 为了让OpenGL ES能够绘制在当前设备上,我们需要EGL作为OpenGL ES与设备的桥梁. 2. 使用EGL绘图的基本步骤 Displ…
这是我的第一篇学习OpenGL的笔记,也是博主的第一篇博客,希望能够在这里和大家一起成长. 下面的代码是<OpenGL超级宝典(第五版)>中的示例代码,基本程序如下: #include <GLtools.h> //OpenGL toolkit:工具箱库——包含一个用于操作矩阵和向量的3D数学库,并依靠GLEW获得OpenGL 3.3中用来产生和渲染一些简单3D对象的函数,以及对平截头体.相机类和变换矩阵进行管理的函数的充分支持. #include <GLShaderManag…
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDelegate类所实现的NSURLSession相关的代理方法,甚至连dataTask.uploadTask.downloadTask这几个基本概念也没说.这一篇就是为了集中消灭这些遗留问题. 2. AFURLSessionManagerTaskDelegate的代理方法 此处实现的仍然是NSURLS…
转自:http://www.th7.cn/Program/cp/201208/87679.shtml   GLSL语言内置的变量,包括内置的顶点属性(attribute).一致变量(uniform).易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章可以为以后的编程做查询之用. 顶点属性――指顶点的信息,OpenGL据此绘制各个图元,对于传统的顶点属性包括坐标.纹理坐标.颜色等GLSL都会设置一个内置变量与之对应,以便在需要时可以在顶点或片元着色器中直接引用,这…
OSG世界坐标转屏幕坐标 #define M(row,col) m[col * 4 + row] void Transform_Point(double out[4], const double m[16], const double in[4]){    out[0] = M(0, 0) * in[0] + M(0, 1) * in[1] + M(0, 2) * in[2] + M(0, 3) * in[3];    out[1] = M(1, 0) * in[0] + M(1, 1) * i…
GLSL语言内置的变量,包括内置的顶点属性(attribute).一致变量(uniform).易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章可以为以后的编程做查询之用. 顶点属性—— 指顶点的信息,OpenGL据此绘制各个图元,对于传统的顶点属性包括坐标.纹理坐标.颜色等GLSL都会设置一个内置变量与之对应,以便在需要时可以在 顶点或片元着色器中直接引用,这也体现了GLSL与HLSL的一个最大的不同,HLSL里顶点的属性是通过语义来定义的,而GLSL充分考虑…
OpenGL是一种状态机模式,比如你用glEnable打开一个状态,在以后的绘图中将一直保留并应用这个状态,除非你调用glDisable及同类函数来改变该状态或程序退出.例如当前颜色是一个状态变量,可以把当前颜色设置为白色.红色或其他任何颜色,在此之后绘制的所有物体都将使用这种颜色,直到把当前颜色设置为其他颜色. 除当前颜色之外,OpenGL绝大多数函数都是一种状态机,如控制当前视图和投影变换.直线和多边形点画模式.多边形绘图模式.像素包装约定.光照的位置和特征以及被绘制物体的材料属性等. 前一…
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLAM.Marker-Based还是GPS的方法,就不一而足了. 所以说要在手机上进行现实场景的展现也是目前AR应用一个比较重要的模块.一般来说,在移动端,基本上都是使用OpenGL ES进行绘制.所以我们优先考虑使用OpenGL ES进行相机的绘制.当然,有些应用直接利用iOS的UIImage进行相机…
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API).OpenGL API有不同编程语言的实现版本.但是,它们最终使用的都是最底层的C语言的接口. 在C语言的API中,定义了很多typedefs,#define,以及函数.typedefs用于定义openGL里面使用到的基本的数据类型,如GLint,GLfloat等. 复杂的数据结构,如struct,…
最近看红宝书学习 OpenGL 一段时间了,写了简单的 demo 程序温习一下知识. 主要是 使用 glScissor 多视图显示画面和使用 glReadPixels 给画面截屏,使用显示列表(display list)加上一些简单的光照.程序运行后,按字母 P 键截屏,图片存放在当前目录,按字母 Q 键在单视图与多视图之间切换.效果图如下,代码已上传到 github 上,地址. 下面是创建显示列表的函数. GLuint displayList(void) { ] = { 0.24725f, 0…
什么是绘制上下文(Rendering Context) 初学OpenGL,打开红宝书,会告诉你OpenGL是个状态机,OpenGL采用了客户端-服务器模式,那时觉得好抽象,直到后来了解了绘制上下文才把这些联系起来.我们可以认为每一个硬件GPU是个服务器,每一个绘制上下文对应于申请的一个客户端,一个客户端维护着一套状态机,如果两个窗口分别对应两个不同的绘制上下文,则两个窗口彼此状态独立.申请绘制上下文,意味着系统资源的申请,每个绘制上下文还是需要不少资源的,记得曾经试过在chrome的TAB页不断…