0

我在 Linux [GCC 编译器] 中工作,我正在使用带有 CDT + QT 的 Eclipse 进行编译我需要使用 QT 窗口和 OpenGL 函数显示 DICOM 图像序列请让我知道哪个是显示图像序列的函数我'm 使用 3 个函数 1) initiallizeGL() 来初始化 OpenGL 函数。2) resizeGL() 而不是 Glut 中的 glutInitWindowSize()。3) Glut 中的paintGL() 代替 glutDisplayFunc()。4) updateGL() 代替 Glut 中的 glutPostRedisplay()。

还请让我知道 QT glutMainLoop() 中的 Glut 等效函数;glutSwapBuffers(); glutInitDisplayMode(); glutIdleFunc(空闲); glutInit(&argc, argv);

4

2 回答 2

4

您应该能够通过简单地使用 QGLWidget 作为您的绘画设备轻松显示图像 - 根据您的特定用例 - 可能会简化您的实现。这将使用 Qt 中的 OpenGL 绘制引擎绘制图像。类似以下的内容应该允许您显示图像;

class CustomWidget : public QGLWidget
{ 
public:
    CustomWidget(QWidget* parent=0) : QGLWidget(parent), pix("foo.jpg")
    {

    }

protected:
    void paintEvent(QPaintEvent *pe)
    {
        QPainter p(this);
        // maybe update the pixmap
        p.drawPixmap(this->rect(),pix);
    }

private:
    QPixmap pix;
};

如果您需要将其放入 3D 场景中,您可能需要将图像加载为纹理。一些 Qt OpenGL 演示应该能够为您提供一个起点,例如 'Boxes' 演示;

http://doc.trolltech.com/4.6-snapshot/demos-boxes.html

于 2009-05-28T14:19:25.450 回答
0

我想说 Qt 已经处理了 gluSwapBuffers、glutInitDisplayMode 和 glutInit,所以你不需要这些。我也不确定您的函数映射是否正确,简而言之,Qt 和 Glut 以不同的方式考虑 GL,因此您可能必须采用相同的方式(以不同的方式思考),并且 Qt 方法几乎是不言自明的。我建议下载 KGLEngine 或任何其他 Qt +GL 项目的代码,以更好地了解它的工作原理。

于 2009-05-28T08:35:23.820 回答