OPENGL架构

第2章 OpenGL 简介

每台计算机都有专门处理图形的硬件,它们控制着屏幕上显示的内容。OpenGL向这种硬件发出命令,告诉它们执行什么操作。计算机游戏或者其他任意软件借助制造商提供的设备驱动程序,使用OpenGL向图形硬件发出命令,如图2-1所示。

 
图2-1  OpenGL的典型应用

OpenGL(Open Graphics Library,开放图形库)是游戏开发商使用最早、最流行的图形库之一。OpenGL是Silicon Graphics公司(SGI)在1992年开发的,但是直到1997的GLQuake中采用了这种图形库以后,游戏开发商才真正对它产生了兴趣。GameCube、Wii、PlayStation 3和iPhone都把OpenGL作为它们的图形库的基础。

除了OpenGL之外,还有一个选择是Microsoft的DirectX。DirectX由更多的库组成,包括声音和输入,所以把OpenGL与DirectX中的Direct3D库进行比较更加合适。DirectX的最新版本是DirectX 11。Xbox 360使用的是DirectX 9.0。DirectX 10和DirectX 11只能在安装了Windows Vista或Windows 7操作系统的计算机上使用。

Direct3D和OpenGL的功能集基本相同。现在游戏引擎(例如Unreal)通常构建一个抽象层,允许用户根据情况在OpenGL和Direct3D之间切换,如图2-2所示。当开发跨平台的游戏,例如需要把游戏发布到PlayStation 3和Xbox 360上时,必须提供这种抽象。Xbox 360必须使用Direct3D调用,而PS3必须使用OpenGL调用。

 
图2-2  使用抽象层

DirectX和OpenGL都是非常优秀的图形库。DirectX工作在Microsoft平台上,而OpenGL可以应用到更加广泛的平台上。DirectX更新得更快,意味着它可以利用最新的图形功能。OpenGL的更新较慢,最新的图形功能只能通过一个不太方便的扩展机制使用。OpenGL这种缓慢的更新有一个明显的好处,即接口很少发生改变,所以多年前编写的代码仍然可以使用最新的OpenGL版本。DirectX的每个新版本都会改变接口,所以无法维持兼容性,必须调整和修改较老的代码才能使它们利用DirectX的新版本。

通过Managed DirectX库,可以在C#中使用DirectX,但遗憾的是,官方不再支持或更新这些库。Managed DirectX已经被Microsoft的XNA游戏创建库替代。XNA使用DirectX,但它是一个更高层的框架,用于快速创建游戏原型和开发游戏。SlimDX是一个针对DirectX开发的独立的C# API,可以作为Managed Directx的一个不错的替代品。

2.1  OpenGL的架构

OpenGL是一个C风格的图形库。C风格是指OpenGL中没有类或对象,而只有大量的函数。OpenGL在内部就是一个状态机。函数调用会修改OpenGL的内部状态,这又会影响OpenGL的行为和在屏幕上渲染多边形的方式。OpenGL是状态机这个事实会带来一些问题,例如在代码中无意间修改了其他某个部分的状态,从而导致出现bug。因此,留意哪些状态发生改变十分重要。

时间: 2024-11-11 14:34:39

OPENGL架构的相关文章

最简单的视音频播放示例4:OpenGL播放RGB/YUV

本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图领域,OpenGL因为色彩准确,仍然是不能被取代的主角. OpenGL简介 从网上搜集了一些有关OpenGL简介方面的知识,在这里列出来.开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平

基于C/S架构的3D对战网络游戏C++框架 _03客户端详细设计与OpenGL、Qt基础

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒子系统和其他纹理时会得不到想要的结果,渲染器还存在许多的不足: 1.当渲染许多透明图形时,没有对其进行排序,使得本应透明的图形没有透明. 2.不能对不同的顶点使用不同的状态进行渲染. 渲染器要做的东西很简单,就是 1.传递数据到 GPU 2.设置 OpenGL 状态信息(Alpha测试.模板测试.深

cocos2D-X从的源代码的分析cocos2D-X学习OpenGL(1)----cocos2D-X渲染架构

 个人原创.欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man 从本篇文章開始,将分析cocos2D-X 3.0源码,第一部分是从cocos2D-X学习OpenGL,也就是分析cocos2D-X 3.0的渲染代码,本篇首先介绍cocos2D-X 3.0的渲染结构.使用的是3.0正式版. void DisplayLinkDirector::mainLoop() { if (_purgeDirectorInNextLoop) { //仅仅有一种情况会调用到这里来,

ios系统架构及常用框架

1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media layer).核心服务层(Core Services layer).核心操作系统层(Core OS layer)如图: (1) 触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作.它包括以下这些组件: Multi-Touch Event

关于Android基本架构(转载)

本文转载自http://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.html Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上.Android主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86.MAC等体系结构的机器上同样可

游戏引擎架构

游戏编程分为游戏逻辑和游戏引擎.游戏引擎是一套可重复利用的底层框架.包括渲染引擎.声音引擎.网络引擎等等.现提供一套游戏架构,从底层向上分别为: 硬件.驱动.操作系统. 第三方软件开发包:DirectX.OpenGL,Boost.STL库,Granny.Havok.Animation等. 平台独立层:集合.迭代器.文件系统.网络传输层.线程库.物理碰撞包裹类. 核心系统:模块启动终止.断言.单元测试.内存分配.数学库.调试用打印及日志.性能剖析.引擎配置.异步文件. 资源(游戏资产):三维模型资

OpenGL核心技术之抗锯齿

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 抗锯齿问题在游戏中一直存在的,尤其是体现在3D模型上的材质或者游戏UI界面上,由于现在引擎都非常完善,并且引擎都提供了抗锯齿功能,我们通过引擎提供的参数界面设置一下就可以消除.但是很

基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.