mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +09:00
[Fix] (Diligent/PSO): Avoid crashing when MG_DEFAULT_UBO does not exist.
This commit is contained in:
@@ -260,7 +260,7 @@ namespace MG_GL::GL {
|
|||||||
|
|
||||||
if (mapped) {
|
if (mapped) {
|
||||||
MG_Util::Debug::LogD("UBO mapped successfully for program %u. Updating uniform values.", program);
|
MG_Util::Debug::LogD("UBO mapped successfully for program %u. Updating uniform values.", program);
|
||||||
uint8_t* uboData = static_cast<uint8_t*>(mapped);
|
auto* uboData = static_cast<uint8_t*>(mapped);
|
||||||
|
|
||||||
for (auto& name: programInfo.uniformBufferNames) {
|
for (auto& name: programInfo.uniformBufferNames) {
|
||||||
auto& uniform = programObj.uniformValues[name];
|
auto& uniform = programObj.uniformValues[name];
|
||||||
@@ -333,11 +333,23 @@ namespace MG_GL::GL {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MG_Util::Debug::LogD("Unmapping UBO for program %u", program);
|
MG_Util::Debug::LogD("Unmapping UBO for program %u", program);
|
||||||
MG_Diligent::g_pContext->UnmapBuffer(programInfo.pDefaultUBO, Diligent::MAP_WRITE);
|
if (programInfo.pDefaultUBO) {
|
||||||
pSRB.GetVariableByName(Diligent::SHADER_TYPE_VERTEX, "MG_DEFAULT_UBO")->Set(programInfo.pDefaultUBO,
|
MG_Diligent::g_pContext->UnmapBuffer(programInfo.pDefaultUBO, Diligent::MAP_WRITE);
|
||||||
Diligent::SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE);
|
auto* pVarVertex = pSRB.GetVariableByName(Diligent::SHADER_TYPE_VERTEX, "MG_DEFAULT_UBO");
|
||||||
pSRB.GetVariableByName(Diligent::SHADER_TYPE_PIXEL, "MG_DEFAULT_UBO")->Set(programInfo.pDefaultUBO,
|
if (pVarVertex) {
|
||||||
Diligent::SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE);
|
pVarVertex->Set(programInfo.pDefaultUBO, Diligent::SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE);
|
||||||
|
} else {
|
||||||
|
MG_Util::Debug::LogE("Failed to get vertex shader variable 'MG_DEFAULT_UBO' for program %u.", program);
|
||||||
|
}
|
||||||
|
auto* pVarPixel = pSRB.GetVariableByName(Diligent::SHADER_TYPE_PIXEL, "MG_DEFAULT_UBO");
|
||||||
|
if (pVarPixel) {
|
||||||
|
pVarPixel->Set(programInfo.pDefaultUBO, Diligent::SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE);
|
||||||
|
} else {
|
||||||
|
MG_Util::Debug::LogE("Failed to get pixel shader variable 'MG_DEFAULT_UBO' for program %u.", program);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
MG_Util::Debug::LogW("Default UBO is null for program %u. Skipping setting shader variables.", program);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnsureRenderPassActive() {
|
void EnsureRenderPassActive() {
|
||||||
|
|||||||
Reference in New Issue
Block a user