更新的图形卡不会更新opengl32.dll

问题描述 投票:1回答:1

上周我一直试图在广场上画一个纹理,但无济于事。方形绘制但没有纹理。我正在使用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; 

哪个会编译但在运行时会中止。

windows delphi opengl textures
1个回答
4
投票

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可能很有趣。

© www.soinside.com 2019 - 2024. All rights reserved.