Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom
Bar]
[Photo of the
Author]
Miguel Angel Sepúlveda
���� �Ұ�: 1993�⿡ �����ϴ���(�̱�)�� �����ߴ�. ������, �̽���, �Ϻ�, �̱����� ���п��� �о߿��� ���Ѵ�. Ŀ�� 0.98����� �������� �˰� �Ǿ���. (ù���� ���ߴ�) ����� ���� �ð��� ������ ��Ŀ���� ���������� ���Ѵ�.

���ڿ��� �����ϱ�

���±�

�ʱ�ȭ

�̺�Ʈ ó��

���ϸ��̼� ����



GLUT Ȩ������
GLUT����
GLUT-3.6 �ҽ��ڵ�

â�� �ִϸ��̼�

���: --




���� ��

OpenGL�� ������� ������ ������ý��ۿ� �������� �ִ� ��ɵ��� �Ծ࿡ �����ִ�. �� ���п� ���� �̽ļ��� �����ϸ鼭 ȿ������ 2����/3���� ������ ���̺귯���� ���� �� �־���. â�� ���� �ٷ�� ���� ������ ������ �ý��ۿ� �޷� �ִ�. OpenGL���̺귯���� �߰����� �ΰ����̺귯���� ���Ͽ� ������ ������ �ý��۰� ����� �����Ѵ�. ���� ���ڸ� GLX�ΰ����̺귯���� OpenGL�� X������ý��ۻ����� ��ȣ������ ����Ѵ�.

OpenGL ��ƿ��Ƽ ��Ŷ(GLUT)�� OpenGL���α׷��� ������ý��۰��� ���������� �۵��ϵ��� �����ϰ� ���ִ� �ΰ����̺귯���� ANSI C���� FORTRAN�� �����Ѵ�. Mark J.Kilgard���� ���� �ۼ��Ǿ����� OpenGL�Ծ࿡ �ִ� ū ������ ������ �ش�. GLUT������ ���п� ���ϴ� �÷����� ���������� �۵��ϴ� ����� ������ �ý��� �������̽��� ����� �� �ִ�. GLUT�� ����ϴ� OpenGL�������α׷��� �ҽ��ڵ带 ���� �ٲ� �ʿ䵵 ���� �÷��� �̽��� ���� �����ϴ�. GLUT�� OpenGL�ڵ带 �����ϰ� ����� �� �Ӹ� �ƴ϶� OpenGL���̺귯���� ������ �ش�.

GLUT�� ��������� �۰� ���� ����.�ſ� ���谡 �ߵǾ� ������ ���� ���ڰ� �̹� ȯ������ ���ù����� �ۼ��� �ξ���. �׷��Ƿ� ��������Ŀ������ �Ǵٽ� �ٷ� �ʿ䰡 ���ٰ� �����Ѵ�.Mark�� �������� �� �о�� �ٶ���. GLUT�� ������ �ſ� �� �Ǿ� �ִµ� �� �� ���翡�� GLUT�� �ٷ�°�? ���ڴ� OpenGL����� �Բ� �����鼭 GLUT���̺귯���� ���캸�� �ܰ�ܰ躰�� �� ���� ���� ���� �������� ���� �����غ��鼭 �Ƿ��� �ñ⸦ �ٶ���. ���� OpenGL�� ȯ������ ���������� ����ϴ� ���α׷��ӵ鿡�� ������ �ְ� �̷� ���α׷��ӵ��� ���� �����µ� ������ �Ǿ����� �Ѵ�. � ���������� �������� Mark�� ������ ���� ���������� ������ �ִ� ���� ����.

GLUT API�� OpenGL�� ���������� ���±������̴�. �� �������α׷��� ����Ǵ� ���� GLUT�� ���� ���º����� ������ �ִٴ� ���� �ǹ��Ѵ�. GLUT�� �ʱ���´� ��κ��� �������α׷��� �˸��� ���� ������ �ִ�. �׷��� ����ڰ� ���ϴ� ���º����� ���� ������ ���� �ִ�. GLUT�� �Լ����� ���º������� ���� ���� ���ϴ� �ൿ�� �ణ �޶�����. GLUT�Լ��� �����ϸ� ��� �Ķ���͵��� ���Ѵ�. �����ִ� �����ʹ� ������ ���� GLUT�� �Լ��� ���޵Ǵ� �����ʹ� ���ڿ��� ��Ȯ���� �۲��� �ٷ�� ���� �����ͻ��̴�.

