一般社団法人 全国個人事業主支援協会

COLUMN コラム

みなさんこんにちは。

今回も、C#でOpenGLを使う方法について、ご紹介します。

前回でOpenTKとOpenTK.GLControlのインストールが終わりましたので、今回は使い方について、特に初期化部分の説明をします。

 

まず、OpenGLは描画モジュールなので、FormやUserControlなどの描画クラス内で使用することになるかと思います。

そこで、描画クラスのソースコードの先頭にusing宣言を入れます。

 

例:Form.cs

using OpenTK;

using OpenTK.Graphics;

using OpenTK.Graphics.OpenGL;

 

次に、初期化を行います。

このとき、描画クラスのコンストラクタで行わないようにしてください。コンストラクタでOpenTKの関数を呼び出すと、デザイナー画面に切り替えたときにエラーになり、UIのコントロールの配置ができなくなりますので注意ください。

初期化のタイミングとしては、Formの表示直前(Form.Loadedイベントハンドラ)、または表示されたあと(Form.Shownイベントハンドラ)で行うのがよいと思います。

Formクラスをデザイナー画面に切り替え、LoadedまたはShownイベントハンドラに関数を追加し、以下のようにOpenTKの初期化処理を実装してください。

(マウス処理などは、使う必要がなければ省いて構いません)

 

// UIの更新開始

SuspendLayout();

// GLControlのインスタンス作成。GLControlは、.NETFrameworkのUIとOpenGLを橋渡しする役目を持つ(GLUTのような位置づけ)。

glControl = new GLControl();

// サイズを設定。親ウィンドウ(コントロール)と同じサイズに設定。

glControl.Size = new Size(this.Width, this.Height);

// 位置設定。親ウィンドウ(コントロール)の左上に配置。

glControl.Location = new System.Drawing.Point(0, 0);

// 初期化時に一度だけ呼ばれる、ロード処理を行うイベントハンドラを登録。シェーダの作成などを行う。

glControl.Load += new EventHandler(glControl_Load);

// 画面サイズ変更時に呼ばれるイベントハンドラ。

glControl.Resize += new EventHandler(glControl_Resize);

// マウス押下時に呼ばれるイベントハンドラ。

glControl.MouseDown += new System.Windows.Forms.MouseEventHandler(this._3DView_MouseDown);

// マウス移動時に呼ばれるイベントハンドラ。

glControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this._3DView_MouseMove);

// マウス押上時に呼ばれるイベントハンドラ。

glControl.MouseUp += new System.Windows.Forms.MouseEventHandler(this._3DView_MouseUp);

// マウスホイール時に呼ばれるイベントハンドラ。

glControl.MouseWheel += new System.Windows.Forms.MouseEventHandler(this._3DView_MouseWheel);

// Formなどの親ウィンドウにGLControlを追加する

Controls.Add(glControl);

// UIの更新終了

ResumeLayout(false);

 

いかがでしたでしょうか?

次回は、簡単な描画方法について説明します。

 

●参考

C#で3D形状データを表示・操作し、画像を保存する。

The following two tabs change content below.

佐藤 潤一

最新記事 by 佐藤 潤一 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア