【问题标题】:Shader files not opening in Xcode着色器文件未在 Xcode 中打开
【发布时间】:2013-10-29 08:27:00
【问题描述】:

我的着色器设置文件无法打开我的 .vert 和 .frag 文件以在 XCode 中进行编译和链接。

我需要采取哪些步骤才能让我的设置文件识别 XCode 4.5.1 中的着色器文件?

【问题讨论】:

  • XCode 在什么领域编译和链接 GLSL 着色器?我知道没有 Clang GLSL 前端......这一直是实际 OpenGL 实现或 Cg 或 ANGLE 等转换层的任务。
  • XCode 不会为你做这件事。我有一个 C 代码来处理它,但想知道为什么着色器文件没有被这段代码识别? opengl.org/sdk/docs/tutorials/ClockworkCoders/loading.php
  • 好的,所以这是一个非常不同的问题,它真的与 XCode 无关。但是如果没有一些更详细的错误信息(例如程序/着色器信息日志输出)和示例代码,我们将无法为您提供帮助。
  • 不,它与 XCode 有关。我不担心文件的实际编译和链接。我想知道为什么,当我调用 fd = open(name, O_RDONLY) 时,我得到-1。 .frag 和 .vert 文件与此代码位于同一目录中。我需要做更多工作才能正确构建 XCode?​​span>
  • @Riftus:XCode 是一个开发 API。程序运行时发生的任何事情都与 XCode 无关,并且 XCode 中的任何设置都不会消除该错误。 .glsl 文件与您的源代码相关的位置也无关紧要。重要的是,着色器文件与您的程序(所谓的工作目录)相关的位置是非常动态且无法预测的。要么将路径硬编码到非常知名的地方,要么在运行时找出二进制文件的位置并使用该信息构建正确的加载路径。

标签: opengl glsl xcode4.5 shader


【解决方案1】:
  1. 打开构建阶段
  2. 点击左上角的“+”按钮
  3. 选择“复制捆绑资源..”项,
  4. 添加 glsl 文件。

【讨论】:

    【解决方案2】:

    您可能需要将后缀更改为“.glsl”。如果这不起作用,您始终可以通过从实用工具窗格的文件检查器的“文件类型”弹出窗口中选择“OpenGL 着色语言源”来告诉 Xcode 它们是什么类型的文件。

    【讨论】:

    • 我想我误解了你的问题。看起来你是说在运行时,当你打开文件时,打开它失败了?如果是这样,那么这与 Xcode 无关。你的应用是如何打包的?你把着色器文件放在哪里了?为什么要使用 open() 而不是使用 NSBundle 例程从捆绑资源中获取它们?
    • 因为它不是一个应用程序。我只是在使用 XCode 快速构建和运行简单的 opengl 应用程序。着色器文件与打开/编译/链接它们的文件位于同一目录中。
    • @Riftus:在这种情况下,XCode 中可能有一个项目设置来设置当前工作目录。我唯一一次使用 XCode IDE 是为了简化捆绑 .app 程序,我使用 Makefile 和命令行工具链来处理你正在做的事情。我认为这正是 Apple 所期望的,他们不会让 XCode IDE 对非应用程序开发人员非常友好:P
    • @Riftus:该描述的唯一问题是在 OS X 平台上,软件可以捆绑到“.app”包中。这些是您可以在 Finder 中双击并运行的程序,它们包含二进制文件、大多数运行时资源、非标准框架等。因此,在 OS X 的上下文中,“应用程序”并不意味着小程序或任何种类。如果您将 iOS 添加到讨论中,它会变得更加混乱,因为它们还使用“.app”捆绑包来处理您真正合法地称为移动应用程序的东西。考虑到 OS X 有一个应用商店,可以肯定地说任何“.app”包都可以称为应用。
    • OK,所以你的应用程序打包没有捆绑。没关系。那么问题是应用程序的构建位置以及着色器文件的去向。在 Xcode 中,如果您在 Project Navigator 中右键单击构建产品(您的应用程序)并选择“Reveal In Finder”,它是否与您的着色器文件位于同一目录中?如果没有,您可以将 Copy Files 构建阶段添加到您的项目中以将它们复制到那里。
    【解决方案3】:

    只需将着色器文件放在与可执行文件相同的文件中... DerivedData/projectName/Build/Products/Debug

    【讨论】:

      【解决方案4】:

      什么对我有用:

      1. 在 Xcode 中,单击您的项目名称。

      2. 导航至构建阶段。

      3. 在“复制文件”下,将目标设置为“产品目录”。

      4. 将子路径留空。

      5. 使用 + 添加您的 .frag 和 .vert 文件

      【讨论】:

        【解决方案5】:

        所以我试图复制一些碎片文件,它们也无法打开。

        1. 通过右键单击并“在查找器中显示”检查 xcodeproj 窗口中的文件(.ver​​t 或 .frag)是否确实在您的目录中
        2. 在 Xcode 中,单击您的项目名称并导航到构建阶段。
        3. 单击左上角的“+”符号并添加一个新的复制文件阶段
        4. 确保选择了“资源”,“子路径”为空并且未选中“仅在安装时复制”。
        5. 然后将文件(.ver​​t 或 .frag)从项目导航器中一一拖放到名称下的“复制文件”中。
        6. 希望您可以运行该项目

        步骤 2 - 6 摘自卧龙岗大学(澳大利亚)手册:)

        【讨论】:

          猜你喜欢
          • 2022-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-13
          • 1970-01-01
          • 2012-07-29
          • 1970-01-01
          • 2018-11-20
          相关资源
          最近更新 更多