Godot 渲染设备 RDAttachmentFormat 深度指南:帧缓冲附件格式、采样数与用法标志全解析
文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载RDAttachmentFormat 是 Godot 引擎底层渲染接口 RenderingDevice 中描述帧缓冲附件的核心配置对象用于为离屏渲染、后处理、延迟光照与 VR 多视图渲染声明每个附件的像素格式、多重采样数量与允许的用途。本文以 Godot 官方文档 class_rdattachmentformat.rst 为主体结合仓库内 RenderingDevice 的枚举与帧缓冲方法定义逐项讲解 format、samples、usage_flags 三个属性及配套 API读完即可独立搭建一个可用的自定义帧缓冲渲染管线。一、RDAttachmentFormat 是什么RDAttachmentFormat 是一个继承自 RefCounted进而继承 Object的资源对象专门供 RenderingDevice 使用。它本身不承载图像数据只负责描述一个附件应该如何被创建和访问——包括数据的存储布局format、多重采样级别samples以及该附件可以被哪些操作使用usage_flags。在 Godot 的底层渲染流程中帧缓冲framebuffer由若干个附件attachment组成常见附件包括颜色附件color attachment保存渲染结果的颜色值深度附件depth attachment保存深度值用于遮挡剔除模板附件stencil attachment保存模板值用于局部遮罩输入/解析附件input / resolve attachment用于子通道间传递数据或 MSAA 解析。RDAttachmentFormat 就是这些附件的规格说明书。从源码结构看文档生成工具将 Godot 引擎源码doc/classes/RDAttachmentFormat.xml自动转换为 RST其内容完全对应引擎中RDAttachmentFormat类的公开属性与 setter/getter 方法因此本页的每一项声明都可在引擎公开 API 中直接调用。二、属性总览RDAttachmentFormat 仅包含三个属性官方文档给出的默认值与类型如下属性类型默认值说明formatRenderingDevice.DataFormat36附件的数据格式samplesRenderingDevice.TextureSamples0采样附件的样本数量usage_flagsint位标志0附件的用法标志决定允许对其执行的操作每个属性都提供成对的访问方法set_format()/get_format()、set_samples()/get_samples()、set_usage_flags()/get_usage_flags()。需要注意的是默认值36、0、0是未显式配置时的初始值在实际创建帧缓冲格式前通常需要根据渲染目标重新赋值。三、format决定附件的像素存储格式format属性的类型是 RenderingDevice.DataFormat这是 Godot 对 Vulkan 数据格式VkFormat的完整封装枚举值从0一直延伸到深度/模板格式。文档默认值36对应DATA_FORMAT_R8G8B8A8_UNORM每通道 8 位、红绿蓝透明四通道、归一化normalized的浮点数据格式值域为[0.0, 1.0]。这是最常见的颜色附件格式之一也是许多后处理帧缓冲的默认选择。3.1 常见的颜色附件格式围绕36周边R8G8B8A8 系列在 class_renderingdevice.rst 中定义完整枚举值数值含义DATA_FORMAT_R8G8B8A8_UNORM368 位/通道 RGBA归一化值域[0.0, 1.0]DATA_FORMAT_R8G8B8A8_SNORM378 位/通道有符号 RGBA归一化值域[-1.0, 1.0]DATA_FORMAT_R8G8B8A8_UINT408 位/通道无符号整数 RGBA值域[0, 255]DATA_FORMAT_R8G8B8A8_SINT418 位/通道有符号整数 RGBA值域[-127, 127]DATA_FORMAT_R8G8B8A8_SRGB428 位/通道 RGBA归一化并带非线性 sRGB 编码此外还有通道顺序相反的B8G8R8A8_*系列43–49以及兼容 CPU 端A8B8G8R8内存排布的DATA_FORMAT_A8B8G8R8_UNORM_PACK3250。选择格式时应遵循颜色线性、纹理 sRGB、HDR 用浮点的通用原则归一化格式节省带宽整数格式适合掩码/ID 缓冲浮点格式如DATA_FORMAT_R16G16B16A16_SFLOAT用于 HDR 中间结果。3.2 深度 / 模板附件格式深度与模板格式集中在枚举尾部class_renderingdevice.rst枚举值数值说明DATA_FORMAT_D16_UNORM12316 位归一化深度DATA_FORMAT_X8_D24_UNORM_PACK3212424 位归一化深度 8 位未用DATA_FORMAT_D32_SFLOAT12532 位浮点深度精度最高DATA_FORMAT_S8_UINT126纯 8 位模板DATA_FORMAT_D16_UNORM_S8_UINT12716 位深度 8 位模板DATA_FORMAT_D24_UNORM_S8_UINT12824 位深度 8 位模板桌面端常见折中DATA_FORMAT_D32_SFLOAT_S8_UINT12932 位浮点深度 8 位模板移动端常见在配置深度附件时应把format设为上述深度/模板格式之一同时把usage_flags中加上TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT二者缺一不可否则帧缓冲无法正确绑定该附件。四、samples多重采样与 MSAAsamples属性决定附件在渲染时的多重采样数量类型为 RenderingDevice.TextureSamples 枚举默认值0表示每个像素只采样 1 次即关闭 MSAA。官方文档对各取值有明确说明枚举值数值说明TEXTURE_SAMPLES_101 次采样最快但抗锯齿质量最低TEXTURE_SAMPLES_212 次采样TEXTURE_SAMPLES_424 次采样TEXTURE_SAMPLES_838 次采样移动 GPU含 Apple Silicon不支持TEXTURE_SAMPLES_16416 次采样移动 GPU 与许多桌面 GPU 不支持TEXTURE_SAMPLES_32532 次采样大多数 GPU 不支持TEXTURE_SAMPLES_64664 次采样最慢但抗锯齿质量最高大多数 GPU 不支持TEXTURE_SAMPLES_MAX7枚举大小占位不应直接使用从数值可看出该枚举是按采样次数而非二进制位来编码的2次对应14次对应2与 Vulkan 的VkSampleCountFlagBits并非一一映射Godot 会在内部做转换。选择建议颜色附件使用与目标分辨率、性能预算匹配的采样数移动端优先考虑TEXTURE_SAMPLES_1或TEXTURE_SAMPLES_4深度附件若要与颜色附件共同做 MSAA两者的samples必须一致否则渲染器会拒绝绑定高采样数会成倍增加显存带宽与存储占用TEXTURE_SAMPLES_8及以上务必先用texture_is_format_supported_for_usage()做硬件能力探测。五、usage_flags约束附件用途的位标志usage_flags是一个按位组合的整数对应 RenderingDevice.TextureUsageBits 位标志集合决定该附件能做什么。完整的标志位在 class_renderingdevice.rst 中定义标志数值含义TEXTURE_USAGE_SAMPLING_BIT1可在着色器中作为采样纹理使用TEXTURE_USAGE_COLOR_ATTACHMENT_BIT2可作帧缓冲的颜色附件TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT4可作帧缓冲的深度/模板附件TEXTURE_USAGE_STORAGE_BIT8可作 storage image计算着色器读写TEXTURE_USAGE_STORAGE_ATOMIC_BIT16可作支持原子操作的 storage imageTEXTURE_USAGE_CPU_READ_BIT32可被 CPU 通过texture_get_data()读回且始终驻留系统内存TEXTURE_USAGE_CAN_UPDATE_BIT64可通过texture_update()更新TEXTURE_USAGE_CAN_COPY_FROM_BIT128可作为texture_copy()的拷贝源TEXTURE_USAGE_CAN_COPY_TO_BIT256可作为texture_copy()的拷贝目标TEXTURE_USAGE_INPUT_ATTACHMENT_BIT512可作帧缓冲中的输入附件子通道数据传递TEXTURE_USAGE_DEPTH_RESOLVE_ATTACHMENT_BIT4096可作深度/模板解析附件MSAA 解析典型组合示例# 颜色附件既要写入、又要回读还要用于拷贝 usage_flags ( RenderingDevice.TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RenderingDevice.TEXTURE_USAGE_CPU_READ_BIT | RenderingDevice.TEXTURE_USAGE_CAN_COPY_FROM_BIT ) # 深度附件仅用于深度测试 usage_flags RenderingDevice.TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT标志声明得越充分驱动越容易提前优化内存布局但也要避免声明根本不会用到的能力如既不需要 CPU 回读却加上CPU_READ_BIT这会不必要地占用系统内存与带宽。声明顺序本身没有意义usage_flags是纯位掩码。六、把 RDAttachmentFormat 接入 RenderingDeviceRDAttachmentFormat 自身只描述属性真正让它生效的是 RenderingDevice 提供的帧缓冲格式创建方法framebuffer_format_create(attachments, view_count 1)以附件数组创建普通帧缓冲格式返回唯一格式 IDframebuffer_format_create_multipass(attachments, passes, view_count 1)以附件数组加 RDFramebufferPass 数组创建多子通道帧缓冲格式framebuffer_format_create_empty(samples 0)创建不绑定任何附件的空格式。其中view_count 2会启用多视图multiview用于 VR 渲染但需要硬件支持 Vulkan multiview 扩展见 framebuffer_format_create 说明。多子通道场景中RDFramebufferPass 通过color_attachments、depth_attachment、input_attachments、resolve_attachments、preserve_attachments等数组引用附件索引索引-1ATTACHMENT_UNUSED表示该通道不绑定对应附件。6.1 最小可运行示例var rd : RenderingDevice.new() # 1) 描述颜色附件RGBA8关闭 MSAA可写入、可采样、可拷贝 var color_att : RDAttachmentFormat.new() color_att.format RenderingDevice.DATA_FORMAT_R8G8B8A8_UNORM color_att.samples RenderingDevice.TEXTURE_SAMPLES_1 color_att.usage_flags ( RenderingDevice.TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RenderingDevice.TEXTURE_USAGE_SAMPLING_BIT | RenderingDevice.TEXTURE_USAGE_CAN_COPY_FROM_BIT ) # 2) 描述深度附件24 位深度 8 位模板 var depth_att : RDAttachmentFormat.new() depth_att.format RenderingDevice.DATA_FORMAT_D24_UNORM_S8_UINT depth_att.samples RenderingDevice.TEXTURE_SAMPLES_1 depth_att.usage_flags RenderingDevice.TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT # 3) 创建帧缓冲格式并取得唯一 ID var fmt_id : rd.framebuffer_format_create([color_att, depth_att])之后可继续创建对应纹理、调用framebuffer_create()得到帧缓冲 RID并基于该 RID 启动绘制。官方 draw_list_begin 文档给出了完整的绘制骨架var clear_colors PackedColorArray([Color(0, 0, 0, 0), Color(0, 0, 0, 0), Color(0, 0, 0, 0)]) var draw_list rd.draw_list_begin(framebuffers[i], RenderingDevice.CLEAR_COLOR_ALL, clear_colors) rd.draw_list_bind_render_pipeline(draw_list, raster_pipeline) rd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0) rd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size()) rd.draw_list_draw(draw_list, false, 1, slice_triangle_count[i] * 3) rd.draw_list_end()6.2 资源生命周期帧缓冲格式 ID 由framebuffer_format_create*系列返回格式 ID 本身无需显式释放而framebuffer_create()返回的 RID 必须在使用完毕后通过 free_rid() 手动释放否则会泄漏资源。文档同时指出framebuffer_create()创建的帧缓冲会在任一绑定纹理被释放时自动随之释放见 framebuffer_create 说明这为简单场景提供了自动清理的兜底路径。七、配套查询与硬件校验 APIRenderingDevice 还提供了与附件格式配套的查询/校验方法用于在运行时验证配置是否合法framebuffer_format_get_texture_samples(format, render_pass 0)查询给定格式 ID 使用的纹理采样数常用于把帧缓冲的格式回读出来核对 MSAA 配置framebuffer_get_format(framebuffer)由帧缓冲 RID 取回其格式 ID且文档保证相同格式会得到唯一 ID无需释放framebuffer_is_valid(framebuffer)判断帧缓冲 RID 是否仍然有效texture_is_format_supported_for_usage(format, usage_flags)在创建附件前探测数据格式 × 用法标志组合在当前设备上是否受支持是高采样数、深度/模板混合格式落地前的必做检查。八、最佳实践小结按用途裁剪 usage_flags只为实际会用到的能力声明标志避免过度声明导致显存与带宽浪费。颜色与深度附件保持 samples 一致开启 MSAA 时所有参与同一帧缓冲的附件采样数应统一并优先选择TEXTURE_SAMPLES_1/TEXTURE_SAMPLES_4以兼容移动端。深度格式先探测后使用D24_UNORM_S8_UINT与D32_SFLOAT_S8_UINT在不同平台的硬件支持不同创建前调用texture_is_format_supported_for_usage()确认。记住手动释放 RIDRenderingDevice 是低层接口不会自动做内存管理free_rid 说明用完framebuffer_create()返回的 RID 必须显式free_rid()。多子通道注意附件索引使用 framebuffer_format_create_multipass 时RDFramebufferPass 中的索引必须与附件数组顺序一致未使用的槽位置-1。RDAttachmentFormat 虽只有三个属性却是连接附件描述与帧缓冲格式之间的关键一环正确配置 format 决定像素布局samples 决定抗锯齿质量usage_flags 决定数据流向。配合 RenderingDevice 的帧缓冲创建与绘制 API即可在 Godot 中构建完整的自定义渲染管线包括后处理、延迟着色与 VR 多视图渲染。赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐Godot 渲染帧缓冲缓存 FramebufferCacheRD 完全指南RenderingDevice 多通道帧缓冲的复用与生命周期管理Godot 渲染帧缓冲缓存 FramebufferCacheRD 完全指南RenderingDevice 多通道帧缓冲的复用与生命周期管理 导读 Frameb文档教程游戏开发Godot 4 渲染缓冲区管理RenderSceneBuffersRD 类深度解析与 Compositor 实战指南Godot 4 渲染缓冲区管理RenderSceneBuffersRD 类深度解析与 Compositor 实战指南 RenderSceneBuffersRD文档教程游戏开发如何使用Sokol实现高性能帧缓冲跨平台渲染技术完全指南如何使用Sokol实现高性能帧缓冲跨平台渲染技术完全指南 Sokol是一个轻量级跨平台C语言头文件库提供了简洁而强大的API来处理帧缓冲等高级渲染技术。本文图形学3D渲染游戏开发上一篇英雄联盟智能助手Seraphine让每一场排位赛都占据先机的秘密武器下一篇HsMod55项功能全面解锁打造你的专属炉石传说体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenClaw Skill机制实战:用apple-notes技能让AI自动操作备忘录

