viewport_command to int coord

This commit is contained in:
2020-01-27 03:56:53 +07:00
parent ad81e7e5df
commit 3c58d83d8c
12 changed files with 28 additions and 36 deletions

View File

@@ -816,23 +816,23 @@ namespace e2d
class viewport_command final {
public:
viewport_command() = delete;
viewport_command(const b2u& viewport_rect) noexcept;
viewport_command(const b2u& viewport_rect, const b2u& scissor_rect) noexcept;
viewport_command(const b2i& viewport_rect) noexcept;
viewport_command(const b2i& viewport_rect, const b2i& scissor_rect) noexcept;
viewport_command& viewport_rect(const b2u& value) noexcept;
viewport_command& scissor_rect(const b2u& value) noexcept;
viewport_command& viewport_rect(const b2i& value) noexcept;
viewport_command& scissor_rect(const b2i& value) noexcept;
viewport_command& scissoring(bool value) noexcept;
b2u& viewport_rect() noexcept;
b2u& scissor_rect() noexcept;
b2i& viewport_rect() noexcept;
b2i& scissor_rect() noexcept;
bool& scissoring() noexcept;
const b2u& viewport_rect() const noexcept;
const b2u& scissor_rect() const noexcept;
const b2i& viewport_rect() const noexcept;
const b2i& scissor_rect() const noexcept;
bool scissoring() const noexcept;
private:
b2u viewport_rect_ = b2u::zero();
b2u scissor_rect_ = b2u::zero();
b2i viewport_rect_ = b2i::zero();
b2i scissor_rect_ = b2i::zero();
bool scissoring_ = false;
};

View File

@@ -193,7 +193,7 @@ namespace
the<render>().execute(render::command_block<64>()
.add_command(render::viewport_command(
the<window>().framebuffer_size()))
the<window>().framebuffer_size().cast_to<i32>()))
.add_command(render::clear_command()
.color_value({1.f, 0.4f, 0.f, 1.f}))
.add_command(render::draw_command(material_, geometry_)));

View File

@@ -254,7 +254,7 @@ namespace
the<render>().execute(render::command_block<64>()
.add_command(render::viewport_command(
the<window>().framebuffer_size()))
the<window>().framebuffer_size().cast_to<i32>()))
.add_command(render::clear_command()
.color_value({1.f, 0.4f, 0.f, 1.f}))
.add_command(render::draw_command(material_, geometry_)));

View File

@@ -224,7 +224,7 @@ namespace
the<render>().execute(render::command_block<64>()
.add_command(render::target_command(render_target_))
.add_command(render::viewport_command(render_target_->size()))
.add_command(render::viewport_command(render_target_->size().cast_to<i32>()))
.add_command(render::clear_command()
.color_value({0.f, 0.4f, 0.f, 1.f}))
.add_command(render::draw_command(material_, geometry_, tex_props_)));
@@ -233,8 +233,8 @@ namespace
.add_command(render::target_command(nullptr))
.add_command(render::clear_command()
.color_value(color::blue()))
.add_command(render::viewport_command(the<window>().framebuffer_size())
.scissor_rect(make_rect(v2u{100u}, the<window>().framebuffer_size() - 200u)))
.add_command(render::viewport_command(the<window>().framebuffer_size().cast_to<i32>())
.scissor_rect(make_rect(v2i{100}, the<window>().framebuffer_size().cast_to<i32>() - 200)))
.add_command(render::clear_command()
.color_value({1.f, 0.4f, 0.f, 1.f}))
.add_command(render::draw_command(material_, geometry_, rt_props_)));

View File

