游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3615|回复: 2

D3DRS_SPECULARENABLE 的使用?

[复制链接]

35

主题

59

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2008-1-6 13:48:00 | 显示全部楼层 |阅读模式
我需要用到镜面光,但是是要跟纹理混合的
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_SPECULAR );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TEXTURE );

但是好像只要开了D3DRS_SPECULARENABLE。就会有镜面光的渲染,不管我在TextureStage里设置了没有。。

35

主题

59

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2008-1-6 14:19:00 | 显示全部楼层

Re:D3DRS_SPECULARENABLE 的使用?

我的意思就是我处理纹理操作的时候要用到镜面光,但是不想真的有镜面光渲出来,大家帮忙啊

3

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2008-1-8 12:59:00 | 显示全部楼层

Re: D3DRS_SPECULARENABLE 的使用?

specular的工作方式是这样的:
  在所有颜色混合,就是texturestate处理全部结束后,D3D会把最后得到的结果强行加上specular。所以只要你开了高光,无论你texturestate里面有没有调用到specular,最后都会有高光出现。
  
  在我看来,高光贴图是最近几年才有的,当年设计D3D流水线的人没考虑到这个问题,才对高光进行强行处理,这样可以节省一步texturestate。不过现在却是使得高光贴图在固定渲染流水线工作起来非常麻烦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 22:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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