SpriteKit中的顶点着色器

时间:2015-04-13 03:11:09

标签: sprite-kit

是否可以在SpriteKit中使用顶点和片段着色器运行openGL着色器程序?

似乎只有片段着色器可用。

SceneKit通过SCNProgram类提供它

3 个答案:

答案 0 :(得分:2)

实际上,顶点着色器不仅仅适用于转换和投影。最有用的功能之一是在每个顶点进行计算,然后让硬件插入结果,通过“变化”变量将它们传递给片段着色器。 (这比尝试计算片段着色器本身中的插值更有效。)

最简单的例子是gouraud着色:您可以在顶点着色器中计算光照,并让硬件插入这些值,以便在片段着色器中使用。这比计算后者的照明效率高得多。 (但是,这只是一个简单的例子。还有更多有用的例子。例如,许多模糊着色器使用这种技术,因为它效率更高。)

cocos2d库支持顶点着色器(这些技术可以和它一起使用。)所以它不像是没人用的东西。

目前在SpriteKit中可能无法使用顶点着色器。使用SceneKit对象(可以无缝嵌入SpriteKit场景中)可能会有更好的运气。

答案 1 :(得分:0)

根据Apple的SKShader documentation,它说:

  

SKShader对象包含自定义OpenGL ES 片段着色器。着色器对象用于自定义Sprite Kit中许多不同类型节点的绘制行为。

任何其他使用SpriteKit讲述着色器的教程网站总是将它们称为片段着色器而不提及顶点着色器。

答案 2 :(得分:0)

顶点着色器主要负责在2D屏幕上投影3D对象,这是spritekit不需要的,因为它是2D引擎。

顶点着色器的其他用途是缩放,转换和旋转对象,这些对象都可以通过spritekit代码实现。

如果他们真的不在那里,这可能是没有他们的原因:)