Skip to content

Commit 50d9e91

Browse files
2 parents f315472 + 81065f7 commit 50d9e91

File tree

4 files changed

+27
-53
lines changed

4 files changed

+27
-53
lines changed

Makefile

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ CFLAGS =
1414

1515
DX11_LIBS = -static -lgdi32 -ldxgi -ld3d11 -luuid -ld3dcompiler
1616
VULKAN_LIBS = -lgdi32 -I $(VULKAN_SDK)\Include -L $(VULKAN_SDK)\Lib -lvulkan-1
17-
LIBS := -static -lgdi32 -lopengl32 -ggdb
17+
LIBS := -static -lgdi32 -ggdb
18+
LINK_GL1 = -lopengl32
1819
EXT = .exe
1920
LIB_EXT = .dll
2021

@@ -29,20 +30,23 @@ detected_OS = windows
2930

3031
OBJ_FILE = .o
3132

33+
3234
# not using a cross compiler
3335
ifeq (,$(filter $(CC),x86_64-w64-mingw32-gcc i686-w64-mingw32-gcc x86_64-w64-mingw32-g++ /opt/msvc/bin/x64/cl.exe /opt/msvc/bin/x86/cl.exe))
3436
detected_OS := $(shell uname 2>/dev/null || echo Unknown)
3537

3638
ifeq ($(detected_OS),Darwin) # Mac OS X
3739
LIBS := -framework Cocoa -framework OpenGL -framework IOKit
40+
LINK_GL1 = -framework OpenGL
3841
VULKAN_LIBS =
3942
EXT =
4043
LIB_EXT = .dylib
4144
OS_DIR = /
4245
NO_VULKAN = 1
4346
endif
4447
ifeq ($(detected_OS),Linux)
45-
LIBS := -lXrandr -lX11 -lGL -ldl -lpthread
48+
LINK_GL1 = -lGL
49+
LIBS := -lXrandr -lX11 -ldl -lpthread
4650
VULKAN_LIBS = -lX11 -lXrandr -ldl -lpthread -lvulkan
4751
EXT =
4852
LIB_EXT = .so
@@ -62,7 +66,6 @@ ifeq ($(RGFW_WAYLAND),1)
6266
LIBS = -D RGFW_WAYLAND relative-pointer-unstable-v1-client-protocol.c xdg-decoration-unstable-v1.c xdg-shell.c -lwayland-cursor -lwayland-client -lEGL -lxkbcommon -lGL -lwayland-egl
6367
endif
6468

65-
LINK_GL1 =
6669
LINK_GL3 =
6770
LINK_GL2 =
6871

@@ -90,13 +93,13 @@ endif
9093
EXAMPLE_OUTPUTS = \
9194
examples/basic/basic \
9295
examples/buffer/buffer \
93-
examples/silk/silk \
9496
examples/events/events \
9597
examples/callbacks/callbacks
9698

9799

98100
EXAMPLE_OUTPUTS_CUSTOM = \
99101
examples/gamepad/gamepad \
102+
examples/silk/silk \
100103
examples/first-person-camera/camera \
101104
examples/microui_demo/microui_demo \
102105
examples/gl33/gl33 \
@@ -122,7 +125,7 @@ endif
122125

123126
examples/gles2/gles2: examples/gles2/gles2.c RGFW.h
124127
ifneq ($(NO_GLES), 1)
125-
$(CC) $(CFLAGS) -I. $< $(LIBS) $(LINK_GL2) -lEGL -o $@$(EXT)
128+
$(CC) $(CFLAGS) -I. $< $(LIBS) $(LINK_GL2) -lEGL -lGL -o $@$(EXT)
126129
else
127130
@echo gles has been disabled
128131
endif
@@ -134,6 +137,7 @@ else
134137
@echo osmesa has been disabled
135138
endif
136139

140+
137141
examples/vk10/vk10: examples/vk10/vk10.c RGFW.h
138142
ifneq ($(NO_VULKAN), 1)
139143
glslangValidator -V examples/vk10/shaders/vert.vert -o examples/vk10/shaders/vert.h --vn vert_code
@@ -198,11 +202,14 @@ endif
198202

199203
examples/microui_demo/microui_demo: examples/microui_demo/microui_demo.c RGFW.h
200204
ifneq ($(CC), emcc)
201-
$(CC) $(CFLAGS) -I. $< examples/microui_demo/microui.c $(LIBS) -o $@$(EXT)
205+
$(CC) $(CFLAGS) -I. $< examples/microui_demo/microui.c $(LINK_GL1) $(LIBS) -o $@$(EXT)
202206
else
203207
$(CC) $(CFLAGS) -I. $< examples/microui_demo/microui.c -s USE_WEBGL2 $(LIBS) $(LINK_GL1) -o $@$(EXT)
204208
endif
205209

210+
examples/silk/silk: examples/silk/silk.c RGFW.h
211+
$(CC) $(CFLAGS) $(WARNINGS) -I. $< $(LIBS) -lm $(LINK_GL1) -o $@$(EXT)
212+
206213
examples/gamepad/gamepad: examples/gamepad/gamepad.c RGFW.h
207214
$(CC) $(CFLAGS) $(WARNINGS) -I. $< $(LIBS) -lm $(LINK_GL1) -o $@$(EXT)
208215

@@ -230,6 +237,7 @@ debug: all
230237
.$(OS_DIR)$$exe$(EXT); \
231238
done
232239

240+
./examples/silk/silk
233241
./examples/gamepad/gamepad
234242
./examples/first-person-camera/camera
235243
./examples/portableGL/pgl$(EXT)

RGFW.h

Lines changed: 7 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,6 +1672,10 @@ RGFW_window* RGFW_createWindow(const char* name, RGFW_rect rect, RGFW_windowFlag
16721672
return RGFW_createWindowPtr(name, rect, flags, win);
16731673
}
16741674

1675+
#if defined(RGFW_USE_XDL) && defined(RGFW_X11)
1676+
#define XDL_IMPLEMENTATION
1677+
#include "XDL.h"
1678+
#endif
16751679

16761680
RGFWDEF void RGFW_window_basic_init(RGFW_window* win, RGFW_rect rect, RGFW_windowFlags flags);
16771681

