WindowsAPIを使用してアニメーションをレンダリングしようとしています。私の問題は、画面の半分が前のフレームを示し、下半分が現在のフレームを示していることです。ダブルバッファを使用すると修正されると思いましたが、挿入しました
BitBlt(hdc, 0, 0, iWidth, iHeight, hdcMem, 0, 0, SRCCOPY);
私が理解しているのはダブルバッファーですが、水平分割はまだ存在しています。どうすればこれを修正できますか?
WindowsAPIを使用してアニメーションをレンダリングしようとしています。私の問題は、画面の半分が前のフレームを示し、下半分が現在のフレームを示していることです。ダブルバッファを使用すると修正されると思いましたが、挿入しました
BitBlt(hdc, 0, 0, iWidth, iHeight, hdcMem, 0, 0, SRCCOPY);
私が理解しているのはダブルバッファーですが、水平分割はまだ存在しています。どうすればこれを修正できますか?
BitBlt
は垂直方向の空白に同期されていないためBitBlt
、ハードウェアがディスプレイにレンダリングすると同時に画面に移動すると、破損する可能性があります。を使用したダブルバッファリングはBitBlt
、ティアリングの可能性を減らしますが、それを排除するわけではありません。BitBlt
それを排除するには、垂直方向の空白期間中に行う必要があります。
GDI BitBltは、高速で継続的なアニメーション用に設計されていません。破れるかどうかは、ハードウェアとドライバーによって異なります。
Direct2DやDirect3D(および非推奨のDirectDraw)などの他のグラフィックAPIがあり、垂直同期に同期できます。