Skip to content

Instantly share code, notes, and snippets.

@gcatlin
gcatlin / keybase.md
Created March 12, 2019 00:26
keybase.md

Keybase proof

I hereby claim:

  • I am gcatlin on github.
  • I am gcatlin (https://keybase.io/gcatlin) on keybase.
  • I have a public key ASDOkhxPwBV28ND_Pzm3rzNcVWViUFUakYvCgFb8dC-kiQo

To claim this, I am signing this object:

@gcatlin
gcatlin / glfw-opengl-example.c
Last active February 19, 2022 03:07
Minimal C GLFW OpenGL example
//
// cc glfw-opengl-example.c glad.c -lglfw
//
#include "glad.h" // https://glad.dav1d.de/
#include <GLFW/glfw3.h>
static void quit(GLFWwindow *window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
glfwSetWindowShouldClose(window, GLFW_TRUE);
@gcatlin
gcatlin / sdl-opengl-example.c
Last active September 2, 2023 17:21
Minimal C SDL2 OpenGL example
//
// cc main.c glad.c -lSDL2
//
#include "glad.h" // https://glad.dav1d.de/
#include <SDL2/SDL.h>
#include <SDL2/SDL_opengl.h>
#include <stdbool.h>
int main()
{
@gcatlin
gcatlin / glfw-metal-example.m
Last active March 23, 2024 18:13
Minimal C GLFW Metal example
//
// cc glfw-metal-example.m `pkg-config --cflags --libs glfw3` -framework AppKit -framework Metal -framework QuartzCore
//
#define GLFW_INCLUDE_NONE
#define GLFW_EXPOSE_NATIVE_COCOA
#include <GLFW/glfw3.h>
#include <GLFW/glfw3native.h>
#import <Metal/Metal.h>
#import <QuartzCore/CAMetalLayer.h>
@gcatlin
gcatlin / sdl-metal-example.m
Last active April 20, 2024 13:04
Minimal C SDL2 Metal example
//
// cc sdl-metal-example.m `sdl2-config --cflags --libs` -framework Metal -framework QuartzCore && ./a.out
//
#include <SDL.h>
#import <Metal/Metal.h>
#import <QuartzCore/CAMetalLayer.h>
int main (int argc, char *args[])
{
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "metal");
@gcatlin
gcatlin / core-audio-sine-wave.c
Last active April 3, 2024 04:23
Core Audio sine wave example
// To run:
// clang core-audio-sine-wave.c -framework AudioUnit && ./a.out
#include <AudioUnit/AudioUnit.h>
#define SAMPLE_RATE 48000
#define TONE_FREQUENCY 440
#define M_TAU 2.0 * M_PI
OSStatus RenderSineWave(
void *inRefCon,
@gcatlin
gcatlin / build.sh
Created July 13, 2015 14:07
Dynamic loading/unloading of Go shared library
#!/bin/sh
go build -buildmode=c-shared lib.go
clang main.m -g -Wall -Werror -Wfatal-errors -pedantic -Wno-c11-extensions -Wno-unused-variable -Wno-unused-function -o main.out
@gcatlin
gcatlin / triangle.go
Created January 12, 2015 13:10
Go SDL2 OpenGL minimal example
package main
import (
"runtime"
"github.com/go-gl/gl"
"github.com/veandco/go-sdl2/sdl"
)
func main() {
@gcatlin
gcatlin / multiple-error-handlers.php
Created May 30, 2013 13:53
Adds support for multiple error handlers in PHP
<?php
function append_error_handler($handler) {
set_error_handlers(array(set_error_handler($handler), $handler));
}
function prepend_error_handler($handler) {
set_error_handlers(array($handler, set_error_handler($handler)));
}
@gcatlin
gcatlin / ShutdownFunctionManager.php
Created May 30, 2013 13:42
Simple PHP shutdown function manager
<?php
class ShutdownFunctionManager {
protected $callbacks = array();
protected $registered = false;
public function __construct($auto_register = true) {
if ($auto_register) {
$this->register();
}