|

楼主 |
发表于 2011-10-13 10:59:00
|
显示全部楼层
Re: 如何统一几种不同的着色语言?
举个例子,现在有如下通用的着色脚本代码:
- BEGIN_VERTEX
- VERTEX float4 inPosition _POSITION0
- VERTEX float2 inTexcoord0 _TEXCOORD0
- END_VERTEX
- BEGIN_VS_TO_PS
- VS_TO_PS float2 Texcoord0 _TEXCOORD0
- END_VS_TO_PS
- VS_MAIN
- {
- outPosition = gl_ModelViewProjection * inPosition;
- Texcoord0 = inTexcoord0;
- }
复制代码
如果采用如下宏定义,那么脚本将被转换为GLSL代码
#define float2 vec2
#define float4 vec4
#define BEGIN_VERTEX
#define END_VERTEX
#define VERTEX attribute
#define BEGIN_VS_TO_PS
#define END_VS_TO_PS
#define VS_TO_PS varying
#define _POSITION0 ;
#define _TEXCOORD0 ;
#define VS_MAIN void main()
#define outPosition gl_Position
如果采用下面的宏定义,脚本将转换成HLSL
#define BEGIN_VERTEX void main(
#define END_VERTEX
#define VERTEX in
#define BEGIN_VS_TO_PS
#define END_VS_TO_PS
#define VS_TO_PS out
#define _POSITION0 : POSITION0,
#define _TEXCOORD0 : TEXCOORD0,
#define VS_MAIN float4 outPosition : POSITION0 ) |
|