Webcam Anbindung und Darstellung mittels QT
Code: Alles auswählen
IplImage* iplImage = das IplImage von irgendwo
unsigned int m_width = iplImage->width;
unsigned int m_height = iplImage->height;
unsigned int m_depth = iplImage->depth * iplImage->nChannels;
unsigned char* m_imgP = (unsigned char*) iplImage->imageDataOrigin;
// initalisiere variable mit 0
QImage* img = 0;
int i, j;
switch(m_depth)
{
case 8:
img = new QImage(QSize(m_width, m_height),QImage::Format_Indexed8);
img->setNumColors(256);
for (i = 0; i<256; ++i)
img->setColor(i, qRgb(i,i,i));
break;
case 24:
case 32:
img = new QImage(QSize(m_width, m_height),QImage::Format_RGB32);
break;
}
for (i = 0; i<m_height; ++i)
{
for (j = 0; j<m_width; ++j)
{
switch(m_depth)
{
case 8:
img->setPixel(j,i, m_imgP[i * m_width + j ]);
break;
case 24:
case 32:
if (m_bgr)
{
img->setPixel(j,i, qRgb(
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 2],
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 1],
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3)])
);
}
else
{
img->setPixel(j,i, qRgb(
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3)],
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 1],
m_imgP[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 2])
);
}
}
}
}
// Mach irgendwas mit dem Bild und vergess nicht es danach wieder zu löschen
delete img;
Bei IplImages solltest Du statt m_width * (m_depth >>3), widthStep verwenden, da cvCreateImage die Bilder 4byte Aligned erzeugt.
m_imgP entspricht dem IplImage imageData Feld.
Hoffe das hilft weiter, auch wenn's bei weitem nicht so schnell ist wie die OpenGL Variante
Zuletzt geändert von Volker am 20. April 2007 21:17, insgesamt 4-mal geändert.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
warum sagst du dass es mit dem MINGW compiler nicht geht?Christian81 hat geschrieben:Das hast Du davor nicht gesagt. Ich bin von msvc ausgegangen.
MinGW definiert diese Konstanten nicht, also ist es atm mit MinGW wohl nicht möglich. Sollte man mal bei http://sf.net/projects/mingw nachschauen ob sie ggf. planen diese Konstanten hinzuzufügen.
es geht wunderbar.....
Code: Alles auswählen
svn co https://qt-webdav.svn.sourceforge.net/svnroot/qt-webdav/webcam_qt4_demo_mingw/ qt4webcamdemo
auf meinem komischen englisch geschrieben ist geht es prima!

