Skip to content

Commit 8eff93a

Browse files
committed
nox11dep
1 parent 7b75a81 commit 8eff93a

File tree

3 files changed

+42
-124
lines changed

3 files changed

+42
-124
lines changed

CMakeLists.txt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,21 @@ project(opengltutor
1414

1515
if (PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR)
1616
message(FATAL_ERROR "The binary directory of CMake cannot be the same as source directory! "
17-
"Please consider use 'cmake -B build' to specify a different binary directory. "
17+
"Do not use 'cmake .'! Please consider use 'cmake -B build' to specify a different binary directory. "
1818
"Otherwise this project may fail to build, or make Git hard to exclude binary files. "
1919
"For Windows, it is highly recommended to use Visual Studio as IDE for CMake projects.")
2020
endif()
2121

22-
if (UNIX AND NOT APPLE)
23-
find_package(X11 QUIET)
24-
if (X11_FOUND)
25-
link_libraries(${X11_LIBRARIES})
26-
include_directories(${X11_INCLUDE_DIR})
27-
endif()
28-
add_definitions(-DCMAKE_FOUND_X11)
29-
endif()
30-
3122
if (NOT MSVC)
32-
find_program(CCACHE_PROGRAM ccache) # See https://ccache.dev
23+
find_program(CCACHE_PROGRAM ccache) # Compilation speed up: https://ccache.dev
3324
if (CCACHE_PROGRAM)
3425
message(STATUS "Found CCache: ${CCACHE_PROGRAM}")
3526
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PROGRAM})
3627
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE_PROGRAM})
3728
endif()
3829
endif()
3930

40-
if (MSVC)
31+
if (MSVC) # 1. fix string literial cannot include unicode characters; 2. rid min and max macros; 3. get back M_PI, M_E macros
4132
add_compile_options($<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/utf-8$<SEMICOLON>/DNOMINMAX$<SEMICOLON>/D_USE_MATH_DEFINES>)
4233
add_compile_options($<$<COMPILE_LANG_AND_ID:C,MSVC>:/utf-8$<SEMICOLON>/DNOMINMAX$<SEMICOLON>/D_USE_MATH_DEFINES>)
4334
endif()

src/check_gl.cpp

