Utilizzando il driver IBM 3514 Borland Graphics Interface in modalità ad alta risoluzione in Turbo C ++ su Windows 7 a 64 bit del sistema operativo usando DosBox

StackOverflow https://stackoverflow.com/questions/7808504

Domanda

Sono in esecuzione un programma grafico in Turbo C ++ utilizzando DosBox su Windows 7 a 64 bit. Ora, voglio usare il driver grafico IBM3514 nella modalità ad alta risoluzione (IBM3514HI). Così, ho scritto il seguente programma ossa nude per testarlo:

#include <graphics.h>
#include <iostream.h>

void main() {
    int gd = IBM3514, gm = IBM3514HI, e;
    initgraph(&gd, &gm, "C:\\TC\\BGI");
    if (e = graphresult()) {
        cout << grapherrormsg(e);
    }
    cleardevice();
    rectangle(100, 100, 300, 300);
    cin.get();
    closegraph();
    restorecrtmode();
}

Ora, le compilazioni programma ed esegue senza errori. Tuttavia, la funzione di chiamata initgraph non inizializza modalità grafica. Il valore di ritorno di graphresult è 0. Quindi, si è verificato alcun errore. Eppure, il programma viene eseguito ancora in modalità testo. La sottolineatura lampeggiante è visibile e il rettangolo non viene disegnato.

ho controllato la mia cartella C:\TC\BGI ed esiste il file IMB3514.BGI. Così presumo che non caricare il driver grafico. Eppure, non riesco a capire perché il programma non esegue in modalità grafica, o anche lanciare un errore. Tuttavia funziona perfettamente bene se uso le impostazioni di default: int gd = DETECT, gm;

Ogni spiegazione sul motivo per cui il mio programma non funziona sarà molto apprezzato. Si prega di cercare di fornire una soluzione a questo problema. Mi piace molto disegnare su uno schermo 1024x768 con colori 256.

È stato utile?

Soluzione

In Windows scheda grafica è virtualizzato. Non è possibile accedere direttamente e utilizzare le sue caratteristiche specifiche (a meno che non si utilizza DirectX / OpenGL / altri metodi strani). DOSBox emula alcune schede grafiche "storici" per i programmi che corre (per la precisione: Tandy / Hercules / CGA / EGA / VGA / VESA). È necessario utilizzare il driver VESA 2.0 di TC (o, in generale, il driver VESA).

Altri suggerimenti

il modo corretto nome del driver è ibm8514.bgi - non è "3514" e non "IMB" o giù di lì. Ma come il mio precedente oratore ha detto, meglio si utilizza un altro driver. La scelta migliore è quella di utilizzare il driver egavga.bgi del resp Turbo. Borland C ++ o pacchetto Turbo Pascal. Poi si dovrebbe compilare loro successo.
Aspettatevi hai bisogno di una caratteristica speciale di questo driver. Poi si deve verificare di questo sforzo, se ne avete bisogno. Penso che l'egavga.bgi, vesa o passare direttamente alla modalità grafica con alcune routine speciali per rendere grafic dovrebbe funzionare in DOSBox, EmuDOS o in tutto a 32-Bit-versione di Windows come Windows XP o giù di lì. Guenni60

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top