2024-05-03 01:57:10
DirectX(Direct
eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft
XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。最新版本为DirectX 12,创建在最新的Windows
8.1上。
OpenGL(全写Open
Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性目前,2.0版本开始加入了很多类似于DirectX中可编程单元的设计.
Shader Model(在3D图形领域常被简称SM)就是“优化渲染引擎模式”。Shader(着色器)是DirectX中一段能够针对3D对象进行操作、并被GPU所执行的程序。早在微软发布DirectX 8时,Shader
Model的概念就出现在其中了,并根据操作对象的不同被分为对顶点进行各种操作的Vertex Shader(顶点渲染引擎)和对像素进行各种操作的Pixel
Shader(像素渲染引擎)。
到了Shader Model 4.0,在VS和PS之间引入了一个新的可编程图形层--几何渲染器(Geometry
Shader)。原来的Vertex Shader和Pixel Shader只是对逐个顶点或像素进行处理,而新的Geometry
Shader可以批量进行几何处理。然而性能受到诟病,为了兼顾性能,在DirectX11(SM
5.0)开始引入了Tessellation来取代GS的部分功能。
说白点,三者的关系是,Shader Model是DirectX其中一个技术协议程序,而DirectX和OpenGL则是多媒体编程接口的竞争对手。
请问dx和gl他们编译完的指令是对显卡进行操作呢?还是cpu?既然显卡是用来渲染的,那么我们的程序在何时调用了显卡进行计算呢?求解惑~
shader可以被显卡执行那么是不是可以理解为 现在越来越牛逼的游戏画质和cg效果 就是因为shader越来越强大呢?
"shader可以被显卡执行那么是不是可以理解为 现在越来越牛逼的游戏画质和cg效果 就是因为shader越来越强大呢?"
可以这样认为,但也不全是,上面说过。Shader Model 4.0最大指令数从512条增加到了64000条;临时暂存器数量也从原先的32个增加到惊人的4096个;允许同时对128个Texture进行操作(Shader Model
3.0只允许16个),在VS和PS之间引入了一个新的可编程图形层--几何渲染器(Geometry Shader),但性能却强差人意。所以在DirectX11(SM 5.0)开始引入了Tessellation来取代GS的部分功能。以达到性能的提升。
“请问dx和gl他们编译完的指令是对显卡进行操作呢?还是cpu?"这个问题呢?
象Direct eXtension,是一种多媒体编程接口,是如全色图形、视频、3D 动画和音频等的应用程序的数据交换平台。说白一点,就是所有游戏开发商共同遵从的一个行业规范协议。让系统、游戏程序和硬件间兼容。
DX编译后的指令,不能笼统地认定是对显卡操作(应该是GPU)还是对CPU,这是一个误区。DX7.0之前,某些指令如位置转换、灯光等都需CPU来计算。DX7.0开始添加新的T&L技术,令这类效果指令的运算工作从CPU中解脱出来,转由显卡GPU来完成。但直到DX8.0开始,同时具备像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader)技术,这才使GPU真正成为了可编程的处理器。
现阶段,因GPU是由大量的运算单元(核心)组成,并行计算能力远高过 CPU的运算能力,而显卡两大平台NVIDIA的CUDA和AMD的Stream的飞速发展,催生了OpenCL和DirectCompute通用计算标准。所以现在的显卡平台指令都逐步由GPU完成.
2024-05-03 16:14:08