clang format added

This commit is contained in:
MichaelFisher1997 2025-01-14 23:18:11 +00:00
parent 6b0cc46045
commit 47f8068cdd
8 changed files with 293 additions and 340 deletions

View File

@ -2,21 +2,26 @@
#include "Renderer.h"
IndexBuffer::IndexBuffer(const unsigned int *data, unsigned int count)
: m_Count(count)
{
: m_Count(count) {
ASSERT(sizeof(unsigned int) == sizeof(GLuint));
//
//std::cout << "m_RendererID: " << &m_RendererID << " " << m_RendererID << std::endl;
// std::cout << "m_RendererID: " << &m_RendererID << " " << m_RendererID <<
// std::endl;
GLCall(glGenBuffers(1, &m_RendererID));
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_RendererID)); //select buffer called 'buffer'
GLCall(glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(unsigned int), data, GL_STATIC_DRAW)); // assigne buffer size, static as we use many times, but does not change
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
m_RendererID)); // select buffer called 'buffer'
GLCall(glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(unsigned int),
data,
GL_STATIC_DRAW)); // assigne buffer size, static as we use
// many times, but does not change
}
// Destructor
IndexBuffer::~IndexBuffer() {
if (m_RendererID != 0) { // Only delete if valid
GLCall(glDeleteBuffers(1, &m_RendererID));
std::cout << "IndexBuffer destroyed with RendererID: " << m_RendererID << std::endl;
std::cout << "IndexBuffer destroyed with RendererID: " << m_RendererID
<< std::endl;
}
}
@ -49,12 +54,12 @@ IndexBuffer& IndexBuffer::operator=(IndexBuffer&& other) noexcept {
return *this;
}
void IndexBuffer::Bind() const
{
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_RendererID)); //select buffer called 'buffer'
void IndexBuffer::Bind() const {
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
m_RendererID)); // select buffer called 'buffer'
}
void IndexBuffer::Unbind() const
{
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); //select buffer called 'buffer'
void IndexBuffer::Unbind() const {
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
0)); // select buffer called 'buffer'
}

View File

@ -3,19 +3,20 @@
#include "Renderer.h"
void GLClearError() {
while (glGetError() != GL_NO_ERROR);
while (glGetError() != GL_NO_ERROR)
;
}
bool GLLogCall() {
Color::Modifier red(Color::FG_RED);
Color::Modifier def(Color::FG_DEFAULT);
while (GLenum error = glGetError()) {
std::cout << red << "[OpenGL Error] (" << error << ")" << def << std::endl; //if error, it will return a number, this needs to be converted to hex to then look up that value inn GL docs
std::cout
<< red << "[OpenGL Error] (" << error << ")" << def
<< std::endl; // if error, it will return a number, this needs to be
// converted to hex to then look up that value inn GL docs
return false;
}
return true;
}

View File

