Usando el controlador de interfaz de gráficos IBM 3514 Borland en modo de alta resolución en Turbo C ++ en Windows 7 de 64 bits usando Dosbox
-
26-10-2019 - |
Pregunta
Estoy ejecutando un programa gráfico en Turbo C ++ usando Dosbox en Windows 7 de 64 bits. Ahora quiero usar el IBM3514
controlador gráfico en el modo de alta resolución (IBM3514HI
). Entonces, escribí el siguiente programa Bare Bones para probarlo:
#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();
}
Ahora, el programa se compila y se ejecuta sin ningún error. sin embargo, el initgraph
La llamada de función no inicializa el modo gráfico. El valor de retorno de graphresult
es 0
. Por lo tanto, no se ha producido ningún error. Sin embargo, el programa aún se ejecuta en modo de texto. El subrayado parpadeante es visible y el rectángulo no se dibuja.
Revisé mi C:\TC\BGI
carpeta y el IMB3514.BGI
El archivo existe. Por lo tanto, supongo que carga el controlador de gráficos. Sin embargo, no puedo entender por qué el programa no se ejecuta en modo gráfico, o incluso arroja un error. Sin embargo, funciona perfectamente bien si uso la configuración predeterminada: int gd = DETECT, gm;
Cualquier explicación de por qué mi programa no funciona será muy apreciado. Intente proporcionar una solución a este problema. Realmente me gustaría dibujar un 1024x768
pantalla 256
colores.
Solución
En Windows, su adaptador gráfico está virtualizado. No puede acceder a él directamente y usar sus características específicas (a menos que use DirectX/OpenGL/Otros métodos extraños). Dosbox emula algunos adaptadores gráficos "históricos" para los programas que ejecuta (para ser precisos: Tandy/Hercules/CGA/EGA/VGA/VESA). Debe usar el controlador VESA 2.0 de TC (o en general el controlador VESA).
Otros consejos
El nombre correcto del controlador es IBM8514.bgi - no "3514" y no "IMB" más o menos. Pero como dijo mi altavoz anterior, mejor usas otro conductor. La mejor opción es usar el controlador egavga.bgi del turbo resp. Paquete Borland C ++ o Turbo Pascal. Entonces debes compilarlos con éxito.
Espere que necesite una característica especial de este controlador. Entonces debe verificarlos de este esfuerzo si los necesita. Creo que el egavga.bgi, VESA o un interruptor directamente al modo GRAFIC con algunas rutinas especiales para hacer que GRAFIC funcione en Dosbox, Emudos o en todas las versiones de 32 bits de Windows como Windows XP más o menos. Guenni60