Direct X和OpenGL是什么以及它们的区别

  提起图形处理和显卡相关的内容,尤其是玩电脑游戏的时候(通常是安装时)很多人是不是很容易就想起了一个熟悉的名词叫做Direct X,通常什么Direct 9.0c之类的东西都是打游戏必备的。那么大家知道Direct X是什么吗?另外你知道一个类似名词OpenGL是什么吗?

  本文将对他们进行简要的介绍和对比,希望对大家了解和显卡密切相关的Direct X和OpenGL。

  Direct X是什么?

  Direct X是Direct eXtension的简写,可以进一步简写成DX。为微软公司开发的多媒体编程接口,目前只支持Windows平台,虽然Linux等平台依靠wine等程序也能实现DirectX但是性能相当可怜。

  Direct X发展到现在已经有11代产品了,目前最常用的有两个Direct X 11.1和Direct 9.0c。前者是Windows7/8的标准配置,后者是WindowsXP的标准。对于很多新游戏而言都以Direct X 11为接口。Direct X有很多API接口, 可以分为以下几个部分:

  Direct Draw和Driect 3D为主的显示部分。其中Direct Draw是负责平面显示的,而Direct 3D是负责3D运算的。通常而言大型3D游戏运用的就是Direct 3D部分(当然,如果采用Direct X作渲染的话)。

  以DirectSound为主的声音部分

  以DirectInput为主的输入设备,键盘鼠标遥感等游戏控制设备的输入就在这里完成

  以DirectPlay为主的网络波分,方便网络游戏等操作……

  Direct X借助Windows的顺风车已经占领了相当大的 市场,但是仅仅支持Windows系统这个弊端就促使其他操作系统进行自己的多媒体编程计划,目前最强大的就是OpenGL。

  OpenGL是什么?

  OpenGL是由开源社区提供的免费开源的多媒体编程接口,全称是Open Graphics Library。OpenGL功能非常强大,但是使用起来也是相当的复杂, 开源社区为任何操作系统提供OpenGL支持,所以适用范围也是相当的广。很多游戏开发采用OpenGL作为渲染方式,这样可以方便的向Linux和OS X等平台移植。

  而且另一个超级编程语言java也已经完成了和OpenGL的整合,意味着使用java 3D编写的3D程序等可以实现OpenGL整合。当然是用java 3D也可以调用Direct X来进行加速。

  在非Windows平台下,目前仅能使用OpenGL进行加速,而在Windows平台下视频功能可以由DirectX或者OpenGL完成。由于开发商的选择不同,通常的硬件都是支持者两种加速方式的。客观的来说在超高端硬件上对OpenGL的支持更好。

  在Windows平台下,常规硬件(非服务器级别的)下,Direct X对3D的渲染性能要比OpenGL略微好点,尤其是在Windows7/8上。但是在Linux平台下OpenGL的渲染要比在Windows下对OpenGL的渲染强。

  总的来说,Windows下Direct X性能比较好,不过Open GL也不差。但是同样是OpenGL在Linux,OS X下比Windows下渲染效果要好。

时间: 2024-09-08 09:17:17

Direct X和OpenGL是什么以及它们的区别的相关文章

OpenGL ES From the Ground Up, Part 1 Addendum: Alphabet Soup

MONDAY, MAY 4, 2009 OpenGL ES From the Ground Up, Part 1 Addendum: Alphabet Soup One problem with blog postings is that they are self-edited. For my postings here, I have no external technical review and no copy editing done. Mostly, it's not too muc

XP技巧连载之优化一句话秘技放送

技巧|优化 Windows XP是目前使用得最多的操作系统,为此书虫将自己在这几年使用Windows XP的经验汇总成连载奉献给大家.条条力求精炼,实用.今天送出的是大家都比较关心的Windows XP优化技巧.由于文章较长,因此我们分为上中下三部分送出.这是第一部分. 让"开始"菜单提速 在使用Windows XP的"开始"菜单时,会发现其显示速度似乎有些偏慢,如果想让它快一点,请打开"注册表编辑器",找到[HKEY_CURRENT_USER\

《OpenGL编程指南(原书第9版)》——1.5 第一个程序:深入分析

1.5 第一个程序:深入分析 现在我们来深入探讨一下之前的第一个程序.1.5.1 进入main()函数 为了了解示例程序从一开始是如何运行的,首先了解一下main()函数当中都发生了什么.前面的6行使用GLFW设置和打开了一个渲染用的窗口.这方面的详细介绍可以参见附录A,这里只介绍每一行的执行结果. 第一个函数glfwtInit()负责初始化GLFW库.它会处理向程序输入的命令行参数,并且移除其中与控制GLFW如何操作相关的部分(例如设置窗口的大小).glfwtInit()必须是应用程序调用的第

OpenGL ES From the Ground Up, Part 1: Basic Concepts

FRIDAY, APRIL 17, 2009 OpenGL ES From the Ground Up, Part 1: Basic Concepts I've done a number of postings on programming OpenGL ES for the iPhone, but most of the posts I've done have been targeted at people who already know at least a little bit ab

OpenGL ES From the Ground Up, Part 4: Let There Be Light!

FRIDAY, MAY 1, 2009 OpenGL ES From the Ground Up, Part 4: Let There Be Light! Continuing on with OpenGL ES for the iPhone, let's talk about light. So far, we haven't done anything with light. Fortunately, OpenGL still lets us see what's going on if w

通过 Autostereograms 案例学习 OpenGL 和 OpenCL 的互操作性 【已翻译100%】(3/3)

注意到所有平台都可以遍历确保正确的context 被创建.下面的代码演示了OpenCL context 的创建. cl_int lError = CL_SUCCESS; std::string lBuffer; // // Generic OpenCL creation. // // Get platforms. cl_uint lNbPlatformId = 0; clGetPlatformIDs( 0 , 0 , &lNbPlatformId ); if ( lNbPlatformId ==

SGI OpenGL Teapot

  // Name     : OpenGL Teapot// Author   : Terrence Ma// Email    : terrence@terrence.com// Web      : http://www.terrence.com// Date     : 10/25/2001// Modified : Tutorial sample from Mesa3d.org (http://www.mesa3d.org)/* * Copyright (c) 1993-1997, S

SGI OpenGL Color Cube

// Name     : OpenGL Color Cube// Author   : Terrence Ma// Email    : terrence@terrence.com// Web      : http://www.terrence.com// Date     : 10/25/2001// Modified : Tutorial sample from Mesa3d.org (http://www.mesa3d.org)/* * Copyright (c) 1993-1997,

mac-MAC上使用XCODE想开发OPENGL时候遇到的问题

问题描述 MAC上使用XCODE想开发OPENGL时候遇到的问题 我在网上看教程学习OPENGL游戏开发时,教程是基于WINDOWS开发的OPENGL,调用了WINDOWS特有的OPENGL的API,有个实例小程序开头是这样: #ifdef _WINDOWS #include <windows.h> #endif #include <gl/gl.h> #include <gl/glu.h> #include <math.h> #include "&