@ -1,17 +1,16 @@
#include "Shader.h"
#include "IndexBuffer.h"
#include "Renderer.h"
#include "VertexArray.h"
#include "VertexBuffer.h"
#include "fstream"
#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include "VertexBuffer.h"
#include "VertexArray.h"
#include "IndexBuffer.h"
#include "fstream"
#include "Renderer.h"
#include <string>
Shader::Shader(const std::string &filepath)
: m_FilePath(filepath), m_RendererID(0)
{
: m_FilePath(filepath), m_RendererID(0) {
ShaderProgramSource source = ParseShader(filepath);
std::cout << "VERTEX" << std::endl << source.VertexSource << std::endl;
@ -22,69 +21,51 @@ Shader::Shader(const std::string& filepath)
GLCall(glUseProgram(m_RendererID));
}
Shader::~Shader()
{
GLCall( glDeleteProgram(m_RendererID) );
}
Shader::~Shader() { GLCall(glDeleteProgram(m_RendererID)); }
void Shader::Bind() const
{
GLCall( glUseProgram(m_RendererID) );
}
void Shader::Bind() const { GLCall(glUseProgram(m_RendererID)); }
void Shader::Unbind() const
{
GLCall( glUseProgram(0) );
}
void Shader::Unbind() const { GLCall(glUseProgram(0)); }
int Shader::GetUniformLocation(const std::string& name)
{
int Shader::GetUniformLocation(const std::string &name) {
if (m_UniformLocationCache.find(name) != m_UniformLocationCache.end())
return m_UniformLocationCache[name];
GLCall(int location = glGetUniformLocation(m_RendererID, name.c_str()));
if (location == -1)
std::cout << "No active uniform variable with name " << name << " found" << std::endl;
std::cout << "No active uniform variable with name " << name << " found"
<< std::endl;
m_UniformLocationCache[name] = location;
return location;
}
void Shader::SetUniform1f(const std::string& name, float value)
{
void Shader::SetUniform1f(const std::string &name, float value) {
GLCall(glUniform1f(GetUniformLocation(name), value));
}
void Shader::SetUniform4f(const std::string& name, float f0, float f1, float f2, float f3)
{
void Shader::SetUniform4f(const std::string &name, float f0, float f1, float f2,
float f3) {
GLCall(glUniform4f(GetUniformLocation(name), f0, f1, f2, f3));
}
enum ShaderType
{
NONE = -1, VERTEX = 0, FRAGMENT = 1
};
enum ShaderType { NONE = -1, VERTEX = 0, FRAGMENT = 1 };
struct ShaderProgramSource Shader::ParseShader(const std::string& filepath)
{
struct ShaderProgramSource Shader::ParseShader(const std::string &filepath) {
std::ifstream stream(filepath);
std::string line;
std::stringstream ss[2];
ShaderType type = NONE;
while (getline(stream, line))
{
if (line.find("#shader") != std::string::npos)
{
while (getline(stream, line)) {
if (line.find("#shader") != std::string::npos) {
if (line.find("vertex") != std::string::npos)
type = VERTEX;
else if (line.find("fragment") != std::string::npos)
type = FRAGMENT;
}
else
{
} else {
ss[(int)type] << line << '\n';
}
}
@ -93,8 +74,8 @@ struct ShaderProgramSource Shader::ParseShader(const std::string& filepath)
return sps;
}
unsigned int Shader::CompileShader(unsigned int type, const std::string& source)
{
unsigned int Shader::CompileShader(unsigned int type,
const std::string &source) {
GLCall(unsigned int id = glCreateShader(type));
const char *src = source.c_str();
GLCall(glShaderSource(id, 1, &src, nullptr));
@ -103,17 +84,15 @@ unsigned int Shader::CompileShader(unsigned int type, const std::string& source)
// Error handling
int result;
GLCall(glGetShaderiv(id, GL_COMPILE_STATUS, &result));
std::cout << (type == GL_VERTEX_SHADER ? "vertex" : "fragment") << " shader compile status: " << result << std::endl;
if ( result == GL_FALSE )
{
std::cout << (type == GL_VERTEX_SHADER ? "vertex" : "fragment")
<< " shader compile status: " << result << std::endl;
if (result == GL_FALSE) {
int length;
GLCall(glGetShaderiv(id, GL_INFO_LOG_LENGTH, &length));
char *message = (char *)alloca(length * sizeof(char));
GLCall(glGetShaderInfoLog(id, length, &length, message));
std::cout
<< "Failed to compile "
<< (type == GL_VERTEX_SHADER ? "vertex" : "fragment")
<< "shader"
std::cout << "Failed to compile "
<< (type == GL_VERTEX_SHADER ? "vertex" : "fragment") << "shader"
<< std::endl;
std::cout << message << std::endl;
GLCall(glDeleteShader(id));
@ -123,8 +102,8 @@ unsigned int Shader::CompileShader(unsigned int type, const std::string& source)
return id;
}
unsigned int Shader::CreateShader(const std::string& vertexShader, const std::string& fragmentShader)
{
unsigned int Shader::CreateShader(const std::string &vertexShader,
const std::string &fragmentShader) {
// create a shader program
unsigned int program = glCreateProgram();
unsigned int vs = CompileShader(GL_VERTEX_SHADER, vertexShader);
@ -139,8 +118,7 @@ unsigned int Shader::CreateShader(const std::string& vertexShader, const std::st
GLCall(glGetProgramiv(program, GL_LINK_STATUS, &program_linked));
std::cout << "Program link status: " << program_linked << std::endl;
if (program_linked != GL_TRUE)
{
if (program_linked != GL_TRUE) {
GLsizei log_length = 0;
GLchar message[1024];
GLCall(glGetProgramInfoLog(program, 1024, &log_length, message));

View File

@ -1,8 +1,7 @@
#include "VertexArray.h"
#include "Renderer.h"
VertexArray::VertexArray()
{
VertexArray::VertexArray() {
std::cout << "VertexArray::VertexArray()" << std::endl;
std::cout << "m_RendererID: " << &m_RendererID << std::endl;
GLCall(glGenVertexArrays(1, &m_RendererID));
@ -11,16 +10,11 @@ VertexArray::VertexArray()
if (!m_RendererID) {
std::cerr << "Failed to generate VAO" << std::endl;
}
}
VertexArray::~VertexArray()
{
GLCall(glDeleteVertexArrays(1, &m_RendererID));
}
VertexArray::~VertexArray() { GLCall(glDeleteVertexArrays(1, &m_RendererID)); }
void VertexArray::AddBuffer(const VertexBuffer& vb, const VertexBufferLayout& layout)
{
void VertexArray::AddBuffer(const VertexBuffer &vb,
const VertexBufferLayout &layout) {
Bind();
vb.Bind();
const std::vector<VertexBufferElement> elements = layout.GetElements();
@ -28,14 +22,12 @@ void VertexArray::AddBuffer(const VertexBuffer& vb, const VertexBufferLayout& la
for (unsigned int i = 0; i < elements.size(); i++) {
const auto &element = elements[i];
GLCall(glEnableVertexAttribArray(i));
GLCall( glVertexAttribPointer(i, element.count, element.type, element.normalized,layout.GetStride(), INT2VOIDP(offset)) );
GLCall(glVertexAttribPointer(i, element.count, element.type,
element.normalized, layout.GetStride(),
INT2VOIDP(offset)));
offset += element.count * VertexBufferElement::GetSizeOfType(element.type);
}
}
void VertexArray::Bind() const {
GLCall(glBindVertexArray(m_RendererID));
}
void VertexArray::Unbind() const {
GLCall(glBindVertexArray(0));
}
void VertexArray::Bind() const { GLCall(glBindVertexArray(m_RendererID)); }
void VertexArray::Unbind() const { GLCall(glBindVertexArray(0)); }

View File

@ -1,24 +1,22 @@
#include "VertexBuffer.h"
#include "Renderer.h"
VertexBuffer::VertexBuffer(const void* data, unsigned int size)
{
VertexBuffer::VertexBuffer(const void *data, unsigned int size) {
GLCall(glGenBuffers(1, &m_RendererID));
GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID)); //select buffer called 'buffer'
GLCall(glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW)); // assigne buffer size, static as we use many times, but does not change
GLCall(glBindBuffer(GL_ARRAY_BUFFER,
m_RendererID)); // select buffer called 'buffer'
GLCall(glBufferData(GL_ARRAY_BUFFER, size, data,
GL_STATIC_DRAW)); // assigne buffer size, static as we use
// many times, but does not change
}
VertexBuffer::~VertexBuffer()
{
GLCall(glDeleteBuffers(1, &m_RendererID));
VertexBuffer::~VertexBuffer() { GLCall(glDeleteBuffers(1, &m_RendererID)); }
void VertexBuffer::Bind() const {
GLCall(glBindBuffer(GL_ARRAY_BUFFER,
m_RendererID)); // select buffer called 'buffer'
}
void VertexBuffer::Bind() const
{
GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID)); //select buffer called 'buffer'
}
void VertexBuffer::Unbind() const
{
void VertexBuffer::Unbind() const {
GLCall(glBindBuffer(GL_ARRAY_BUFFER, 0)); // select buffer called 'buffer'
}

View File

@ -11,4 +11,3 @@ int main(int argc, char* argv[]) {
return 0;
}

View File

@ -1,38 +1,25 @@
#include <GL/glew.h> // Include GLEW before <SDL2/SDL.h>?
#include "sdl.hpp"
#include "VertexBufferLayout.h"
#include <GL/glew.h> // Include GLEW before <SDL2/SDL.h>?
#include <SDL2/SDL_video.h>
#include <alloca.h>
#include <cstdio>
#include <iostream>
#include <string>
#include <ostream>
#include <string>
#include "Renderer.h"
#include "VertexBuffer.h"
#include "VertexArray.h"
#include "IndexBuffer.h"
#include "Renderer.h"
#include "Shader.h"
#include "VertexArray.h"
#include "VertexBuffer.h"
SdlWindow::SdlWindow(const char *title, int width, int height)
: m_window(nullptr),
m_renderer(nullptr),
m_isRunning(false),
m_isFullscreen(false),
m_width(width),
m_height(height),
m_windowedWidth(width),
m_windowedHeight(height),
r(0.5f),
m_glContext(nullptr),
increment(0.05f),
m_Shader(nullptr),
m_Location(-1),
m_IB(nullptr),
m_VB(nullptr),
m_VA(nullptr)
{
: m_window(nullptr), m_renderer(nullptr), m_isRunning(false),
m_isFullscreen(false), m_width(width), m_height(height),
m_windowedWidth(width), m_windowedHeight(height), r(0.5f),
m_glContext(nullptr), increment(0.05f), m_Shader(nullptr), m_Location(-1),
m_IB(nullptr), m_VB(nullptr), m_VA(nullptr) {
std::cout << "Step 0: hellow world" << std::endl;
@ -42,11 +29,8 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
std::cout << "Step 1: SDL_GL_SetAttribute completed" << std::endl;
// 2. Create the window with OpenGL flag
m_window = SDL_CreateWindow(title,
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
width,
height,
m_window = SDL_CreateWindow(
title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE);
if (!m_window) {
@ -63,7 +47,8 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
std::cout << "Step 3: SDL_GL_CreateContext completed" << std::endl;
if (SDL_GL_MakeCurrent(m_window, m_glContext) != 0) {
std::cerr << "Failed to make GL context current: " << SDL_GetError() << std::endl;
std::cerr << "Failed to make GL context current: " << SDL_GetError()
<< std::endl;
return;
}
std::cout << "Step 4: SDL_GL_MakeCurrent completed" << std::endl;
@ -72,7 +57,8 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
glewExperimental = GL_TRUE;
GLenum glewErr = glewInit();
if (glewErr != GLEW_OK) {
std::cerr << "Failed to init GLEW: " << glewGetErrorString(glewErr) << std::endl;
std::cerr << "Failed to init GLEW: " << glewGetErrorString(glewErr)
<< std::endl;
return;
}
std::cout << "Step 5: GLEW initialized successfully" << std::endl;
@ -80,17 +66,18 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
#endif
std::cout << "OpenGL Version: " << glGetString(GL_VERSION) << std::endl;
std::cout << "GLSL Version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl;
std::cout << "GLSL Version: " << glGetString(GL_SHADING_LANGUAGE_VERSION)
<< std::endl;
std::cout << "Vendor: " << glGetString(GL_VENDOR) << std::endl;
// 5. Set vsync (optional)
SDL_GL_SetSwapInterval(1); // Vsync
// 6. Mark as running
m_isRunning = true;
float positions[] = { // vertex for a triangle
float positions[] = {
// vertex for a triangle
// x,y
-0.5f, -0.5f, // 0
0.5f, -0.5f, // 1
@ -98,10 +85,7 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
-0.5f, 0.5f // 3
};
unsigned int indices[] = {
0, 1, 2,
2, 3, 0
};
unsigned int indices[] = {0, 1, 2, 2, 3, 0};
m_VA = new VertexArray();
m_VB = new VertexBuffer(positions, 4 * 2 * sizeof(float));
m_IB = new IndexBuffer(indices, 6);
@ -111,15 +95,12 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
m_VA->AddBuffer(*m_VB, layout);
m_Shader = new Shader("res/shaders/Basic.shader");
m_Shader->Bind();
}
SdlWindow::~SdlWindow() {
// If using SDL Renderer, destroy it. But if youre purely using OpenGL, you might remove it.
// If using SDL Renderer, destroy it. But if youre purely using OpenGL, you
// might remove it.
if (m_renderer) {
SDL_DestroyRenderer(m_renderer);
m_renderer = nullptr;
@ -169,8 +150,7 @@ SDL_Event event;
std::cout << "Bye!" << std::endl;
m_isRunning = false; // exit application
}
}
else if (event.type == SDL_WINDOWEVENT) {
} else if (event.type == SDL_WINDOWEVENT) {
if (event.window.event == SDL_WINDOWEVENT_RESIZED) {
// SDL gives the new width/height in event.window.data1/data2
int newWidth = event.window.data1;
@ -218,7 +198,8 @@ void SdlWindow::render() {
m_IB->Bind();
// TODO: Draw with OpenGL here (shaders, triangles, etc.)
// glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr);
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr)); //macro assert for debugging
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT,
nullptr)); // macro assert for debugging
// Swap buffers
SDL_GL_SwapWindow(m_window);

View File

@ -9,11 +9,11 @@
#include <GL/glew.h> // or <glad/glad.h> if using GLAD
#endif
#include <string>
#include "IndexBuffer.h"
#include "VertexBufferLayout.h"
#include "VertexArray.h"
#include "Shader.h"
#include "VertexArray.h"
#include "VertexBufferLayout.h"
#include <string>
// Forward declaration of classes and structs if needed
// class SomethingElse;
@ -29,7 +29,8 @@ public:
// Run the main loop
void run();
// unsigned int compileShader(unsigned int type, const std::string& source);
// unsigned int createShader(const std::string& vetexShader, const std::string& fragmentShader);
// unsigned int createShader(const std::string& vetexShader, const
// std::string& fragmentShader);
// // for spliting our shaders
// //struct ShaderProgramSource {
// // std::string VetexSource, FragmentSource;
@ -41,7 +42,6 @@ public:
void setFullscreen(bool fullscreen);
private:
// Private data members
SDL_Window *m_window;
@ -67,4 +67,3 @@ private:
void update();
void render();
};