GLUT�� �Լ����� �� ��ɿ� ���� ��� ���� API��� ����������.:

  • �ʱ�ȭ 
  • �̺�Ʈ ó������ 
  • ������ ���� 
  • �������� ���� 
  • �޴� ���� 
  • �ݹ��Լ� ��� 
  • ���� �ε��� �÷��� ���� 
  • ���� ���� 
  • �۲� ������ 
  • �������� ���� ������ 
�� �ۿ����� ������ OpenGL���α׷��� �����ϴµ� �ʿ��� �ʱ�ȭ, �̺�Ʈ ó��, â������ ���õ� ��� �Լ����� ���캸��� ����.

�ʱ�ȭ

GLUT�� ����ϴ� ��� OpenGL���α׷��� �ݵ�� GLUT ���¸ӽſ� ���Ͽ� �ʱ�ȭ���Ѿ� �Ѵ�. glut�ʱ�ȭ�Լ��� glutInit-�� �����ϴ� �̸��� ������ �ִ�. �ֿ� �ʱ�ȭ��ƾ�� glutInit�̴�.:
���� 
  glutInit(int **argcp, char **argv); 
  argcp �� main�Լ��� ������ �� ���� argc������ ����Ű�� �������̴�. glutInit�Լ��� GLUT���̺귯���� ���� ������ ������ɾ� ���ÿɼ��� ��󳻱� ������ ��ȯ���� ���� argcp�� ����Ű�� ���� ����ȴ�. ���� ��� X������ý��� ȯ���̶�� X�����쿡 ������ �ɼǸ��� GLUTâ�� ������ ��ģ��.
  argv �� main�Լ��� ���Ǵ� ������ �� ���� ���α׷��� argv�����̴�.

glutInit�� GLUT�� ���º����� �ʱ�ȭ�ϴ� ���Ұ� ������ý����� ������ ó���ϴ� ������ �Ѵ�. glutInit���� ���� ���� �� �ִ� ���ɾ ��� �ִµ� �� ��ƾ���� ��� glutInit-�� ���۵Ǵ� �̸��� ������. �� ��ƾ���� �⺻ â�� �ʱ� ���·� �����ϴµ� ���ȴ�. ���� ����.: 
���� 
  glutInitWindowPosition(int x, int **y); 
  glutInitWindowSize(int width, int **height); 
  x,y  = â�� ���� ���������� ȭ����ġ�� �ȼ������� ǥ�� 
  width,height  â ũ�⸦ �ȼ������� ��Ÿ�� �� 

��� OpenGL���α׷����� �ݵ�� �����Ǵ� �ʱ�ȭ��ƾ�� glutInitDisplayMode()�� �ִ�.: 
���� 
  glutInitDisplayMode(unsigned int mode); 
  mode �� ���÷��� ��带 ��Ÿ���µ� �� ������ GLUT�� ���÷��� ��带 ��Ÿ���� ��Ʈ����ũ���� OR������ ���Ѵ�. ������ ��Ʈ����ũ ���� ������ ����.: 
