是否有使用 OpenGL 命令对函数或类进行单元测试的好方法?
对于 C++,我知道我可以将类作为模板并传递一个类来执行直接的 opengl 调用:
namespace myNamespace
{
struct RealOpenglCall
{
static inline void glVertex2fv( const GLfloat * v)
{ ::glVertex2fv( v ); }
};
template< typename T >
class SomeRendering
{
public:
SomeRendering() : v()
{
// set v
}
void Draw()
{
T::glVertex2fv(v);
}
GLfloat v[4];
};
}
在 C 和 C++ 中,我可以将函数指针传递给调用 opengl 函数的函数(然后为了单元测试将指针传递给模拟函数)。
我也可以链接到不同的库(而不是 opengl),但这听起来很复杂。
那么,还有哪些其他技术可以对调用 opengl 函数的代码进行单元测试?
最佳答案
这是我不久前学到的一个好技巧。您可以使用常规的旧 #define
来模拟各种 API 函数:
#ifdef _test_
#define glVertex3f(x,y,z) (mockGlVertex3f((x),(y),(z)))
...
#endif
使用配置的预处理器。根本不需要更改您的绘图功能。此外:您可以以这样的方式实现 mockGlVertex3f
检查参数或计算对其的调用次数,稍后可以对其进行检查。
关于c++ - OpenGL 如何进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271022/