diff --git a/MG/MG_GL/Implementations/GL/Buffer/GL_Buffer.cpp b/MG/MG_GL/Implementations/GL/Buffer/GL_Buffer.cpp index 4171aa6e..b9528e80 100644 --- a/MG/MG_GL/Implementations/GL/Buffer/GL_Buffer.cpp +++ b/MG/MG_GL/Implementations/GL/Buffer/GL_Buffer.cpp @@ -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; diff --git a/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp b/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp index 0a626472..64ffb72b 100644 --- a/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp +++ b/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp @@ -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) {