Iphone OpenGL ES 2.0衍生纹理
我有一个基于OpenGL ES 2.0的iPhone应用程序,我运行它时遇到了一些OpenGL ES问题 我正在尝试合成一个片段着色器,用于计算/显示输入纹理的导数。我的片段着色器代码是:Iphone OpenGL ES 2.0衍生纹理,iphone,objective-c,opengl-es,glsl,Iphone,Objective C,Opengl Es,Glsl,我有一个基于OpenGL ES 2.0的iPhone应用程序,我运行它时遇到了一些OpenGL ES问题 我正在尝试合成一个片段着色器,用于计算/显示输入纹理的导数。我的片段着色器代码是: varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture; uniform sampler2D inputImageTexture2; void main(void) { mediump vec4 d
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的导数,然后合并它们,看看输入纹理是如何成为图像的
我已经为此挣扎了几天了,所以如果您有任何建议,我将不胜感激 所有支持ES 2.0的iOS硬件都将支持GL_OES_标准_衍生产品扩展: 然而,你并不是“免费”得到它的。在片段着色器中,必须在顶部(从)添加以下内容: 第一个答案的注释中的所有信息基本上都是准确的,但如果没有这一条,您将继续得到以下错误:
ERROR: 0:15: Call to undeclared function 'dFdx'
ERROR: 0:16: Call to undeclared function 'dFdy'
这让我陷入了一个循环,但一旦我添加了enable行,它似乎在设备和模拟器上都能工作(实际上还没有评估它在这两个方面都能工作,但它确实可以编译)。不幸的是,
dFdx()
不是OpenGL ES 2.0中的内置函数。这些功能的完整列表可以在这张方便的参考卡中找到:实际上,我可能在这方面有点错。看起来iOS设备上可能存在GL\u OES\u standard\u衍生工具
扩展,支持以下内容:。然而,模拟器似乎缺乏这种支持。“然而,这使编译失败。”当它编译失败时,它是否给了您某种错误消息?你能发布那个错误消息吗?我可以确认我的iPhone 4上出现了GL\u OES\u standard\u衍生品
,上次我查看了支持的扩展列表。所以我认为Brad的第二个评论是一个答案。这也将允许使用fwidth函数。这正是我需要知道的。谢谢
ERROR: 0:15: Call to undeclared function 'dFdx'
ERROR: 0:16: Call to undeclared function 'dFdy'