GlDrawElements vs glDrawArray eficiencia
Estoy haciendo un juego para iOS y Android. He visto en muchos lugares que el dibujo utilizando índices es más eficiente que el dibujo de triángulos.
La cosa es que estoy usando vértices comprimidos con pérdidas (como el formato de archivo del md2) y toma menos que sólo los índices solos – Array: N * 3 (xyz) * 1 (uchar) + translate (12 bytes) + scale 12 bytes). Elemento: N * 3 (xyz) * 4 (uint) + Array / ~ 10
- ¿Hay Android concepto de intención en el iPhone SDK
- Preguntas que cada desarrollador de Smartphone (Iphone, Android) debería ser capaz de responder?
- Limpiar por defecto algunas toallitas con jQuery touchwipe
- ¿Depuración en navegadores móviles?
- Jquerymobile's Tap-hold no funciona en el emulador de móviles Opera Mobile
Parece que la matriz es incluso mejor opción que el elemento indexado y comprimido, aunque la herramienta de perfiles OpenGL de Apple dice que debo usar glDrawElements.
¿La implementación de OpenGL prefiere matriz indexada? O es porque la matriz indexada contiene menos datos que la matriz regular descomprimida?
Ps Estoy usando OpenGL es 2.0 y el vertex shader es el que descomprime los vértices.
- cualquier notificación push de limitación a través de APNS o C2DM?
- ¿Podemos instalar Android OS en cualquier Windows Phone y viceversa, y lo mismo con iPhone y viceversa?
- ¿Puedo empezar a usar HTML 5 para mi aplicación de smartphone?
- Implementación de un filtro digital - a través de convolución o ecuación de diferencia?
- Mapeando una textura en un cuadrado: ¿Por qué se rota la imagen?
- Desarrollo móvil - Native VS Cross Platform VS JavaScript
- Google Cloud Messaging muestra "notRegistered" al usar la aplicación distribuida de iOS
- ¿Es posible, en principio, que un dispositivo Android interactúe con un iPhone a través de Bluetooth / GameKit?
¿Está utilizando Vertex Arrays o Vertex Buffer Objects? Si está utilizando Vertex Arrays, es posible que desee considerar la posibilidad de buscar glDrawRangeElements
en lugar de glDrawElements
.
A menos que todos tus polys tengan vértices distintos (bastante improbable), glDrawElements
será más rápido que glDrawArray
porque glDrawElements
aprovechará el hecho de que los vértices repetidos se cargarán en el caché de gpu y no tendrán que cargarse más de una vez para cada uno Poli que ese vértice es una parte de. Sin embargo, con glDrawArray
, glDrawArray
a través de la matriz y no podrá asociar vértices similares, por lo que tendrá que cargarlos varias veces.
Sin embargo, siempre depende de su situación específica. Trate de usar un generador de perfiles o obtener una velocidad de fotogramas utilizando cada uno de estos métodos. No debería ser demasiado difícil cambiar entre ellos. Si uno es claramente mejor, utilice uno. Si ninguno de los dos es excepcionalmente mejor, entonces probablemente no importa demasiado.
Recuerde, la optimización prematura es la raíz de todo mal. ¡Buena suerte! 🙂
El uso de glDrawElements()
ahorrará una cantidad sustancial de memoria y podrá especificar los elementos de la matriz en cualquier orden.
Usando glDrawArrays()
, sin embargo, su única opción es iterar secuencialmente sobre la lista.
Tienes que experimentar.
- ¿Mostrar un cuadro de diálogo y seguir entregando clics al fondo?
- Lengüetas de la barra de la acción de Android