2011-04-21 2 views
0

먼저 질문이 원시적이고 멍청한 소리로 들리면 저를 용서하십시오. 저는 주로 C# .NET 및 데이터베이스 개발자입니다.하지만 Ogre3D의 초보자이며, Qt4/C++ 개발자 경험도 다소 제한적입니다 ...Ogre 3D Texture 또는 Mesh에 Qt4 QPixmap을 렌더링하는 방법? 조언 해주십시오

커스텀 Qt4 위젯 (서브 클래스 QWidget의)를 QPixmap에 저장하고 Ogre3D 화면에 표시해야합니다.

저는 최신 Ogre3D 서적을 읽고 며칠 동안 QWidget-to-Ogre3D 코드 샘플을 찾고 있었지만이를 수행하는 방법을 찾지 못했습니다.

QPixmap (아마도 "PNG"또는 "BMP"옵션이있는 바이트 배열로 저장 됨)에서 수동으로 Texture (또는 아마도 Mesh)를 수동으로 만들 필요가 있다고 가정하지만, 그것을하는 방법을 알아 내려고 애쓰는 데 어려움이 있습니다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

대단히 감사합니다. 여기


내가 현재 가지고있는 작업은 다음과 같습니다

m_currentGraph-> setFixedSize (QSize (폭, 높이));

QPainter painter (this);

painter.end();

QPixmap pixmap (WIDTH, HEIGHT);

m_currentGraph-> render (& pixmap);

QByteArray 바이트;

Q 버퍼 버퍼 (& 바이트);

buffer.open (QIODevice :: WriteOnly);

pixmap.save (& 버퍼, "PNG"); // PNG 형식의 바이트에 픽스맵을 씁니다.

// Ogre3D로 렌더링하는 방법 ???

답변

0

실제 이미지 데이터에 액세스해야하는 경우 QPixmap 대신 QImage 클래스를 사용해야합니다. QImage는 전반적인 이미지가 아닌 픽셀에서 작동하는 API를 제공합니다. 그래서 당신은 다음 중 하나를 수행 할 수 있습니다

1) QImage가 QPixmap, 당신 같은 QPaintDevice이기 때문에 리소스가 사용되기 때문에 아마 오히려 비용이 많이 드는 작업 (QPixmap :: toImage (호출 QImage))

2)에 픽스맵을 변환 QPixmap 대신 QImage에서 위젯을 렌더링하도록 코드를 변경할 수 있습니다.

실제 바이트에 액세스하려면 QImage :: bits() 메서드를 사용할 수 있습니다.

희망이 도움이됩니다.

+0

죄송합니다. 내 질문에 올바르게 문구를 사용하지 않았으므로 오해가 있습니다. 이미 QByteArray에 이미지 바이트가 있습니다. 내가 뭘하려고하는지 Ogre3D에 그 바이트를 렌더링됩니다. 감사. –

+0

나는 현재 가지고있는 코드 스 니펫을 추가하고 Ogre3D, –

+0

에 표시하려고합니다. 그렇다면 미안하지만 Ogre3D로 작업하지 않았습니다. 여러 데스크톱 및 모바일 플랫폼 용 3D 라이브러리이며 Nokia의 Qt 도구 세트와 관련이 없습니다. 그것은 Qt API를 지원할 지 모르지만 그것이 Qt 프레임 워크의 일부를 의미하지는 않습니다. Ogre3D 브랜치에이 질문을 게시하여 표준화 된 데이터 교환 형식 (바이트 집합 일 수도 있음)을 제안하고 Ogre3D를 사용하여 렌더링하는 방법을 묻는 것이 좋습니다. – Barbaris

관련 문제