Estoy tratando de exprimir algunos aumentos de rendimiento de mi aplicación iPhone OpenGL ES. Según Instruments, la utilización de mi soplete está cerca del 100% la mayor parte del tiempo, y mi FPS es de aproximadamente 24. Me gustaría subir mi FPS a más de 30. Puedo obtenerlo convirtiendo de GL_FLOAT a GL_SHORT, pero eso presenta algunos problemas técnicos bastante desalentadores para mí en este momento. Prefiero no ir allí.¿GlDrawElements() es más eficiente que glDrawArrays() cuando hay muchos vértices duplicados?
Por lo tanto, estoy considerando cambiar de glDrawArrays() a glDrawElements(). Tengo 35 mallas formadas por 708 vértices, pero muchos de esos vértices se comparten entre las caras. Estoy mapeando la textura, pero la malla es principalmente de color uniforme. Las caras que requieren texturización especial se dejarán como están.
Digamos que puedo reducir el número de vértices a la mitad. Digamos también que también organizo mi geometría de una manera que tiene sentido para el iPhone: por ejemplo, usando la herramienta PVRTTriStrip de Imagination Technologies. Haciendo caso omiso de la pequeña cantidad de memoria extra para el conjunto de índices, eso significa que reduje aproximadamente el ancho de banda de la memoria a la mitad, por lo que debería ver un aumento bastante bueno en el rendimiento.
¿Es esto cierto, o me falta algo o estoy malentendiendo algo? El consejo es apreciado.
Oh, estoy totalmente de acuerdo contigo. De hecho lo tenía funcionando en un punto, pero luego comencé a implementar algunas características nuevas, y la conversión GL_SHORT me estaba causando problemas. Me retracté para avanzar en la nueva característica; luego, cuando volví a agregarlo, encontré una nueva capa de complejidad. Definitivamente será lo próximo que intentaré si encuentro que necesito exprimir más rendimiento. –