Remove usage of SOIL2, just use stb_image.h
This commit is contained in:
parent
2a72a30aa2
commit
ec1d6aebe7
|
@ -3,7 +3,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
|||
project(SimpleEngine)
|
||||
|
||||
include(cmrc/CMakeRC.cmake)
|
||||
include(CMake/Findsoil2.cmake)
|
||||
#include(CMake/Findsoil2.cmake)
|
||||
|
||||
# Add some CMake options:
|
||||
option(SIMPLE_ENGINE_BUILD_EXAMPLES "Build example projects" ON)
|
||||
|
@ -20,14 +20,29 @@ find_package(GLEW REQUIRED)
|
|||
find_package(glfw3 CONFIG REQUIRED)
|
||||
find_package(glm CONFIG REQUIRED)
|
||||
|
||||
if (WIN32)
|
||||
find_package(soil2 CONFIG REQUIRED)
|
||||
else()
|
||||
find_package(soil2 REQUIRED)
|
||||
endif()
|
||||
#if (WIN32)
|
||||
# find_package(soil2 CONFIG REQUIRED)
|
||||
#else()
|
||||
# find_package(soil2 REQUIRED)
|
||||
#endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
#include(FetchContent)
|
||||
#FetchContent_Declare(
|
||||
# stbImage
|
||||
# URL https://raw.githubusercontent.com/nothings/stb/5ba0baaa269b3fd681828e0e3b3ac0f1472eaf40/stb_image.h
|
||||
# DOWNLOAD_NO_EXTRACT
|
||||
#)
|
||||
#FetchContent_MakeAvailable(stbImage)
|
||||
|
||||
#include(ExternalProject)
|
||||
#ExternalProject_Add(stbImage
|
||||
# URL https://raw.githubusercontent.com/nothings/stb/5ba0baaa269b3fd681828e0e3b3ac0f1472eaf40/stb_image.h
|
||||
# URL_HASH MD5=d41d8cd98f00b204e9800998ecf8427e
|
||||
# DOWNLOAD_NO_EXTRACT ON
|
||||
#)
|
||||
|
||||
# Link sources
|
||||
file(GLOB_RECURSE source_list src/*.cpp)
|
||||
add_library(simpleengine STATIC ${source_list})
|
||||
|
@ -49,7 +64,7 @@ cmrc_add_resource_library(
|
|||
target_link_libraries(simpleengine PUBLIC GLEW::GLEW)
|
||||
target_link_libraries(simpleengine PUBLIC glfw)
|
||||
target_link_libraries(simpleengine PUBLIC ${GLM_LIBRARIES})
|
||||
target_link_libraries(simpleengine PUBLIC soil2)
|
||||
#target_link_libraries(simpleengine PUBLIC soil2)
|
||||
target_link_libraries(simpleengine PUBLIC ${OPENGL_LIBRARIES})
|
||||
target_link_libraries(simpleengine PRIVATE simpleengine_resources)
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
*.blend
|
||||
*.obj
|
||||
*.png
|
||||
*.bin
|
||||
*.gltf
|
|
@ -31,12 +31,6 @@
|
|||
#include <cmrc/cmrc.hpp>
|
||||
CMRC_DECLARE(resource_shaders);
|
||||
|
||||
#ifdef __linux__
|
||||
#include <SOIL2.h>
|
||||
#else
|
||||
#include <SOIL2/SOIL2.h>
|
||||
#endif
|
||||
|
||||
namespace se = simpleengine;
|
||||
|
||||
class FPSCounterEvent : public se::Event {
|
||||
|
@ -179,7 +173,7 @@ int main(int argc, char *argv[]) {
|
|||
auto entity = std::make_shared<simpleengine::Entity>();
|
||||
se::gfx::Model model(material, "examples/dev_testing/resources/dragon.obj");
|
||||
entity->add_component<se::ModelComponent>(model);
|
||||
entity->translate(5.f, 0.f, 0.f);
|
||||
entity->translate(12.f, -4.f, 0.f);
|
||||
|
||||
// Create a renderer and submit the entity into it.
|
||||
auto renderer = std::make_shared<se::gfx::Renderer>(game.get_window(), core_shader);
|
||||
|
|
|
@ -12,12 +12,6 @@
|
|||
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
#ifdef __linux__
|
||||
#include <SOIL2.h>
|
||||
#else
|
||||
#include <SOIL2/SOIL2.h>
|
||||
#endif
|
||||
|
||||
#include <stdexcept>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
|
@ -75,6 +69,7 @@ namespace simpleengine::gfx {
|
|||
Texture(std::vector<unsigned char> buffer, bool img_2d = true, bool mipmap = true);
|
||||
|
||||
void bind() const;
|
||||
void unbind() const;
|
||||
|
||||
unsigned int get_texture_id() const;
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,8 @@
|
|||
#include "gfx/texture.h"
|
||||
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
#include "stb_image.h"
|
||||
|
||||
namespace simpleengine::gfx {
|
||||
Texture::Texture(const char* path, bool img_2d, bool mipmap) {
|
||||
image_type = img_2d ? GL_TEXTURE_2D : GL_TEXTURE_3D;
|
||||
|
@ -12,17 +15,14 @@ namespace simpleengine::gfx {
|
|||
glTexParameteri(image_type, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
glTexParameteri(image_type, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
img_data = SOIL_load_image
|
||||
(
|
||||
path,
|
||||
&width, &height, &channels,
|
||||
SOIL_LOAD_RGBA
|
||||
);
|
||||
|
||||
if (!img_data) {
|
||||
std::cerr << "Failed to load texture from memory! (" << SOIL_last_result() << ")" << std::endl;
|
||||
// Read 4 channels (RGBA)
|
||||
img_data = stbi_load(path, &width, &height, &channels, 4);
|
||||
if(!img_data) {
|
||||
const char* failure = stbi_failure_reason();
|
||||
std::cerr << "Failed to load texture! (" << failure << ")" << std::endl;
|
||||
throw std::runtime_error("Failed to load texture from memory!");
|
||||
}
|
||||
std::cout << "Loaded image with a width of " << width << "px, a height of " << height << "px and " << channels << " channels" << std::endl;
|
||||
|
||||
glTexImage2D(image_type, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img_data);
|
||||
|
||||
|
@ -30,7 +30,6 @@ namespace simpleengine::gfx {
|
|||
glGenerateMipmap(image_type);
|
||||
}
|
||||
|
||||
SOIL_free_image_data(img_data);
|
||||
glBindTexture(image_type, 0);
|
||||
}
|
||||
|
||||
|
@ -53,17 +52,14 @@ namespace simpleengine::gfx {
|
|||
glTexParameteri(image_type, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
glTexParameteri(image_type, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
img_data = SOIL_load_image_from_memory
|
||||
(
|
||||
buffer, buffer_length,
|
||||
&width, &height, &channels,
|
||||
SOIL_LOAD_RGBA
|
||||
);
|
||||
|
||||
if (!img_data) {
|
||||
std::cerr << "Failed to load texture from memory! (" << SOIL_last_result() << ")" << std::endl;
|
||||
// Read 4 channels (RGBA)
|
||||
img_data = stbi_load_from_memory(buffer, buffer_length, &width, &height, &channels, 4);
|
||||
if(!img_data) {
|
||||
const char* failure = stbi_failure_reason();
|
||||
std::cerr << "Failed to load texture! (" << failure << ")" << std::endl;
|
||||
throw std::runtime_error("Failed to load texture from memory!");
|
||||
}
|
||||
std::cout << "Loaded image with a width of " << width << "px, a height of " << height << "px and " << channels << " channels" << std::endl;
|
||||
|
||||
glTexImage2D(image_type, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img_data);
|
||||
|
||||
|
@ -71,7 +67,6 @@ namespace simpleengine::gfx {
|
|||
glGenerateMipmap(image_type);
|
||||
}
|
||||
|
||||
SOIL_free_image_data(img_data);
|
||||
glBindTexture(image_type, 0);
|
||||
}
|
||||
|
||||
|
@ -91,6 +86,10 @@ namespace simpleengine::gfx {
|
|||
glBindTexture(image_type, texture_id);
|
||||
}
|
||||
|
||||
void Texture::unbind() const {
|
||||
glBindTexture(image_type, 0);
|
||||
}
|
||||
|
||||
unsigned int Texture::get_texture_id() const {
|
||||
return texture_id;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue