iOS模拟器GL_OES_standard_derivatives

时间:2011-05-11 05:11:15

标签: ios opengl-es-2.0

在iOS4上GL_OES_standard_derivatives仅在设备上支持(从我输出扩展名时看到的),有没有办法能够:

  1. 如果支持扩展名,则在片段着色器中检测

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

  3. TIA!

1 个答案:

答案 0 :(得分:1)

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

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);