working on texture array loading in the blt backend

main
Brett 2024-09-16 16:47:22 -04:00
parent 67a0aa7a28
commit c7385c6ea6
9 changed files with 66 additions and 10 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.25)
project(voxel-game VERSION 0.0.4)
project(voxel-game VERSION 0.0.5)
option(ENABLE_ADDRSAN "Enable the address sanitizer" OFF)
option(ENABLE_UBSAN "Enable the ub sanitizer" OFF)
@ -9,13 +9,15 @@ set(CMAKE_CXX_STANDARD 20)
add_subdirectory(lib/blt-with-graphics)
add_compile_definitions(VOXEL_RES_DIR="${CMAKE_CURRENT_SOURCE_DIR}/res")
include_directories(include/)
file(GLOB_RECURSE PROJECT_BUILD_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_executable(voxel-game ${PROJECT_BUILD_FILES})
target_compile_options(voxel-game PRIVATE -Wall -Wextra -Werror -Wpedantic -Wno-comment)
target_link_options(voxel-game PRIVATE -Wall -Wextra -Werror -Wpedantic -Wno-comment)
target_compile_options(voxel-game PRIVATE -Wall -Wextra -Wpedantic -Wno-comment)
target_link_options(voxel-game PRIVATE -Wall -Wextra -Wpedantic -Wno-comment)
target_link_libraries(voxel-game PRIVATE BLT_WITH_GRAPHICS)

View File

@ -1,3 +1,9 @@
#echo "Running CMake!"
args="$@"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
nix-shell --pure --run "cmake $args" $SCRIPT_DIR/default.nix
CLION=$(which clion)
CLION_DIR=$(nix-store -r $CLION 2>/dev/null)
CMAKE_DIR="$CLION_DIR/clion/bin/cmake/linux/x64/bin/cmake"
export NIXPKGS_ALLOW_UNFREE=1
nix-shell --pure --run "$CMAKE_DIR $args" $SCRIPT_DIR/default.nix
exit

View File

@ -1,11 +1,17 @@
let
pkgs = import <nixpkgs> {};
in pkgs.mkShell
{ pkgs ? (import <nixpkgs> {
config.allowUnfree = true;
config.segger-jlink.acceptLicense = true;
}), ... }:
pkgs.mkShell
{
buildInputs = with pkgs; [
cmake
gcc
clang
ninja
jetbrains.clion
renderdoc
valgrind
];
propagatedBuildInputs = with pkgs; [
xorg.libX11
@ -37,6 +43,7 @@ in pkgs.mkShell
git
libGL
libGL.dev
glfw
];
}

4
imgui.ini Normal file
View File

@ -0,0 +1,4 @@
[Window][Debug##Default]
Pos=60,60
Size=400,400

View File

@ -26,6 +26,7 @@ namespace voxel
{
inline constexpr blt::u64 CHUNK_SIZE = 32;
inline constexpr blt::i32 IMAGE_SIZE = 64;
inline const blt::u64 CHUNK_MASK = static_cast<blt::u64>(std::log2(CHUNK_SIZE));
using block_id_t = blt::u64;

@ -1 +1 @@
Subproject commit c01cb757a1d19fa8e06292dcb61a5b5769979f11
Subproject commit c8b9879e4976d162f81f69893b95587100fcdc02

28
renderdoc.cap Normal file
View File

@ -0,0 +1,28 @@
{
"rdocCaptureSettings": 1,
"settings": {
"autoStart": false,
"commandLine": "",
"environment": [
],
"executable": "/home/brett/Documents/code/c++/voxel-game/cmake-build-relwithdebinfo/voxel-game",
"inject": false,
"numQueuedFrames": 0,
"options": {
"allowFullscreen": true,
"allowVSync": true,
"apiValidation": false,
"captureAllCmdLists": false,
"captureCallstacks": false,
"captureCallstacksOnlyDraws": false,
"debugOutputMute": true,
"delayForDebugger": 0,
"hookIntoChildren": false,
"refAllResources": false,
"softMemoryLimit": 0,
"verifyBufferAccess": false
},
"queuedFrameCap": 0,
"workingDir": ""
}
}

BIN
res/ham.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

View File

@ -20,9 +20,10 @@
#include "blt/gfx/renderer/camera.h"
#include <imgui.h>
#include <voxel/chunk.h>
#include <thread>
blt::gfx::matrix_state_manager global_matrices;
blt::gfx::resource_manager resources;
blt::gfx::resource_manager resources {VOXEL_RES_DIR};
blt::gfx::batch_renderer_2d renderer_2d(resources, global_matrices);
blt::gfx::first_person_camera camera;
@ -30,9 +31,14 @@ void init(const blt::gfx::window_data&)
{
using namespace blt::gfx;
texture_array block_array{"blocks", voxel::IMAGE_SIZE, voxel::IMAGE_SIZE};
block_array.add_texture("ham.png", "ham");
resources.with(texture_info{"ham.png", "ham"}.set_desired_width(voxel::IMAGE_SIZE).set_desired_height(voxel::IMAGE_SIZE));
resources.with(std::move(block_array));
global_matrices.create_internals();
resources.load_resources();
resources.load_resources(std::thread::hardware_concurrency());
renderer_2d.create();
}
@ -44,6 +50,8 @@ void update(const blt::gfx::window_data& data)
camera.update_view(global_matrices);
global_matrices.update();
renderer_2d.drawRectangleInternal("ham", {50, 50, voxel::IMAGE_SIZE, voxel::IMAGE_SIZE});
renderer_2d.render(data.width, data.height);
}