使用IBM 3514 Borland图形接口驱动程序在高分辨率模式下Turbo c++在Windows 7 64位操作系

Using the IBM 3514 Borland Graphics Interface driver in High resolution mode in Turbo C++ on Windows 7 64 bit OS using DosBox

本文关键字:c++ Turbo Windows 位操作 高分辨率 Borland 3514 IBM 图形 接口 使用      更新时间:2023-10-16

我在Windows 7 64位上使用DosBox在Turbo c++中运行图形程序。现在,我想在高分辨率模式(IBM3514HI)下使用IBM3514图形驱动程序。因此,我编写了以下基本程序来测试它:

#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:TCBGI文件夹和IMB3514.BGI文件存在。因此我假设它确实加载了图形驱动程序。然而,我不明白为什么程序不能在图形模式下执行,甚至抛出一个错误。但是,如果我使用默认设置,它就可以完美地工作:int gd = DETECT, gm;

如果你能解释一下为什么我的程序不能工作,我将不胜感激。请尝试提供解决此问题的方法。我真的想用256的颜色在1024x768的屏幕上画画。

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

正确的驱动程序名称是ibm8514。华大-不是"3514";而不是"imb"左右。但就像我之前的演讲者说的,你最好换一个司机。最好的选择是使用egavga。涡轮增压的驱动程序。Borland c++或Turbo Pascal包。然后你应该编译成功。

期望您需要这个驱动程序的特殊功能。然后,如果需要的话,您必须检查这些努力。我想是egavga。bgi, vesa或直接切换到图形模式用一些特殊的例程使图形应该在DOSBox, EmuDOS或所有32位版本的Windows如Windows XP等下工作。

试试下面的代码:

int gd = 6, gm = 0, e;

(两个变量都是integer,而不是string)