��������Ŀ�� 1998�� 11��ȣ: ���� �׷���: SVGAlib �ʺ����̵� Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Jay Link
�۾��� �Ұ�:

���ڿ��� ��������

���� �׷���: SVGAlib �ʺ����̵�

[Ilustration]

�������ý��ۿ��� ������ �׷�����Ű���� ã�� �ֽ��ϱ�? ���� �׷��ٸ� �� �� �ʿ䵵 �����ϴ�. SVGAlib�� ������ �׷��� �������α׷��� ����� ������ ����� X������ �ý����� ��Ȳ�� �κ��� �����ݴϴ�. ���� �������� C���� �⺻���� ���α׷��� �����̶�� SVGAlib������ϼ���.


���ͳ��ͽ��÷ξ�� ���� �̻��ϰ� ���Դϴ�.(�ݽ������� 4.5�̻������ ����ϼ���.)

SVGAlib�� �����ΰ�

SVGAlib�� �������� ���� �������� �׷��� ���̺귯���̴�. �׷����� ������ �����ϴ� ���� �ƴ϶� C���α׷����� ����� Ȯ������ִ� ���̴�.

���� C�� ¥���� �׷��� ���α׷��� ���� ����.

�׷���. �׷��� �׷� ���α׷����� �ܺ� ���̺귯�� �Լ��鿡 �����Ѵ�. C ��ü�δ� ���� �ؽ�Ʈ�� ����� �� �ִ�. ��� �׷��� ���� �Լ����� �ý��ۿ� �������̸� ������ �Ұ����ϰ� �Ǵ� ���� �̶����̴�. �����ϰԵ� �� �ü�踦 ���� ������� �׷��� ��ƾ���� ��� ���� ���۵��� ���� ���� �ٸ� �ý��ۿ��� �������� ������ �ִ�. ���� ��� ó������ DOS�� Windows���� ������� �׷��� �Լ����� ������������ ������� ���̴�.

�������󿡼� C�� �׷��� �Լ����� ¥�� ���ؼ�, �������� �˸´� �ܺ� �Լ����� ����ϴ� ���� �ʿ��ϴ�. SVGAlib�� �׷��� �Լ����� ������ �ϳ��̴�.

���� SVGAlib�� C ���α׷��� ���� ȣ��Ǿ����� ���̳ʸ� C �Լ����̴�.

SVGAlib�� X Windows�ý��۰� ��� �ٸ���?

X ������ �ý���(XFree86)�� ������ �����̴�. �� ������ X���� � ���� ���α׷��� ����ϴ� �͵麸�� �켱������ ���۵ȴ�. �����ٳ� X ������ �翬�� �ý��ۿ� �������̾ (���� ��� X�� �������� �ڿ��� ��� �䱸�� ���� �ִ�.) ����ڰ� ���� �͹̳�(ALT 1-6)�� �̿����� ���ϰ� �Ұ��̴�.

�׷��� SVGAlib�� X �����츦 �����ϴ� ��ó�� ���������� �ٸ����� �ʿ�� ���� �ʴ´�. SVGAlib�� ���� C ���α׷��� ���� ȣ��Ǵ� �ٸ� ��� ���̺귯����(/lib�� /usr/lib)�� ���� ���̳ʸ� C ���̺귯���̴�.�ᱹ SVGAlib�� �ϵ��� �غ� �ʿ����. ���� SVGAlib�� ������ �ν���Ǿ��ִٸ� ������ �������� �� ���������� ���� ���� ���̴�. ��������� SVGAlib�� ������ �����͹̳ο� ������ ��ġ�� �ʰ�, ����ó�� �پ��� ���ø����̼��� ������ �� �ֵ��� ���ش�. �ϳ��� �͹̳ο����� �ؽ�Ʈ�� ����ϰ�, �ٸ� �͹̳ο����� �׷����� �̿��� ���� �ִ�.

����

X ������ �ý����� (�پ��� �÷������� ���Ǿ�������) �ý��ۿ� �������̱⶧���� SVGAlib �� ������� �ͺ��� X ������� ���� ���α׷��� �ξ� �� ����. ���� ���������� SVGAlib�� ����Ѵ�. ���� �߸� ������� SVGAlib �������α׷��� �ܼ��� �̻��ϰ� �������� �ᱹ ������� �ؾ߸� �� ���� �ִ�. �ᱹ SVGALIB�� ������� �׷����� ����� ��� �ΰ��� �ֻܼ󿡼� �̸����� �ٻ� �Դٰ����ϸ� �ȵȴ�. �׷��� ������ ȭ�鿡 �浹�� �Ͼ�� �ٽ� ������� �ؾ��� ���̴�.

SVGAlib�� ���Ȼ� ������ �ִٴ� ���� �������̴�. SVGAlib�� ����ϴ� ���α׷��� setuid�� root�� �Ǿ� ��������� ����� ���� ��ٷ� Ư���� �����ϰ� �ȴ�. ���ȿ� ���ؼ��� �Ű澵 �ʿ䰡 ����.

����ؼ�, �ռ� ����� ���������� �������� �ұ��ϰ� SVGAlib�� �ӵ��� ������ ���̼��� ���� ��Ȳ���� �ŷ����̴�. Ư�� ȭ�鿡 ������� �׷��������� ���� ���� �׷� ���̴�.

������

SVGAlib�� ����ϱ� ����, C ���α׷����� ������ �������Ѿ� �Ѵ�. ���� #include <vga.h>�� �����ϸ� �ȴ�. ���⿡ ���� ���� SVGAlib ���α׷��� ���캸��.: �ٿ�ε�

#include  <stdio.h>
#include  <vga.h>

int main(void) {
   vga_init();
   vga_setmode(5);
   vga_setcolor(4);
   vga_drawpixel(10,10);

   sleep(5);
   vga_setmode(0);
   exit(0);
}

�� ���α׷��� ȭ����� ���� �� ���� �׸� ���̴�. 5�� �Ŀ� �ܼ��� �ؽ�Ʈ ���� �ٲ� ����, ���α׷��� ����ȴ�.

���� ����� ���α׷��� ù ������ vga_init()�� �ָ��� ����. �̰��� root ������ ���¸� �����ϰ� SVGAlib ���̺귯���� �ʱ�ȭ ��Ų��. �ι�° ������ vga_setmode(5)�� ȭ���� 320X200X256�� mode 5�� �����Ѵ�. �� ȭ���� ���ηδ� 320��, ���ηδ� 200���� �ȼ��� ������ 256Į�� �����ϴ� �������·� �����. �̰��� vga_setmode(G320x200x256)�� ������ ����� �Ѵ�. �ٸ� ǥ���鵵 �����ϴ�. ���� ������ vga_setcolor(4)�� �� ������ �������� �����. 0���� 256����, � ���ε� ������ �� �ִ�. �ٸ� ���ɵ鿡 ���� �� ���� ����鵵 ����������, �츮�� �̷��� ������ �⺻���� ������ ����Ѵ�. ���������� ��ǥ 10, 10�� �� ���� ĥ�غ���. �װ��� ȭ�� ������ ��輱�� ���������� 11��°�� �Ʒ��� 11°�� ������ �ȴ�. ��ǥ�� �������� 0���� �����ϱ� ������ 11�� �ƴ϶� 10�̴�. ��ǥ 0,0�� ������ ��ܿ� �ִ�. vga_setmode(0)�� ��ũ���� �ؽ�Ʈ ���� �����ش�. vga_setmode(text)�� vga_setmode(0)���ٴ� �� �������̴�. ���α׷��� �Ĺ̿� �� ������ �׻� �صδ� ���� ����. �׷��� ������ ���α׷��� �ٸ� ����ڵ��� �������� ����� ������ ���̴�.

�� �ڵ带 �������ϱ� ����, �Ϲ����� gcc�����Ϸ��� �������. -lvga Ŀ�ǵ带 ����Ͽ�, SVGAlib�� ��ũ��Ű�� ���� �ʿ��ϴ�. ����������, ���� ���� ������ ����ȭ�� ���� -O3Ŀ�ǵ带 ����ϱ� �ٶ���.:

gcc -O3 -o sample sample.c -lvga

�׸��� ����, ��Ʈ�� ������ ������ �ʴ� ��������ڵ鵵 ����� �� �ְ� ������ ���� ������ ������.:

chmod u+s

�����Ϸ��� ������ ���� �Է��Ѵ�:

sample     <�Ǵ� ����ڰ� ���� �̸�>

SVGAlib ������ �Ϻ��� ���յ��� SVGAlib �Ŵ��� �������� ����ȭ�Ǿ� �ִ�. ���⼭ ��� �͵��� ���캸���� �ʴ´�. �� ��ſ� ���� ���� SVGAlib �Լ����� ���յ��� ����Ͽ�, �츮�� �ι�° ������ �ۼ��غ����� �Ѵ�.: vgagl.

"man vgagl"�̶�� �ĺ���. �׷��� vgagl�� "SVGAlib�� ���ʷ� �ϴ� ���� ������ ���� ������ �׷��� ���̺귯���̴�."��� �Ǿ� �ִ�. �⺻������ ����ڿ��� �ϳ��� ���常���ε� ������ �׸��� ���� ������ �� �� ���� �׷��� �Լ����� �����ϰ� �� ���̴�.

�Ʒ��� vgagl�� ����� ���α׷��ε�, ����� �ν��� ���α׷����� ����ϴ� �Ķ� ���� ���� ȭ������ ����� �� ���̴�. �̰��� ȭ���� ��ܿ��� ���� �Ķ������� ���۵Ǿ�, ������ ��ο����鼭 ������ �Ű����� ���ÿ� ������ ���̴�. ó�� ���α׷��� �ٸ��� �����ϴ� ������ �ϳ��� ������ �ʴ� "������" ȭ�鿡�� �׷��ִ� �۾��� �����Ѵٴ� ���̴�. �׷��� ��� ����� �� �׷�����, ���������� ������� �׸����� �ϳ��� "��������" ȭ�鿡 �ܹ��� �ű�� �ȴ�. �̷� �͵��� ȭ���� ������ �����ϰ� ����ڰ� ���� ���ø����̼ǵ��� ���� �� ������������ ���̰� �Ѵ�. ���� ������ ȭ���̶� "���"���� ������ �ϰ� �ִ� ���� "�����"���� ������ �ٹ̰� �ִ� "�����"�� ���ٰ� �����Ѵ�.

�������� �Ϸ��� ������ ���� �Է��Ѵ�.:

gcc -O3 -o gradient gradient.c -lvgagl -lvga

-lvgagl�� -lvga�� �տ� �´ٴ� ���� �ָ�����. �� ���̺귯���� ����ϱ� ���� vgagl�� �����Ϸ��� �̷��� �ϴ� ���� �ʼ����̴�.chmod u+s�� �������.

���⿡ �ҽ��ڵ尡 �ִ�: �ٿ�ε�

#include <stdio.h>
#include <stdlib.h>
#include <vga.h>
#include <vgagl.h>

GraphicsContext *physicalscreen;
GraphicsContext *virtualscreen;

int main(void) {
   int i,  j,  b,  y,  c;

   vga_init();
   vga_setmode(5);
   gl_setcontextvga(5);
   gl_setcontextvgavirtual(5);
   physicalscreen = gl_allocatecontext();
   gl_getcontext(physicalscreen);
   virtualscreen = gl_allocatecontext();
   gl_getcontext(virtualscreen);

   y = 0;
   c = 0;
   gl_setpalettecolor(c, 0, 0, 0);
   c++;
   for (i = 0; i < 64; i++) {
      b = 63 - i;
      gl_setpalettecolor(c, 0, 0, b);
      for (j = 0; j < 3; j++) {
         gl_hline(0, y, 319, c);
         y++;
      }
      c++;
   }
   gl_copyscreen(physicalscreen);

   getchar();
   gl_clearscreen(0);
   vga_setmode(0);
   exit(0);
}
          

���� #include <vgagl.h>�� ���ԵǾ�� �Ѵٴ� ���� ����ص���.

�ڵ��� �׷��� ���ؽ�Ʈ���� �����ϴµ��� ���۵ȴ�.:

GraphicsContext *physicalscreen
GraphicsContext *virtualscreen

�׸��� ���� �������� �����ϰ� ȭ�� ��带 �����ϱ� ����vga_setmode()�� ����Ѵ�. �״��� ���ؽ�Ʈ���� ������� �����Ѵ�.�츮�� �տ����� ���� 5�� ���(G320320x200x256)�� ����Ѵ�.

���� �������� "����"ȭ��� �������� �ʴ� "����"ȭ���� ��� �ʱ�ȭ��ų �ʿ䰡 �ִ�. �׸��� �츮�� �� ���� ���ؽ�Ʈ�� ������ �����Ѵ�.:

gl_setcontextvga(5)
gl_setcontextvgavirtual(5)
physicalscreen = gl_allocatecontext()
gl_getcontext(physicalscreen)
virtualscreen = gl_allocatecontext()
gl_getcontext(virtualscreen)

���� ����ȭ�鿡 ���۽�Ű�� �Ѵٴ� ���� �˸����� �Ѵ�.: gl_setcontext(virtualscreen).

gl_setpalettecolor()�� �Ķ������� 64������ ������ �����Ѵ�. ������ ���Ϻ��� 3���� ������ �׸����� �Ѵ�. ��ü�����δ� 192���� ������ �ȴ�. ������ 8���� ������ ������ �迭�� �� ���̹Ƿ� ��Ÿ���� ���� ���̴�.

�� ������ ������, ������ ȭ����� �����(���� ��ũ��)�� gl_copyscreen(physicalscreen) ������ �̿��Ͽ�, ���� ȭ������ �ű��.

�̶�, ����ڵ�� �Ͽ��� �󸶵��� �� �׸����� ���̵��� �� ���ΰ��� �����ϰ� �Ѵ�. getchar()�� ������Է��� ��ٸ���. �ƹ�Ű�� �Է��� �ް� �Ǹ� gl_clearscreen(0)�� vga_setmode(0)�� �̿��Ͽ� ���� ������ �ȴ�.

SVGAlib�� ����� ��� �Լ����� ������ "man svgalib"�� "man vgagl"�� �Է��ϸ� �� �� �ִ�. ���� ������ �Լ��鵵 �ϳ��� �Ŵ��� �������� ������ �ִ�. ���⿡ �Ұ��� ���� �а��� �Ŀ���, ���� ���� �������� ���α׷��ӿ� ���ο� ������ �����Ҽ� �ְ� �� ���̴�. ���� ����� �ٿ� ����, SVGAlib�� ���� ��ġ�Ǿ� �ִ� ���� ���α׷����� ������ �� ���̴�.

/libs/graphics�� tsx-11.mit.edu�� pub/linux/sources/libs���� SVGAlib�� �ֽŹ����� ���� �� �ִ�. �� ��縦 ���� �ִ� ������ �� ���α׷��� ������ 1.3.0�̴�.

���������� �������� �������� ���� ������, SVGAlib�� �߸��� ���丮�� ��ġ�ϱ⵵ �Ѵ�. Sunsite�� MIT�κ��� ���ο� SVGAlib�� �޾Ƽ� �ν����� �ϸ� �׷� ������ ��ĥ �� �ִ�.


1������:������/2������:����ȣ


�� ������Ʈ�� Miguel Angel Sepulveda�� �����մϴ�.
© Jay Link 1998
��������Ŀ�� 1998