OpenGLでC++を学んでいく
C++を扱うために十年ぶりぐらいにVisualStudioを導入してみました。
ラズパイなんかではコンパイラが最初から入ってたりするので チョロチョロ触ってたのですが、Windowsではかなり久々です。
Web制作系は基本Visual Studio Codeを使っていますが、 コンパイラは付属していないのでC++等のコンパイラが必要なものに対しては VisualStudioで基本的にコーディングしていきます。
私のC++スキル
過去にC++を学んだのですが、DXLibというゲームを作るためのC++ライブラリを扱って ドット絵を駆使してキャラクタークリエイトのシーンだけ作って満足して投げた気がします(笑)
確かまだWeb制作もまともに出来なかった時期だと思いますね。
今思うとよくあのスキルでC++でゲームを作ろうとしたなぁと愚かに思いますが、 あれがあったからこそ今があるのかもしれません。
なにか見ながらじゃないとまともに組むことが出来ないレベルなので、 OpenGLを通してC++をどれだけ扱えるようになるかが楽しみです。
GLFWでOpenGLを入門してみた
OpenGLを扱っていくためのフレームワークとして、GLFWというものがあります。
後はGLEWとかGLMとか必要なインクルードファイルを落としてきてパスを通したりします。
早速パス関連で詰んだ
C++のライブラリを使うためにパスを通すのが全然わからず 無駄に時間を削ってしまって、一度サンプルを動かしてみてどう違うのか調べてみると どうやら最初にプロジェクトを作る際の設定が少しおかしかったようで ライブラリを置いてても何故か認識しないという状況でした。
VisualStudio独特の挙動なんですかね……?
こういった統合開発環境を使って作ると それ独特のやり方を覚えないと色々時間が削られるのがちょっとつらいですね。
ソースコードだけで紐付けたりする場合はディレクトリさえあってればパスは通るはずなんですがね。
でも統合開発環境はそれ以上のメリットがあるので使わざるを得ません。
特にグラフィック関連のプログラミングをする場合は無いと辛いです。
OpenGLの入門はなんとか完了
パスさえ通れば後はこっちのもんだ!って思って OpenGLの登竜門としてウィンドウを出してそこに三角形を描写するという グラフィック処理のHello Worldとも言える処理を書きました。
といっても書き方がわからないので100%写経なんですけども、 画面に三角形を出すだけでめちゃくちゃコードが長いんですよね……
JavaScriptだとライブラリ読み込んで1行の関数で済むコードが200行ぐらいあります。
その中でも7割ぐらいはエラー処理対策なんですよね。
JavaScriptとかWeb制作とかに使うような言語は、 エラーがでてもプログラムは止まらず動いてくれるのですが、 C++等のコンパイルをするようなタイプのプログラミング言語は エラーが発生するとその場でプログラムが停止してしまうことが多いため、エラー対策は必須とも言えます。
Web制作の言語でも最近はエラー対策をきっちりと書かないといけなくなってきましたが、 それでもC++程重要ではない処理なので問題ない場合はエラー処理を書かないこともあります。
C++ではそういったことが省略してしまえば動かなくなってしまう欠陥プログラムなので、 エラー処理はとても重要になるということですね。
CMakeを使えばパスを通す行為は楽になるそう
今回はすでにコンパイルされたバイナリファイルをダウンロードしてきて OpenGLの開発環境を整えました。
しかしCMakeでソースコードからコンパイルしたほうが そういった臭いことに遭遇しなくてすむと聞いたので、 一旦また最初からプロジェクトを立ち上げてCMakeを使ってソースコードをコンパイルしてやってみようと思います。
CMakeについてはまた学びなら記事を書いて使い方をまとめていきたいと思います。
Web系のプログラマもC++を学んでおいたほうが良い
Web制作系の言語ってメモリ管理なんかは気にしなくていいですし、 更に最近の端末のスペックは高いのでメモリ管理はむしろする必要がないという状況でもあります。
ですが、最近は3Dを扱うWeb制作も増えてきましたので いくらスペックの高い端末が基本といえどメモリ管理の知識がない状態で ガリガリと3Dを扱うコードを書いていくと重たい処理のプログラムが出来上がります。
なのでメモリ管理の重要性を知る言語を1つ学んで置いたほうがいいなと思いました。
もちろん、ある程度制作ができるようになってステップアップしたいと思ったときで大丈夫です。
私はシステムエンジニアを冠して活動していますが、どちらかというとプログラマ寄りの人間なので C++とかは扱えないとちょっと恥ずかしいなって感じてきているため、 Webの3Dとかにも活用できそうなOpenGLを通してC++を学んでいこうかなと思います。
1年後はどれぐらいC++が扱えるようになっているか楽しみです。