以上で筆者の全ての疑問に対する技術要素、具体的な実装方法も明らかになりました。これで準備万端かと思いきや、ゲームアプリを楽しむ上で、実は検討すべき項目がまだ残っています。それは、描画速度です。
ゲームアプリの場合、ディスプレイに映像をスムーズに表示させなければならず、ビデオカードの性能を最大限に生かす必要があります。X Window Systemにおいて、ビデオカードを使って描画を高速に行うには、DRI(Direct Rendering Infrastructure)と呼ばれる仕組みを利用する必要があります。Linuxにおいて、OpenGLと呼ばれるグラフィックスのためのAPIが存在し、このOpenGLのオープンソース実装として、Mesa(メサ)と呼ばれるライブラリがあり、3Dグラフィックスを多用するゲームアプリで利用されています。このMesaは、DRIのフレームワーク上で描画速度の向上を行うことができるようになっており、ゲームアプリ側は、直接ビデオカードのグラフィックアクセラレータにアクセスすることができるようになります。X Window SystemとDRIの関係については、以下のURLにデータや制御の流れ図があります。
DRIを使う具体的な方法は、CentOS 7.xの場合、/dev/dri/cardXなどのデバイスファイルを利用します。今回、DockerコンテナでホストOSが稼働する物理マシンのビデオカードでDRIを使ってアクセスする必要がありますので、Dockerコンテナの起動時に、ホストOSの/dev/driをコンテナで共有するようにオプションを付与する必要があります。
# docker run \ ... --device=/dev/dri:/dev/dri \ ... ubuntu:mygame01 /bin/bash
次回はいよいよ3DグラフィックスのゲームアプリをDockerコンテナで稼働させてみます。
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国HPからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本HPにて、Linux、FreeBSD、Hadoopなどのサーバー基盤のプリセールスSE、文書執筆を担当。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。
古賀氏の最新記事が読めるブログはこちら。
第20回 Dockerで3Dゲームを動かす――準備編
第17回 Dockerで植物が育つ様子を自動録画してみよう――その1
第18回 Dockerで植物が育つ様子を自動録画してみよう――その2Copyright © ITmedia, Inc. All Rights Reserved.