MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / DrawSpriteSorted

Method DrawSpriteSorted

TombEngine/Renderer/RendererSprites.cpp:508–545  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

506 }
507
508 void Renderer::DrawSpriteSorted(RendererSortableObject* objectInfo, RendererObjectType lastObjectType, RenderView& view)
509 {
510 if (lastObjectType != objectInfo->ObjectType)
511 {
512 unsigned int stride = sizeof(Vertex);
513 unsigned int offset = 0;
514
515 _shaders.Bind(Shader::InstancedSprites);
516
517 _context->IASetVertexBuffers(0, 1, _sortedPolygonsVertexBuffer.Buffer.GetAddressOf(), &stride, &offset);
518 _context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
519 _context->IASetInputLayout(_inputLayout.Get());
520 }
521
522 _sortedPolygonsVertexBuffer.Update(_context.Get(), _sortedPolygonsVertices.data(), 0, (int)_sortedPolygonsVertices.size());
523
524 _stInstancedSpriteBuffer.Sprites[0].World = Matrix::Identity;
525 _stInstancedSpriteBuffer.Sprites[0].PerVertexColor = 1;
526 _stInstancedSpriteBuffer.Sprites[0].IsSoftParticle = objectInfo->Sprite->SoftParticle ? 1 : 0;
527 _stInstancedSpriteBuffer.Sprites[0].RenderType = (int)objectInfo->Sprite->renderType;
528
529 PackSpriteTextureCoordinates(0, objectInfo->Sprite->Sprite);
530
531 UpdateConstantBuffer(_stInstancedSpriteBuffer, _cbInstancedSpriteBuffer);;
532
533 SetDepthState(DepthState::Read);
534 SetCullMode(CullMode::None);
535 SetBlendMode(objectInfo->Sprite->BlendMode);
536 SetAlphaTest(AlphaTestMode::None, ALPHA_TEST_THRESHOLD);
537
538 BindTexture(TextureRegister::ColorMap, objectInfo->Sprite->Sprite->Texture, SamplerStateRegister::LinearClamp);
539 BindRenderTargetAsTexture(TextureRegister::GBufferDepthMap, &_depthRenderTarget, SamplerStateRegister::PointWrap);
540
541 DrawInstancedTriangles((int)_sortedPolygonsVertices.size(), 1, 0);
542
543 _numSortedSpritesDrawCalls++;
544 _numSortedTriangles += (int)_sortedPolygonsVertices.size() / 3;
545 }
546
547 void Renderer::PackSpriteTextureCoordinates(int instanceId, RendererSprite* sprite)
548 {

Callers

nothing calls this directly

Calls 6

BindMethod · 0.80
GetAddressOfMethod · 0.80
GetMethod · 0.45
UpdateMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected