From a03c7c85b8102ff9a2e282b0570de7c6d6525bb6 Mon Sep 17 00:00:00 2001 From: Alfie King Date: Wed, 30 Jul 2025 13:14:22 +0100 Subject: [PATCH] sent from android --- assets/crate.jpg | Bin 0 -> 45068 bytes assets/cube.obj | 38 + assets/meow.png | Bin 0 -> 173399 bytes assets/monkey.obj | 1479 ++++++++++++++++++++++++++++++ include/geometry.hpp | 45 + include/graphics.hpp | 20 +- include/gui.hpp | 23 + include/loader.hpp | 23 + include/main.hpp | 6 + include/shader.hpp | 24 + include/texture.hpp | 24 + include/window.hpp | 8 +- makefile | 10 +- shaders/triangle.frag | 6 +- shaders/triangle.vert | 9 +- shaders/triangle_untextured.frag | 8 + shaders/triangle_untextured.vert | 13 + src/geometry.cpp | 120 +++ src/graphics.cpp | 102 +-- src/gui.cpp | 51 ++ src/loader.cpp | 48 + src/main.cpp | 222 +++-- src/shader.cpp | 97 ++ src/texture.cpp | 68 ++ src/window.cpp | 2 + 25 files changed, 2243 insertions(+), 203 deletions(-) create mode 100644 assets/crate.jpg create mode 100644 assets/cube.obj create mode 100644 assets/meow.png create mode 100644 assets/monkey.obj create mode 100644 include/geometry.hpp create mode 100644 include/gui.hpp create mode 100644 include/loader.hpp create mode 100644 include/shader.hpp create mode 100644 include/texture.hpp create mode 100644 shaders/triangle_untextured.frag create mode 100644 shaders/triangle_untextured.vert create mode 100644 src/geometry.cpp create mode 100644 src/gui.cpp create mode 100644 src/loader.cpp create mode 100644 src/shader.cpp create mode 100644 src/texture.cpp diff --git a/assets/crate.jpg b/assets/crate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cc39ded250f83b48458727bf6cca2c7fb7f9289 GIT binary patch literal 45068 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

EGI)8;e?*(!G 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

>u5FkIz&U*$jzWAOWTHhOj!f| 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 +#include +#include +#include "graphics.hpp" + +// Object class +class Object { +public: + Object( + float *vertices, unsigned int vertex_size, + unsigned int *indices, unsigned int index_size, + float *normals = nullptr, unsigned int normal_size = 0, + float *texcoords = nullptr, unsigned int texcoord_size = 0 + ); + ~Object(); + void draw(); + +private: + unsigned int VAO, VBO, EBO, NBO, TBO; // Vertex Array Object, Vertex Buffer Object, Element Buffer Object, Normal Buffer Object, Texture Buffer Object + unsigned int vertex_count; + unsigned int index_count; +}; + +class UntexturedObject { +public: + UntexturedObject( + float *vertices, unsigned int vertex_size, + unsigned int *indices, unsigned int index_size, + float *normals = nullptr, unsigned int normal_size = 0, + float *texcoords = nullptr, unsigned int texcoord_size = 0 + ); + ~UntexturedObject(); + void draw(); + +private: + unsigned int VAO, VBO, EBO, NBO, TBO; // Vertex Array Object, Vertex Buffer Object, Element Buffer Object, Normal Buffer Object, Texture Buffer Object + unsigned int vertex_count; + unsigned int index_count; +}; + +#endif diff --git a/include/graphics.hpp b/include/graphics.hpp index 83a6a80..1d3d6ae 100644 --- a/include/graphics.hpp +++ b/include/graphics.hpp @@ -3,11 +3,11 @@ #define GL_GLEXT_PROTOTYPES // Includes -#include "imgui.h" -#include "imgui_impl_sdl3.h" -#include "imgui_impl_opengl3.h" #include #include "window.hpp" +#include "shader.hpp" +#include "texture.hpp" +#include // Constants const int open_gl_major_version = 3; @@ -21,25 +21,13 @@ extern float frame_time; extern float fps; extern float frame_time_graph[100]; extern SDL_GLContext gl_context; - -extern ImGuiIO& io; -extern ImGuiStyle& style; +#define delta_time frame_time // Functions int initialize_opengl(); void cleanup_opengl(); -// ImGui -int initialize_imgui(); -void cleanup_imgui(); -void new_frame_imgui(); -void frame_time_ui(); - // Frame time calculation void calc_frame_time(); -// Shader management -unsigned int compile_shader(const char* shader_source, GLenum shader_type); -unsigned int create_program(unsigned int vertex_shader, unsigned int fragment_shader); - #endif \ No newline at end of file diff --git a/include/gui.hpp b/include/gui.hpp new file mode 100644 index 0000000..29c42e7 --- /dev/null +++ b/include/gui.hpp @@ -0,0 +1,23 @@ +#ifndef GUI_HPP +#define GUI_HPP + +// Includes +#include "imgui.h" +#include "imgui_impl_sdl3.h" +#include "imgui_impl_opengl3.h" +#include "window.hpp" +#include "graphics.hpp" +#include + +// Variables +extern ImGuiIO& io; +extern ImGuiStyle& style; +extern + +// Functions +int initialize_imgui(); +void cleanup_imgui(); +void new_frame_imgui(); +void frame_time_ui(); + +#endif \ No newline at end of file diff --git a/include/loader.hpp b/include/loader.hpp new file mode 100644 index 0000000..42e6f9c --- /dev/null +++ b/include/loader.hpp @@ -0,0 +1,23 @@ +#ifndef LOADER_HPP +#define LOADER_HPP + +// Includes +#include +#include + +// Obj struct +struct Obj { + float* vertices; // Pointer to vertex data + size_t vertex_count; // Number of vertices + float* normals; // Pointer to normal data + size_t normal_count; // Number of normals + float* texcoords; // Pointer to texture coordinate data + size_t texcoord_count; // Number of texture coordinates + unsigned int* indices; // Pointer to index data + size_t index_count; // Number of indices +}; + +// Function to load an OBJ file +Obj load_obj(const std::string& filename); + +#endif // LOADER_HPP \ No newline at end of file diff --git a/include/main.hpp b/include/main.hpp index a3130dd..04b99fb 100644 --- a/include/main.hpp +++ b/include/main.hpp @@ -6,11 +6,17 @@ #include "window.hpp" #include "graphics.hpp" #include "utils.hpp" +#include "gui.hpp" +#include "geometry.hpp" +#include "loader.hpp" // Variables extern bool running; // Functions int main(int argc, char* argv[]); +void init(); // Initialize SDL, OpenGL, and ImGui +void handle_events(); // Handle SDL events +void handle_keyboard_input(); // Handle keyboard input for camera movement #endif \ No newline at end of file diff --git a/include/shader.hpp b/include/shader.hpp new file mode 100644 index 0000000..8b553ae --- /dev/null +++ b/include/shader.hpp @@ -0,0 +1,24 @@ +#ifndef SHADER_HPP +#define SHADER_HPP +#define GL_GLEXT_PROTOTYPES + +// Includes +#include "utils.hpp" +#include +#include +#include "geometry.hpp" + +// Shader class +class Shader { +public: + unsigned int ID; + Shader(const char* vertexPath, const char* fragmentPath); + void use() const; + void setBool(const std::string &name, bool value) const; + void setInt(const std::string &name, int value) const; + void setFloat(const std::string &name, float value) const; + void setMat4(const std::string &name, const glm::mat4 &mat) const; + ~Shader(); +}; + +#endif \ No newline at end of file diff --git a/include/texture.hpp b/include/texture.hpp new file mode 100644 index 0000000..fd0cbb3 --- /dev/null +++ b/include/texture.hpp @@ -0,0 +1,24 @@ +#ifndef TEXTURE_HPP +#define TEXTURE_HPP +#define GL_GLEXT_PROTOTYPES + +// Includes +#include +#include +#include + +// Functions +void flip_surface(SDL_Surface* surface); + +// Classes +class Texture { +public: + unsigned int ID; + Texture(const char* file_path); + ~Texture(); + void bind() const; + void bind(unsigned int unit) const; + void unbind() const; +}; + +#endif \ No newline at end of file diff --git a/include/window.hpp b/include/window.hpp index 31e8467..471e649 100644 --- a/include/window.hpp +++ b/include/window.hpp @@ -2,18 +2,16 @@ #define WINDOW_HPP // Includes -#include "iostream" +#include #include -// Constants -const int window_width = 800; -const int window_height = 600; - // Variables const SDL_WindowFlags window_flags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN | SDL_WINDOW_HIGH_PIXEL_DENSITY; extern float main_scale; extern SDL_Window* window; extern SDL_Event event; +extern int window_width; +extern int window_height; // Functions int initialize_sdl(); diff --git a/makefile b/makefile index b389898..98a85cf 100644 --- a/makefile +++ b/makefile @@ -10,10 +10,10 @@ IMGUI_DIR = imgui CXX = g++ # Libs -LIBS = -lGL `pkg-config --libs sdl3` +LIBS = -lGL -lglm `pkg-config --libs sdl3 sdl3-image` # Compiler and linker settings -CXXFLAGS = `pkg-config --cflags sdl3` -std=c++17 -I $(INCLUDE_DIR) +CXXFLAGS = -std=c++17 -I $(INCLUDE_DIR) # If ImGui directory is set, include its source files ifdef IMGUI_DIR @@ -51,6 +51,10 @@ dirs: @mkdir -p $(BUILD_DIR) @mkdir -p $(OBJ_DIR) +# Clear build directory +clear: + @find $(OBJ_DIR) -type f -name '*.o' ! -name 'imgui*.o' -exec rm -f {} + + # Pattern rule for source files in src directory $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(CXX) $(CXXFLAGS) -c -o $@ $< @@ -64,7 +68,7 @@ $(OBJ_DIR)/%.o: $(IMGUI_DIR)/backends/%.cpp $(CXX) $(CXXFLAGS) -c -o $@ $< endif -all: dirs $(BIN) +all: dirs clear $(BIN) @echo Build complete $(BIN): $(OBJS) diff --git a/shaders/triangle.frag b/shaders/triangle.frag index 5a2ecf0..e3a22a7 100644 --- a/shaders/triangle.frag +++ b/shaders/triangle.frag @@ -2,7 +2,11 @@ out vec4 FragColor; in vec3 color; // Input color from the vertex shader +in vec2 TexCoord; + +uniform sampler2D texture1; // Texture sampler +uniform sampler2D texture2; // Second texture sampler void main() { - FragColor = vec4(color, 1.0); // Set the fragment color to the input color + FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.3) * vec4(color, 1.0); // Mix the two textures and apply the color } \ No newline at end of file diff --git a/shaders/triangle.vert b/shaders/triangle.vert index 760e898..0145fc8 100644 --- a/shaders/triangle.vert +++ b/shaders/triangle.vert @@ -1,9 +1,16 @@ #version 330 core layout(location = 0) in vec3 position; // Vertex position +layout(location = 1) in vec2 texCoords; // Texture coordinates out vec3 color; // Output color to the fragment shader +out vec2 TexCoord; + +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; void main() { - gl_Position = vec4(position, 1.0); // Set the position of the vertex + gl_Position = projection * view * model * vec4(position, 1.0); // Apply transformation matrices color = position + vec3(0.5); // Set the color based on the vertex position + TexCoord = texCoords; // Pass texture coordinates to the fragment shader } \ No newline at end of file diff --git a/shaders/triangle_untextured.frag b/shaders/triangle_untextured.frag new file mode 100644 index 0000000..367732f --- /dev/null +++ b/shaders/triangle_untextured.frag @@ -0,0 +1,8 @@ +#version 330 core + +out vec4 FragColor; +in vec3 color; // Input color from the vertex shader + +void main() { + FragColor = vec4(color, 1.0); // Apply the color +} \ No newline at end of file diff --git a/shaders/triangle_untextured.vert b/shaders/triangle_untextured.vert new file mode 100644 index 0000000..920604a --- /dev/null +++ b/shaders/triangle_untextured.vert @@ -0,0 +1,13 @@ +#version 330 core + +layout(location = 0) in vec3 position; // Vertex position +out vec3 color; // Output color to the fragment shader + +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); // Apply transformation matrices + color = position + vec3(0.5); // Set the color based on the vertex position +} \ No newline at end of file diff --git a/src/geometry.cpp b/src/geometry.cpp new file mode 100644 index 0000000..945b8ff --- /dev/null +++ b/src/geometry.cpp @@ -0,0 +1,120 @@ +#include "geometry.hpp" + +Object::Object( + float *vertices, unsigned int vertex_size, + unsigned int *indices, unsigned int index_size, + float *normals, unsigned int normal_size, + float *texcoords, unsigned int texcoord_size +) { + glGenVertexArrays(1, &VAO); // Generate a vertex array object + glGenBuffers(1, &VBO); // Generate a vertex buffer object + glGenBuffers(1, &EBO); // Generate an element buffer object + glGenBuffers(1, &NBO); // Generate a normal buffer object + glGenBuffers(1, &TBO); // Generate a texture buffer object + + glBindVertexArray(VAO); // Bind the vertex array object + glBindBuffer(GL_ARRAY_BUFFER, VBO); // Bind the vertex buffer object + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); // Bind the element buffer object + + glBufferData(GL_ARRAY_BUFFER, vertex_size, vertices, GL_STATIC_DRAW); // Upload vertex data to the buffer + glBufferData(GL_ELEMENT_ARRAY_BUFFER, index_size, indices, GL_STATIC_DRAW); // Upload index data to the buffer + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0); // Set up vertex attributes + glEnableVertexAttribArray(0); // Enable vertex attribute 0 + + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float))); // Set up texture coordinates + glEnableVertexAttribArray(1); // Enable vertex attribute 1 + + if (normals && normal_size > 0) { + glBindBuffer(GL_ARRAY_BUFFER, NBO); // Bind the normal buffer object + glBufferData(GL_ARRAY_BUFFER, normal_size, normals, GL_STATIC_DRAW); // Upload normal data to the buffer + glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); // Set up normal attributes + glEnableVertexAttribArray(2); // Enable vertex attribute 2 + } + + if (texcoords && texcoord_size > 0) { + glBindBuffer(GL_ARRAY_BUFFER, TBO); // Bind the texture buffer object + glBufferData(GL_ARRAY_BUFFER, texcoord_size, texcoords, GL_STATIC_DRAW); // Upload texture coordinate data to the buffer + glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0); // Set up texture coordinate attributes + glEnableVertexAttribArray(3); // Enable vertex attribute 3 + } + + glBindVertexArray(0); // Unbind the vertex array object + glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind the vertex buffer object + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // Unbind the element buffer object + + this->vertex_count = vertex_size / (5 * sizeof(float)); // Calculate vertex count based on size + this->index_count = index_size / sizeof(unsigned int); // Calculate index count based on size +} + +Object::~Object() { + glDeleteVertexArrays(1, &VAO); // Delete the vertex array object + glDeleteBuffers(1, &VBO); // Delete the vertex buffer object + glDeleteBuffers(1, &EBO); // Delete the element buffer object + glDeleteBuffers(1, &NBO); // Delete the normal buffer object + glDeleteBuffers(1, &TBO); // Delete the texture buffer object +} + +void Object::draw() { + glBindVertexArray(VAO); // Bind the vertex array object + glDrawElements(GL_TRIANGLES, index_count, GL_UNSIGNED_INT, 0); // Draw the object using the element buffer + glBindVertexArray(0); // Unbind the vertex array object +} + +UntexturedObject::UntexturedObject( + float *vertices, unsigned int vertex_size, + unsigned int *indices, unsigned int index_size, + float *normals, unsigned int normal_size, + float *texcoords, unsigned int texcoord_size +) { + glGenVertexArrays(1, &VAO); // Generate a vertex array object + glGenBuffers(1, &VBO); // Generate a vertex buffer object + glGenBuffers(1, &EBO); // Generate an element buffer object + glGenBuffers(1, &NBO); // Generate a normal buffer object + glGenBuffers(1, &TBO); // Generate a texture buffer object + + glBindVertexArray(VAO); // Bind the vertex array object + glBindBuffer(GL_ARRAY_BUFFER, VBO); // Bind the vertex buffer object + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); // Bind the element buffer object + + glBufferData(GL_ARRAY_BUFFER, vertex_size, vertices, GL_STATIC_DRAW); // Upload vertex data to the buffer + glBufferData(GL_ELEMENT_ARRAY_BUFFER, index_size, indices, GL_STATIC_DRAW); // Upload index data to the buffer + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); // Set up vertex attributes + glEnableVertexAttribArray(0); // Enable vertex attribute 0 + + if (normals && normal_size > 0) { + glBindBuffer(GL_ARRAY_BUFFER, NBO); // Bind the normal buffer object + glBufferData(GL_ARRAY_BUFFER, normal_size, normals, GL_STATIC_DRAW); // Upload normal data to the buffer + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); // Set up normal attributes + glEnableVertexAttribArray(1); // Enable vertex attribute 1 + } + + if (texcoords && texcoord_size > 0) { + glBindBuffer(GL_ARRAY_BUFFER, TBO); // Bind the texture buffer object + glBufferData(GL_ARRAY_BUFFER, texcoord_size, texcoords, GL_STATIC_DRAW); // Upload texture coordinate data to the buffer + glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0); // Set up texture coordinate attributes + glEnableVertexAttribArray(2); // Enable vertex attribute 2 + } + + glBindVertexArray(0); // Unbind the vertex array object + glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind the vertex buffer object + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // Unbind the element buffer object + + this->vertex_count = vertex_size / (5 * sizeof(float)); // Calculate vertex count based on size + this->index_count = index_size / sizeof(unsigned int); // Calculate index count based on +} + +UntexturedObject::~UntexturedObject() { + glDeleteVertexArrays(1, &VAO); // Delete the vertex array object + glDeleteBuffers(1, &VBO); // Delete the vertex buffer object + glDeleteBuffers(1, &EBO); // Delete the element buffer object + glDeleteBuffers(1, &NBO); // Delete the normal buffer object + glDeleteBuffers(1, &TBO); // Delete the texture buffer object +} + +void UntexturedObject::draw() { + glBindVertexArray(VAO); // Bind the vertex array object + glDrawElements(GL_TRIANGLES, index_count, GL_UNSIGNED_INT, 0); // Draw the object using the element buffer + glBindVertexArray(0); // Unbind the vertex array object +} \ No newline at end of file diff --git a/src/graphics.cpp b/src/graphics.cpp index 0532001..44f4e8a 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -6,7 +6,6 @@ Uint32 current_time; float frame_time; float fps; float frame_time_graph[100]; - SDL_GLContext gl_context; // Functions @@ -29,7 +28,7 @@ int initialize_opengl() { SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); SDL_ShowWindow(window); - glViewport(0, 0, (int)(window_width * main_scale), (int)(window_height * main_scale)); + glViewport(0, 0, (int)(window_width * main_scale), (int)(window_height * main_scale)); return 0; // OpenGL initialization successful } @@ -44,91 +43,6 @@ void cleanup_opengl() { std::cout << "OpenGL cleanup successful." << std::endl; } -unsigned int compile_shader(const char* shader_source, GLenum shader_type) { - unsigned int shader = glCreateShader(shader_type); - if (shader == 0) { - std::cerr << "Failed to create shader." << std::endl; - return 0; // Shader creation failed - } - - glShaderSource(shader, 1, &shader_source, nullptr); - glCompileShader(shader); - - // Check for compilation errors - int success; - glGetShaderiv(shader, GL_COMPILE_STATUS, &success); - if (!success) { - char info_log[512]; - glGetShaderInfoLog(shader, sizeof(info_log), nullptr, info_log); - std::cerr << "Shader compilation error: " << info_log << std::endl; - glDeleteShader(shader); - return 0; // Shader compilation failed - } - - return shader; // Shader compiled successfully -} - -unsigned int create_program(unsigned int vertex_shader, unsigned int fragment_shader) { - unsigned int program = glCreateProgram(); - if (program == 0) { - std::cerr << "Failed to create shader program." << std::endl; - return 0; // Program creation failed - } - - glAttachShader(program, vertex_shader); - glAttachShader(program, fragment_shader); - glLinkProgram(program); - - // Check for linking errors - int success; - glGetProgramiv(program, GL_LINK_STATUS, &success); - if (!success) { - char info_log[512]; - glGetProgramInfoLog(program, sizeof(info_log), nullptr, info_log); - std::cerr << "Shader program linking error: " << info_log << std::endl; - glDeleteProgram(program); - return 0; // Program linking failed - } - - return program; // Program created successfully -} - -int initialize_imgui() { - IMGUI_CHECKVERSION(); - ImGui::CreateContext(); - ImGuiIO& io = ImGui::GetIO(); (void)io; - io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; - io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; - - ImGui::StyleColorsDark(); - ImGuiStyle& style = ImGui::GetStyle(); - style.ScaleAllSizes(main_scale); - style.FontScaleDpi = main_scale; - - if (!ImGui_ImplSDL3_InitForOpenGL(window, gl_context)) { - std::cerr << "ImGui_ImplSDL3_InitForOpenGL failed!" << std::endl; - return 1; // Initialization failed - } - - char glsl_version[32]; - snprintf(glsl_version, sizeof(glsl_version), "#version %d%d0", open_gl_major_version, open_gl_minor_version); - if (!ImGui_ImplOpenGL3_Init(glsl_version)) { - std::cerr << "ImGui_ImplOpenGL3_Init failed!" << std::endl; - ImGui_ImplSDL3_Shutdown(); - ImGui::DestroyContext(); - return 1; // Initialization failed - } - - return 0; -} - -void cleanup_imgui() { - ImGui_ImplOpenGL3_Shutdown(); - ImGui_ImplSDL3_Shutdown(); - ImGui::DestroyContext(); - std::cout << "ImGui cleanup successful." << std::endl; -} - void calc_frame_time() { // Calculate frame time current_time = SDL_GetTicks(); @@ -141,18 +55,4 @@ void calc_frame_time() { frame_time_graph[i] = frame_time_graph[i - 1]; // Shift old values } frame_time_graph[0] = frame_time; // Add new frame time -} - -void new_frame_imgui() { - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplSDL3_NewFrame(); - ImGui::NewFrame(); -} - -void frame_time_ui() { - ImGui::Begin("Frame Time"); - ImGui::Text("Current FPS: %.2f", fps); - ImGui::Text("Current Frame Time: %.3f ms", frame_time * 1000.0f); - ImGui::PlotLines("##Frame Time Graph", frame_time_graph, 100, 0, "Frame Time (ms)", 0.0f, 0.1f, ImVec2(200, 80)); - ImGui::End(); } \ No newline at end of file diff --git a/src/gui.cpp b/src/gui.cpp new file mode 100644 index 0000000..6a9cade --- /dev/null +++ b/src/gui.cpp @@ -0,0 +1,51 @@ +#include "gui.hpp" + +int initialize_imgui() { + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGuiIO& io = ImGui::GetIO(); (void)io; + //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; + + ImGui::StyleColorsDark(); + ImGuiStyle& style = ImGui::GetStyle(); + style.ScaleAllSizes(main_scale); + style.FontScaleDpi = main_scale; + + if (!ImGui_ImplSDL3_InitForOpenGL(window, gl_context)) { + std::cerr << "ImGui_ImplSDL3_InitForOpenGL failed!" << std::endl; + return 1; // Initialization failed + } + + char glsl_version[32]; + snprintf(glsl_version, sizeof(glsl_version), "#version %d%d0", open_gl_major_version, open_gl_minor_version); + if (!ImGui_ImplOpenGL3_Init(glsl_version)) { + std::cerr << "ImGui_ImplOpenGL3_Init failed!" << std::endl; + ImGui_ImplSDL3_Shutdown(); + ImGui::DestroyContext(); + return 1; // Initialization failed + } + + return 0; +} + +void cleanup_imgui() { + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplSDL3_Shutdown(); + ImGui::DestroyContext(); + std::cout << "ImGui cleanup successful." << std::endl; +} + +void new_frame_imgui() { + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplSDL3_NewFrame(); + ImGui::NewFrame(); +} + +void frame_time_ui() { + ImGui::Begin("Frame Time"); + ImGui::Text("Current FPS: %.2f", fps); + ImGui::Text("Current Frame Time: %.3f ms", frame_time * 1000.0f); + ImGui::PlotLines("##Frame Time Graph", frame_time_graph, 100, 0, "Frame Time (ms)", 0.0f, 0.1f, ImVec2(200, 80)); + ImGui::End(); +} \ No newline at end of file diff --git a/src/loader.cpp b/src/loader.cpp new file mode 100644 index 0000000..4845eee --- /dev/null +++ b/src/loader.cpp @@ -0,0 +1,48 @@ +#include "loader.hpp" + +Obj load_obj(const std::string& filename) { + Obj obj; + obj.vertices = nullptr; + obj.vertex_count = 0; + obj.indices = nullptr; + obj.index_count = 0; + obj.normals = nullptr; + obj.normal_count = 0; + obj.texcoords = nullptr; + obj.texcoord_count = 0; + + std::ifstream file(filename); + if (!file.is_open()) { + std::cerr << "Failed to open OBJ file: " << filename << std::endl; + return obj; + } + + // Read the file and populate the obj structure + std::string line; + while (std::getline(file, line)) { + // Parse the line and extract vertex, normal, and index data + if (line.substr(0, 2) == "v ") { + // Vertex position + obj.vertex_count++; + obj.vertices = (float*)realloc(obj.vertices, obj.vertex_count * 3 * sizeof(float)); + sscanf(line.c_str() + 2, "%f %f %f", &obj.vertices[(obj.vertex_count - 1) * 3], &obj.vertices[(obj.vertex_count - 1) * 3 + 1], &obj.vertices[(obj.vertex_count - 1) * 3 + 2]); + } else if (line.substr(0, 2) == "f ") { + // Face indices + unsigned int index1, + } else if (line.substr(0, 2) == "vn") { + // Vertex normal + obj.normal_count++; + obj.normals = (float*)realloc(obj.normals, obj.normal_count * 3 * sizeof(float)); + sscanf(line.c_str() + 3, "%f %f %f", &obj.normals[(obj.normal_count - 1) * 3], &obj.normals[(obj.normal_count - 1) * 3 + 1], &obj.normals[(obj.normal_count - 1) * 3 + 2]); + + } else if (line.substr(0, 2) == "vt") { + // Vertex texture coordinate + obj.texcoord_count++; + obj.texcoords = (float*)realloc(obj.texcoords, obj.texcoord_count * 2 * sizeof(float)); + sscanf(line.c_str() + 3, "%f %f", &obj.texcoords[(obj.texcoord_count - 1) * 2], &obj.texcoords[(obj.texcoord_count - 1) * 2 + 1]); + } + } + + file.close(); + return obj; +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index ef8a41d..e9029bf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,22 +1,33 @@ #include "main.hpp" -#include // Variables bool running = true; +float fov = 45.0f; // Field of view +float camera_move_speed = 10.0f; // Camera movement speed +bool wireframe_mode = false; // Wireframe mode toggle +glm::mat4 viewMatrix = glm::mat4(1.0f); // View matrix +glm::mat4 projectionMatrix = glm::perspective(glm::radians(fov), (float)window_width / (float)window_height, 0.1f, 100.0f); // Perspective projection matrix -// Main -int main(int argc, char* argv[]) { +glm::vec3 camera_position = glm::vec3(0.0f, 0.0f, 3.0f); // Initial camera position +glm::vec3 camera_front = glm::vec3(0.0f, 0.0f, -1.0f); // Camera front vector +glm::vec3 camera_up = glm::vec3(0.0f, 1.0f, 0.0f); // Camera up vector +float camera_pitch = 0.0f; // Pitch angle +float camera_yaw = -90.0f; // Yaw angle +float camera_turn_speed = 1.0f; // Camera turn speed + +// Init +void init() { // Initialize SDL if (initialize_sdl() != 0) { std::cerr << "SDL initialization failed." << std::endl; - return 1; // SDL initialization failed + return; } // Initialize OpenGL if (initialize_opengl() != 0) { std::cerr << "OpenGL initialization failed." << std::endl; cleanup_sdl(); - return 1; // OpenGL initialization failed + return; } // Initialize ImGui @@ -24,92 +35,159 @@ int main(int argc, char* argv[]) { std::cerr << "ImGui initialization failed." << std::endl; cleanup_opengl(); cleanup_sdl(); - return 1; // ImGui initialization failed + return; } - // Triangle vertices - float vertices[] = { - 0.5f, 0.5f, 0.0f, // top right - 0.5f, -0.5f, 0.0f, // bottom right - -0.5f, -0.5f, 0.0f, // bottom left - -0.5f, 0.5f, 0.0f // top left - }; + glEnable(GL_DEPTH_TEST); +} - unsigned int indices[] = { - 0, 1, 3, // first triangle - 1, 2, 3 // second triangle - }; +// Event handling +void handle_events() { + while (SDL_PollEvent(&event)) { + ImGui_ImplSDL3_ProcessEvent(&event); // Process ImGui events + switch (event.type) { + case SDL_EVENT_QUIT: + running = false; // Exit loop on quit event + break; + case SDL_EVENT_WINDOW_RESIZED: + // Handle window resize + SDL_GetWindowSize(window, &window_width, &window_height); + glViewport(0, 0, window_width, window_height); // Update OpenGL + break; - // Vertex buffer object (VBO) and vertex array object (VAO) and element buffer object (EBO) - unsigned int VBO, VAO, EBO; + default: + break; + } + } +} - glGenVertexArrays(1, &VAO); // Generate a vertex array object - glGenBuffers(1, &VBO); // Generate a vertex buffer object - glGenBuffers(1, &EBO); // Generate an element buffer object +// Handle keyboard input +void handle_keyboard_input() { + const bool *keyboard_state = SDL_GetKeyboardState(NULL); - glBindVertexArray(VAO); // Bind the vertex array object - glBindBuffer(GL_ARRAY_BUFFER, VBO); // Bind the vertex buffer object - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); // Bind the element buffer object + // Handle keyboard input for camera movement + if (keyboard_state[SDL_SCANCODE_W]) { + camera_position += camera_move_speed * delta_time * camera_front; // Move forward + } + if (keyboard_state[SDL_SCANCODE_S]) { + camera_position -= camera_move_speed * delta_time * camera_front; // Move backward + } + if (keyboard_state[SDL_SCANCODE_A]) { + camera_position -= glm::normalize(glm::cross(camera_front, camera_up)) * camera_move_speed * delta_time; // Move left + } + if (keyboard_state[SDL_SCANCODE_D]) { + camera_position += glm::normalize(glm::cross(camera_front, camera_up)) * camera_move_speed * delta_time; // Move right + } + if (keyboard_state[SDL_SCANCODE_SPACE]) { + camera_position += camera_up * camera_move_speed * delta_time; // Move up + } + if (keyboard_state[SDL_SCANCODE_LCTRL]) { + camera_position -= camera_up * camera_move_speed * delta_time; // Move down + } + if (keyboard_state[SDL_SCANCODE_LEFT]) { + camera_yaw -= camera_turn_speed; // Turn left + if (camera_yaw < -180.0f) camera_yaw += 360.0f; // Wrap yaw + } + if (keyboard_state[SDL_SCANCODE_RIGHT]) { + camera_yaw += camera_turn_speed; // Turn right + if (camera_yaw > 180.0f) camera_yaw -= 360.0f; // Wrap yaw + } + if (keyboard_state[SDL_SCANCODE_UP]) { + camera_pitch += camera_turn_speed; // Look up + if (camera_pitch > 89.0f) camera_pitch = 89.0f; // Clamp pitch + } + if (keyboard_state[SDL_SCANCODE_DOWN]) { + camera_pitch -= camera_turn_speed; // Look down + if (camera_pitch < -89.0f) camera_pitch = -89.0f; // Clamp pitch + } +} - // Upload vertex data to the buffer - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); +// ImGui frame +void imgui_frame() { + new_frame_imgui(); - // Set up vertex attributes - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); - glEnableVertexAttribArray(0); + frame_time_ui(); - glBindVertexArray(0); // Unbind the vertex array object + ImGui::Begin("Control Panel"); + ImGui::Text("Camera Position: (%.2f, %.2f, %.2f)", camera_position.x, camera_position.y, camera_position.z); + ImGui::Text("Camera Front: (%.2f, %.2f, %.2f)", camera_front.x, camera_front.y, camera_front.z); + ImGui::Text("Camera Up: (%.2f, %.2f, %.2f)", camera_up.x, camera_up.y, camera_up.z); + ImGui::Text("Camera Pitch: %.2f degrees", camera_pitch); + ImGui::Text("Camera Yaw: %.2f degrees", camera_yaw); + ImGui::SliderFloat("Field of View", &fov, 1.0f, 120.0f, "%.1f degrees"); + ImGui::SliderFloat("Camera Speed", &camera_move_speed, 0.1f, 10.0f, "%.1f units/s"); + ImGui::SliderFloat("Camera Turn Speed", &camera_turn_speed, 1.0f, 5.0f, "%.2f units/s"); + ImGui::Checkbox("Wireframe Mode", &wireframe_mode); + if (wireframe_mode) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Enable wireframe mode + } else { + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // Disable wireframe mode + } + ImGui::End(); +} - // Load shaders - const char* vertex_shader_source = read_file("shaders/triangle.vert"); - const char* fragment_shader_source = read_file("shaders/triangle.frag"); +// Main +int main(int argc, char* argv[]) { + // Initialize SDL, OpenGL, and ImGui + init(); - unsigned int vertex_shader = compile_shader(vertex_shader_source, GL_VERTEX_SHADER); - unsigned int fragment_shader = compile_shader(fragment_shader_source, GL_FRAGMENT_SHADER); - unsigned int shader_program = create_program(vertex_shader, fragment_shader); + // Load shader program + Shader shader_program("shaders/triangle_untextured.vert", "shaders/triangle_untextured.frag"); - // Set the shader program - glUseProgram(shader_program); + // Generate and set up textures + Texture texture1("assets/crate.jpg"); + Texture texture2("assets/meow.png"); + shader_program.use(); + shader_program.setInt("texture1", 0); + shader_program.setInt("texture2", 1); - // Wireframe toggle - bool wireframe_mode = false; + // Load an OBJ file + Obj obj = load_obj("assets/cube.obj"); + + // print vertex and index counts + std::cout << "Loaded OBJ file: " << obj.vertex_count << " vertices, " << obj.index_count << " indices." << std::endl; + + // Create the object and set up its geometry + UntexturedObject object( + obj.vertices, obj.vertex_count * 3 * sizeof(float), + obj.indices, obj.index_count * sizeof(unsigned int) + ); + + glm::mat4 modelMatrix = glm::mat4(1.0f); // Main loop while (running) { - // Handle events - while (SDL_PollEvent(&event)) { - ImGui_ImplSDL3_ProcessEvent(&event); // Process ImGui events - if (event.type == SDL_EVENT_QUIT) { - running = false; // Exit loop on quit event - } - } + handle_events(); + handle_keyboard_input(); - // Start the ImGui frame - new_frame_imgui(); - - // Frame time UI - frame_time_ui(); - - // Toggle wireframe mode ui - ImGui::Begin("Wireframe Mode"); - if (ImGui::Checkbox("Enable Wireframe Mode", &wireframe_mode)) { - if (wireframe_mode) { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Enable wireframe mode - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // Disable wireframe mode - } - } - ImGui::End(); + // ImGui frame + imgui_frame(); + + // Update the projection and view matrices + projectionMatrix = glm::perspective(glm::radians(fov), (float)window_width / (float)window_height, 0.1f, 100.0f); + camera_front = glm::vec3( + cos(glm::radians(camera_yaw)) * cos(glm::radians(camera_pitch)), + sin(glm::radians(camera_pitch)), + sin(glm::radians(camera_yaw)) * cos(glm::radians(camera_pitch)) + ); + viewMatrix = glm::lookAt(camera_position, camera_position + camera_front, camera_up); // Render ImGui::Render(); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBindVertexArray(VAO); // Bind the vertex array object - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); // Draw the triangles + // Use the shader program + shader_program.use(); + shader_program.setMat4("view", viewMatrix); // Set the view matrix + shader_program.setMat4("projection", projectionMatrix); // Set the projection matrix + shader_program.setMat4("model", modelMatrix); // Set the model matrix + + texture1.bind(0); // Bind texture 1 to unit 0 + texture2.bind(1); // Bind texture 2 to unit 1 + + object.draw(); // Draw the object ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); SDL_GL_SwapWindow(window); @@ -119,14 +197,6 @@ int main(int argc, char* argv[]) { } // Cleanup - glDeleteVertexArrays(1, &VAO); - glDeleteBuffers(1, &VBO); - glDeleteBuffers(1, &EBO); - glDeleteProgram(shader_program); - glDeleteShader(vertex_shader); - glDeleteShader(fragment_shader); - free((void*)vertex_shader_source); - free((void*)fragment_shader_source); cleanup_imgui(); cleanup_opengl(); cleanup_sdl(); diff --git a/src/shader.cpp b/src/shader.cpp new file mode 100644 index 0000000..a4b25f5 --- /dev/null +++ b/src/shader.cpp @@ -0,0 +1,97 @@ +#include "shader.hpp" + +Shader::Shader(const char* vertexPath, const char* fragmentPath) { + // Load and compile vertex shader + unsigned int shader = glCreateShader(GL_VERTEX_SHADER); + if (shader == 0) { + std::cerr << "Failed to create shader." << std::endl; + } + + const char* vertex_shader_source = read_file(vertexPath); + glShaderSource(shader, 1, &vertex_shader_source, nullptr); + glCompileShader(shader); + + // Check for vertex shader compilation errors + int success; + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + if (!success) { + char info_log[512]; + glGetShaderInfoLog(shader, sizeof(info_log), nullptr, info_log); + std::cerr << "Vertex shader compilation error: " << info_log << std::endl; + glDeleteShader(shader); + } + + // Load and compile fragment shader + unsigned int fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + if (fragment_shader == 0) { + std::cerr << "Failed to create shader." << std::endl; + } + + const char* fragment_shader_source = read_file(fragmentPath); + glShaderSource(fragment_shader, 1, &fragment_shader_source, nullptr); + glCompileShader(fragment_shader); + + // Check for fragment shader compilation errors + glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success); + if (!success) { + char info_log[512]; + glGetShaderInfoLog(fragment_shader, sizeof(info_log), nullptr, info_log); + std::cerr << "Fragment shader compilation error: " << info_log << std::endl; + glDeleteShader(fragment_shader); + } + + // Create shader program + ID = glCreateProgram(); + if (ID == 0) { + std::cerr << "Failed to create shader program." << std::endl; + } + + glAttachShader(ID, shader); + glAttachShader(ID, fragment_shader); + glLinkProgram(ID); + + // Check for linking errors + glGetProgramiv(ID, GL_LINK_STATUS, &success); + if (!success) { + char info_log[512]; + glGetProgramInfoLog(ID, sizeof(info_log), nullptr, info_log); + std::cerr << "Shader program linking error: " << info_log << std::endl; + glDeleteProgram(ID); + ID = 0; // Reset ID to indicate failure + } + + // Clean up shaders as they are no longer needed + glDeleteShader(shader); + glDeleteShader(fragment_shader); +} + +void Shader::use() const { + if (ID != 0) { + glUseProgram(ID); + } else { + std::cerr << "Shader program not initialized." << std::endl; + } +} + +void Shader::setBool(const std::string &name, bool value) const { + glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value); +} + +void Shader::setInt(const std::string &name, int value) const { + glUniform1i(glGetUniformLocation(ID, name.c_str()), value); +} + +void Shader::setFloat(const std::string &name, float value) const { + glUniform1f(glGetUniformLocation(ID, name.c_str()), value); +} + +void Shader::setMat4(const std::string &name, const glm::mat4 &mat) const { + glUniformMatrix4fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]); +} + +Shader::~Shader() { + if (ID != 0) { + glDeleteProgram(ID); + ID = 0; // Reset ID to indicate the shader program has been deleted + } +} \ No newline at end of file diff --git a/src/texture.cpp b/src/texture.cpp new file mode 100644 index 0000000..097a2bf --- /dev/null +++ b/src/texture.cpp @@ -0,0 +1,68 @@ +#include "texture.hpp" + +void flip_surface(SDL_Surface* surface) { + if (!surface) { + std::cerr << "Surface is null, cannot flip" << std::endl; + return; + } + + int pitch = surface->pitch; + Uint8* pixels = static_cast(surface->pixels); + int height = surface->h; + + for (int y = 0; y < height / 2; ++y) { + Uint8* top_row = pixels + y * pitch; + Uint8* bottom_row = pixels + (height - y - 1) * pitch; + + for (int x = 0; x < pitch; ++x) { + std::swap(top_row[x], bottom_row[x]); + } + } +} + +Texture::Texture(const char* file_path) { + ID = 0; + SDL_Surface* surface = IMG_Load(file_path); + if (!surface) { + std::cerr << "Failed to load texture: " << SDL_GetError() << std::endl; + return; // Texture loading failed + } + + GLenum format = (surface->format == SDL_PIXELFORMAT_RGBA32) ? GL_RGBA : GL_RGB; + flip_surface(surface); // Flip the surface vertically + + glGenTextures(1, &ID); + glBindTexture(GL_TEXTURE_2D, ID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + glTexImage2D(GL_TEXTURE_2D, 0, format, surface->w, surface->h, 0, format, GL_UNSIGNED_BYTE, surface->pixels); + glGenerateMipmap(GL_TEXTURE_2D); + + SDL_DestroySurface(surface); // Free the surface after uploading texture data +} + +Texture::~Texture() { + if (ID != 0) { + glDeleteTextures(1, &ID); + } +} + +void Texture::bind() const { + glBindTexture(GL_TEXTURE_2D, ID); +} + +void Texture::bind(unsigned int unit) const { + if (unit >= GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS) { + std::cerr << "Texture unit out of range: " << unit << std::endl; + return; // Invalid texture unit + } + glActiveTexture(GL_TEXTURE0 + unit); + glBindTexture(GL_TEXTURE_2D, ID); +} + +void Texture::unbind() const { + glBindTexture(GL_TEXTURE_2D, 0); +} \ No newline at end of file diff --git a/src/window.cpp b/src/window.cpp index d7547f9..396bd8c 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -4,6 +4,8 @@ float main_scale; SDL_Window* window; SDL_Event event; +int window_width = 850; // Default window width +int window_height = 850; // Default window height // Functions int initialize_sdl() {