From 0c20db62b5852df13f811d39a647bc12ab9807a3 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Thu, 26 Dec 2019 07:28:54 +0700 Subject: [PATCH] remove cancel from defer, add buffer_view overload for create_shader function --- headers/enduro2d/core/render.hpp | 4 ++++ headers/enduro2d/utils/defer.hpp | 9 +-------- sources/enduro2d/core/render_impl/render_none.cpp | 8 ++++++++ sources/enduro2d/core/render_impl/render_opengl.cpp | 11 +++++++++++ untests/sources/untests_utils/buffer.cpp | 6 +++--- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/headers/enduro2d/core/render.hpp b/headers/enduro2d/core/render.hpp index e708ffff..e65402b1 100644 --- a/headers/enduro2d/core/render.hpp +++ b/headers/enduro2d/core/render.hpp @@ -906,6 +906,10 @@ namespace e2d shader_ptr create_shader( str_view vertex_source, str_view fragment_source); + + shader_ptr create_shader( + buffer_view vertex_source, + buffer_view fragment_source); shader_ptr create_shader( const input_stream_uptr& vertex_stream, diff --git a/headers/enduro2d/utils/defer.hpp b/headers/enduro2d/utils/defer.hpp index e569ffe9..4e680a54 100644 --- a/headers/enduro2d/utils/defer.hpp +++ b/headers/enduro2d/utils/defer.hpp @@ -19,17 +19,10 @@ namespace e2d : f_(std::move(f)) {} ~defer_impl() noexcept(std::is_nothrow_invocable_v) { - if ( !cancelled_ ) { - f_(); - } - } - - void cancel() noexcept { - cancelled_ = true; + f_(); } private: F f_; - bool cancelled_{false}; }; } diff --git a/sources/enduro2d/core/render_impl/render_none.cpp b/sources/enduro2d/core/render_impl/render_none.cpp index 4713cfd7..11cd3f50 100644 --- a/sources/enduro2d/core/render_impl/render_none.cpp +++ b/sources/enduro2d/core/render_impl/render_none.cpp @@ -180,6 +180,14 @@ namespace e2d return nullptr; } + shader_ptr render::create_shader( + buffer_view vertex_source, + buffer_view fragment_source) + { + E2D_UNUSED(vertex_source, fragment_source); + return nullptr; + } + shader_ptr render::create_shader( const input_stream_uptr& vertex_stream, const input_stream_uptr& fragment_stream) diff --git a/sources/enduro2d/core/render_impl/render_opengl.cpp b/sources/enduro2d/core/render_impl/render_opengl.cpp index 25580953..6d97d659 100644 --- a/sources/enduro2d/core/render_impl/render_opengl.cpp +++ b/sources/enduro2d/core/render_impl/render_opengl.cpp @@ -531,6 +531,17 @@ namespace e2d state_->dbg(), std::move(ps))); } + shader_ptr render::create_shader( + buffer_view vertex_source, + buffer_view fragment_source) + { + E2D_ASSERT(is_in_main_thread()); + + return create_shader( + str_view(reinterpret_cast(vertex_source.data()), vertex_source.size()), + str_view(reinterpret_cast(fragment_source.data()), fragment_source.size())); + } + shader_ptr render::create_shader( const input_stream_uptr& vertex, const input_stream_uptr& fragment) diff --git a/untests/sources/untests_utils/buffer.cpp b/untests/sources/untests_utils/buffer.cpp index 3345d160..dd8329df 100644 --- a/untests/sources/untests_utils/buffer.cpp +++ b/untests/sources/untests_utils/buffer.cpp @@ -221,10 +221,10 @@ TEST_CASE("buffer_view") { REQUIRE(v5.data() == b2.data()); REQUIRE(v5.size() == 20); - str32 b3 = make_utf32("hello"); + u32 b3[3] = {10, 20, 30}; buffer_view v6(b3); - REQUIRE(v6.data() == b3.data()); - REQUIRE(v6.size() == 20); + REQUIRE(v6.data() == &b3[0]); + REQUIRE(v6.size() == 12); } { const char* s0 = "hell";