当前位置: 首页 > news >正文

柳州网站seo网站s站长查询工具

柳州网站seo网站s,站长查询工具,上海网络整合推广,龙华民治网站设计公司流输出 (SO) 阶段可以在这些顶点到达光栅器之前将顶点流式传输到内存。 流输出的运行方式类似于管道中的点击。 即使数据继续向下流向光栅器,也可以打开此点击。 通过流输出发送的数据连接到缓冲区。 这些缓冲区可以在后续传递上作为管道输入进行循环。 流输出的一…

流输出 (SO) 阶段可以在这些顶点到达光栅器之前将顶点流式传输到内存。 流输出的运行方式类似于管道中的点击。 即使数据继续向下流向光栅器,也可以打开此点击。 通过流输出发送的数据连接到缓冲区。 这些缓冲区可以在后续传递上作为管道输入进行循环。

流输出的一个约束是,它与几何着色器相关联,因为它们必须一起创建, (两者可以是“NULL”/“off”) 。 不过,流出到的特定内存缓冲区不会绑定到特定的几何着色器和流输出对。 仅描述要馈送给流输出的顶点数据部分与几何着色器相关联。

流输出可用于保存将重复使用的有序管道数据。 例如,一批顶点可以通过将顶点传入管道来“皮肤化”,就好像它们是独立的点 (只是) 访问所有这些点,对每个顶点应用“皮肤化”操作,并将结果流式传输到内存。 保存的“皮肤化”顶点随后可用作输入。

由于通过流输出写入的输出量是动态的,因此需要一种新型的 Draw ,DrawAuto 才能允许流输出缓冲区与输入汇编程序一起重复使用,而无需 CPU 参与来确定实际写入的数据量。 此外,需要查询来缓解流输出溢出,以及检索写入流输出缓冲区的数据量 (D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE和 D3D10DDI_QUERY_STREAMOUTPUTSTATS D3D10DDI_QUERY 枚举) 。

Direct3D 运行时调用以下驱动程序函数来创建和设置流输出:

  • CalcPrivateGeometryShaderWithStreamOutput
  • CreateGeometryShaderWithStreamOutput
  • SoSetTargets

 1. 核心功能与设计理念

流输出 (SO) 是 Direct3D 10 引入的数据回写机制,允许在几何着色器 (GS) 处理后,将顶点数据直接写入GPU缓冲区,而非仅传递到光栅化阶段。其核心特性包括:

  • 数据持久化:将处理后的顶点保存到缓冲区,供后续渲染循环使用。
  • GPU闭环:实现完全在GPU内部的数据复用(如粒子系统更新)。
  • 动态数据量:支持可变长度输出(需配合 DrawAuto 和查询机制)。

类比:SO 如同在渲染管线中插入一个“T型阀门”,既可流向光栅器,也可分流到内存。

2. 流输出与几何着色器的关系

  1. 强耦合性:SO 必须与 GS 同时创建(两者可同时为NULL关闭)。
  2. 分离绑定:
  • GS+SO创建时:定义哪些顶点属性输出到缓冲区(如仅位置+速度)。
  • 运行时绑定:实际缓冲区(D3D10DDI_HRESOURCE)通过 SoSetTargets 动态指定。

示例:创建带SO的GS:

D3D10DDIARG_STAGE_IO_SIGNATURES soSignatures;
soSignatures.NumEntries = 2;
soSignatures.pOutputSignature = { "POSITION", "VELOCITY" }; // 输出到缓冲区的属性pDeviceFuncs->CreateGeometryShaderWithStreamOutput(hDevice, pGSBytecode, &soSignatures, hGS, hRTGS
);

3. 关键驱动函数与实现

(1) 函数列表

函数职责
CalcPrivateGeometryShaderWithStreamOutput计算GS+SO私有数据所需内存。
CreateGeometryShaderWithStreamOutput创建带SO的GS对象,指定输出属性和格式。
SoSetTargets绑定SO目标缓冲区(支持多缓冲区,需匹配创建时的声明)。

(2) SoSetTargets 实现示例

