added font rendering

This commit is contained in:
2026-05-25 01:35:19 +03:00
parent a9766d6dd6
commit f127ac3801
27 changed files with 657 additions and 43 deletions

View File

@@ -325,6 +325,11 @@ uint32_t CVkBuffer::GetSize()
return m_nSize;
}
void CVkSampler::SetDebugName( const char *szName )
{
};
CVkTextureArray::~CVkTextureArray()
{
@@ -357,7 +362,6 @@ void CVkTextureArray::Build()
samplerInfo.mipLodBias = 0.0f;
samplerInfo.minLod = 0.0f;
samplerInfo.maxLod = VK_LOD_CLAMP_NONE;
vkCreateSampler(m_hDevice, &samplerInfo, nullptr, &m_hSampler);
LoadTexture("game/core/textures/error.png");
@@ -427,6 +431,11 @@ uint32_t CVkTextureArray::GetTextureID( const char *szPath )
{
}
IImage *CVkTextureArray::GetTexture( uint32_t uTextureID )
{
return m_pImages[uTextureID];
}
void CVkTextureArray::UnloadTexture( uint32_t uTextureID )
{
@@ -477,6 +486,8 @@ public:
virtual ITextureArray *CreateTextureArray() override;
virtual void DestroyTextureArray() override;
virtual ISampler *GetDefaultSampler() override;
private:
VkPhysicalDevice SelectPhysicalDevice( CUtlVector<VkPhysicalDevice> physicalDevices );
CUtlVector<const char *> GetDeviceExtensions();
@@ -498,6 +509,8 @@ private:
CUtlVector<CVkTextureArray*> m_scheduledRemovalTextureArrays;
CUtlVector<CVkBuffer*> m_scheduledRemovalBuffers;
CUtlVector<CVkImage*> m_scheduledRemovalImages;
CVkSampler m_defaultSampler;
};
EXPOSE_INTERFACE(CVkRenderContext, IRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
@@ -677,12 +690,18 @@ void CVkRenderContext::DestroyTextureArray()
{
}
ISampler *CVkRenderContext::GetDefaultSampler()
{
return &m_defaultSampler;
}
VkPipelineLayout g_pLibraryEmptyLayout;
static IVkCommandBuffer *s_pPresentCommandBuffer;
void CVkRenderContext::Init()
{
VkResult r;
int nExtensionCount;
@@ -834,6 +853,23 @@ void CVkRenderContext::Init()
m_pCommandBufferManager = (IVkCommandBufferManager*)CreateInterface(VULKAN_COMMAND_BUFFER_MANAGER_INTERFACE_NAME, NULL);
m_pCommandBufferManager->SetVulkanHandlers(s_vkInstance, s_vkDevice);
m_pCommandBufferManager->Init();
VkSamplerCreateInfo samplerInfo = {};
samplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
samplerInfo.magFilter = VK_FILTER_LINEAR;
samplerInfo.minFilter = VK_FILTER_LINEAR;
samplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK;
samplerInfo.unnormalizedCoordinates = VK_FALSE;
samplerInfo.compareEnable = VK_FALSE;
samplerInfo.compareOp = VK_COMPARE_OP_ALWAYS;
samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerInfo.mipLodBias = 0.0f;
samplerInfo.minLod = 0.0f;
samplerInfo.maxLod = VK_LOD_CLAMP_NONE;
vkCreateSampler(s_vkDevice, &samplerInfo, nullptr, &m_defaultSampler.m_sampler);
}
void CVkRenderContext::Frame( float fDeltaTime )
@@ -1059,8 +1095,8 @@ formatPicked:
pImage->m_eImageType = IMAGE_TYPE_2D;
pImage->m_eMultisampleType = MULTISAMPLE_TYPE_NONE;
pImage->m_eFormat = IMAGE_FORMAT_BGRA8_UNORM;
pImage->m_nHeight = 1280;
pImage->m_nWidth = 720;
pImage->m_nHeight = pWindow->GetRenderWidth();
pImage->m_nWidth = pWindow->GetRenderHeight();
pImage->m_ePreferredLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
pImage->CreateImageView();
window.m_images[i] = pImage;