Setup OpenGL 4.5 on Ubuntu 18.04 LTS

 

情報元

本記事は以下のWebサイトをもとにしています

無料で親切な、OpenGLに関する教材です。

learnopengl.com

 

本記事の目標

以下のレポジトリにあるソースコードをcmakeコマンドで一斉コンパイルすることなく、自前でちまちまコンパイルできるようにすること。

つまり、glad, glfwやopenglを導入し、自分が記述したソースコードを自前でコンパイルして実行できるようにすること。

github.com

 

CPUとGPU情報

$ lscpu

ベンダー ID: GenuineIntel
CPU ファミリー: 6
モデル: 60
モデル名: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz

GPU : NVIDIARADEONもない、Intel HD Graphicsを利用

 

対応OpenGLバージョンの確認

OpenGLの場合

lscpuで確認した「CPUファミリー」に表示されている数字は、CPUの世代を表している。

私の場合は6であったので、第6世代インテルCoreプロセッサーの欄を確認した。

www.intel.co.jp

 

2018年4月下旬現在、手持ちのCPUが対応しているOpenGLの最新バージョンは4.5。

一方、OpenGLの公式サイトで発表されているOpenGLの最新バージョンは4.6。

OpenGL - The Industry Standard for High Performance Graphics

 

対応バージョンが最新版でない理由は、OpenGLを管理するKhronosが策定した仕様に対し、GPUメーカーが追従して開発するためと考えられる。

 

Mesaの場合

2018年4月下旬現在、Mesaの最新版は以下のサイトより、18.0.1

Bug fixが含まれているので、これより古ければアップデートを検討

The Mesa 3D Graphics Library

 

 

現在利用中のOpenGL等のバージョン確認

最新版情報を確認したあとは、現在利用しているソフトウェアのバージョンを確認する。

$ glxinfo | grep "version string"

 

server glx version string: 1.4
client glx version string: 1.4
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.0-rc5
OpenGL core profile shading language version string: 4.50
OpenGL version string: 3.0 Mesa 18.0.0-rc5
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.0.0-rc5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

以上から、

  • OpenGL : 4.5
  • Mesa : 18.0.0-rc5

であることがわかる。

OpenGLは4.5で、対応バージョンの中では最新である。

Mesaは18.0.1がリリースされているため、アップデートを行いたいところだが、

$ tar xvzf mesa-18.0.1.tar.gz

$ cd mesa-18.0.1

$ ./configure

 ...

configure: error: --enable-llvm is required when building r300

というエラーを得た。

このエラーはよくわからないので、この記事を見てくれた人でプロがいらっしゃれば対処法を教えてください。

…というわけで、mesaのバージョンはこのままでいく

 

 

OpenGL関連ライブラリのインストール

GLFW

apt利用

sudo apt install libglfw3-dev libglfw3

GLFW - Download

Source packageから最新版をダウンロード&ビルドしても良いが、最新版のリリース日は2016年8月とちょっと古いうえ開発が滞っているため、aptでGLFWの最新版を導入できて楽である。

ビルド

Githubレポジトリからgit cloneしてlatestブランチに変更したあとでビルドしない限り、旨味はない。

GLFW: Compiling GLFW

 

GLAD

Githubレポジトリにいろいろ入っているけれども、無視してOK

github.com

 

以下のサイトにアクセス

http://glad.dav1d.de/

  • Language : C/C++
  • Specification : OpenGL
  • API :  gl -> version 4.5
  • gles 1, 2, 3 : None
  • Profile : Core
  • Extensions : 無視
  • Options : Generate a loader にチェック

を確認し、GENERATEを実行、生成されたZIPファイルをダウンロード.

$ unzip glad.zip

Archive: glad.zip
extracting: src/glad.c
extracting: include/glad/glad.h
extracting: include/KHR/khrplatform.h

src/glad.c は、プロジェクトフォルダと同じ階層に入れる。

includeに含まれているフォルダはフォルダごと /usr/include に入れる。

 

glfw3

GLFW - An OpenGL library

2018/4/27 (Fri) 18:18 "-lglfw3" の問題が出て、忘れていたことに気がつき追記

marina.sys.wakayama-u.ac.jp

 

 

実行

たとえば以下のファイルを実行したいとする

github.com

トップディレクトリのREADME.md曰く、必要なパッケージは以下の通り

g++ cmake git libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev libxinerama-dev libxcursor-dev libxi-dev

現在のディレクトリを

> ~/Document/LearnOpenGL

としたとき、

  1. glad.cをこのLearnOpenGLフォルダに追加
  2. コピーしてきたソースコードの3行目くらいに以下の行を追加

#include "glad.c"

gcc, g++ コンパイル時のオプションは以下の通り

gcc <ファイル名>.c -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

g++ <ファイル名>.cpp -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

 

タイトルがLearnOpenGLの、真っ黒なウィンドウが表示されたら成功です

 

失敗したが自力で対処できた場合、本記事を加筆修正しますので、コメント欄にコメントを残してください