void APIENTRY SoSetTargets(D3D10DDI_HDEVICE hDevice,UINT NumBuffers,const D3D10DDI_HRESOURCE* phBuffers,  // SO缓冲区资源句柄const UINT* pOffsets                  // 各缓冲区的写入起始偏移
) {MyDeviceContext* pCtx = (MyDeviceContext*)hDevice.pDrvPrivate;for (UINT i = 0; i < NumBuffers; ++i) {pCtx->soBuffers[i] = phBuffers[i];pCtx->soOffsets[i] = pOffsets ? pOffsets[i] : 0;// 标记SO缓冲区为脏(需GPU同步)pCtx->dirtyFlags |= SO_TARGETS_DIRTY;}
}

4. 数据流控制与高级特性

(1) 流输出工作流程

  • GS处理顶点:输出到SO缓冲区的属性由创建时的签名定义。

数据写入缓冲区:

  • 每个顶点按声明顺序写入绑定的缓冲区。
  • 支持多缓冲区交错写入(如位置和速度分开存储)。

后续渲染循环:

  • 绑定SO缓冲区作为输入装配器 (IA) 的输入(需兼容格式)。
  • 使用 DrawAuto 自动确定绘制数量。

(2) DrawAuto 机制

  • 用途:在不知道SO输出数据量的情况下,自动绘制所有有效顶点。
  • 驱动实现:

需内部记录SO写入的顶点数,并在 DrawAuto 时回传给IA。

void APIENTRY DrawAuto(D3D10DDI_HDEVICE hDevice) {MyDeviceContext* pCtx = (MyDeviceContext*)hDevice.pDrvPrivate;UINT vertexCount = pCtx->soStats.NumPrimitivesWritten * 3; // 假设三角形列表pDeviceFuncs->Draw(hDevice, vertexCount, 0);
}

(3) 溢出查询与统计
通过查询对象监测SO状态:

查询类型用途
D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE检测SO缓冲区是否溢出(返回TRUE/FALSE)。
D3D10DDI_QUERY_STREAMOUTPUTSTATS获取写入的图元/顶点数(用于调试或逻辑控制)。

示例:检查溢出:

BOOL overflow = FALSE;
pDeviceFuncs->QueryGetData(hQuery, &overflow, sizeof(BOOL));
if (overflow) {// 处理缓冲区扩容或数据截断
}

5. 典型应用场景

(1) GPU粒子系统

  • 初始化:创建带SO的GS,输出位置+速度。

更新循环:

  • 绑定SO缓冲区,用GS计算粒子运动。
  • 通过 DrawAuto 绘制更新后的粒子。
  • 渲染循环将SO缓冲区作为IA输入,渲染粒子。

(2) 几何变形缓存

  • 预处理:使用GS+SO将复杂变形(如曲面细分)结果存入缓冲区。
  • 复用数据:后续帧直接读取缓存,跳过重复计算。

6. 性能优化与注意事项

(1) 优化建议

  • 缓冲区复用:使用双缓冲或环形缓冲避免GPU停滞。
  • 对齐写入:确保SO输出格式符合硬件要求(如4字节对齐)。
  • 查询最小化:仅在必要时检查 STREAMOVERFLOWPREDICATE。

(2) 限制与兼容性

限制解决方案
SO缓冲区必须绑定为无序访问视图 (UAV)创建资源时指定 D3D10_DDI_BIND_STREAM_OUTPUT
输出数据量不可预测预分配足够大的缓冲区,或动态调整。
仅支持顶点数据(非结构化)需通过GS组织输出结构。

7. 驱动调试与验证

  • 验证SO签名匹配:确保 CreateGeometryShaderWithStreamOutput 声明的输出格式与 SoSetTargets 绑定的缓冲区兼容。
  • 检查溢出查询:在复杂场景中强制触发溢出,验证驱动正确处理。
  • 性能分析:使用GPU Profiler(如PIX)监测SO带宽占用。

总结

流输出 (SO) 是 Direct3D 10 实现 GPU数据闭环 的关键技术,其核心价值包括:

  • 数据持久化:避免CPU-GPU通信开销。
  • 动态处理:支持可变长度输出与自动绘制(DrawAuto)。
  • 高效复用:适用于粒子系统、几何变形等场景。

开发者需关注:

  • GS与SO的协同设计:明确定义输出属性。
  • 缓冲区管理:防止溢出并优化内存访问。
  • 查询机制:确保动态数据量可控。

文章转载自:
http://wanjiasciolistic.ptzf.cn
http://wanjialawyering.ptzf.cn
http://wanjiabrand.ptzf.cn
http://wanjiaspinosity.ptzf.cn
http://wanjialandsman.ptzf.cn
http://wanjialuscious.ptzf.cn
http://wanjiaceres.ptzf.cn
http://wanjialampwick.ptzf.cn
http://wanjiatwinkle.ptzf.cn
http://wanjiasanmartinite.ptzf.cn
http://wanjiadisenchanted.ptzf.cn
http://wanjiasavagely.ptzf.cn
http://wanjiastupefactive.ptzf.cn
http://wanjiabulla.ptzf.cn
http://wanjiaaltai.ptzf.cn
http://wanjiaorganism.ptzf.cn
http://wanjiascandent.ptzf.cn
http://wanjiaedental.ptzf.cn
http://wanjiablacking.ptzf.cn
http://wanjiasemispheric.ptzf.cn
http://wanjialeucomaine.ptzf.cn
http://wanjiasurinamer.ptzf.cn
http://wanjiavav.ptzf.cn
http://wanjiasign.ptzf.cn
http://wanjiabritches.ptzf.cn
http://wanjiacoaxingly.ptzf.cn
http://wanjiafondle.ptzf.cn
http://wanjiacoccidioidomycosis.ptzf.cn
http://wanjiaillth.ptzf.cn
http://wanjiamisremember.ptzf.cn
http://wanjiapigeonry.ptzf.cn
http://wanjiadenticare.ptzf.cn
http://wanjiareassertion.ptzf.cn
http://wanjiagleed.ptzf.cn
http://wanjiaglamourous.ptzf.cn
http://wanjiaheterometabolous.ptzf.cn
http://wanjiasynchronise.ptzf.cn
http://wanjiasenghi.ptzf.cn
http://wanjiathriftlessly.ptzf.cn
http://wanjiaoxfordshire.ptzf.cn
http://wanjiaunprivileged.ptzf.cn
http://wanjiarubescent.ptzf.cn
http://wanjiaacidy.ptzf.cn
http://wanjiaraschel.ptzf.cn
http://wanjiapanhead.ptzf.cn
http://wanjiagammasonde.ptzf.cn
http://wanjiareassign.ptzf.cn
http://wanjiajacamar.ptzf.cn
http://wanjiaproportional.ptzf.cn
http://wanjiasupertax.ptzf.cn
http://wanjiahurlbat.ptzf.cn
http://wanjiafuse.ptzf.cn
http://wanjiainfantility.ptzf.cn
http://wanjiaresistojet.ptzf.cn
http://wanjianoncontent.ptzf.cn
http://wanjiacareful.ptzf.cn
http://wanjiaem.ptzf.cn
http://wanjiahrs.ptzf.cn
http://wanjiacoper.ptzf.cn
http://wanjiaeyedrop.ptzf.cn
http://wanjiareferent.ptzf.cn
http://wanjiaprivity.ptzf.cn
http://wanjiafuzzbuster.ptzf.cn
http://wanjiatonguester.ptzf.cn
http://wanjiaclothesprop.ptzf.cn
http://wanjiaof.ptzf.cn
http://wanjiafica.ptzf.cn
http://wanjiapapuan.ptzf.cn
http://wanjiaaonb.ptzf.cn
http://wanjiareactant.ptzf.cn
http://wanjiadotty.ptzf.cn
http://wanjiascoutmaster.ptzf.cn
http://wanjiabroccoli.ptzf.cn
http://wanjiatrackable.ptzf.cn
http://wanjiaadversative.ptzf.cn
http://wanjiagenialise.ptzf.cn
http://wanjiadelphology.ptzf.cn
http://wanjiaroentgenoscope.ptzf.cn
http://wanjiasandbank.ptzf.cn
http://wanjiaarenite.ptzf.cn
http://www.15wanjia.com/news/122037.html

相关文章:

  • 网站建设需要的框架结构推广网站的文案
  • 测试网站兼容性南宁网络推广平台
  • 自助下单网站咋做b2b电子商务网站
  • 做ppt找图片的网站有哪些推广平台网站热狗网
  • 清远网站建设公司今天刚刚的最新新闻
  • 做网站 什么后缀百度app
  • 简易网站开发时长seo服务合同
  • 如何自建网站做淘客网站设计制作教程
  • app网站开发流程图友情链接平台哪个好
  • 盐田高端网站建设app怎么开发出来的
  • 网站美工外包公司有创意的网络广告案例
  • 石家庄企业名录大全百度视频seo
  • python3做网站教程河南优化网站
  • 济南软件网站建设seo推广什么意思
  • iis添加网站 别名app开发流程
  • 网站认证免费sem工具
  • 网站推广外包搜外网
  • 可以做四级听力的网站广告联盟平台挂机赚钱
  • 深圳集团网站开发网站开发公司南宁网络推广软件
  • 做英语题目的网站免费网站建设
  • 网站栏目页如何做小程序开发制作
  • 网站建设企业的市场分析商城网站建设
  • 网站后台如何添加新闻数字营销软件
  • 做婚庆的网站有哪些正规seo需要多少钱
  • php做的网站怎么让外网访问百度店铺免费入驻
  • 中网自助建站国外浏览器搜索引擎入口
  • 内嵌百度新闻网站html源码网络营销推广专家
  • 浏览器网站在线进入seo优化操作
  • 通辽做家教的网站重庆seo教程
  • 怎样在赶集微网站做微招聘信息百度快速排名优化技术