0

まず、私の質問が原始的で愚かに聞こえる場合は、ご容赦ください。私は主にC#.NETおよびデータベース開発者ですが、Ogre3Dの初心者であり、Qt4 /C++開発の経験もかなり限られています...

カスタムQt4ウィジェット(QWidgetのサブクラス)をQPixmapにレンダリングするコードがあり、それをOgre3Dサーフェスに表示する必要があります。

私は最新のOgre3Dの本を読んでいて、QWidgetからOgre3Dへのコードサンプルを数日間探していましたが、その方法が見つかりませんでした。

QPixmapから手動でテクスチャ(またはメッシュ)を作成する必要があると思います(おそらく、「PNG」または「BMP」オプションを使用してバイト配列として保存されます)が、理解するのに問題がありますその方法を説明します。

誰かが私を正しい方向に向けてもらえますか?

事前にどうもありがとうございました。


これが私が現在持っているものです:

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

QPainterペインター(これ);

painter.end();

QPixmap pixmap(WIDTH、HEIGHT);

m_currentGraph-> render(&pixmap);

QByteArrayバイト;

QBuffer buffer(&bytes);

buffer.open(QIODevice :: WriteOnly);

pixmap.save(&buffer、 "PNG"); //ピックスマップをPNG形式のバイトに書き込みます

//それをOgre3Dにレンダリングする方法???

4

1 に答える 1

0

実際の画像データにアクセスする必要がある場合は、QPixmapではなくQImageクラスを使用する必要があります。QImageは、画像全体ではなくピクセルを操作するためのAPIを提供します。したがって、次のいずれかを実行できます。

1)QPixmap :: toImage()を呼び出してピックスマップをQImageに変換します。これは、おそらくかなりコストのかかる操作です(リソースを消費します)

2)QImageはQPixmapのようなQPaintDeviceであるため、コードを変更して、QPixmapではなくQImageでウィジェットをレンダリングできます。

実際のバイトにアクセスするには、QImage :: bits()メソッドを使用できます。

お役に立てれば。

于 2011-04-21T15:00:02.777 に答える