MCPcopy Create free account
hub / github.com/DavidColson/Polybox / EndObject2D

Function EndObject2D

source/graphics.cpp:557–609  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

555// ***********************************************************************
556
557void EndObject2D() {
558 if (pRenderState->mode == ERenderMode::None) // TODO Call errors when this is incorrect
559 return;
560
561 DrawCommand cmd;
562
563 cmd.type = pRenderState->typeState;
564
565 // fill vertex buffer
566 // TODO: this pattern is repeated, could refactor out into function such as FillTransientBuffer
567 u32 numVertices = (u32)pRenderState->vertexState.count;
568 VertexData* pDestBuffer = pRenderState->perFrameVertexBuffer.pData + pRenderState->perFrameVertexBuffer.count;
569 if (pRenderState->perFrameVertexBuffer.count + numVertices > MAX_VERTICES_PER_FRAME)
570 return;
571 memcpy(pDestBuffer, pRenderState->vertexState.pData, numVertices * sizeof(VertexData));
572 cmd.vertexBufferOffset = (i32)pRenderState->perFrameVertexBuffer.count * sizeof(VertexData);
573 cmd.numElements = numVertices;
574 pRenderState->perFrameVertexBuffer.count += numVertices;
575
576 // Submit draw call
577 Matrixf ortho = Matrixf::Orthographic(0.0f, pRenderState->targetResolution.x, 0.0f, pRenderState->targetResolution.y, -100.0f, 100.0f);
578 cmd.vsUniforms.mvp = ortho * pRenderState->matrixStates[(u64)EMatrixMode::Model][-1];
579 cmd.vsUniforms.model = pRenderState->matrixStates[(u64)EMatrixMode::Model][-1];
580 cmd.vsUniforms.modelView = pRenderState->matrixStates[(u64)EMatrixMode::View][-1] * pRenderState->matrixStates[(u64)EMatrixMode::Model][-1];
581 cmd.vsUniforms.lightingEnabled = 0;
582 cmd.vsUniforms.lightDirection[0] = 0.f;
583 cmd.vsUniforms.lightDirection[1] = 0.f;
584 cmd.vsUniforms.lightDirection[2] = 0.f;
585 cmd.vsUniforms.lightColor[0] = 0.f;
586 cmd.vsUniforms.lightColor[1] = 0.f;
587 cmd.vsUniforms.lightColor[2] = 0.f;
588 cmd.vsUniforms.lightAmbient = Vec3f(0.0);
589 cmd.vsUniforms.targetResolution = pRenderState->targetResolution;
590 cmd.vsUniforms.fogEnabled = 0;
591 cmd.vsUniforms.fogDepths = Vec2f(0.0);
592 cmd.fsUniforms.fogColor = Vec4f(0.0);
593
594 cmd.indexedDraw = false;
595
596 if (pRenderState->textureState.id != SG_INVALID_ID) {
597 cmd.texturedDraw = true;
598 cmd.texture = pRenderState->textureState;
599 } else {
600 cmd.texturedDraw = false;
601 }
602 pRenderState->drawList2D.PushBack(cmd);
603
604 pRenderState->vertexState.count = 0;
605 pRenderState->vertexColorState = Vec4f(1.0f);
606 pRenderState->vertexTexCoordState = Vec2f();
607 pRenderState->vertexNormalState = Vec3f();
608 pRenderState->mode = ERenderMode::None;
609}
610
611// ***********************************************************************
612

Callers 2

LuaEndObject2DFunction · 0.85
DrawSpriteRectFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected