Edited at

iOSアプリ開発:プロジェクトで使うリソースファイルが読み込めない

More than 3 years have passed since last update.


現象

下記のように、シェーダーファイルを読み込ませようとした所、pathNameに値が入らずsourceにも値が入ってなかったです。


Test.m

NSString *pathName = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"vsh"];

const GLchar *source = (GLchar *)[[NSString stringWithContentsOfFile:pathName encoding:NSUTF8StringEncoding error:nil] UTF8String];
if (!source) {
NSLog(@"Failed to load vertex shader");
return;
}


調査


プロジェクトに[Shader.vsh]が追加されているのか確認。

プロジェクトナビゲータ上にファイルがあれば大丈夫。

※プロジェクトナビゲータの表示の仕方

 XcodeのView->Navigators->Show Project Navigator

無ければ、下記ページで紹介している方法で追加してください。

iOSアプリ開発:画像追加


リソースとしてコピーする対象ファイルに追加されているのか確認。

プロジェクトナビゲータの一番上に、青いアイコンがあるかと思います。

それを押下するとPROJECTとTARGETSが表示されるので、TARGETSの今回作業しているものを押下。

Build Phases->Copy Bundle Resources

にあるものは、リソースとしてアプリ内部から扱う事が出来るようコピーされます。

無いと扱う事が出来ません。

今回は、ここに[Shader.vsh]が無かったです。


対応

先ほどの[リソースとしてコピーする対象ファイルに追加されているのか確認。]で見た、Copy Bundle Resourcesの下に[+]があるので、それを押下し[Shader.vsh]を指定したら追加され、正常に動作するようになりました。

後、Compile Sourcesに[Shader.vsh]が追加されていたようなので、こちらは削除しました。