【已解决】驱动RGB-LCD的缓冲区问题

Moderator: ESP_Bob

asdfg1426
Posts: 86
Joined: Tue Jul 11, 2023 2:35 am

【已解决】驱动RGB-LCD的缓冲区问题

Postby asdfg1426 » Fri Aug 18, 2023 1:48 am

我现在初始化屏幕的结构体时候,用了.num_fbs = 3,是不是就代表我分配了三个缓冲区?然后使用的时候该怎么知道那个时候用的是哪个呢?我新手想弄明白这些问题,大佬们帮我解答一下疑惑,谢谢啦 :D

ESP_Penguin_Helper
Posts: 156
Joined: Tue Jul 11, 2023 6:55 am

Re: 驱动RGB-LCD的缓冲区问题

Postby ESP_Penguin_Helper » Fri Aug 18, 2023 6:38 am

你好,这个参数的作用是控制在屏幕显示图像时使用多少个帧缓冲,默认情况下被设置为 0 或 1,最大可被设置为 3。分配缓冲区后可以使用

Code: Select all

rgb_panel_draw_bitmap(esp_lcd_panel_t *panel, int x_start, int y_start, int x_end, int y_end, const void *color_data)
中的 *color_data 指针来指向绘制的图像数据的源缓冲区。该函数的作用是将图像数据从 color_data 缓冲区绘制到 RGB 面板的帧缓冲中。

参考下方实现。
rgb_panel_draw_bitmap.png
rgb_panel_draw_bitmap.png (41.18 KiB) Viewed 22962 times
首先检查 color_data 是否等于当前帧缓冲中的任一缓冲区。如果是,则会更新 rgb_panel->cur_fb_index,以指示当前使用的帧缓冲索引。如果 color_data 不等于任何一个帧缓冲,那么就需要执行数据复制操作,将 color_data 缓冲区的图像数据复制到当前帧缓冲中。

API 文档:
https://docs.espressif.com/projects/esp ... t7num_fbsE

https://docs.espressif.com/projects/esp ... e_tiiiiPKv

Github 链接:https://github.com/espressif/esp-idf/bl ... #L682-L692

asdfg1426
Posts: 86
Joined: Tue Jul 11, 2023 2:35 am

Re: 驱动RGB-LCD的缓冲区问题

Postby asdfg1426 » Fri Aug 18, 2023 8:14 am

ESP_Penguin_Helper wrote:
Fri Aug 18, 2023 6:38 am
你好,这个参数的作用是控制在屏幕显示图像时使用多少个帧缓冲,默认情况下被设置为 0 或 1,最大可被设置为 3。分配缓冲区后可以使用

Code: Select all

rgb_panel_draw_bitmap(esp_lcd_panel_t *panel, int x_start, int y_start, int x_end, int y_end, const void *color_data)
中的 *color_data 指针来指向绘制的图像数据的源缓冲区。该函数的作用是将图像数据从 color_data 缓冲区绘制到 RGB 面板的帧缓冲中。

参考下方实现。
rgb_panel_draw_bitmap.png

首先检查 color_data 是否等于当前帧缓冲中的任一缓冲区。如果是,则会更新 rgb_panel->cur_fb_index,以指示当前使用的帧缓冲索引。如果 color_data 不等于任何一个帧缓冲,那么就需要执行数据复制操作,将 color_data 缓冲区的图像数据复制到当前帧缓冲中。

API 文档:
https://docs.espressif.com/projects/esp ... t7num_fbsE

https://docs.espressif.com/projects/esp ... e_tiiiiPKv

Github 链接:https://github.com/espressif/esp-idf/bl ... #L682-L692
好的谢谢啦

Who is online

Users browsing this forum: No registered users and 60 guests