在XP与7中的OpenGL中显示纹理的问题

时间:2010-11-12 00:16:26

标签: windows vb.net opengl compatibility

我遇到了一个我无法指责的最奇怪的问题。我在Windows 7中过去几个月一直在VB.net中开发一个应用程序。该程序涉及一些基本的OpenGL绘图和动画,基本形状(正方形和圆形)和基本纹理映射到点列表。现在是将程序分发到另一台机器的时候了。但是在某些机器上,我在绘制纹理时会遇到问题。我知道openGL仍然有用,因为仍然会出现绘制基本方块和圆圈,纹理对象是唯一缺少的东西。

我在多台Windows 7 64位计算机上测试了这个问题,一切正常。

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

我在Windows XP 32和64位虚拟机上测试了同样的问题,两者都出现了同样的问题。这是在安装到最新更新并安装.net framework 3.5之后。这让我相信它不是x64 / x86的问题,而是Windows XP本身。

OpenGL中是否存在Windows XP不支持的功能?这个想法对我来说似乎很奇怪,我看不出这就是问题所在。

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

更新

我已经在不同的机器上进行了进一步的测试,并且遇到了在Windows 7 32位中正常运行的程序,但在运行Windows 7 64位的其他计算机上遇到了问题。因此,我可以得出结论它与操作系统无关,但是有一些我没有发现的变量导致了这个问题。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

我能想到的最直接的功能可以解释这是缺乏非二次幂纹理支持。这已经被添加了很长一段时间回到OpenGL,但是您可能仍然会发现不支持它的旧硬件(因此硬件不支持更新的OpenGL版本)。

没有出现的纹理大小是什么?