A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
oktatas:programozas:c:konzolgrafika_svga [2017/10/02 20:29] |
oktatas:programozas:c:konzolgrafika_svga [2019/08/21 17:56] admin létrehozva |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
+ | [[:oktatas:programozás:c|< C]] | ||
+ | |||
+ | ====== Konzolgrafika SVGA ====== | ||
+ | |||
+ | ===== Bevezetés ===== | ||
+ | |||
+ | |||
+ | Nyílt forráskódú alacsony szintű grafikai műveletek tesz lehetővé. | ||
+ | Váltható videó módok és teljes képernyős mód is lehetséges. | ||
+ | Néhány népszerű program is használja az eredeti verziójában, | ||
+ | úgymint Quake, Doom, stb. | ||
+ | |||
+ | |||
+ | ===== SVGA Könyvtárak telepítése ===== | ||
+ | |||
+ | |||
+ | Debian rendszeren | ||
+ | apt-get install libsvga1-dev | ||
+ | |||
+ | A dokumentum jelenlegi verziója csak Debian rendszeren mutatja, | ||
+ | be az SVGA könyvtárak telepítését. | ||
+ | |||
+ | A MinGW alapból nem tartalmazza az SVGALIB-et ezért be kell azt szerezni. | ||
+ | * http://www.svgalib.org | ||
+ | * http://sourceforge.net/projects/svgalib-windows/ | ||
+ | |||
+ | |||
+ | ===== Használat ===== | ||
+ | |||
+ | |||
+ | Két fejállományt használhatunk: | ||
+ | * vga.h | ||
+ | * vgagl.h | ||
+ | |||
+ | Parancssoros fordításhoz: | ||
+ | gcc -l vga -o main main.c | ||
+ | gcc -l vgagl -o main main.c | ||
+ | |||
+ | |||
+ | Egyszerű példaprogram: | ||
+ | #include <stdlib.h> | ||
+ | #include <vga.h> | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | vga_init(); | ||
+ | vga_setmode(G320x200x256); | ||
+ | vga_setcolor(4); | ||
+ | vga_drawpixel(10, 10); | ||
+ | |||
+ | sleep(5); | ||
+ | vga_setmode(TEXT); | ||
+ | | ||
+ | return EXIT_SUCCESS; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | #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(G320x200x256); | ||
+ | gl_setcontextvga(G320x200x256); | ||
+ | physicalscreen = gl_allocatecontext(); | ||
+ | gl_getcontext(physicalscreen); | ||
+ | gl_setcontextvgavirtual(G320x200x256); | ||
+ | virtualscreen = gl_allocatecontext(); | ||
+ | gl_getcontext(virtualscreen); | ||
+ | |||
+ | gl_setcontext(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); | ||
+ | |||
+ | vga_getch(); | ||
+ | gl_clearscreen(0); | ||
+ | vga_setmode(TEXT); | ||
+ | | ||
+ | return EXIT_SUCCESS; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | Fordítás: | ||
+ | gcc -O3 -o gradient gradient.c -lvgagl -lvga | ||
+ | |||
+ | |||
+ | ===== Külső link ===== | ||
+ | |||
+ | * http://www.svgalib.org | ||
+ | * http://www.svgalib.org/jay/beginners_guide/beginners_guide.html | ||