No entiendo por qué este código es lento para la GPU en iOS, este código funciona muy bien en Windows sin ningún problema.glBufferSubData actuaciones abismales en iOS?
Básicamente lo que hago es que tengo un gran búfer de vértices dinámico (GL_STREAM_DRAW) y trato de actualizar solo partes de él, las partes que en un solo cuadro no deben superponerse, por lo que no deberían causar vaciados y la CPU no debería tener que esperar a que termine la GPU, pero claramente no es el caso, recibo aproximadamente 10 fps en un iPhone 4 incluso cuando dibujo tan solo 10 o 20 triángulos ... mientras obtengo más de 400 FPS en mi PC con el mismo código ...
Como puede ver en la traza, estoy reutilizando el mismo buffer, pero me estoy asegurando de que las partes actualizadas no se superpongan ... ¿Qué podría hacer con mejorar el rendimiento?
Index Trace 695 glBindBuffer(GL_ARRAY_BUFFER, 1u) 696 glBufferSubData(GL_ARRAY_BUFFER, 144l, 144l, 0x0453d090) 697 glBlendFunc(GL_SRC_ALPHA, GL_ZERO) 698 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 699 glActiveTexture(GL_TEXTURE0) 700 glBindTexture(GL_TEXTURE_2D, 12u) 701 glUseProgram(12ul) 702 glUniform4fv(uniform_000000001cd24950_12_0, 1, {0.0500000f, 0.0000000f, 0.0000000f, 0.0000000f}) 703 glUniform4fv(uniform_000000001cd24950_12_1, 1, {0.0000000f, 0.0333333f, 0.0000000f, 0.0000000f}) 704 glUniform4fv(uniform_000000001cd24950_12_2, 1, {0.0000000f, 0.0000000f, -0.0010010f, 0.0000000f}) 705 glUniform4fv(uniform_000000001cd24950_12_3, 1, {-0.0000000f, 0.6333333f, -0.0010010f, 1.0000000f}) 706 glDrawArrays(GL_TRIANGLES, 6, 6) 707 glBindBuffer(GL_ARRAY_BUFFER, 1u) 708 glBufferSubData(GL_ARRAY_BUFFER, 288l, 144l, 0x0453d120)
Si eres nuevo aquí, no te olvides de informarte sobre las funciones de aceptación y votación. –