通过Xcode构建模拟GLSL#导入

通过Xcode构建模拟GLSL#导入,xcode,build,build-rules,Xcode,Build,Build Rules,我的一些GLSL片段着色器共享公共函数和常量。我在GLSL中找不到任何类似导入的功能(这是可以理解的),但如果我能在Xcode的构建阶段模仿它,那就太酷了。这可能很简单,只需在将片段着色器复制到资源文件夹之前,将一个公共文件附加到所有片段着色器 但是我的剧本很弱。有人想帮我或给我指出正确的方向吗?我对XCode不太了解,但在您自己的代码中实现它应该不会太困难 如果逐行加载代码,这非常容易。加载每一行时,检查is是否具有格式#import“filename”。如果是,则在继续之前加载该文件。差不多

我的一些GLSL片段着色器共享公共函数和常量。我在GLSL中找不到任何类似导入的功能(这是可以理解的),但如果我能在Xcode的构建阶段模仿它,那就太酷了。这可能很简单,只需在将片段着色器复制到资源文件夹之前,将一个公共文件附加到所有片段着色器


但是我的剧本很弱。有人想帮我或给我指出正确的方向吗?

我对XCode不太了解,但在您自己的代码中实现它应该不会太困难

如果逐行加载代码,这非常容易。加载每一行时,检查is是否具有格式
#import“filename”
。如果是,则在继续之前加载该文件。差不多 这个C++代码:

 string loadGLSL(string fileName)
 {
      ifstream inputStream(fileName);
      string fileContents, line;

      while(inputFile.good())
      {
          getline(inputStream, line);
          if(isImportDirective(line))
               loadGLSL(getFileNamePart(line));
          else
              fileContents += line + '\n';
      }
 }
我将让您了解
isImportDirective
getFileNamePart
的详细信息,但这应该不会太难。我也没有注意同一个文件的多个
#导入
-如果您希望实现与Objective-C的
#导入
类似的功能,那么应该检查这种冗余

当然,您也可以先加载整个文件,然后搜索字符串
#import
,然后交换该行所需的文件内容。你认为什么最管用


希望这能有所帮助。

我对XCode不太了解,但在您自己的代码中实现它应该不会太困难

如果逐行加载代码,这非常容易。加载每一行时,检查is是否具有格式
#import“filename”
。如果是,则在继续之前加载该文件。差不多 这个C++代码:

 string loadGLSL(string fileName)
 {
      ifstream inputStream(fileName);
      string fileContents, line;

      while(inputFile.good())
      {
          getline(inputStream, line);
          if(isImportDirective(line))
               loadGLSL(getFileNamePart(line));
          else
              fileContents += line + '\n';
      }
 }
我将让您了解
isImportDirective
getFileNamePart
的详细信息,但这应该不会太难。我也没有注意同一个文件的多个
#导入
-如果您希望实现与Objective-C的
#导入
类似的功能,那么应该检查这种冗余

当然,您也可以先加载整个文件,然后搜索字符串
#import
,然后交换该行所需的文件内容。你认为什么最管用


希望这能有所帮助。

Heh!我甚至没有考虑在我的应用程序中做这件事。好办法!事实上,如果你在谷歌上搜索
GLSL#include
(而不是
#import
),这个想法会出现很多。以防你想看到一些稍微不同的方法。嘿!我甚至没有考虑在我的应用程序中做这件事。好办法!事实上,如果你在谷歌上搜索
GLSL#include
(而不是
#import
),这个想法会出现很多。以防你想看到一些稍微不同的方法。