OpenClaw Skill机制实战:用apple-notes技能让AI自动操作备忘录

最近我在折腾 OpenClaw 的时候,最让我眼前一亮的就是它的 Skill 机制。简单说,Skill 就像给 AI 助手装上的“专用工具包”,让它不只停留在聊天,而是能真正操作你本地的 App 和服务。而在我试过的所有技能里,apple-note…

2026/10/13 2:46:35 阅读更多 →
VSCode+arm-none-eabi+OpenOCD+MSYS搭建STM32开发环境

VSCode+arm-none-eabi+OpenOCD+MSYS搭建STM32开发环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:46:35 阅读更多 →
系统研读GitHub官方文档:从版本控制到协作自动化的完整实战笔记

系统研读GitHub官方文档:从版本控制到协作自动化的完整实战笔记

上个月我给自己定了一个任务:把 GitHub 官网的文档从头到尾系统过一遍,不是零散地查资料,而是像读书一样一章一章地看。这算是我对过去几年 GitHub 使用方式的一次纠偏。之前我属于"报错驱动型"学习者——遇到问题就搜某篇文章、复…

2026/10/13 2:46:35 阅读更多 →

最新新闻

WebSQL数据泄露防线:导出管控与数字水印溯源实践

WebSQL数据泄露防线:导出管控与数字水印溯源实践

