MITOUJTAGの3D化をするための古いコードを復活させたい
MITOUJTAGの画面が古臭いイメージなので、3Dの近代的なものにしようと思っています。
全部一から作り直すのも大変なので、2016年に特電に来ていたアルバイトの学生さんが作ってくれた3D化のプログラムが使えないかどうかを試してみました。
この、新規ウィンドウ→3Dビューというのをやると3Dになるはずなのですが・・
そこで、彼が使っていたソースコードを引っ張り出してきてコンパイルしてみると、エラーがでてコンパイルできません。
どうやらfreeglut、glew、glfw、glm、stbというライブラリを使うようです。これらのライブラリが何なのか調べてみると、
- freeglut・・・ウィンドウの作成、マウス、キーボードの読み取り。古いらしい
- glew・・・OpenGL拡張をロードしてくれるライブラリ
- glfw・・・マルチプラットフォームで使えるツールキット
- glm・・・OpenGLで使う数学ライブラリ
- stb・・・画像やフォントを扱うライブラリ?
であるようです。
これらのライブラリを探してきてincludeのパスとlibのパスを通し、いざビルド!
無事にビルドが通りました。
MITOUJTAGに組み込むDLLだけではなく、彼はテストプログラムを用意していてくれたので、起動してみます。
うおおおー動いた!
マウスでグリグリ、シャカシャカ、グリグリ、シャカシャカ
拡大、回転、移動もできますね。
拡大していくとピン番号も出ます。3Dの画像に文字を重ねて表示することもできています。
しかし、いとも簡単にクラッシュします。
マウスでピンをクリックすると落ちるようです。
さて、このプログラムをデバッグして動くようにするか、それとも、このプログラムは参考程度にして全部自分で作り直すか、難しい選択です。
このプログラムを作った学生さんはOpenGLを使った物理シミュレーションの可視化みたいなことを趣味や研究で日ごろから作っていて、OpenGLに関しては素晴らしい腕前だったのですが、どうしてもコーディングの癖が強すぎるのです。
例えば、関数の引数をconst int &みたいに、const 参照にするという謎なことをしています。
2016年の当時「どうしてこうするの?普通にintで呼び出せばいいんじゃないの?」と聞いたのですが、「便利だから」とか「動作は同じだ」みたいなことを言って聞かないのです。__forceinlineみたいなのをつかいまくるし・・・害はないのですが、癖が強すぎます。
あと、変数の宣言でautoを付けたがる。
なぜだ・・?
とりあえず、何をやっているのか読み進めてみるとしましょうか。
| 固定リンク
コメント
auto は普通で、特別な事では無いと思います、C++11 以降みんな普通に多用します。
出来るなら、改修する前に、C++ に長けた人数人でコードレビューする事をお勧めします。
投稿: hira | 2024.01.28 16:21
「長けた人」よりも、組み込みのCとか歴史的なこととかを知っててプログラミングできる「長い人」のほうがありがたいですね。
少なくとも、私の分野では。
投稿: なひたふ | 2024.01.28 18:27