Compare commits
2 commits
ccf325d8fb
...
fc4a02835a
Author | SHA1 | Date | |
---|---|---|---|
fc4a02835a | |||
aafd64137f |
7 changed files with 101 additions and 51 deletions
|
@ -30,17 +30,21 @@ source_group("shaders" FILES ${PROJECT_SHADERS})
|
||||||
source_group("sources" FILES ${PROJECT_SOURCES})
|
source_group("sources" FILES ${PROJECT_SOURCES})
|
||||||
source_group("vendors" FILES ${VENDORS_SOURCES})
|
source_group("vendors" FILES ${VENDORS_SOURCES})
|
||||||
|
|
||||||
|
find_package(Boost 1.56 REQUIRED COMPONENTS
|
||||||
|
program_options)
|
||||||
|
|
||||||
set(EXE_1_NAME loader)
|
set(EXE_1_NAME loader)
|
||||||
file(
|
file(
|
||||||
GLOB EXE_1_SOURCES
|
GLOB EXE_1_SOURCES
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
|
src/graphics.hpp
|
||||||
include/glad/glad.h
|
include/glad/glad.h
|
||||||
)
|
)
|
||||||
set(CMAKE_BINARY_DIR "bin")
|
set(CMAKE_BINARY_DIR "bin")
|
||||||
|
|
||||||
add_executable(${EXE_1_NAME} ${EXE_1_SOURCES} ${PROJECT_HEADERS}
|
add_executable(${EXE_1_NAME} ${EXE_1_SOURCES} ${PROJECT_HEADERS}
|
||||||
${PROJECT_SHADERS} ${VENDORS_SOURCES})
|
${PROJECT_SHADERS} ${VENDORS_SOURCES})
|
||||||
target_link_libraries(${EXE_1_NAME} glfw ${GLAD_LIBRARIES})
|
target_link_libraries(${EXE_1_NAME} glfw ${GLAD_LIBRARIES} Boost::program_options)
|
||||||
target_include_directories(${EXE_1_NAME} PRIVATE include)
|
target_include_directories(${EXE_1_NAME} PRIVATE include)
|
||||||
set_target_properties(${EXE_1_NAME} PROPERTIES
|
set_target_properties(${EXE_1_NAME} PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${EXE_1_NAME})
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${EXE_1_NAME})
|
||||||
|
|
|
@ -9,7 +9,7 @@ For Fedora Systems, you can the dependencies like this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel extra-cmake-modules \
|
sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel extra-cmake-modules \
|
||||||
libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel
|
libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel boost boost-doc boost-devel
|
||||||
```
|
```
|
||||||
|
|
||||||
Optional, but recommended Packages:
|
Optional, but recommended Packages:
|
||||||
|
@ -22,3 +22,4 @@ sudo dnf install glfw-devel glfw glfw-doc glad
|
||||||
Your editor might need help to find the `include/` directory. If you are using
|
Your editor might need help to find the `include/` directory. If you are using
|
||||||
clangd, you can use the `.clangd` file in this repo. Just adjust the path to
|
clangd, you can use the `.clangd` file in this repo. Just adjust the path to
|
||||||
what you need (it needs to be absolute).
|
what you need (it needs to be absolute).
|
||||||
|
|
||||||
|
|
4
build.sh
4
build.sh
|
@ -3,4 +3,6 @@ set -e
|
||||||
flags="-DGLFW_USE_WAYLAND=ON" # compile glfw for wayland instead of X11
|
flags="-DGLFW_USE_WAYLAND=ON" # compile glfw for wayland instead of X11
|
||||||
cmake $flags .
|
cmake $flags .
|
||||||
cmake --build .
|
cmake --build .
|
||||||
./bin/loader/loader
|
echo -e "running the program, passing the given args"
|
||||||
|
echo -e "========================================"
|
||||||
|
./run.sh $@
|
||||||
|
|
3
run.sh
Executable file
3
run.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
./bin/loader/loader $@
|
58
src/graphics.cpp
Normal file
58
src/graphics.cpp
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#include "graphics.hpp"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int mainWindow() {
|
||||||
|
/* graphics stuff */
|
||||||
|
glfwInit();
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||||
|
|
||||||
|
GLFWwindow *window = glfwCreateWindow(800, 600, "Shader Loader", NULL, NULL);
|
||||||
|
if (window == NULL) {
|
||||||
|
printf("Failed to create GLFW window\n");
|
||||||
|
glfwTerminate();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
glfwMakeContextCurrent(window);
|
||||||
|
|
||||||
|
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
|
||||||
|
printf("Failed to initialize GLAD\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
|
||||||
|
|
||||||
|
float vertices[] = {-0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f};
|
||||||
|
|
||||||
|
unsigned int VBO;
|
||||||
|
|
||||||
|
glGenBuffers(1, &VBO);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
while (!glfwWindowShouldClose(window)) {
|
||||||
|
processInput(window);
|
||||||
|
|
||||||
|
glClearColor(0.8f, 0.4f, 0.1f, 1.0f);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
|
glfwSwapBuffers(window);
|
||||||
|
glfwPollEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwTerminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void processInput(GLFWwindow *window) {
|
||||||
|
// if user presses ESC, close the window
|
||||||
|
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
||||||
|
glfwSetWindowShouldClose(window, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
|
||||||
|
glViewport(0, 0, width, height);
|
||||||
|
}
|
6
src/graphics.hpp
Normal file
6
src/graphics.hpp
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include <glad/glad.c>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
|
void framebuffer_size_callback(GLFWwindow *window, int width, int height);
|
||||||
|
void processInput(GLFWwindow *window);
|
||||||
|
int mainWindow();
|
72
src/main.cpp
72
src/main.cpp
|
@ -1,62 +1,38 @@
|
||||||
#include <glad/glad.c>
|
#include <boost/program_options.hpp>
|
||||||
#include <GLFW/glfw3.h>
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow *window, int width, int height);
|
#include "graphics.hpp"
|
||||||
void processInput(GLFWwindow *window);
|
|
||||||
|
namespace po = boost::program_options;
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
glfwInit();
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
|
||||||
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
|
||||||
|
|
||||||
GLFWwindow *window = glfwCreateWindow(800, 600, "Shader Loader", NULL, NULL);
|
printf("argc:\t\t%d\n", argc);
|
||||||
if (window == NULL) {
|
for (int i = 0; i < argc; i++) {
|
||||||
printf("Failed to create GLFW window\n");
|
printf("argv[%d]:\t%s\n", i, argv[i]);
|
||||||
glfwTerminate();
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
glfwMakeContextCurrent(window);
|
std::cout << std::endl;
|
||||||
|
|
||||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
|
po::options_description desc("Allowed options");
|
||||||
printf("Failed to initialize GLAD\n");
|
desc.add_options()("help", "produce help message")(
|
||||||
return -1;
|
"compression", po::value<int>(), "set compression level");
|
||||||
|
|
||||||
|
po::variables_map vm;
|
||||||
|
/* po::store(po::parse_command_line(ac, av, desc), vm); */
|
||||||
|
po::notify(vm);
|
||||||
|
|
||||||
|
if (vm.count("help")) {
|
||||||
|
std::cout << desc << "\n";
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
|
if (vm.count("compression")) {
|
||||||
|
std::cout << "Compression level was set to " << vm["compression"].as<int>()
|
||||||
float vertices[] = {-0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f};
|
<< ".\n";
|
||||||
|
} else {
|
||||||
unsigned int VBO;
|
std::cout << "Compression level was not set.\n";
|
||||||
|
|
||||||
glGenBuffers(1, &VBO);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
|
||||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
while (!glfwWindowShouldClose(window)) {
|
|
||||||
processInput(window);
|
|
||||||
|
|
||||||
glClearColor(0.8f, 0.4f, 0.1f, 1.0f);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
|
|
||||||
glfwSwapBuffers(window);
|
|
||||||
glfwPollEvents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glfwTerminate();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void processInput(GLFWwindow *window) {
|
|
||||||
// if user presses ESC, close the window
|
|
||||||
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
|
||||||
glfwSetWindowShouldClose(window, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
|
|
||||||
glViewport(0, 0, width, height);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue