MCPcopy Create free account
hub / github.com/defold/defold / ParseCommands

Function ParseCommands

engine/render/src/render/render_command.cpp:58–244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56 }
57
58 void ParseCommands(dmRender::HRenderContext render_context, Command* commands, uint32_t command_count)
59 {
60 dmGraphics::HContext context = dmRender::GetGraphicsContext(render_context);
61
62 for (uint32_t i=0; i<command_count; i++)
63 {
64 Command* c = &commands[i];
65 switch (c->m_Type)
66 {
67 case COMMAND_TYPE_ENABLE_STATE:
68 {
69 dmGraphics::EnableState(context, (dmGraphics::State)c->m_Operands[0]);
70 break;
71 }
72 case COMMAND_TYPE_DISABLE_STATE:
73 {
74 dmGraphics::DisableState(context, (dmGraphics::State)c->m_Operands[0]);
75 break;
76 }
77 case COMMAND_TYPE_SET_RENDER_TARGET:
78 {
79 dmGraphics::SetRenderTarget(context, c->m_Operands[0], c->m_Operands[1]);
80 break;
81 }
82 case COMMAND_TYPE_ENABLE_TEXTURE:
83 {
84 // operand order: Hash, Unit, Texture
85 if (c->m_Operands[0])
86 dmRender::SetTextureBindingByHash(render_context, c->m_Operands[0], c->m_Operands[2]);
87 else
88 dmRender::SetTextureBindingByUnit(render_context, c->m_Operands[1], c->m_Operands[2]);
89 break;
90 }
91 case COMMAND_TYPE_DISABLE_TEXTURE:
92 {
93 // operand order: Hash, Unit, Texture
94 if (c->m_Operands[0])
95 dmRender::SetTextureBindingByHash(render_context, c->m_Operands[0], 0);
96 else
97 dmRender::SetTextureBindingByUnit(render_context, c->m_Operands[1], 0);
98 break;
99 }
100 case COMMAND_TYPE_CLEAR:
101 {
102 uint8_t r = (c->m_Operands[1] >> 0) & 0xff;
103 uint8_t g = (c->m_Operands[1] >> 8) & 0xff;
104 uint8_t b = (c->m_Operands[1] >> 16) & 0xff;
105 uint8_t a = (c->m_Operands[1] >> 24) & 0xff;
106 union float_to_uint32_t {float f; uint32_t i;};
107 float_to_uint32_t ftoi;
108 ftoi.i = c->m_Operands[2];
109 dmGraphics::Clear(context, c->m_Operands[0], r, g, b, a, ftoi.f, c->m_Operands[3]);
110 render_context->m_StencilBufferCleared = (c->m_Operands[0] & dmGraphics::BUFFER_TYPE_STENCIL_BIT) != 0;
111 break;
112 }
113 case COMMAND_TYPE_SET_VIEWPORT:
114 {
115 dmGraphics::SetViewport(context, c->m_Operands[0], c->m_Operands[1], c->m_Operands[2], c->m_Operands[3]);

Callers 2

TEST_FFunction · 0.85

Calls 15

GetGraphicsContextFunction · 0.85
EnableStateFunction · 0.85
DisableStateFunction · 0.85
SetRenderTargetFunction · 0.85
SetTextureBindingByHashFunction · 0.85
SetTextureBindingByUnitFunction · 0.85
ClearFunction · 0.85
SetViewportFunction · 0.85
SetViewMatrixFunction · 0.85
SetProjectionMatrixFunction · 0.85
SetBlendFuncFunction · 0.85
SetBlendFuncSeparateFunction · 0.85

Tested by 1

TEST_FFunction · 0.68