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

Я запускаю графическую программу на Turbo C++, используя DosBox в 64-разрядной версии Windows 7. Теперь я хочу использовать графический драйвер IBM3514 в режиме высокого разрешения (IBM3514HI). Итак, я написал следующую простую программу, чтобы протестировать ее:

#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 цветами.


person Aadit M Shah    schedule 18.10.2011    source источник


Ответы (2)


Под Windows ваш графический адаптер виртуализируется. Вы не можете получить к нему прямой доступ и использовать его специфические функции (если только вы не используете DirectX/OpenGL/другие странные методы). DOSBox эмулирует некоторые "исторические" графические адаптеры для запускаемых им программ (точнее: Tandy/Hercules/CGA/EGA/VGA/VESA). Вы должны использовать драйвер VESA 2.0 TC (или вообще драйвер VESA).

person xanatos    schedule 18.10.2011

Правильное название драйвера ibm8514.bgi - не 3514 и не imb или около того. Но, как сказал мой предыдущий оратор, лучше использовать другой драйвер. Лучше всего использовать драйвер egavga.bgi для Turbo, соответственно. Пакет Borland C++ или Turbo Pascal. Затем вы должны скомпилировать их успешно.

Ожидайте, что вам понадобится специальная функция этого драйвера. Затем вы должны проверить их этого усилия, если они вам нужны. Я думаю, что egavga.bgi, vesa или прямой переход в графический режим с некоторыми специальными процедурами для создания графики должны работать в DOSBox, EmuDOS или во всех 32-битных версиях Windows, таких как Windows XP или около того.

person Guenni60    schedule 23.09.2015