Added GL_Context and fixed debug memory leak detection
This commit is contained in:
parent
e054930fb1
commit
a3a2cd9de2
3 changed files with 36 additions and 24 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -10,3 +10,4 @@ CPackSourceConfig.cmake
|
||||||
Makefile
|
Makefile
|
||||||
_deps/
|
_deps/
|
||||||
cmake_install.cmake
|
cmake_install.cmake
|
||||||
|
.cache/
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
|
||||||
project(webgpu
|
project(webgpu
|
||||||
VERSION 0
|
VERSION 0
|
||||||
DESCRIPTION "Simple Engine Experiment in C"
|
DESCRIPTION "Simple Engine Experiment in C"
|
||||||
|
|
@ -16,21 +16,11 @@ if(CMAKE_EXPORT_COMPILE_COMMANDS)
|
||||||
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES})
|
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Error on memory address issues in debug mode
|
|
||||||
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
||||||
set(
|
|
||||||
CMAKE_C_FLAGS
|
|
||||||
"${CMAKE_C_FLAGS} -Werror -fsanitize=undefined -fsanitize=address"
|
|
||||||
)
|
|
||||||
target_link_options(${PROJECT_NAME}
|
|
||||||
BEFORE PUBLIC -fsanitize=undefined PUBLIC -fsanitize=address
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
option(USE_VENDORED_LIBRARIES "Use vendored libraries" ON)
|
option(USE_VENDORED_LIBRARIES "Use vendored libraries" ON)
|
||||||
|
|
||||||
if(USE_VENDORED_LIBRARIES)
|
if(USE_VENDORED_LIBRARIES)
|
||||||
|
set(OpenGL_GL_PREFERENCE GLVND)
|
||||||
|
|
||||||
add_definitions(-DSDL_STATIC=ON)
|
add_definitions(-DSDL_STATIC=ON)
|
||||||
add_subdirectory(extern/SDL3 EXCLUDE_FROM_ALL)
|
add_subdirectory(extern/SDL3 EXCLUDE_FROM_ALL)
|
||||||
set(SDL3_LIBRARIES SDL3::SDL3)
|
set(SDL3_LIBRARIES SDL3::SDL3)
|
||||||
|
|
@ -59,7 +49,6 @@ if(USE_VENDORED_LIBRARIES)
|
||||||
set(GLEW_INCLUDE_DIRS ${glew_SOURCE_DIR}/include)
|
set(GLEW_INCLUDE_DIRS ${glew_SOURCE_DIR}/include)
|
||||||
|
|
||||||
|
|
||||||
set(OpenGL_GL_PREFERENCE GLVND)
|
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY})
|
set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY})
|
||||||
set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
|
set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
|
||||||
|
|
@ -67,11 +56,11 @@ else()
|
||||||
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared)
|
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_cmake_property(_variableNames VARIABLES)
|
#get_cmake_property(_variableNames VARIABLES)
|
||||||
list (SORT _variableNames)
|
#list (SORT _variableNames)
|
||||||
foreach (_variableName ${_variableNames})
|
#foreach (_variableName ${_variableNames})
|
||||||
message(STATUS "${_variableName}=${${_variableName}}")
|
# message(STATUS "${_variableName}=${${_variableName}}")
|
||||||
endforeach()
|
#endforeach()
|
||||||
|
|
||||||
file(GLOB_RECURSE SOURCE_FILES
|
file(GLOB_RECURSE SOURCE_FILES
|
||||||
${CMAKE_SOURCE_DIR}/src/*.c)
|
${CMAKE_SOURCE_DIR}/src/*.c)
|
||||||
|
|
@ -79,6 +68,17 @@ file(GLOB_RECURSE HEADER_FILES
|
||||||
${CMAKE_SOURCE_DIR}/src/*.h)
|
${CMAKE_SOURCE_DIR}/src/*.h)
|
||||||
add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES})
|
add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES})
|
||||||
|
|
||||||
|
# Error on memory address issues in debug mode
|
||||||
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
|
set(
|
||||||
|
CMAKE_C_FLAGS
|
||||||
|
"${CMAKE_C_FLAGS} -Werror -fsanitize=undefined -fsanitize=address"
|
||||||
|
)
|
||||||
|
target_link_options(${PROJECT_NAME}
|
||||||
|
BEFORE PUBLIC -fsanitize=undefined PUBLIC -fsanitize=address
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||||
${SDL3_INCLUDE_DIRS}
|
${SDL3_INCLUDE_DIRS}
|
||||||
${SDL3_image_INCLUDE_DIRS}
|
${SDL3_image_INCLUDE_DIRS}
|
||||||
|
|
|
||||||
21
src/main.c
21
src/main.c
|
|
@ -1,5 +1,6 @@
|
||||||
#include "SDL3/SDL_init.h"
|
#include "SDL3/SDL_init.h"
|
||||||
#include "SDL3/SDL_log.h"
|
#include "SDL3/SDL_log.h"
|
||||||
|
#include "SDL3/SDL_opengl.h"
|
||||||
#include "SDL3/SDL_render.h"
|
#include "SDL3/SDL_render.h"
|
||||||
#include "SDL3/SDL_video.h"
|
#include "SDL3/SDL_video.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -15,25 +16,35 @@ int main(int argc, char *argv[]) {
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 6);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
|
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
|
||||||
|
|
||||||
window = SDL_CreateWindow("Hello SDL3", 320, 240, SDL_WINDOW_OPENGL);
|
window = SDL_CreateWindow("Hello SDL3", 320, 240,
|
||||||
|
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
|
||||||
if (!window) {
|
if (!window) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create windowe: %s",
|
||||||
"Couldn't create window and renderer: %s", SDL_GetError());
|
SDL_GetError());
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_GLContext glcontext = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
// handle input
|
||||||
SDL_PollEvent(&event);
|
SDL_PollEvent(&event);
|
||||||
if (event.type == SDL_EVENT_QUIT) {
|
if (event.type == SDL_EVENT_QUIT) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// render
|
||||||
|
glClearColor(0, 0, 0, 1);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
SDL_GL_SwapWindow(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_GL_DestroyContext(glcontext);
|
||||||
SDL_DestroyWindow(window);
|
SDL_DestroyWindow(window);
|
||||||
|
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue