Hej! Jag programmerar i ett spelprogrammeringsbibliotek som heter allegro. Jag tycker att det är väldigt bra, det är väldigt enkelt att komma igång. Du kan ladda ner det på denna sida: Kollade upp biblioteket, tycket det verkar lite väl komplext och svåranvänt. Har iofs inte testat det med ska, fast skulle vara glad om någon vet ett enklare bibliotek, räcker långt med bara 2D. Du skulle kunna använda mode 13h, ett grafikläge. Då får du 320x200 px med 256 färger. Det finns en hel del guider och färdiga funktioner att lägga in. Men när om man skiftar skärmläge får man kompilerings fel.. Tyvärr kan jag inte tillräckligt om c++, men jag vet att _AH betyder register ah, och _AL register al. Geninterrupt skall skicka motsvarande int 10h i assembler och pokeb skall lägga byten color på rätt plats i minnet. Jo jag gissade nästan på att det är asm-grejer, ingen som vet hur man får det att funka? Lite beroende på kompilator:Grafik i DOS
Någon som vet några bra bibliotek för grafik i dos till c++? (VC++ i console-mode) Det behöver inte vara en komplett grafikmotor det räcker i princip att man kan plotta pixlar i olika färger.
/ CarlSv: Grafik i DOS
www.allegro.ccSv: Grafik i DOS
Sv: Grafik i DOS
http://www.point-blank.nu/artiklar/3/mode13/mode1301.asp
http://www.comprenica.com/atrevida/gameprog.html
/IvarSv: Grafik i DOS
koden ser ut så här, funktionerna är hämtade från den understa av länkarna som ges här ovan:
#define VIDEO_SEGMENT 0xA000
#define SCREEN_WIDTH 320
#include <iostream>
#include <conio.h>
#include <dos.h>
using namespace std;
void SetTextMode();
void SetMode13h();
void PutPixel(int,int,unsigned char)
unsigned char *video_buffer=(unsigned char *)0xA0000000L;
int main(){
int x, y;
SetMode13h ();
for (x = 0; x <= 255; x++)
for (y = 0; y <= 50; y++)
PutPixel (x, y, x);
getch ();
SetTextMode ();
return 0;
}
void SetMode13h()
{
_AH = 0;
_AL = 0x13;
geninterrupt (0x10);
}
void SetTextMode ()
{
_AH = 0;
_AL = 0x03;
geninterrupt (0x10);
}
void PutPixel (int x, int y, unsigned char color)
{
pokeb (VIDEO_SEGMENT, (y * SCREEN_WIDTH) + x, color);
}
Meddelande vid kompilering:
--------------------Configuration: grafik - Win32 Debug--------------------
Compiling...
main.cpp
G:\C++ PROJEKT\grafik\main.cpp(34) : error C2065: '_AH' : undeclared identifier
G:\C++ PROJEKT\grafik\main.cpp(35) : error C2065: '_AL' : undeclared identifier
G:\C++ PROJEKT\grafik\main.cpp(36) : error C2065: 'geninterrupt' : undeclared identifier
G:\C++ PROJEKT\grafik\main.cpp(48) : error C2065: 'pokeb' : undeclared identifier
Error executing cl.exe.
grafik.exe - 4 error(s), 0 warning(s)
Det står inget om i artiklarna om hur dessa ska deklareras.. någon som vet??
// CarlSv: Grafik i DOS
Sv: Grafik i DOS
// CarlSv: Grafik i DOS
void SetMode13h()
{
__asm
{
// _AH = 0;
mov ah, 0;
// _AL = 0x13;
mov al, 0;
// geninterrupt (0x10);
int 10h;
}
}
detta funkar i VC, i borland och watcom är det annan syntax för __asm-direktivet.