【问题标题】:Updated graphics card does not update opengl32.dll更新显卡不更新opengl32.dll
【发布时间】:2019-04-07 17:14:13
【问题描述】:

上周我一直在尝试在正方形上绘制纹理,但无济于事。正方形绘制但没有纹理。 我正在使用 OpenGL、Delphi XE3 和 Windows 10。

问题在于 glGenerateMipmap 函数。 我的旧版 opengl 没有 MipMap 功能。 所以我用更新的东西(OGL 4.6)替换了我的卡,它现在具有这些功能。 但它仍然不起作用。

问题是,旧的 opengl32.dll 没有改变,它仍然没有功能。

所以问题是: 程序如何找到 MipMap 函数? 是否可以以某种方式使用新功能更新 opengl32.dll? 或者我的程序是否需要引用其他一些 dll? 还是应该更新 winapi.opengl 单元?

根据khronos,除非设置了MipMap,否则不会绘制纹理。 https://www.khronos.org/opengl/wiki/Common_Mistakes#Creating_a_complete_texture

我正在尝试链接到 DLL 中的 glGenerateMipmap 函数:

  procedure glGenerateMipmap (target: GLenum); stdcall; external OpenGL32; 

它将编译但在运行时中止。

【问题讨论】:

  • 安装新硬件不会神奇地安装新软件。您必须单独更新应用的 OpenGL DLL。
  • 它没有什么神奇之处。当我更新我的驱动程序时,我希望驱动程序得到更新。

标签: windows delphi opengl textures


【解决方案1】:

很高兴opengl32.dll 没有改变,因为它不应该改变。 opengl32.dll 是一个操作系统组件。唯一应该接触此​​文件的是 Windows 本身,例如,在更新期间。

Windows 提供了一个通用的 OpenGL 实现,它应该始终可用(可能求助于软件渲染)。此通用实现仅支持 OpenGL 1.1,这就是 opengl32.dll 仅导出基本 OpenGL 1.1 API 函数的原因。除此之外,其他 OpenGL 实现可以以可安装客户端驱动程序 (ICD) 的形式插入系统。在为您的 GPU 安装驱动程序时,GPU 供应商通常会安装并注册此类 ICD 以使用您的 GPU 运行 OpenGL。当通过WGL APIs 创建 OpenGL 上下文时,操作系统将look for and load 一个合适的 ICD,并设置您的 OpenGL 上下文以与此 ICD 对话。 opengl32.dll 中导出的 OpenGL 1.1 API 函数实际上只是转发到 ICD。

ICD 可以(并且通常确实)提供比通过opengl32.dll 公开的基本 OpenGL 1.1 API 的附加功能。要访问此类附加功能,您必须通过wglGetProcAddress() 手动加载相应的功能。由于编写所有代码来(例如,加载整个 OpenGL 4.6 核心配置文件 API)非常繁琐,因此通常需要一个 uses a library(例如 GLEW 或 glad)来处理这些......

对于 Delphi,我猜 dglOpenGL 可能会很有趣。

【讨论】:

  • 感谢您的信息。这大致是我的假设,但我希望有一条简单的前进道路。我猜不是。
猜你喜欢
  • 1970-01-01
  • 2015-04-26
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
相关资源
最近更新 更多