『RustではじめるOpenGL』が商業出版で販売スタート

昨年、技術同人誌のためのイベント「技術書典7」にて頒布した『RustではじめるOpenGL』が、装いも新たに商業出版で販売開始することとなりました!

nextpublishing.jp

電子書籍版はすでにAmazonのKindleストアや、紀伊國屋書店のKinoppyなどで販売しており、紙版の本も2月26日からAmazonで販売されます。

販売しているショップに関しては、こちらのリンクをご確認ください。

紙版の書籍については、プリントオンデマンドによる出版のため、オンラインショップからの注文を受けてから印刷し、すぐに発送するような体制になっています。

書籍の内容

プログラミング言語のRustには、OpenGLの3Dプログラミングに向いている特徴がいくつかあります。

  • C/C++にも負けない処理速度を出せるプログラムで、フレームレートを60 FPSで描画させることができる
  • ガベージコレクションがないので、画面がカクつくことがない
  • モダンな言語なので、新しいライブラリの導入が容易

このような利点から、最近ではRustによるゲーム開発も活発に行われるようになり、「Rust Game Development Working Group」では月次のレポートが発表されたりと、賑わいをみせています。

以前、作成した同人誌版では、OpenGLの最も基本的なところから実装をスタートさせ、徐々に機能を追加していくことで、段階的にステップアップしながら学べるようなスタイルの書籍を目指しました。

f:id:toyamaguchi:20190908095847p:plain:w400
パラメータで3Dオブジェクトを操作する画面

今回の書籍では、同人誌版の分かりづらかったところにイラストを追加したり、説明の改善をしたほかに、新たに第7章でフレームバッファーオブジェクト(FBO)についての記事を加えました。

画面に直接3Dオブジェクトを描画するのではなく、いったんFBOに描画し、そこにGLSLのシェーダーを適用することで、様々なエフェクトをかけることができるようになります。 これによって、表現方法に幅が生まれ、画面の雰囲気が格段に良くなるでしょう。

f:id:toyamaguchi:20200223135120p:plain:w400
通常の描画
f:id:toyamaguchi:20200223135145p:plain:w400
レトロなTV風エフェクトをかけた描画

書籍の目次

書籍のより詳しい目次をここに記します。

  • ギャラリー
  • はじめに
  • 商業出版に寄せて
  • 想定読者
  • 使用するライブラリーとプラットフォーム
  • ソースコードのダウンロード
  • 免責事項

  • 第 1 章 開発環境の準備

  • 第 2 章 SDL

    • 2.1 準備
      • 2.1.1 Cargo.toml の編集
      • 2.1.2 Linux の場合
      • 2.1.3 Windows の場合
    • 2.2 プログラムの作成
      • 2.2.1 ソースコードの全体
      • 2.2.2 初期化
      • 2.2.3 ウィンドウ
      • 2.2.4 キャンバス
      • 2.2.5 イベントループ
    • 2.3 プログラムの完成
  • 第 3 章 OpenGL

    • 3.1 準備
    • 3.2 プログラムの作成
      • 3.2.1 ソースコードの全体
      • 3.2.2 初期化
      • 3.2.3 OpenGL による描画の仕組み
      • 3.2.4 シェーダー
      • 3.2.5 バーテックスアレイオブジェクトとバーテックスバッファーオブジェクト
      • 3.2.6 三角形の描画
  • 第 4 章 Dear ImGui

    • 4.1 準備
    • 4.2 プログラムの作成
      • 4.2.1 初期化
      • 4.2.2 イベント処理
      • 4.2.3 ウィンドウの作成
      • 4.2.4 ウィジェットの生成
    • 4.3 プログラムの完成
    • 4.4 効果的な使い方
  • 第 5 章 3D オブジェクト

    • 5.1 プログラムの作成
    • 5.2 プログラムの完成
  • 第 6 章 テクスチャー

    • 6.1 準備
    • 6.2 プログラムの作成
      • 6.2.1 ソースコードの全体
      • 6.2.2 テクスチャーの準備
      • 6.2.3 頂点座標、法線ベクトル、テクスチャー座標
      • 6.2.4 テクスチャーと照明を追加したシェーダー
      • 6.2.5 ユニフォーム変数
      • 6.2.6 テクスチャーの描画
    • 6.3 プログラムの完成
    • 6.4 光の効果
  • 第 7 章 フレームバッファーオブジェクト

  • おわりに

まとめ

もしRustでOpenGLプログラミングを始めたい方がいらしたら、参考書の一つとして選んでいただけたらと思います!

謝辞

このたびは商業出版するにあたって、声をかけていただいたインプレスR&Dの山城 敬 編集長、イラストレーターのはこしろさん、直接関わることはありませんでしたが、タイトルデザイン、校正、編集に協力してくださった方々に感謝いたします。

特に、はこしろさんには、表紙のわがままを聞いてくださり、苦労をおかけしました。 はこしろさんからいただいた白い箱は、とても気に入っております!

そして、さらにタイトルデザインのデザイナーさんに良いフォントを選んでいただいたおかげで、表紙に魔法がかかったように思いました。ありがとうございました!

f:id:toyamaguchi:20200223150016j:plain:w400
RustではじめるOpenGL