※個人で管理しているHPに引っ越ししました。
リンク切れ等考慮して本ページは残しておきますが、今後はHPのほうで更新します。
現象
下記のように、シェーダーファイルを読み込ませようとした所、pathNameに値が入らずsourceにも値が入ってなかったです。
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]が追加されていたようなので、こちらは削除しました。