写在前面
缓冲区是存储像素数据的内存区域。多个缓冲区可以与窗口或流相关联,但只有一个缓冲区可以与位图相关联。
一,创建缓冲区
你可以创建内部缓冲区和外部缓冲区,如下:
1.1 内部缓冲区
我们可以通过调用以下Screen API函数来为位图,流,窗口创建内部缓冲区:
screen_create_pixmap_buffer():创建位图缓冲区
screen_create_window_buffers():创建窗口缓冲区
screen_create_stream_buffers():创建流缓冲区
如果SCREEN_USAGE_READ或SCREEN_USAGE_WRITE不足以满足对缓冲区的预期使用,则可以在创建其缓冲区之前在SCREEN API对象上设置SCREEN_PROPERTY_USAGE。否则,只需通过调用适当的函数为Screen API对象创建缓冲区。例如,为窗口创建缓冲区。
...
screen_context_t ctx;
screen_window_t win;
int num_bufs = 2;
...
screen_create_window(&win, ctx);
screen_create_window_buffers(win, num_bufs);
...
1.2 外部缓冲区
外部缓冲区是通过调用 screen_create_buffer() 创建的,其内存由应用程序分配。只有在将外部缓冲区附加到像素图、窗口或流之一后,才能使用(例如渲染到)外部缓冲区。
由于内存位置或缓冲区大小要求,驱动程序等应用程序可能需要分配自己的缓冲区。这些应用程序在分配缓冲区时必须确