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
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