.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
-
silentstorm
- Beiträge: 3
- Registriert: 19. April 2007 18:17
Hallo Volker,
ich habe da noch ein paar Fragen an dich bzgl deines Codes der die Pixel kopiert.
1tens zu QImage* img = 0; sollte man statt der 0 nicht new QImage; schreiben?
2tens zu m_depth.Berechnet man m_depth schon nach dieser Formel: frame->width*frame->nChannels
3tens zu m_bgr->isChecked(). Was ist m_bgr und woher kommt die Funktion isChecked()?Da ich es bisher nicht wusste,benutz ich einfach mal true.
Auf jedenfall is mein Qimage noch ein null image, da bei der Abfragen auf isNull true geliefert wird.
Sobald ich das QImage habe bin ich fertig, da ich mittels der Funktion fromImage das Qimage in ein QPixmap umwandel und mir dieses auf einem Widget anzeige.
Ich hoffe du kannst mir die 3 Fragen beantworten. Ich wär dir für deine Hilfe sehr dankbar.
Grüße,
silentstorm
edit:
wenn ich es über qtglcontext probiere kommt folgender fehler:
benutze von nvidia die standard treiber in ubuntu.
in der xorg.conf wird glx geladen.
soll ich mal probieren die nvidia treiber zu installieren?
ich habe da noch ein paar Fragen an dich bzgl deines Codes der die Pixel kopiert.
Code: Alles auswählen
char* data = frame->imageData;
int m_width = frame->width;
int m_height = frame->height;
int m_depth = frame->width*frame->nChannels;
QImage* img = 0;//new QImage;
int i, j;
switch(m_depth)
{
case 8:
img = new QImage(QSize(m_width, m_height),QImage::Format_Indexed8);
img->setNumColors(256);
for (i = 0; i<256; ++i)
img->setColor(i, qRgb(i,i,i));
break;
case 24:
case 32:
img = new QImage(QSize(m_width, m_height),QImage::Format_RGB32);
break;
}
for (i = 0; i<m_height; ++i)
{
for (j = 0; j<m_width; ++j)
{
switch(m_depth)
{
case 8:
img->setPixel(j,i, data[i * m_width + j ]);
break;
case 24:
case 32:
if (true)//m_bgr->isChecked())
{
img->setPixel(j,i, qRgb(
data[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 2],
data[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 1],
data[i * m_width * (m_depth>>3) + j * (m_depth>>3)])
);
}
else
{
img->setPixel(j,i, qRgb(
data[i * m_width * (m_depth>>3) + j * (m_depth>>3)],
data[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 1],
data[i * m_width * (m_depth>>3) + j * (m_depth>>3) + 2])
);
}
}
}
}
cout << img->isNull() << endl;2tens zu m_depth.Berechnet man m_depth schon nach dieser Formel: frame->width*frame->nChannels
3tens zu m_bgr->isChecked(). Was ist m_bgr und woher kommt die Funktion isChecked()?Da ich es bisher nicht wusste,benutz ich einfach mal true.
Auf jedenfall is mein Qimage noch ein null image, da bei der Abfragen auf isNull true geliefert wird.
Sobald ich das QImage habe bin ich fertig, da ich mittels der Funktion fromImage das Qimage in ein QPixmap umwandel und mir dieses auf einem Widget anzeige.
Ich hoffe du kannst mir die 3 Fragen beantworten. Ich wär dir für deine Hilfe sehr dankbar.
Grüße,
silentstorm
edit:
wenn ich es über qtglcontext probiere kommt folgender fehler:
Code: Alles auswählen
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
QGLContext::makeCurrent(): Cannot make invalid context current.
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
### image webcam in der xorg.conf wird glx geladen.
soll ich mal probieren die nvidia treiber zu installieren?
Nein! Denn das wird nur in den Fällen wo die Konvertierung funktioniert beim "case" Code erzeugt.silentstorm hat geschrieben: ich habe da noch ein paar Fragen an dich bzgl deines Codes der die Pixel kopiert.
1tens zu QImage* img = 0; sollte man statt der 0 nicht new QImage; schreiben?
Nein! m_depth soll die Farbtiefe des Bildes darstellen, da hat die Breite nichts verloren.silentstorm hat geschrieben: 2tens zu m_depth.Berechnet man m_depth schon nach dieser Formel: frame->width*frame->nChannels
Das ist zugegebenermaßen nicht von mir erklärt worden. Unter Windows sind Videodaten in der Regel BGR statt RGB, weiss nicht wie das unter Linux ist.silentstorm hat geschrieben: 3tens zu m_bgr->isChecked(). Was ist m_bgr und woher kommt die Funktion isChecked()?Da ich es bisher nicht wusste,benutz ich einfach mal true.
Wenn du m_depth wie oben von dir erwähnt berechnet wird, ist das kein Wunder, denn dann trifft ja kein Fall für dich zu.silentstorm hat geschrieben: Auf jedenfall is mein Qimage noch ein null image, da bei der Abfragen auf isNull true geliefert wird.
Wie bereits erwähnt kann man das so machen, is aber langsam. Außerdem solltest Du nicht vergessen, die QImages die du so erzeugst auch wieder zu löschen.silentstorm hat geschrieben: Sobald ich das QImage habe bin ich fertig, da ich mittels der Funktion fromImage das Qimage in ein QPixmap umwandel und mir dieses auf einem Widget anzeige.
Keine Ahnung, mit Linux hab ich in der Beziehung wenig Erfahrung.silentstorm hat geschrieben: edit:
wenn ich es über qtglcontext probiere kommt folgender fehler:benutze von nvidia die standard treiber in ubuntu.Code: Alles auswählen
Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". QGLContext::makeCurrent(): Cannot make invalid context current. Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". Xlib: extension "GLX" missing on display ":0.0". ### image webcam
in der xorg.conf wird glx geladen.
soll ich mal probieren die nvidia treiber zu installieren?
Ich hab den Code in meinem ursprünglichen Posting noch erweitert, so dass die Zuordnung zwischen meinen Variablen und IplImage klar werden sollte. Ich hab statt meinem ursprünglich vorgeschlagenen imageData Feld von IplImage, das imageDataOrigin verwendet, angeblich bekommt man da das Bild non-aligned, bzw. so wie's ursprünglich angelegt wurde. Hab ich selbst aber noch nicht probiert.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
-
silentstorm
- Beiträge: 3
- Registriert: 19. April 2007 18:17
Hi,
dieser Post ist zwar scon älter. Aber ich bin gerad erst darauf gestossen Also ich arbeite mit cpp und MinGW. Ich kann so weit auch alles ohne Warnungen und Fehler compilieren. Allerdings komme ich mit diesen Zeilen nicht ganz klar:
Um nun ein IplImage anzuzeigen, fügt man die angehängte Klasse QtGLContext in ein beliebiges Widget ein (z.B. als centralWidget von QMainWindow) und ruft die Methode setImage von QtGLContext auf.
Wie muss ich die Klasse einfügen? Ich habe bereits ein QMainWindow mit einem centralWidget und mehreren Buttons etc. Wenn ich das so mache:
dieser Post ist zwar scon älter. Aber ich bin gerad erst darauf gestossen Also ich arbeite mit cpp und MinGW. Ich kann so weit auch alles ohne Warnungen und Fehler compilieren. Allerdings komme ich mit diesen Zeilen nicht ganz klar:
Um nun ein IplImage anzuzeigen, fügt man die angehängte Klasse QtGLContext in ein beliebiges Widget ein (z.B. als centralWidget von QMainWindow) und ruft die Methode setImage von QtGLContext auf.
Wie muss ich die Klasse einfügen? Ich habe bereits ein QMainWindow mit einem centralWidget und mehreren Buttons etc. Wenn ich das so mache:
Code: Alles auswählen
mwindow::mwindow( QWidget *parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
setupUi(this);
QtGLContext w;
}
Stürzt eine Applikation sofot ab.
Ich hoffe ihr mögt und könnt mir helfen.
Vielen Dank & Gruß
Nico
Hi,
ich bin jetzt von MinGW nach MS Visual C++ umgestiegen. Hatte ich so wieso schon länger vor. Naja. Aufjeden Fall hier mein Debugger Output:
Also ich denke mal das Problem liegt daran dass in bestimmten DLL's keine Debug Infos gefunden werden können. Ich habe qt aber so compiliert dass ich einmal die debug und release DLL's habe. Frage ist nur, warum werden die Debug DLL's nich verwendet.
Wenn ich nämlich das ganze als Release compiliere läuft alles.
Bleibt denne auch noch die Frage. Wie baue ich das ganze z.B in mein CentralWidget ein. Also ich weiss auch nicht, ich blicke das nicht so ganz. Vllt. ist es auch schon ein bisschen spät/früh
Vielen Dank & Gruß
Nico
ich bin jetzt von MinGW nach MS Visual C++ umgestiegen. Hatte ich so wieso schon länger vor. Naja. Aufjeden Fall hier mein Debugger Output:
Code: Alles auswählen
"test_and_qt.exe": "C:\Documents and Settings\Nico\Desktop\Workspace\ovc\test_and_qt\debug\test_and_qt.exe" geladen, Symbole wurden geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\ntdll.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\kernel32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\qt4\bin\QtOpenGL4.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test_and_qt.exe": "C:\WINDOWS\system32\opengl32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\msvcrt.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\advapi32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\rpcrt4.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\gdi32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\user32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\glu32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\ddraw.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\dciman32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\qt4\bin\QtGui4.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test_and_qt.exe": "C:\WINDOWS\system32\comdlg32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\shlwapi.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\comctl32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\shell32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\oleaut32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\ole32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\imm32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\winmm.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\winspool.drv" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\qt4\bin\QtCore4.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test_and_qt.exe": "C:\WINDOWS\system32\ws2_32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\ws2help.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\msvcp80.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\msvcr80.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\Documents and Settings\Nico\Desktop\Workspace\ovc\test_and_qt\debug\highgui100.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\Documents and Settings\Nico\Desktop\Workspace\ovc\test_and_qt\debug\cxcore100.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\Documents and Settings\Nico\Desktop\Workspace\ovc\test_and_qt\debug\libguide40.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test_and_qt.exe": "C:\WINDOWS\system32\avifil32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\msacm32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\msvfw32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\avicap32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\version.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\qt4\bin\QtGuid4.dll" geladen, Symbole wurden geladen.
"test_and_qt.exe": "C:\qt4\bin\QtCored4.dll" geladen, Symbole wurden geladen.
"test_and_qt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcp80d.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\uxtheme.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\MSCTFIME.IME" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\Wintab32.dll" geladen, Keine Symbole geladen.
"test_and_qt.exe": "C:\WINDOWS\system32\Wacom_Tablet.dll" geladen, Keine Symbole geladen.
Das Programm "[932] test_and_qt.exe: Systemeigen" wurde mit Code 1 (0x1) beendet.
Wenn ich nämlich das ganze als Release compiliere läuft alles.
Bleibt denne auch noch die Frage. Wie baue ich das ganze z.B in mein CentralWidget ein. Also ich weiss auch nicht, ich blicke das nicht so ganz. Vllt. ist es auch schon ein bisschen spät/früh
Vielen Dank & Gruß
Nico
Also prinzipiell lässt sich das QtGLContext Widget auch als centralWidget oder beliebig anders verwenden (ist ja auch nur von QGLWidget abgeleitet).nico123 hat geschrieben:Ich habe schon ein wenig rumgebastelt, das einzigste was ich von dem GLWidget zu sehen bekomme, ist eine Weisse fläche. Mehr nicht. So habe ich das versucht:
QtGLContext *openGL = new QtGLContext();
imw->addWidget(openGL);
imw->setCurrentIndex(2);
Imw ist ein StackedWidget.
Und zum Thema Debugger: Das Ausgabefenster oder sich darin befindende Output ist kein Debugger. Ich meinte damit eher, dass Du mal einen Breakpoint setzen sollst und dir den Inhalt der Variablen anschaust oder dir den Callstack anschaust wenn's abstürzt.
Wenn Du eine weiße Fläche angezeigt bekommst, dann wird vermutlich drawTexture nicht aufgerufen, da die m_imgP Variable nicht gesetzt ist.
Hast du setImage aufgerufen?
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Hallo,
generell gibt es mehrere Möglichkeiten eine Webcam/IpCam anzuzeigen.
Sehr simpel und portabel ist die Möglichkeit mit QHttp Einzelbilder vom Webinterface der Kamera abzuholen. Hierbei kann man, je nach Kamera durchaus gute Ergebnisse erzielen. Bei einigen Kameratypen muss man sich noch mit JPEG-Stremas rumschlagen, aber die bekommt man auch in den Griff.
Komplizierter aber auch nicht so übel ist die Integration von Quicktime.
Weiterhin gibt es auch zu vielen Kameras (eher im professionellen Bereich) SDKs oder ActiveX-Controls zur Anzeige/Steuerung der Kameras.
Ciao,
Sephral
generell gibt es mehrere Möglichkeiten eine Webcam/IpCam anzuzeigen.
Sehr simpel und portabel ist die Möglichkeit mit QHttp Einzelbilder vom Webinterface der Kamera abzuholen. Hierbei kann man, je nach Kamera durchaus gute Ergebnisse erzielen. Bei einigen Kameratypen muss man sich noch mit JPEG-Stremas rumschlagen, aber die bekommt man auch in den Griff.
Komplizierter aber auch nicht so übel ist die Integration von Quicktime.
Weiterhin gibt es auch zu vielen Kameras (eher im professionellen Bereich) SDKs oder ActiveX-Controls zur Anzeige/Steuerung der Kameras.
Ciao,
Sephral
Hi,
@volker: Es geht jetzt. Vielen Dank. Lag irgendwie an der auf Debug compilierten Variante. Warum auch immer. Ins Widget hab ich so reinbekommen:
Aber einmal muss ich noch was fragen 
Im Moment ist deine Klasse ja so, dass ein Bild immer auf den Kompletten Render Bereich gestreckt wird. Gibt es auch eine Möglichkeit das Bild in original Größe zentriert dar zu stellen? Zu große Bilder sollten dann verkleinert werden. Ich bastel da jetzte schon ein bisschen dran rum, leider aber ohne Erfolg. Hab da ein bisschen am glViewPort was gemacht, hab aber nicht so ganz hingehaun. Kleine Bilder werden nun fast in original Größe dargestellt und auch zentriert. Zu große aber gar nicht.
Vielen Dank & Gruß
Nico
@volker: Es geht jetzt. Vielen Dank. Lag irgendwie an der auf Debug compilierten Variante. Warum auch immer. Ins Widget hab ich so reinbekommen:
Code: Alles auswählen
renderGL = new QtGLContext(imw);
imw->addWidget(renderGL);
imw->setCurrentIndex(2);
Im Moment ist deine Klasse ja so, dass ein Bild immer auf den Kompletten Render Bereich gestreckt wird. Gibt es auch eine Möglichkeit das Bild in original Größe zentriert dar zu stellen? Zu große Bilder sollten dann verkleinert werden. Ich bastel da jetzte schon ein bisschen dran rum, leider aber ohne Erfolg. Hab da ein bisschen am glViewPort was gemacht, hab aber nicht so ganz hingehaun. Kleine Bilder werden nun fast in original Größe dargestellt und auch zentriert. Zu große aber gar nicht.
Vielen Dank & Gruß
Nico
Das ist eher ein OpenGL Problem. Prinzipiell gibst du mit den glVertex2f die Koordinaten für die Textur an. Da die Projektionsmatrix auf glOrtho gestellt ist mit den Frustum Begrenzungen X[-1 1] Y[-1 1] und die Angaben für die Textur auf glVertex2f( -1, -1 ) bis glVertex2f( 1, 1 ) sollte die Textur eigentlich immer den kompletten Viewport ausfüllen. Wenn Du das anders haben willst, musst du das entsprechend handhaben. Aber wie schon gesagt, das ist dann eher ein OpenGL Problem.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Ok. Vielen Dank. Ist dann auch eine schöne Möglichkeit meine OpenGL Kenntnisse zu erweitern/verbessern.Volker hat geschrieben:Das ist eher ein OpenGL Problem. Prinzipiell gibst du mit den glVertex2f die Koordinaten für die Textur an. Da die Projektionsmatrix auf glOrtho gestellt ist mit den Frustum Begrenzungen X[-1 1] Y[-1 1] und die Angaben für die Textur auf glVertex2f( -1, -1 ) bis glVertex2f( 1, 1 ) sollte die Textur eigentlich immer den kompletten Viewport ausfüllen. Wenn Du das anders haben willst, musst du das entsprechend handhaben. Aber wie schon gesagt, das ist dann eher ein OpenGL Problem.
Gruß
Nico