Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用片段着色器合成UIView_Ios_Uiview_Opengl Es - Fatal编程技术网

Ios 使用片段着色器合成UIView

Ios 使用片段着色器合成UIView,ios,uiview,opengl-es,Ios,Uiview,Opengl Es,我很确定答案基本上是“不”,但也许有办法做到这一点 在iOS下,我希望能够指定一个片段着色器来合成UIView,而不是简单地让它们与基于alpha的混合相结合 我想到的具体用例是,我希望有一个前景层,可以在两个背景层上滚动:一个是白天的图像,另一个是夜间的图像。前景视图将通过在两个背景视图之间线性混合来控制哪一个背景视图显示出来。两个背景也将滚动(比前景慢),产生视差效果 总的来说,我对iPhone(以及任何其他现代智能手机)内置了一个功能强大的GPU而感到沮丧,而大部分情况下,用户界面对它的要

我很确定答案基本上是“不”,但也许有办法做到这一点

在iOS下,我希望能够指定一个片段着色器来合成UIView,而不是简单地让它们与基于alpha的混合相结合

我想到的具体用例是,我希望有一个前景层,可以在两个背景层上滚动:一个是白天的图像,另一个是夜间的图像。前景视图将通过在两个背景视图之间线性混合来控制哪一个背景视图显示出来。两个背景也将滚动(比前景慢),产生视差效果

总的来说,我对iPhone(以及任何其他现代智能手机)内置了一个功能强大的GPU而感到沮丧,而大部分情况下,用户界面对它的要求都是琐碎的混合。如果UIView有一个表示曲面法线的图层,这样当它旋转时,就可以正确地对光源进行着色,这不是很酷吗?那不是很好吗


有什么想法吗?谢谢

这看起来可能提供了一些线索,它提到了Git Hub上的一个开放源码BSD许可库。是的,我想建议(当然我会),因为如果视图内容本身没有动画,您可能可以使用GPUImageUIElement将其拉入,并应用动画转换和混合来实现您想要的效果。这仍然需要一些工作,但这样做应该是可能的。我以前使用过一些着色器和适当的混合。谢谢联系@BradLarson。你知道吗,有没有可能“深入”到层合成中,这样当我的层被合成到场景中时,我就可以指定一些更奇特的东西,而不仅仅是一个纹理查找片段着色器?或者,我对iOS的层是如何工作的只有一个粗略的概念,大部分都是推断出来的——如果你知道一个好的参考,你能给我指一下吗?我们实际上没有访问UIKit合成引擎内部的权限,所以不,我们不能覆盖UIKit本身所做的事情。您可以使用从UIView绘制的混合OpenGL ES纹理和自定义着色器查找来滚动您自己的合成实现,但您无法深入研究UIKit合成引擎。苹果没有透露这一点,至少部分是因为其当前实现的安全隐患。在iOS 7变得模糊之前,很少有人想要它。我根本不知道它的安全含义,谢谢@BradLarson–你有讨论这个的链接吗?也许这是将来会发生的事情;感觉可能有道理,不是吗?尽管当前的iOS 7美学看起来相当像印刷品,并且正在远离酷炫/逼真的着色效果。除非它们是模糊的,所以可能不是。