surface to texture

cccccui 2011-05-19 11:45:27
我想把 屏幕截取出来,然后用directx 渲染一下。

代码大致如下
surface = scrDevice.CreateOffscreenPlainSurface(scrDevice.DisplayMode.Width ,scrDevice.DisplayMode.Height , Format.A8R8G8B8, Pool.SystemMemory );
scrDevice.GetFrontBufferData(0, surface);
GraphicsStream gStream = SurfaceLoader.SaveToStream(ImageFileFormat.Jpg, surface, new Rectangle(0, 0, 1024, 768));
gStream.Seek(0, System.IO.SeekOrigin.End);
texture = TextureLoader.FromStream(device, gStream);
(c#代码, 大概思路就是
通过 CreateOffscreenPlainSurface(),GetFrontBufferData()把桌面放到 surface里,然后把surface转换成stream,再把stream转换成texture) 这样的问题 是 surface,转换[来源:GameRes.com]成stream,在转换成texture,消耗的时间太长。有没有其他什么办法啊?
查了资料,貌似 surface ->GetContainer()可以得到texture,但貌似surface如果是通过GetFrontBufferData()方法生成的,没办法得到他的texture, 有没有其他什么办法,可以把桌面截取出来 然后放到texture里渲染啊?



(大家看看我的结贴率,就该我是不平凡的人,分数多多啊。。)

...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanlonglong 2011-05-20
  • 打赏
  • 举报
回复
结贴率原来可以超过100%!!!
蚂蚁上树 2011-05-20
  • 打赏
  • 举报
回复
cccccui 2011-05-20
  • 打赏
  • 举报
回复
顶上去,结贴率高高啊。
gamemagic 2011-05-20
  • 打赏
  • 举报
回复
只有不和谐的人,结帖率才能够超过100
chifagao 2011-05-20
  • 打赏
  • 举报
回复
DDraw 里面 图片就是 表面 所以 texture也是表面。

锁定 获得指针 图片信息 就可以 随便操作了。

网上应该有代码


cccccui 2011-05-20
  • 打赏
  • 举报
回复
csdn太球了。我原来结贴率一直都是 102.5%的。昨天发这个帖子,今天上午看到还是102.5%的。

下午居然帮我改了。汗死了。
是不是手动改数据库的啊????



另我的问题还是不会啊。哭
hellolongee 2011-05-20
  • 打赏
  • 举报
回复
没用过C#,我说下c++环境下怎么将surface复制到texture中,希望对你有用。
d3d中,texture的内容是由若干的surface来构成的。
那么可通过以下的方法将src surface复制到dst texture中。
IDirect3DSurface* srcSur, *dstSur;
IDirect3DTexture* dstTex;

dstTex->GetSurfaceLevel(0, &dstSur);

现在就得到了源surface和目标surface两个指针了,然后通过LockRect的方法获取
数据,利用memcpy将src surface拷贝到dst surfcae中。

srcSur->LockRect()
dstSur->LockRect()
/*
typedef struct D3DLOCKED_RECT {
INT Pitch;
void *pBits;
} D3DLOCKED_RECT, *LPD3DLOCKED_RECT;
*/
void* srcBits = ...
void* dstBits = ...
for(int y=0;y<height;y++)
{
memcpy(dstBits, srcBits, sz);
dstBits += dstPitchs;
srcBits += srcPitchs;
}


dstSur->UnlockRect()
srcSur->UnlockRect


cccccui 2011-05-20
  • 打赏
  • 举报
回复
这个速度太慢了 。。 i3,310M的配置 都 将近300毫秒的,有没有其他解决方法啊
Sou2012 2011-05-20
  • 打赏
  • 举报
回复
一般都是这样做的。你可以把颜色位数降低点,速度会快一点。
cccccui 2011-05-20
  • 打赏
  • 举报
回复
帮我 回答回答啊。。。

高结贴率啊

8,305

社区成员

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

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