硬汉嵌入式论坛

 找回密码
 立即注册
查看: 9700|回复: 6
收起左侧

[emWin] RGB888和ARGB8888这两种颜色具体有多大差别?

[复制链接]

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2019-9-29 13:54:38 | 显示全部楼层 |阅读模式
本帖最后由 kokoromi 于 2019-9-29 14:22 编辑

RGB888的颜色方案(GUICC_M888 和 GUIDRV_LIN_24)和ARGB8888颜色方案(GUICC_M8888I 和 GUIDRV_LIN_32)具体有什么差别?显示性能上和消耗上影响大吗?我看有些自定义的函数只有这几种: CUSTOM_DrawBitmap8bpp,CUSTOM_DrawBitmap16bpp,CUSTOM_DrawBitmap32bpp,没有24bpp的,那RGB888的使用系统自带的吗?还有如果我用RGB888格式,小图标等图形显示出来四周会不会有自身不透明的那种背景色?这块有点迷糊,对这两种方案一直搞不明白。

还有,定义颜色转化的几个函数:
DEFINE_DMA2D_COLORCONVERSION(M8888I, LTDC_Pixelformat_ARGB8888)
DEFINE_DMA2D_COLORCONVERSION(M888,   LTDC_Pixelformat_ARGB8888) /* Internal pixel format of emWin is 32 bit, because of that ARGB8888 */
DEFINE_DMA2D_COLORCONVERSION(M565,   LTDC_Pixelformat_RGB565)
DEFINE_DMA2D_COLORCONVERSION(M1555I, LTDC_Pixelformat_ARGB1555)
DEFINE_DMA2D_COLORCONVERSION(M4444I, LTDC_Pixelformat_ARGB4444)

第二行
为什么M888的对应的格式还是LTDC_Pixelformat_ARGB8888而不是LTDC_Pixelformat_RGB888呢?输入的数据是RGB888,但是输入格式却设置成了ARGB8888,这么做也对应不上啊,不会出错吗?

回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-9-29 16:07:04 | 显示全部楼层
是不是写错了呢,颜色格式的设置和实际存储在缓冲区的中颜色格式不匹配的话,取出颜色的时候肯定会出错的吧...
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2019-9-30 10:49:28 | 显示全部楼层
1、你的理解是对的,对于888颜色格式,DMA2D是不支持的、非常效果资源。
2、emWin的透明问题是可以软件实现的。而硬件的Alpha透明通道是用于图层之间透明效果,F429硬件支持的图层1,图层2和背景层。

3、不会,emWin软件内部是8888格式处理的,对于888颜色格式,F429硬件接口上只有RGB,所以直接输出是可以的。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-9-30 11:11:53 | 显示全部楼层
eric2013 发表于 2019-9-30 10:49
1、你的理解是对的,对于888颜色格式,DMA2D是不支持的、非常效果资源。
2、emWin的透明问题是可以软件实 ...

多谢!针对这三个还有点疑问:
1、你说的不支持式RGB888还是ARGB8888?这两个哪个耗资源?我看你的综合例子里用的是RGB888的。
2、关于透明度这个,是不是说即便我用的图片不含透明度通道信息,实际显示的时候也可以实现透明效果?
3、关于格式这块,我看文档说的是无论什么输入格式,内部都是使用ARGB8888格式处理的,但是这个输入颜色的格式是按照设置的格式转换的,颜色格式不一样在内存中存储的方式也不一样,我的意思是,本来内存中存的是RGB888格式的数据,但是输入颜色格式选择了ARGB8888,这样DMA2D取数据的时候不会错乱吗?

最后还有一个问题想请教大神,就是如果我用的图片都是不带透明度信息的RGB888格式,使用emWin的时候可以设置驱动为GUICC_M8888I 和 GUIDRV_LIN_32吗?因为绘制位图的自定义函数没有CUSTOM_DrawBitmap24bpp这个,自带的效率会很低的吧。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2019-9-30 12:35:38 | 显示全部楼层
kokoromi 发表于 2019-9-30 11:11
多谢!针对这三个还有点疑问:
1、你说的不支持式RGB888还是ARGB8888?这两个哪个耗资源?我看你的综合 ...

1、RGB888不支持,我们的综合例子用的RGB565
2、可以,软件可以实现。
3、emWin软件层的所有处理都是ARGB8888或者ARGB8888格式,在用户读取内存,或者emWin向显示屏输出的时候,会做一个颜色格式的转换

4、 没问题,而且如果用打算用24位色,推荐采用ARGB8888格式
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-30 19:08:39 | 显示全部楼层
Snipaste_2021-08-30_19-05-18.png Snipaste_2021-08-30_19-05-54.png
DMA2D不支持RGB888么?怎么跟学过的DMA2D有些出入的样子
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-8-31 09:16:16 | 显示全部楼层
EmbeddedXGJ 发表于 2021-8-30 19:08
DMA2D不支持RGB888么?怎么跟学过的DMA2D有些出入的样子

QQ截图20210831091508.png

QQ截图20210831091605.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-21 04:51 , Processed in 0.459731 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表