From 6e47553b163bd79316b64090be42b60471c30ff3 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Thu, 14 Apr 2022 08:59:12 +0200 Subject: [PATCH] OpenGLRenderer: Fix integer vertex attribute handling --- src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp b/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp index 039dd9029..4a8a03310 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp @@ -41,7 +41,27 @@ namespace Nz::GL m_context.BindBuffer(BufferTarget::Array, attrib.vertexBuffer, true); m_context.glEnableVertexAttribArray(bindingIndex); - m_context.glVertexAttribPointer(bindingIndex, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.pointer); + + switch (attrib.type) + { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + if (!attrib.normalized) + { + m_context.glVertexAttribIPointer(bindingIndex, attrib.size, attrib.type, attrib.stride, attrib.pointer); + break; + } + else + [[fallthrough]]; + + default: + m_context.glVertexAttribPointer(bindingIndex, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.pointer); + break; + } } bindingIndex++;