HomeMapIndexSearchNewsArchivesLinksAbout LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Jay Link
�� ������: ���� ����� �������� ����� �������� ���, �� ����� � �. ����������, ��. ��������. ������ Linux, �� ���������� �������� �� ����� � ��������. �������� ���������������  InterLink BBS (�������������� Internet-���������). � ����� ������ ����� ���������� �������� �����, ����� ������ ������ �� ������. 

�������� ������

������� - ��� ������! SVGAlib, ����������� ��� ����������

[Ilustration]

���� �� ����� ������� ����������� ����� ��� ���������� ���������� ��� Linux, �� ������ ���������� ������. ���������� SVGAlib �������� ���������� �������� �������� ����������� ����������, ��� ����� ����� ������, ����������� X Window System. ���� ������������ ������� ���������������� �� C ���������� ��� ������������� SVGAlib!


Worst viewed with Internet Explorer (try Netscape 4.5 it is better) 

��� ����� SVGAlib?

SVGAlib ��� �������������� ����������� ���������� ��� Linux. ��� ��������� ����������� ����� C, �������, ��� ��������, �� ����� ���������� �������  ��� �������� ����������� ����������.

���� ��������� ��������� �������� �������� �� C.

����, SVGAlib �������� ����������� ������� ������� � ������������ � ������ �. ���� C ��� �� ����, ����� ��������  ������ � "��������� ������". ��� ������� � ���, ��� ����������� ������� ���������� � �� ����� ������������ � ����� ������������ ��������� �� ������. ����������� ������������ � �������, ��������� ��� ����� ������������ ������� ������ ���� ��������� ����������, ���� �� ������, ����� ���� ��������� �������� � ������ ������������ �����. ��������, ����������� ��������� ��� DOS ��� Windows �� ����� �������������� ��� Linux'��.

��� ������ � �������� � ����� Linux ���������� ������������ ����� ������� �������, ���������� ������������� ��� Linux. SVGAlib � �������� ����� �������.
 
SVGAlib ��� ������ ���������� ������� ����� C ���������� �� C-�������� 

��� ���������� SVGAlib �� X Window System?

X Window System (XFree86) - ��� ������. ������ ������ ���� ������� ������, ��� � ���� ������ ���������� ����� �� X-����������. X-������ ���������� ����� ��������� �������� � ������ ��� ����������� ������������ ����������� ��������� (Alt 1-6).

��� ������������� ������� SVGAlib, ������ �� �����. SVGAlib  - ��� ������ ���������� �������, ���������� �� C-�������� (���������� ���� ������ ����������� ������������� � ��������� /lib � /usr/lib). ���� ���������� SVGAlib ����������� ���������, ����� �� � ��� �� ������������. � ������� SVGAlib �� ��������� ����������� �� ��������� ����������� ���������, �.�. � ������ ��������� �� ������ ��������� ����������� ����������, � �� ����� ��� ������ ����� �������� � ������� ��������� ������.

��������� ����������

��� X Windows ����������� ����������� ������ ����������, ��� � �������������� SVGAlib, ��������� X Window System �������� �����-������������� (�.�. ���������� �� ������� ��������� ��� �������� �� ����� ���������� UNIX � ������). SVGAlib ������� ������ ��� Linux. ����������� ������������� SVGAlib � ����������� ����� "���������" ������� ���, ��� �������� ���������������. ����� �� ����� ������ � ����� ������������� ����� ������������ �����������, ���� � ��� �������� ����������� ����������. ���� ���� "���������".
���������� ���, ����� ������������� SVGAlib ������� �������� � �������������. �� ����� ���� ���������, ������������ SVGAlib ����������� � ������������� ����� ����� ������������ (�.�. � ������ ���������� ����������� ����� root), �� ��� ���������� ������������� ������������ � ����������� ���������. ������� �� �� ����� �� ���� ���������������.

� ��� ��, �������� �� ��������� �������� ���������� SVGAlib ��������� ������� � ����� ��������� ���������� � �� ������������� ���������� �� ������ ���������.

�������

����� ������������ SVGAlib, ���������� �������� �� ���� �����������. ��� ����� �������� �������� #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);
}
gradient

��������� ������ �� ������ ����� (������) �������� �����. ����� ���� ������ ������� ����������� � ������� ��������� ����� � ��������� �����������.

