Sun フレームバッファー使用の手引き

ダブルバッファーのサポート

XIL 関数は、(Creator シリーズなど) ダブルバッファーが搭載されているハードウェア上でのダブルバッファーをサポートします。この節では、ダブルバッファーのサポート機能と使用法について説明します。

機能:

表示画像をダブルバッファーの表示画像として使用する場合は、xil_create_from_window を使用するかわりに xil_create_double_buffered_window を使用して画像を作成してください。ダブルバッファーをサポートしていないハードウェア上で xil_create_double_buffer_window を実行すると、無効なデバイスが返されます。開発者は、このことを理解して xil_create_from_window を呼び出す必要があります。

ダブルバッファーをサポートするハードウェア上で xil_create_double_buffered_window を実行して画像を作成した場合は、XilBufferId が有効となり、XIL_BACK_BUFFERXIL_FRONT_BUFFER の 2 つの値を選択することができます。このようなウィンドウでは、バッファーのひとつが常時アクティブで、画像に書き込みをするすべての機能が、アクティブなバッファーに書き込みます (たとえば、画像へのコピーは画像のアクティブなバッファーへピクセルをコピーします)。一方、前面にあるバッファーが画面に表示される部分ですが、作成時に実際にアクティブなバッファーは XIL_BACK_BUFFER です。

xil_create_double_buffered_window でダブルバッファーの画像を作成した後に、その画像を表示画像として使用する場合には、実際にアクティブなバッファーが XIL_BACK_BUFFER であるため、特に必要な作業はありません。アクティブなバッファーが XIL_FRONT_BUFFER である場合には、画像処理操作は失敗しませんが、その画像をダブルバッファーの画像として使用することはできません。この画像を再びダブルバッファーの画像として使用する場合は、以下のように呼び出してください。


# xil_set_active_buffer(dest,XIL_BACK_BUFFER)

これにより、フロントバッファーからバックバッファーへの変換が実行されます。この場合、ユーザーによる以下の呼び出しなしでは、画像の内容は表示されません。


# xil_swap_buffers(dest)

この操作により、画像の内容を見ることができるようになります。ダブルバッファーの画像が不要になった場合には、以下のように呼び出してください。


# xil_set_active_buffer(dest,XIL_FRONT_BUFFER)

この操作により、ハードウェアの書き込みおよび表示バッファーはデフォルト値にリセットされます。

以下にダブルバッファーを使用する場合の、一般的なプログラム例を示します。


dest = xil_create_double_buffered_window(state,display,dwindow);
...
for (i=0; i<repeat; i++) {
...
xil_lookup(src,dest,lut);
xil_swap_buffers(dest);
}
xil_set_active_buffer(dest,XIL_FRONT_BUFFER);