Использование драйвера графического интерфейса IBM 3514 Borland в режиме высокого разрешения в Turbo C ++ в ОС Windows 7 64 -бил с использованием Dosbox

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

Вопрос

Я запускаю графическую программу в 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top