[Qt4] OpenGL i odczytanie wartości pixela

Odpowiedz Nowy wątek
xawery
2010-01-08 04:25
xawery
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.

Pozostało 580 znaków

2010-01-08 09:49

Rejestracja: 12 lat temu

Ostatnio: 3 minuty temu

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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

xawery
2010-01-08 23:00
xawery
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.

Pozostało 580 znaków

2010-01-09 08:40

Rejestracja: 12 lat temu

Ostatnio: 3 minuty temu

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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

xawery
2010-01-09 11:49
xawery
0

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

Może jakiś inny ma pomysł?

Pozostało 580 znaków

2010-01-11 10:20

Rejestracja: 12 lat temu

Ostatnio: 3 minuty temu

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

Odpowiedz

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