From 98168435c1ce44bc939233faf16a48cbee1ce982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Tue, 4 Feb 2020 14:36:21 +0100 Subject: [PATCH] Start of sfml --- main.cpp | 6 ++++++ sources/Renderer/SFRenderer.cpp | 16 +++++----------- sources/Renderer/SFRenderer.hpp | 6 ++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/main.cpp b/main.cpp index 6d5afbc..75f71c3 100644 --- a/main.cpp +++ b/main.cpp @@ -4,7 +4,9 @@ #include #include +#include "sources/Renderer/IRenderer.hpp" #include "sources/SNES.hpp" +#include "sources/Renderer/SFRenderer.hpp" using namespace ComSquare; @@ -16,5 +18,9 @@ int main(int argc, char **argv) } Memory::MemoryBus bus; SNES snes(std::make_shared(bus), argv[1]); + bus.mapComponents(snes); + + Renderer::SFRenderer renderer(600, 800, 60); + return 0; } \ No newline at end of file diff --git a/sources/Renderer/SFRenderer.cpp b/sources/Renderer/SFRenderer.cpp index 70f2c8d..cbd5c1f 100644 --- a/sources/Renderer/SFRenderer.cpp +++ b/sources/Renderer/SFRenderer.cpp @@ -18,21 +18,14 @@ namespace ComSquare::Renderer void SFRenderer::drawScreen() { - sf::Sprite sprite; - sf::Image image; - image.loadFromMemory(this->pixelBuffer, sizeof(sf::Uint8 *) * this->videoMode.height * this->videoMode.width * 4); - - //image.LoadFromPixels(800, 600, this->pixelBuffer); - //sprite.SetImage(image); - //window.Draw(sprite); - //window.Display(); + this->texture.update(this->pixelBuffer); + this->sprite.setTexture(this->texture, false); + this->renderer.draw(this->sprite); } void SFRenderer::putPixel(int x, int y, uint8_t rgba) { - (void) x; - (void) y; - (void) rgba; + this->pixelBuffer[this->videoMode.width * x + y] = rgba; } SFRenderer::SFRenderer(unsigned int height, unsigned int width, int maxFPS) @@ -44,6 +37,7 @@ namespace ComSquare::Renderer // note the size of the buffer is multiplied by 4 due to rgba values this->window.create(this->videoMode, "ComSquare Emulator", sf::Style::Default); this->window.setFramerateLimit(maxFPS); + this->texture.create(width, height); } } diff --git a/sources/Renderer/SFRenderer.hpp b/sources/Renderer/SFRenderer.hpp index d37e5cc..c248ad7 100644 --- a/sources/Renderer/SFRenderer.hpp +++ b/sources/Renderer/SFRenderer.hpp @@ -18,10 +18,16 @@ namespace ComSquare::Renderer private: //! @brief The main Window. sf::Window window; + //! @brief The Renderer for the window. + sf::RenderWindow renderer; //! @brief Video Mode containing the height and width of the window. sf::VideoMode videoMode; //! @brief The buffer containing all of our pixels sf::Uint8 *pixelBuffer; + //! @brief The texture to render the array of pixels + sf::Texture texture; + //! @brief The sprite to render the array of pixels + sf::Sprite sprite; public: //! @brief Set a new name to the window, if there is already a name it will be overwrite. //! @param newWindowName new title for the window.