如何将Qt4 QPixmap渲染为Ogre 3D纹理或网格物体?请指教

时间:2011-04-21 14:34:28

标签: qt4 ogre3d

首先,如果我的问题听起来原始而愚蠢,请原谅我。 我主要是C#.NET和数据库开发人员,但我是Ogre3D的新手,我的Qt4 / C ++开发经验也相当有限......

我的代码将自定义Qt4小部件(QWidget的子类)呈现到QPixmap上,我必须在Ogre3D表面上显示它。

我已经阅读了最新的Ogre3D书籍并且现在正在搜索QWidget-to-Ogre3D代码示例,但是找不到如何做到这一点。

我假设我需要以某种方式从QPixmap手动创建纹理(或者可能是网格)(可能保存为带有“PNG”或“BMP”选项的字节数组),但我遇到了麻烦试图找出如何做到这一点。

有人能指出我正确的方向吗?

非常感谢你。


以下是我目前的情况:

m_currentGraph-> setFixedSize(QSize(WIDTH,HEIGHT));

QPainter画家(本);

painter.end();

QPixmap pixmap(WIDTH,HEIGHT);

m_currentGraph->呈现(安培;像素映像);

QByteArray bytes;

QBuffer缓冲区(& bytes);

buffer.open(QIODevice中::只写);

pixmap.save(& buffer,“PNG”); //将pixmap写成PNG格式的字节

//如何将其渲染到Ogre3D ???

1 个答案:

答案 0 :(得分:0)

如果需要访问实际图像数据,则需要使用QImage类而不是QPixmap。 QImage为您提供API来操作像素而不是整体图像。因此,您可以执行以下任一操作:

1)将pixmap转换为调用QPixmap :: toImage()的QImage,这可能是相当昂贵的操作(占用资源)

2)由于QImage是QPaintDevice,如QPixmap,您可以更改代码以在QImage而不是QPixmap上呈现小部件。

要访问实际字节,可以使用QImage :: bits()方法。

希望这有帮助。