【发布时间】:2012-03-29 03:01:43
【问题描述】:
我有一个基于 OpenGL ES 2.0 的 iPhone 应用程序,我在运行它时遇到了一些 OpenGL ES 问题。
我正在尝试编译一个片段着色器,它计算/显示输入纹理的导数。我的片段着色器代码是:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
void main(void)
{
mediump vec4 derivData = vec4(dFdx(texture2D(inputImageTexture, textureCoordinate).xyz, 0.0);
gl_FragColor = derivData;
}
但是,这会导致编译失败。如果我取出 dFdX,它编译就好了。
有人有这方面的经验吗?我最终也想计算关于 Y 的导数,然后合并它们,看看输入纹理是如何成为图像的。
我已经为此苦苦挣扎了几天,因此非常感谢您的任何建议!
【问题讨论】:
-
很遗憾,
dFdx()不是 OpenGL ES 2.0 中的内置函数。这些函数的完整列表可以在这张方便的参考卡中找到:khronos.org/opengles/sdk/docs/reference_cards/… -
实际上,我可能有点错误。看起来
GL_OES_standard_derivatives扩展可能存在于 iOS 设备上,为此提供支持:stackoverflow.com/questions/5959542/…。然而,模拟器似乎缺乏这种支持。 -
"但是,编译失败。"当它编译失败时,它会给你一些错误信息吗?你能发布那个错误信息吗?
-
我可以确认
GL_OES_standard_derivatives出现在我的 iPhone 4 上,当我上次获取支持的扩展程序列表时。所以我认为布拉德的第二条评论是一个答案。 -
一个右括号丢失
标签: iphone objective-c opengl-es glsl