Fix text file reading

This commit is contained in:
Bailey Harrison 2022-11-22 21:50:06 +00:00
parent 97cd86e87b
commit 28a017e5e7
9 changed files with 2738 additions and 41 deletions

View File

@ -31,6 +31,7 @@ set(SRC_FILES
"src/resources/font.cpp" "src/resources/font.cpp"
"src/util/model_loader.cpp" "src/util/model_loader.cpp"
"src/util/files.cpp"
"src/resource_manager.cpp" "src/resource_manager.cpp"
@ -73,6 +74,7 @@ set(INCLUDE_FILES
"include/resources/font.hpp" "include/resources/font.hpp"
"include/util/model_loader.hpp" "include/util/model_loader.hpp"
"include/util/files.hpp"
"include/resource_manager.hpp" "include/resource_manager.hpp"
@ -202,15 +204,15 @@ target_link_libraries(${PROJECT_NAME} PUBLIC spdlog)
target_include_directories(${PROJECT_NAME} PUBLIC dependencies/spdlog/include) target_include_directories(${PROJECT_NAME} PUBLIC dependencies/spdlog/include)
# freetype # freetype
set(FT_DISABLE_ZLIB TRUE CACHE INTERNAL "" FORCE) #set(FT_DISABLE_ZLIB TRUE CACHE INTERNAL "" FORCE)
set(FT_DISABLE_BZIP2 TRUE CACHE INTERNAL "" FORCE) #set(FT_DISABLE_BZIP2 TRUE CACHE INTERNAL "" FORCE)
set(FT_DISABLE_PNG TRUE CACHE INTERNAL "" FORCE) #set(FT_DISABLE_PNG TRUE CACHE INTERNAL "" FORCE)
set(FT_DISABLE_HARFBUZZ TRUE CACHE INTERNAL "" FORCE) #set(FT_DISABLE_HARFBUZZ TRUE CACHE INTERNAL "" FORCE)
set(FT_DISABLE_BROTLI TRUE CACHE INTERNAL "" FORCE) #set(FT_DISABLE_BROTLI TRUE CACHE INTERNAL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE) #set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
add_subdirectory(dependencies/freetype) #add_subdirectory(dependencies/freetype)
target_link_libraries(${PROJECT_NAME} PRIVATE freetype) #target_link_libraries(${PROJECT_NAME} PRIVATE freetype)
target_include_directories(${PROJECT_NAME} PRIVATE dependencies/freetype/include) #target_include_directories(${PROJECT_NAME} PRIVATE dependencies/freetype/include)
# stb # stb
target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb) target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb)
@ -218,6 +220,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb)
# assimp # assimp
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
set(ASSIMP_BUILD_TESTS OFF CACHE INTERNAL "" FORCE) set(ASSIMP_BUILD_TESTS OFF CACHE INTERNAL "" FORCE)
set(ASSIMP_BUILD_ZLIB ON CACHE INTERNAL "" FORCE)
set(ASSIMP_NO_EXPORT OFF CACHE INTERNAL "" FORCE) set(ASSIMP_NO_EXPORT OFF CACHE INTERNAL "" FORCE)
set(ASSIMP_INSTALL OFF CACHE INTERNAL "" FORCE) set(ASSIMP_INSTALL OFF CACHE INTERNAL "" FORCE)
add_subdirectory(dependencies/assimp) add_subdirectory(dependencies/assimp)

11
include/util/files.hpp Normal file
View File

@ -0,0 +1,11 @@
#pragma once
#include <memory>
#include <vector>
#include <string>
namespace engine::util {
std::unique_ptr<std::vector<char>> readTextFile(const std::string& path);
}

View File

@ -8,6 +8,7 @@
#include "util.hpp" #include "util.hpp"
#include "config.h" #include "config.h"
#include "log.hpp" #include "log.hpp"
#include "util/files.hpp"
#define VOLK_IMPLEMENTATION #define VOLK_IMPLEMENTATION
#include <volk.h> #include <volk.h>
@ -224,20 +225,6 @@ namespace engine {
} }
static std::vector<char> readTextFile(const std::string& filename)
{
std::ifstream file(filename, std::ios::ate);
if (file.is_open() == false) {
throw std::runtime_error("Unable to open file " + filename);
}
std::vector<char> buffer(file.tellg());
file.seekg(0);
file.read(buffer.data(), buffer.size());
file.close();
return buffer;
}
static std::vector<const char*> getRequiredVulkanExtensions(SDL_Window* window) static std::vector<const char*> getRequiredVulkanExtensions(SDL_Window* window)
{ {
SDL_bool res; SDL_bool res;
@ -1686,12 +1673,12 @@ namespace engine {
gfx::Pipeline* pipeline = new gfx::Pipeline; gfx::Pipeline* pipeline = new gfx::Pipeline;
auto vertShaderCode = readTextFile(vertShaderPath); auto vertShaderCode = util::readTextFile(vertShaderPath);
auto fragShaderCode = readTextFile(fragShaderPath); auto fragShaderCode = util::readTextFile(fragShaderPath);
INFO("Opened shader: {}", std::filesystem::path(vertShaderPath).filename().string()); INFO("Opened shader: {}", std::filesystem::path(vertShaderPath).filename().string());
VkShaderModule vertShaderModule = compileShader(pimpl->device, shaderc_vertex_shader, vertShaderCode.data(), vertShaderPath); VkShaderModule vertShaderModule = compileShader(pimpl->device, shaderc_vertex_shader, vertShaderCode->data(), vertShaderPath);
VkShaderModule fragShaderModule = compileShader(pimpl->device, shaderc_fragment_shader, fragShaderCode.data(), fragShaderPath); VkShaderModule fragShaderModule = compileShader(pimpl->device, shaderc_fragment_shader, fragShaderCode->data(), fragShaderPath);
// create uniform buffers // create uniform buffers
pipeline->uniformBuffers.resize(FRAMES_IN_FLIGHT); pipeline->uniformBuffers.resize(FRAMES_IN_FLIGHT);

33
src/util/files.cpp Normal file
View File

@ -0,0 +1,33 @@
#include "util/files.hpp"
#include <fstream>
namespace engine::util {
std::unique_ptr<std::vector<char>> readTextFile(const std::string& path)
{
auto buffer = std::make_unique<std::vector<char>>();
std::ifstream file(path, std::ios::ate);
if (file.is_open() == false) {
throw std::runtime_error("Unable to open file " + path);
}
// reserve enough space for the text file, but leave the size at 0
buffer->reserve(file.tellg());
file.seekg(0);
while (!file.eof()) {
char c{};
file.read(&c, 1);
buffer->push_back(c);
}
file.close();
return buffer;
}
}

BIN
test/res/models/astronaut/astronaut.dae (Stored with Git LFS)

File diff suppressed because one or more lines are too long

BIN
test/res/models/plane/plane.dae (Stored with Git LFS)

File diff suppressed because one or more lines are too long

BIN
test/res/models/pyramid/pyramid.dae (Stored with Git LFS)

File diff suppressed because one or more lines are too long

BIN
test/res/models/room/room.dae (Stored with Git LFS)

File diff suppressed because one or more lines are too long

View File

@ -26,4 +26,3 @@ void main() {
vec3 lightPos = vec3(-5.0, 20.0, 5.0); vec3 lightPos = vec3(-5.0, 20.0, 5.0);
fragLightPos = vec3(constants.view * vec4(lightPos, 1.0)); fragLightPos = vec3(constants.view * vec4(lightPos, 1.0));
} }