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

@@ -76,6 +76,17 @@ void CVkMaterial::PSSetTextureArray( uint32_t uSet, ITextureArray *pArray )
SetShaderResource(0, uSet, pArray);
}
void CVkMaterial::PSSetTexture( uint32_t uRegister, IImage *pImage )
{
SetShaderResource(uRegister, 0, pImage);
}
void CVkMaterial::PSSetSampler( uint32_t uRegister, ISampler *pImage )
{
SetShaderResource(uRegister, 0, pImage);
}
void CVkMaterial::SetShaderResource( uint32_t uRegister, uint32_t uSet, IRenderingObject *pObject)
{
if ( m_pVkShader->m_setLayouts.GetSize() == 0 )
@@ -84,6 +95,8 @@ void CVkMaterial::SetShaderResource( uint32_t uRegister, uint32_t uSet, IRenderi
IRenderingObject *pVkObject;
CVkBuffer *pBuffer;
CVkTextureArray *pArray;
CVkImage *pImage;
CVkSampler *pSampler;
};
pVkObject = pObject;
if (dynamic_cast<IBuffer*>(pObject))
@@ -101,6 +114,36 @@ void CVkMaterial::SetShaderResource( uint32_t uRegister, uint32_t uSet, IRenderi
stInfo.range = pBuffer->m_nSize;
vkUpdateDescriptorSets(m_pVkShader->m_hDevice, 1, &write, 0, 0);
}
if (dynamic_cast<IImage*>(pObject))
{
VkWriteDescriptorSet write = {};
VkDescriptorImageInfo stInfo = {};
write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
write.dstSet = m_hSets[uSet];
write.dstBinding = uRegister;
write.dstArrayElement = 0;
write.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
write.descriptorCount = 1;
write.pImageInfo = &stInfo;
stInfo.imageView = pImage->m_imageView;
stInfo.imageLayout = VK_IMAGE_LAYOUT_GENERAL;
vkUpdateDescriptorSets(m_pVkShader->m_hDevice, 1, &write, 0, 0);
}
if (dynamic_cast<CVkSampler*>(pObject))
{
VkWriteDescriptorSet write = {};
VkDescriptorImageInfo stInfo = {};
write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
write.dstSet = m_hSets[uSet];
write.dstBinding = uRegister;
write.dstArrayElement = 0;
write.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER;
write.descriptorCount = 1;
write.pImageInfo = &stInfo;
stInfo.sampler = pSampler->m_sampler;
vkUpdateDescriptorSets(m_pVkShader->m_hDevice, 1, &write, 0, 0);
}
if (dynamic_cast<ITextureArray*>(pObject))
{
VkWriteDescriptorSet writes[2] = {};