游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3873|回复: 8

D3D反复更新纹理导致程序卡死,急求助!

[复制链接]

17

主题

42

帖子

48

积分

注册会员

Rank: 2

积分
48
QQ
发表于 2006-10-27 19:18:00 | 显示全部楼层 |阅读模式
原来使用LockRect、Unlock的方法很容易导致程序失去响应,后来听mazda兄的建议,改成了创建一个OffScreenPlainSurface,更新这个Surface,然后IDirect3DTexture9::GetSurfaceLevel后UpdateSurface的方式。症状有所缓解,但是仍然会有卡死的情况出现
我的纹理都比较大,1024x1024的,需要反复大量更新。曾经试过把纹理创建为动态纹理,无效

请教,还有什么稳定的更新纹理内容的方式?

注:AVG游戏,基本上每点一下鼠标就要更换人物OR背景,都是800x600以上大小的

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-10-28 11:16:00 | 显示全部楼层

Re:D3D反复更新纹理导致程序卡死,急求助!

你用若干个小纹理拼接试试看。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-10-28 11:16:00 | 显示全部楼层

Re:D3D反复更新纹理导致程序卡死,急求助!

还有就是为什么要拷贝呢,直接按照顺序渲染到屏幕上不就好了。

21

主题

120

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2006-10-28 16:45:00 | 显示全部楼层

Re:D3D反复更新纹理导致程序卡死,急求助!

为什么要lock,memcpy,unlock?直接rect draw primitive不就OK了吗?

17

主题

42

帖子

48

积分

注册会员

Rank: 2

积分
48
QQ
 楼主| 发表于 2006-10-28 21:38:00 | 显示全部楼层

Re:D3D反复更新纹理导致程序卡死,急求助!

我原来使用的是Lock,现在使用UpdateSurface()

使用纹理拼接的方法也想到过,但是因为纹理边缘无法准确对齐,得到的效果很糟糕。有没有什么可以准确对齐纹理的方法?

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2006-10-29 18:24:00 | 显示全部楼层

Re: Re:D3D反复更新纹理导致程序卡死,急求助!

horeaper: Re3D反复更新纹理导致程序卡死,急求助!

我原来使用的是Lock,现在使用UpdateSurface()

使用纹理拼接的方法也想到过,但是因为纹理边缘无法准确对齐,得到的效果很糟糕。有没有什么可以准确对齐纹理的方法?

如果要用UpdateSurface()来实现显示大纹理的功能还不如用DDraw呢,
纹理拼接是一个比较折衷的解决办法,
我在我的游戏引擎里对大文理的支持就是用拼接的,
似乎效果还不错的说~~
sf_2006102918240.jpg

17

主题

42

帖子

48

积分

注册会员

Rank: 2

积分
48
QQ
 楼主| 发表于 2006-10-30 16:48:00 | 显示全部楼层

Re:D3D反复更新纹理导致程序卡死,急求助!

因为要缩放,线性过滤导致纹理边缘对不齐,对于这种情况有什么好的解决方案吗?

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2015-5-19 22:37:38 | 显示全部楼层
亲  你的问题解决没有  求demo

5

主题

26

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2015-5-21 09:17:07 | 显示全部楼层
UpdateTexture()
用这个试试,这个函数好像内部自己带有脏矩形算法吧。
默认直接lock就会标出脏矩形,或用以面几个也可以显式的标出脏矩形
IDirect3DCubeTexture9::AddDirtyRect
IDirect3DTexture9::AddDirtyRect
IDirect3DVolumeTexture9::AddDirtyBox
所以直接lock就可以了,但lock时不能用D3DLOCK_NO_DIRTY_UPDATE与D3DLOCK_READONLY这两个flag,因为这两个flag不会记录脏矩形。
最后调用UpdateTexture(),就会把脏矩形的部分更新了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 20:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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