右向きのキャラクターがいて、左向きになるように画像をミラーリングする必要があるとします。どうすればいいですか?で Flip メソッドを見つけました
gl::Texture
が、それは水平方向ではなく垂直方向に反転します。draw()
メソッド中にウィンドウ全体をクリアしないと、最後の最後のフレームで描いたものがまだ存在することに気付きました。変更内容のみを更新したいのでこれは良いことですがgl::Texture
、現在のフレームから特定のものを削除するにはどうすればよいですか?
2 に答える
1
1:X軸で反転させたテクスチャを描く
この効果を得る方法はたくさんあります。どちらが最適かは、テクスチャの描画方法によって異なります。あなたは Cinder から始めているので、ci::gl::draw 関数を使用して TextureRef オブジェクトを渡していると思います。その場合、反転したテクスチャを描画する簡単な方法は次のとおりです (テクスチャを描画している場所ならどこにでも配置できます)。
// This is to get a "fresh" coordinate system for drawing and to make sure
// you can clean up after you're done
ci::gl::pushMatrices();
// Move the coordinate system to where you want to draw the texture
ci::gl::translate(ci::Vec2f(100, 100));
// Scaling the coordinate system by -1 effectively flips that axis
// (e.g. whatever was going to be drawn at x: 10 will now be drawn at x: -10)
ci::gl::scale(ci::Vec3f(-1, 1, 1));
// Draw your texture
ci::gl::draw(texture);
// Clean up after yourself so any drawing calls after this don't use your modified
// coordinates
ci::gl::popMatrices();
2: フレームからテクスチャを削除する
あなたが説明していることを行うための本当に簡単な方法はありません (つまり、フレーム バッファーに描画し、後で特定のテクスチャに関連付けられたすべてのピクセルを削除します)。ただし、達成しようとしている効果によっては、必要なことを行う方法がいくつかある場合がありますが、それらはすべて比較的高度です。たとえば、削除したいテクスチャを「テクスチャ」バッファに描画し、その他すべてを「バックグラウンド」バッファに描画できます。フレームごとにバックグラウンド バッファーを描画し、その上にテクスチャ バッファーを描画します。テクスチャ バッファを「削除」したい場合は、描画を停止するだけです。
PS - 複数のバッファを描画する方法について詳しく説明できることをうれしく思います (実際、Cinder を使用すると比較的簡単に描画できます)。
于 2014-09-09T21:34:43.637 に答える