Texture shenanigans
This commit is contained in:
parent
9c76df4faa
commit
eedca45463
|
@ -1,3 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#define HIBIS_VERSION "@version@"
|
||||
namespace hibis {
|
||||
#define HIBIS_VERSION "@version@"
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// TODO: pragma
|
||||
#define PRAGMA(x) _Pragma(#x)
|
||||
|
||||
#define MESSAGE(x) PRAGMA(message(x))
|
||||
#define TODO(x) PRAGMA(message("TODO: " x))
|
||||
#define MESSAGE(x) PRAGMA(message x)
|
||||
#define TODO(x) PRAGMA(message "TODO: " x)
|
||||
#define WARNING(x) PRAGMA(GCC warning x)
|
||||
#define ERROR(x) PRAGMA(GCC error x)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "../math/types.hpp"
|
||||
#include "../resources/resource.hpp"
|
||||
#include "../resources/texture.hpp"
|
||||
#include <string>
|
||||
|
||||
namespace hibis {
|
||||
|
@ -12,6 +13,7 @@ namespace hibis {
|
|||
virtual void renderCurrent() = 0;
|
||||
|
||||
virtual void drawText(Resource* resource, std::string text, IntVec2 pos, Color color) = 0;
|
||||
virtual void drawTexture(Texture* resource, float scale, IntVec2 pos) = 0;
|
||||
|
||||
// Pre and Post draw
|
||||
virtual void preDraw() = 0;
|
||||
|
|
20
core/resources/texture.cpp
Normal file
20
core/resources/texture.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include "texture.hpp"
|
||||
|
||||
namespace hibis {
|
||||
Texture::Texture(char* path) : mData(), mImageWidth(0), mImageHeight(0), mBuffer() {
|
||||
unsigned int error = lodepng::load_file(mBuffer, path);
|
||||
if (error) {
|
||||
TODO("error message")
|
||||
return;
|
||||
}
|
||||
|
||||
error = lodepng::decode(mData, mImageWidth, mImageHeight, mBuffer);
|
||||
|
||||
if (error) {
|
||||
TODO("error message")
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Texture::~Texture() {}
|
||||
}
|
|
@ -1,11 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <lodepng/lodepng.h>
|
||||
|
||||
#include "resource.hpp"
|
||||
#include "../pragmautil.hpp"
|
||||
|
||||
namespace hibis {
|
||||
TODO("Make this function")
|
||||
class Texture : Resource {
|
||||
void* mData;
|
||||
public:
|
||||
Texture(char* path);
|
||||
~Texture();
|
||||
std::vector<unsigned char> mData;
|
||||
unsigned int mImageWidth, mImageHeight;
|
||||
private:
|
||||
std::vector<unsigned char> mBuffer;
|
||||
};
|
||||
}
|
||||
|
|
1
external/.kdev_ignore
vendored
Normal file
1
external/.kdev_ignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
ignore
|
1
external/CImg
vendored
Submodule
1
external/CImg
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 63e1732c18305951a8a25d1d78138cce31da8c9c
|
6991
external/lodepng/lodepng.cpp
vendored
Normal file
6991
external/lodepng/lodepng.cpp
vendored
Normal file
File diff suppressed because it is too large
Load diff
2089
external/lodepng/lodepng.h
vendored
Normal file
2089
external/lodepng/lodepng.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
@ -8,11 +8,12 @@ confdata.set('version', meson.project_version())
|
|||
configure_file(input: 'core/enginever.in.hpp', output: 'enginever.hpp', configuration: confdata)
|
||||
|
||||
# Include Directory
|
||||
include_dirs = [] # include_directories('./include')
|
||||
include_dirs = include_directories('./external')
|
||||
|
||||
# Files
|
||||
libhibis_src_core = files('core/engine/engine.cpp')
|
||||
libhibis_src = [libhibis_src_core]
|
||||
libhibis_src_resources = files('core/resources/texture.cpp')
|
||||
libhibis_src = [libhibis_src_core, libhibis_src_resources]
|
||||
|
||||
libhibis_rsdl_src = files('renderer/rsdl/rsdl.cpp', 'renderer/rsdl/resources/font.cpp')
|
||||
libhibis_test_src = files('test/app.cpp')
|
||||
|
@ -21,8 +22,9 @@ libhibis_test_src = files('test/app.cpp')
|
|||
libsdl2 = dependency('SDL2')
|
||||
libsdl2_ttf = dependency('SDL2_ttf')
|
||||
libfmt = dependency('fmt')
|
||||
liblodepng = static_library('lodepng', 'external/lodepng/lodepng.cpp')
|
||||
|
||||
# Compile
|
||||
libhibis = library('hibis', libhibis_src, include_directories: include_dirs)
|
||||
libhibis = library('hibis', libhibis_src, include_directories: include_dirs, link_with: liblodepng)
|
||||
libhibis_rsdl = library('hibis_rsdl', libhibis_rsdl_src, include_directories: [include_dirs, './core'], link_with: libhibis, dependencies: [libsdl2, libsdl2_ttf, libfmt])
|
||||
hibistest = executable('hibistest.exec', libhibis_test_src, include_directories: [include_dirs, './core', './renderer/rsdl'], link_with: [libhibis, libhibis_rsdl], dependencies: [libsdl2, libsdl2_ttf, libfmt])
|
||||
|
|
|
@ -77,6 +77,13 @@ namespace hibis::rsdl {
|
|||
}
|
||||
}
|
||||
|
||||
void RSDL::drawTexture(Texture* resource, float scale, hibis::IntVec2 pos) {
|
||||
if (resource->mData.empty()) return;
|
||||
|
||||
TODO("this nonsense")
|
||||
return;
|
||||
}
|
||||
|
||||
void RSDL::preDraw() {}
|
||||
void RSDL::postDraw() {}
|
||||
|
||||
|
|
|
@ -19,18 +19,19 @@ namespace hibis::rsdl {
|
|||
|
||||
~RSDL();
|
||||
|
||||
void clearScreen(Color col = Color {0, 0, 0, 255});
|
||||
void clearScreen(Color col = Color {0, 0, 0, 255}) override;
|
||||
|
||||
void renderCurrent();
|
||||
void renderCurrent() override;
|
||||
|
||||
void drawText(Resource* resource, std::string text, IntVec2 pos, Color color);
|
||||
void drawText(Resource* resource, std::string text, IntVec2 pos, Color color) override;
|
||||
void drawTexture(Texture* resource, float scale, hibis::IntVec2 pos) override;
|
||||
|
||||
void preDraw();
|
||||
void postDraw();
|
||||
void preDraw() override;
|
||||
void postDraw() override;
|
||||
|
||||
void update();
|
||||
void update() override;
|
||||
|
||||
void setWindowTitle(std::string title);
|
||||
void setWindowTitle(std::string title) override;
|
||||
|
||||
private:
|
||||
SDL_Window* mWindow;
|
||||
|
|
|
@ -53,6 +53,8 @@ int main() {
|
|||
Font font = Font("/usr/share/fonts/noto/NotoSans-Light.ttf", 16);
|
||||
#endif
|
||||
|
||||
Texture image = Texture((char*)"test.png");
|
||||
|
||||
unsigned char red = 0;
|
||||
bool increaseRed = true;
|
||||
bool increaseSize = true;
|
||||
|
@ -84,6 +86,7 @@ int main() {
|
|||
// Clear screen then sleep for ~16ms
|
||||
renderer.clearScreen(Color {red, 0, 0, 255});
|
||||
renderer.drawText(&font, "Testing Text", IntVec2 {0, 0}, Color {255, 255, 255, 255});
|
||||
renderer.drawTexture(&image, 1.0f, IntVec2 {10, 10});
|
||||
|
||||
engine.drawNodes();
|
||||
renderer.renderCurrent();
|
||||
|
|
Loading…
Reference in a new issue