swift - 如何在 XCode 中编写 OpenGL ES 片段着色器?

标签 swift opengl-es sprite-kit skspritenode fragment-shader

我正在尝试让我自己的着色器用作 SKSpriteNode 的 SKShader,但我只是不知道正确的方法。我想要的只是一种编写具有自动完成功能的着色器代码并查看着色器而无需等待一些大型程序编译它的方法,但这似乎比我想象的更难。

我已经安装了 GLFW3 和其他一些奇怪的东西,因为大多数教程都建议像这样使用 OpenGL,但它似乎更适合整个 OpenGL,而不仅仅是一种特定类型的着色器。

TL;DR:有谁知道一种快速简单的方法来编写着色器以用作 SpriteKit 中的 SKShaders?

最佳答案

让我们从你的 Sprite 开始

let spaceship = SKSpriteNode(imageNamed: "Spaceship")

enter image description here

SKShader 对象

你需要将它连接到一个SKShader对象

spaceship.shader = SKShader(fileNamed: "MyShader.fsh")

着色器代码

接下来您可以创建您的 MyShader.fsh 文件并在其中写入片段着色器的逻辑。

在下面的示例中,我将每个像素的 blue 组件设置为 0

void main() {
    vec4 color = texture2D(u_texture, v_tex_coord);
    color.b = 0.0;
    gl_FragColor = color;
}

enter image description here

关于swift - 如何在 XCode 中编写 OpenGL ES 片段着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446863/

相关文章:

ios - SKPhysicsJoint 使旋转无法正常工作

ios - Google Places Current Place 的问题在 XCode 6.4 中不起作用

iOS v10 或更低版本 : How to add UISearchController in the bottom of navigation bar Programmatically

ios - 具有不透明度的 GPUImageLightenBlendFilter

c++ - 在 Qt 5.4 中跨类使用最新的 OpenGL 函数

java - 在 Android 上使用 opengles 播放 YUV 视频后 Activity 困惑

ios - 带有 UIBezierPath 的 SKShapeNode 未完全填充

ios - 如何在 swift 中创建可变数量的 UIImageViews

ios - 快速画中画模式

swift - 如何处理 tvOS 字体 SpriteKit