游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2165|回复: 1

实现四叉树时动态顶点和缓存的渲染的问题,画面闪烁,

[复制链接]

9

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2011-8-24 17:23:00 | 显示全部楼层 |阅读模式
我一开始创建了两个动态大的的Vertexbuffer和Indexbuffer,然后在渲染的时候锁和解锁,最后渲染,但是结果就是画面闪烁,三角形很乱。我用静态VB和IB时,虽然帧数低,但是画面算正常的。请大家帮忙:
下面是渲染代码:
STERRAIN_VERTEX * ptr = NULL;
        WORD * idxptr = NULL;
        ptr = (STERRAIN_VERTEX *)m_VB->Lock(m_dwLockVertexNum,m_fan.m_iVertexNum,0);
        idxptr = (WORD *)m_IB->Lock(m_dwLockIndexNum,m_fan.m_iIndexNum,0);
        memcpy((void*)ptr,m_fan.m_vertices,sizeof(STERRAIN_VERTEX)*m_fan.m_iVertexNum);
        memcpy((void*)idxptr,m_fan.m_wIndices,sizeof(WORD)*m_fan.m_iIndexNum);
        m_VB->UnLock();
        m_IB->UnLock();


        m_pD3DDevice->SetFVF(TERRAIN_VERTEX_FVF);
        m_pD3DDevice->SetIndices(m_IB->GetIndexBuffer());
        m_pD3DDevice->SetStreamSource(0,m_VB->GetVertexBuffer(),m_dwLockVertexNum,sizeof(STERRAIN_VERTEX));
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,m_dwLockVertexNum,0,m_fan.m_iVertexNum,m_dwLockIndexNum,m_fan.m_iIndexNum/3);
/////////////////////////////
动态IndexBuffer的锁定函数
WORD *TBDynamicIB:ock(DWORD& dwOffset,DWORD dwIndicesNum,DWORD dwFlag/* =0*/)
{
        WORD * pIndices;
        if(m_dwNextLockOffset+dwIndicesNum <= m_dwIndicesNum)
        {
                dwFlag |= D3DLOCK_NOOVERWRITE;
                dwOffset = m_dwNextLockOffset;
                m_dwNextLockOffset += dwIndicesNum;
        }
        else
        {
                dwFlag |= D3DLOCK_DISCARD;
                dwOffset = 0;
                m_dwNextLockOffset = dwIndicesNum;
        }
        if(FAILED(m_pIB->Lock(dwOffset*sizeof(WORD),dwIndicesNum*sizeof(DWORD),(void**)&pIndices,dwFlag)))
        {
                return NULL;
        }
        return pIndices;
}

9

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2011-8-24 22:05:00 | 显示全部楼层

Re:实现四叉树时动态顶点和缓存的渲染的问题,画面闪烁

问题已解决,应该是下面这样子,还改了其他一些地方。
m_pD3DDevice->SetStreamSource(0,m_VB->GetVertexBuffer(),0,sizeof(STERRAIN_VERTEX));
PS:
我看到别人的方法是建立一个大顶点缓存,而rendernode的时候只需要Lock索引就行了,不需要Lock顶点,大家能不能给个思路 ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 17:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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