是否使用着色器渲染到纹理中以便在另一个着色器中使用,以便在SpriteKit中正常工作?

时间:2016-01-29 01:39:06

标签: sprite-kit glsl shader

我正在为大学项目进行流体的GPU物理模拟。我是物理学家,但我不是一个非常有经验的编码员,特别是在GPU和OpenGL方面。我已经在CPU上进行了模拟,现在尝试将其移植到GPU。它是流体的2D模拟。

鉴于我对OpenGL缺乏经验以及对编码图形的一般经验不足,我选择使用SpriteKit,因为它只允许我创建一个精灵,在几行代码中指定一个着色器并在着色器中编写我的模拟。我发现不明显的一件事是如何渲染我的计算结果以在下一个计算中使用它。例如,我在着色器中计算压力,然后使用它在下一个着色器中计算速度。

renderSprite.shader = PressureShader;
SKTexture *texture = [[self view] textureFromNode:[self scene]];
[renderSprite setTexture:texture];
//Make an SKUniform here, load all the data needed in to SKUniform 
renderSprite.shader = VelocityShader;

这是正确的方法,并且效率会很高吗?或者SpriteKit根本不适合这种用途,我应该使用别的东西?看起来不对,但我觉得这可能会很慢。我还要感谢我可以使用的不同API /框架的任何建议(特别是如果它易于学习)。

1 个答案:

答案 0 :(得分:0)

基本上,你没有。您描述的用途不是SpriteKit的用途,也不受支持。你最好直接用Metal编写这种类型的方法,如果我是你,我会避免使用OpenGL,老实说它太复杂了。可以找到指向您所需要的实际工作框架的链接here