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

Function NullSetRenderTargetSize

engine/graphics/src/null/graphics_null.cpp:1373–1450  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1371 }
1372
1373 static void NullSetRenderTargetSize(HContext context, HRenderTarget render_target, uint32_t width, uint32_t height)
1374 {
1375 DM_MUTEX_OPTIONAL_SCOPED_LOCK(g_NullContext->m_BaseContext.m_AssetHandleContainerMutex);
1376 NullRenderTarget* rt = GetAssetFromContainer<NullRenderTarget>(g_NullContext->m_BaseContext.m_AssetHandleContainer, render_target);
1377
1378 uint32_t buffer_size = sizeof(uint32_t) * width * height;
1379 void** color_buffers[MAX_BUFFER_COLOR_ATTACHMENTS] = {
1380 &rt->m_FrameBuffer.m_ColorBuffer[0],
1381 &rt->m_FrameBuffer.m_ColorBuffer[1],
1382 &rt->m_FrameBuffer.m_ColorBuffer[2],
1383 &rt->m_FrameBuffer.m_ColorBuffer[3],
1384 };
1385
1386 uint32_t* color_buffer_sizes[MAX_BUFFER_COLOR_ATTACHMENTS] = {
1387 &rt->m_FrameBuffer.m_ColorBufferSize[0],
1388 &rt->m_FrameBuffer.m_ColorBufferSize[1],
1389 &rt->m_FrameBuffer.m_ColorBufferSize[2],
1390 &rt->m_FrameBuffer.m_ColorBufferSize[3],
1391 };
1392
1393 for (uint32_t i = 0; i < MAX_BUFFER_COLOR_ATTACHMENTS; ++i)
1394 {
1395 if (color_buffers[i])
1396 {
1397 *(color_buffer_sizes[i]) = buffer_size;
1398 rt->m_Base.m_ColorTextureParams[i].m_Width = width;
1399 rt->m_Base.m_ColorTextureParams[i].m_Height = height;
1400
1401 if (rt->m_Base.m_TextureColor[i])
1402 {
1403 rt->m_Base.m_ColorTextureParams[i].m_DataSize = buffer_size;
1404 SetTexture((HContext)g_NullContext, rt->m_Base.m_TextureColor[i], rt->m_Base.m_ColorTextureParams[i]);
1405 NullTexture* tex = GetAssetFromContainer<NullTexture>(g_NullContext->m_BaseContext.m_AssetHandleContainer, rt->m_Base.m_TextureColor[i]);
1406 *(color_buffers[i]) = tex->m_Data;
1407 }
1408 }
1409 }
1410
1411 if (rt->m_Base.m_TextureDepth)
1412 {
1413 rt->m_FrameBuffer.m_DepthTextureBufferSize = buffer_size;
1414 rt->m_Base.m_DepthBufferParams.m_Width = width;
1415 rt->m_Base.m_DepthBufferParams.m_Height = height;
1416 rt->m_Base.m_DepthBufferParams.m_DataSize = buffer_size;
1417 SetTexture((HContext)g_NullContext, rt->m_Base.m_TextureDepth, rt->m_Base.m_DepthBufferParams);
1418 NullTexture* tex = GetAssetFromContainer<NullTexture>(g_NullContext->m_BaseContext.m_AssetHandleContainer, rt->m_Base.m_TextureDepth);
1419 rt->m_FrameBuffer.m_DepthTextureBuffer = tex->m_Data;
1420 }
1421 else if (rt->m_FrameBuffer.m_DepthBuffer)
1422 {
1423 rt->m_FrameBuffer.m_DepthTextureBufferSize = buffer_size;
1424 rt->m_Base.m_DepthBufferParams.m_Width = width;
1425 rt->m_Base.m_DepthBufferParams.m_Height = height;
1426 rt->m_Base.m_DepthBufferParams.m_DataSize = buffer_size;
1427 delete [] (char*) rt->m_FrameBuffer.m_DepthBuffer;
1428 rt->m_FrameBuffer.m_DepthBuffer = new char[buffer_size];
1429 }
1430

Callers

nothing calls this directly

Calls 1

SetTextureFunction · 0.50

Tested by

no test coverage detected