golangでSDLを使う時のメモ

■ クロスコンパイルが出来ない

SDLはDLLなどのライブラリファイルを使う際にC++などのコンパイラを使います。なので、クロスコンパイルする時にC++のコンパイラがない、あるいは種類が違うなどでクロスコンパイルが出来ません

WindowsはWidndowsのgolangで、LinuxはLinuxのgolangでコンパイルするしかありません


■ ガベージコレクタを使う

JAVAやLLなどガベージコレクタでメモリを管理している言語でゲームを作る時、ゲーム実行時にガベージコレクタを発生させない、ガベージコレクタの実行時間を短縮するために、ゲーム開始直前に任意のタイミングでガベージコレクタを実行出来なければなりません

golangの場合は、golangの設定などを行うruntimeパッケージにてガベージコレクタを任意のタイミングで実行できます

-------

import "runtime"

runtime.GC()

-------

でガベージコレクタを実行する事が出来ます


■ SDLの画面のボインタ


SDLを使う時、GO言語ではポインタをネームスペースを超えて使う事が出来ません


なので、普通のGO言語のゲームでは、画面表示の為のポインタを使うためにネームスペース一つでゲームを実装してます


そこで、他のネームスペースへ、「ポインタのアドレス渡し」でボインタを渡して、向こうでダミーのボインタを作り、ポインタのアドレスをコピーすると普通にSDLの画面のボインタが使えます

SDLの画面のポインタではない他のSDLのシステムなどは普通にimportで使えたはずです





Game at golang.

golangでゲームを作ってます

0コメント

  • 1000 / 1000