游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4799|回复: 6

帮忙看看 CreateTexture()中的D3DFORMAT参数问题

[复制链接]

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2009-12-29 20:03:00 | 显示全部楼层 |阅读模式
使用Render To Texture 做动感模糊的时候, 纹理非正常显示

在不使用多重采样的情况下, 纹理创建正常,显示正常,
使用多重采样,创建正常, 显示不正常, 并且报错
Direct3D9: (ERROR) :MultiSampleType between DepthStencil Buffer and RenderTarget must match.

在创建D3D设备时, 深度缓冲格式D3DFMT_D24S8和后台缓冲格式D3DFMT_X8R8G8B8都已经经过多重采样X4测试,
才启用多重采样X4的

在创建纹理时, HRESULT CreateTexture(...
     D3DFORMAT Format,...);
D3DFORMAT 参数, 我设置与后台缓冲区一样的格式(D3DFMT_X8R8G8B8),

多重采样不用不行啊...
大家帮忙看看...

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
 楼主| 发表于 2009-12-29 20:17:00 | 显示全部楼层

Re: 帮忙看看 CreateTexture()中的D3DFORMAT参数问题

帮忙看看有没有问题
多重采样测试
        if(SUCCEEDED(m_pd3d9->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
                D3DFMT_X8R8G8B8, g_bWindowed, D3DMULTISAMPLE_4_SAMPLES, NULL)))
        {
                 if(SUCCEEDED(m_pd3d9->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
                        D3DFMT_D24S8, g_bWindowed, D3DMULTISAMPLE_4_SAMPLES, NULL)))
                {
                        return D3DMULTISAMPLE_4_SAMPLES;
                 }
        }

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
 楼主| 发表于 2009-12-29 20:18:00 | 显示全部楼层

Re: 帮忙看看 CreateTexture()中的D3DFORMAT参数问题

创建纹理

        g_pD3DDevice->CreateTexture(g_nWndWidth, g_nWndHeight, 1, D3DUSAGE_RENDERTARGET,
                        D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &m_pRenderTexture, NULL);

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
 楼主| 发表于 2009-12-29 22:20:00 | 显示全部楼层

Re:帮忙看看 CreateTexture()中的D3DFORMAT参数问题

Retail模式下 到是正常的...
debug模式下 不正常...

14

主题

345

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2009-12-29 22:36:00 | 显示全部楼层

Re:帮忙看看 CreateTexture()中的D3DFORMAT参数问题

反锯齿只能用在surface上, 不能用在texture上

14

主题

345

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2009-12-29 22:41:00 | 显示全部楼层

Re:帮忙看看 CreateTexture()中的D3DFORMAT参数问题

我总结了一些RenderTarget的注意事项, 你可以参考一下, 说不定有用:
http://blog.csdn.net/xoyojank/archive/2009/02/11/3876843.aspx

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
 楼主| 发表于 2009-12-30 12:05:00 | 显示全部楼层

Re:帮忙看看 CreateTexture()中的D3DFORMAT参数问题

真是~非常好的总结! xoyojank 谢谢~

6. Usage为D3DUSAGE_RENDERTARGET的Texture不能进行反锯齿, 而且Pool必须为D3DPOOL_DEFAULT. 如果想利用RenderTarget做为纹理又想反锯齿, 可以先把场景渲染到一个CreateRenderTarget创建的Surface(或BackBuffer)上, 再用IDirect3DDevice9::StretchRect拷贝到纹理上

我使用前者的缘故~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-16 04:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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