Last active
October 1, 2020 02:32
-
-
Save radgeRayden/e30d729ae7a0214126bdd210db0481df to your computer and use it in GitHub Desktop.
sdl gl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# import C functions and sanitize the scope | |
vvv bind glad | |
do | |
let glad = | |
include | |
options | |
.. "-I" module-dir "/glad/include" | |
"glad/src/glad.c" | |
do | |
using glad.extern | |
using glad.typedef | |
using glad.define | |
locals; | |
let gl = | |
fold (scope = (Scope)) for k v in glad | |
let name = ((k as Symbol) as string) | |
if ('match? "^(gl[A-Z])" name ) | |
let new-name = (rslice name (countof "gl")) | |
'bind scope (Symbol new-name) v | |
elseif ('match? "^GL" name) | |
'bind scope k v | |
else scope | |
run-stage; | |
fn init! () | |
let status = (glad.gladLoadGL) | |
if (status == 0) | |
error "failed to initialize openGL" | |
.. gl | |
do | |
let init! | |
locals; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import .gl | |
import .sdl | |
sdl.Init | |
| | |
sdl.INIT_VIDEO | |
sdl.INIT_GAMECONTROLLER | |
sdl.INIT_EVENTS | |
sdl.INIT_JOYSTICK | |
sdl.GL_SetAttribute sdl.GL_DOUBLEBUFFER true | |
sdl.GL_SetAttribute sdl.GL_CONTEXT_MAJOR_VERSION 4 | |
sdl.GL_SetAttribute sdl.GL_CONTEXT_MINOR_VERSION 4 | |
sdl.GL_SetAttribute sdl.GL_CONTEXT_FLAGS | |
| | |
sdl.GL_CONTEXT_DEBUG_FLAG | |
sdl.GL_CONTEXT_FORWARD_COMPATIBLE_FLAG | |
sdl.GL_SetAttribute sdl.GL_CONTEXT_PROFILE_MASK | |
sdl.GL_CONTEXT_PROFILE_CORE as u32 | |
global app-window = | |
sdl.CreateWindow | |
"Untitled" | |
sdl.WINDOWPOS_CENTERED | |
sdl.WINDOWPOS_CENTERED | |
720 | |
480 | |
sdl.WINDOW_OPENGL | |
let context = (sdl.GL_CreateContext app-window) | |
if (context == null) | |
error "Couldn't create OpenGL context." | |
let context-change-result = (sdl.GL_MakeCurrent app-window context) | |
if (context-change-result < 0) | |
error "Couldn't make OpenGL context current." | |
gl.init!; | |
label run | |
loop () | |
local ev : sdl.Event | |
while (sdl.PollEvent &ev) | |
switch ev.type | |
case (sdl.SDL_QUIT as u32) # cast probably unnecessary now but I didn't update yet | |
merge run | |
default | |
; | |
gl.ClearColor 1.0 0.14 0.14 0.14 | |
gl.Clear gl.GL_COLOR_BUFFER_BIT | |
sdl.GL_SwapWindow app-window |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
bindings module for the SDL2 library | |
if (operating-system == 'windows) | |
load-library (module-dir .. "/runtime/SDL2.dll") | |
elseif (operating-system == 'linux) | |
load-library "libSDL2.so" | |
vvv bind sdl | |
do | |
let module = | |
include | |
"SDL2/SDL.h" | |
options | |
"-D_REENTRANT" | |
"-I/usr/include/SDL2" | |
using module.extern | |
using module.const | |
using module.define | |
using module.typedef | |
locals; | |
# sanitize scope | |
let sdl = | |
fold (scope = sdl) for k v in sdl | |
let name = ((k as Symbol) as string) | |
if ('match? "^SDL_" name) | |
let new-name = (rslice name (countof "SDL_")) | |
'bind scope (Symbol new-name) v | |
else | |
scope | |
run-stage; | |
let sdl-macros = | |
do | |
inline WINDOWPOS_UNDEFINED_DISPLAY (X) | |
sdl.WINDOWPOS_UNDEFINED_MASK | X | |
inline WINDOWPOS_ISUNDEFINED (X) | |
(X & 0xFFFF0000) == sdl.WINDOWPOS_UNDEFINED_MASK | |
inline WINDOWPOS_CENTERED_DISPLAY (X) | |
sdl.WINDOWPOS_CENTERED_MASK | X | |
inline WINDOWPOS_ISCENTERED (X) | |
(X & 0xFFFF0000) == sdl.WINDOWPOS_CENTERED_MASK | |
let WINDOWPOS_CENTERED = (WINDOWPOS_CENTERED_DISPLAY 0) | |
let WINDOWPOS_UNDEFINED = (WINDOWPOS_UNDEFINED_DISPLAY 0) | |
inline VERSION (version-struct) | |
imply version-struct sdl.version | |
version-struct.major = sdl.MAJOR_VERSION | |
version-struct.minor = sdl.MINOR_VERSION | |
version-struct.patch = sdl.PATCHLEVEL | |
; | |
inline VERSIONNUM (major minor patch) | |
(major * 1000) + (minor * 100) + patch | |
inline COMPILEDVERSION () | |
VERSIONNUM sdl.MAJOR_VERSION sdl.MINOR_VERSION sdl.PATCHLEVEL | |
inline VERSION_ATLEAST (major minor patch) | |
(COMPILEDVERSION) >= (VERSIONNUM major minor patch) | |
locals; | |
let sdl = (sdl .. sdl-macros) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment