OpenGl Anzeigegröße (gelöst)

Alles rund um die Programmierung mit Qt
Antworten
J4Yb3
Beiträge: 2
Registriert: 21. August 2010 11:02

OpenGl Anzeigegröße (gelöst)

Beitrag von J4Yb3 »

Hallo :)
also ich habe folgendes Problem:
Ich hab ein GLWidget mit der Größe 640x320 erstellt und möchte dieses auch als Anzeige ganz ausnutzen. Was aber passiert ist aber dass das gezeichnete Object immer in der Linken unteren Ecke häng (Bild 01).

Der Quellcode dazu sieht bei mir wie folgt aus:

Steueung.cpp

Code: Alles auswählen

#include "steuerung.h"

Steuerung::Steuerung(QWidget *parent)
{
    this->setGeometry(50,50,660,500);
    dieZeichenflaeche=new GlZeichenflaeche(this);
    dieZeichenflaeche->setGeometry(10,10,640,480);
    dieZeichenflaeche->show();
}

Steuerung::~Steuerung()
{

}
GlZeichenflaeche.cpp

Code: Alles auswählen

#include <QGLWidget>
#include "glzeichenflaeche.h"

GlZeichenflaeche::GlZeichenflaeche(QWidget *parent):QGLWidget(parent)
{
    
}

void GlZeichenflaeche::initializeGL()
{
    qglClearColor(Qt::black);
}
void GlZeichenflaeche::resizeGL(int breite, int hoehe)
{
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluOrtho2D( 0, 640, 0, 480 );
    glMatrixMode( GL_MODELVIEW );
}

void GlZeichenflaeche::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);
    int x;
    for(x=0;x<204800;x++)
    {
       char c= qrand()%256;
       double sx= qrand()%640;
       double sy=qrand()%480;
       glColor3ub (c,c,c);
       glVertex2d(sx,sy);
   }
    glEnd();
}
Dateianhänge
Bild 01
Bild 01
Unbenannt-1.png (19.64 KiB) 2073 mal betrachtet
Zuletzt geändert von J4Yb3 am 22. August 2010 08:23, insgesamt 1-mal geändert.
N&#164;X
Beiträge: 77
Registriert: 21. September 2009 12:24

Beitrag von N&#164;X »

Das hat null mit Qt zu tun, aber bitte:

Code: Alles auswählen

void GlZeichenflaeche::resizeGL(int breite, int hoehe)
{
    glViewport(0, 0, breite, hoehe);   //<-- Viewport setzen!
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluOrtho2D( 0, 640, 0, 480 );
    glMatrixMode( GL_MODELVIEW );
}
Mit glViewport gibst du an, in welchen Bereich der Zeichenfläche du zeichnen willst (falls du z.B. nur einen Teil neu zeichnen oder das Gesamtbild aus einzelnen Szenen zusammensetzen willst). ;)
mfg N¤X
J4Yb3
Beiträge: 2
Registriert: 21. August 2010 11:02

Beitrag von J4Yb3 »

Okay alles klar hat geklappt :)
dann entschuldige ich mich für diese idiotische frage :oops:
herzlichen dank das du sie trotzdem beantwortet hast :wink:
Antworten