Compare commits
22 Commits
2e730baf33
...
v2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7c0b0780c | ||
|
|
46bd5e8d5e | ||
|
|
d614e2ced4 | ||
|
|
57fffeb0a3 | ||
|
|
def545450d | ||
|
|
9b7ecb3ae7 | ||
|
|
9c2e4ffae1 | ||
|
|
3e14195bf7 | ||
|
|
055ff4f5ce | ||
|
|
4d0e043f4c | ||
|
|
3da728c768 | ||
|
|
8857b93f90 | ||
|
|
cf0f402da3 | ||
|
|
db46d5506c | ||
|
|
e87417603e | ||
|
|
0f68c8c7ae | ||
|
|
2211193a96 | ||
|
|
6d821cb361 | ||
|
|
a2039557bb | ||
|
|
a1439664ca | ||
|
|
0453585751 | ||
|
|
5f6dc66a0f |
@@ -14,9 +14,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
- run: mkdir build build/k3 build/k3/compr bin bin/assets
|
- run: mkdir build build/k3 build/k3/compr bin bin/assets
|
||||||
- run: CC="i686-w64-mingw32-gcc" CFLAGS="-I/usr/i686-w64-mingw32/include -I/usr/i686-w64-mingw32/include/lua5.3 -L/usr/i686-w64-mingw32/lib -Wno-error" make -B
|
- run: LIBS="-lfreetype -l:libz.a" CC="i686-w64-mingw32-gcc" CFLAGS="-I/usr/i686-w64-mingw32/include -I/usr/i686-w64-mingw32/include/lua5.3 -L/usr/i686-w64-mingw32/lib -Wno-error" make -B
|
||||||
- run: CC="i686-linux-gnu-gcc" CFLAGS="-I/usr/i686-linux-gnu/include -I/usr/i686-linux-gnu/include/lua5.3 -L/usr/i686-linux-gnu/lib -Wno-error -include /home/git/force_link_glibc_2.20.h" make -B
|
- run: cp /usr/lib/gcc/i686-w64-mingw32/14-win32/libgcc_s_dw2-1.dll /usr/lib/gcc/i686-w64-mingw32/14-win32/libstdc++-6.dll /usr/i686-w64-mingw32/lib/libportaudio-2.dll /usr/i686-w64-mingw32/lib/libwinpthread-1.dll /usr/lib/gcc/i686-w64-mingw32/14-win32/libgomp-1.dll bin/
|
||||||
- run: cp /usr/lib/gcc/i686-w64-mingw32/12-win32/libgcc_s_dw2-1.dll /usr/lib/gcc/i686-w64-mingw32/12-win32/libstdc++-6.dll /usr/i686-w64-mingw32/lib/libportaudio-2.dll /usr/i686-w64-mingw32/lib/libwinpthread-1.dll /usr/lib/gcc/i686-w64-mingw32/12-win32/libgomp-1.dll bin/
|
- run: curl "http://127.0.0.1:9898/build?root=${{ github.workspace }}"
|
||||||
- run: cp -r /home/git/k4templateassets/* bin/assets/
|
- run: cp -r /home/git/k4templateassets/* bin/assets/
|
||||||
- run: mv bin k4
|
- run: mv bin k4
|
||||||
- run: zip -9r "k4${{ github.ref_name }}.zip" k4/
|
- run: zip -9r "k4${{ github.ref_name }}.zip" k4/
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -10,14 +10,14 @@ k3_HDRS := $(call rwildcard,k3/src,*.h)
|
|||||||
k3_OBJS := $(patsubst k3/src/%.c, build/k3/%.o, $(k3_SRCS))
|
k3_OBJS := $(patsubst k3/src/%.c, build/k3/%.o, $(k3_SRCS))
|
||||||
k3_DEPS := $(patsubst k3/src/%.c, build/k3/%.d, $(k3_SRCS))
|
k3_DEPS := $(patsubst k3/src/%.c, build/k3/%.d, $(k3_SRCS))
|
||||||
|
|
||||||
CFLAGS := $(CFLAGS) -D_GNU_SOURCE -D_DEFAULT_SOURCE -Ik3/src -O2 -fopenmp -flto -s
|
CFLAGS := $(CFLAGS) -D_GNU_SOURCE -D_DEFAULT_SOURCE -DGLCA_CUSTOM_GLYPH_DATA -Ik3/src -fopenmp -O2 -flto -fwhole-program -Wno-error=incompatible-pointer-types -Wno-error=int-conversion
|
||||||
|
|
||||||
ifneq (,$(findstring mingw,$(CC)))
|
ifneq (,$(findstring mingw,$(CC)))
|
||||||
CFLAGS := -static-libgcc -static-libstdc++ -std=gnu99 -march=pentium4 -D_WIN32_WINNT=0x600 -DENET_FEATURE_ADDRESS_MAPPING -fno-pic -no-pie -fms-extensions -fno-pie -Isrc $(CFLAGS)
|
CFLAGS := -static-libgcc -static-libstdc++ -std=gnu99 -march=pentium4 -D_WIN32_WINNT=0x600 -DENET_FEATURE_ADDRESS_MAPPING -fno-pic -no-pie -fms-extensions -fno-pie -Isrc $(CFLAGS)
|
||||||
LIBS := -l:libglfw3.a -lopengl32 -pthread -lm -l:libode.a -l:libvorbisfile.a -l:libvorbis.a -l:libogg.a -lportaudio -lgdi32 -lws2_32 -lwinmm -lstdc++ -lole32 -lsetupapi -lhid -l:liblua5.3.a -liphlpapi $(LIBS)
|
LIBS := -l:libglfw3.a -lopengl32 -pthread -lm -l:libode.a -l:libvorbisfile.a -l:libvorbis.a -l:libogg.a -lportaudio -lgdi32 -lws2_32 -lwinmm -lstdc++ -lole32 -lsetupapi -lhid -l:liblua5.3.a -liphlpapi $(LIBS)
|
||||||
else
|
else
|
||||||
CFLAGS := -march=opteron $(SAN) -std=gnu99 -DENET_FEATURE_ADDRESS_MAPPING -fms-extensions -fno-pic -no-pie -fno-pie -Isrc $(CFLAGS)
|
CFLAGS := -march=opteron $(SAN) -std=gnu99 -DENET_FEATURE_ADDRESS_MAPPING -fms-extensions -fno-pic -no-pie -fno-pie -Isrc $(CFLAGS)
|
||||||
LIBS := -lglfw3 -pthread -ldl -lm -lode -lstdc++ -llua5.3 -lvorbis -lvorbisfile -lportaudio $(LIBS)
|
LIBS := -lglfw3 -pthread -ldl -lm -lode -lstdc++ -llua5.3 -lvorbis -lvorbisfile -logg -lasound -lfreetype -lportaudio -lz $(LIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS := $(CFLAGS) -DLOCALHOST_ONLY
|
CFLAGS := $(CFLAGS) -DLOCALHOST_ONLY
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -1 +1,21 @@
|
|||||||
Homepage: https://mid.net.ua/k4.html
|
Homepage: https://mid.net.ua/k4.html
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
## v2
|
||||||
|
|
||||||
|
1. k3Menu objects now have stylable properties ala CSS
|
||||||
|
2. Exposed `game.ui.obj` "base object" which allows you to create your own widgets
|
||||||
|
3. Revamped the animation system to one with blend trees
|
||||||
|
4. Added scrollboxes and image objects to k3Menu
|
||||||
|
5. Replaced the font subsystem with one that uses TrueType fonts directly, and they are drawn using signed distance fields when possible
|
||||||
|
6. Added `game.near` and `game.far` values for editing the camera planes
|
||||||
|
7. Added vsync parameter to command line
|
||||||
|
8. Graphics bug fixes
|
||||||
|
9. Improved mipmapping
|
||||||
|
10. Frustum culling
|
||||||
|
11. Added support for 32-bit indices in models
|
||||||
|
|
||||||
|
## v1
|
||||||
|
|
||||||
|
Initial release.
|
||||||
|
|||||||
2
k3
2
k3
Submodule k3 updated: 4d74b5e3e9...56ecba05b1
@@ -1017,7 +1017,7 @@ void game_killentity(uint16_t eid) {
|
|||||||
if(cr) {
|
if(cr) {
|
||||||
if(cr->cache) {
|
if(cr->cache) {
|
||||||
if(resman_rev(cr->cache)) {
|
if(resman_rev(cr->cache)) {
|
||||||
resman_unref(RESMAN_MODEL, cr->cache);
|
resman_unref_ptr(RESMAN_MODEL, cr->cache);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
143
src/gl.h
143
src/gl.h
@@ -1,11 +1,11 @@
|
|||||||
/**
|
/**
|
||||||
* Loader generated by glad 2.0.8 on Fri May 9 09:20:04 2025
|
* Loader generated by glad 2.0.8 on Sun Oct 12 16:54:54 2025
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0
|
* SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0
|
||||||
*
|
*
|
||||||
* Generator: C/C++
|
* Generator: C/C++
|
||||||
* Specification: gl
|
* Specification: gl
|
||||||
* Extensions: 37
|
* Extensions: 40
|
||||||
*
|
*
|
||||||
* APIs:
|
* APIs:
|
||||||
* - gl:compatibility=4.6
|
* - gl:compatibility=4.6
|
||||||
@@ -19,10 +19,10 @@
|
|||||||
* - ON_DEMAND = False
|
* - ON_DEMAND = False
|
||||||
*
|
*
|
||||||
* Commandline:
|
* Commandline:
|
||||||
* --api='gl:compatibility=4.6' --extensions='GL_ARB_compatibility,GL_ARB_debug_output,GL_ARB_fragment_program,GL_ARB_fragment_shader,GL_ARB_framebuffer_sRGB,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_storage_buffer_object,GL_ARB_shading_language_100,GL_ARB_texture_compression_bptc,GL_ARB_texture_float,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_2_10_10_10_rev,GL_EXT_direct_state_access,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_shader4,GL_EXT_shader_image_load_store,GL_EXT_texture_array,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_integer,GL_EXT_texture_sRGB,GL_EXT_transform_feedback,GL_INTEL_conservative_rasterization,GL_KHR_texture_compression_astc_ldr,GL_NV_conservative_raster' c --header-only
|
* --api='gl:compatibility=4.6' --extensions='GL_ARB_compatibility,GL_ARB_debug_output,GL_ARB_direct_state_access,GL_ARB_fragment_program,GL_ARB_fragment_shader,GL_ARB_framebuffer_sRGB,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_storage_buffer_object,GL_ARB_shading_language_100,GL_ARB_texture_compression_bptc,GL_ARB_texture_float,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_timer_query,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_2_10_10_10_rev,GL_EXT_direct_state_access,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_shader4,GL_EXT_shader_image_load_store,GL_EXT_texture_array,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_integer,GL_EXT_texture_sRGB,GL_EXT_transform_feedback,GL_INTEL_conservative_rasterization,GL_KHR_debug,GL_KHR_texture_compression_astc_ldr,GL_NV_conservative_raster' c --header-only
|
||||||
*
|
*
|
||||||
* Online:
|
* Online:
|
||||||
* http://glad.sh/#api=gl%3Acompatibility%3D4.6&extensions=GL_ARB_compatibility%2CGL_ARB_debug_output%2CGL_ARB_fragment_program%2CGL_ARB_fragment_shader%2CGL_ARB_framebuffer_sRGB%2CGL_ARB_shader_image_load_store%2CGL_ARB_shader_image_size%2CGL_ARB_shader_objects%2CGL_ARB_shader_storage_buffer_object%2CGL_ARB_shading_language_100%2CGL_ARB_texture_compression_bptc%2CGL_ARB_texture_float%2CGL_ARB_texture_rg%2CGL_ARB_texture_rgb10_a2ui%2CGL_ARB_vertex_buffer_object%2CGL_ARB_vertex_program%2CGL_ARB_vertex_shader%2CGL_ARB_vertex_type_2_10_10_10_rev%2CGL_EXT_direct_state_access%2CGL_EXT_framebuffer_blit%2CGL_EXT_framebuffer_multisample%2CGL_EXT_framebuffer_multisample_blit_scaled%2CGL_EXT_framebuffer_object%2CGL_EXT_framebuffer_sRGB%2CGL_EXT_geometry_shader4%2CGL_EXT_gpu_shader4%2CGL_EXT_shader_image_load_store%2CGL_EXT_texture_array%2CGL_EXT_texture_compression_rgtc%2CGL_EXT_texture_compression_s3tc%2CGL_EXT_texture_filter_anisotropic%2CGL_EXT_texture_integer%2CGL_EXT_texture_sRGB%2CGL_EXT_transform_feedback%2CGL_INTEL_conservative_rasterization%2CGL_KHR_texture_compression_astc_ldr%2CGL_NV_conservative_raster&generator=c&options=HEADER_ONLY
|
* http://glad.sh/#api=gl%3Acompatibility%3D4.6&extensions=GL_ARB_compatibility%2CGL_ARB_debug_output%2CGL_ARB_direct_state_access%2CGL_ARB_fragment_program%2CGL_ARB_fragment_shader%2CGL_ARB_framebuffer_sRGB%2CGL_ARB_shader_image_load_store%2CGL_ARB_shader_image_size%2CGL_ARB_shader_objects%2CGL_ARB_shader_storage_buffer_object%2CGL_ARB_shading_language_100%2CGL_ARB_texture_compression_bptc%2CGL_ARB_texture_float%2CGL_ARB_texture_rg%2CGL_ARB_texture_rgb10_a2ui%2CGL_ARB_timer_query%2CGL_ARB_vertex_buffer_object%2CGL_ARB_vertex_program%2CGL_ARB_vertex_shader%2CGL_ARB_vertex_type_2_10_10_10_rev%2CGL_EXT_direct_state_access%2CGL_EXT_framebuffer_blit%2CGL_EXT_framebuffer_multisample%2CGL_EXT_framebuffer_multisample_blit_scaled%2CGL_EXT_framebuffer_object%2CGL_EXT_framebuffer_sRGB%2CGL_EXT_geometry_shader4%2CGL_EXT_gpu_shader4%2CGL_EXT_shader_image_load_store%2CGL_EXT_texture_array%2CGL_EXT_texture_compression_rgtc%2CGL_EXT_texture_compression_s3tc%2CGL_EXT_texture_filter_anisotropic%2CGL_EXT_texture_integer%2CGL_EXT_texture_sRGB%2CGL_EXT_transform_feedback%2CGL_INTEL_conservative_rasterization%2CGL_KHR_debug%2CGL_KHR_texture_compression_astc_ldr%2CGL_NV_conservative_raster&generator=c&options=HEADER_ONLY
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2916,6 +2916,8 @@ GLAD_API_CALL int GLAD_GL_VERSION_4_6;
|
|||||||
GLAD_API_CALL int GLAD_GL_ARB_compatibility;
|
GLAD_API_CALL int GLAD_GL_ARB_compatibility;
|
||||||
#define GL_ARB_debug_output 1
|
#define GL_ARB_debug_output 1
|
||||||
GLAD_API_CALL int GLAD_GL_ARB_debug_output;
|
GLAD_API_CALL int GLAD_GL_ARB_debug_output;
|
||||||
|
#define GL_ARB_direct_state_access 1
|
||||||
|
GLAD_API_CALL int GLAD_GL_ARB_direct_state_access;
|
||||||
#define GL_ARB_fragment_program 1
|
#define GL_ARB_fragment_program 1
|
||||||
GLAD_API_CALL int GLAD_GL_ARB_fragment_program;
|
GLAD_API_CALL int GLAD_GL_ARB_fragment_program;
|
||||||
#define GL_ARB_fragment_shader 1
|
#define GL_ARB_fragment_shader 1
|
||||||
@@ -2940,6 +2942,8 @@ GLAD_API_CALL int GLAD_GL_ARB_texture_float;
|
|||||||
GLAD_API_CALL int GLAD_GL_ARB_texture_rg;
|
GLAD_API_CALL int GLAD_GL_ARB_texture_rg;
|
||||||
#define GL_ARB_texture_rgb10_a2ui 1
|
#define GL_ARB_texture_rgb10_a2ui 1
|
||||||
GLAD_API_CALL int GLAD_GL_ARB_texture_rgb10_a2ui;
|
GLAD_API_CALL int GLAD_GL_ARB_texture_rgb10_a2ui;
|
||||||
|
#define GL_ARB_timer_query 1
|
||||||
|
GLAD_API_CALL int GLAD_GL_ARB_timer_query;
|
||||||
#define GL_ARB_vertex_buffer_object 1
|
#define GL_ARB_vertex_buffer_object 1
|
||||||
GLAD_API_CALL int GLAD_GL_ARB_vertex_buffer_object;
|
GLAD_API_CALL int GLAD_GL_ARB_vertex_buffer_object;
|
||||||
#define GL_ARB_vertex_program 1
|
#define GL_ARB_vertex_program 1
|
||||||
@@ -2982,6 +2986,8 @@ GLAD_API_CALL int GLAD_GL_EXT_texture_sRGB;
|
|||||||
GLAD_API_CALL int GLAD_GL_EXT_transform_feedback;
|
GLAD_API_CALL int GLAD_GL_EXT_transform_feedback;
|
||||||
#define GL_INTEL_conservative_rasterization 1
|
#define GL_INTEL_conservative_rasterization 1
|
||||||
GLAD_API_CALL int GLAD_GL_INTEL_conservative_rasterization;
|
GLAD_API_CALL int GLAD_GL_INTEL_conservative_rasterization;
|
||||||
|
#define GL_KHR_debug 1
|
||||||
|
GLAD_API_CALL int GLAD_GL_KHR_debug;
|
||||||
#define GL_KHR_texture_compression_astc_ldr 1
|
#define GL_KHR_texture_compression_astc_ldr 1
|
||||||
GLAD_API_CALL int GLAD_GL_KHR_texture_compression_astc_ldr;
|
GLAD_API_CALL int GLAD_GL_KHR_texture_compression_astc_ldr;
|
||||||
#define GL_NV_conservative_raster 1
|
#define GL_NV_conservative_raster 1
|
||||||
@@ -7530,6 +7536,7 @@ int GLAD_GL_VERSION_4_5 = 0;
|
|||||||
int GLAD_GL_VERSION_4_6 = 0;
|
int GLAD_GL_VERSION_4_6 = 0;
|
||||||
int GLAD_GL_ARB_compatibility = 0;
|
int GLAD_GL_ARB_compatibility = 0;
|
||||||
int GLAD_GL_ARB_debug_output = 0;
|
int GLAD_GL_ARB_debug_output = 0;
|
||||||
|
int GLAD_GL_ARB_direct_state_access = 0;
|
||||||
int GLAD_GL_ARB_fragment_program = 0;
|
int GLAD_GL_ARB_fragment_program = 0;
|
||||||
int GLAD_GL_ARB_fragment_shader = 0;
|
int GLAD_GL_ARB_fragment_shader = 0;
|
||||||
int GLAD_GL_ARB_framebuffer_sRGB = 0;
|
int GLAD_GL_ARB_framebuffer_sRGB = 0;
|
||||||
@@ -7542,6 +7549,7 @@ int GLAD_GL_ARB_texture_compression_bptc = 0;
|
|||||||
int GLAD_GL_ARB_texture_float = 0;
|
int GLAD_GL_ARB_texture_float = 0;
|
||||||
int GLAD_GL_ARB_texture_rg = 0;
|
int GLAD_GL_ARB_texture_rg = 0;
|
||||||
int GLAD_GL_ARB_texture_rgb10_a2ui = 0;
|
int GLAD_GL_ARB_texture_rgb10_a2ui = 0;
|
||||||
|
int GLAD_GL_ARB_timer_query = 0;
|
||||||
int GLAD_GL_ARB_vertex_buffer_object = 0;
|
int GLAD_GL_ARB_vertex_buffer_object = 0;
|
||||||
int GLAD_GL_ARB_vertex_program = 0;
|
int GLAD_GL_ARB_vertex_program = 0;
|
||||||
int GLAD_GL_ARB_vertex_shader = 0;
|
int GLAD_GL_ARB_vertex_shader = 0;
|
||||||
@@ -7563,6 +7571,7 @@ int GLAD_GL_EXT_texture_integer = 0;
|
|||||||
int GLAD_GL_EXT_texture_sRGB = 0;
|
int GLAD_GL_EXT_texture_sRGB = 0;
|
||||||
int GLAD_GL_EXT_transform_feedback = 0;
|
int GLAD_GL_EXT_transform_feedback = 0;
|
||||||
int GLAD_GL_INTEL_conservative_rasterization = 0;
|
int GLAD_GL_INTEL_conservative_rasterization = 0;
|
||||||
|
int GLAD_GL_KHR_debug = 0;
|
||||||
int GLAD_GL_KHR_texture_compression_astc_ldr = 0;
|
int GLAD_GL_KHR_texture_compression_astc_ldr = 0;
|
||||||
int GLAD_GL_NV_conservative_raster = 0;
|
int GLAD_GL_NV_conservative_raster = 0;
|
||||||
|
|
||||||
@@ -10179,6 +10188,106 @@ static void glad_gl_load_GL_ARB_debug_output( GLADuserptrloadfunc load, void* us
|
|||||||
glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC) load(userptr, "glDebugMessageInsertARB");
|
glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC) load(userptr, "glDebugMessageInsertARB");
|
||||||
glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) load(userptr, "glGetDebugMessageLogARB");
|
glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) load(userptr, "glGetDebugMessageLogARB");
|
||||||
}
|
}
|
||||||
|
static void glad_gl_load_GL_ARB_direct_state_access( GLADuserptrloadfunc load, void* userptr) {
|
||||||
|
if(!GLAD_GL_ARB_direct_state_access) return;
|
||||||
|
glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC) load(userptr, "glBindTextureUnit");
|
||||||
|
glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC) load(userptr, "glBlitNamedFramebuffer");
|
||||||
|
glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) load(userptr, "glCheckNamedFramebufferStatus");
|
||||||
|
glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC) load(userptr, "glClearNamedBufferData");
|
||||||
|
glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC) load(userptr, "glClearNamedBufferSubData");
|
||||||
|
glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) load(userptr, "glClearNamedFramebufferfi");
|
||||||
|
glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) load(userptr, "glClearNamedFramebufferfv");
|
||||||
|
glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) load(userptr, "glClearNamedFramebufferiv");
|
||||||
|
glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) load(userptr, "glClearNamedFramebufferuiv");
|
||||||
|
glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) load(userptr, "glCompressedTextureSubImage1D");
|
||||||
|
glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) load(userptr, "glCompressedTextureSubImage2D");
|
||||||
|
glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) load(userptr, "glCompressedTextureSubImage3D");
|
||||||
|
glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC) load(userptr, "glCopyNamedBufferSubData");
|
||||||
|
glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC) load(userptr, "glCopyTextureSubImage1D");
|
||||||
|
glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC) load(userptr, "glCopyTextureSubImage2D");
|
||||||
|
glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC) load(userptr, "glCopyTextureSubImage3D");
|
||||||
|
glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC) load(userptr, "glCreateBuffers");
|
||||||
|
glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC) load(userptr, "glCreateFramebuffers");
|
||||||
|
glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC) load(userptr, "glCreateProgramPipelines");
|
||||||
|
glad_glCreateQueries = (PFNGLCREATEQUERIESPROC) load(userptr, "glCreateQueries");
|
||||||
|
glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC) load(userptr, "glCreateRenderbuffers");
|
||||||
|
glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC) load(userptr, "glCreateSamplers");
|
||||||
|
glad_glCreateTextures = (PFNGLCREATETEXTURESPROC) load(userptr, "glCreateTextures");
|
||||||
|
glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC) load(userptr, "glCreateTransformFeedbacks");
|
||||||
|
glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC) load(userptr, "glCreateVertexArrays");
|
||||||
|
glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC) load(userptr, "glDisableVertexArrayAttrib");
|
||||||
|
glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC) load(userptr, "glEnableVertexArrayAttrib");
|
||||||
|
glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) load(userptr, "glFlushMappedNamedBufferRange");
|
||||||
|
glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC) load(userptr, "glGenerateTextureMipmap");
|
||||||
|
glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) load(userptr, "glGetCompressedTextureImage");
|
||||||
|
glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) load(userptr, "glGetNamedBufferParameteri64v");
|
||||||
|
glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedBufferParameteriv");
|
||||||
|
glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC) load(userptr, "glGetNamedBufferPointerv");
|
||||||
|
glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC) load(userptr, "glGetNamedBufferSubData");
|
||||||
|
glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetNamedFramebufferAttachmentParameteriv");
|
||||||
|
glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedFramebufferParameteriv");
|
||||||
|
glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedRenderbufferParameteriv");
|
||||||
|
glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC) load(userptr, "glGetQueryBufferObjecti64v");
|
||||||
|
glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC) load(userptr, "glGetQueryBufferObjectiv");
|
||||||
|
glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC) load(userptr, "glGetQueryBufferObjectui64v");
|
||||||
|
glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC) load(userptr, "glGetQueryBufferObjectuiv");
|
||||||
|
glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC) load(userptr, "glGetTextureImage");
|
||||||
|
glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC) load(userptr, "glGetTextureLevelParameterfv");
|
||||||
|
glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC) load(userptr, "glGetTextureLevelParameteriv");
|
||||||
|
glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC) load(userptr, "glGetTextureParameterIiv");
|
||||||
|
glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC) load(userptr, "glGetTextureParameterIuiv");
|
||||||
|
glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC) load(userptr, "glGetTextureParameterfv");
|
||||||
|
glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC) load(userptr, "glGetTextureParameteriv");
|
||||||
|
glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC) load(userptr, "glGetTransformFeedbacki64_v");
|
||||||
|
glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC) load(userptr, "glGetTransformFeedbacki_v");
|
||||||
|
glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC) load(userptr, "glGetTransformFeedbackiv");
|
||||||
|
glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC) load(userptr, "glGetVertexArrayIndexed64iv");
|
||||||
|
glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC) load(userptr, "glGetVertexArrayIndexediv");
|
||||||
|
glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC) load(userptr, "glGetVertexArrayiv");
|
||||||
|
glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) load(userptr, "glInvalidateNamedFramebufferData");
|
||||||
|
glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) load(userptr, "glInvalidateNamedFramebufferSubData");
|
||||||
|
glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC) load(userptr, "glMapNamedBuffer");
|
||||||
|
glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC) load(userptr, "glMapNamedBufferRange");
|
||||||
|
glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC) load(userptr, "glNamedBufferData");
|
||||||
|
glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC) load(userptr, "glNamedBufferStorage");
|
||||||
|
glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC) load(userptr, "glNamedBufferSubData");
|
||||||
|
glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) load(userptr, "glNamedFramebufferDrawBuffer");
|
||||||
|
glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) load(userptr, "glNamedFramebufferDrawBuffers");
|
||||||
|
glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) load(userptr, "glNamedFramebufferParameteri");
|
||||||
|
glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) load(userptr, "glNamedFramebufferReadBuffer");
|
||||||
|
glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) load(userptr, "glNamedFramebufferRenderbuffer");
|
||||||
|
glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) load(userptr, "glNamedFramebufferTexture");
|
||||||
|
glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) load(userptr, "glNamedFramebufferTextureLayer");
|
||||||
|
glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC) load(userptr, "glNamedRenderbufferStorage");
|
||||||
|
glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) load(userptr, "glNamedRenderbufferStorageMultisample");
|
||||||
|
glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC) load(userptr, "glTextureBuffer");
|
||||||
|
glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC) load(userptr, "glTextureBufferRange");
|
||||||
|
glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC) load(userptr, "glTextureParameterIiv");
|
||||||
|
glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC) load(userptr, "glTextureParameterIuiv");
|
||||||
|
glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC) load(userptr, "glTextureParameterf");
|
||||||
|
glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC) load(userptr, "glTextureParameterfv");
|
||||||
|
glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC) load(userptr, "glTextureParameteri");
|
||||||
|
glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC) load(userptr, "glTextureParameteriv");
|
||||||
|
glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC) load(userptr, "glTextureStorage1D");
|
||||||
|
glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC) load(userptr, "glTextureStorage2D");
|
||||||
|
glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) load(userptr, "glTextureStorage2DMultisample");
|
||||||
|
glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC) load(userptr, "glTextureStorage3D");
|
||||||
|
glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) load(userptr, "glTextureStorage3DMultisample");
|
||||||
|
glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC) load(userptr, "glTextureSubImage1D");
|
||||||
|
glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC) load(userptr, "glTextureSubImage2D");
|
||||||
|
glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC) load(userptr, "glTextureSubImage3D");
|
||||||
|
glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) load(userptr, "glTransformFeedbackBufferBase");
|
||||||
|
glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) load(userptr, "glTransformFeedbackBufferRange");
|
||||||
|
glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC) load(userptr, "glUnmapNamedBuffer");
|
||||||
|
glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC) load(userptr, "glVertexArrayAttribBinding");
|
||||||
|
glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC) load(userptr, "glVertexArrayAttribFormat");
|
||||||
|
glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC) load(userptr, "glVertexArrayAttribIFormat");
|
||||||
|
glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC) load(userptr, "glVertexArrayAttribLFormat");
|
||||||
|
glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC) load(userptr, "glVertexArrayBindingDivisor");
|
||||||
|
glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC) load(userptr, "glVertexArrayElementBuffer");
|
||||||
|
glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC) load(userptr, "glVertexArrayVertexBuffer");
|
||||||
|
glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC) load(userptr, "glVertexArrayVertexBuffers");
|
||||||
|
}
|
||||||
static void glad_gl_load_GL_ARB_fragment_program( GLADuserptrloadfunc load, void* userptr) {
|
static void glad_gl_load_GL_ARB_fragment_program( GLADuserptrloadfunc load, void* userptr) {
|
||||||
if(!GLAD_GL_ARB_fragment_program) return;
|
if(!GLAD_GL_ARB_fragment_program) return;
|
||||||
glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC) load(userptr, "glBindProgramARB");
|
glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC) load(userptr, "glBindProgramARB");
|
||||||
@@ -10252,6 +10361,12 @@ static void glad_gl_load_GL_ARB_shader_storage_buffer_object( GLADuserptrloadfun
|
|||||||
if(!GLAD_GL_ARB_shader_storage_buffer_object) return;
|
if(!GLAD_GL_ARB_shader_storage_buffer_object) return;
|
||||||
glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC) load(userptr, "glShaderStorageBlockBinding");
|
glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC) load(userptr, "glShaderStorageBlockBinding");
|
||||||
}
|
}
|
||||||
|
static void glad_gl_load_GL_ARB_timer_query( GLADuserptrloadfunc load, void* userptr) {
|
||||||
|
if(!GLAD_GL_ARB_timer_query) return;
|
||||||
|
glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC) load(userptr, "glGetQueryObjecti64v");
|
||||||
|
glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC) load(userptr, "glGetQueryObjectui64v");
|
||||||
|
glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC) load(userptr, "glQueryCounter");
|
||||||
|
}
|
||||||
static void glad_gl_load_GL_ARB_vertex_buffer_object( GLADuserptrloadfunc load, void* userptr) {
|
static void glad_gl_load_GL_ARB_vertex_buffer_object( GLADuserptrloadfunc load, void* userptr) {
|
||||||
if(!GLAD_GL_ARB_vertex_buffer_object) return;
|
if(!GLAD_GL_ARB_vertex_buffer_object) return;
|
||||||
glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC) load(userptr, "glBindBufferARB");
|
glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC) load(userptr, "glBindBufferARB");
|
||||||
@@ -10776,6 +10891,20 @@ static void glad_gl_load_GL_EXT_transform_feedback( GLADuserptrloadfunc load, vo
|
|||||||
glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) load(userptr, "glGetTransformFeedbackVaryingEXT");
|
glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) load(userptr, "glGetTransformFeedbackVaryingEXT");
|
||||||
glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) load(userptr, "glTransformFeedbackVaryingsEXT");
|
glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) load(userptr, "glTransformFeedbackVaryingsEXT");
|
||||||
}
|
}
|
||||||
|
static void glad_gl_load_GL_KHR_debug( GLADuserptrloadfunc load, void* userptr) {
|
||||||
|
if(!GLAD_GL_KHR_debug) return;
|
||||||
|
glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) load(userptr, "glDebugMessageCallback");
|
||||||
|
glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC) load(userptr, "glDebugMessageControl");
|
||||||
|
glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC) load(userptr, "glDebugMessageInsert");
|
||||||
|
glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC) load(userptr, "glGetDebugMessageLog");
|
||||||
|
glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC) load(userptr, "glGetObjectLabel");
|
||||||
|
glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC) load(userptr, "glGetObjectPtrLabel");
|
||||||
|
glad_glGetPointerv = (PFNGLGETPOINTERVPROC) load(userptr, "glGetPointerv");
|
||||||
|
glad_glObjectLabel = (PFNGLOBJECTLABELPROC) load(userptr, "glObjectLabel");
|
||||||
|
glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC) load(userptr, "glObjectPtrLabel");
|
||||||
|
glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC) load(userptr, "glPopDebugGroup");
|
||||||
|
glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC) load(userptr, "glPushDebugGroup");
|
||||||
|
}
|
||||||
static void glad_gl_load_GL_NV_conservative_raster( GLADuserptrloadfunc load, void* userptr) {
|
static void glad_gl_load_GL_NV_conservative_raster( GLADuserptrloadfunc load, void* userptr) {
|
||||||
if(!GLAD_GL_NV_conservative_raster) return;
|
if(!GLAD_GL_NV_conservative_raster) return;
|
||||||
glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC) load(userptr, "glSubpixelPrecisionBiasNV");
|
glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC) load(userptr, "glSubpixelPrecisionBiasNV");
|
||||||
@@ -10877,6 +11006,7 @@ static int glad_gl_find_extensions_gl(void) {
|
|||||||
|
|
||||||
GLAD_GL_ARB_compatibility = glad_gl_has_extension(exts, exts_i, "GL_ARB_compatibility");
|
GLAD_GL_ARB_compatibility = glad_gl_has_extension(exts, exts_i, "GL_ARB_compatibility");
|
||||||
GLAD_GL_ARB_debug_output = glad_gl_has_extension(exts, exts_i, "GL_ARB_debug_output");
|
GLAD_GL_ARB_debug_output = glad_gl_has_extension(exts, exts_i, "GL_ARB_debug_output");
|
||||||
|
GLAD_GL_ARB_direct_state_access = glad_gl_has_extension(exts, exts_i, "GL_ARB_direct_state_access");
|
||||||
GLAD_GL_ARB_fragment_program = glad_gl_has_extension(exts, exts_i, "GL_ARB_fragment_program");
|
GLAD_GL_ARB_fragment_program = glad_gl_has_extension(exts, exts_i, "GL_ARB_fragment_program");
|
||||||
GLAD_GL_ARB_fragment_shader = glad_gl_has_extension(exts, exts_i, "GL_ARB_fragment_shader");
|
GLAD_GL_ARB_fragment_shader = glad_gl_has_extension(exts, exts_i, "GL_ARB_fragment_shader");
|
||||||
GLAD_GL_ARB_framebuffer_sRGB = glad_gl_has_extension(exts, exts_i, "GL_ARB_framebuffer_sRGB");
|
GLAD_GL_ARB_framebuffer_sRGB = glad_gl_has_extension(exts, exts_i, "GL_ARB_framebuffer_sRGB");
|
||||||
@@ -10889,6 +11019,7 @@ static int glad_gl_find_extensions_gl(void) {
|
|||||||
GLAD_GL_ARB_texture_float = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_float");
|
GLAD_GL_ARB_texture_float = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_float");
|
||||||
GLAD_GL_ARB_texture_rg = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_rg");
|
GLAD_GL_ARB_texture_rg = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_rg");
|
||||||
GLAD_GL_ARB_texture_rgb10_a2ui = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_rgb10_a2ui");
|
GLAD_GL_ARB_texture_rgb10_a2ui = glad_gl_has_extension(exts, exts_i, "GL_ARB_texture_rgb10_a2ui");
|
||||||
|
GLAD_GL_ARB_timer_query = glad_gl_has_extension(exts, exts_i, "GL_ARB_timer_query");
|
||||||
GLAD_GL_ARB_vertex_buffer_object = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_buffer_object");
|
GLAD_GL_ARB_vertex_buffer_object = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_buffer_object");
|
||||||
GLAD_GL_ARB_vertex_program = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_program");
|
GLAD_GL_ARB_vertex_program = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_program");
|
||||||
GLAD_GL_ARB_vertex_shader = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_shader");
|
GLAD_GL_ARB_vertex_shader = glad_gl_has_extension(exts, exts_i, "GL_ARB_vertex_shader");
|
||||||
@@ -10910,6 +11041,7 @@ static int glad_gl_find_extensions_gl(void) {
|
|||||||
GLAD_GL_EXT_texture_sRGB = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_sRGB");
|
GLAD_GL_EXT_texture_sRGB = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_sRGB");
|
||||||
GLAD_GL_EXT_transform_feedback = glad_gl_has_extension(exts, exts_i, "GL_EXT_transform_feedback");
|
GLAD_GL_EXT_transform_feedback = glad_gl_has_extension(exts, exts_i, "GL_EXT_transform_feedback");
|
||||||
GLAD_GL_INTEL_conservative_rasterization = glad_gl_has_extension(exts, exts_i, "GL_INTEL_conservative_rasterization");
|
GLAD_GL_INTEL_conservative_rasterization = glad_gl_has_extension(exts, exts_i, "GL_INTEL_conservative_rasterization");
|
||||||
|
GLAD_GL_KHR_debug = glad_gl_has_extension(exts, exts_i, "GL_KHR_debug");
|
||||||
GLAD_GL_KHR_texture_compression_astc_ldr = glad_gl_has_extension(exts, exts_i, "GL_KHR_texture_compression_astc_ldr");
|
GLAD_GL_KHR_texture_compression_astc_ldr = glad_gl_has_extension(exts, exts_i, "GL_KHR_texture_compression_astc_ldr");
|
||||||
GLAD_GL_NV_conservative_raster = glad_gl_has_extension(exts, exts_i, "GL_NV_conservative_raster");
|
GLAD_GL_NV_conservative_raster = glad_gl_has_extension(exts, exts_i, "GL_NV_conservative_raster");
|
||||||
|
|
||||||
@@ -10994,10 +11126,12 @@ int gladLoadGLUserPtr( GLADuserptrloadfunc load, void *userptr) {
|
|||||||
|
|
||||||
if (!glad_gl_find_extensions_gl()) return 0;
|
if (!glad_gl_find_extensions_gl()) return 0;
|
||||||
glad_gl_load_GL_ARB_debug_output(load, userptr);
|
glad_gl_load_GL_ARB_debug_output(load, userptr);
|
||||||
|
glad_gl_load_GL_ARB_direct_state_access(load, userptr);
|
||||||
glad_gl_load_GL_ARB_fragment_program(load, userptr);
|
glad_gl_load_GL_ARB_fragment_program(load, userptr);
|
||||||
glad_gl_load_GL_ARB_shader_image_load_store(load, userptr);
|
glad_gl_load_GL_ARB_shader_image_load_store(load, userptr);
|
||||||
glad_gl_load_GL_ARB_shader_objects(load, userptr);
|
glad_gl_load_GL_ARB_shader_objects(load, userptr);
|
||||||
glad_gl_load_GL_ARB_shader_storage_buffer_object(load, userptr);
|
glad_gl_load_GL_ARB_shader_storage_buffer_object(load, userptr);
|
||||||
|
glad_gl_load_GL_ARB_timer_query(load, userptr);
|
||||||
glad_gl_load_GL_ARB_vertex_buffer_object(load, userptr);
|
glad_gl_load_GL_ARB_vertex_buffer_object(load, userptr);
|
||||||
glad_gl_load_GL_ARB_vertex_program(load, userptr);
|
glad_gl_load_GL_ARB_vertex_program(load, userptr);
|
||||||
glad_gl_load_GL_ARB_vertex_shader(load, userptr);
|
glad_gl_load_GL_ARB_vertex_shader(load, userptr);
|
||||||
@@ -11012,6 +11146,7 @@ int gladLoadGLUserPtr( GLADuserptrloadfunc load, void *userptr) {
|
|||||||
glad_gl_load_GL_EXT_texture_array(load, userptr);
|
glad_gl_load_GL_EXT_texture_array(load, userptr);
|
||||||
glad_gl_load_GL_EXT_texture_integer(load, userptr);
|
glad_gl_load_GL_EXT_texture_integer(load, userptr);
|
||||||
glad_gl_load_GL_EXT_transform_feedback(load, userptr);
|
glad_gl_load_GL_EXT_transform_feedback(load, userptr);
|
||||||
|
glad_gl_load_GL_KHR_debug(load, userptr);
|
||||||
glad_gl_load_GL_NV_conservative_raster(load, userptr);
|
glad_gl_load_GL_NV_conservative_raster(load, userptr);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
src/k4.h
2
src/k4.h
@@ -45,3 +45,5 @@ void k4_set_texture_reduction(int);
|
|||||||
|
|
||||||
void k4_set_clipboard_text(const char *str);
|
void k4_set_clipboard_text(const char *str);
|
||||||
const char *k4_get_clipboard_text();
|
const char *k4_get_clipboard_text();
|
||||||
|
|
||||||
|
void k4_set_ui_mode(bool yes);
|
||||||
|
|||||||
@@ -333,21 +333,11 @@ static int texloader(void *ud, struct ResManRes *res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int fontloader(void *ud, struct ResManRes *res) {
|
static int fontloader(void *ud, struct ResManRes *res) {
|
||||||
FILE *fntf = fopen(res->name, "rb");
|
char namebuf[256];
|
||||||
fseek(fntf, 0, SEEK_END);
|
snprintf(namebuf, sizeof(namebuf), "assets/%s", res->name);
|
||||||
size_t fntfsz = ftell(fntf);
|
|
||||||
fseek(fntf, 0, SEEK_SET);
|
|
||||||
char *fntbuf = malloc(fntfsz);
|
|
||||||
fread(fntbuf, 1, fntfsz, fntf);
|
|
||||||
|
|
||||||
struct k3Font *fnt = k3FontCreate();
|
struct k3Font *fnt = k3FontCreate();
|
||||||
struct k3Tex *fnttexldr(struct k3Font *fnt, const char *name) {
|
k3FontLoad(fnt, namebuf);
|
||||||
return resman_ref(RESMAN_TEXTURE, name);
|
|
||||||
}
|
|
||||||
k3FontLoad(fnt, fntbuf, fntfsz, fnttexldr);
|
|
||||||
|
|
||||||
free(fntbuf);
|
|
||||||
|
|
||||||
res->thing = fnt;
|
res->thing = fnt;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
61
src/luaapi.c
61
src/luaapi.c
@@ -19,6 +19,7 @@
|
|||||||
#include<GLFW/glfw3.h>
|
#include<GLFW/glfw3.h>
|
||||||
#include"ssort.h"
|
#include"ssort.h"
|
||||||
#include<ctype.h>
|
#include<ctype.h>
|
||||||
|
#include<math.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is by far the least clean or well-maintained source in the
|
* This is by far the least clean or well-maintained source in the
|
||||||
@@ -341,7 +342,9 @@ static int game_addentity(lua_State *L) {
|
|||||||
|
|
||||||
setstrstatic("mdl", c.mdl, sizeof(c.mdl));
|
setstrstatic("mdl", c.mdl, sizeof(c.mdl));
|
||||||
|
|
||||||
c.cache = k3MdlCopySubs((struct k3Mdl*) resman_ref(RESMAN_MODEL, c.mdl));
|
if(strlen(c.mdl)) {
|
||||||
|
c.cache = k3MdlCopySubs((struct k3Mdl*) resman_ref(RESMAN_MODEL, c.mdl));
|
||||||
|
}
|
||||||
|
|
||||||
game_addcomponent(render, &c);
|
game_addcomponent(render, &c);
|
||||||
}
|
}
|
||||||
@@ -1294,7 +1297,7 @@ static int game_get(lua_State *L) {
|
|||||||
if(UiActive) {
|
if(UiActive) {
|
||||||
struct menuitem *item = lua_newuserdata(L, sizeof(*item));
|
struct menuitem *item = lua_newuserdata(L, sizeof(*item));
|
||||||
item->type = MENUITEM_SCREEN;
|
item->type = MENUITEM_SCREEN;
|
||||||
item->ptr = UiActive;
|
item->ptr = (struct k3MObj*) UiActive;
|
||||||
} else {
|
} else {
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
}
|
}
|
||||||
@@ -1317,16 +1320,16 @@ static int game_set(lua_State *L) {
|
|||||||
LuaapiFar = lua_tonumber(L, 3);
|
LuaapiFar = lua_tonumber(L, 3);
|
||||||
} else if(!strcmp(i, "menu")) {
|
} else if(!strcmp(i, "menu")) {
|
||||||
struct menuitem *item = lua_touserdata(L, 3);
|
struct menuitem *item = lua_touserdata(L, 3);
|
||||||
UiActive = item ? item->ptr : NULL;
|
UiActive = item ? (struct k3MScreen*) item->ptr : NULL;
|
||||||
|
|
||||||
set_ui_mode(!!UiActive);
|
k4_set_ui_mode(!!UiActive);
|
||||||
|
|
||||||
if(UiActive) {
|
if(UiActive) {
|
||||||
UiActive->w = UiActive->wDesired = GameWndW;
|
UiActive->w = UiActive->wDesired = GameWndW;
|
||||||
UiActive->h = UiActive->hDesired = GameWndH;
|
UiActive->h = UiActive->hDesired = GameWndH;
|
||||||
|
|
||||||
k3MMeasure(UiActive);
|
k3MMeasure((struct k3MObj*) UiActive);
|
||||||
k3MArrange(UiActive);
|
k3MArrange((struct k3MObj*) UiActive);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lua_pushvalue(L, 2);
|
lua_pushvalue(L, 2);
|
||||||
@@ -1493,7 +1496,7 @@ static int luaapi_require(lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < nameLen;) {
|
for(int i = 0; i < nameLen;) {
|
||||||
if(!isalpha(name[i]) && !isdigit(name[i]) && name[i] != '_' && name[i] != '-') {
|
if(!isalpha(name[i]) && !isdigit(name[i]) && name[i] != '_' && name[i] != '-' && name[i] != '.') {
|
||||||
memmove(name + i + 1, name + i, --nameLen - i);
|
memmove(name + i + 1, name + i, --nameLen - i);
|
||||||
} else i++;
|
} else i++;
|
||||||
}
|
}
|
||||||
@@ -1511,7 +1514,7 @@ static int luaapi_require(lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char buf[128];
|
char buf[128];
|
||||||
snprintf(buf, sizeof(buf), "%s.lua", name);
|
snprintf(buf, sizeof(buf), "%.*s.lua", (int) nameLen, name);
|
||||||
buf[127] = 0;
|
buf[127] = 0;
|
||||||
for(size_t i = 0; buf[i] && i < strlen(buf) - 4; i++) {
|
for(size_t i = 0; buf[i] && i < strlen(buf) - 4; i++) {
|
||||||
if(buf[i] == '.') buf[i] = '/';
|
if(buf[i] == '.') buf[i] = '/';
|
||||||
@@ -1722,7 +1725,7 @@ static int dagame_mdl(lua_State *L) {
|
|||||||
}
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
struct k3Mdl *mdl = k3MdlCreate(vertexCount, indexCount, 0, positions, normals, uvs, NULL, NULL, NULL, indices, NULL, NULL);
|
struct k3Mdl *mdl = k3MdlCreate(vertexCount, indexCount, 0, positions, normals, (float*) uvs, NULL, NULL, NULL, indices, NULL, NULL);
|
||||||
|
|
||||||
struct k3Mdl **ud = lua_newuserdata(L, sizeof(*ud));
|
struct k3Mdl **ud = lua_newuserdata(L, sizeof(*ud));
|
||||||
*ud = mdl;
|
*ud = mdl;
|
||||||
@@ -1855,7 +1858,7 @@ static int dagame_ray_get(lua_State *L) {
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
} else if(!strcmp(key, "ready")) {
|
} else if(!strcmp(key, "ready")) {
|
||||||
lua_pushboolean(L, !isnanf(lr->out[0]));
|
lua_pushboolean(L, !isnan(lr->out[0]));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -1909,7 +1912,7 @@ static int dagame_draw(lua_State *L) {
|
|||||||
float b = lua_type(L, -2) == LUA_TNUMBER ? lua_tonumber(L, -2) : 1;
|
float b = lua_type(L, -2) == LUA_TNUMBER ? lua_tonumber(L, -2) : 1;
|
||||||
float a = lua_type(L, -1) == LUA_TNUMBER ? lua_tonumber(L, -1) : 1;
|
float a = lua_type(L, -1) == LUA_TNUMBER ? lua_tonumber(L, -1) : 1;
|
||||||
|
|
||||||
k3BatchAdd(tex, (struct k3RectF) {.x = sx, .y = sy, .w = sw, .h = sh}, (struct k3RectF) {.x = x, .y = y, .w = w, .h = h}, 0, (vec4) {r, g, b, a}, 0);
|
k3BatchAdd(tex, (struct k3RectF) {.x = sx, .y = sy, .w = sw, .h = sh}, (struct k3RectF) {.x = x, .y = y, .w = w, .h = h}, 0, (vec4) {r, g, b, a}, 0, 0);
|
||||||
|
|
||||||
lua_pop(L, 13);
|
lua_pop(L, 13);
|
||||||
} else {
|
} else {
|
||||||
@@ -2095,6 +2098,17 @@ static int dagame_k3menuitem_add_child(lua_State *L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int dagame_k3menuitem_remove_child(lua_State *L) {
|
||||||
|
struct menuitem *parent = lua_touserdata(L, 1);
|
||||||
|
struct menuitem *child = lua_touserdata(L, 2);
|
||||||
|
|
||||||
|
k3MRemoveChild(parent->ptr, child->ptr);
|
||||||
|
|
||||||
|
lua_pushvalue(L, 1);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static bool k3menuitem_event_callback(struct k3MEvent *ev, uint8_t *ud_) {
|
static bool k3menuitem_event_callback(struct k3MEvent *ev, uint8_t *ud_) {
|
||||||
void **ud = ud_;
|
void **ud = ud_;
|
||||||
|
|
||||||
@@ -2212,6 +2226,8 @@ static int dagame_k3menuitem_get(lua_State *L) {
|
|||||||
lua_pushcfunction(L, dagame_k3menuitem_set_bounds);
|
lua_pushcfunction(L, dagame_k3menuitem_set_bounds);
|
||||||
} else if(!strcmp(lua_tostring(L, 2), "add_child")) {
|
} else if(!strcmp(lua_tostring(L, 2), "add_child")) {
|
||||||
lua_pushcfunction(L, dagame_k3menuitem_add_child);
|
lua_pushcfunction(L, dagame_k3menuitem_add_child);
|
||||||
|
} else if(!strcmp(lua_tostring(L, 2), "remove_child")) {
|
||||||
|
lua_pushcfunction(L, dagame_k3menuitem_remove_child);
|
||||||
} else if(!strcmp(lua_tostring(L, 2), "on")) {
|
} else if(!strcmp(lua_tostring(L, 2), "on")) {
|
||||||
lua_pushcfunction(L, dagame_k3menuitem_on);
|
lua_pushcfunction(L, dagame_k3menuitem_on);
|
||||||
} else if(!strcmp(lua_tostring(L, 2), "measure")) {
|
} else if(!strcmp(lua_tostring(L, 2), "measure")) {
|
||||||
@@ -3368,12 +3384,17 @@ void luaapi_init() {
|
|||||||
|
|
||||||
k3Log(k3_DEBUG, "Loading Lua stdlib");
|
k3Log(k3_DEBUG, "Loading Lua stdlib");
|
||||||
|
|
||||||
luaL_requiref(L, "_G", luaopen_base, 1);
|
size_t numpkgs = 0;
|
||||||
luaL_requiref(L, LUA_TABLIBNAME, luaopen_table, 1);
|
numpkgs++, luaL_requiref(L, "_G", luaopen_base, 1);
|
||||||
luaL_requiref(L, LUA_STRLIBNAME, luaopen_string, 1);
|
numpkgs++, luaL_requiref(L, LUA_TABLIBNAME, luaopen_table, 1);
|
||||||
luaL_requiref(L, LUA_MATHLIBNAME, luaopen_math, 1);
|
numpkgs++, luaL_requiref(L, LUA_STRLIBNAME, luaopen_string, 1);
|
||||||
luaL_requiref(L, LUA_DBLIBNAME, luaopen_debug, 1);
|
numpkgs++, luaL_requiref(L, LUA_MATHLIBNAME, luaopen_math, 1);
|
||||||
lua_pop(L, 5);
|
numpkgs++, luaL_requiref(L, LUA_DBLIBNAME, luaopen_debug, 1);
|
||||||
|
numpkgs++, luaL_requiref(L, LUA_UTF8LIBNAME, luaopen_utf8, 1);
|
||||||
|
#ifdef LUAAPI_EXPOSE_PACKAGE_LIB
|
||||||
|
numpkgs++, luaL_requiref(L, "package", luaopen_package, 1);
|
||||||
|
#endif
|
||||||
|
lua_pop(L, numpkgs);
|
||||||
|
|
||||||
k3Log(k3_DEBUG, "Setting custom require");
|
k3Log(k3_DEBUG, "Setting custom require");
|
||||||
|
|
||||||
@@ -4374,7 +4395,11 @@ void luaapi_fillmaterial_direct(struct k3Mat *mat) {
|
|||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
lua_getfield(L, -1, "alphatest");
|
lua_getfield(L, -1, "alphatest");
|
||||||
mat->passes[0].alphatest = lua_toboolean(L, -1);
|
if(lua_type(L, -1) == LUA_TBOOLEAN) {
|
||||||
|
mat->passes[0].alphatest = lua_toboolean(L, -1);
|
||||||
|
} else {
|
||||||
|
mat->passes[0].alphatest = lua_tonumber(L, -1);
|
||||||
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
lua_getfield(L, -1, "depthwrite");
|
lua_getfield(L, -1, "depthwrite");
|
||||||
|
|||||||
26
src/main.c
26
src/main.c
@@ -28,6 +28,7 @@
|
|||||||
#include"k3font.h"
|
#include"k3font.h"
|
||||||
#include"k3menu.h"
|
#include"k3menu.h"
|
||||||
#include"k3bloom.h"
|
#include"k3bloom.h"
|
||||||
|
#include"k3batch.h"
|
||||||
|
|
||||||
#include"resman.h"
|
#include"resman.h"
|
||||||
|
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
|
|
||||||
#include"net_server.h"
|
#include"net_server.h"
|
||||||
#include"net_client.h"
|
#include"net_client.h"
|
||||||
|
#include"net_hi.h"
|
||||||
|
|
||||||
#include<ctype.h>
|
#include<ctype.h>
|
||||||
|
|
||||||
@@ -60,7 +62,7 @@ static double LastTime;
|
|||||||
|
|
||||||
#include"loaders.inc"
|
#include"loaders.inc"
|
||||||
|
|
||||||
void set_ui_mode(int yes) {
|
void k4_set_ui_mode(bool yes) {
|
||||||
glfwSetInputMode(GameWnd, GLFW_CURSOR, yes ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_DISABLED);
|
glfwSetInputMode(GameWnd, GLFW_CURSOR, yes ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_DISABLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +132,7 @@ static void motioncallback(GLFWwindow *GameWnd, double xpos, double ypos) {
|
|||||||
static void keycallback(GLFWwindow *GameWnd, int key, int scancode, int action, int mods) {
|
static void keycallback(GLFWwindow *GameWnd, int key, int scancode, int action, int mods) {
|
||||||
if(action == GLFW_RELEASE && key == GLFW_KEY_ESCAPE) {
|
if(action == GLFW_RELEASE && key == GLFW_KEY_ESCAPE) {
|
||||||
luaapi_escape();
|
luaapi_escape();
|
||||||
set_ui_mode(!!UiActive);
|
k4_set_ui_mode(!!UiActive);
|
||||||
} else {
|
} else {
|
||||||
if(UiActive) {
|
if(UiActive) {
|
||||||
struct k3MEvent ev = {
|
struct k3MEvent ev = {
|
||||||
@@ -193,7 +195,10 @@ const char *k4_get_arg(const char *name) {
|
|||||||
|
|
||||||
#include<signal.h>
|
#include<signal.h>
|
||||||
void k4k3LogCallback(enum k3LogLevel lvl, const char *str, size_t len) {
|
void k4k3LogCallback(enum k3LogLevel lvl, const char *str, size_t len) {
|
||||||
|
if(lvl == k3_TRACE) return;
|
||||||
|
|
||||||
static const char *prefixes[] = {
|
static const char *prefixes[] = {
|
||||||
|
[k3_TRACE] = "[\x1B[95mTRACE\x1B[0m]",
|
||||||
[k3_DEBUG] = "[\x1B[95mDEBUG\x1B[0m]",
|
[k3_DEBUG] = "[\x1B[95mDEBUG\x1B[0m]",
|
||||||
[k3_INFO] = "[\x1B[97mINFO\x1B[0m] ",
|
[k3_INFO] = "[\x1B[97mINFO\x1B[0m] ",
|
||||||
[k3_WARN] = "[\x1B[93mWARN\x1B[0m] ",
|
[k3_WARN] = "[\x1B[93mWARN\x1B[0m] ",
|
||||||
@@ -202,7 +207,7 @@ void k4k3LogCallback(enum k3LogLevel lvl, const char *str, size_t len) {
|
|||||||
|
|
||||||
//if(lvl == k3_ERR) raise(SIGINT);
|
//if(lvl == k3_ERR) raise(SIGINT);
|
||||||
|
|
||||||
fprintf(stderr, "%s : %s\n", prefixes[lvl], str);
|
fprintf(stdout, "%s : %s\n", prefixes[lvl], str);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct k4Control {
|
struct k4Control {
|
||||||
@@ -274,8 +279,16 @@ static int eng_init() {
|
|||||||
GLAD_GL_ARB_framebuffer_sRGB = 0;
|
GLAD_GL_ARB_framebuffer_sRGB = 0;
|
||||||
GLAD_GL_EXT_framebuffer_object = 0;
|
GLAD_GL_EXT_framebuffer_object = 0;
|
||||||
}
|
}
|
||||||
|
if(k4_get_arg("dsa") && strtol(k4_get_arg("dsa"), NULL, 0) == 0) {
|
||||||
|
GLAD_GL_EXT_direct_state_access = 0;
|
||||||
|
GLAD_GL_ARB_direct_state_access = 0;
|
||||||
|
}
|
||||||
|
|
||||||
glfwSwapInterval(0);
|
if(k4_get_arg("vsync")) {
|
||||||
|
glfwSwapInterval(strtol(k4_get_arg("vsync"), NULL, 0));
|
||||||
|
} else {
|
||||||
|
glfwSwapInterval(0);
|
||||||
|
}
|
||||||
|
|
||||||
printf("GL version: %s\n", glGetString(GL_VERSION));
|
printf("GL version: %s\n", glGetString(GL_VERSION));
|
||||||
printf("GL renderer: %s\n", glGetString(GL_RENDERER));
|
printf("GL renderer: %s\n", glGetString(GL_RENDERER));
|
||||||
@@ -309,7 +322,7 @@ static void fix_resol() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void eng_ui_init() {
|
static void eng_ui_init() {
|
||||||
set_ui_mode(!!UiActive);
|
k4_set_ui_mode(!!UiActive);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fps_counter_step(double newDT) {
|
static void fps_counter_step(double newDT) {
|
||||||
@@ -577,6 +590,7 @@ int main(int argc_, char **argv_) {
|
|||||||
|
|
||||||
glm_mat4_copy(cam, LuaapiCamMatrix);
|
glm_mat4_copy(cam, LuaapiCamMatrix);
|
||||||
|
|
||||||
|
k3Update();
|
||||||
k3SetTime(glfwGetTime());
|
k3SetTime(glfwGetTime());
|
||||||
|
|
||||||
size_t lightCount;
|
size_t lightCount;
|
||||||
@@ -611,7 +625,7 @@ int main(int argc_, char **argv_) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!IrregularShadows) {
|
if(!IrregularShadows) {
|
||||||
k3PassShadowmap(proj, cam, shadowmapOffscreen);
|
k3PassShadowmap(proj, cam, shadowmapOffscreen, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lowresOffscreen) {
|
if(lowresOffscreen) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
#else
|
#else
|
||||||
#include<netdb.h>
|
#include<netdb.h>
|
||||||
#include<sys/socket.h>
|
#include<sys/socket.h>
|
||||||
#include<sys/random.h>
|
|
||||||
#include<arpa/inet.h>
|
#include<arpa/inet.h>
|
||||||
#include<ifaddrs.h>
|
#include<ifaddrs.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -36,6 +35,13 @@
|
|||||||
#define RAND(b, i) RtlGenRandom(b, i)
|
#define RAND(b, i) RtlGenRandom(b, i)
|
||||||
#else
|
#else
|
||||||
#define RAND(b, i) getrandom(b, i, 0)
|
#define RAND(b, i) getrandom(b, i, 0)
|
||||||
|
static void getrandom(void *buf, size_t amount, int flags) {
|
||||||
|
static FILE *f;
|
||||||
|
if(!f) {
|
||||||
|
f = fopen("/dev/urandom", "rb");
|
||||||
|
}
|
||||||
|
fread(buf, 1, amount, f);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct StunMsg {
|
struct StunMsg {
|
||||||
|
|||||||
Reference in New Issue
Block a user