2DCG/3DCGの描写を行うにあたり、「OpenGL」という言葉を耳にすることがあります。「OpenGLってオープンソースなの?」「どういう場面で使うの?」「DirectXと何が違うの?」といった疑問をお持ちの方もいらっしゃいますよね。 本記事では、OpenGLの概要や優れたポイント、OpenGLが選ばれる場面や、OpenGLの導入方法について解説します。OpenGLについて理解を深めたい方は、ぜひ参考にしてください。
目次
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案
OpenGLとは?
OpenGL(Open Graphics Library)とは、クロノス・グループが策定したハードウェア向けの2DCG/3DCGライブラリで、レンダリングシステムの挙動を定めるグラフィックスAPIの仕様です。SGIという会社のクローズドなグラフィックシステムを改良し、API仕様を公開したものでした。オープン標準化されており、複数のプラットフォーム(ハードウェアとOSの組み合わせ)で動作するのが魅力です。
「ライブラリ」と呼ばれていることから、複数のプログラムを集めたパッケージやソフトウェアのように考えられていますが、OpenGLは「仕様(プログラム上の約束事のようなもの)」であるため、ソースコードを一切持っていません。
●汎用型のグラフィックスライブラリ
OpenGLは、グラフィックスAPIのオープン標準規格として策定されています。様々なハードウェア/OSの組み合わせに対応できるクロスプラットフォーム設計です。ハードウェアやOSに依存しにくいため、汎用型のグラフィックスライブラリといえます。
グラフィックを描画するためにはOSが搭載しているグラフィカルインターフェイス(GUI)に指示を出す必要がありますが、命令方法はOS毎に異なります。しかし、各OSに合わせてプログラムを別途用意するのは難しいです。
GLSLという高レベルシェーディング言語を用いた互換性のあるAPI規格をOpenGLが定めたのです。
2022年時点では、ほとんどのOSがOpenGLに対応しているため、OpenGLを利用することで、どの環境でも同じように描画できます。
●ラスタライザー志向
CGで画像をレンダリングする手法は様々ですが、大まかに「ラスタライズ」「レイトレーシング」「ラジオシティ」に分かれます。それぞれには、以下のような違いがあります。OpenGLは、ラスタライズ方式のレンダリングシステムとして設計されています。
レンダリング手法 | 概要 |
---|---|
ラスタライズ | 図形・物体データをピクセルデータ(ラスタ形式)に変換して画像として生成する伝統的な3DCG技法です。リアルな描写には向いていませんが、非常に高速で生成できます。イラストレーションの分野でも使われています。 |
レイトレーシング | 光(レイ)の光学効果をシミュレートすることで画像を生成するレンダリング手法で、リアルな描写に長けています。 |
ラジオシティ | レイトレーシングとは異なり、光というエネルギーの行方を熱力学的にシミュレートすることで画像を生成するレンダリング手法です。リアリティのある描画が得意であり、静的な画像の生成に用いられることが多いです。 |
ラスタライズ 図形・物体データをピクセルデータ(ラスタ形式)に変換して画像として生成する伝統的な3DCG技法です。リアルな描写には向いていませんが、非常に高速で生成できます。イラストレーションの分野でも使われています。 レイトレーシング 光(レイ)の光学効果をシミュレートすることで画像を生成するレンダリング手法で、リアルな描写に長けています。
ラジオシティ レイトレーシングとは異なり、光というエネルギーの行方を熱力学的にシミュレートすることで画像を生成するレンダリング手法です。リアリティのある描画が得意であり、静的な画像の生成に用いられることが多いです。
ラスタライズについて理解できなくても開発は可能ですが、より詳しく知ることで3DCGの基礎を固めるのに役立ちます。最初のうちはOpenGLに慣れるところから始めて、徐々にレンダリング手法の知識を身に付けていきましょう。
OpenGLの優れたポイント
グラフィックスAPIはOpenGL以外にも存在しますが、OpenGLならではの優れたポイントがあります。OpenGLには、以下4つのメリットがあります。
-
マルチプラットフォームで動作する
-
比較的構造が簡単である
-
書籍や情報が豊富で勉強しやすい
-
連携できるOpenGL系の外部ライブラリが豊富
●マルチプラットフォームで動作する
OpenGLはクロスプラットフォーム設計であるため、システムに依存することなく動作します。Windows、UNIX系OS、Mac OSなど、プラットフォームに合わせたグラフィックスライブラリで開発すると動作に差異が生じることもありますが、OpenGLであれば、どのOSでも問題なく動くというメリットがあります。もちろん、OpenGLを操作するための環境構築はOSに合わせて行いますが、OSごとにプログラムを書き変える必要はありません。OpenGLを使えば開発コストや難易度を大幅に下げることが可能です。
●比較的構造が単純である
OpenGLは、CG技術に用いられるC言語でも扱えるうえ、学び始めの方にとってはOpenGLもややこしく感じるかもしれません。2Dの図形を描写するだけでもそれなりの手数がかかることがあります。しかし、ほかの3Dグラフィックライブラリはさらに複雑なため、相対的にはシンプルな部類に入ります。
CGの基本に忠実で、簡素なコードが書きやすいという特徴もあるため、3DCGの理解が早くなります。3Dグラフィックスについて勉強する際、もしくはC言語でプログラミングをするという場合に、入門として活用するケースもあるぐらいです。
●書籍や情報が豊富で勉強がしやすい
OpenGLは、グラフィックスAPIの中でも3DCGの学習に向いています。OpenGLについて取り扱っている日本語の書籍やWebサイトが多いため、参考にできる情報源がたくさんあります。何らかの技術を学ぼうと思った時、日本での利用者数が少ないグラフィックスAPIなら英語で情報を検索しなければなりませんが、OpenGLは日本語でも調べやすいというメリットがあります。
もちろん、OpenGLは英語での情報も豊富です。書籍を使って勉強する時には、あまりにも情報が古すぎると現在との乖離があるため、できるだけ最新のものを手に取りましょう。
●連携できるOpenGL系の外部ライブラリが豊富
OpenGL系の外部ライブラリの数は豊富で、様々なものと連携ができます。OpenGLから派生したOpenGL ESや、OpenGL ESをJavaScriptへほぼそのまま移植しているWebGLなどもあります。
グラフィックスライブラリの種類
著名なグラフィックスライブラリにはOpenGL(GLSL)、Vulkan、DirectX(HLSL)などがありますが、中でも有名なのは、「OpenGL」と、Microsoftが開発したWindows用グラフィックスAPIである「DirectX」です。
各グラフィックスライブラリには、それぞれ以下のような特徴があります。また、WindowsとmacOS/iOSに関しては、それぞれが独自の規格を持っています。
グラフィックスライブラリ | 概要 |
---|---|
OpenGL(GLSL) | Windows、UNIX系OS、Mac OSなど様々な環境で動作する。 |
Vulkan | OpenGLの後継のような立ち位置で、マルチプラットフォーム対応もしている。高度なチューニングが可能だが機械語寄りなAPI のためハードウェアの知識を要する。 |
DirectX(HLSL) | Microsoftが開発したWindows用グラフィックライブラリ。 |
Metal | macOS/iOS用グラフィックスライブラリ。Apple社は2018年からOpenGLの利用を「非推奨」と表明している が、こちらもVulkanのようなローレベルAPI のためミドルウェア開発者向き。 |
OpenGLが使われる場面は?DirectXと迷った時は?
DirectXかOpenGLで迷った際は、ソフトウェア・アプリケーションを「複数のOSに合わせて展開する」のか、「Windowsだけで展開する」のかといったように、対象のプラットフォームを基準に判断できます。
マルチプラットフォーム展開をするなら「OpenGL」、Windows向けに展開するなら「DirectX」が向いています。より高度な開発を行うのであればVulkanを用いるという手もあります。
一方、Windowsのみで展開する予定であれば、DirectX(Direct3D)を利用するのがおすすめです。macOS/iOS向け規格のMetalもそうですが、DirectXはWindowsに合わせて策定されているため、Windows OSに限っていえばOpenGLよりも高速に動作しやすいメリットがあります。
CG技術を使ったソフトウェアやアプリケーションの開発を外部依頼する予定があれば、「発注ナビ」をぜひご活用ください。「発注ナビ」は、システム開発会社に特化したマッチングサービスで、システム開発に詳しいスタッフが、要望を叶えられる会社を全国5,000社もの開発会社の中から完全無料で見つけられます。
OpenGLの導入方法
具体的にOpenGLを導入方法する方法について解説します。OpenGL本体については、Windows、Linux、macOSなどのOSにはすでにインストールされているため、OpenGLの導入といえば、主にGLFWやFreeGLUTなどの描画をサポートするライブラリ(ツールキット)を導入することを指します。
Visual Studio(Windows環境)とXcode(Mac環境)を用いたOpenGL環境構築の方法について解説します。ご自身の環境に合わせて構築を進めてみてください。
●Visual StudioでOpenGLを使うための環境構築
Windows環境下では、Visual Studioを用いてOpenGLの環境を構築するのが容易です。以下のような非常にシンプルな手順で環境を構築できます。
- Microsoft Visual C++のコンソールアプリケーションを選択して空のプロジェクトファイルを作成
- 上部メニューの「プロジェクト」から「NuGetパッケージの管理」を選択
- 「nupengl」を検索し、「nupengl.core」を選択してインストール
●XcodeでOpenGLを使う環境構築手順
Mac環境下ではXcodeを用いてOpenGLの環境構築を行います。Visual Studioと比較すると手順は多いですが、それほど手間はかかりません。
- Xcodeのファイルから新しくプロジェクトを作成する
- テンプレート選択画面で「OS X」内にある「Application」から「Command Line Tool」を選択
- Sampleから「Build Phases」「Link Binary With Libraries(0 times)」を開く
- 「+」をクリックして「GL」と検索
- 「GLUT.framework」・「OpenGL.framework」を追加する
OpenGLはmacOS/iOSで非推奨と明言されているため、やや知識を要します。Apple公式グラフィックスAPIであるMetalも検討したほうが良いです。OpenGLのサポートをいつまで継続するか不明であるため、macOS環境でOpenGLを用いたアプリケーション開発を行う際には注意が必要です。
OpenGLのバージョンを確認する手順
ほとんどのOSでは、OpenGL単体でバージョンを調べる方法がありません。バージョンを確認するためには、別途ソフトをダウンロードする必要があります。realtech VRがリリースしているフリーソフト「OpenGL Extensions Viewer6」を利用してOpenGLのバージョンを確認する手順について説明します。
この方法は、Windows/Mac OS/androidでOpenGL環境を構築している場合に有効です。Linuxではglxinfoコマンドを実行することでOpenGLについての情報一覧を確認できます。
●手順1.OpenGL Extensions Viewer6をインストール
OpenGL Extensions Viewer6をインストールするところから始めます。realtech VR社のサイトかApp Storeにアクセスして、OSに対応したソフトをインストールします。どちらも無料で入手可能です。
●手順2.起動する
OpenGL Extensions Viewer6を起動できれば、使っているコンピューターのグラフィックスドライバの情報が一覧で表示されます。OpenGL Extensions Viewer6を起動してOpenGLのバージョンを確認してみましょう。以下の手順で確認できます。
- グラフィックスドライバの情報の一覧から「OpenGL」を選択
- 「Version:」という項目を確認する
インストールの手間はかかりますが、簡単にOpenGLのバージョンを確認できます。
OpenGLと関連するライブラリ
OpenGLは単体でも動かせないことはありませんが、OpenGLの動作環境の一部として提供されている関連ライブラリを導入するともっと使いやすくなります。ここでは、一般的に利用されている「GLFW」と「freeGLUT」の概要と役割について解説します。
●GLFW
GLFWはOpenGL APIを介してグラフィックス出力のみを行うアプリケーション向けに、ウィンドウの作成と管理を可能にするライブラリです。キーボード、マウス、ジョイスティックからの入力にアクセスできます。
OpenGL開発を支援するために、FreeGLUTやSDLといったライブラリがありますが、GLFWは、OpenGLに合わせた処理を管理することを前提に設計されているという特徴があります。
●FreeGLUT
GLUTにはいくつかのバグが発見されていますが、すでに保守対象外となっています。そのため、オリジナルGLUTを完全に置き換え、より安定したGLUTを提供するためにリリースされたのがFreeGLUTです。
実際、FreeGLUTはGLUTと異なる拡張要素があるものの、オリジナルから著しく乖離した機能追加はされていません。ただし、macOSでは動作しないというデメリットがあるため、macOSを利用されている方はGLFWを選択することをおすすめします。
OpenGLは歴史のあるグラフィックスAPIです。クロスプラットフォーム設計であり、今でも3Dグラフィックスライブラリの選択肢として名前が挙げられるほどの人気があります。しかし、互換性の維持にこだわるあまりレガシー化しつつあるという指摘もあり、2018年にはmacOS/iOSで非推奨化されるなど逆風が続いていますが、C++やC言語を用いたCGの基礎に忠実であるという利点もあります。
「ゲーム開発をしたい」「高度なレンダリングをしたい」という目的があれば、OpenGLよりも向いているライブラリがあるものの、基礎を固めたいという方であれば、OpenGLに手を出してみてみるのも良いです。どのようなアプリケーションを開発するか、何を勉強するのかに応じて、最適なツールを選択することが大切です。
アプリケーションの開発を外部に依頼したいとお考えであれば、ぜひ「発注ナビ」の利用をご検討ください。発注ナビは、システム開発会社の発注者・受注者向けのマッチングサービスです。発注先を探そうにも、システム開発会社ごとに特性があり、それぞれの得意分野を比較検討して発注先をピックアップするのは、非常に手間がかかります。
「発注ナビ」では、システム開発に詳しいスタッフが、ニーズに合った開発会社を、全国5,000社から厳選してご提案。また、完全無料でのご利用が可能です。
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案