Esempio n. 1
0
int JRenderServer::ClearIB( int ibID )
{
    if (ibID < 0 || ibID >= m_IBuffers.size()) return -1;
    IDirect3DIndexBuffer8* pBuffer = m_IBuffers[ibID].m_pBuffer;
    if (!pBuffer) return false;
    BYTE* pData = NULL;
    HRESULT hRes = pBuffer->Lock( 0, m_IBuffers[ibID].m_Size, &pData, D3DLOCK_DISCARD );
    if (hRes != S_OK) return -1;
    pBuffer->Unlock();
    m_IBuffers[ibID].m_CurIteration++;
    return m_IBuffers[ibID].m_CurIteration;
} // JRenderServer::ClearIB
Esempio n. 2
0
BYTE* JRenderServer::LockIB( int ibID, int firstByte, int numBytes )
{
    if (ibID < 0 || ibID >= m_IBuffers.size()) return NULL;
    DWORD flags = 0;
    if (m_IBuffers[ibID].m_bDynamic) flags |= D3DLOCK_NOOVERWRITE;
    BYTE* pData = NULL;
    IDirect3DIndexBuffer8* pBuffer = m_IBuffers[ibID].m_pBuffer;
    if (!pBuffer) return NULL;
    HRESULT hRes = pBuffer->Lock( firstByte, numBytes, &pData, flags );
    if (hRes != S_OK) return NULL;
    m_IBuffers[ibID].m_CurLastByte = firstByte + numBytes;
    return (BYTE*)pData;
} // JRenderServer::LockIB