Skip to content

Instantly share code, notes, and snippets.

View vaiorabbit's full-sized avatar
🎮
busy playing video games

vaiorabbit

🎮
busy playing video games
View GitHub Profile
import sys
import re
def fnv32a( str ):
hval = 0x811c9dc5
fnv_32_prime = 0x01000193
uint32_max = 2 ** 32
for s in str:
hval = hval ^ ord(s)
hval = (hval * fnv_32_prime) % uint32_max
# $ cat words.txt | perl Hashcode.pl words.txt > result_perl.txt
use strict;
main() unless caller;
sub fnv32a {
my $str = $_[0];
my $FNV1_32_PRIME = 0x01000193;
my $UINT32_MAX = 4294967296; # 2 ** 32
@vaiorabbit
vaiorabbit / bin2c.rb
Created July 7, 2013 14:25
Converts binary file into C array.
#
# usage : $ ruby bin2c.rb loremipsum.txt.bin
# generates 'loremipsum_txt_bin.c' :
#
# char loremipsum_txt_bin_array[/*15716*/] = {
# 0x5a,0x50,0x46,0x4c,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
# ...
#
if __FILE__ == $0
begin
@vaiorabbit
vaiorabbit / rmath3d_ffi.rb
Created July 21, 2013 10:40
ruby-ffi (https://github.com/ffi/ffi) を使ってDLLの関数を呼ぶテスト。 RMath3D (https://github.com/vaiorabbit/rmath3d) の .dylib をビルド→その中にある RVec4SetElements をRubyから呼ぶところまで。
require 'ffi'
module RMath3D
extend FFI::Library
# FFI
case FFI::Platform::OS
when "darwin"
# $ clang -dynamiclib RMtx3.c RMtx4.c RVec3.c RVec4.c RQuat.c -o libRMath3D.dylib
ffi_lib "libRMath3D.dylib"
@vaiorabbit
vaiorabbit / Building libglfw.dylib on macOS (Apple Silicon)
Last active September 8, 2022 13:10
Building libglfw.dylib on macOS (Apple Silicon)
$ curl -L https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.zip > glfw-3.3.2.zip
$ unzip glfw-3.3.2.zip
$ cd glfw-3.3.2/
$ mkdir build
$ cd build
$ export MACOSX_DEPLOYMENT_TARGET=10.14
$ cmake -D CMAKE_BUILD_TYPE=Release -D GLFW_NATIVE_API=1 -D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" -D BUILD_SHARED_LIBS=ON -D CMAKE_C_COMPILER=clang ../
$ make
$ ls -l src/libglfw*
@vaiorabbit
vaiorabbit / rmath3d_fiddle.rb
Created August 17, 2013 15:23
Ruby2.0標準ライブラリ・FiddleでDLLの関数を呼ぶテスト libRMath3D.dylib (https://github.com/vaiorabbit/rmath3d) の RVec4SetElements をRubyから呼ぶところまで。 ruby-ffi で似たことをやったときの記録→ http://gist.github.com/vaiorabbit/6048201
# Ref.: http://doc.ruby-lang.org/ja/2.0.0/library/fiddle=2fimport.html
require 'fiddle'
require 'fiddle/import'
module RMath3D
extend Fiddle::Importer
dlload Fiddle.dlopen( 'libRMath3D.dylib' )
RVec4 = struct ['double x', 'double y', 'double z', 'double w']
@vaiorabbit
vaiorabbit / gl.rb
Created August 20, 2013 14:22
Fiddle を使って OpenGL の DLL (libGL.dylib) から関数をいくつかインポート
# -*- coding: utf-8 -*-
require 'fiddle'
module GL
GL_COLOR_BUFFER_BIT = 0x00004000
GL_PROJECTION = 0x1701
GL_MODELVIEW = 0x1700
GL_TRIANGLES = 0x0004
GL_FUNCTIONS_MAP = {}
@vaiorabbit
vaiorabbit / generate_enum.rb
Last active December 21, 2015 15:49
gl.xml (*) から enum を抽出して Ruby 向けに整形&出力するテスト (*) https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/gl.xml
# (Execution example)
# $ ruby generate_enum.rb > glenum.rb [RETURN]
# $ head glenum.rb [RETURN]
# module OpenGL
# GL_DEPTH_BUFFER_BIT = 0x00000100
# GL_STENCIL_BUFFER_BIT = 0x00000400
# GL_COLOR_BUFFER_BIT = 0x00004000
# GL_FALSE = 0
# GL_TRUE = 1
# GL_POINTS = 0x0000
@vaiorabbit
vaiorabbit / extract_type.rb
Last active December 21, 2015 16:19
gl.xml の型情報(<types>)から typedef 名 → Cの型名 の対応関係を作るスクリプト (*) https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/gl.xml
# $ ruby extract_type.rb
# GLenum => unsigned int
# GLboolean => unsigned char
# GLbitfield => unsigned int
# GLvoid => void
# GLbyte => signed char
# GLshort => short
# GLint => int
# GLclampx => int
# GLubyte => unsigned char
@vaiorabbit
vaiorabbit / opengl_command.rb
Created August 26, 2013 15:21
OpenGL標準API(4.4 まで)のRuby用ラッパーコードを自動生成した例
# [NOTICE] Automatically generated file
module OpenGL
GL_FUNCTIONS_ARGS_MAP[:glCullFace] = [Fiddle::TYPE_INT]
GL_FUNCTIONS_RETVAL_MAP[:glCullFace] = Fiddle::TYPE_VOID
def glCullFace(_mode_)
f = OpenGL::get_command(:glCullFace)
f.call(_mode_)
end
GL_FUNCTIONS_ARGS_MAP[:glFrontFace] = [Fiddle::TYPE_INT]