Skip to content
Snippets Groups Projects
Commit d2bba1be authored by BATON Theau's avatar BATON Theau
Browse files

Avoid binding of fbo for empty layers

parent 112e3c42
No related branches found
No related tags found
No related merge requests found
...@@ -22,8 +22,10 @@ namespace megu { ...@@ -22,8 +22,10 @@ namespace megu {
// Draw Layers // Draw Layers
TextureArray textures; TextureArray textures;
for(auto & [priority, layer] : this->_layers) { for(auto & [priority, layer] : this->_layers) {
if(!layer.get()->empty()) {
textures.push_back(layer->draw(this->_window, textures)); textures.push_back(layer->draw(this->_window, textures));
} }
}
// Merge Textures // Merge Textures
FrameBuffer::BindDefaultFrameBuffer(); FrameBuffer::BindDefaultFrameBuffer();
......
...@@ -16,6 +16,8 @@ namespace megu { ...@@ -16,6 +16,8 @@ namespace megu {
void push(Priority, const DrawGroup &); void push(Priority, const DrawGroup &);
inline bool empty() const {return this->_objects.empty();}
virtual const Texture & draw(const Window &, const TextureArray &) const; virtual const Texture & draw(const Window &, const TextureArray &) const;
private: private:
......
...@@ -42,6 +42,7 @@ int main(int argc, const char * argv[]) { ...@@ -42,6 +42,7 @@ int main(int argc, const char * argv[]) {
//? Group //? Group
megu::ImageGroup group; megu::ImageGroup group;
megu::ImageGroup group_2; megu::ImageGroup group_2;
megu::ImageGroup group_3;
std::cout << "Group Inited" << std::endl; std::cout << "Group Inited" << std::endl;
...@@ -94,7 +95,7 @@ int main(int argc, const char * argv[]) { ...@@ -94,7 +95,7 @@ int main(int argc, const char * argv[]) {
std::cout << "Image Inited 1" << std::endl; std::cout << "Image Inited 1" << std::endl;
//? Image 1 //? Image 2
std::vector<int> map_2 = { std::vector<int> map_2 = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
...@@ -138,6 +139,52 @@ int main(int argc, const char * argv[]) { ...@@ -138,6 +139,52 @@ int main(int argc, const char * argv[]) {
i.get()->setSize({32.f, 32.f}); i.get()->setSize({32.f, 32.f});
} }
std::cout << "Image Inited 3" << std::endl;
//? Image 2
std::vector<int> map_3 = {
1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
};
size_t x_3 = 0;
size_t y_3 = 0;
std::vector<std::unique_ptr<megu::Image>> images_3;
megu::Texture texture_4;
texture_4.store(megu::TextureBuffer("assets/textures/Cube_Green.png"));
for(auto id : map_3) {
if(x_3 == 10) {
x_3 = 0;
++y_3;
}
if(id != 0) {
images_3.push_back(std::make_unique<megu::Image>(texture_4));
glm::vec2 pos = to_screen_coordinate({x_3, y_3}, 32.f, 32.f, 2.f);
images_3.back()->setPosition({pos.x + 25, pos.y});
}
++x_3;
}
for(auto & i : images_3) {
group_3.add(*i);
i.get()->setSize({32.f, 32.f});
}
std::cout << "Image Inited 2" << std::endl; std::cout << "Image Inited 2" << std::endl;
//? ImGui //? ImGui
...@@ -151,7 +198,9 @@ int main(int argc, const char * argv[]) { ...@@ -151,7 +198,9 @@ int main(int argc, const char * argv[]) {
engine.push(0, basic_renderer); engine.push(0, basic_renderer);
engine.push(1, basic_renderer); engine.push(1, basic_renderer);
engine.push(2, basic_renderer);
engine.push(1, 1, group_3);
engine.push(1, 0, group); engine.push(1, 0, group);
engine.push(0, 0, group_2); engine.push(0, 0, group_2);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment