기본창을 만들어 봤으니, 이제 기본 도형(삼각형)을 그려보자.
삼각형을 그리기 위해서는 일단 삼각형을 이루는 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();
}
}
}
다음은 위 코드를 실행시킨 결과물..



Prev
Rss Feed