【问题标题】:How to render Qt4 QPixmap to Ogre 3D Texture or Mesh? Please advise如何将 Qt4 QPixmap 渲染为 Ogre 3D 纹理或网格?请指教
【发布时间】:2011-04-21 14:34:28
【问题描述】:

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

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

几天来我一直在阅读最新的 Ogre3D 书籍并搜索 QWidget-to-Ogre3D 代码示例,但找不到如何做到这一点。

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

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

非常感谢您。


这是我目前拥有的:

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

QPainter 画家(这个);

画家.end();

QPixmap 像素图(WIDTH, HEIGHT);

m_currentGraph->渲染(&pixmap);

QByteArray 字节数;

QBuffer 缓冲区(&bytes);

buffer.open(QIODevice::WriteOnly);

pixmap.save(&buffer, "PNG"); // 将像素图写入 PNG 格式的字节中

//如何渲染到Ogre3D上???

【问题讨论】:

    标签: qt4 ogre3d


    【解决方案1】:

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

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 很抱歉我没有正确表达我的问题,因此存在误解。我已经在 QByteArray 中有图像字节。我想要做的是将这些字节渲染到 Ogre3D 中。谢谢。
    • 我刚刚添加了我目前拥有的代码 sn-p,并尝试在 Ogre3D 中显示,
    • 好的,那么抱歉,我还没有使用 Ogre3D。它是一个适用于多个桌面和移动平台的 3D 库,与诺基亚的 Qt 工具集无关。虽然它可能支持 Qt API,但并不意味着它是 Qt 框架的一部分。我建议你在 Ogre3D 分支中发布这个问题,建议一些标准化的数据交换格式(可能是一组字节),并询问你如何使用 Ogre3D 渲染它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2023-04-10
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多