游戏开发论坛

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

关于粒子系统的渲染

[复制链接]

23

主题

63

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-12-22 09:41:00 | 显示全部楼层 |阅读模式
我看到一个粒子系统的实现,在Init的时候先创建一张空白纹理
IDirect3DDevice9* m_pRrenderTarget;
pd3dDevice->(m_uWidth, m_uHeight, 1,
        D3DUSAGE_RENDERTARGET,
        D3DFMT_A8R8G8B8,
        D3DPOOL_DEFAULT,
        &m_pRenderTarget,
        NULL);
在Render的时候,先渲染到纹理中,再把纹理渲染到后台缓冲:
IDirect3DSurface9* pRTSurface = NULL;
m_pRenderTarget->GetSurfaceLevel(0, &rpRTSurface);
pd3dDevice->SetRenderTarget(0, pRTSurface);
... 渲染Praticles到m_pRenderTarget ...
// 恢复渲染目标
IDirect3DSurface9* pBackBuffer = NULL;
pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);
pd3dDevice->SetRenderTarget(0, pBackBuffer);

// 渲染画好的纹理
pd3dDevice->SetTexture(0, m_pRenderTarget);
...
我觉得从表面上看这种方式要在一frame中渲染两次,效率并不怎么样啊。但是有什么深层的含义呢,求教了。

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2006-12-22 10:08:00 | 显示全部楼层

Re:关于粒子系统的渲染

     代码是你写的还是你拷贝的啊?错的哦
     渲染到纹理可以在显卡中动态改变纹理,可以制造动态的环境映射(把游戏环境渲染到纹理,然后再渲染到能反射的物体表面

23

主题

63

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-12-22 10:35:00 | 显示全部楼层

Re:关于粒子系统的渲染

代码就不必字斟句酌了嘛.
我现在想应该是为了定位坐标才这样做的,要不直接渲染到后台缓冲比较难定位坐标

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-12-23 09:31:00 | 显示全部楼层

Re:关于粒子系统的渲染

同样的粒子效果如果需要绘制两个或更多,先渲染到纹理,然后可以直接使用纹理就可以创建多个同样的效果了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 03:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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