2014-12-24 300 views
0

片段着色器中是否存在着色器大小或变量数量的一些限制?iOS OpenGL ES 2.0着色器的限制

我有片段着色器,它在一些阈值大小的代码后返回空图像。我认为,这个问题是受着色器大小或变量数量的限制。

编译后检查我的着色器程序 - 一切正常。

Apple说:

OpenGL ES的限制可以在一个顶点或片段着色器使用每个变量类型的数目。当超过这些限制时,OpenGL ES规范不要求实现提供软件回退;相反,着色器只是无法编译或链接。

Khronos说:可执行 此着色的

2长度是由一致性测试定义。 3临时变量的使用 变量的最大数量由一致性测试定义。

但我找不到这个限制的价值。

UPDATE:

有时,应用程序被中断的glFlushglDrawArraysEXC_BAD_ACCESS,如果图像是大的。

解决

问题是太长环和从那里在长的计算时间。着色器不大,但非常复杂。

UPDATE

同样的问题:GPUImage Kuwahara filter on iPhone 4S

+0

我不认为你可以查询最大长度。尽管如此,编译应该会失败。 –

+0

我认为,这个问题是在漫长的循环。但我不能那样做。我认为,这主要是另一种方法必须在这里实施。 – George

+0

发布着色器。这将是获得帮助的唯一途径。 – badweasel

回答

-1

如果要检查你的着色器编译的结果和链接(像指示在Listing 10-1 in Apple's best practices),并没有错误,别的东西使你的空图像。

如果你不检查日志,你应该开始检查:)

+0

我正在检查日志,我确定,该图像不是空的;) – George

+0

但你说“哪些返回空白的图像后,一些阈值大小的代码”?我的观点是,如果编译成功,那么问题在于着色器的逻辑。您无法查询限制。 – mikkokoo

+0

着色器使用较少的代码成功工作。但是当复杂度增加时,计算复杂度和计算时间也增加。我认为,OpenGL驱动程序中断计算太长以防止挂断。 – George