言語別コンピュータグラフィックライブラリ・APIまとめ

現在コンピュータグラフィックスプログラミング向けの、様々なライブラリ・APIが世に出回っています。今回は著名な言語で提供されているグラフィックライブラリの一部を、おすすめの利用方法などを踏まえてまとめていきたい思います。

C++

LLGL(Low Level Graphics Library)

Github:https://github.com/LukasBanana/LLGL

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#llgl-low-level-graphics-library

幅広い範囲のAPIに対応。もれなくシェーダーも利用でき、最も網羅的に使えます。その代わり知識と利用難易度は高いです。

The Forge

Github:https://github.com/ConfettiFX/The-Forge

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#the-forge

ゲームエンジン向けに作られたグラフィックスフレームワークです。OpenGLには対応していないので注意が必要です。

Diligent Engine

Github:https://github.com/DiligentGraphics/DiligentEngine

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#diligent-engine

低依存・短時間ビルド・軽量で、APIとシェーダも各プラットフォームで共通です。プラットフォーム別に覚えることがほぼない。Metal環境では利用できません。

bgfx

Github:https://github.com/DiligentGraphics/DiligentEngine

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#bgfx

各プラットフォームでの互換性が高い。その影響でシェーダやテッセレーション等の一部機能に制約がある。

oryol / sokol_gfx

Github:

https://github.com/floooh/oryol

https://github.com/floooh/sokol

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#oryol–sokol_gfx

作者が同一でoryolがC言語向けのシングルヘッドライブラリ、sokol_gfxがC++向けの軽量ライブラリ という違いがあります。C++11未満でも使えるようになっており、組み込み用途での利用を想定されています。とても軽量でありながら大方の機能は備わっています。WebGLにも対応しておりウェブ向けにコンパイルすることもできます。

Methane Kit

Github:https://github.com/egorodet/MethaneKit

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#methane-kit

比較的最近のライブラリで、デスクトップでの利用に特化している。WindowsとMac間での互換性が高いです。

bs::framework

Github:https://github.com/GameFoundry/bsf

参考サイト:https://qiita.com/funatsufumiya/items/98ca9aca0c9f8b608ca1#bsframework

ほぼゲームエンジンといえる代物で規模が他に比べ大きいです。コンピュータグラフィックス以外にも音声再生やファイル読み込みもできる多機能フレームワークです。

C#

SlimDX

Github:https://github.com/SlimDX/slimdx

参考サイト:https://ja.wikipedia.org/wiki/SlimDX

.Net framework下でDirectXプログラミングができるようにしたオープンソースAPIです。高性能なグラフィック表示が可能で、マルチメディアやゲームなどの開発に利用される。

OpenTK

Github:https://github.com/opentk/opentk

参考サイト:https://en.wikipedia.org/wiki/OpenTK

Open Toolkit libraryとも言いOpenGL系の機能が利用できます。ゲーム制作・科学研究・アプリ開発まで幅広く利用ができるように設計されています。OpenTK 4が最新のバージョンで、現在進行形でOpenTK 5が開発されています。

Java

Java 3DJava 2DJava 2D

参考サイト:

https://ja.wikipedia.org/wiki/Java_2D

https://ja.wikipedia.org/wiki/Java_3D

Java用のレンダリングAPIです。2D向けと3D向けの二つがあります。API内ではOpenGLやDirectXが描画処理を担っています。Javaでコンピュータグラフィックスを扱うのなら

Javascript

Three.js( WebGL )

Github:https://github.com/mrdoob/three.js/

参考サイト:https://ja.wikipedia.org/wiki/Three.js

気軽にWebGLの機能を利用できるようにした Javascript ライブラリです。リアルタイムレンダリングが軽量で行えます。親元のWebGLがウェブ標準に統合されているので、基本的にどのブラウザでも利用することができる。

GraphicsJS

ライブラリリンク:https://cdn.anychart.com/js/latest/graphics.min.js

参考サイト:http://www.graphicsjs.org/?lang=ja

広く使われているものの中で比較的新しいライブラリ。ウェブ標準ではないものの幅広いブラウザに対応しており、レガシー級のIE6などでも利用ができます。

Canvas API

Github:https://github.com/KTH/canvas-api

参考サイト:https://developer.mozilla.org/ja/docs/Web/API/Canvas_API

WebGLに似ているがこちらは2D に特化しています。基本的にはこちらを2D用、WebGLを3D用に使い分けることが多いです。

Ruby

Ruby/SDL

Github:https://github.com/ohai/rubysdl

参考サイト:

https://www.kmc.gr.jp/~ohai/rubysdl.html

https://ja.wikipedia.org/wiki/WebGL

SDLというC言語マルチメディアライブラリがあり、それをRuby上で利用できるようにしたライブラリです。Rubyでゲーム制作をしたいときに利用されます。しかし、Ruby自体がCに比べて遅いため高速に動作する必要があるものには不向き(3Dゲーム等)

というよりもRuby自体コンピュータグラフィックスにはあまり向いていないかも

Python

Kivy

Github:https://github.com/kivy/kivy

参考サイト:https://ja.wikipedia.org/wiki/Kivy

コンピュータグラフィックスだけではなく、マルチタスクイベントや入力処理などのアプリケーション開発に用いる機能が網羅されたライブラリです。

PyQtGraph

Girhub:https://github.com/pyqtgraph/pyqtgraph

参考サイト:https://qiita.com/bear_montblanc/items/b39165e79d930b9f0fd1

単体でも動作する3Dグラフィック描画ライブラリです。PyQtで作られたGUIであれば簡単にその中に3Dモデルを表示させることができます。

まとめ

現在コンピュータグラフィックスという分野はプログラミング技術の中でとてもポピュラーなものになりました。流行の言語では必ずと言っていいほどこれらに対応した仕組みやライブラリがあります。プログラミングにも少し慣れてきた人や、これからプログラミングを学んでいきたいという人でも、コンピュータグラフィックスは十数年前に比べればはるかに扱いやすくなっているので、良かったら勉強してみてください。その際に今回の記事がライブラリ探しの助けになったらうれしいです。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA