[cocos2dx] RenderTextureで画面キャプチャすると微妙に描画が崩れる
2014年7月6日日曜日
画面のスクリーンショットを撮ったり、いっぺんにシェーダをかけたりしたい時に使う(Grabber使ってやったほうが重くならずに済みますが)RenderTextureですが、手元の環境だと微妙に描画が崩れる不具合がありました。以前はこんなことなかったのにな―、と思いながら直すのに数日費やしたのでメモっときます。環境はcocos2dx 3.0です。
描画が崩れる
以下のスクリーンショットは、1pxごとに線を引いたものを、普通に描画したものとRenderTextureに一度描画してから表示したものを並べた画像です。
どちらもY座標が同じ場所に描画していますが、ご覧のとおり、描画がずれていることがわかると思います。このズレは縦方向だけだったり縦横両方に現れたりと、端末によって微妙に差はあるもののどの端末でも再現しました。
直し方
原因はRenderTextureで使用するテクスチャのエイリアシングの問題のようです。CCRenderTexture.cppのsetAliasTexParametersを呼んでいる部分をコメントアウトすると直りました。
おまけ
ちなみに、glScissorを利用していると、対象領域が透明になってしまうようです。この場合、RenderTextureのピクセルフォーマットを、デフォルトのRGBA8888からRGB888に変更してアルファを無効化するとうまくいきます。スクリーンショットを撮る場合はアルファは関係ないのでお試しください。
以上メモでした。
0 件のコメント :
コメントを投稿