大きなサイズのテクスチャが真っ黒になる

Xcode 5.0で遭遇した問題。

BrowserQuestのtilesheetを使って、マップを表示しようとしてたんですが、何度やってもうまくいかなくて困りました。

いろいろ試していて判明したのは、大きなサイズ(容量ではなくピクセル数)を指定したSKTextureが真っ黒になるということでした。


試したサイズ


4096は表示される


4097は真っ黒になる


幅を広げても4096は問題なし


幅を小さくしても4097はやっぱりダメ

こんな感じで、4097ピクセル以上になると表示されなくなってしまうようです。 幅を変えても関係なさそうだったので、1辺の長さが問題になる模様。

SKTexture Class Referenceには特に何も書いていない気がしますし、エラーログなども出ていません。

サイズを小さくするしかない?
そもそも全ての環境で発生する問題なのかも不明ですが…。

ソースコードは、
sj-posts-apps/SJLargeTexture at master · tnantoka/sj-posts-apps
に置いてありますので、ご自由にどうぞ。

何かわかったらまた書きます。


Hirohito Katoさんから、コメント欄で原因を教えていただきました。
GPUの制限により4096x4096までのサイズしか扱えないためのようです。

参考

情報提供ありがとうございました!

編集履歴


comments powered by Disqus

SpriteKitではじめる2Dゲームプログラミング Swift対応 (Smart Game Developer)