在Windows 7 64位OS上使用DOSBOX,在高分辨率C ++中使用IBM 3514 Borland Graphics Interface驱动程序在高分辨率C ++中使用
-
26-10-2019 - |
题
我正在使用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
功能调用不初始化图形模式。返回值的 graphresult
是 0
. 。因此,没有发生错误。但是,该程序仍在文本模式下运行。闪烁的下划线是可见的,矩形没有绘制。
我检查了我的 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