Posted at

sokol (Сокол)


sokol (Сокол) 1 とは


  • C言語で書かれた最小主義のヘッダーオンリーライブラリ2 (https://github.com/floooh/sokol) で以下で構成されてる


    • sokol_gfx 👈今回はこれにしぼります

    • sokol_time

    • sokol_audio

    • sokol_args

    • sokol_app





sokol_gfx


  • 3D API を抽象化したライブラリ

  • 以下に対応している


    • OpenGL (3.3 以降)

    • OpenGL ES 2/3 (WebGL 含む)

    • Metal

    • DirectX 11



  • sokol の中核



sokol_gfx の構成要素その1



  • sg_buffer


    • 頂点またはインデックスバッファ




  • sg_image


    • テクスチャとサンプラ兼用




  • sg_pass


    • レンダーターゲットまたはフレームバッファに相当





sokol_gfx の構成要素その2



  • sg_shader


    • 頂点またはピクセルシェーダ




  • sg_pipeline


    • 上記をまとめた描画設定単位





sokol_gfx 使うと何が良いの


  • 小さい


    • dylib で 100KB 弱 3

    • sokol の先駆者といえる bgfx は 1MB 以上 4



  • Vulkan ライクな検証レイヤーがある


    • 論理エラーの早期発見が容易



  • 独自のデバッガがある



独自のデバッガ #とは


  • 画像貼る



sokol_gfx の問題点


  • 日本語情報皆無


    • ぶっちゃけサンプル見れば使い方はほぼ把握できるとはいえ...



  • できたてなのでプロダクションの実績が薄い


    • Unity 内でのレクチャー教材 5 で使われたりはしてる








  1. ロシア語を英語表記したもので日本では「はやぶさ」を意味する 



  2. 詳しくは https://github.com/nothings/single_file_libs で 



  3. metal-osx-ninja-release でビルドした libsokol_gfx.a は 70KB 



  4. osx64_clang でビルドした libbgfx-shared-libRelease.dylib は 1.3MB 



  5. https://github.com/aras-p/dod-playground