2011-05-11 147 views
2

在iOS4的GL_OES_standard_derivatives仅支持在设备上(从我所看到的,当我输出的扩展),是有没有办法能够:iPhone模拟器GL_OES_standard_derivatives

  1. 检测中,如果片段着色器扩展是否支持

  2. 如果不支持,是否有人有dFdx和dFdy的代码?似乎无法在谷歌上找到任何东西。

TIA!

回答

1

我对抗锯齿SDM字体有同样的问题。您可以通过 使用当前变换矩阵翻译2个2D向量计算类似dfdx/dfdx:

vec2 p1(0,0); vec2 p2(1,1); 

p1=TransformUsingCurrentMatrix(p1); 
p2=TransformUsingCurrentMatrix(p2); 

float magic=35; // you'll need to play with this - it's linked to screen size I think :P 

float dFdx=(p2.x-p1.x)/magic; 
float dFdy=(p2.y-p1.y)/magic; 

然后发送dFdx/dFdy到你的材质为制服 - 而只需用参数相乘得到相同的功能,即

dFdx(myval)现在变成

dFdx*myval; 
dFdy(myval) dFdy*myval; 
fwidth(myval) abs(dFdx*myval)+abs(dFdy*myval);