This commit is contained in:
Benjamin Palko 2024-08-07 22:04:12 -04:00
parent ee6cba4be7
commit 3025671f4f
4 changed files with 13 additions and 16 deletions

View file

@ -1,20 +1,16 @@
cmake_minimum_required(VERSION 3.29.6) cmake_minimum_required(VERSION 3.29.6)
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(GLFW_BUILD_WAYLAND ON)
set(GLFW_PLATFORM GLFW_PLATFORM_WAYLAND)
project(HelloWorld CXX) project(HelloWorld CXX)
find_package(fmt CONFIG REQUIRED) find_package(fmt CONFIG REQUIRED)
find_package(glfw3 CONFIG REQUIRED) find_package(glfw3 CONFIG REQUIRED)
find_package(glad CONFIG REQUIRED) find_package(OpenGL REQUIRED)
add_executable(main src/main.cpp) add_executable(main src/main.cpp)
target_link_libraries(main PRIVATE fmt::fmt glfw glad::glad) target_link_libraries(main PRIVATE fmt::fmt glfw OpenGL)

View file

@ -7,8 +7,8 @@ pkgs.llvmPackages.stdenv.mkDerivation {
buildInputs = with pkgs.buildPackages; [ buildInputs = with pkgs.buildPackages; [
fmt fmt
glfw-wayland glfw-wayland
libglvnd libGL
libglvnd.dev libGL.dev
]; ];
# nativeBuildInputs is usually what you want -- tools you need to run # nativeBuildInputs is usually what you want -- tools you need to run
nativeBuildInputs = with pkgs.buildPackages; [ nativeBuildInputs = with pkgs.buildPackages; [

View file

@ -1,29 +1,33 @@
#include <fmt/core.h>
#include <glad/glad.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <fmt/core.h>
int main() { int main() {
int supported = glfwPlatformSupported(GLFW_PLATFORM_WAYLAND);
fmt::print("Wayland support: {}\n", supported == GLFW_TRUE);
if (!glfwInit()) { if (!glfwInit()) {
const char *description; const char *description;
int code = glfwGetError(&description); int code = glfwGetError(&description);
fmt::print("GLFW failed to init! {}", code); fmt::print("GLFW failed to init! {} - {}\n", code, description);
return -1; return -1;
} }
GLFWwindow *window = GLFWwindow *window =
glfwCreateWindow(640, 480, "HELLO WORLD!", glfwGetPrimaryMonitor(), NULL); glfwCreateWindow(640, 480, "GLFW", glfwGetPrimaryMonitor(), NULL);
if (!window) { if (!window) {
glfwTerminate(); glfwTerminate();
fmt::print("Window or OpenGL context creation failed"); fmt::print("Window or OpenGL context creation failed\n");
return -1; return -1;
} }
glfwMakeContextCurrent(window); glfwMakeContextCurrent(window);
glClearColor(0.4f, 0.3f, 0.4f, 0.0f);
/* Loop until the user closes the window */ /* Loop until the user closes the window */
while (!glfwWindowShouldClose(window)) { while (!glfwWindowShouldClose(window)) {
/* Render here */ /* Render here */
// glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */ /* Swap front and back buffers */
glfwSwapBuffers(window); glfwSwapBuffers(window);

View file

@ -1,3 +0,0 @@
{
"dependencies": ["glad"]
}