diff options
author | chai <chaifix@163.com> | 2018-07-25 20:27:55 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-07-25 20:27:55 +0800 |
commit | 0371f99359d1f58dbec6353234c2b1ebd86a7585 (patch) | |
tree | 59da821f194dd067e8bf196ebe422712cd975346 /src/libjin/render/image.cpp | |
parent | 128b6dd3e3a803e475ec03493ee26e6b20d7e42b (diff) |
*image->texture
Diffstat (limited to 'src/libjin/render/image.cpp')
-rw-r--r-- | src/libjin/render/image.cpp | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/src/libjin/render/image.cpp b/src/libjin/render/image.cpp deleted file mode 100644 index 564b54e..0000000 --- a/src/libjin/render/image.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include <fstream> -#include "image.h" -#include "3rdparty/stb/stb_image.h" -#include "../utils/utils.h" -#include "../math/math.h" - -namespace jin -{ -namespace render -{ - - Image* Image::createImage(const char* file) - { - std::ifstream fs; - fs.open(file, std::ios::binary); - Image* img = nullptr; - if (fs.is_open()) - { - fs.seekg(0, std::ios::end); - int size = fs.tellg(); - fs.seekg(0, std::ios::beg); - char* buffer = (char*)malloc(size); - memset(buffer, 0, size); - fs.read(buffer, size); - img = createImage(buffer, size); - free(buffer); - } - fs.close(); - return img; - } - - Image* Image::createImage(const void* mem, size_t size) - { - Image* img = new Image(); - if(!img->loadb(mem, size)) - { - delete img; - img = nullptr; - } - return img; - } - - Image::Image() - : Drawable(), pixels(0) - { - } - - Image::~Image() - { - stbi_image_free(pixels); - } - - color Image::getPixel(int x, int y) - { - if (without(x, 0, width) || without(y, 0, height)) - { - return { 0 }; - } - return pixels[x + y * width]; - } - - bool Image::loadb(const void* b, size_t size) - { - // ʹstbi_load_from_memory - unsigned char* imageData = stbi_load_from_memory((unsigned char *)b, size, &width, &height, NULL, STBI_rgb_alpha); - if (imageData == 0) return false; - pixels = (color*)imageData; - - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData); - - // set render vertices - Drawable::setVertices( - new float [DRAWABLE_V_SIZE] { - 0, 0, - 0, (float)height, - (float)width, (float)height, - (float)width, 0, - }, - new float [DRAWABLE_V_SIZE] { - 0, 0, - 0, 1, - 1, 1, - 1, 0 - } - ); - - return true; - } -} -}
\ No newline at end of file |