[Linux] Rendering a sprite in the same window garbles dialog text · Issue #8 · SFML/imgui-sfml (original) (raw)
Without rendering sf::Sprite
:
With rendering sf::Sprite
:
This is taken directly from the sample program, but with a few lines added to load/render the sprite.
#include "imgui/imgui.h" #include "imgui/imgui-SFML.h"
#include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Graphics/Texture.hpp> #include <SFML/Graphics/Sprite.hpp> #include <SFML/System/Clock.hpp> #include <SFML/Window/Event.hpp>
int main() { sf::RenderWindow window(sf::VideoMode(640, 480), ""); window.setVerticalSyncEnabled(true); ImGui::SFML::Init(window);
sf::Texture texture;
texture.loadFromFile("image.jpg");
sf::Sprite sprite;
sprite.setTexture(texture);
sf::Color bgColor;
float color[3] = { 0.f, 0.f, 0.f };
// let's use char array as buffer, see next part
// for instructions on using std::string with ImGui
char windowTitle[255] = "ImGui + SFML = <3";
window.setTitle(windowTitle);
sf::Clock deltaClock;
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
ImGui::SFML::ProcessEvent(event);
if (event.type == sf::Event::Closed) {
window.close();
}
}
ImGui::SFML::Update(deltaClock.restart());
ImGui::Begin("Sample window"); // begin window
// Background color edit
if (ImGui::ColorEdit3("Background color", color)) {
// this code gets called if color value changes, so
// the background color is upgraded automatically!
bgColor.r = static_cast<sf::Uint8>(color[0] * 255.f);
bgColor.g = static_cast<sf::Uint8>(color[1] * 255.f);
bgColor.b = static_cast<sf::Uint8>(color[2] * 255.f);
}
// Window title text edit
ImGui::InputText("Window title", windowTitle, 255);
if (ImGui::Button("Update window title")) {
// this code gets if user clicks on the button
// yes, you could have written if(ImGui::InputText(...))
// but I do this to show how buttons work :)
window.setTitle(windowTitle);
}
// Demo
// ImGui::ShowTestWindow();
ImGui::End(); // end window
window.clear(bgColor); // fill background with color
ImGui::Render();
window.draw(sprite);
window.display();
}
ImGui::SFML::Shutdown();
}
The only difference between the two screenshots was commenting out window.draw(sprite)
.
Have you seen this before?