MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / renderSingleObject

Method renderSingleObject

OgreMain/src/OgreRenderQueue.cpp:935–989  ·  view source on GitHub ↗

-----------------------------------------------------------------------

Source from the content-addressed store, hash-verified

933 }
934 //-----------------------------------------------------------------------
935 void RenderQueue::renderSingleObject( Renderable *pRend, const MovableObject *pMovableObject,
936 RenderSystem *rs, bool casterPass, bool dualParaboloid )
937 {
938 if( mLastVaoName )
939 {
940 rs->_startLegacyV1Rendering();
941 mLastVaoName = 0;
942 }
943
944 if( mLastWasCasterPass != casterPass )
945 {
946 clearState();
947 mLastWasCasterPass = casterPass;
948 }
949
950 const HlmsDatablock *datablock = pRend->getDatablock();
951
952 ++mRenderingStarted;
953 mRoot->_notifyRenderingFrameStarted();
954
955 Hlms *hlms = datablock->getCreator();
956 HlmsCache passCache = hlms->preparePassHash( mSceneManager->getCurrentShadowNode(), casterPass,
957 dualParaboloid, mSceneManager );
958
959 const QueuedRenderable queuedRenderable( 0, pRend, pMovableObject );
960 v1::RenderOperation op;
961 queuedRenderable.renderable->getRenderOperation(
962 op, casterPass & ( datablock->getAlphaTest() == CMPF_ALWAYS_PASS ) );
963 /*uint32 hlmsHash = casterPass ? queuedRenderable.renderable->getHlmsCasterHash() :
964 queuedRenderable.renderable->getHlmsHash();*/
965
966 if( mLastVertexData != op.vertexData )
967 {
968 mLastVertexData = op.vertexData;
969 }
970 if( mLastIndexData != op.indexData )
971 {
972 mLastIndexData = op.indexData;
973 }
974
975 const HlmsCache *hlmsCache =
976 hlms->getMaterial( &c_dummyCache, passCache, queuedRenderable, casterPass );
977 rs->_setPipelineStateObject( &hlmsCache->pso );
978
979 mLastTextureHash =
980 hlms->fillBuffersFor( hlmsCache, queuedRenderable, casterPass, 0, mLastTextureHash );
981
982 const v1::CbRenderOp cmd( op );
983 rs->_setRenderOperation( &cmd );
984
985 rs->_render( op );
986
987 mLastVaoName = 0;
988 --mRenderingStarted;
989 }
990 //-----------------------------------------------------------------------
991 void RenderQueue::frameEnded()
992 {

Callers

nothing calls this directly

Calls 11

getAlphaTestMethod · 0.80
getDatablockMethod · 0.45
preparePassHashMethod · 0.45
getRenderOperationMethod · 0.45
getMaterialMethod · 0.45
fillBuffersForMethod · 0.45
_setRenderOperationMethod · 0.45
_renderMethod · 0.45

Tested by

no test coverage detected