C#2.0時代のゲームプログラミング(9)

.NET Frameworkのpicture boxに描画したいとすれば、このpicture boxのHandleを取得する。Handleの実体はHWNDなので(C#1.0/2.0にはtypedefがないのでIntPtrの実体が何なのかサッパリな上に間違って違うところに代入してしまいそうなのだけれど)、Win32APIのGetDC(HWND)を行なってDCが取得できる。


このあと、wglほにゃららという一連のAPIが必要になる。wglCreateContext,wglMakeCurrent,wglDeleteContextなどである。この“wgl”はWindowsGLの略で、Windows上でOpenGLを使うときに必要なAPIである。


wglCreateContextに対してDCを渡すと、そのDCと関連付けられたHRCというハンドルがもらえる。RCは、(OpenGLの)Rendering Contextの略のようだ。あとは、wglMakeCurrentで、このRendering Contextをactiveにして、ただただOpenGLAPIを呼び出して描画すれば良い。最後にSwapBuffersを呼び出すと、見事PictureBoxに描画される。*1


いいだろう。かくしてpure C#OpenGLが使えるようになった。ここまではWin32でOpenGLを扱うときと同じなのでまったく難しくない。難しいのは、この先だ。(つづく)

*1:このサンプルがわかりやすいだろう。