Nove repo opengl-learning

This commit is contained in:
TheRetikGM
2021-02-12 15:43:03 +01:00
commit 63e3c0bc8b
1046 changed files with 358397 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
NAME := main
CXX=g++
DEBUG :=
CXX_FLAGS := $(DEBUG) -std=c++14
LIBS := -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -pthread -lXi -ldl -lm
INCLUDE := ../../../include/
BIN := bin
SRC := src
INPUT = src/main.cpp ../../../glad.c
all: $(BIN)/$(NAME)
run:
./$(BIN)/$(NAME)
$(BIN)/$(NAME): $(SRC)/main.o $(SRC)/glad.o
$(CXX) $(CXX_FLAGS) -I$(INCLUDE) $^ -o $@ $(LIBS)
.cpp.o:
$(CXX) $(CXX_FLAGS) -I$(INCLUDE) -c $< -o $@
.c.o:
$(CXX) $(CXX_FLAGS) -I$(INCLUDE) -c $< -o $@
$(SRC)/glad.o: ../../../glad.c
$(CXX) $(CXX_FLAGS) -I$(INCLUDE) -c $< -o $@
# dependencies
$(SRC)/main.o: $(SRC)/main.cpp
clean:
rm -rf $(SRC)/*.o
touch $(SRC)/*

View File

@@ -0,0 +1,75 @@
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
// Global Constants
const int WINDOW_WIDTH = 800;
const int WINDOW_HEIGHT = 600;
// Globals
GLFWwindow* window;
uint8_t init(void);
void framebuffersize_callback(GLFWwindow* window, int width, int height);
void freeAll(void);
void proccessInput(GLFWwindow* window);
int main(int argc, char** argv)
{
if (init() != 0)
return -1;
// MAIN loop
while (!glfwWindowShouldClose(window)) {
// input ...
proccessInput(window);
// rendering commands here ...
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// check and calls events and swap the buffers
glfwSwapBuffers(window);
glfwPollEvents();
}
freeAll();
return 0;
}
uint8_t init(void) {
// init of glfw window
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "Hello Window!", NULL, NULL);
if (window == NULL) {
cerr << "Failed to create glfw window" << endl;
glfwTerminate();
return 1;
}
glfwMakeContextCurrent(window);
// init of GLAD
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
cerr << "Failed to initialize GLAD" << endl;
}
glfwSetFramebufferSizeCallback(window, framebuffersize_callback);
return 0;
}
void framebuffersize_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
void freeAll(void)
{
glfwTerminate();
}
void proccessInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}