MCPcopy Create free account
hub / github.com/beefytech/Beef / Render

Method Render

BeefySysLib/platform/win/DXRenderDevice.cpp:759–836  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

757}
758
759void 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;

Callers 1

DrawMethod · 0.45

Calls 4

PhysSetRenderStateMethod · 0.45
sizeMethod · 0.45
IsEmptyMethod · 0.45
TryAddMethod · 0.45

Tested by

no test coverage detected