一个周末的凌晨,我收到了一份从外部渠道流转回来的疑似泄露数据文件:一张几百行的客户信息表,字段完整,格式规整。按照惯例,首先要做来源定位——是开发环境泄露的?还是某个运营同学的本地文件流出去的&…

2026/10/13 7:22:01 阅读更多 →
Maven Archetype实战:构建可维护、可追溯的项目脚手架

Maven Archetype实战:构建可维护、可追溯的项目脚手架

1. 为什么“新建项目”不该从零敲代码——原型模板不是锦上添花,而是工程效率的分水岭我带过三届某高校软件工程方向的实训项目,每届都有至少12个小组。第一年,我让所有学生“从空文件夹开始搭建Spring Boot项目”:手动建src/main…

2026/10/13 7:22:01 阅读更多 →
强力卸载删注册表:彻底清理残留的完整指南与避坑实践

强力卸载删注册表:彻底清理残留的完整指南与避坑实践

简介:这份资源面向需要彻底卸载顽固软件、清理注册表残留的Windows用户与系统维护人员,核心是UninstallTool工具及其配套组件,用于解决常规卸载不干净、恶意软件隐藏痕迹、注册表键值被保护而难以删除等问题。压缩包共11个文件,约…

2026/10/13 7:22:01 阅读更多 →
C++Builder中Indy10网络通信组件实战:安装配置、TCP粘包处理与SSL避坑指南

