游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3850|回复: 9

想复制一个surface,可是都很慢,有没有快速算法

[复制链接]

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2003-11-3 18:33:00 | 显示全部楼层 |阅读模式
用DX9的函数就不用说了,我还用MMX指令编了COPY子程序,速度也很慢,只比DX9的速度快2-4帧,要复制的只是一个256*256的surface,有谁知道什么办法更快?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-11-3 21:28:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

你的surface是存放在哪里呢? 内存?显存?

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-3 23:20:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

源surface是d3dusage_rendertarget,应该是在显存里
目标surface是texture,要直接用于贴图的,应该也是在显存里

我的目的是将特定的内容render到源surface里,然后再经过图象处理,送到一个texture里

但过程太慢,达不到要求,目前只有40fps,还有很多东西没渲染,这个速度太慢了

显存到显存难道真的很慢?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-11-4 00:25:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

显存->显存的操作最好直接用DX的操作,而不要用我们手动编写的代码来进行,用DX的操作,比如:Blt,一般都能够调用硬体的加速功能来进行显存COPY。

你的问题应该是在于自己的Copy代码,显存数据->CPU->显存操作很慢。

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-4 00:36:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

updatesurface和getrenderdata不支持这种操作,D3DXLoadSurfaceFromSurface更慢,我写的还快一点点,很简单的汇编代码
8字节一复制,循环完成

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-4 00:39:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

我想过,用dx的函数无法完成需要的功能,因为中间还需要对源surface中的数据进行处理,目的surface中的数据也需要保留,现在光拷贝都这么慢,真不好想象后面的处理会是怎样一种情况

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-4 00:50:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

另外,还想问一下,如果只对源surface中的有效数据(我只在其中渲染了一些线条)进行判断处理,这个判断只读过程是不是会较快,如果这样,我只需要将有效数据处理后复制到目的surface

为什么设置为d3dusage_rendertarget的表面或贴图不能锁定表面?是不是MS故意搞的还是硬件原因或驱动的原因?

问题太多了,怎么这里没人问?难道大家都知道?

太急了,话语较硬,见谅

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-11-4 01:28:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

先回答你的这个问题“问题太多了,怎么这里没人问?难道大家都知道?”

你的问题不是简单的问题,至少我感觉还是有点难度,通过D3D设备渲染,直至surface的操作,相信很多来这边交流的朋友都无法回答你的这些问题,相信大家,不是不肯跟你交流,而是自身没有这方面了解,也很难进入话题。

初步看了一下你的问题,说实话,我也很难回答的上。

感觉你的程式速度限制应该在存储器带宽上面,如果能减少带宽的使用量,应该可以加快你程式的执行速度。你所说的判断surface源有效区域就是不错的方法。

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-4 08:42:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

谢谢,今天就用只取有效数据的办法试一试

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2003-11-4 12:31:00 | 显示全部楼层

Re:想复制一个surface,可是都很慢,有没有快速算法

也不行,看来显存到显存还真不能用自己的东西代,只能另想途径了

只是不能精确控制了,也许这就是实时渲染和静态渲染的区别了

唉,只能以空间换时间了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-23 23:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表