GLUT_RGBA  RGBA����� â�� �����Ѵ�. GLUT_RGBA�� GLUT_INDEX�� �������� �ʴ´ٸ� �� ���� �⺻�������� �ȴ�. 
GLUT_RGB  GLUT_RGBA�� �����ϴ�. 
GLUT_INDEX  �ε����� ���� ���� �����ϴ� â��带 �����Ѵ�. GLUT_RGBA���� ���� ������.. 
GLUT_SINGLE  ���Ϲ��۸� ���� â�� �����Ѵ�. �̰��� �⺻�����̴�. 
GLUT_DOUBLE  ���߹��۸� ���� â�� �����Ѵ�. �� ���� GLUT_SINGLE���� ���� ������. 
GLUT_ACCUM  �������۸� ���� â�� �����Ѵ�. 
GLUT_ALPHA  ������ۿ� ���İ��� ���� â�� �����Ѵ�. 
GLUT_DEPTH  ���̹��۸� ���� â�� �����Ѵ�. 
GLUT_STENCIL  ���ǹ���(stencil buffer)�� ���� â�� �����Ѵ�.
GLUT_MULTISAMPLE  ���߸��ø�(multismapling)�� �����ϴ� â�� �����Ѵ�.
GLUT_STEREO ��üâ(stereo window)�� �����Ѵ�. 
GLUT_LUMINANCE �ֵ��� ���� ������� �ٷ�� ��üâ�� �����Ѵ�.
���⿡ ������ ��� Ư¡���� ���� �������� �������� ����. ���� �ð��ȿ� �׷��� �͵鿡 ���ؼ��� �̾߱⸦ �ϰ� �� ���̴�. ���� ��� ���� ���캸��. ���� �ϳ��� ������ ������ ���ø����̼��� ����� ���� ������ �ʱ�ȭ�� ���캸��.: 

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* â�� ��ġ�� ũ�� ���� */ 
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ���÷��̸������ ����:  
   Single buffer & RGBA color */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); 

/* GLUT������ �ʱ�ȭ */ 
glutInit(&argcp, argv);  

.....�ڵ� ���� 

}; 

�ι�°�� �ִϸ��̼� ���α׷��� ���� �ʱ�ȭ�κ��̴�.: 

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* â�� ũ��� ��ġ ���� */ 
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ���÷��� ��� ���� ����: 
   ���߹��۸� ������ ������ RGBA ���� ���� */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 

/* GLUT ���¸� �ʱ�ȭ�Ѵ�. */ 
glutInit(&argcp, argv);  

....���� ���� 

}; 

�� �� ������ ���ϸ鼭 ��� GLUT�� �������. ���� ū �������� �ι�° ������ ���߹��۷� �ʱ�ȭ�Ǿ��ٴ� ���̴�. �� ����� �ִϸ��̼�ó���� �̻����̸� �ִϸ��̼��� ������ ���� �������� �ٲ� ��Ÿ���� �����Ÿ� ȿ���� �����ش�.

�̺�Ʈ ó��

�տ��� ���ߵ��� GLUT�� ���¸� �ٷ�� ���̺귯���̴�. ���ݺ��� �̺�Ʈ���� �ٷ�� �κ��� �ۼ��� ����. �̰��� �ᱹ �����ϰ� �ʱ�ȭ��Ų ���� ����Ǵ� ���ѷ����� Ÿ�̸Ӱ� �ִٴ� ���̴�. �̿� ���� �ʱ�ȭ�ϴ� ���� GLUT�� ����� ��� �̺�Ʈ���� �ϳ��ϳ��� ��� ó���Ѵٴ� ���̴�. ���콺��ư Ŭ��, â �ݱ�, â ���ٲ�, Ŀ�� �̵�, Ű���� ������, �׸��� "�ƹ��� �Էµ� ���� ����"�� ���� �̺�Ʈ�鿡 ���� ������ �ൿ�� ���� �� �ִ�. �̿��� �� �ִ� �̺�Ʈ���� �� �̺�Ʈ���� �ݵ�� ����ڿ� ���� �ش� �̺�Ʈ�� �߻��ߴ����� Ȯ���غ��� �ֱ����� GLUT�̺�Ʈ ó�� ������ Ÿ�̸ӿ� ���� GLUT���º����� �ϳ��� ��Ͻ��Ѿ� �Ѵ�.
 
