2009-08-26 6 views

Antwort

3

Ich glaube, dass Sie von der Verwendung einer texture atlas profitieren würden, eine riesige Textur, die alle Ihre kleineren enthält. Für OpenGL ES auf dem iPhone, Apple recommends, dass Sie alle Scheitelpunkte, die Sie gleichzeitig in einem Vertex Buffer Object (VBO) zeichnen können, und dass Sie die Scheitelpunkt-, Normal-, Farb- und Texturinformationen innerhalb dieses Puffers verschachteln (in diese Reihenfolge). Beachten Sie, dass der VBO selbst keine wesentliche Leistungssteigerung gegenüber einem Standard-Array auf den ursprünglichen iPhones bietet, das 3GS jedoch Hardware-VBO-Unterstützung bietet.

Entweder durch Gruppieren von Daten in eine VBO oder ein Array habe ich in meiner Anwendung deutliche Leistungsverbesserungen festgestellt, als ich die Anzahl der Zeichenaufrufe reduzierte.

Ein anderer Bereich, den Sie betrachten sollten, ist die Reduzierung der Größe Ihrer Geometrie. Indem ich von einem GLfloat zu GLshort für meine Eckpunkt- und normalen Koordinatendaten wechselte, sah ich eine über 30% ige Verbesserung der OpenGL ES-Rendering-Geschwindigkeit auf dem iPhone 3G.

+1

Darüber hinaus könnte es sich lohnen, diese Präsentation von ngmoco zu überprüfen: Übersicht über iPhone OpenGL-Optimierungstechniken - http://gamemakers.ngmoco.com/post/111712416/ Stanford-Universität-und-Apfel-waren-genug-zu- – Dave

+0

Einverstanden. Das ist eine hervorragende Präsentation, wenn es um die Optimierung von OpenGL ES geht. –

1

TBH Sie sind besser dran mit separaten Ziehanrufen. Es ist unwahrscheinlich, dass die Performance spürbar beeinträchtigt wird.

Es kann "Möglichkeiten" geben, dies durch Indizierung in Scheiben einer Volume-Textur (oder Textur-Array) zu tun, aber Sie würden die 3GS dazu benötigen und es würde nicht auf dem alten iPhone funktionieren. Ich bezweifle auch, dass du dadurch spürbare Leistungsverbesserungen erzielen würdest.

+0

+1, aber was bedeutet TBH? –

+0

Um ehrlich zu sein. –

+0

oh, haha, Internet-Slang scheitern meinerseits ;-) –

Verwandte Themen