�������� �������� �� ������ ��������: vga_init(). � ��� ������� ��������� �������� ������ root (���� ���������� ��������������� ���) � �������������� ���������� SVGAlib. ��������� ������ �������� ������� vga_setmode(5), �.�. ��������������� 5-� ����� VGA �������� (320x200x256). � ���� ������ ����������� ����� ������ ����� ������� 320 ����� (��������) �� ����������� � 200 ����� �� ��������� � �������� ������ � 256 ������. � �������� ������������ ����� ������������ ����� vga_setmode(G320x200x256). ��� ������ ���� ������� ������������. ��������� �������: vga_setcolor(4), ������������� � �������� �������� �����  ������� ����. ����� ������������ ����� �������� � ���������  �� 0 �� 255. ��������� ������� ��������� ������������� �������� ���������� ������, �� � ������ ������� �� ����� ������������ ����. �, �������, �������: vga_drawpixel(10,10) ������ ������� �����  � ������� ������ 10, 10. �� ����� ���� ��� ������������ ����� ������ �� ����� �������  � ����, �� ������� ������� ������. ������ ������������, � �� �������, �.�. ������ ��������� ���������� � ����. ����� � ������������ 0,0  ������������� ������� ����� ������� ������. ������� vga_setmode(0) ���������� VGA ������� � ��������� ����� (������ - vga_setmode(text)).  �������, ��� ��� ���������� ��������� ������ ���������� ��������������� ��������� �����. � ��������� ������ � ��� ����� ��������.

��� ���������� ��������� ����������� gcc. ��� ���� ���������� �������, ��� ����� �������������� ���������� SVGAlib (������� �����������: -lvga ). � ���������� �������������� ��������� ��� ��� ������ �������: -O3 , ��� ������ ������� �����������. ��������� ������ ���������� ����� ��������� ��� (��������������, ��� �������� ����� ��������� ��������� � ����� sample.c):

gcc -O3 -o sample sample.c -lvga
����� ��������� ����� ��������� ������� ������������, ���������� ���������� ��� ����� ������������:
chmod u+s sample
� ������ �������� ���������:
sample     <��� ��� ��������� �� ������ ������>
������ �������� ������� SVGAlib �������� � man-�����������. �� �� ����� ������������� �� ��������. ������ ����� ���������� ��� ���� ������, � ������� ������������ ������������ ������� SVGAlib - vgagl.

����������� "man vgagl", � �� �������, ��� vgagl  ��� "����������� ���������� �� ���� SVGAlib, ������� ������� �������� �� ������ ������� ������ VGA ��������. ��� �������� ������ ���������". � ����� ������� ���� ���������� �������� ����� �������� �������������, �������� �������� ����������� ��������� �������� ��� ������ ������ ����� �������.

��������� ������ ���������� ������� ���������� vgagl. � ���������� ������ ��������� �� ������ �������� �������� � ���������� ������ �����, �.�. ���� ������ - ������-�������� ����� � ���� ������� ������ ���������� �� �����-������ � ���� ������. ������� �������� �� ����������� ������� �������� ��, ��� ������� ��������� �� ������������ �� ������. ��� �������� ����������� �� ��������� "�����������" ������ � ��������� ������������ ������ ����� ����, ��� ����� ��������� ������. ��� ��������� �������� ������, � ���� ���������� �������� ����� ��������������.
��������� ������������� ��������� �������:

gcc -O3 -o gradient gradient.c -lvgagl -lvga
�������� �������� ��� �������� �� ���������� vgagl (-lvgagl) ����� ����� �������� (-lvga). �.�. ���������� � ������� ���� ������� ������� ����� ������������� ���������� vgagl, � �� ���������� vga ����� ����� ������ ����������� �������. �� �������� � �� ��������� ���� ����� ������������: 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 �������� (������� vga-setmode()). �� ����� ������������ ��� �� �����, ��� � � ���������� ������� (G320x200x256).

� ������������� ��������� � ���������� � "�����������" ������. ������� �������� ������� ������� ��������� � ��������������� ����������:

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-��������� "man svgalib" � "man vgagl". ����� ����� �� ������ ������� ������� ��������� ��������. � ������� ����� �������� �� ������� ���������� �������� ��������� ����������� ����������. ���� ��������� ���� � � �������� ��������� �� man-���������.

���� ���� ���������� �� �����, ��� ���-�� �� ��������, ������� ��� ��������� ��������� ������ SVGAlib � ����������� ������  sunsite.unc.edu �������: pub/Linux/libs/graphics ��� tsx-11.mit.edu �������: pub/linux/sources/libs. �� ������ ��������� ���� ������ ���������� ����� ������ 1.3.0.

�, �������, ����������� Slackware, �� ���������� �������� ����� ��������� ������������� SVGAlib � ������������ ��������. �������� �������� ��������� ���������� � ������ Sunsite ��� MIT � ����������� ������������.


Submitted in English.
������� �� ������� ���� �. ��������
This website is maintained by Miguel Angel Sepulveda
� Jay Link 1998
LinuxFocus 1998