���� ��� "���콺��ư�� ������" �̺�Ʈ�� GLUT�� ��� �߻��ϴ��� ��������� �̺�Ʈ�� ����� �� �ִ�. �̺�Ʈ�� �ݹ��� ��ƾ���� ����Ѵ�.. �� �Լ��� ��� glut[Ư���̺�Ʈ]Func��� ��Ģ�� ���� �̸��� ������ ���콺 Ŭ���� ���� �̺�Ʈó���� glutMouseFunc�� �� ���̴�. �ݹ����� GLUT�������� � Ư���� �̺�Ʈ�� �߻��ϸ� ������ ����������Լ��� �����ϵ��� ���ش�. �׷��� ���� ���콺�� ���ʹ�ư�� ���������� ����� ��ƾ�� MyMouse�� �Ѵٸ�(���� �����ʹ�ư�� �����ϴ�.) �� ��� main()�Լ����� glutInit()������ "glutMouseFunc(MyMouse);"�� ���������ν� �ڽ��� �ݹ��Լ��� ����� �� �ִ�.

GLUT���� ó���� �� �ִ� �ݹ��Լ��� �̺�Ʈ���� �ڿ� ���캸��� ����. ���� �߿��� ���� �츮���� ���α׷����� �߿��� �̺�Ʈ���� ��ϵ� ���� glutMainLoop()��� GLUT�� �̺�Ʈó����ƾ�� �ݵ�� ȣ���ؾ� �Ѵٴ� ���̴�. �� �Լ��� �ѹ� �����ϸ� ���α׷��� �⺻������ ���ѷ������·� ����. �� �Լ��� �̹� ����� �ݹ��Լ��� �ʿ信 ���� ȣ���Ѵ�. ���� ��� OpenGL���α׷��� glutMainLoop()���ɹ����� ������. �ִϸ��̼��� ��츦 ���캸��.

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* GLUT ���� �ʱ�ȭ*/ 
glutInit(&argcp, argv);  
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* â�� ����. */ 
glutCreateWindow("My OpenGL Application"); 

/* ���÷��� ��带 �����Ѵ�.:  
   ���߹��� & RGBA ���� */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 
 

/* �ݹ��Լ� ��� */ 
..... 

/* �̺�Ʈ ó������ ���� */ 
glutMainLoop(); 
}; 

�տ��� �������� ���� ��� Ư���� �ڵ尡 ���� �� ���̴�. glutCreateWindow(char **name)�� GLUT�� �����츦 �����ϴ� ��ƾ�� �ϳ��̴�. �� �Լ��� �̸��� ô���� � ���� �ϴ��� �ٷ� ��Ȯ�ϰ� �� �� �ִ�. �̷��� �Լ��̸��� OpenGL�� GLUT�� ����ö���߿��� ���ڰ� ���������� �����ϴ� �κ��̴�. �� �Լ��� ������ OpenGL�������α׷����� ����� â�� ������� ������ý��ۿ��� �����ϵ��� ������ �����ϴ� ������ ����Ѵ�. �� â�� �̸��� ���ڿ�"name"���� ���޵ȴ�. X������ ȯ�濡�� �� �̸��� â�� ���� ���� �𼭸��� ��������. GLUT�� ����ϴ� â�� �����κ��� ���÷� Ȯ���ؾ��� �پ��� ���� �Լ��� ������ �ִ�. ���ݱ������� �̾߱��� ���̸� ����ϴ�. ���� �ٽ� glutInit()�Լ� �ڿ� �� �� �ִ� �ʱ�ȭ��ƾ���� �ٽ� ��ġ��Ű�� �ȴ�.

