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