在运行时加载OpenGL/DirectX API功能

Load opengl/directx API functions at runtime

本文关键字:DirectX API 功能 OpenGL 运行时 加载      更新时间:2023-10-16

我正在构建OpenGL/DirectX/Vulkan Modern Game Engine。我以前曾写过一个版本的引擎版本,在该版本中,我将特定代码与宏分开,例如:

#ifdef CIANADE_API_OGL
OGLTexture::GPU_LoadTexture();
#elif defined(CIANADE_API_DX12)
DX12Texture::GPU_LoadTexture();
#elif //etc....

对于每个API 平台我都有单独的构建(cianade_ogl4.exe,cianade_ogl3.exe,cianade_dx12.exe等...)。我的问题是是否有可能,并且在运行时加载OpenGl和Directx API函数在运行时(仅适用于PC平台,移动/控制台只有一个只有一个可执行的),如果是这样,怎么能完成?

我的问题是可能的,在运行时加载OpenGl和DirectX API函数在运行时加载是个好主意(仅适用于PC平台,移动/控制台,只有一个可执行的),如果是这样,怎么会完成?

我不是这些图形引擎的专家,但是是的,可以在运行时加载基础DLL。

但是,您需要为特定库功能提供包装接口:

struct IGraphLibTexture {
    virtual void GPU_LoadTexture() = 0;
    virtual ~IGraphLibTexture() {}
};

并在单独的DLL中提供不同的实现。

根据您在运行时确定的目标体系结构,您可以明确加载其中一个。

如果这实际上是个好主意,我将留给其他人回答。