gpt4 book ai didi

user-interface - OpenGL 应用程序的自动化测试

转载 作者:行者123 更新时间:2023-12-04 00:55:32 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用 JOGL 来提供大部分 GUI。

是否有任何您知道或使用过的工具可以自动测试 OpenGL 应用程序(或者更具体地说是那些使用 JOGL 的应用程序)

只是为了更新:该工具可以在 linux 或 windows 上运行。

最佳答案

我之前为 C++(Linux 上的 Qt)和 OpenGL 编写了单元测试。我不知道有什么理由它也不适用于 Java。

对我有用的事情是:

  • 抽象您的 OpenGL 上下文提供程序,以便您的其余代码独立于它。在我的例子中,主应用程序使用了 Qt 的 QGLWidget,但单元测试使用了一个基于 pbuffer 的应用程序,我可以在没有任何窗口基础设施的情况下创建它(指定的 X11 DISPLAY 除外)。后来我添加了一个“屏幕外 Mesa”(纯软件 OpenGL 实现),所以他们甚至可以在没有 GPU 的 headless 构建机器上工作。
  • 保持您的 OpenGL 代码独立于您的 GUI 代码。就我而言,OpenGL“渲染引擎”对 Qt 类(例如鼠标事件)一无所知。定义您自己的可测试 API,该 API 与任何特定的 GUI 概念无关,并为其编写测试。
  • 在单元测试中,使用 glReadPixels 从帧缓冲区中读回内容,并使用一些关于哪些像素应该是特定值的断言来命中它们,或者沿着回归测试路线将帧缓冲区捕获与您知道好的存储图像进行比较(要么来自手动验证,要么因为它是从其他一些引用模型生成的)。
  • 在任何图像回归测试中允许有点模糊;大多数 OpenGL 实现产生的输出略有不同。
  • (我没有这样做,但是...)理想情况下,您希望能够通过断言它对渲染引擎进行预期的调用序列以响应 GUI 事件来测试 GUI 层。如果它这样做了,并且由于上述测试,您对渲染层充满信心……好吧,实际上无需进行渲染。因此,创建一个合适的渲染层模拟对象,以在 GUI 测试时使用(我想像“鼠标从这里拖到那里导致调用渲染层以设置特定变换矩阵”之类的测试......像这样的东西)。
  • 关于user-interface - OpenGL 应用程序的自动化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586230/

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