From f75c04d988b9ef3f5d19da41d92a51475e288f08 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 30 Jan 2025 12:40:19 +0300 Subject: [PATCH] Make gfx::mesh only bind index buffer as GL_ELEMENT_ARRAY_BUFFER, in accordance with WebGL restrictions --- libs/gfx/include/psemek/gfx/mesh.hpp | 13 +++++-------- libs/gfx/source/mesh.cpp | 7 ++----- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/libs/gfx/include/psemek/gfx/mesh.hpp b/libs/gfx/include/psemek/gfx/mesh.hpp index 89d37fc1..52153bdb 100644 --- a/libs/gfx/include/psemek/gfx/mesh.hpp +++ b/libs/gfx/include/psemek/gfx/mesh.hpp @@ -195,11 +195,11 @@ namespace psemek::gfx GLenum index_type() const { return info_.index_type_; } buffer & vertex_buffer() { return vertex_buffer_; } - buffer & index_buffer() { return index_buffer_; } + auto & index_buffer() { return index_buffer_; } buffer & instance_buffer() { return instance_buffer_; } buffer const & vertex_buffer() const { return vertex_buffer_; } - buffer const & index_buffer() const { return index_buffer_; } + auto const & index_buffer() const { return index_buffer_; } buffer const & instance_buffer() const { return instance_buffer_; } // Drawing commands @@ -211,7 +211,7 @@ namespace psemek::gfx private: array array_; buffer vertex_buffer_ = buffer::null(); - buffer index_buffer_ = buffer::null(); + basic_buffer index_buffer_ = basic_buffer::null(); buffer instance_buffer_ = buffer::null(); struct mesh_info @@ -298,11 +298,8 @@ namespace psemek::gfx assert((index_count % (*n)) == 0); if (!index_buffer_) - { - index_buffer_ = buffer{}; - array_.bind(); - gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, index_buffer_.id()); - } + index_buffer_ = {}; + array_.bind(); index_buffer_.load(indices, index_count, usage); info_.index_count_ = index_count; info_.indexed_ = true; diff --git a/libs/gfx/source/mesh.cpp b/libs/gfx/source/mesh.cpp index 455225b0..6cb2afa7 100644 --- a/libs/gfx/source/mesh.cpp +++ b/libs/gfx/source/mesh.cpp @@ -144,11 +144,8 @@ namespace psemek::gfx assert(vertex_buffer_); if (!index_buffer_) - { - index_buffer_ = buffer{}; - array_.bind(); - gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, index_buffer_.id()); - } + index_buffer_ = {}; + array_.bind(); vertex_buffer_.load(vertices, vertex_size * vertex_count, usage); index_buffer_.load(indices, index_size(index_type) * index_count, usage); info_.vertex_count_ = vertex_count;