C++Builder中Indy10网络通信组件实战:安装配置、TCP粘包处理与SSL避坑指南

简介:Indy10组件是一套面向CBuilder开发者的网络通信控件库,适用于CBuilder 4至6、2006至2010以及XE至XE8等多个版本,能够帮助开发者快速实现TCP/IP、HTTP、FTP等网络功能,适合需要跨版本维护或迁移网络应用的中高级程序员。资源包…

2026/10/13 7:22:01 阅读更多 →
Spring Boot接入Elasticsearch实战:部署、索引建模与查询优化

Spring Boot接入Elasticsearch实战:部署、索引建模与查询优化

很多人在Spring Boot项目里接入Elasticsearch时,最容易卡住的不是写代码,而是卡在“到底该怎么启动一个能用的ES环境”和“索引结构该怎么设计”这两步。网上教程要么只讲单机部署、要么只贴CRUD代码,真正把部署、索引设计、客户端选型、查询…

2026/10/13 7:22:01 阅读更多 →
Clover_v5.0_r5122_X64黑苹果引导实战:从U盘制作到多系统配置

Clover_v5.0_r5122_X64黑苹果引导实战:从U盘制作到多系统配置

简介:Clover_v5.0_r5122_X64 是一款面向黑果(Hackintosh)爱好者的四叶草启动引导程序,专为64位体系结构设计,核心作用是模拟苹果原生启动管理器,让非苹果硬件也能识别并加载 macOS 内核,尤其适配…

2026/10/13 7:21:01 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →