SetPixelFormat返回0,但没有设置错误?

时间:2012-04-10 18:05:03

标签: opengl vb6 wine

我在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是否尝试使用底层显卡或者是否虚拟化所有像素格式以进行软件渲染)

1 个答案:

答案 0 :(得分:0)

我不知道为什么SetPixelFormat只会在WINE上失败,但无论如何都不能从VB6代码手动调用GetLastError。 VB在幕后制作自己的DLL调用。这些将(通常)成功,重置GetLastError看到的错误代码,并使其无法从VB代码中使用。

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