IBM 3514 Borland Graphics Interface Driverは、Windows7のターボC ++で高解像度モードで高解像度モードでDOSBOXを使用しています
-
26-10-2019 - |
質問
Windows 7 64ビットでdosboxを使用して、ターボ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/VGA/VESA)。 TCのVESA 2.0ドライバー(または一般的にVESAドライバー)を使用する必要があります。
他のヒント
ドライバーの正しい名前はIBM8514.BGIです - 「3514」ではなく、「IMB」などではありません。しかし、私の前のスピーカーが言ったように、あなたは別のドライバーを使用する方が良いでしょう。最良の選択は、Turbo RespのEGAVGA.BGIドライバーを使用することです。 Borland C ++またはターボパスカルパッケージ。その後、それらを成功させる必要があります。
このドライバーの特別な機能が必要であることを期待してください。次に、必要な場合は、この努力を確認する必要があります。 egavga.bgi、vesa、またはgraficモードを使用してGraficモードに直接切り替えると、graficを使用する必要があると思います。 Guenni60