我在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
种颜色。
答案 0 :(得分:4)
在Windows下,您的图形适配器已虚拟化。您无法直接访问它并使用其特定功能(除非您使用DirectX / OpenGL /其他奇怪的方法)。 DOSBox为它运行的程序模拟一些“历史”图形适配器(准确地说:Tandy / Hercules / CGA / EGA / VGA / VESA)。您必须使用TC的VESA 2.0驱动程序(或通常是VESA驱动程序)。
答案 1 :(得分:1)
驱动程序的正确名称是ibm8514.bgi - 不是&#34; 3514&#34;而不是&#34; imb&#34;或者。但就像我之前的发言人所说的那样,你更好地使用另一个驱最好的选择是使用Turbo resp的egavga.bgi驱动程序。 Borland C ++或Turbo Pascal包。然后你应该成功编译它们 期待您需要此驱动程序的特殊功能。然后,如果需要,你必须检查他们的努力。我认为egavga.bgi,vesa或直接切换到grafic模式与一些特殊的例程来制作grafic应该在DOSBox,EmuDOS或所有32位版本的Windows(如Windows XP等)中工作。 Guenni60