2012-04-10 5 views
1

私はWINEでVB6アプリケーションを実行しており、プログラムのOpenGL部分は機能しません。 PFD_DRAW_TO_BITMAPを使用しています。 PFD_DRAW_TO_WINDOW形式が動作するようです。SetPixelFormatは0を返しますが、エラーは設定されていませんか?

私はすべてのピクセル形式(約256あります)を列挙し、それらのいくつかは私が要求するものと一致します。 ChoosePixelFormatは正しい形式(この場合はpixelFormat 6)を返すようですが、この値をSetPixelFormatに渡すと0が返されます。ドキュメントを見て、GetLastError()で詳細を確認するように言いますが、空白のエラーメッセージを返す0を返します。

誰もがなぜSetPixelFormatが失敗するのか理解していますか?私はいくつかの読書を行ってきたとDRAW_TO_BITMAPが実装されているよう

2009年5月のように、私はDRAW_TO_BITMAPは、ハードウェアが加速されていません知っているので、それが聞こえます。それは完全に受け入れられます。このアプリはWindowsで正常に動作します。なぜ、サポートされているピクセル形式が認識されないように見えるのかを理解するだけです。

私はUbuntuを最新のバージョンのパッケージマネージャーで実行しています.Quadro上では問題ありません.Wineが基礎となるグラフィックスカードを使用しようとしているのか、ソフトウェアのすべてのピクセルフォーマットを仮想化しているのかは分かりません。レンダリング)

+0

あなたはそれがワインのバグだかどうかを確認するために、インストール、実際のWindows上でそれをテストしたことがありますか? – Deanna

+0

ええ、それは私のWindowsインストールで動作します。私は3を除いてそれを試したすべてのインストールで動作します。 –

答えて

0

SetPixelFormatがWINEでのみ失敗する理由はわかりませんが、VB31コードから手動でGetLastErrorを呼び出すのは間違っています。 VBでは、独自のDLL呼び出しをバックグラウンドで実行します。これらは(一般的に)成功し、GetLastErrorで表示されるエラーコードをリセットし、VBコードから無用にします。

代わりに、VBは、直ちに、すべてのユーザーが開始したDLLの呼び出しの後GetLastError自分自身を呼び出します。値を保存し、プロパティErr.LastDllErrorとして利用可能にします。それを使って実際のエラーコードを見つけてください。

関連する問題