OpenGL的面向对象封装
我们在基于Kinect的魔法面具项目中需要使用OpenGL来渲染3D模型。OpenGL是基于C语言的图形渲染API,我们在项目中需要加载并渲染多个3D模型,所以需要对OpenGL做一层面向对象的封装。在此前我们团队的成员都没有深入接触过OpenGL,直到这个项目,才知道OpenGL的不同。
首先,OpenGL与线程直接绑定,每个线程渲染的图形都是独立的,这为我们的封装提供了一定的便利。但是由于不了解这个特性,在实际开发中我们总是发现经常出现渲染失败的情况,仅仅是因为一个接口调用的地方不一样,后来经过总结并且查阅相关资料,终于发现是由于OpenGl线程绑定导致的这一现象,对某一个3D模型的渲染必须在同一个线程中进行,而我们的封装有时会出现在A线程初始化,在B线程绘图。