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