2009-03-25 8 views
0

Ich erstelle eine iPhone-Anwendung und ich verwende OpenGL, die ich neu bin. Ich muss die Pixelpositionen ändern, kann mir jemand die Funktionen zeigen, um an Pixeln zu arbeiten?Wie Pixel bewegen?

Einige Beispielquellcode, um die Idee zu veranschaulichen, würde geschätzt werden.

+0

Was meinst du mit Pixel bewegen? Das macht keinen Sinn. – mmcdole

Antwort

3

Ich bin kein Experte auf dem iPhone Themen im Besonderen und ich bin ein Zwischen OpenGL-Programmierer, so nehmen diese für das, was es wert ist -

OpenGL schreckt direkte Manipulation Pixel, vor allem, weil es nicht Machen Sie so viel Sinn, wenn Sie mit irgendeiner Art von Hardware-Beschleunigung zu tun haben. Die Bildpuffer werden normalerweise direkt im Grafik-RAM gespeichert, und während man Bits in den Grafikspeicher schieben kann, ist das Zurückziehen von Informationen ein seltener und nicht optimierter Fall. Die 3D-Karten sind für die schnelle Texturierung von Dreiecken und nicht für Pixel optimiert.

In den guten alten Tagen, als der Framebuffer im Hauptspeicher war, war es keine große Sache, aber die Dinge haben sich geändert. Während es oft noch möglich ist, einzelne Pixel zu betrachten und zu stochern, werden Sie in der Regel dramatische Geschwindigkeitssteigerungen erzielen, wenn Sie Ihre Operation als native OpenGL-Methode erneut ausdrücken. Sie können übrigens mit GL_POINTS Pixel schreiben, aber auch hier ist es ziemlich langsam.

Dennoch gibt es einige Effekte, bei denen die Manipulation von Pixeln an Ort und Stelle nützlich ist - Plasmen und Flammeneffekte können wirklich nicht anders gemacht werden. Dazu empfehle ich Ihnen, einen Framepuffer zu emulieren - ordnen Sie Ihre eigenen zu und schreiben Sie direkt darauf. Wenn Sie es dann anzeigen müssen, blitten Sie den ganzen Block auf einmal auf den Bildschirm.