Я не могу понять, почему этот код медленный для графического процессора на iOS, этот код отлично работает в Windows без каких-либо проблем.
В основном то, что я делаю, - это то, что у меня есть один большой динамический буфер вершин (GL_STREAM_DRAW), и я пытаюсь обновлять только его части, части, которые в одном кадре не должны перекрываться, поэтому они не должны вызывать сбросы и CPU не нужно ждать завершения работы графического процессора, но это явно не тот случай, когда я получаю примерно 10 кадров в секунду на iPhone 4 даже при рисовании всего лишь от 10 до 20 треугольников ... тогда как на моем ПК я получаю более 400 кадров в секунду с тем же кодом ...
Как видно из трассировки, я повторно использую один и тот же буфер, но проверяю, не перекрываются ли обновленные части ... что я могу сделать, чтобы улучшить производительность?
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)