iOS 256 色 (VGA) 转 RGB

Posted

技术标签:

【中文标题】iOS 256 色 (VGA) 转 RGB【英文标题】:iOS 256 Colors (VGA) to RGB 【发布时间】:2011-01-29 10:33:38 【问题描述】:

我想在 ios 上将 VGA 颜色(256 色;8 位)转换为 RGB 颜色。

是否可以计算这个或者我必须使用颜色表(使用 CGColorSpaceCreateIndexed)。

UIColor 不支持 256 色。

谢谢:)

【问题讨论】:

我冒昧地将“256 位”更改为“256 色”。 这个问题没有任何意义。 8 位颜色空间中的 VGA 颜色 RGB 颜色。它们由单独的红色、绿色和蓝色分量组成。最多有 256 种颜色这一事实无关紧要。您无需创建任何类型的颜色索引表或计算任何内容。 也许我应该详细说明。我正在将 DOS 游戏移植到 iOS。我得到一个 uint8 作为颜色(一个分量,8 位),需要将其转换为 RGB(三个分量)。 【参考方案1】:

在某个地方,您要移植的标题应该设置了调色板。在 VGA 上,256 种颜色通过程序员先前设置的表映射,以将它们转换为 18 位 RGB 颜色(每个通道统一为 6 位)。如果您通过仿真运行原始标题,请注意对端口 0x3c6、0x3c8 和 0x3c9 的写入或通过 int 10h 调用 BIOS,其中 ax = 0x1010(设置单一颜色)或 0x1012(设置范围)。如果你有原始代码,显然要寻找调色板表的来源。

在绘图方面,您可以自己保留调色板,例如作为 256 个 CGColorRefs 的 C 样式数组,或者按照您的建议使用 CGColorSpaceCreateIndexed(忽略 Apple 的轻微文档错误;颜色表最多可以包含 256 个条目,而不是最多 255)可能带有位图上下文,只需将缓冲区传递给 CoreGraphics 并忘记它。

我希望重新映射将在 CPU 上执行,因此如果成本太高,请考虑使用 GL ES 2.x 并编写合适的像素着色器 - 您可以将实际图像上传为亮度(即单通道)纹理,加上一个 256x1 纹理,其中每个点的颜色是一个调色板条目,然后编写一个着色器,从第一个纹理中读取当前纹理坐标,并使用该值来索引第二个。

【讨论】:

以上是关于iOS 256 色 (VGA) 转 RGB的主要内容,如果未能解决你的问题,请参考以下文章

求单色位图,16色位图,24色位图和256色位图之间的区别?

求单色位图,16色位图,24色位图和256色位图之间的区别?

常说的256色指的是啥?

我的显卡只有32和16色。是否驱动版本低?

硕盟HDMI转VGA适配器|HDMI口连接VGA显示器转接头

mac mini 用hdmi转vga接口线连接显示器没有反应 自己的笔记本可以