プラットフォーム非依存のエンジンがすべてのグラフィックスをRGBAの順序で32ビットピクセルバッファに書き込むクロスプラットフォームプログラムのiOSバックエンドを作成しています。アルファバイトは使用されません。グラフィックスは常に不透明なので、アルファブレンディングは必要ありません。OpenGLを使用しないiOSでのハードウェアアクセラレーションによるスケーリング
これらのピクセルバッファーを私のdrawRect
メソッド内のCGContextRef
に描画して拡大縮小する最も効率的なオプションは何ですか?ピクセルバッファは通常320×240ピクセルしかないため、ビューのサイズを完全に満たすようにスケーリングする必要があります。非Retina iPadsでは1024x768、Retina iPadsでは2048x1536です。これは大変な作業ですので、GPUを使用するのが最善です。しかし、OpenGLを使用せずにGPUを使ってiOSに描画と拡大を強制するにはどうすればよいですか?
私はCGContextDrawImage()
を使用しようとしましたが、これはおそらくすべてがCPUを使用して行われているため、これは実際には低速です。
これらは明らかにGPUに最適化されているので、私はまたCIImage
のAPIを見て持っていたが、問題はCIImage
オブジェクトは不変ですので、私は常に私が描くのに必要なフレームごとに新しいCIImage
オブジェクトを作成する必要があるだろうということであるだろうおそらく同様にパフォーマンスを殺すでしょう。
私はもちろんOpenGLを使うことができますが、私がここで必要なものを得るための簡単な解決策があるかどうかについてのフィードバックをしたいと思います。
ありがとうございました!
次のリンクはいくつかのヒントを表示すると思います。 http://stackoverflow.com/questions/6520320/images-vs-core-graphicsおよびhttps://robots.thoughtbot.com/designing-for-ios-graphics-performanceおよびhttps://lobste.rs/s/ ckm4uw/a_performance-minded_take_on_ios_design/comments/itdkfh。 – beshio