我正在尝试加载着色器,但我似乎无法在代码中找到它们。我正在将它们复制到捆绑包中,它们就在可执行文件旁边,但我仍然无法找到它们。我正在用C ++编写渲染代码。
这是主要的捆绑......
和我的代码,希望有一天,加载着色器。我现在只想找到它,这就是为什么没有发生任何事情......
void RenderingEngine::ReadShader()
{
char* buffer;
long size;
std::ifstream file;
file.open("Shader.frag");
if (!file.is_open())
{
std::cout << "FILE NOT OPENED!\n";
}
}
答案 0 :(得分:2)
如果您使用的是Objective-C,那么打开文件的标准方法就是:
// get the path to the shader file, without having to duplicate logic about
// how the bundle is laid out from the OS
NSString *pathToShader = [[NSBundle mainBundle] pathForResource:@"Shader"
ofType:@"Frag"];
// load the source from pathToShader by whatever means... probably you'd
// actually get a file URL above and use the relevant NSString method,
// but that's not necessarily helpful here
所以你明确让操作系统告诉你文件的路径,因为它在主(应用程序)包中。
您似乎假设当前工作目录设置为捆绑包中的资源区域(在iOS中与可执行文件的路径相同但在OS X上是独立的),我不这样做在任何地方都可以保证。
假设您在分支到C ++之前有一些Objective-C代码来设置相关的UIKit内容,您可能希望添加如下内容:
[[NSFileManager defaultManager]
changeCurrentDirectoryPath:[[NSBundle mainBundle] resourcePath]];
要确定您希望主捆绑将其资源放在当前工作目录的哪个位置。