gpt4 book ai didi

c++ - OpenGL 如何进行单元测试?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:57 28 4
gpt4 key购买 nike

是否有使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com