opengl - 如何设计 OpenGL DirectX "Abstraction Layer"

标签 opengl opengl-es directx abstraction

我正在阅读有关创建图形“抽象层”以方便在图形平台之间切换的信息。不幸的是,我无法找到有关该主题的详细信息。这种抽象可以在函数级别通过这样的方式实现吗?

void pushMatrix(){
  if (directx){
     // do directx function

  }else if (opengl){
     // do opengl function
  }

}

这是它的工作原理吗?有没有更好的办法?谁能指出一些执行此操作的示例或更多示例代码?

最佳答案

通常做的是有一个“通用”渲染器的接口(interface):

class RendererInterface{
    virtual DrawMesh() = 0;
    virtual SwapBuffers() = 0;
    /// etc
}

每个库都有一个实现:
class OpenGLRenderer : public RendererInterface{
    virtual DrawMesh(){... }
    ....
}

但这个概念与亚历山大的答案相同。

关于opengl - 如何设计 OpenGL DirectX "Abstraction Layer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697001/

相关文章:

c++ - Ubuntu 12.04 上的教程 OpenGL 4

opengl - 视野 + 纵横比 + 投影矩阵的 View 矩阵(HMD OST 校准)

ios - OpenGL 与透明背景混合?

ios - GLKit 移动相机时一个物体移动奇怪

c++ - 我应该为真实世界的游戏引擎使用什么 3D 图形框架?

c++ - DirectDraw使用GetProcAddress获取程序地址

javascript - 从 Maya 场景到 WebGL 动画,从哪里开始?

c++ - OpenGL 中的着色器问题

ios - 从 OpenGL 中的窗口触摸获取相应的 3D 对象坐标/顶点

c++ - 当我运行书中的演示项目时,Directx 12 说找不到指定的路径