feat: add OpenGL abstraction layer with RAII resources
- Replace window class with cbt::opengl::context - Add buffer resource (VBO, EBO, UBO, SSBO) with move semantics - Add texture resource with format/type enums and filtering - Add descriptor_set for Vulkan-style resource binding - All resources use RAII with proper cleanup
This commit is contained in:
Vendored
+84
@@ -0,0 +1,84 @@
|
||||
# ==============================================================================
|
||||
# Find GTest
|
||||
# ==============================================================================
|
||||
# This module fetches the Google Test framework.
|
||||
#
|
||||
# Targets provided:
|
||||
# GTest::gtest - The gtest library target
|
||||
# GTest::gtest_main - The gtest_main library target
|
||||
#
|
||||
# Variables set:
|
||||
# GTEST_FOUND - TRUE if GTest is available
|
||||
# GTEST_LIBRARIES - The gtest library targets (gtest gtest_main)
|
||||
# GTEST_INCLUDE_DIRS - Include directories for GTest
|
||||
# GTEST_VERSION - Version of GTest
|
||||
# ==============================================================================
|
||||
|
||||
if(DEFINED _FINDGTEST_INCLUDED)
|
||||
return()
|
||||
endif()
|
||||
set(_FINDGTEST_INCLUDED TRUE)
|
||||
|
||||
# Use the version passed to find_package(), or default to 1.17.0
|
||||
if (DEFINED gtest_FIND_VERSION AND NOT gtest_FIND_VERSION STREQUAL "")
|
||||
set(GTEST_VERSION "${gtest_FIND_VERSION}")
|
||||
else()
|
||||
set(GTEST_VERSION "1.17.0")
|
||||
endif()
|
||||
|
||||
message(STATUS "Fetching GoogleTest ${GTEST_VERSION}")
|
||||
include(FetchContent)
|
||||
|
||||
find_program(GIT_EXECUTABLE git)
|
||||
if (GIT_EXECUTABLE)
|
||||
set(GTEST_FETCH_METHOD "GIT")
|
||||
else()
|
||||
set(GTEST_FETCH_METHOD "ZIP")
|
||||
endif()
|
||||
|
||||
if (GTEST_FETCH_METHOD STREQUAL "GIT")
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
GIT_TAG v${GTEST_VERSION}
|
||||
)
|
||||
else()
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/refs/tags/v${GTEST_VERSION}.zip
|
||||
)
|
||||
endif()
|
||||
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
|
||||
message(STATUS "{GoogleTest} version: ${GTEST_VERSION}")
|
||||
|
||||
# Provide in-tree aliases to the raw library targets
|
||||
if(TARGET gtest AND NOT TARGET GTest::gtest)
|
||||
add_library(GTest::gtest ALIAS gtest)
|
||||
endif()
|
||||
if(TARGET gtest_main AND NOT TARGET GTest::gtest_main)
|
||||
add_library(GTest::gtest_main ALIAS gtest_main)
|
||||
endif()
|
||||
|
||||
set(GTEST_INCLUDE_DIRS ${googletest_SOURCE_DIR}/googletest/include)
|
||||
set(GTEST_LIBRARIES gtest gtest_main)
|
||||
set(GTEST_FOUND TRUE)
|
||||
|
||||
# Mark GTest includes as SYSTEM to suppress warnings from its headers
|
||||
if (GTEST_INCLUDE_DIRS AND TARGET gtest)
|
||||
set_target_properties(gtest PROPERTIES
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
|
||||
)
|
||||
endif()
|
||||
if (GTEST_INCLUDE_DIRS AND TARGET gtest_main)
|
||||
set_target_properties(gtest_main PROPERTIES
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
GTest_INCLUDE_DIRS
|
||||
GTest_LIBRARY
|
||||
GTest_MAIN_LIBRARY
|
||||
)
|
||||
Reference in New Issue
Block a user