�������� ���ư���..���ڴ� �ִϸ��̼����α׷����� �ſ� �⺻���� �ΰ��� �ݹ����Լ��� ����ϴ� ����� �Ұ��ұ� �Ѵ�. glutDisplayFunc�� ����â�� ������ �����ִ� ����� �����ϰ� ������, glutIdleFunc�� �ƹ��� �Է��� ���� �� �����ϴ� ����� �����ϰ� �ִ�. �� �� ����Լ��� ��� void *(void)���� �Լ��̾�� �Ѵ�. ���� �ִϸ��̼����α׷��� �߰��� �ΰ��� �ݹ��Լ��� �̾߱� �ϸ� void MyDisplay(void)�� ������ �츮�� ���ϴ� ȭ���� â�� �׷��ִ� OpenGL���ɾ���� ȣ���ϴ� ���� ����ϸ� void MyIdle(void)�� ������� �Է��� ������ ��� ȣ��Ǿ�����. GLUT�� ���ѷ���(glutMainLoop())�Ͽ��� �̺�Ʈó���� ��� �̷������ ���� �ƹ��� ���ο� �̺�Ʈ�� �߻����� �ʴ´ٸ� �׶��� MyIdle�Լ��� ����Ѵ�. �� �ִϸ��̼� ���α׷��� �ƹ��� �Է��� �������� �ݹ��Լ��� ��Ͻ����־�� �ϴ°�? ���� ������� �Է°��� ������� ����ؼ� �� �������� �׸��� �ٲ�׷��־�� �ϹǷ� OpenGL���α׷��� ����ǰ� �ִ� ���� Mydisplay()���� �׸��� ���� �� �������� �����ִ� ����� ���ִ� �Լ�(�����ִ� ����(idle) �ݹ��Լ�)�� �ʿ��� ���̴�.

�ִϸ��̼� ��

���� �ϳ��� ����ϰ� �� �ִϸ��̼��ڵ带 ���캸��.: 
#include <GL/glut.h> 

void MyIdle(void){ 
/* ���� �������� ���� �������� ���·� ������ �ִºκ�*/ 
.... 
}; 

void MyDisplay(void){ 
/* �����ӿ� ���� �׸��� �׸��� OpenGL���ɾ���� ����. */ 
.... 
/* �������� �� �׷��� ���� ���۸� ��ü�Ѵ�. */ 
glutSwapBuffers(); 
}; 

void main(int argcp, char **argv){ 

/* GLUT���¸� �ʱ�ȭ �Ѵ�. */ 
glutInit(&argcp, argv);  
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* â�� ����. */ 
glutCreateWindow("My OpenGL Application"); 

/* ���÷��̸�带 �����Ѵ�.:  
   ���߹��� & RGBA���� */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 

/* �ݹ��Լ����� ����Ѵ�. */ 
glutDisplayFunc(MyDisplay) 
glutIdleFunc(MyIdle) 

/* �̺�Ʈ ó�������� �����Ѵ� */ 
glutMainLoop(); 
}; 

���ڴ� MyDisplay�ڿ� ���ο� GLUT�Լ��� glutSwapBuffers()�� �߰��Ͽ���. �� ������ �ִϸ��̼ǿ� ����� �����ϴ�. �̹� ���α׷������� �ϳ��� �������� �ϳ��� ������ ���߹��۸���� â�� ����ϰ� �ִ�. �� ��� OpenGL�� �׸��� ���ɾ���� �׻� ������ ���ۿ� �������� �����Ѵ�. glutSwapBuffers������ ȣ��Ǹ� ������ �� �׷��� ������ �ִ� ���۰� �������� �Ǵ� ���۱�ȯ�� �̷������. �� ����� �ִϸ��̼ǿ��� ������� ���� �����Ӵ����� �׷����� ���� ��ġä�� ���ϵ��� �ϱ� ������ ��ǻ�;ִϸ��̼Ǻо߿��� �Ϲ����� ����̴�.

OpenGL�������α׷������� �����ϱ� ���� ����� �������� ���캸�Ҵ�. �� �Ѱ��� ��Ʈ�� ���� �ִٸ� ������ �׸��� �׷����� MyDisplay���� OpenGL���ɾ���̴�...�̰��� ������ ���� �̾߱��̴� ;-)

GLUT���� ����ȸ������ GLUT���� ����� �� �ִ� â �����κ��� �Լ����� ���� ���� �ٷﺸ��� �ϰڴ�. �׸��� ������ â�� �������� ����� ��� �׸��°� �ϴ� ����� �̽ļ� �� �޴��� ����ϴ� ����� ���캸�ڴ�. �� ���� ������ �ʿ��ϴٸ�:




���� : ����ȣ


�� ������Ʈ�� Miguel Angel Sepulveda���� ���� �����˴ϴ�.
© Emre Demiralp 1998
LinuxFocus 1998