![]() 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�� �Ƽ� �ν����� �ϸ� �� ������ ��ĥ �� �ִ�.
�� ������Ʈ�� Miguel Angel Sepulveda�� �����մϴ�. © Jay Link 1998 ��������Ŀ�� 1998 |