@@ -49,8 +49,6 @@ namespace
owner.for_joined_components<camera>(
[](const ecs::const_entity&, camera& cam){
if ( !cam.target() ) {
cam.viewport(
the<window>().framebuffer_size());
cam.projection(math::make_orthogonal_lh_matrix4(
the<window>().real_size().cast_to<f32>(), 0.f, 1000.f));
}

View File

@@ -42,8 +42,6 @@ namespace
owner.for_joined_components<camera>(
[](const ecs::const_entity&, camera& cam){
if ( !cam.target() ) {
cam.viewport(
the<window>().framebuffer_size());
cam.projection(math::make_orthogonal_lh_matrix4(
the<window>().real_size().cast_to<f32>(), 0.f, 1000.f));
}

View File

@@ -67,7 +67,7 @@ namespace
void frame_render() final {
the<render>().execute(render::command_block<64>()
.add_command(render::viewport_command(
the<window>().framebuffer_size()))
the<window>().framebuffer_size().cast_to<i32>()))
.add_command(render::clear_command()
.color_value({1.f, 0.4f, 0.f, 1.f})));
}

View File

@@ -80,8 +80,6 @@ namespace
owner.for_joined_components<camera>(
[](const ecs::const_entity&, camera& cam){
if ( !cam.target() ) {
cam.viewport(
the<window>().framebuffer_size());
cam.projection(math::make_orthogonal_lh_matrix4(
the<window>().real_size().cast_to<f32>(), 0.f, 1000.f));
}

View File

@@ -42,8 +42,6 @@ namespace
owner.for_joined_components<camera>(
[](const ecs::const_entity&, camera& cam){
if ( !cam.target() ) {
cam.viewport(
the<window>().framebuffer_size());
cam.projection(math::make_orthogonal_lh_matrix4(
the<window>().real_size().cast_to<f32>(), 0.f, 1000.f));
}

View File

@@ -174,8 +174,8 @@ namespace e2d
render_.execute(render::command_block<8>()
.add_command(render::viewport_command(
framebuffer_size.cast_to<u32>(),
clip_r.cast_to<u32>()))
framebuffer_size.cast_to<i32>(),
clip_r.cast_to<i32>()))
.add_command(render::draw_command(material_, geometry, mprops_)
.index_range(first_index, pcmd.ElemCount)));
}

View File

@@ -1076,20 +1076,20 @@ namespace e2d
// viewport_command
//
render::viewport_command::viewport_command(const b2u& viewport_rect) noexcept
render::viewport_command::viewport_command(const b2i& viewport_rect) noexcept
: viewport_rect_(viewport_rect) {}
render::viewport_command::viewport_command(const b2u& viewport_rect, const b2u& scissor_rect) noexcept
render::viewport_command::viewport_command(const b2i& viewport_rect, const b2i& scissor_rect) noexcept
: viewport_rect_(viewport_rect)
, scissor_rect_(scissor_rect)
, scissoring_(true) {}
render::viewport_command& render::viewport_command::viewport_rect(const b2u& value) noexcept {
render::viewport_command& render::viewport_command::viewport_rect(const b2i& value) noexcept {
viewport_rect_ = value;
return *this;
}
render::viewport_command& render::viewport_command::scissor_rect(const b2u& value) noexcept {
render::viewport_command& render::viewport_command::scissor_rect(const b2i& value) noexcept {
scissor_rect_ = value;
scissoring_ = true;
return *this;
@@ -1100,11 +1100,11 @@ namespace e2d
return *this;
}
b2u& render::viewport_command::viewport_rect() noexcept {
b2i& render::viewport_command::viewport_rect() noexcept {
return viewport_rect_;
}
b2u& render::viewport_command::scissor_rect() noexcept {
b2i& render::viewport_command::scissor_rect() noexcept {
return scissor_rect_;
}
@@ -1112,11 +1112,11 @@ namespace e2d
return scissoring_;
}
const b2u& render::viewport_command::viewport_rect() const noexcept {
const b2i& render::viewport_command::viewport_rect() const noexcept {
return viewport_rect_;
}
const b2u& render::viewport_command::scissor_rect() const noexcept {
const b2i& render::viewport_command::scissor_rect() const noexcept {
return scissor_rect_;
}

View File

@@ -1032,7 +1032,7 @@ namespace e2d
render& render::execute(const viewport_command& command) {
E2D_ASSERT(is_in_main_thread());
const b2u viewport = math::make_minmax_rect(command.viewport_rect());
const b2i viewport = math::make_minmax_rect(command.viewport_rect());
GL_CHECK_CODE(state_->dbg(), glViewport(
math::numeric_cast<GLint>(viewport.position.x),
math::numeric_cast<GLint>(viewport.position.y),
@@ -1040,7 +1040,7 @@ namespace e2d
math::numeric_cast<GLsizei>(viewport.size.y)));
if ( command.scissoring() ) {
const b2u scissor = math::make_minmax_rect(command.scissor_rect());
const b2i scissor = math::make_minmax_rect(command.scissor_rect());
GL_CHECK_CODE(state_->dbg(), glScissor(
math::numeric_cast<GLint>(scissor.position.x),
math::numeric_cast<GLint>(scissor.position.y),