@@ -1975,7 +1979,8 @@ void RGFW_window_setDND(RGFW_window* win, b8 allow) {
19751979
OpenGL defines start here (Normal, EGL, OSMesa)
19761980
*/
19771981

1978-
#if defined(RGFW_OPENGL) || defined(RGFW_EGL) || defined(RGFW_OSMESA)
1982+
#if defined(RGFW_OPENGL) || defined(RGFW_EGL)
1983+
19791984
#ifdef RGFW_WINDOWS
19801985
#define WIN32_LEAN_AND_MEAN
19811986
#define OEMRESOURCE
@@ -1993,7 +1998,6 @@ void RGFW_window_setDND(RGFW_window* win, b8 allow) {
19931998
#endif
19941999

19952000
/* EGL, normal OpenGL only */
1996-
#if !defined(RGFW_OSMESA)
19972001
i32 RGFW_majorVersion = 0, RGFW_minorVersion = 0;
19982002
b8 RGFW_profile = RGFW_glCore;
19992003

@@ -2003,7 +2007,6 @@ i32 RGFW_STENCIL = 8, RGFW_SAMPLES = 4, RGFW_STEREO = 0, RGFW_AUX_BUFFERS = 0, R
20032007
i32 RGFW_STENCIL = 0, RGFW_SAMPLES = 0, RGFW_STEREO = 0, RGFW_AUX_BUFFERS = 0, RGFW_DOUBLE_BUFFER = 1;
20042008
#endif
20052009

2006-
20072010
void RGFW_setGLStencil(i32 stencil) { RGFW_STENCIL = stencil; }
20082011
void RGFW_setGLSamples(i32 samples) { RGFW_SAMPLES = samples; }
20092012
void RGFW_setGLStereo(i32 stereo) { RGFW_STEREO = stereo; }
@@ -2341,32 +2344,6 @@ void RGFW_window_swapInterval(RGFW_window* win, i32 swapInterval) {
23412344
/*
23422345
end of RGFW_EGL defines
23432346
*/
2344-
2345-
/* OPENGL Normal / EGL defines only (no OS MESA) Ends here */
2346-
2347-
#elif defined(RGFW_OSMESA) /* OSmesa only */
2348-
RGFWDEF void RGFW_OSMesa_reorganize(RGFW_window* win);
2349-
2350-
/* reorganize buffer for osmesa */
2351-
void RGFW_OSMesa_reorganize(RGFW_window* win) {
2352-
u8* row = (u8*) RGFW_alloc(RGFW_bufferSize.w * 3);
2353-
2354-
i32 half_height = RGFW_bufferSize.h / 2;
2355-
i32 stride = RGFW_bufferSize.w * 3;
2356-
2357-
i32 y;
2358-
for (y = 0; y < half_height; ++y) {
2359-
i32 top_offset = y * stride;
2360-
i32 bottom_offset = (RGFW_bufferSize.h - y - 1) * stride;
2361-
RGFW_MEMCPY(row, win->buffer + top_offset, stride);
2362-
RGFW_MEMCPY(win->buffer + top_offset, win->buffer + bottom_offset, stride);
2363-
RGFW_MEMCPY(win->buffer + bottom_offset, row, stride);
2364-
}
2365-
2366-
RGFW_free(row);
2367-
}
2368-
#endif /* RGFW_OSMesa */
2369-
23702347
#endif /* RGFW_GL (OpenGL, EGL, OSMesa )*/
23712348

23722349
/*
@@ -2513,11 +2490,6 @@ Start of Linux / Unix defines
25132490
#include <X11/Xcursor/Xcursor.h>
25142491
#endif
25152492

2516-
#ifdef RGFW_USE_XDL
2517-
#define XDL_IMPLEMENTATION
2518-
#include "XDL.h"
2519-
#endif
2520-
25212493
#include <dlfcn.h>
25222494

25232495
#ifndef RGFW_NO_DPI
@@ -2711,7 +2683,7 @@ RGFW_window* RGFW_createWindowPtr(const char* name, RGFW_rect rect, RGFW_windowF
27112683
u64 event_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask | FocusChangeMask | LeaveWindowMask | EnterWindowMask | ExposureMask; /*!< X11 events accepted*/
27122684

27132685
#ifdef RGFW_OPENGL
2714-
u32* visual_attribs = RGFW_initFormatAttribs(flags & RGFW_windowOpenglSoftware);
2686+
u32* visual_attribs = (u32*)RGFW_initFormatAttribs(flags & RGFW_windowOpenglSoftware);
27152687
i32 fbcount;
27162688
GLXFBConfig* fbc = glXChooseFBConfig((Display*) win->src.display, DefaultScreen(win->src.display), (i32*) visual_attribs, &fbcount);
27172689

@@ -4167,10 +4139,6 @@ void RGFW_window_swapBuffers(RGFW_window* win) {
41674139
if (!(win->_flags & RGFW_NO_CPU_RENDER)) {
41684140
#if defined(RGFW_OSMESA) || defined(RGFW_BUFFER)
41694141
RGFW_area area = RGFW_bufferSize;
4170-
#ifdef RGFW_OSMESA
4171-
RGFW_OSMesa_reorganize(win);
4172-
#endif
4173-
41744142
win->src.bitmap->data = (char*) win->buffer;
41754143
#if !defined(RGFW_X11_DONT_CONVERT_BGR) && !defined(RGFW_OSMESA)
41764144
u32 x, y;
@@ -7003,9 +6971,6 @@ void RGFW_window_swapBuffers(RGFW_window* win) {
70036971

70046972
if (!(win->_flags & RGFW_NO_CPU_RENDER)) {
70056973
#if defined(RGFW_OSMESA) || defined(RGFW_BUFFER)
7006-
#ifdef RGFW_OSMESA
7007-
RGFW_OSMesa_reorganize(win);
7008-
#endif
70096974
HGDIOBJ oldbmp = SelectObject(win->src.hdcMem, win->src.bitmap);
70106975
BitBlt(win->src.hdc, 0, 0, win->r.w, win->r.h, win->src.hdcMem, 0, 0, SRCCOPY);
70116976
SelectObject(win->src.hdcMem, oldbmp);
@@ -8840,10 +8805,6 @@ void RGFW_window_swapBuffers(RGFW_window* win) {
88408805

88418806
if (!(win->_flags & RGFW_NO_CPU_RENDER)) {
88428807
#if defined(RGFW_OSMESA) || defined(RGFW_BUFFER)
8843-
#ifdef RGFW_OSMESA
8844-
RGFW_OSMesa_reorganize(win);
8845-
#endif
8846-
88478808
id view = NSWindow_contentView((id)win->src.window);
88488809
id layer = objc_msgSend_id(view, sel_registerName("layer"));
88498810

XDL.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ typedef PFNGLXGETVISUALFROMFBCONFIGPROC PFN_glXGetVisualFromFBConfig;
203203
typedef PFNGLXGETFBCONFIGATTRIBPROC PFN_glXGetFBConfigAttrib;
204204
typedef __GLXextFuncPtr (*PFN_glXGetProcAddressARB)(const GLubyte *);
205205
typedef PFNGLXCHOOSEFBCONFIGPROC PFN_glXChooseFBConfig;
206+
typedef void (*PFN_glXDestroyContext)(Display *dpy, GLXContext ctx);
206207
#endif
207208

208209
/* Src vars for reciving the functions */
@@ -329,6 +330,7 @@ PFN_glXGetVisualFromFBConfig glXGetVisualFromFBConfigSrc;
329330
PFN_glXGetFBConfigAttrib glXGetFBConfigAttribSrc;
330331
PFN_glXGetProcAddressARB glXGetProcAddressARBSrc;
331332
PFN_glXChooseFBConfig glXChooseFBConfigSrc;
333+
PFN_glXDestroyContext glXDestroyContextSrc;
332334
#endif
333335

334336
/* Function to source defines */
@@ -455,6 +457,7 @@ PFN_glXChooseFBConfig glXChooseFBConfigSrc;
455457
#define glXGetFBConfigAttrib glXGetFBConfigAttribSrc
456458
#define glXGetProcAddressARB glXGetProcAddressARBSrc
457459
#define glXChooseFBConfig glXChooseFBConfigSrc
460+
#define glXDestroyContext glXDestroyContextSrc
458461
#define glXSwapIntervalEXT glXSwapIntervalEXTSrc
459462
#endif
460463

@@ -614,6 +617,7 @@ void XDL_init(void) {
614617
XDL_PROC_DEF(1, glXGetFBConfigAttrib);
615618
XDL_PROC_DEF(1, glXGetProcAddressARB);
616619
XDL_PROC_DEF(1, glXChooseFBConfig);
620+
XDL_PROC_DEF(1, glXDestroyContext);
617621
#endif
618622
}
619623

examples/osmesa/osmesa.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ int main(void) {
1515
while (RGFW_window_checkEvent(win) != NULL);
1616

1717
RGFW_window_makeCurrent(win);
18-
18+
19+
glViewport(0, 0, win->r.w, win->r.h);
1920
glClearColor(255, 255, 255, 255);
2021

2122
glClear(GL_COLOR_BUFFER_BIT);

0 commit comments

Comments
 (0)