diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index abdb22b7..fb837d0c 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -5207,7 +5207,7 @@ void idRenderBackend::ExecuteBackEndCommands( const emptyCommand_t* cmds ) break; case RC_SET_BUFFER: - //RB_SetBuffer( cmds ); + SetBuffer( cmds ); c_setBuffers++; break; diff --git a/neo/renderer/RenderSystem.cpp b/neo/renderer/RenderSystem.cpp index cddd9bd7..3b42d4f8 100644 --- a/neo/renderer/RenderSystem.cpp +++ b/neo/renderer/RenderSystem.cpp @@ -773,11 +773,17 @@ const emptyCommand_t* idRenderSystemLocal::SwapCommandBuffers_FinishCommandBuffe // set the time for shader effects in 2D rendering frameShaderTime = Sys_Milliseconds() * 0.001; -#if !defined(USE_VULKAN) +#if 1 //!defined(USE_VULKAN) // RB: TODO RC_SET_BUFFER is not handled in OpenGL setBufferCommand_t* cmd2 = ( setBufferCommand_t* )R_GetCommandBuffer( sizeof( *cmd2 ) ); cmd2->commandId = RC_SET_BUFFER; + +#if defined(USE_VULKAN) + cmd2->buffer = 0; +#else cmd2->buffer = ( int )GL_BACK; +#endif + #endif // the old command buffer can now be rendered, while the new one can diff --git a/neo/renderer/Vulkan/RenderBackend_VK.cpp b/neo/renderer/Vulkan/RenderBackend_VK.cpp index 1075f869..28e682ab 100644 --- a/neo/renderer/Vulkan/RenderBackend_VK.cpp +++ b/neo/renderer/Vulkan/RenderBackend_VK.cpp @@ -2114,7 +2114,38 @@ void idRenderBackend::DrawFlickerBox() return; } - // TODO + VkClearAttachment attachment = {}; + + attachment.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + attachment.colorAttachment = 0; + + VkClearColorValue& color = attachment.clearValue.color; + + if( vkcontext.currentFrameData & 1 ) + { + color.float32[ 0 ] = 1; + color.float32[ 1 ] = 0; + color.float32[ 2 ] = 0; + color.float32[ 3 ] = 1; + } + else + { + color.float32[ 0 ] = 0; + color.float32[ 1 ] = 1; + color.float32[ 2 ] = 0; + color.float32[ 3 ] = 1; + } + + VkExtent2D extent; + extent.width = 256; + extent.height = 256; + + VkClearRect clearRect = {}; + clearRect.baseArrayLayer = 0; + clearRect.layerCount = 1; + clearRect.rect.extent = extent; + + vkCmdClearAttachments( vkcontext.commandBuffer[ vkcontext.currentFrameData ], 1, &attachment, 1, &clearRect ); /* if( tr.frameCount & 1 )