IBM 3514 Borland Graphics Interface Driverは、Windows7のターボC ++で高解像度モードで高解像度モードでDOSBOXを使用しています

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

質問

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 関数呼び出しはグラフィックモードを初期化しません。の返品値 graphresult0. 。したがって、エラーは発生していません。しかし、プログラムはまだテキストモードで実行されます。点滅するアンダースコアが見え、長方形は描かれていません。

チェックしました 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top