在Windows 7 64位OS上使用DOSBOX,在高分辨率C ++中使用IBM 3514 Borland Graphics Interface驱动程序在高分辨率C ++中使用

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

我正在使用Windows 7 64位上使用DOSBOX在Turbo C ++中运行图形程序。现在,我想使用 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 功能调用不初始化图形模式。返回值的 graphresult0. 。因此,没有发生错误。但是,该程序仍在文本模式下运行。闪烁的下划线是可见的,矩形没有绘制。

我检查了我的 C:\TC\BGI 文件夹和 IMB3514.BGI 文件已存在。因此,我认为它确实加载了图形驱动程序。但是,我无法弄清楚为什么程序不在图形模式下执行,甚至不引发错误。但是,如果我使用默认设置,则可以很好地工作: int gd = DETECT, gm;

关于为什么我的程序不起作用的任何解释都将不胜感激。请尝试为此问题提供解决方案。我真的很想画一个 1024x768 带有屏幕 256 颜色。

有帮助吗?

解决方案

在Windows下,您的图形适配器虚拟化。您无法直接访问它并使用其特定功能(除非您使用DirectX/OpenGL/其他奇怪方法)。 DOSBOX为其运行的程序模拟了一些“历史”图形适配器(确切地说:Tandy/Hercules/CGA/EGA/EGA/VGA/VESA)。您必须使用TC的VESA 2.0驱动程序(或通常是VESA驱动程序)。

其他提示

驱动程序的正确名称是IBM8514.BGI-不是“ 3514”,而不是“ IMB”左右。但是就像我以前的演讲者所说的那样,最好使用另一个驱动程序。最好的选择是使用turbo Resp的egavga.bgi驱动器。 Borland C ++或Turbo Pascal包装。然后,您应该将它们汇编成功。
希望您需要此驱动程序的特殊功能。然后,如果需要,您必须检查他们的这项工作。我认为,Egavga.bgi,Vesa或直接切换到Grafic模式,其中一些特殊的例程使Grafic应该在Dosbox,Emudos或Windows XP(例如Windows XP)(例如Windows XP)中使用。 Guenni60

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top