游戏开发论坛

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

D3D大虾们!请教D3D速度优化问题!

[复制链接]

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
发表于 2008-1-14 17:47:00 | 显示全部楼层 |阅读模式
我写了一个D3D程序,采用Effect文件,做了一些特殊效果的处理。

现在我把这个D3D程序 嫁接 到DirectShow的RenderFilter里面,把解码后的图片以纹理形式输入。每解码完一张图片更新一次纹理。然后用effect文件进行特殊效果处理。
现在能进行播放,可是执行速度很慢。

请教一下大家,一般这种做法应该怎么优化的??特别是有经验的大虾请指点一下!!谢谢~~~

本人刚学不到1个月,很多基础不是很了解。

解码的速度是足够快的,就是不知道我这样的嫁接过程有没有问题?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2008-1-14 20:25:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

纹理是如何创建的?

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-15 09:16:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

纹理是我自定义了一个1920X1080的位图,然后将解码的图片写到位图数据区,然后用D3DXCreateTextureFromFileInMemory()提交纹理。

大概过程就是:
1、RenderFilter接收到解码后的BMP sample。
2、把BMP sample里面的数据拷贝到 自己定义的位图数据区。
3、D3DXCreateTextureFromFileInMemory( g_pd3dDevice, g_pBMP, bihFile.bfSize, &quadTexture0)定义该位图。
4、g_pEffect->SetTexture(Tex0Handle, quadTexture0);
5、g_pEffect-&gtass(0);
6、g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2008-1-15 11:39:00 | 显示全部楼层

Re: D3D大虾们!请教D3D速度优化问题!

你每帧都创建一次纹理不慢才怪了 [em10]
纹理只要创建一次,直接解码到纹理上画出来就好了,
我以前也写过一个,速度还不错http://groups.google.com/group/jianguhan/browse_frm/thread/6ff9eeaa41833e39#1aafe2e9b4646841

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-15 13:43:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

谢谢指导~~我下来参考一下!

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-15 13:58:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

。。。只有一个最终程序啊。。。
能提示一下用什么函数什么的吗??

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2008-1-15 15:14:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

去看DXSDK\Samples\C++\DirectShow\BaseClasses下的代码就明白了,很简单的

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-15 15:48:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

BsaeClass下面是DirectShow全部的基类源码。。。。
晕头转向了。。。。。
看来我非得走N多弯路不可。。。

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-15 16:38:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

在网上又瞎逛了一下,不知道是不是应该象下面这样:
DrawProceduralTexture(pTex)
{
    // pTex should not be very small because overhead of
    //   calling driver every D3DLOCK_DISCARD will not
    //   justify the performance gain. Experimentation is encouraged.
    pTex->Lock(D3DLOCK_DISCARD);
    <Overwrite *entire* texture>
    pTex->Unlock();
    pDev->SetTexture();
    pDev->DrawPrimitive();
}

10

主题

36

帖子

42

积分

注册会员

Rank: 2

积分
42
 楼主| 发表于 2008-1-18 09:27:00 | 显示全部楼层

Re:D3D大虾们!请教D3D速度优化问题!

any body help??
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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