Frage

Mein Team ist derzeit begrenzt Bilder auf einer OpenGL 1.4-Plattform zu zeichnen, was bedeutet, dass wir keine raffinierte Textur-Mapping verwenden können, um ein Bild zu zeichnen (ja, sind wir mit der integrierten Intel Grafik-Plattform beschränkt, es ist sehr nervig). Bisher wir sind in der Lage, Umfang zu zeichnen, und spiegeln Sie ein Bild, aber der Typ die Grafik tun behauptet, dass eine Drehung über glRotate kann nicht durchgeführt werden, während glDrawPixels mit, dass wir Texturen gehen müssten und so weiter, welche funktioniert nicht auf der Intel-Plattform.

Ich habe ihn Mittagessen wetten, dass es eine Rotationsfunktion, wie glRotate, die für gerade Bitmaps arbeiten. Gibt es eine solche Funktion gibt es? Würde glRotate Arbeit? Ich bin ein bisschen wie ein Neuling auf diese Grafiken Sache, aber es scheint lächerlich, dass die Bibliothek nicht für Bitmap-Rotation erlauben, außer über Textur Rotation.

Danke.

War es hilfreich?

Lösung

Sie können nicht glRotate mit glDrawPixels verwenden.

glDrawPixels ist die schlimmste und am wenigsten performante Art und Weise Pixel auf den Bildschirm mit Abstand zu bekommen. Sie werden eine noch bessere Leistung erhalten, indem die Pixel auf den Bildschirm setzt einen schlechten geschriebenen Software-Rasterizer verwenden.

Kurz glDrawPixels werden Pixeldaten aus dem Prozess-Speicher an den Grafikspeicher kopieren und einige sehr trivial Transformationen wie Spiegeln und Skalieren tun. Alles fortgeschritteneren (wie rotierend) erfordert, dass Sie tatsächlich die Merkmale des Grafik-Chipsatz zu verwenden. Z.B. Sie haben Texturen zu verwenden.

Und Texturen funktionieren. Sie arbeiten auch gut mit GL 1.4 und den Intel-Grafikchipsätzen. Ich habe an einem solchen Chipsatz arbeitete ich für eine ganze Weile. Sie wollen die Leistung der modernen ATI oder NVIDIA-Chipsatz nicht bekommen, aber sie sind nicht , die schlecht.

Meine beste Wette ist, dass jemand versuchte, Texturen einer nicht Potenz von zwei Größen zu schaffen, nicht zu tun und beschlossen, dass Texturen im Allgemeinen auf dem Chipsatz nicht funktionieren.

Das ist nicht wahr. Sie funktionieren. Sie müssen nur wissen, dass OpenGL erfordert, dass Sie Texturen an Leistung von zwei Dimensionen zu erstellen, und dass Sie entweder einen Teilrechteckes der größeren Textur verwenden oder mehrere Bilder in eine sehr große Textur setzen (die später Texturatlas genannt wird).

Sie können durch Einstellen der Textur-Koordinaten innerhalb einer größeren Textur für das kleinere Bild kompensieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top