Zdravím,
já jsem taky pamětník osmibitů. Používal jsem Atari 800XL, které mělo možnost umístit počátek VideoRam kdekoliv do hlavní paměti (Atari mělo v podstatě dva procesory - klasický CPU a grafický ANTIC s vlastní sadou příkazů!). Takže se jednoduše dal dělat například vertikální scrolling nebo double buffering změnou počátku VideoRam.
Potom přišly první PC, které měly grafiku na zvláštní "grafické" kartě a dnes se zase všechno pěkně stěhuje zpátky blízko k CPU (AGP a spol.).
jako byvaly majitel DIDAKTIKu a seznamen s ostatnimi 8bity muzu zodpovedne prohlasit, ze SPECTRUM (48) & klony mely nejhorsi praci s "video" ram ze vsech. zadny mody, vubec nic.
pres to ale R-type, Myth, Castle master ukazaly ze kdo umi, nepotrebuje 256MB pameti v graficky karte :-)))
No ono se od te masinky z hardwaroveho hlediska nedaly cekat zadne zazraky - ty museli delat (a delali) tehdejsi programatori.
Ale jestli chcete priklad skutecne mizerneho designu grafickych karet: CGA, EGA, VGA. Kvuli tzv. "kompatibilite" s CGA jsme stale museli pracovat s bitovymi mapami a podobnymi nesmysly. Jednim z lepsich rezimu byl 320x200x256 u VGA, ale aby se dal delat napriklad double-buffering, musel se nahodit Mode-X, ktery ale mel pro pixelove operace docela mizernou architekturu pameti.
Začínám si hrát s glutem a tak bych chtěl poprosit ty, co už glut zvládli o vyřešení "začátečnického problému", pro něž jistě nebude nic světoborného.
Když zkompiluju váš příklad pod linuxem, gcc vypíše
.. undefined reference to 'glVierport'
a stejně pro další funkce. Chci se zeptat, co je nutno přilinkovat, aby to fungovalo. Díky
Všechny funkce, jejichž jméno začíná na "gl(A-Z)" jsou funkce z knihovny OpenGL. Pravděpodobně tedy nemáte tuto knihovnu zahrnutou do linkování. Zkuste něco na způsob:
gcc -o cvic1_1 -L/usr/X11R6/lib jednoduchy_priklad.c -lglut -lGL -lGLU -lm -lX11 -lXmu
Důležité jsou ta velká písmena u knihoven GL a GLU.
Ja to zkousel take zkompilovat a take bez vysledku:
gcc -o test -L/usr/X11R6/lib glut07_2c.c -lglut -lGL -lGLU -lm -lX11 -lXmu
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XGetExtensionVersion'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XFreeDeviceList'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XQueryDeviceState'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XListInputDevices'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XFreeDeviceState'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XOpenDevice'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined reference to `XSelectExtensionEvent'
collect2: ld returned 1 exit status