| 757 | } |
| 758 | |
| 759 | void DXDrawBatch::Render(RenderDevice* renderDevice, RenderWindow* renderWindow) |
| 760 | { |
| 761 | if (mVtxIdx == 0) |
| 762 | return; |
| 763 | |
| 764 | if ((mRenderState->mClipped) && |
| 765 | ((mRenderState->mClipRect.mWidth == 0) || (mRenderState->mClipRect.mHeight == 0))) |
| 766 | return; |
| 767 | |
| 768 | if (mRenderState->mClipped) |
| 769 | BF_ASSERT((mRenderState->mClipRect.mWidth > 0) && (mRenderState->mClipRect.mHeight > 0)); |
| 770 | |
| 771 | DXRenderDevice* aRenderDevice = (DXRenderDevice*)renderDevice; |
| 772 | /*if ((mDrawLayer->mRenderWindow != NULL) && (aRenderDevice->mPhysRenderWindow != mDrawLayer->mRenderWindow)) |
| 773 | aRenderDevice->PhysSetRenderWindow(mDrawLayer->mRenderWindow);*/ |
| 774 | |
| 775 | D3D11_MAP idxMapType = D3D11_MAP_WRITE_NO_OVERWRITE; |
| 776 | D3D11_MAP vtxMapType = D3D11_MAP_WRITE_NO_OVERWRITE; |
| 777 | |
| 778 | int idxByteStart = aRenderDevice->mIdxByteIdx; |
| 779 | int idxDataSize = sizeof(uint16) * mIdxIdx; |
| 780 | aRenderDevice->mIdxByteIdx += idxDataSize; |
| 781 | if (aRenderDevice->mIdxByteIdx >= DX_IDXBUFFER_SIZE) |
| 782 | { |
| 783 | idxMapType = D3D11_MAP_WRITE_DISCARD; |
| 784 | idxByteStart = 0; |
| 785 | aRenderDevice->mIdxByteIdx = idxDataSize; |
| 786 | } |
| 787 | |
| 788 | int vtxByteStart = aRenderDevice->mVtxByteIdx; |
| 789 | int vtxDataSize = mVtxIdx * mVtxSize; |
| 790 | |
| 791 | //int vtxStartIdx = ((vtxByteStart + mVtxSize - 1) / mVtxSize); |
| 792 | int vtxStartIdx = vtxByteStart / mVtxSize; |
| 793 | int vtxOffset = vtxByteStart % mVtxSize; |
| 794 | //vtxByteStart = vtxStartIdx * mVtxSize; |
| 795 | |
| 796 | //aRenderDevice->mVtxByteIdx += vtxDataSize; |
| 797 | aRenderDevice->mVtxByteIdx = vtxByteStart + vtxDataSize; |
| 798 | |
| 799 | if (aRenderDevice->mVtxByteIdx >= DX_VTXBUFFER_SIZE) |
| 800 | { |
| 801 | vtxMapType = D3D11_MAP_WRITE_DISCARD; |
| 802 | vtxByteStart = 0; |
| 803 | vtxOffset = 0; |
| 804 | vtxStartIdx = 0; |
| 805 | aRenderDevice->mVtxByteIdx = vtxDataSize; |
| 806 | } |
| 807 | |
| 808 | //TODO: Round up for various vertex formats, manage stride properly, etc |
| 809 | |
| 810 | D3D11_MAPPED_SUBRESOURCE mappedSubResource; |
| 811 | DXCHECK(aRenderDevice->mD3DDeviceContext->Map(aRenderDevice->mD3DIndexBuffer, 0, idxMapType, 0, &mappedSubResource)); |
| 812 | void* dxIdxData = mappedSubResource.pData; |
| 813 | DXCHECK(aRenderDevice->mD3DDeviceContext->Map(aRenderDevice->mD3DVertexBuffer, 0, vtxMapType, 0, &mappedSubResource)); |
| 814 | void* dxVtxData = mappedSubResource.pData; |
| 815 | |
| 816 | //mVtxByteIdx = ((mVtxByteIdx + vtxSize - 1) / vtxSize) * vtxSize; |
no test coverage detected