mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 04:08:32 +09:00
[Fix] (Diligent/Buffer): Fix flags absence of buffer objects in Diligent.
This commit is contained in:
@@ -203,15 +203,15 @@ namespace MG_GL::GL {
|
||||
|
||||
switch (target) {
|
||||
case GL_ARRAY_BUFFER:
|
||||
BuffDesc.BindFlags = Diligent::BIND_VERTEX_BUFFER;
|
||||
// BuffDesc.BindFlags = Diligent::BIND_VERTEX_BUFFER;
|
||||
name += std::format("VBO {}", buffer);
|
||||
break;
|
||||
case GL_ELEMENT_ARRAY_BUFFER:
|
||||
BuffDesc.BindFlags = Diligent::BIND_INDEX_BUFFER;
|
||||
// BuffDesc.BindFlags = Diligent::BIND_INDEX_BUFFER;
|
||||
name += std::format("IBO {}", buffer);
|
||||
break;
|
||||
case GL_UNIFORM_BUFFER:
|
||||
BuffDesc.BindFlags = Diligent::BIND_UNIFORM_BUFFER;
|
||||
// BuffDesc.BindFlags = Diligent::BIND_UNIFORM_BUFFER;
|
||||
name += std::format("UBO {}", buffer);
|
||||
break;
|
||||
default:
|
||||
@@ -220,6 +220,9 @@ namespace MG_GL::GL {
|
||||
break;
|
||||
}
|
||||
|
||||
BuffDesc.BindFlags |= Diligent::BIND_VERTEX_BUFFER |
|
||||
Diligent::BIND_INDEX_BUFFER |
|
||||
Diligent::BIND_UNIFORM_BUFFER;
|
||||
BuffDesc.Name = name.c_str();
|
||||
BuffDesc.Usage = Diligent::USAGE_DEFAULT;
|
||||
|
||||
|
||||
@@ -489,7 +489,9 @@ namespace MG_GL::GL {
|
||||
BuffDesc.Name = bufferName.c_str();
|
||||
BuffDesc.Size = bufferObj.data.size();
|
||||
BuffDesc.Usage = Diligent::USAGE_DYNAMIC;
|
||||
BuffDesc.BindFlags = Diligent::BIND_VERTEX_BUFFER;
|
||||
BuffDesc.BindFlags = Diligent::BIND_VERTEX_BUFFER |
|
||||
Diligent::BIND_INDEX_BUFFER |
|
||||
Diligent::BIND_UNIFORM_BUFFER;
|
||||
BuffDesc.CPUAccessFlags = Diligent::CPU_ACCESS_WRITE;
|
||||
|
||||
MG_Diligent::g_pDevice->CreateBuffer(BuffDesc, nullptr, &pBuffer);
|
||||
@@ -517,7 +519,9 @@ namespace MG_GL::GL {
|
||||
BuffDesc.Name = bufferName.c_str();
|
||||
BuffDesc.Size = bufferObj.data.size();
|
||||
BuffDesc.Usage = Diligent::USAGE_DYNAMIC;
|
||||
BuffDesc.BindFlags = Diligent::BIND_INDEX_BUFFER;
|
||||
BuffDesc.BindFlags = Diligent::BIND_VERTEX_BUFFER |
|
||||
Diligent::BIND_INDEX_BUFFER |
|
||||
Diligent::BIND_UNIFORM_BUFFER;
|
||||
BuffDesc.CPUAccessFlags = Diligent::CPU_ACCESS_WRITE;
|
||||
|
||||
MG_Diligent::g_pDevice->CreateBuffer(BuffDesc, nullptr, &pBuffer);
|
||||
@@ -701,6 +705,15 @@ namespace MG_GL::GL {
|
||||
void MultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const *indices, GLsizei drawcount) {
|
||||
PrepareForDraw();
|
||||
|
||||
if (MG_Diligent::IsInRenderPass) {
|
||||
MG_Util::Debug::LogD("Ending current render pass.");
|
||||
MG_Diligent::g_pContext->EndRenderPass();
|
||||
MG_Diligent::IsInRenderPass = false;
|
||||
MG_Util::Debug::LogD("Current render pass ended.");
|
||||
} else {
|
||||
MG_Util::Debug::LogD("No active render pass to end.");
|
||||
}
|
||||
|
||||
auto* pVAO = MG_State_T::vertexArrayState->GetCurrentVAO();
|
||||
Diligent::IBuffer* pIndexBuffer = nullptr;
|
||||
if (pVAO->elementBuffer != 0) {
|
||||
|
||||
Reference in New Issue
Block a user