Windows 在XP vs 7中在OpenGL中显示纹理时出现问题

Windows 在XP vs 7中在OpenGL中显示纹理时出现问题,windows,vb.net,opengl,compatibility,Windows,Vb.net,Opengl,Compatibility,我遇到了一个最奇怪的问题,我就是找不到答案。在过去的几个月里,我一直在用VB.net在Windows7中开发一个应用程序。该程序涉及一些基本的OpenGL绘图和动画,包括基本形状(正方形和圆形)和映射到点列表的基本纹理。现在是将程序分发到另一台机器的时候了。但在某些机器上,我在绘制纹理时会遇到问题。我知道openGL仍然是功能性的,因为仍然会绘制基本的正方形和圆形,纹理对象是唯一缺少的东西 我已经在多台Windows7 64位机器上测试过这个问题,所有这些都可以正常工作 在Windows XP

我遇到了一个最奇怪的问题,我就是找不到答案。在过去的几个月里,我一直在用VB.net在Windows7中开发一个应用程序。该程序涉及一些基本的OpenGL绘图和动画,包括基本形状(正方形和圆形)和映射到点列表的基本纹理。现在是将程序分发到另一台机器的时候了。但在某些机器上,我在绘制纹理时会遇到问题。我知道openGL仍然是功能性的,因为仍然会绘制基本的正方形和圆形,纹理对象是唯一缺少的东西

我已经在多台Windows7 64位机器上测试过这个问题,所有这些都可以正常工作

在Windows XP 32位计算机上安装该程序会导致此问题。不会抛出任何错误。程序没有崩溃。纹理不会被绘制到屏幕上。所有其他简单的形状仍然存在,程序的任何功能都不受影响

我已经在WindowsXP32和64位虚拟机上测试了相同的问题,这两种虚拟机都出现了相同的问题。这是在安装到最新更新并安装.net framework 3.5之后进行的。这让我相信这不是x64/x86的问题,而是WindowsXP本身的问题

OpenGL中是否有一些Windows XP不支持的功能?这个想法对我来说很奇怪,我不认为这是个问题

我提出的唯一可能的解释是,在XP和7中,初始化的调用顺序可能不同,但我的测试都没有证明任何事情。几何体在初始化时从文本文件加载,这就是为什么这似乎是另一种可能的解释

更新
我在不同的机器上做了进一步的测试,遇到了在Windows7 32位上运行良好的程序,但在运行Windows7 64位的不同机器上遇到了这个问题。因此,我可以得出结论,这与操作系统无关,但我还没有发现导致问题的一些变量。

支持的功能主要取决于图形驱动程序,而不是操作系统本身。至少有一个合理的最新驱动程序,我在XP下没有遇到问题(OTOH,我不得不在Windows7中解决一些奇怪的问题)。您的代码可能有一些错误并不总是出现,但是如果没有代码可以查看,很难猜测。

除了驱动程序之外,可以解释呈现差异的主要类别是硬件支持的差异

我能想到的最直接的特性可以解释这一点,那就是缺少双纹理的非幂支持。这是很久以前添加到OpenGL的,但是您可能仍然会发现不支持它的旧硬件(因此硬件将不支持更新的OpenGL版本)


没有显示的纹理大小是多少?

有趣的想法-我将研究更新驱动程序,看看是否可以处理它。当我明天到达我的机器时,我将发布一些代码片段,看看是否有什么事情发生了(=)您是否在代码中使用了glGetError()和/或使用了类似GLIntercept的OpenGL调试器进行了尝试?后者可能会为您提供一些关于代码中发生的事情的答案(它也应该自动检查glGetError,AFAICR)。有趣的是,我清楚地记得我使用的图像是512x512,但现在是510x510图像。当我有机会进一步了解它的时候,我会马上给你回复。我不明白为什么会发生这种事。我使用的图像最初是512x512。我甚至回顾了该程序的旧版本,发现它们是正确的维度。然而,在这条线路的某个地方,它们被减少到了510x510。将旧图像粘贴到位解决了问题。非常感谢!