Skip to content

sf::RenderTexture displays upside down #35

Closed
@kevvo1288

Description

@kevvo1288

I'm not sure if this is the same issue as #11 but RenderTextures seem to be flipped upside down. I've attached a minimal program to produce the issue. The sprite shows right-side up if I render it using RenderWindow::draw() but if I use ImGui::Image() it is upside down. Rendering the raw sf::RenderTexture using ImGui::Image() also results in an upside down image.
If I do the same test using an image loaded from a file into a sf::Texture instead of the sf::RenderTexture, everything renders just fine.

#include "imgui.h"
#include "imgui-SFML.h"

#include <SFML/System/Clock.hpp>
#include <SFML/Window/Event.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{
	sf::RenderWindow window(sf::VideoMode(640, 480), "");
	window.setFramerateLimit(60);
	ImGui::SFML::Init(window);

	bool show = true;
	
	sf::RenderTexture renderTexture;
	if (!renderTexture.create(32, 32))
	{
		std::cout << "error renderTexture\n";
		return 1;
	}
	sf::Sprite sprite(renderTexture.getTexture());
	sf::RectangleShape rect(sf::Vector2f(16, 16));
	rect.setFillColor(sf::Color::White);
	rect.setPosition(0, 0);
	renderTexture.clear(sf::Color::Green);
	renderTexture.draw(rect);
	renderTexture.display();

	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(window, deltaClock.restart());
		
		ImGui::Begin("Sprite Test");
		//ImGui will render this upside down
		ImGui::Image(sprite);
		ImGui::End();

		ImGui::Begin("RenderTexture Test");
		//ImGui will render this upside down
		ImGui::Image(renderTexture.getTexture());
		ImGui::End();
		
		window.clear(sf::Color::Black);
		//SFML renders ok
		window.draw(sprite);
		//But IMGUI seems to render these upside down
		ImGui::SFML::Render(window);
		window.display();
	}

	ImGui::SFML::Shutdown();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions