游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2061|回复: 3

将directdraw的表面全放在内存里,那么

[复制链接]

42

主题

115

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2009-1-19 10:04:00 | 显示全部楼层 |阅读模式
blt的时候是不是全由CPU来完成的?
类似
mov eax,[XXX]
mov [YYY],eax

还有个问题,除了DIRECT3DDEVICE的CreateTexture和辅助库的D3DXCreateTexture之外还有什么方法能创建texture呢?因为我直接用CreateTexture在ATI显卡上运行不了,而用D3DXCreateTexture没问题,所以才问问

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-1-19 12:18:00 | 显示全部楼层

Re: 将directdraw的表面全放在内存里,那么

lizelglg: 将directdraw的表面全放在内存里,那么

blt的时候是不是全由CPU来完成的?
类似
mov eax,[XXX]
mov [YYY],eax

还有个问题,除了DIRECT3DDEVI...


如果你将ddraw的表面放在内存里,那说明你根本不需要用ddraw。
创建的纹理不能用,说明你创建的格式显卡不支持或者创建参数错误。d3dx的函数比较健壮,可以自动做出格式变换和调整。

42

主题

115

帖子

141

积分

注册会员

Rank: 2

积分
141
 楼主| 发表于 2009-1-19 20:41:00 | 显示全部楼层

Re: 将directdraw的表面全放在内存里,那么

我现在的想法就是在内存里创建一个texture,然后图片通通256色,也就是前面的调色盘加后面的索引,然后用CPU向那个texture里面拷贝像素(调色板基地址+索引左移2位),主要是节约内存,而且改变颜色也方便,但是每个像素拷贝却要比正常的存储方式多一次 mov reg,mem,10个时钟周期,看起来很让人心疼,而且加减混合用mmx也只能4像素4像素地加,也许就透明速度稍微将得少点……

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-1-21 17:28:00 | 显示全部楼层

Re:将directdraw的表面全放在内存里,那么

你要用软件实现,就不要考虑dx。硬件加速和软件时限的优化方式是有区别的,且硬件实现比软件实现快n个数量级。

另外,现在的硬件大多不支持调色板纹理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 11:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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