태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.


'Study/Tao.Framework(OpenGL)'에 해당되는 글 3건

  1. 2008/04/14 기본도형(삼각형) 그리기
  2. 2008/04/04 기본 창 생성하기
  3. 2008/04/02 Tao.Framework
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
2008/04/04 00:19

기본 창 생성하기

C#을 이용하여 OpenGL 경험해 보고자 한다면, 먼저 Tao.Framework를 깔아야 한다.
http://www.taoframework.com/ 에 접속하면 다운 받을 수 있다.

Tao가 인스톨 되고 난 후 어떻게 사용하지는 간략하게 살펴보자.
먼저, OpenGL SuperBible 제 3판을 참조했다는 것을 밝힌다.

Visual Studio 2005에서 새 프로젝트 만들기를 누른후 아래와 같이 입력해 본다.

사용자 삽입 이미지

이제 기본 Windows 응용 프로그램이 생성됬을 것이다.

Tao를 사용하기 위해 이제 참조추가를 해보자. 아래 그림과 같이 GL과 GLUT를

참조 추가해 준다.
사용자 삽입 이미지

아래는 참조 추가후 생성한 소스 코드이다.

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

using gl = Tao.OpenGl.Gl;

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

        //장면 랜더링 시작
        private void RenderScene()
        {
            // 현재의 색상을 이용하여 화면을 지운다.
            gl.glClear(gl.GL_COLOR_BUFFER_BIT);

            // 드로잉 명령을 전달한다.
            gl.glFlush();
        }

        //랜더링 상태 설정
        private void SetupRC()
        {
            // 창을 지우는데 사용할 색상을 지정
            // 여기서는 화면을 빨간색으로 지워 본다.
            gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
        }

        // 프로그램 시작
        private void main()
        {
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB); // 싱글버퍼창과 RGB 생상모드를 사용
            Glut.glutCreateWindow("Example1"); // 창을 만드는 Glut 라이브러리 함수를 호출, 이름은 Example1으로 하였다.
            Glut.glutDisplayFunc(RenderScene); // 선언된 RenderScene 함수를 콜백 함수로 만든다.
            SetupRC(); // 랜더링이 이루어지기 전에 필요한 OpenGL 초기화가 진행된다.

            Glut.glutMainLoop(); // Glut 프레임웤을 실행, 화면 출력에 대한 함수 정의
        }
       
    }
}

실행을 시키면 아래와 같이 GL로 드로잉이 가능한 창이 생성된다.

사용자 삽입 이미지

Trackback 0 Comment 0
2008/04/02 21:35

Tao.Framework

난 C++를 사용할 줄 모른다. 그리고 앞으로도 별로 사용해 보고 싶은 생각은 없다.

처음부터 C#을 사용해서 그런지, C#에 비해서 복잡하고, 코드가 지저분해 보인다.

Opencascade를 마구잡이로 한번 경험해 보고, 이제는 OpenIventor를 사용해야 하는

상황이 왔는데... 그 전에 기본기를 닦기 위해서 OpenGL을 사용해 볼까 한다.

시중에 나와 있는 책들은 물론이고, 대부분의 유명한 OpenGL 사용자 포럼에서는

전부 C++기반으로만 되어 있다.

C# 하나만으로도 벅찬데, 어찌 C++까지 공부할수 있으랴.

하여, OpenGL Library 를 C#.Net 에서 사용가능한 Tao.Framework 를 이용해 보고자 한다.

Tao.Framework 의 자세한 사항은
http://www.taoframework.com 에서 확인할 수 있다.

Trackback 0 Comment 0