【问题标题】:Problem displaying textures in OpenGL in XP vs 7在 XP vs 7 的 OpenGL 中显示纹理的问题
【发布时间】:2010-11-12 00:16:25
【问题描述】:

我遇到了一个我无法解决的最奇怪的问题。在过去的几个月里,我一直在 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 位的机器上遇到了问题。因此,我可以得出结论,它与操作系统无关,但有一些我没有发现导致问题的变量。

【问题讨论】:

  • 您是否在代码中使用过 glGetError() 和/或在 GLIntercept 之类的 OpenGL 调试器中尝试过?后者可能会为您提供一些关于代码中发生的事情的答案(它也应该自动检查 glGetError,AFAICR)。

标签: windows vb.net opengl compatibility


【解决方案1】:

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

我能想到的最直接的特征就是缺乏对非二次幂纹理的支持。这是很久以前添加到 OpenGL 的,但您可能仍然会发现不支持它的旧硬件(因此硬件将不支持更新的 OpenGL 版本)。

不显示的纹理尺寸是多少?

【讨论】:

  • 有趣 - 我记得清楚地将我正在使用的图像强制为 512x512,但现在它是 510x510 图像。当我有机会进一步研究它时,我会尽快回复您。
  • 这让我很困惑为什么会这样。我使用的图像最初是 512x512。我什至回顾了旧版本的程序,发现它们是正确的尺寸。不过,在某个地方,它们被缩小到了 510x510。将旧图像贴在它们的位置解决了这个问题。非常感谢!
【解决方案2】:

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

【讨论】:

  • 有趣的想法 - 我会考虑更新驱动程序,看看是否能处理它。明天我会在我的机器上发布一些sn-ps,看看是否有任何突出的地方=)
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
相关资源
最近更新 更多