OpenGLによる線、点、面の描写(2D)
2013年7月8日:OpenGL
2Dで線、点、面の描写をOpenGLで行ってみます。 はじめに初期設定ですが、前に紹介して記事を参考にしてください。
前のプログラムのOnDrawを以下のように書き換えます。
void CTestView::OnDraw(CDC* pDC) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: この場所にネイティブ データ用の描画コードを追加します。 ::wglMakeCurrent(pDC->GetSafeHdc(),m_hGLRC); ::glClearColor(0.0f,0.0f,0.25f,1.0f); ::glClear(GL_COLOR_BUFFER_BIT); //色の設定 ::glColor3f(1.0f,1.0f,0.0f); //点の描写 ::glPointSize(5.0f); ::glBegin(GL_POINTS); ::glVertex2f(0.0f,0.0f); ::glEnd(); //線の描写 ::glBegin(GL_LINES); ::glVertex2f(-0.5f,-0.5f); ::glVertex2f(0.5f,-0.5f); ::glEnd(); //面の描写 ::glBegin(GL_POLYGON); ::glVertex2f(-0.5f,0.5f); ::glVertex2f(0.5f,0.5f); ::glVertex2d(0.0f,1.0f); ::glEnd(); ::wglMakeCurrent(NULL,NULL); }
実行すると以下のように表示されます。
OpenGLで、線などを描写する際は「glBegin」と「glEnd」で囲みます。
そして、glBeginの部分で描写するものを設定します。今回設定したものは
- GL_POINTS:点
- GL_LINES:線
- GL_POLYGON:面
です。他にも
- GL_LINE_STRIP:連続した線
- GL_LINE_LOOP:連続してかつループした線
- GL_TRIANGLES:三角形
- GL_TRIANGLE_STRIP:連続した三角形
などがあります。 次に、glBeginとglEndで囲んだ場所に点の情報を
::glVertex2f(X,Y);
で記述していきます。たとえば、線なら二点を
::glBegin(GL_LINES);
::glVertex2f(0.0f,0.0f);
::glVertex2f(1.0f,0.0f);
::glEnd();
のように設定します。 やってみればわかると思いますが、OpenGLでは初期設定さえ終えれば簡単に図形の描写ができるようになります。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー