■はじめに
以前、OpenGLのライブラリーを用いて、C#でプログラミングしたことあるが、それが、使い勝手のよさで、DirectXの開発ツールを使って、VB.Netでブログミングするようになって、それを使った販促用のシミュレーションプログラムを作ったこともあった。しかし、DirectXはバージョンアップするも、その開発ツールは公開されず、販促用のシミュレーションプログラムも継続されず、筆者自身、3D表示プログラムから、すっかり遠のいてしまった。そして、この間、OpenTKというツールキットで、OpenGLのプログラムが作れるということで、やってみた。
■作成環境
OS:Windows10
言語:Microsoft Visual Studio2022 Visual Basic
パッケージ : OpenTK 3.3.3 / OpenTK.GLControl 3.3.3
= 作成者;The Open Toolkit Team
なお、ターゲットフレームワークを.net5.0にすると、ビルド時、エラーが発生するので、2019のテンプレートで、ターゲットフレームワークを.NET Framework4.7.2で、プログラムを作成している。(2023年3月17日現在)
■参考
以前のOpenGLのライブラリーには、基本的な形のメッシュモデルが用意されていて便利だったが、どうもOpenTKには、それが無いので、自分でルーチンを作らなければならないようだ。なので、その部分は、ネット上の某サイトに公開されているC#のコードを参考に、VB.NETでプログラミングした。
■表示サンプル
テストプログラムなので、雑です。
■図形表示部分のコード
Public Sub DrawShape()
GL.Rotate(45, 0, 1, 0)
GL.Scale(1.0F, 1.0F, 1.0F)
GL.Translate(0F, 0.3F, 0F)
Call DrawCube(0.3, 0.3, 0.3, Color.Lime)
GL.Translate(-0.6F, -0.0F, 0.6F)
Call DrawCube(0.3, 0.3, 0.3, Color.Red)
'
GL.Translate(0F, 0.5F, 0F)
Call DrawBall(0.12, Color.Yellow)
GL.Translate(0.5F, 0F, 0.3F)
Call DrawBall(0.1, Color.Blue)
'
GL.Translate(0.2F, -0.3F, 0F)
Call DrawTaurus(0.3, 0.1, Color.White)
'
GL.Translate(-0.2F, -0.5F, -2.0F)
GL.Rotate(-90, 1, 0, 0)
Call DrawCone(0.2, 0.5, Color.Green)
GL.Translate(0.3F, -0.5F, 0.1F)
Call DrawCylinder(0.2, 0.2, Color.Magenta)
End Sub
■最後に
あくまで、これはテストプログラムで、これから、以前、作成したシミュレーションプログラムのようなものを作りたいと思っている。でも、それには、かなり時間かかかりそうである。