跳轉到主要內容

更改應用程式的像素格式

本文將介紹在創建專案後,如何更改應用程式的像素格式。 具體地說,本文將舉例說明如何通過TouchGFX Generator將24位RGB888應用修改為16位RGB565,還將介紹對TouchGFX專案配置的影響。 更改像素格式的原因可能是:

  1. 修改顯示器需求
  2. 修改應用需求
  3. 專案初始創建的錯誤
Further reading
請閱讀關於顏色格式的文章。

一般而言,為了更改應用程式的像素格式,可能需要進行下列更改。

  1. 開發板搭建:更改LTDC的像素格式。
  2. HAL開發: 修改TouchGFX Generator設置,以反映LTDC設置或影像緩衝在記憶體中的位置。
  3. TouchGFX Designer:確保設計軟體正在對影像使用新的位深和正確的影像資源。

設計之初可以先檢查顯示器影像的配置,稍後再返回螢幕進行確認。

影像配置RGB888

顯示器配置24位元

開發板搭建

如果STM32CubeMX專案中的特定設置可能影響應用程式的像素格式,就像LTDC一樣,則開發者需要在此進行適當更改,以使TouchGFX以LTDC期望的格式進行渲染。

Further reading
請閱讀關於LTDC的文章以瞭解TouchGFX應用有效像素格式設置的詳細資訊。

HAL開發

如果應用的位深隨影像緩衝的像素格式而變化(例如,將ARGB2222更改為BRGA2222後仍將得到8位應用),則開發者可能需要修改影像緩衝的記憶體位置。 在以下情況下:

修改像素格式

使用此配置生成程式碼將生成使用16位TouchGFX LCD 類的 TouchGFXConfiguration

TouchGFXConfiguration.cpp
static LCD16bpp display;

如果專案已在TouchGFX Designer中打開,將提示開發者更新,以套用新生成的配置更改。

{
"image_configuration": {
"images": {},
"dither_algorithm": "2",
"alpha_dither": "yes",
"layout_rotation": "0",
"opaque_image_format": "RGB565",
"nonopaque_image_format": "ARGB8888",
"section": "ExtFlashSection",
"extra_section": "ExtFlashSection"
},

下表列出了在給定的像素格式下對不透明和透明影像格式的影響:

影像緩衝區像素格式不透明格式透明格式
Gray2Gray2Gray2
Gray4Gray4Gray4
ABGR2222ABGR2222ABGR2222
ARGB2222ARGB2222ARGB2222
BGRA2222BGRA2222BGRA2222
RGBA2222RGBA2222RGBA2222
RGB565RGB565ARGB8888
RGB888RGB888ARGB8888

TouchGFX Designer

在基於新的TouchGFX Generator設置(在STM32CubeMX中定義)更新了TouchGFX專案後,開發者會發現TouchGFX Designer的配置已經更改,以便與之匹配。

影像配置RGB565

顯示器配置16位元

在從TouchGFX Designer內部生成程式碼後,影像資源的程式碼現已反映了更新後的像素格式:

TouchGFX\generated\images\src\my_image.png
LOCATION_PRAGMA("ExtFlashSection")
KEEP extern const unsigned char my_image[] LOCATION_ATTRIBUTE("ExtFlashSection") = // 320x240 RGB565 pixels.

結論

只需使用TouchGFX Generator即可修改應用程式的當前像素格式。 對於具有LTDC的MCU,運行中的TouchGFX必須與在TouchGFX Generator(就LTDC而言,僅限於RGB565和RGB888)設置中定義的影像緩衝像素格式相匹配,以確保與TouchGFX Core渲染的格式相一致。

在從STM32CubeMX生成程式碼後,將更新TouchGFX專案,後續在TouchGFX Designer中生成程式碼後,圖像資產和幀緩衝驅動程式都將具有指定格式。