游戏开发论坛

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

关于用 点精灵实现火焰效果的渲染状态问题

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-10-19 09:39:00 | 显示全部楼层 |阅读模式
书上的代码都是把状态设置成:
--------------------------------------------------------------------------
pDevice->SetRenderState( D3DRS_ZWRITEENABLE, false );     //禁用深度缓冲区操作
    pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );  //启用Alpha 混合
    pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );  //注意Alpha混合方式
    pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
----------------------------------------------------------------------------

但是这样就不能使用深度测试了,如果激活深度测试那渲染出来的粒子有没有火焰效果.
为什么?深度测试不就是测试遮挡的么,怎么还会更渲染出来的单个粒子效果有关系??



31

主题

249

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2007-10-19 10:52:00 | 显示全部楼层

Re:关于用 点精灵实现火焰效果的渲染状态问题

这样仍旧使用了深度测试,只不过禁止了Z缓冲的写入,因为火焰是半透明的,不能修改深度值。当然如果渲染好火焰后再渲染 不透明而且在火焰后面 的东西就可能出现错误。所以最好先渲染不透明的东西,然后渲染半透明的。同时不透明的东西需要从近往远排序,半透明的需要从远往近排序。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-19 13:01:00 | 显示全部楼层

Re:关于用 点精灵实现火焰效果的渲染状态问题

了解!谢谢ezia
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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