OpenGL 2D Graphik (QT4)
Verfasst: 4. August 2005 12:23
Hallo!
Ich habe Probleme mit OpenGL Deshalb beschreibe ich hier sehr ausführlich was genau mein Programm können soll!!!
Zu Lernzwecken schreibe ich momentan an einem Programm, dass verschiedene Sortieralgorithmen visuell veranschaulichen soll.
Die Idee ist es, zuerst einmal ein Feld mit einer festgelegten Anzahl an Pseudo-Zufallszahlen zu erzeugen, die es zu sortieren gilt.
Als nächstes sollen diese Zahlen dann graphisch in einem QGLwidget dargestellt werden.
Mein Programm ist folgendermaßen organisiert:
MainWindow.cpp/h : enthält sämtlichen Programmcode für mein Hauptfenster (siehe Bild)
GLDrawer.h : enthält die von QGLwidget abgeleitete Klasse GLDrawer (das widget ist im Bild rot eingekreist)
In der Datei MainWindow.h habe ich einen öffentlichen Zeiger auf GLDrawer angelegt, der in MainWindow.cpp (im Konstruktor) so initialisiert wird:
(Anmerkung: "frameGraphics" ist ein gewöhnlicher Frame.)
Hier ist meine GLDrawer.h Datei:
Die Methode drawField soll auf Kommando Punkte in das glWiget zeichnen, die sich aus dem Feldindex (x-Koordinate) und dem Feldwert (y-Koordinate) ergeben. Der Feldwert liegt zwischen "min" und "max" und das Feld hat "size" viele Einträge. Um ein Feld zu zeichnen, muss ein folgender Aufruf möglich sein:
Aber irgendetwas stimmt an meiner GLDrawer Klasse nicht. Wer kann mir weiterhelfen?
Ciao
Ich habe Probleme mit OpenGL Deshalb beschreibe ich hier sehr ausführlich was genau mein Programm können soll!!!
Zu Lernzwecken schreibe ich momentan an einem Programm, dass verschiedene Sortieralgorithmen visuell veranschaulichen soll.
Die Idee ist es, zuerst einmal ein Feld mit einer festgelegten Anzahl an Pseudo-Zufallszahlen zu erzeugen, die es zu sortieren gilt.
Als nächstes sollen diese Zahlen dann graphisch in einem QGLwidget dargestellt werden.
Mein Programm ist folgendermaßen organisiert:
MainWindow.cpp/h : enthält sämtlichen Programmcode für mein Hauptfenster (siehe Bild)
GLDrawer.h : enthält die von QGLwidget abgeleitete Klasse GLDrawer (das widget ist im Bild rot eingekreist)
In der Datei MainWindow.h habe ich einen öffentlichen Zeiger auf GLDrawer angelegt, der in MainWindow.cpp (im Konstruktor) so initialisiert wird:
Code: Alles auswählen
glWidget = new GLDrawer(frame_Graphics);Hier ist meine GLDrawer.h Datei:
Code: Alles auswählen
#ifndef GL_DRAWER_H
#define GL_DRAWER_H
#include <QGLWidget>
class GLDrawer : public QGLWidget
{
Q_OBJECT;
public:
GLDrawer(QWidget *parent) : QGLWidget(parent)
{
makeCurrent();
}
void drawField(int *field, int size, int min, int max)
{
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 0.0);
// Koordinatensystem einrichten mit: -x,+x,-y,+y,-z,+z
glOrtho(0.0, (GLfloat) size, (GLfloat) min, (GLfloat) max, -1.0, 1.0);
glBegin(GL_POINTS);
for (int i = 0; i < size; i++)
{
glVertex2i(i,field[i]);
}
glEnd();
glFlush();
}
protected:
void initializeGL()
{
}
void resizeGL(int w, int h)
{
}
void paintGL()
{
}
};
#endif
Code: Alles auswählen
int field[3] = {100, 200, 300};
glWidget->drawField(field,3,100,300);Ciao