游戏开发论坛

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

D3D渲染字体(帧速率)后就没有雾化效果了

[复制链接]

9

主题

12

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2009-10-17 15:07:00 | 显示全部楼层 |阅读模式
//CFont的字体初始化
HRESULT hr = D3DXCreateFont(m_pDevice,nHeight,0,0,true,FALSE,
   DEFAULT_CHARSET,
   OUT_DEFAULT_PRECIS,
   DEFAULT_QUALITY,
   DEFAULT_PITCH|FF_DONTCARE,
   pName,
   &m_pFont
  );
//字体渲染
RECT destRect;
SetRect( &destRect,  x, y, 100, 100 );
m_pFont->DrawText( NULL, fps, -1, &destRect, DT_NOCLIP,
   D3DXCOLOR( 1.0f, 0.0f, 0.0f, 1.0f ) );
//雾的设置
ChangeRenderState( m_pDevice, D3DRS_FOGCOLOR,
D3DCOLOR_XRGB( 122, 122, 122 ) );
ChangeRenderState( m_pDevice, D3DRS_FOGTABLEMODE, D3DFOG_LINEAR );
ChangeRenderState( m_pDevice, D3DRS_FOGSTART, F2DW(fFogStart) );
ChangeRenderState( m_pDevice, D3DRS_FOGEND, F2D(fFogEnd) );

大概就是这个情况,奇怪的是一调用字体的DrawText方法
就没有雾化的效果了.求高手解答下.

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-10-17 22:50:00 | 显示全部楼层

Re:D3D渲染字体(帧速率)后就没有雾化效果了

m_pFont->DrawText会修改RenderState,关闭fog

9

主题

12

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2009-10-17 23:19:00 | 显示全部楼层

Re: D3D渲染字体(帧速率)后就没有雾化效果了

太感谢了
那该如何避免这种情况

但是在需要雾化的时候
加上了打开雾化的代码啊

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-10-18 12:41:00 | 显示全部楼层

Re:D3D渲染字体(帧速率)后就没有雾化效果了

你这个ChangeRenderState()估计自己cache了渲染状态,所以不知道device的状态已经改变了,它认为fog状态还没变
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-6 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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