[Qt4] OpenGL i odczytanie wartości pixela

0

Witam,
renderuje obiekt z wykorzystaniem OpenGL korzystając z QPainter tzn. korzystając z takiej funkcji

void MojaKlasa::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
...
}



MojaKlasa dziedziczy po QGraphicsItem. Chciałbym odczytać wartość pixela, ale painter nie ma takiej funkcji. Próbowałem coś takiego żeby uzyskać QImage:

QImage image=static_cast<QGLPixelBuffer*> (painter->device())->toImage();

ale nie działa. Byłbym wdzięczny za pomoc.

0

Utwórz QPixmap, połącz z QPainter, a potem wywołaj MojaKlasa::paint z tym painter'em. W ten sposób Item sam się narysuje na QPixmap i będziesz mógł odczytać ten piksel czy cokolwiek chcesz zrobić na tym obrazie.

0

Ale w ten sposób chyba dwa razy się renderuje scene, w dodatku raz bez wsparcia sprzętowego? A przecież OpenGL ma funkcję GetPixel.

0

ty stosujesz QGraphicsWidget, a to nie ma nic wspólnego z OpenGL.
Do openGL w Qt są specjalne klasy, które nawet nie są QGraphicsWidget a QWidget, np QGLWidget.

0

Polecam dokumentację:
http://doc.trolltech.com/4.2/graphicsview.html#opengl-rendering

Może jakiś inny ma pomysł?

0

Fajnie, ale to nie oznacza, że będziesz miał dostęp do tej funkcjonalności (czytanie pikseli) poprzez QPainter.
Poprzeglądaj przykłady openGl pod Qt:
http://doc.trolltech.com/4.2/examples.html#opengl-examples

Może to się przyda:
http://doc.trolltech.com/4.5/qglframebufferobject.html#toImage

1 użytkowników online, w tym zalogowanych: 0, gości: 1