|
|
发表于 2008-2-21 15:09:00
|
显示全部楼层
Re: 关于DX8.1到DX9更新的几个问题
问:
Begin、End不是ID3DFont的成员,现在是什么?
答:
ID3DXFont *pFont;
D3DXCreateFontIndirect(_dev, &desc, &pFont);
不用begin(), end(), 直接DrawText(), 参见sdk
问:
CreateImageSurface不是IDirect3DDevice9的成员,应该用什么代替这个函数
答:
CreateOffscreenPlainSurface
问:
还有DeleteVertexShader,DX9里应该用什么(我把里面所有的SetVertexShader改成了SetFVF)
答:
release 它的 handle
问:
D3DXCreateFontIndirect这个函数应该怎么改第二个参数?(以前是LOGFONT,现在是FONT_DES)
答:
D3DXFONT_DESC desc;
ZeroMemory(&desc , sizeof(desc));
desc.CharSet = DEFAULT_CHARSET;
desc.Height = 12;// -MulDiv( 12, (INT)(GetDeviceCaps( 0, LOGPIXELSY)), 72 );
strcpy(desc.FaceName , "Tahoma");
问:
D3DTSS_ADDESSU这些已经变成了D3DSAM_ADDESSU了,使用SetSamplerState函数来设置,是否将以前的SetTextureStageStateState全部改成SetSamplerState语句?
答:
SetTextureStageStateState函数只有Sampler功能的部份分离出来成SetSamplerState
问:
D3DRS_ZBIAS在DX9中是否替换为D3DRS_DEPTHBIAS?
答:
是的
问:
/******************************************************************************
pDevice->SetIndices(m_IB.GetIndexBuffer(),m_VB.GetStartIndex());
pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,4,m_IB.GetStartIndex(),2);
/******************************************************************************
pDevice->SetIndices(m_IB.GetIndexBuffer()/*,m_VB.GetStartIndex()*/);
pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,4,m_IB.GetStartIndex(),2);
上面那是以前的,下面这个是现在的,不知道改对没有.....
答:
是对的.
它的参数意义如下解释:
DrawIndexedPrimitive(Type, BaseVertexIndex, MinIndex, numVertex, StartIndex, PrimitiveCount);
参数1:Primitive类型, 如: D3DPT_TRIANGLELIST
参数2: VB缓冲的有效偏移值(即此值后的缓冲是本次绘制的有效VB)
参数3: 最小顶点索引(从有效VB中算)
说明:
参数3比较容易混乱,其实它的意思是,本次绘制中的所有3角形所索引到的顶点,
在有效VB中偏移最小的哪一个偏移.
The first vertex is located at index: BaseVertexIndex + MinIndex
参数4: 要渲染的顶点个数(即有效VB中所用到的最小偏移的顶点到最大偏移的顶点之间所包含的顶点个数)
参数5: IB缓冲的有效偏移值(IB中从哪个索引开始有效)
参数6: Primitive个数
|
|