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

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までのサイズしか扱えないためのようです。

参考

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

コメント

チュートリアルのEPUB版を公開しました

Gumroadからダウンロードできます。

iBooksで読むとこのようになります。
アニメーションGIFもちゃんと動くので、インタラクティブな感じで楽しめるかもしれません。


0円以上に設定しているため、無料でもダウンロード可能ですのでお気軽にご利用ください。

コメント

Apple公式のSprite Kit関連情報まとめ

WWDC

ガイド

サンプルコード

リファレンス

今のところ、公式の情報はこれで全てだと思います。
プログラミングガイドの日本語訳が待ち遠しいですね。

iOS 7 Tech Talksの資料も公開されるといいんですが。

コメント

Sprite Kit関連の日本語サイトまとめ

おすすめ

その他

今後も参考になるサイトを見つけたら紹介していきたいと思います。1

  1. 2013-9-19 以前に公開されているものは除外しています。 

コメント

SpriteKit.jp オープン!

チュートリアルを公開しました。 是非ご利用ください。

コメント

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