如何得知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内存的拷贝
总之性能是我最优先考虑的。
...全文
423 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开始才支持。
内容概要:本文介绍了基于MATLAB实现的PSO-KNN多特征分类预测项目,通过将粒子群优化算法(PSO)与K近邻算法(KNN)相结合,解决传统KNN在高维多特征数据分类中面临的参数敏感、特征冗余、分类精度低等问题。项目采用PSO对KNN的关键参数(如K值和特征权重)进行全局寻优,结合数据预处理、特征加权选择、适应度评估与并行化机制,构建了一个高效、自适应的智能分类模型。文中详细阐述了模型架构的各个层级,包括数据预处理、特征加权、参数寻优、粒子群协作策略及分类输出,并提供了部分MATLAB代码示例,涵盖主成分分析、粒子初始化、速度更新、交叉验证与结果可视化等关键步骤。; 适合人群:具备一定机器学习基础和MATLAB编程能力,从事数据分析、智能算法研究或工程应用的研发人员、高校研究生及科研工作者,尤其适合关注智能优化与分类预测融合应用的人员。; 使用场景及目标:①应用于医学诊断、金融风控、工业监测等需要高精度多特征分类的领域;②解决KNN算法在高维数据中的参数选择与特征权重优化难题;③提升分类模型的自动化程度与泛化能力,减少人工调参成本;④为智能算法集成与实际工程落地提供可复用的技术框架。; 阅读建议:此资源以实际项目为导向,结合理论与代码实现,建议读者在理解算法原理的基础上,运行并调试所提供的MATLAB代码,重点关注PSO寻优过程与KNN分类的耦合机制,同时可根据自身数据特点调整适应度函数与参数范围,实现模型迁移与优化。

8,324

社区成员

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

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