纹理的解剖:一个像素在显存里到底放在哪里
来源:agentlien.github.io — agentlien.github.io · 23 分 · by Agentlien
📋 概述
作者为 505 Games 把自研 PC 引擎移植到主机时,必须写代码在不同平台之间转换纹理数据,这才意识到纹理内存布局远比想象复杂。文章用一张 1024×1024 的 BC7 RGBA 木纹贴图做例子,逐层拆解块压缩、纹素顺序、mip 与纹理分块:各平台在这些层级上用的是同一套构件,但构件在内存里的排列顺序不同,于是「跨平台转换纹理」本质上就是为每个构件算出转换后的期望地址。
🔑 核心要点
- 跨平台转换纹理,本质上是计算每个构件的内存地址。
- 除了块压缩、mip 与分块,还有 pitch、depth 与纹理数组下标等偏移。
- 直接按颜色流解释,会得到一张完全错乱的噪声图。
- 文章以 DirectX 12 的视角说明平台差异。
- 作者说写代码时不断撞上打破隐含假设的特例纹理。
💡 金句
一个看起来只是搬运像素的项目,最后变成了一场关于内存地址计算的硬仗。
👍 0
👎 0
← 返回 Hacker News 首页