在运行时调度节点中的工作 ================================================= daBfg API 的总体目标是为你做尽可能多的模板工作。 它可以自动管理资源、将资源绑定到着色器变量等。 不过,在将传统代码移植到 daBfg 时,通常需要通过直接访问 FG 管理的纹理和缓冲区来自行完成部分工作。 在处理 CPU blob 时,从它们内部获取数据往往是首要问题。 为方便起见,可以使用 :func:`dabfg::VirtualResourceRequest::handle` 方法在声明回调中提取资源句柄。 然后应在执行回调中捕获该句柄并进行引用,以访问封装物理 GPU 资源的 ManagedResView 及其 D3DRESID(通过在引擎资源管理器中注册获得)。 .. code-block:: cpp auto handle = dabfg::register_node("node_name", DABFG_PP_NODE_SRC, [](dabfg::Registry registry) { auto texHndl = registry.read("my_tex") .texture() .atStage(dabfg::Stage::PS) .useAs(dabfg::Usage::SHADER_RESOURCE) .handle(); // 只有在指定阶段/用途后才能调用 return [texHndl]() { legacy_code(texHndl.view()); }; }); 下面是 VirtualResourceHandle 类的完整文档。 .. doxygenclass:: dabfg::VirtualResourceHandle :project: daBFG :members: