Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » glScale

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.08.2004, 16:22 Uhr
~Frank
Gast


Hi.

Ich stelle ein Bild aus bem Speicher (Windows DIB) mittels glDrawPixels da, leider ist es dann geflippt + gespiegelt, obwohl die ersten 3 Bytes im Speicherbereich dem 1. Pixel entsprechen (oben links im Bild RGB).

Weiß jemand wie ich openGL überrede das Bild zu spiegeln und zu flippen, ich konnte glScale(-1,-1,1) nicht dazu überreden.

mfg Frank

Ps. Bin Anfänger mit OpenGL
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.08.2004, 18:19 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


glRotated könnte dir helfen Oder du liest das Bitmap "gespiegelt + geflippt" ein, dann stellt er es wieder richtig da
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.08.2004, 09:16 Uhr
~Frank
Gast


Moin.

Ein Rotieren wird mir nichts nützen, weil ich die Spiegelung damit nicht wegbekomme. Spiegeln ist ja was anderes als 180 Grad drehen.
Das Einlesen der Daten kann ich auch nicht beeinflussen.
Am besten wäre da wohl ein "reverses" memcpy (gibt es sowas?), ich habe keine Lust jedes Byte einzeln zu kopieren.

Hast du ne Ahnung warum das glScale nicht funzen will, geht das ev. nur auf OpenGL Objekten (Punkten , Linien, Polygonen...) und nicht wenn ich direkt mittels glDrawPixels setze ?

Fruß Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.08.2004, 13:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wie zeichnest du mit glDrawPixels, evtl kannst du ja die bytes "flippen"
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.08.2004, 15:46 Uhr
~Frank
Gast


Habe nun rausbekommen, das die Zeilen "von unten nach oben" im Fenster gezeichnet werden.
Das Bild also nur geflippt ist.

So läuft es nun, aber suboptimal.


C++:

/*
  In src liegen die Pixel RGB,RGB,RGB... von oben links zeilenweise bis unten rechts drin.
  In dest sind die Zeilen dann getauscht.
*/


unsigned char* dest = new unsigned char[width * height * 3];
unsigned linewidth = width * 3;
unsigned yoff = linewidth * height;

for (unsigned i = 0; i < height; ++i) {
    yoff -= linewidth;
     memcpy(dest + yoff, src + i * linewidth, linewidth);
}

  glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, dest);



mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.08.2004, 18:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wirste auch nicht anders hinkriegen (mir ist keine lösung bekannt) außer du speicherst das bitmap gleich "geflippt"
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.08.2004, 10:06 Uhr
~Frank
Gast


Habe es jetzt mittels glPixelZoom(1,-1) hinbekommen. Ist wohl nicht die schlechteste Lösung da ich dann gleich das Bild auf Fenstergröße anpassen kann (mit modifizierten Faktoren).

Gruß Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.08.2004, 11:39 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ahja stimmt, glPixelZoom gibts ja auch noch :P
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: