ナノVGとは?OpenGLのためのベクターグラフィックス

NanoVGはOpenGL用の、アンチエイリアシング処理された小型の2Dベクトルグラフィックスライブラリです。MinecraftクライアントはLWJGLを通じて、シャープなHUD、メニュー、形状を描画するために使用しています.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • NanoVGは、OpenGL向けにC言語で書かれた、小さなアンチエイリアシング2Dベクトルグラフィックスライブラリです。
  • パスから形状、テキスト、グラデーションを描画し、あらゆるサイズで滑らかなエッジを実現します。
  • Minecraftクライアントは、LWJGLバインディングを通じてこれを利用し、HUDやメニューを描画します。
  • ベクター描画はリサイズ可能なUIで優位ですが、固定アートワークにはビットマップが依然として優れています.

NanoVGは、OpenGL向けの、Cで書かれた、小さなアンチエイリアシングベクトルグラフィックスライブラリです。滑らかなエッジで2D形状、テキスト、グラデントを描画し、コンパクトなAPIから利用できます。Minecraftクライアントでは、LWJGLバインディングを通じてアクセスでき、Javaコードがゲームの上に鮮明なHUDやメニューを描画できます.

どこ Opal 合う

Opalは、ゲーム上に独自のインターフェースを重ねて表示するFabricのModです。ご自身で機能を追加したい場合は、スクリプティングガイドでJavaScriptを使った方法が解説されています

NanoVG が何をするか

NanoVG は OpenGL を通じて GPU 上に 2D ベクターグラフィックスをレンダリングします。パス(線、曲線、長方形、円)で形状を記述し、それらを塗りつぶしたり、輪郭線を引いたりします。ライブラリはアンチエイリアシングを処理するため、ビットマップを拡大したときにブロック状になることなく、あらゆるサイズでエッジが滑らかに保たれます。

意図的にサイズを小さくしています。このライブラリ全体は、焦点を絞った API を備えた単一の C ファイルであり、それがグラフィックスデモや軽量 UI レイヤーに登場する理由の一部です。大規模なエンジンコードではなく。

なぜ Minecraft クライアントがそれを使用するのか

クライアントは、Minecraft の上に独自のインターフェイスを描画します。配列リスト、メニュー、形状インジケーター、カスタム HUD 要素などです。NanoVG は、あらゆる解像度でスケールし、ギザギザに見えないベクター形状とテキストをクリーンに描画する方法を提供します。

レンダリングがパスベースであるため、開発者はプリミティブから丸いパネル、グラデーション、アウトラインを構築できます。これにより、GUI スケールとディスプレイ サイズ全体で一貫した外観を維持できます。

NanoVG と LWJGL

Minecraft とその MOD は JVM 上で実行されますが、NanoVG は C ライブラリです。LWJGL がそのギャップを埋めます。LWJGL は、NanoVG や OpenGL などのネイティブライブラリへの Java バインディングを提供し、Java コードがネイティブ関数を直接呼び出せるようにします.

クライアントはLWJGL NanoVGモジュールに対してリンクし、描画コンテキストを開き、ゲームのレンダーループ内でパスとペイントの呼び出しを行います。ネイティブ側がGPU上で実際のラスター化処理を行います。

NanoVGとビットマップ描画

側面NanoVG(ベクトル)ビットマップテクスチャ
境界どんなサイズでもアンチエイリアススケール時にぼやけたり、エイリアスが発生
図形実行時にパスから構築事前に作成された画像アセット
メモリ軽量、大きなテクスチャなし画像数が増えるにつれて増加
最適UI、形状、動的なテキスト写真、固定アート、アイコン

ベクター描画は、サイズや色が変わるインターフェース要素に最適です。詳細で固定されたアートワークには、ビットマップが依然として優れています。

FAQ