Jay Link �۾��� �Ұ�: ���ڿ��� �������� |
�������ý��ۿ��� ������ �׷�����Ű���� ã�� �ֽ��ϱ�? ���� �׷��ٸ� �� �� �ʿ䵵 �����ϴ�. SVGAlib�� ������ �׷��� �������α׷��� ����� ������ ����� X������ �ý����� ��Ȳ�� �κ��� �����ݴϴ�. ���� �������� C���� �⺻���� ���α׷��� �����̶�� SVGAlib������ϼ���.
SVGAlib�� �������� ���� �������� �׷��� ���̺귯���̴�. �׷����� ������ �����ϴ� ���� �ƴ϶� C���α׷����� ����� Ȯ������ִ� ���̴�.
���� C�� ¥���� �׷��� ���α׷��� ���� ����.
�׷���. �׷��� �׷� ���α׷����� �ܺ� ���̺귯�� �Լ��鿡 �����Ѵ�. C ��ü�δ� ���� �ؽ�Ʈ�� ����� �� �ִ�. ��� �׷��� ���� �Լ����� �ý��ۿ� �������̸� ������ �Ұ����ϰ� �Ǵ� ���� �̶����̴�. �����ϰԵ� �� �ü�踦 ���� ������� �׷��� ��ƾ���� ��� ���� ���۵��� ���� ���� �ٸ� �ý��ۿ��� �������� ������ �ִ�. ���� ��� ó������ DOS�� Windows���� ������� �׷��� �Լ����� ������������ ������� ���̴�.
�������󿡼� C�� �׷��� �Լ����� ¥�� ���ؼ�, �������� �˸´� �ܺ� �Լ����� ����ϴ� ���� �ʿ��ϴ�. SVGAlib�� �׷��� �Լ����� ������ �ϳ��̴�.
|
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 |