佚名通过本文主要向大家介绍了3dmax渲染法线贴图,3dmax渲染法线,法线渲染,渲染法线贴图,max渲染法线等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: DX9用渲染管线如何实现法线贴图效果?
描述:
//light是单位化的光源向量
DWORD F=Vector2ARGB(&light,0.0f);
//pD是D3D的设备指针,这句将光源法线参数输入
pD->SetRenderState(D3DRS_TEXTUREFACTOR,F);
//设置原纹理,如上面的球,如有需要可以贴上纹理样式
pD->SetTexture(1,TEXTURE);
//使用上面生成好的法线图
pD->SetTexture(0,normalmap);
//设置“来源1”为法线图
pD->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
//将“来源1”(法线图)与“来源2”(光源法线)进行点乘
pD->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_DOTPRODUCT3);
//设置“来源2”为光线的光源法线参数
pD->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_TFACTOR);
//这步和下面几步将图片的原纹理加上
pD->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pD->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);
pD->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);
但是这段代码我试了,效果不对。
纠结中。..
解决方案1:
描述:
本帖最后由 yrisxfyh 于 2015-11-20 18:12:32 编辑
网上只找到下面这一段://light是单位化的光源向量
DWORD F=Vector2ARGB(&light,0.0f);
//pD是D3D的设备指针,这句将光源法线参数输入
pD->SetRenderState(D3DRS_TEXTUREFACTOR,F);
//设置原纹理,如上面的球,如有需要可以贴上纹理样式
pD->SetTexture(1,TEXTURE);
//使用上面生成好的法线图
pD->SetTexture(0,normalmap);
//设置“来源1”为法线图
pD->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
//将“来源1”(法线图)与“来源2”(光源法线)进行点乘
pD->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_DOTPRODUCT3);
//设置“来源2”为光线的光源法线参数
pD->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_TFACTOR);
//这步和下面几步将图片的原纹理加上
pD->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pD->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);
pD->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);
但是这段代码我试了,效果不对。
纠结中。..
解决方案1:
可编程渲染管线已经出来10年了(DX9.0后续版本支持较好),市面上资料也多,掌握起来不算难。