set_viewport as rect

This commit is contained in:
2018-10-24 19:25:32 +07:00
parent 51fc632125
commit 5624936f58
6 changed files with 14 additions and 16 deletions

View File

@@ -758,7 +758,7 @@ namespace e2d
render& clear_depth_buffer(f32 value) noexcept; render& clear_depth_buffer(f32 value) noexcept;
render& clear_stencil_buffer(u8 value) noexcept; render& clear_stencil_buffer(u8 value) noexcept;
render& clear_color_buffer(const color& value) noexcept; render& clear_color_buffer(const color& value) noexcept;
render& set_viewport(const v2u& pos, const v2u& size) noexcept; render& set_viewport(const r4u& rect) noexcept;
render& set_render_target(const render_target_ptr& rt) noexcept; render& set_render_target(const render_target_ptr& rt) noexcept;
private: private:
class internal_state; class internal_state;

View File

@@ -120,8 +120,7 @@ int e2d_main() {
the<vfs>().open(url("ships://ship (19).png"))); the<vfs>().open(url("ships://ship (19).png")));
const auto shader = the<render>().create_shader( const auto shader = the<render>().create_shader(
make_memory_stream(buffer(vs_source_cstr, std::strlen(vs_source_cstr))), vs_source_cstr, fs_source_cstr);
make_memory_stream(buffer(fs_source_cstr, std::strlen(fs_source_cstr))));
const auto indices = generate_quad_indices(); const auto indices = generate_quad_indices();
const auto index_buffer = the<render>().create_index_buffer( const auto index_buffer = the<render>().create_index_buffer(

View File

@@ -178,8 +178,7 @@ int e2d_main() {
the<vfs>().open(url("ships://ship (3).png"))); the<vfs>().open(url("ships://ship (3).png")));
const auto shader = the<render>().create_shader( const auto shader = the<render>().create_shader(
make_memory_stream(buffer(vs_source_cstr, std::strlen(vs_source_cstr))), vs_source_cstr, fs_source_cstr);
make_memory_stream(buffer(fs_source_cstr, std::strlen(fs_source_cstr))));
const auto indices = generate_cube_indices(); const auto indices = generate_cube_indices();
const auto index_buffer = the<render>().create_index_buffer( const auto index_buffer = the<render>().create_index_buffer(

View File

@@ -133,8 +133,7 @@ int e2d_main() {
the<vfs>().open(url("ships://ship (3).png"))); the<vfs>().open(url("ships://ship (3).png")));
const auto shader = the<render>().create_shader( const auto shader = the<render>().create_shader(
make_memory_stream(buffer(vs_source_cstr, std::strlen(vs_source_cstr))), vs_source_cstr, fs_source_cstr);
make_memory_stream(buffer(fs_source_cstr, std::strlen(fs_source_cstr))));
const auto indices = generate_cube_indices(); const auto indices = generate_cube_indices();
const auto index_buffer = the<render>().create_index_buffer( const auto index_buffer = the<render>().create_index_buffer(
@@ -214,7 +213,7 @@ int e2d_main() {
the<render>() the<render>()
.set_render_target(rt) .set_render_target(rt)
.set_viewport(v2u::zero(), rt->size()) .set_viewport(rt->size())
.clear_depth_buffer(1.f) .clear_depth_buffer(1.f)
.clear_stencil_buffer(0) .clear_stencil_buffer(0)
.clear_color_buffer({0.f, 0.4f, 0.f, 1.f}) .clear_color_buffer({0.f, 0.4f, 0.f, 1.f})
@@ -228,7 +227,7 @@ int e2d_main() {
the<render>() the<render>()
.set_render_target(nullptr) .set_render_target(nullptr)
.set_viewport(v2u::zero(), the<window>().real_size()) .set_viewport(the<window>().real_size())
.clear_depth_buffer(1.f) .clear_depth_buffer(1.f)
.clear_stencil_buffer(0) .clear_stencil_buffer(0)
.clear_color_buffer({1.f, 0.4f, 0.f, 1.f}) .clear_color_buffer({1.f, 0.4f, 0.f, 1.f})

View File

@@ -253,8 +253,8 @@ namespace e2d
return *this; return *this;
} }
render& render::set_viewport(const v2u& pos, const v2u& size) noexcept { render& render::set_viewport(const r4u& rect) noexcept {
E2D_UNUSED(pos, size); E2D_UNUSED(rect);
return *this; return *this;
} }

View File

@@ -849,16 +849,17 @@ namespace e2d
return *this; return *this;
} }
render& render::set_viewport(const v2u& pos, const v2u& size) noexcept { render& render::set_viewport(const r4u& rect) noexcept {
E2D_ASSERT( E2D_ASSERT(
std::this_thread::get_id() == std::this_thread::get_id() ==
modules::main_thread<render>()); modules::main_thread<render>());
const r4u vp = make_minmax_rect(rect);
GL_CHECK_CODE(state_->dbg(), glViewport( GL_CHECK_CODE(state_->dbg(), glViewport(
math::numeric_cast<GLint>(pos.x), math::numeric_cast<GLint>(vp.position.x),
math::numeric_cast<GLint>(pos.y), math::numeric_cast<GLint>(vp.position.y),
math::numeric_cast<GLsizei>(size.x), math::numeric_cast<GLsizei>(vp.size.x),
math::numeric_cast<GLsizei>(size.y))); math::numeric_cast<GLsizei>(vp.size.y)));
return *this; return *this;
} }