Skip to content

Commit 3bb8b7c

Browse files
committed
store renderere ref in index_buffer
1 parent 6b1d7d4 commit 3bb8b7c

File tree

3 files changed

+63
-12
lines changed

3 files changed

+63
-12
lines changed

src/ruis/render/opengl/factory.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,18 @@ utki::shared_ref<ruis::render::vertex_array> factory::create_vertex_array(
210210

211211
utki::shared_ref<ruis::render::index_buffer> factory::create_index_buffer(utki::span<const uint16_t> indices)
212212
{
213-
return utki::make_shared<index_buffer>(indices);
213+
return utki::make_shared<index_buffer>(
214+
this->get_renderer(), //
215+
indices
216+
);
214217
}
215218

216219
utki::shared_ref<ruis::render::index_buffer> factory::create_index_buffer(utki::span<const uint32_t> indices)
217220
{
218-
return utki::make_shared<index_buffer>(indices);
221+
return utki::make_shared<index_buffer>(
222+
this->get_renderer(), //
223+
indices
224+
);
219225
}
220226

221227
std::unique_ptr<ruis::render::factory::shaders> factory::create_shaders()

src/ruis/render/opengl/index_buffer.cpp

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,54 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2727

2828
using namespace ruis::render::opengl;
2929

30-
index_buffer::index_buffer(const void* data, size_t size_bytes, size_t size, GLenum element_type) :
30+
index_buffer::index_buffer(
31+
utki::shared_ref<ruis::render::renderer> renderer, //
32+
const void* data,
33+
size_t size_bytes,
34+
size_t size,
35+
GLenum element_type
36+
) :
37+
ruis::render::index_buffer(std::move(renderer)),
3138
element_type(element_type),
3239
elements_count(GLsizei(size))
3340
{
34-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->buffer);
41+
glBindBuffer(
42+
GL_ELEMENT_ARRAY_BUFFER, //
43+
this->buffer
44+
);
3545
assert_opengl_no_error();
3646

37-
glBufferData(GL_ELEMENT_ARRAY_BUFFER, GLsizeiptr(size_bytes), data, GL_STATIC_DRAW);
47+
glBufferData(
48+
GL_ELEMENT_ARRAY_BUFFER, //
49+
GLsizeiptr(size_bytes),
50+
data,
51+
GL_STATIC_DRAW
52+
);
3853
assert_opengl_no_error();
3954
}
4055

41-
index_buffer::index_buffer(utki::span<const uint16_t> indices) :
42-
index_buffer(indices.data(), indices.size_bytes(), indices.size(), GL_UNSIGNED_SHORT)
56+
index_buffer::index_buffer(
57+
utki::shared_ref<ruis::render::renderer> renderer, //
58+
utki::span<const uint16_t> indices
59+
) :
60+
index_buffer(
61+
std::move(renderer), //
62+
indices.data(),
63+
indices.size_bytes(),
64+
indices.size(),
65+
GL_UNSIGNED_SHORT
66+
)
4367
{}
4468

45-
index_buffer::index_buffer(utki::span<const uint32_t> indices) :
46-
index_buffer(indices.data(), indices.size_bytes(), indices.size(), GL_UNSIGNED_INT)
69+
index_buffer::index_buffer(
70+
utki::shared_ref<ruis::render::renderer> renderer, //
71+
utki::span<const uint32_t> indices
72+
) :
73+
index_buffer(
74+
std::move(renderer), //
75+
indices.data(),
76+
indices.size_bytes(),
77+
indices.size(),
78+
GL_UNSIGNED_INT
79+
)
4780
{}

src/ruis/render/opengl/index_buffer.hpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,23 @@ class index_buffer :
3737
const GLsizei elements_count;
3838

3939
private:
40-
index_buffer(const void* data, size_t size_bytes, size_t size, GLenum element_type);
40+
index_buffer(
41+
utki::shared_ref<ruis::render::renderer> renderer, //
42+
const void* data,
43+
size_t size_bytes,
44+
size_t size,
45+
GLenum element_type
46+
);
4147

4248
public:
43-
index_buffer(utki::span<const uint16_t> indices);
44-
index_buffer(utki::span<const uint32_t> indices);
49+
index_buffer(
50+
utki::shared_ref<ruis::render::renderer> renderer, //
51+
utki::span<const uint16_t> indices
52+
);
53+
index_buffer(
54+
utki::shared_ref<ruis::render::renderer> renderer, //
55+
utki::span<const uint32_t> indices
56+
);
4557

4658
index_buffer(const index_buffer&) = delete;
4759
index_buffer& operator=(const index_buffer&) = delete;

0 commit comments

Comments
 (0)