如何得知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内存的拷贝
总之性能是我最优先考虑的。
...全文
408 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代码实现)内容概要:本文围绕“基于对称的作物田三维点云植物检测研究”展开,提出了一种利用三维点云数据并通过几何对称性特征实现植物检测的技术方法。研究结合Matlab代码实现,通过对作物田间植物的三维点云数据进行预处理、特征提取与对称性分析,有效识别出植物个体,尤其适用于密集种植场景下的植物分割与定位。该方法充分利用植物在垂直方向上的对称结构特性,提升了复杂农田环境中植物检测的准确性与鲁棒性。文中还介绍了算法的具体实现流程,包括点云降采样、法向量估计、对称平面检测及聚类优化等关键步骤。; 适合人群:具备一定Matlab编程基础,从事农业信息化、计算机视觉、智能农机或遥感检测等相关领域的科研人员及研究生。; 使用场景及目标:①应用于精准农业中的植物生长监测、株距统计与表型分析;②为农业机器人自主导航与植保作业提供环境感知支持;③推动基于三维视觉的智能农业装备研发。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注点云处理流程与对称特征提取的实现细节,同时可根据实际农田数据调整参数以提升检测效果。
本系统采用Python编程语言中的Flask框架作为基础架构,实现了一个面向二手商品交易的网络平台。该平台具备完整的前端展示与后端管理功能,适合用作学术研究、课程作业或个人技术能力训练的实际案例。Flask作为一种简洁高效的Web开发框架,能够以模块化方式支持网站功能的快速搭建。在本系统中,Flask承担了核心服务端的角色,主要完成请求响应处理、数据运算及业务流程控制等任务。 开发工具选用PyCharm集成环境。这款由JetBrains推出的Python专用编辑器集成了智能代码提示、错误检测、程序调试与自动化测试等多种辅助功能,显著提升了软件编写与维护的效率。通过该环境,开发者可便捷地进行项目组织与问题排查。 数据存储部分采用MySQL关系型数据库管理系统,用于保存会员资料、产品信息及订单历史等内容。MySQL具备良好的稳定性和处理性能,常被各类网络服务所采用。在Flask体系内,一般会配合SQLAlchemy这一对象关系映射工具使用,使得开发者能够通过Python类对象直接管理数据实体,避免手动编写结构化查询语句。 缓存服务由Redis内存数据库提供支持。Redis是一种支持持久化存储的开放源代码内存键值存储系统,可作为高速缓存、临时数据库或消息代理使用。在本系统中,Redis可能用于暂存高频访问的商品内容、用户登录状态等动态信息,从而加快数据获取速度,降低主数据库的查询负载。 项目归档文件“Python_Flask_ershou-master”预计包含以下关键组成部分: 1. 应用主程序(app.py):包含Flask应用初始化代码及请求路径映射规则。 2. 数据模型定义(models.py):通过SQLAlchemy声明与数据库表对应的类结构。 3. 视图控制器(views.py):包含处理各类网络请求并生成回复的业务函数,涵盖账户管理、商品展示、订单处理等操作。 4. 页面模板目录(templates):存储用于动态生成网页的HTML模板文件。 5. 静态资源目录(static):存放层叠样式表、客户端脚本及图像等固定资源。 6. 依赖清单(requirements.txt):记录项目运行所需的所有第三方Python库及其版本号,便于环境重建。 7. 参数配置(config.py):集中设置数据库连接参数、缓存服务器地址等运行配置。 此外,项目还可能包含自动化测试用例、数据库结构迁移工具以及运行部署相关文档。通过构建此系统,开发者能够系统掌握Flask框架的实际运用,理解用户身份验证、访问控制、数据持久化、界面动态生成等网络应用关键技术,同时熟悉MySQL数据库运维与Redis缓存机制的应用方法。对于入门阶段的学习者而言,该系统可作为综合性的实践训练载体,有效促进Python网络编程技能的提升。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

8,324

社区成员

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

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