Lines changed: 37 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -48,107 +48,52 @@ static void APIENTRY opengl_debug_message_callback(
4848
GLenum severity, GLsizei length,
4949
const GLchar *msg, const void *data)
5050
{
51-
const char *_source;
52-
const char *_type;
53-
const char *_severity;
51+
if (severity == GL_DEBUG_SEVERITY_NOTIFICATION) return;
5452

55-
switch (source) {
56-
case GL_DEBUG_SOURCE_API:
57-
_source = "API";
58-
break;
59-
60-
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
61-
_source = "WINDOW SYSTEM";
62-
break;
63-
64-
case GL_DEBUG_SOURCE_SHADER_COMPILER:
65-
_source = "SHADER COMPILER";
66-
break;
67-
68-
case GL_DEBUG_SOURCE_THIRD_PARTY:
69-
_source = "THIRD PARTY";
70-
break;
71-
72-
case GL_DEBUG_SOURCE_APPLICATION:
73-
_source = "APPLICATION";
74-
break;
53+
const char *_source = "???";
54+
const char *_type = "???";
55+
const char *_severity = "???";
7556

76-
case GL_DEBUG_SOURCE_OTHER:
77-
_source = "UNKNOWN";
78-
break;
79-
80-
default:
81-
_source = "UNKNOWN";
82-
break;
83-
}
57+
switch (source) {
58+
#define PER_GL_DEBUG_SOURCE(x) case GL_DEBUG_SOURCE_##x: _source = #x; break;
59+
PER_GL_DEBUG_SOURCE(API)
60+
PER_GL_DEBUG_SOURCE(WINDOW_SYSTEM)
61+
PER_GL_DEBUG_SOURCE(SHADER_COMPILER)
62+
PER_GL_DEBUG_SOURCE(THIRD_PARTY)
63+
PER_GL_DEBUG_SOURCE(APPLICATION)
64+
PER_GL_DEBUG_SOURCE(OTHER)
65+
#undef PER_GL_DEBUG_SOURCE
66+
};
8467

8568
switch (type) {
86-
case GL_DEBUG_TYPE_ERROR:
87-
_type = "ERROR";
88-
break;
89-
90-
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
91-
_type = "DEPRECATED BEHAVIOR";
92-
break;
93-
94-
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
95-
_type = "UDEFINED BEHAVIOR";
96-
break;
97-
98-
case GL_DEBUG_TYPE_PORTABILITY:
99-
_type = "PORTABILITY";
100-
break;
101-
102-
case GL_DEBUG_TYPE_PERFORMANCE:
103-
_type = "PERFORMANCE";
104-
break;
105-
106-
case GL_DEBUG_TYPE_OTHER:
107-
_type = "OTHER";
108-
break;
109-
110-
case GL_DEBUG_TYPE_MARKER:
111-
_type = "MARKER";
112-
break;
113-
114-
default:
115-
_type = "UNKNOWN";
116-
break;
69+
#define PER_GL_DEBUG_TYPE(x) case GL_DEBUG_TYPE_##x: _type = #x; break;
70+
PER_GL_DEBUG_TYPE(ERROR)
71+
PER_GL_DEBUG_TYPE(UNDEFINED_BEHAVIOR)
72+
PER_GL_DEBUG_TYPE(PORTABILITY)
73+
PER_GL_DEBUG_TYPE(PERFORMANCE)
74+
PER_GL_DEBUG_TYPE(OTHER)
75+
PER_GL_DEBUG_TYPE(MARKER)
76+
#undef PER_GL_DEBUG_TYPE
11777
}
11878

11979
switch (severity) {
120-
case GL_DEBUG_SEVERITY_HIGH:
121-
_severity = "HIGH";
122-
break;
123-
124-
case GL_DEBUG_SEVERITY_MEDIUM:
125-
_severity = "MEDIUM";
126-
break;
127-
128-
case GL_DEBUG_SEVERITY_LOW:
129-
_severity = "LOW";
130-
break;
131-
132-
case GL_DEBUG_SEVERITY_NOTIFICATION:
133-
_severity = "NOTIFICATION";
134-
break;
135-
136-
default:
137-
_severity = "UNKNOWN";
138-
break;
80+
#define PER_GL_DEBUG_SEVERITY(x) case GL_DEBUG_SEVERITY_##x: _severity = #x; break;
81+
PER_GL_DEBUG_SEVERITY(HIGH)
82+
PER_GL_DEBUG_SEVERITY(MEDIUM)
83+
PER_GL_DEBUG_SEVERITY(LOW)
84+
PER_GL_DEBUG_SEVERITY(NOTIFICATION)
85+
#undef PER_GL_DEBUG_SEVERITY
13986
}
14087

141-
if (severity != GL_DEBUG_SEVERITY_NOTIFICATION) {
142-
fprintf(stderr, "OpenGL error [%d]: %s of %s severity, raised from %s: %s\n",
143-
id, _type, _severity, _source, msg);
144-
/* #ifndef NDEBUG */
145-
/* #if defined(_MSC_VER) */
146-
/* __debugbreak(); */
147-
/* #elif defined(__GNUC__) */
148-
/* __builtin_trap(); */
149-
/* #endif */
150-
/* #endif */
151-
}
88+
fprintf(stderr, "OpenGL error [%d]: %s of %s severity, raised from %s: %s\n",
89+
id, _type, _severity, _source, msg);
90+
/* #ifndef NDEBUG */
91+
/* #if defined(_MSC_VER) */
92+
/* __debugbreak(); */
93+
/* #elif defined(__GNUC__) */
94+
/* __builtin_trap(); */
95+
/* #endif */
96+
/* #endif */
15297
}
15398

15499
void check_gl::opengl_try_enable_debug_message() {

src/main.cpp

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#include "check_gl.hpp"
22
#include <iostream>
3-
#ifdef CMAKE_FOUND_X11
4-
#define GLFW_EXPOSE_NATIVE_X11
5-
#include <GLFW/glfw3native.h>
6-
#include <X11/extensions/shape.h>
7-
#endif
83
#include "Game.hpp"
94

105
template <class ...Ts>
@@ -41,6 +36,8 @@ int main() {
4136
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
4237
#endif
4338
}
39+
40+
// enable 4x MSAA
4441
glfwWindowHint(GLFW_SAMPLES, 4);
4542

4643
// Enable transparent framebuffer
@@ -91,21 +88,6 @@ int main() {
9188
}
9289
}
9390

94-
#ifdef CMAKE_FOUND_X11
95-
// Setup mouse click-through
96-
if (transparent) {
97-
auto dpy = glfwGetX11Display();
98-
int shape_event_base, shape_error_base;
99-
if (XShapeQueryExtension(dpy, &shape_event_base, &shape_error_base)) {
100-
auto win = glfwGetX11Window(window);
101-
Region region = XCreateRegion();
102-
XShapeCombineRegion(dpy, win, ShapeInput, 0, 0, region, ShapeSet);
103-
XDestroyRegion(region);
104-
XFlush(dpy);
105-
}
106-
}
107-
#endif
108-
10991
// Load glXXX function pointers (only after this you may use OpenGL functions)
11092
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
11193
glfwTerminate();

0 commit comments

Comments
 (0)