From 078060cfc9e1e343605aab95b6b6e0933ae6e408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 29 Oct 2021 14:38:56 +0200 Subject: [PATCH] Fix some issues found with WSLg --- .../Nazara/OpenGLRenderer/Wrapper/CoreFunctions.hpp | 3 +++ src/Nazara/Graphics/SpriteChainRenderer.cpp | 2 +- src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp | 10 ++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/Nazara/OpenGLRenderer/Wrapper/CoreFunctions.hpp b/include/Nazara/OpenGLRenderer/Wrapper/CoreFunctions.hpp index 8ac084f20..6c62d1780 100644 --- a/include/Nazara/OpenGLRenderer/Wrapper/CoreFunctions.hpp +++ b/include/Nazara/OpenGLRenderer/Wrapper/CoreFunctions.hpp @@ -21,6 +21,7 @@ #define GL_SPIR_V_BINARY_ARB 0x9552 typedef void (GL_APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode); typedef void (GL_APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf); // OpenGL core #define NAZARA_OPENGLRENDERER_FOREACH_GLES_FUNC(cb, extCb) \ @@ -173,6 +174,8 @@ typedef void (GL_APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const G \ extCb(glDebugMessageCallback, PFNGLDEBUGMESSAGECALLBACKPROC) \ \ + extCb(glDrawBuffer, PFNGLDRAWBUFFERPROC) \ + \ extCb(glPolygonMode, PFNGLPOLYGONMODEPROC) \ \ extCb(glMemoryBarrier, PFNGLMEMORYBARRIERPROC) \ diff --git a/src/Nazara/Graphics/SpriteChainRenderer.cpp b/src/Nazara/Graphics/SpriteChainRenderer.cpp index 68438212a..c075af8b8 100644 --- a/src/Nazara/Graphics/SpriteChainRenderer.cpp +++ b/src/Nazara/Graphics/SpriteChainRenderer.cpp @@ -163,7 +163,7 @@ namespace Nz else { vertexBuffer = m_device.InstantiateBuffer(BufferType::Vertex); - vertexBuffer->Initialize(m_maxVertexBufferSize, BufferUsage::DeviceLocal); + vertexBuffer->Initialize(m_maxVertexBufferSize, BufferUsage::DeviceLocal | BufferUsage::Dynamic); } currentVertexBuffer = vertexBuffer.get(); diff --git a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp index eaee0be66..09b6c9d3b 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp @@ -214,8 +214,14 @@ namespace Nz { assert(command.framebuffer->GetType() == FramebufferType::Window); - GLenum buffer = GL_BACK; - context->glDrawBuffers(1, &buffer); + // glDrawBuffers doesn't accept GL_BACK on OpenGL non-ES, and glDrawBuffer must be used instead + if (context->glDrawBuffer) + context->glDrawBuffer(GL_BACK); + else + { + GLenum buffer = GL_BACK; + context->glDrawBuffers(1, &buffer); + } invalidateAttachments = NazaraStackVector(GLenum, 3); //< color + depth + stencil