首先,如果我的问题听起来原始而愚蠢,请原谅我。 我主要是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 ???
答案 0 :(得分:0)
如果需要访问实际图像数据,则需要使用QImage类而不是QPixmap。 QImage为您提供API来操作像素而不是整体图像。因此,您可以执行以下任一操作:
1)将pixmap转换为调用QPixmap :: toImage()的QImage,这可能是相当昂贵的操作(占用资源)
2)由于QImage是QPaintDevice,如QPixmap,您可以更改代码以在QImage而不是QPixmap上呈现小部件。
要访问实际字节,可以使用QImage :: bits()方法。
希望这有帮助。