Initial window setup
This commit is contained in:
commit
b37a540bc7
27
.editorconfig
Normal file
27
.editorconfig
Normal file
@ -0,0 +1,27 @@
|
||||
# See http://editorconfig.org to read about the EditorConfig format.
|
||||
# - In theory automatically supported by VS2017+ and most common IDE or text editors.
|
||||
# - In practice VS2019-VS2022 stills don't trim trailing whitespaces correctly :(
|
||||
# - Suggest installing this to trim whitespaces:
|
||||
# GitHub https://github.com/madskristensen/TrailingWhitespace
|
||||
# VS2019 https://marketplace.visualstudio.com/items?itemName=MadsKristensen.TrailingWhitespaceVisualizer
|
||||
# VS2022 https://marketplace.visualstudio.com/items?itemName=MadsKristensen.TrailingWhitespace64
|
||||
# (in spite of its name doesn't only visualize but also trims)
|
||||
# - Alternative for older VS2010 to VS2015: https://marketplace.visualstudio.com/items?itemName=EditorConfigTeam.EditorConfig
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Default settings:
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[imstb_*]
|
||||
indent_size = 3
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
30
.gitattributes
vendored
Normal file
30
.gitattributes
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
* text=auto
|
||||
|
||||
*.c text
|
||||
*.cpp text
|
||||
*.h text
|
||||
*.m text
|
||||
*.mm text
|
||||
*.md text
|
||||
*.txt text
|
||||
*.html text
|
||||
*.bat text
|
||||
*.frag text
|
||||
*.vert text
|
||||
*.mkb text
|
||||
*.icf text
|
||||
|
||||
*.sln text eol=crlf
|
||||
*.vcxproj text eol=crlf
|
||||
*.vcxproj.filters text eol=crlf
|
||||
*.natvis text eol=crlf
|
||||
|
||||
Makefile text eol=lf
|
||||
*.sh text eol=lf
|
||||
*.pbxproj text eol=lf
|
||||
*.storyboard text eol=lf
|
||||
*.plist text eol=lf
|
||||
|
||||
*.png binary
|
||||
*.ttf binary
|
||||
*.lib binary
|
||||
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
# CMake build directories
|
||||
build/
|
||||
cmake-build-*/
|
||||
out/
|
||||
.cache/
|
||||
|
||||
# CMake generated files
|
||||
CMakeFiles/
|
||||
CMakeCache.txt
|
||||
cmake_install.cmake
|
||||
Makefile
|
||||
*.vcxproj*
|
||||
*.sln
|
||||
|
||||
# IDE specific files
|
||||
.idea/
|
||||
.vscode/
|
||||
*.user
|
||||
|
||||
# Other temporary files
|
||||
*.log
|
||||
*.tmp
|
||||
*.swp
|
||||
63
CMakeLists.txt
Normal file
63
CMakeLists.txt
Normal file
@ -0,0 +1,63 @@
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
project(Main)
|
||||
|
||||
file(GLOB SOURCES src/*.h src/*.cpp src/*.c)
|
||||
add_executable(Main ${SOURCES})
|
||||
|
||||
target_include_directories(Main PUBLIC include src)
|
||||
|
||||
# # Add ImGui sources
|
||||
# file(GLOB IMGUI_SOURCES
|
||||
# ${CMAKE_CURRENT_LIST_DIR}/include/imgui/*.cpp
|
||||
# )
|
||||
|
||||
# file(GLOB TINY_GLTF_SOURCES ${CMAKE_CURRENT_LIST_DIR}/include/tiny_gltf/*.cc)
|
||||
|
||||
# target_sources(Main PRIVATE ${IMGUI_SOURCES})
|
||||
# target_sources(Main PRIVATE ${TINY_GLTF_SOURCES})
|
||||
|
||||
find_package(glfw3 3.4 REQUIRED)
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(glm REQUIRED)
|
||||
|
||||
# # copy shader files
|
||||
# file(GLOB GLSL_SOURCE_FILES
|
||||
# shaders/*.frag
|
||||
# shaders/*.vert
|
||||
# )
|
||||
|
||||
# add_custom_target(Shaders DEPENDS ${GLSL_SOURCE_FILES})
|
||||
# add_dependencies(Main Shaders)
|
||||
|
||||
# add_custom_command(TARGET Shaders POST_BUILD
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
# "$<TARGET_PROPERTY:Main,SOURCE_DIR>/shaders"
|
||||
# "$<TARGET_PROPERTY:Main,BINARY_DIR>/$<CONFIGURATION>/shaders"
|
||||
# )
|
||||
|
||||
|
||||
# # copy assets
|
||||
# file(GLOB ASSET_FILES assets/*)
|
||||
# add_custom_target(
|
||||
# Assets
|
||||
# DEPENDS ${ASSET_FILES}
|
||||
# )
|
||||
# add_dependencies(Main Assets)
|
||||
|
||||
# add_custom_command(TARGET Assets POST_BUILD
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
# "$<TARGET_PROPERTY:Main,SOURCE_DIR>/assets"
|
||||
# "$<TARGET_PROPERTY:Main,BINARY_DIR>/$<CONFIGURATION>/assets"
|
||||
# )
|
||||
|
||||
if(UNIX)
|
||||
set(GLFW3_LIBRARY glfw)
|
||||
endif()
|
||||
|
||||
include_directories(${GLFW3_INCLUDE_DIR} ${GLM_INCLUDE_DIR})
|
||||
target_link_libraries(Main ${GLFW3_LIBRARY} OpenGL::GL)
|
||||
43
compile
Executable file
43
compile
Executable file
@ -0,0 +1,43 @@
|
||||
#!/bin/sh
|
||||
|
||||
RUN_AFTER_BUILD=0
|
||||
CMAKE_ARGS=""
|
||||
BINARY_NAME="Main"
|
||||
BUILD_DIR="build"
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--clean)
|
||||
echo "Cleaning build directory..."
|
||||
rm -rf build/*
|
||||
;;
|
||||
--debug)
|
||||
echo "Enabling debug build..."
|
||||
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug"
|
||||
;;
|
||||
--run)
|
||||
RUN_AFTER_BUILD=1
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument: $arg"
|
||||
echo "Usage: $0 [--clean] [--debug] [--run]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
cmake -B "$BUILD_DIR" -S . -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ $CMAKE_ARGS
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j"$(nproc)"
|
||||
|
||||
if [ "$RUN_AFTER_BUILD" -eq 1 ]; then
|
||||
if [ -x "build/$BINARY_NAME" ]; then
|
||||
echo "Running ./$BINARY_NAME..."
|
||||
"./build/$BINARY_NAME"
|
||||
else
|
||||
echo "Error: Binary 'build/$BINARY_NAME' not found or not executable."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
80
compile_commands.json
Normal file
80
compile_commands.json
Normal file
@ -0,0 +1,80 @@
|
||||
[
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/file.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/file.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/file.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/file.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/cc -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -o CMakeFiles/Main.dir/src/glad.c.o -c /home/nathan/dev/cpp/game_animation_programming/src/glad.c",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/glad.c",
|
||||
"output": "CMakeFiles/Main.dir/src/glad.c.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/main.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/main.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/main.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/main.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/model.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/model.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/model.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/model.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/renderer.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/renderer.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/renderer.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/renderer.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/user_interface.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/user_interface.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/user_interface.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/user_interface.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/src/window.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/src/window.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/src/window.cpp",
|
||||
"output": "CMakeFiles/Main.dir/src/window.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui_draw.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_draw.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_draw.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui_draw.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui_impl_glfw.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_impl_glfw.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_impl_glfw.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui_impl_glfw.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui_impl_opengl3.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_impl_opengl3.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_impl_opengl3.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui_impl_opengl3.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui_tables.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_tables.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_tables.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui_tables.cpp.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/nathan/dev/cpp/game_animation_programming/build",
|
||||
"command": "/usr/bin/c++ -I/home/nathan/dev/cpp/game_animation_programming/include -I/home/nathan/dev/cpp/game_animation_programming/src -std=gnu++17 -o CMakeFiles/Main.dir/include/imgui/imgui_widgets.cpp.o -c /home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_widgets.cpp",
|
||||
"file": "/home/nathan/dev/cpp/game_animation_programming/include/imgui/imgui_widgets.cpp",
|
||||
"output": "CMakeFiles/Main.dir/include/imgui/imgui_widgets.cpp.o"
|
||||
}
|
||||
]
|
||||
15914
include/glad/glad.h
Normal file
15914
include/glad/glad.h
Normal file
File diff suppressed because one or more lines are too long
32
src/basic.h
Normal file
32
src/basic.h
Normal file
@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
|
||||
#define GLM_ENABLE_EXPERIMENTAL
|
||||
|
||||
#include <string>
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtx/quaternion.hpp>
|
||||
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned int u32;
|
||||
typedef unsigned long long u64;
|
||||
|
||||
typedef char s8;
|
||||
typedef short s16;
|
||||
typedef int s32;
|
||||
typedef long long s64;
|
||||
|
||||
typedef s32 b32;
|
||||
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
|
||||
typedef std::string string;
|
||||
|
||||
#define array_count(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
||||
using Vector2 = glm::vec2;
|
||||
using Vector3 = glm::vec3;
|
||||
using Matrix4 = glm::mat4;
|
||||
using Quaternion = glm::quat;
|
||||
|
||||
9436
src/glad.c
Normal file
9436
src/glad.c
Normal file
File diff suppressed because one or more lines are too long
17
src/main.cpp
Normal file
17
src/main.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include <cstdio>
|
||||
#include "renderer.h"
|
||||
|
||||
|
||||
Renderer renderer;
|
||||
|
||||
int main () {
|
||||
init_renderer(&renderer);
|
||||
|
||||
while (!glfwWindowShouldClose(renderer.window)) {
|
||||
update_renderer(&renderer);
|
||||
}
|
||||
|
||||
cleanup_renderer(&renderer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
55
src/renderer.cpp
Normal file
55
src/renderer.cpp
Normal file
@ -0,0 +1,55 @@
|
||||
#include "renderer.h"
|
||||
|
||||
bool init_renderer(Renderer* renderer) {
|
||||
// Creating the window and setting it as the current context
|
||||
glfwInit();
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
|
||||
renderer->window = glfwCreateWindow(renderer->window_width, renderer->window_height, "Terrain Rendering", nullptr, nullptr);
|
||||
|
||||
if (renderer->window == nullptr) {
|
||||
printf("Failed to create GLFW window\n");
|
||||
glfwTerminate();
|
||||
return false;
|
||||
}
|
||||
glfwMakeContextCurrent(renderer->window);
|
||||
|
||||
// Initializing GLAD
|
||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
|
||||
printf("Failed to initialize GLAD\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
glViewport(0, 0, renderer->window_width, renderer->window_height);
|
||||
|
||||
glfwSetFramebufferSizeCallback(renderer->window, framebuffer_size_callback);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void cleanup_renderer(Renderer* renderer) {
|
||||
glfwTerminate();
|
||||
}
|
||||
|
||||
|
||||
void update_renderer(Renderer* renderer) {
|
||||
// Process input
|
||||
if (glfwGetKey(renderer->window, GLFW_KEY_ESCAPE == GLFW_PRESS)) {
|
||||
glfwSetWindowShouldClose(renderer->window, true);
|
||||
}
|
||||
|
||||
// Draw calls
|
||||
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
// Swap and poll events
|
||||
glfwSwapBuffers(renderer->window);
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
void framebuffer_size_callback(GLFWwindow* window, s32 width, s32 height) {
|
||||
glViewport(0, 0, width, height);
|
||||
}
|
||||
|
||||
14
src/renderer.h
Normal file
14
src/renderer.h
Normal file
@ -0,0 +1,14 @@
|
||||
#include "basic.h"
|
||||
#include <glad/glad.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
struct Renderer {
|
||||
GLFWwindow* window = nullptr;
|
||||
u32 window_width = 800;
|
||||
u32 window_height = 600;
|
||||
};
|
||||
|
||||
bool init_renderer(Renderer* renderer);
|
||||
void cleanup_renderer(Renderer* renderer);
|
||||
void update_renderer(Renderer* renderer);
|
||||
void framebuffer_size_callback(GLFWwindow* window, s32 width, s32 height);
|
||||
Loading…
x
Reference in New Issue
Block a user