各种低高级着色语言

 

各种低高级着色语言

 

 

着色程序(shader)分为两种:

1.vertex shader顶点着色程序

2.fragment shader片段着色程序

 

着色程序可以用低级着色语言(类似汇编),或高级着色语言

 

一.低级着色语言

 

虚拟机

    为统一各个GPU厂商的接口,DirectX 和 OpenGL 分别定义可执行shader的虚拟机,GPU厂商在显卡驱动中来实现虚拟机

 

DirectX

 

1.Vertex shader虚拟机版本

  vs_1_1,vs_2_0,vs_2_x,vs_3_0

 

2.Fragment shader(DirectX上称为pixel shader)虚拟机版本

  ps_1_1,ps_1_2,ps_1_4,ps_2_0,ps_2_x,ps_3_0

 

OpenGL

 

    通过了两个官方扩展:ARB_VERTEX_PROGRAM 与 ARB_FRAGMENT_PROGRAM 来统一对低级着色语言的支持

 

1.Vertex shader虚拟机版本

  arbvp10,arbvp20

 

2.Fragment shader虚拟机版本

  arbfp10,arbfp20

 

二.高级着色语言

 

    目前有3种主流高级语言:基于OpenGL的GLSL(OpenGL Shading Language,也称为GLslang),基于

 

Direct3D的HLSL(High Level Shading Language),还有NVIDIA公司的Cg (C for Graphic)语言。

 

    Cg可以在OpenGL和DirectX中使用

 

GLSL

    GLSL只支持OpenGL,OpenGL1.5以扩充形式加入GLSL,后来OpenGL2.0核心中正式加入GLSL。

 

HLSL

    HLSL只支持DirectX,语法与Cg非常相似,是从DirectX9开始加入的。

 

Cg

    CG语言是全新的类C高级编程语言,在微软的帮助下我们看到了它的雏形,有意思的是CG语言不但支持普

 

通的DirectX图形接口,对OpenGL图形接口也提供了完备的支持。CG语言主要包括两个部分,CG语言特征、CG

 

编译器,而且这种编译器可以使用高级语言数据类型。

 

  CG具备很高的效率,因为CG其实就是提供了应用程序同硬件加速规范的中间层,应用程序通过CG来调用DX

 

和OpenGL,这样开发者再也不用去直接接触图形核心的细节了。

 

    虽然CG是NVIDIA公司的,但ATI显卡依然可以用。因为CG是基于OpenGL和DirectX之上的。

 

 

参考:

http://www.quanwen.com.cn/doc/1578176/

http://blog.163.com/lee_shutong/blog/static/1294353562009101772153736/

http://media.ccidnet.com/media/cce/474/00201.htm

 

你可能感兴趣的:(图形)