【问题标题】:How to add .fsh/.vsh shader files to Xcode so they are added to Copy Bundle Resources phase automatically?如何将 .fsh/.vsh 着色器文件添加到 Xcode 以便它们自动添加到 Copy Bundle Resources 阶段?
【发布时间】:2012-01-07 12:00:54
【问题描述】:

每当我将新的 .fsh 或 .vsh OpenGL ES 2.0 着色器文件添加到我的项目资源中时,该文件都会添加到不属于它的编译源构建阶段。然后我必须手动将其从该阶段移除,然后手动将其添加到 Copy Bundle Resources 构建阶段。

有什么方法可以告诉 Xcode 自动将扩展名为 .fsh 和 .vsh 的文件添加到 Copy Bundle Resources 构建阶段?

或者是否可以创建一个与将着色器添加到 Copy Bundle Resources 构建阶段具有相同效果的构建规则?

我更喜欢适用于 Xcode 项目/工作区的所有用户的解决方案,而不是每个 Xcode 用户必须单独玩的设置或系统更改。

【问题讨论】:

  • 我不知道答案在我的脑海中,但我的 Spider Sense 告诉我答案可能在您项目的“构建规则”部分。
  • 我也这么认为,但没有运气。我收到“多个构建命令”或“没有处理文件的规则”警告。即使我将 fsh/vsh 文件的文件类型设置为 OpenGL 着色语言源,使用规则“使用 PBXCp 的 GLSL 源文件”的最合乎逻辑的解决方案也不起作用。
  • 我有一个自制的图形库,在项目之间共享。我希望将代码和着色器放在一个文件夹中,并让 Xcode 在每次将库导入新项目时找出哪些是源文件,哪些是资源。

标签: xcode4 resources bundle shader


【解决方案1】:

以下是我找到的解决方法。如果有人有任何其他解决方案,我仍然会很感激答案。

要让着色器自动进入复制捆绑资源构建阶段,只需将所有着色器放在一个公共文件夹(或文件夹树)中即可。我将文件夹命名为“Shaders”。然后在添加 Shaders 文件夹时选择为任何添加的文件夹创建文件夹引用

由于文件夹引用文件被 Xcode 自动假定为捆绑资源。您只需要注意不要将任何不需要的文件放入该文件夹中,在进行发布构建之前分别清理文件夹。加载着色器也需要使用着色器文件的路径,即“Shaders/Examples/Blur.fsh”。

【讨论】:

    【解决方案2】:

    我的解决方法是转到 File > New File > Others > Empty 文件并将它们命名为 shader.vertshshader.fragsh.

    我猜 Xcode 会自动将带有点 3/4 扩展名的文件添加到编译阶段。

    如果您缺少语法突出显示,请将文件类型更改为“OpenGL 着色语言源”:

    【讨论】:

    • 这对我不起作用,我不想例如仅针对这种情况重命名现有源文件。我使用了 LearnCocos2D 提到的 put-them-in-a-folder 和 add-to-project-via-folder-reference 的方法。
    • @jd。是的,我也不想重命名所有现有代码,这种解决方法只有在你开始一个新项目时才有效,我也希望 Apple 解决这个问题,因为他们在示例代码中使用了 .vsh 和 .fsh 扩展名每个人都愿意效仿,包括我在内 :)
    • 不要再认为这个修复是必要的了,在 XCode 5.1.1 上,.vsh.fsh 文件会自动添加到 Copy Bundle Resources
    • @aledalgrande 你是对的。我很惊讶 Apple 还没有为着色器提供模板文件。
    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    相关资源
    最近更新 更多