From cc41ce24d5309a6e1dc013b86dba0be99bb1e90c Mon Sep 17 00:00:00 2001 From: Light Date: Fri, 6 Aug 2021 07:44:48 +0430 Subject: [PATCH] Fixed glVertexBuffer - Fixed glVertexBuffer multiplying count by size of float instead of stride * = Fixed TintedTexture for OpenGL --- Engine/res/Shaders/Texture/Texture_VS.glsl | 1 + Engine/res/Shaders/TintedTexture/TintedTexture_VS.hlsl | 2 +- Engine/src/Engine/Graphics/Buffers.cpp | 2 +- Engine/src/Engine/Graphics/Renderer.cpp | 2 +- Engine/src/Engine/Graphics/Renderer.h | 5 +++-- Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.cpp | 4 ++-- Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.h | 2 +- 7 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Engine/res/Shaders/Texture/Texture_VS.glsl b/Engine/res/Shaders/Texture/Texture_VS.glsl index d2e1752..42083ec 100644 --- a/Engine/res/Shaders/Texture/Texture_VS.glsl +++ b/Engine/res/Shaders/Texture/Texture_VS.glsl @@ -13,5 +13,6 @@ out vec2 vso_TexCoord; void main() { gl_Position = u_ViewProjection * a_Position; + vso_TexCoord = a_TexCoord; } \ No newline at end of file diff --git a/Engine/res/Shaders/TintedTexture/TintedTexture_VS.hlsl b/Engine/res/Shaders/TintedTexture/TintedTexture_VS.hlsl index 3b69a8a..6c31047 100644 --- a/Engine/res/Shaders/TintedTexture/TintedTexture_VS.hlsl +++ b/Engine/res/Shaders/TintedTexture/TintedTexture_VS.hlsl @@ -10,7 +10,7 @@ cbuffer cb_ViewProjection : register(b0) row_major matrix viewProjection; } -VertexOut main(float4 InPosition : POSITION, float4 InTint : TINT,float2 InTexChoord : TEXCOORD) +VertexOut main(float4 InPosition : POSITION, float4 InTint : TINT, float2 InTexChoord : TEXCOORD) { VertexOut vso; vso.Position = mul(float4(InPosition), viewProjection); diff --git a/Engine/src/Engine/Graphics/Buffers.cpp b/Engine/src/Engine/Graphics/Buffers.cpp index 301e692..6a3644d 100644 --- a/Engine/src/Engine/Graphics/Buffers.cpp +++ b/Engine/src/Engine/Graphics/Buffers.cpp @@ -37,7 +37,7 @@ namespace Light { switch (GraphicsContext::GetGraphicsAPI()) { case GraphicsAPI::OpenGL: - return CreateRef(vertices, count); + return CreateRef(vertices, stride, count); case GraphicsAPI::DirectX: LT_WIN( return CreateRef(vertices, stride, count, std::static_pointer_cast(sharedContext));) diff --git a/Engine/src/Engine/Graphics/Renderer.cpp b/Engine/src/Engine/Graphics/Renderer.cpp index baa715a..34e8033 100644 --- a/Engine/src/Engine/Graphics/Renderer.cpp +++ b/Engine/src/Engine/Graphics/Renderer.cpp @@ -22,7 +22,7 @@ namespace Light { Renderer::Renderer(GLFWwindow* windowHandle, Ref sharedContext) : m_QuadRenderer(LT_MAX_QUAD_RENDERER_VERTICES, sharedContext), m_TextureRenderer(LT_MAX_TEXTURE_RENDERER_VERTICES, sharedContext), - m_TintedTextureRenderer(LT_MAX_TEXTURE_RENDERER_VERTICES, sharedContext), + m_TintedTextureRenderer(LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES, sharedContext), m_ViewProjectionBuffer(nullptr), m_RenderCommand(nullptr), m_Blender(nullptr), diff --git a/Engine/src/Engine/Graphics/Renderer.h b/Engine/src/Engine/Graphics/Renderer.h index 93f2a90..2fd1b6e 100644 --- a/Engine/src/Engine/Graphics/Renderer.h +++ b/Engine/src/Engine/Graphics/Renderer.h @@ -6,8 +6,9 @@ #include "RendererPrograms/TextureRendererProgram.h" #include "RendererPrograms/TintedTextureRendererProgram.h" -#define LT_MAX_QUAD_RENDERER_VERTICES 1028u * 4u -#define LT_MAX_TEXTURE_RENDERER_VERTICES 1028u * 4u +#define LT_MAX_QUAD_RENDERER_VERTICES 1028u * 4u +#define LT_MAX_TEXTURE_RENDERER_VERTICES 1028u * 4u +#define LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES 1028u * 4u struct GLFWwindow; diff --git a/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.cpp b/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.cpp index 778d584..c1139ec 100644 --- a/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.cpp +++ b/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.cpp @@ -39,11 +39,11 @@ namespace Light { //==================== CONSTANT_BUFFER ====================// //==================== VERTEX_BUFFER ====================// - glVertexBuffer::glVertexBuffer(float* vertices, unsigned int count) + glVertexBuffer::glVertexBuffer(float* vertices, unsigned int stride, unsigned int count) : m_BufferID(NULL) { glCreateBuffers(1, &m_BufferID); - glNamedBufferData(m_BufferID, count * sizeof(float), vertices, GL_DYNAMIC_DRAW); + glNamedBufferData(m_BufferID, stride * count, vertices, GL_DYNAMIC_DRAW); } glVertexBuffer::~glVertexBuffer() diff --git a/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.h b/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.h index a53511e..6fd4eaa 100644 --- a/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.h +++ b/Engine/src/Platform/GraphicsAPI/OpenGL/glBuffers.h @@ -30,7 +30,7 @@ namespace Light { unsigned int m_BufferID; public: - glVertexBuffer(float* vertices, unsigned int count); + glVertexBuffer(float* vertices, unsigned int stride, unsigned int count); ~glVertexBuffer(); void Bind() override;