App: WIP broken

This commit is contained in:
Eero Holmala 2023-04-28 17:44:09 +03:00
parent a2e592e79a
commit 005fceafd9
4 changed files with 89 additions and 3 deletions

View File

@ -13,11 +13,13 @@ add_executable(App
find_package(SDL2 CONFIG REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
target_link_libraries(App PRIVATE
AppLib
SDL2::SDL2
SDL2::SDL2main
OpenGL::GL
GLEW::GLEW
)
target_include_directories(App PUBLIC "${CMAKE_SOURCE_DIR}/App/include")

View File

@ -2,8 +2,8 @@
#include "SDL2/SDL.h"
// #include "SDL2/SDL_vulkan.h"
#include <SDL2/SDL_opengl.h>
#include <GL/gl.h>
#include "SDL2/SDL_opengl.h"
#include "GL/glew.h"
#include "Logger.hh"
#include "Controller.hh"

View File

@ -8,10 +8,89 @@
#define PLATFORM_SURFACE_EXTENSION_NAME VK_KHR_WIN32_SURFACE_EXTENSION_NAME
#endif
//TODO (Eero): https://github.com/theandrew168/sdl2-opengl-demo/blob/master/src/main.c
namespace App
{
App::App() : m_ReturnCode(0), m_WindowWidth(800), m_WindowHeight(600), m_Quit(false), m_VSync(false)
{
float vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
// printf("OpenGL Vendor: %s\n", glGetString(GL_VENDOR));
// printf("OpenGL Renderer: %s\n", glGetString(GL_RENDERER));
// printf("OpenGL Version: %s\n", glGetString(GL_VERSION));
// printf("GLSL Version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
// Vertex Shader Part
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
unsigned int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
int success;
char infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
if(!success)
{
glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;
}
// Fragment Shader Part
unsigned int fragmentShader;
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if(!success) {
glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::FRAGMET::COMPILATION_FAILED\n" << infoLog << std::endl;
}
unsigned int shaderProgram;
shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
glUseProgram(shaderProgram);
// Oh yeah, and don't forget to delete the shader objects once we've linked them into the program object; we no longer need them anymore:
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// // 0. copy our vertices array in a buffer for OpenGL to use
// glBindBuffer(GL_ARRAY_BUFFER, VBO);
// glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// // 1. then set the vertex attributes pointers
// glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
// glEnableVertexAttribArray(0);
// // 2. use our shader program when we want to render an object
// glUseProgram(shaderProgram);
// // 3. now draw the object
// someOpenGLFunctionThatDrawsOurTriangle();
std::cout << "Eternity Engine" << std::endl;
m_Logger = std::make_shared<Logger>();
m_Controller = std::make_shared<Controller>();
@ -81,6 +160,9 @@ namespace App
glClearColor(0.39f, 0.58f, 0.93f, 1.f);
// Clear color buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(shaderProgram);
glBindVertexArray(VAO);
// someOpenGLFunctionThatDrawsOurTriangle();
// Update window with OpenGL rendering
SDL_GL_SwapWindow(m_Window);
}
@ -92,6 +174,9 @@ namespace App
App::~App()
{
glDeleteVertexArrays(1, &VAO);
glDeleteBuffers(1, &VBO);
glDeleteProgram(shaderProgram);
SDL_DestroyWindow(m_Window);
SDL_Quit();
m_Logger.reset();

View File

@ -1,5 +1,4 @@
#include "App.hh"
#include "Math.hh"
#include <iostream>