如何得知stretchrect完成?

Supper_Jerry 2010-12-11 05:52:16
我是dx的新手,最近碰到一个棘手的问题,特来求助,谢谢大家。
我从第三方得到一个d3d9的 surface, 这个surface无法共享,可是我需要共享,所以我先用这个surface得到device
用得到的device createsurface,这个surface是共享的,有sharedhandle
然后调用stretchrect把原始surface数据拷贝到新的surface中。
然后用得到的sharedhandle create一个新的surface(这个surface是用自己的device create的)
这个新的surface就可以用来做其他操作。
问题是stretchrect是异步的,我并不知道什么时候完成,所以我在代码中调用stretchrect的时候,紧接着调用
lockrect,确保数据拷贝完成,但是lockrect需要一个gpu内存到cpu内存的一个拷贝过程,速度很慢
所以我想问的问题是 有什么方法可以确保stretchrect完成吗?或者lockrect的时候我如何保证不发生gpu到cpu内存的拷贝
总之性能是我最优先考虑的。
...全文
414 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
butterflygogogo 2010-12-12
  • 打赏
  • 举报
回复
还真没感觉到是异步的。。
Supper_Jerry 2010-12-12
  • 打赏
  • 举报
回复
有人帮忙吗?
Supper_Jerry 2010-12-12
  • 打赏
  • 举报
回复
可能是我理解错了,很可能是因为共享造成的问题,
我再查看一下。
Supper_Jerry 2010-12-11
  • 打赏
  • 举报
回复
谢谢楼上,我用的是d3d9ex
我也不确信StretchRect是同步还是异步,在stretchrect之后如果我不调用lockrect的话
使用共享的handle建立的surface render出来什么都没有,
如果调用lockrect的话,就能render出结果,所以我推测stretchrect是异步的。
我的目的不是把数据拷贝到system memory,恰恰相反 我就是避免这种拷贝
尽量在gpu上完成需要的功能。
引力场变动源 2010-12-11
  • 打赏
  • 举报
回复
StretchRect是异步的吗?没听说它是异步的啊,只知道不能在BeginScene和EndScene之间调用……

另外如果来源surface是RenderTarget的话,还能使用GetRenderTargetData来复制数据。

另外d3d9是不支持surface共享的吧,从d3d9ex开始才支持。
基于永磁同步电机矢量控制simulink仿真内容概要:本文档围绕永磁同步电机(PMSM)的矢量控制展开,重点介绍了基于Simulink平台构建的永磁同步电机矢量控制仿真模型。内容涵盖多种控制策略,如FOC(磁场定向控制)、SVPWM(空间矢量脉宽调制)、VVVF(变压变频)以及无速度传感器控制等,并提供了包括死区补偿、负载转矩观测、全速域无位置传感器控制在内的多个仿真案例。文档强调通过仿真手段深入理解电机控制系统的动态响应、电流环与速度环调节、坐标变换(如Clark、Park变换)及PI控制器设计等关键技术环节。同时,配套提供完整的Matlab/Simulink仿真资源,便于读者学习与二次开发。 适合人群:具备自动控制理论、电机学及Matlab/Simulink基础的电气工程、自动化及相关专业的本科生、研究生及从事电机控制研发的工程师。 使用场景及目标:① 学习和掌握永磁同步电机矢量控制的基本原理与实现方法;② 利用Simulink进行电机控制系统的建模、仿真与算法验证;③ 为科研项目、课程设计或工程开发提供可复用的仿真模型基础。 阅读建议:建议结合文档提供的仿真模型逐步操作,重点关注控制框图搭建、参数整定与仿真结果分析,同时参考文中提及的扩展资源(如扩展状态观测器、模型预测控制等)以深化对先进控制策略的理解。

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