aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/render/image.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-07-25 20:27:55 +0800
committerchai <chaifix@163.com>2018-07-25 20:27:55 +0800
commit0371f99359d1f58dbec6353234c2b1ebd86a7585 (patch)
tree59da821f194dd067e8bf196ebe422712cd975346 /src/libjin/render/image.cpp
parent128b6dd3e3a803e475ec03493ee26e6b20d7e42b (diff)
*image->texture
Diffstat (limited to 'src/libjin/render/image.cpp')
-rw-r--r--src/libjin/render/image.cpp95
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