« 久しぶりの真贋判定 | トップページ | MITOUJTAG 3Dのプログラム解析 »

2024.01.27

MITOUJTAGの3D化をするための古いコードを復活させたい

MITOUJTAGの画面が古臭いイメージなので、3Dの近代的なものにしようと思っています。

全部一から作り直すのも大変なので、2016年に特電に来ていたアルバイトの学生さんが作ってくれた3D化のプログラムが使えないかどうかを試してみました。

この、新規ウィンドウ→3Dビューというのをやると3Dになるはずなのですが・・

3derr

3derr1

そこで、彼が使っていたソースコードを引っ張り出してきてコンパイルしてみると、エラーがでてコンパイルできません。

どうやらfreeglut、glew、glfw、glm、stbというライブラリを使うようです。これらのライブラリが何なのか調べてみると、

  • freeglut・・・ウィンドウの作成、マウス、キーボードの読み取り。古いらしい
  • glew・・・OpenGL拡張をロードしてくれるライブラリ
  • glfw・・・マルチプラットフォームで使えるツールキット
  • glm・・・OpenGLで使う数学ライブラリ
  • stb・・・画像やフォントを扱うライブラリ?

であるようです。

これらのライブラリを探してきてincludeのパスとlibのパスを通し、いざビルド!

3derr2_20240127182501

無事にビルドが通りました。

 

MITOUJTAGに組み込むDLLだけではなく、彼はテストプログラムを用意していてくれたので、起動してみます。

3derr3

うおおおー動いた!

マウスでグリグリ、シャカシャカ、グリグリ、シャカシャカ

3derr4

拡大、回転、移動もできますね。

3derr5

拡大していくとピン番号も出ます。3Dの画像に文字を重ねて表示することもできています。

しかし、いとも簡単にクラッシュします。

3derr6

マウスでピンをクリックすると落ちるようです。

 

さて、このプログラムをデバッグして動くようにするか、それとも、このプログラムは参考程度にして全部自分で作り直すか、難しい選択です。

このプログラムを作った学生さんはOpenGLを使った物理シミュレーションの可視化みたいなことを趣味や研究で日ごろから作っていて、OpenGLに関しては素晴らしい腕前だったのですが、どうしてもコーディングの癖が強すぎるのです。

例えば、関数の引数をconst int &みたいに、const 参照にするという謎なことをしています。

2016年の当時「どうしてこうするの?普通にintで呼び出せばいいんじゃないの?」と聞いたのですが、「便利だから」とか「動作は同じだ」みたいなことを言って聞かないのです。__forceinlineみたいなのをつかいまくるし・・・害はないのですが、癖が強すぎます。

3derr7

あと、変数の宣言でautoを付けたがる。

なぜだ・・?

3derr8

とりあえず、何をやっているのか読み進めてみるとしましょうか。

|

« 久しぶりの真贋判定 | トップページ | MITOUJTAG 3Dのプログラム解析 »

コメント


auto は普通で、特別な事では無いと思います、C++11 以降みんな普通に多用します。

出来るなら、改修する前に、C++ に長けた人数人でコードレビューする事をお勧めします。

投稿: hira | 2024.01.28 16:21

「長けた人」よりも、組み込みのCとか歴史的なこととかを知っててプログラミングできる「長い人」のほうがありがたいですね。
少なくとも、私の分野では。

投稿: なひたふ | 2024.01.28 18:27

コメントを書く



(ウェブ上には掲載しません)




« 久しぶりの真贋判定 | トップページ | MITOUJTAG 3Dのプログラム解析 »