1

我在 WINE 中运行 VB6 应用程序,但程序的 OpenGL 部分不起作用。它正在使用 PFD_DRAW_TO_BITMAP。PFD_DRAW_TO_WINDOW 格式似乎有效。

我列举了所有像素格式(大约有 256 种),其中一些符合我的要求。ChoosePixelFormat 似乎返回了正确的格式(在本例中为 pixelFormat 6),但是当我将此值传递给 SetPixelFormat 时,它返回 0。我查看了文档,它说要检查 GetLastError() 以获取更多信息,但是当我调用它时,它返回 0 格式为空白错误消息。

有谁知道无论如何要弄清楚为什么 SetPixelFormat 会失败?我做了一些阅读,听起来 DRAW_TO_BITMAP 自 2009 年 5 月以来已经实施。

我知道 DRAW_TO_BITMAP 不是硬件加速的。这是完全可以接受的。这个应用程序在 Windows 中运行良好——我只需要弄清楚为什么支持的像素格式似乎无法被识别。

我正在他们的软件包管理器中运行 Ubuntu,这是 WINE 的最新版本,如果这很重要,则在 Quadro 上运行(不确定 Wine 是否尝试使用底层显卡,或者它是否虚拟化所有像素格式以进行软件渲染)

4

1 回答 1

0

我不知道为什么SetPixelFormat只会在 WINE 上失败,但在任何情况下GetLastError从 VB6 代码手动调用都是不正确的。VB 在幕后进行自己的 DLL 调用。这些将(通常)成功,重置看到的错误代码GetLastError并使其在 VB 代码中无用。

相反,VBGetLastError在每次用户启动的 DLL 调用后立即调用自己。它保存该值并使其可用作属性Err.LastDllError。使用它来找出真正的错误代码。

于 2013-10-02T20:17:33.237 回答