Использование драйвера графического интерфейса IBM 3514 Borland в режиме высокого разрешения в Turbo C ++ в ОС Windows 7 64 -бил с использованием Dosbox
-
26-10-2019 - |
Вопрос
Я запускаю графическую программу в Turbo C ++, используя Dosbox на Windows 7 64 -бит. Теперь я хочу использовать IBM3514
графический драйвер в режиме высокого разрешения (IBM3514HI
) Итак, я написал следующую программу Bare Bones, чтобы проверить ее:
#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();
}
Теперь программа компилирует и работает без каких -либо ошибок. Тем не менее initgraph
Функциональный вызов не инициализирует графический режим. Возвращаемое значение graphresult
является 0
. Анкет Следовательно, ошибки не произошло. Тем не менее, программа все еще работает в текстовом режиме. Мигание подчеркивается вид, а прямоугольник не нарисован.
Я проверил свой C:\TC\BGI
папка и IMB3514.BGI
Файл существует. Таким образом, я предполагаю, что он загружает графический драйвер. Тем не менее, я не могу понять, почему программа не выполняется в графическом режиме или даже не бросает ошибку. Однако это работает отлично, если я использую настройки по умолчанию: int gd = DETECT, gm;
Любое объяснение того, почему моя программа не работает, будет очень ценится. Пожалуйста, постарайтесь предоставить решить эту проблему. Я действительно хотел бы нарисовать на 1024x768
экран с 256
цвета.
Решение
Под Windows ваш графический адаптер виртуализирован. Вы не можете получить доступ к нему напрямую и использовать его конкретные функции (если вы не используете DirectX/OpenGL/другие странные методы). Dosbox эмулирует некоторые «исторические» графические адаптеры для программ, которые он работает (если быть точным: Tandy/hercules/cga/ega/vga/vesa). Вы должны использовать драйвер VESA 2.0 TC (или в целом драйвер VESA).
Другие советы
Правильное название драйвера IBM8514.bgi - не "3514", а не "IMB" или около того. Но, как сказал мой предыдущий оратор, лучше вы используете другого драйвера. Лучший выбор - использовать драйвер Egavga.bgi Turbo Resp. Borland C ++ или Turbo Pascal Package. Тогда вы должны составить их успешно.
Ожидайте, что вам нужна специальная функция этого драйвера. Тогда вы должны проверить их об этом усилии, если они вам нужны. Я думаю, что egavga.bgi, VESA или прямо переключаются в режим GRAC с некоторыми специальными процедурами, чтобы GRAFIC работал в Dosbox, Emudos или во всех 32-битных версиях Windows, таких как Windows XP или около того. Guenni60