태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2008/04/14 19:06

기본도형(삼각형) 그리기

기본창을 만들어 봤으니, 이제 기본 도형(삼각형)을 그려보자.

삼각형을 그리기 위해서는 일단 삼각형을 이루는 3개의 꼭지점을 지정해 줘야 한다.

gl.glBegin(gl.GL_TRIANGLES);

            gl.glVertex3f(-40.0f,-40.0f,0.0f); // 삼각형의 첫번째 점
            gl.glVertex3f(40.0f, -40.0f, 0.0f);
// 삼각형의 두번째 점
            gl.glVertex3f(0.0f, 40.0f, 0.0f); // 삼각형의 세번째 점

gl.glEnd();

이 부분을 랜더링 하는 부분에 넣어 주기만 하면 된다.

아래는 전체 소스 코드...


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;
using Tao.FreeGlut;

using gl = Tao.OpenGl.Gl;

namespace TaoExample2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            main();
        }

        // 랜더링 시작
        private void RenderScene()
        {
            // 화면 색상 지운다.
            gl.glClear(gl.GL_COLOR_BUFFER_BIT);

            // 드로잉 색상 설정
            gl.glColor3f(1.0f, 0.0f, 0.0f);

            // 현제 드로잉 색상으로 삼각형을 그림
            gl.glBegin(gl.GL_TRIANGLES);

            gl.glVertex3f(-40.0f,-40.0f,0.0f); // 삼각형의 첫번째 점
            gl.glVertex3f(40.0f, -40.0f, 0.0f); // 삼각형의 두번째 점
            gl.glVertex3f(0.0f, 40.0f, 0.0f); // 삼각형의 세번째 점

            gl.glEnd();

            gl.glFlush();
        }

        // 랜더링 상태 설정
        private void SetupRC()
        {
            // 창을 지우는 색상 설정
            gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        }

        //창 크기가 변할때 삼각형의 크기도 같이 변하도록 설정
        private void ChangeSize(int w, int h)
        {
            float ratio;

            //뷰포트 설정
            gl.glViewport(0, 0, w, h); // 전체 꽉찬 화면으로 표현

            //좌표계 초기화
            gl.glMatrixMode(gl.GL_PROJECTION);
            gl.glLoadIdentity();

            //클리핑 영역 설정
            ratio = (float)w / (float)h;
            if (w <= h)
                //left->x축의 최소값, right->x축의 최대값, bottom,top->y축, near,far->z축
                //         left right     bottom       top     near far 
                gl.glOrtho(-100, 100, -100 / ratio, 100 / ratio, 1, -1);
            else
                gl.glOrtho(-100 * ratio, 100 * ratio, -100, 100, 1, -1);

            gl.glMatrixMode(gl.GL_MODELVIEW);

            gl.glLoadIdentity();
        }

        //메인 프로그램 시작
        private void main()
        {
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB);
            Glut.glutCreateWindow("Example2");
            Glut.glutDisplayFunc(RenderScene);
            Glut.glutReshapeFunc(ChangeSize);
            SetupRC();

            Glut.glutMainLoop();
        }
    }
}


다음은 위 코드를 실행시킨 결과물..


사용자 삽입 이미지

Trackback 0 Comment 0