2016-05-23 3 views
1

У меня есть массив цветов. Когда я использую ShapeRenderer, это занимает много времени. Я использую этот код:LibGDX самый быстрый способ визуализации цветового массива

for (int i = 0; i < colors.length; i++) { 
     for (int j = 0; j < colors[0].length; j++) { 
      shapeRenderer.setColor(colors[i][j]); 
      shapeRenderer.rect(i,j,1,1) 
     } 
    } 

Там должен быть более быстрым способом, потому что текстуры сделаны из пикселей и их рендеринг очень быстро. Мой вопрос: как я могу сделать этот массив цветов так же быстро, как текстура?

+1

текстуры нарисованы очень быстро, потому что это обычно лишь несколько обращений к GPU. Для выполнения этого пиксельного пикселя требуется гораздо больше вызовов и изменений состояния. Существует не так много, чтобы изменить это, если массив часто менялся. Если это не так, вы должны нарисовать их на текстуре, когда они будут изменены, а затем просто используйте текстуру. – CConard96

+0

Массив генерируется только один раз, так как я могу преобразовать его в текстуру? –

ответ

1

Текстуры рисуются очень быстро, потому что это всего лишь несколько вызовов на GPU. Для выполнения этого пиксельного пикселя требуется гораздо больше вызовов и изменений состояния. Существует не так много, чтобы изменить это, если массив часто менялся. Если это не так, вы должны нарисовать их на текстуре, когда они будут изменены, а затем просто используйте текстуру.

В LibGDX вы можете нарисовать каждый пиксель на Pixmap, а затем создать новую текстуру. Источник: https://github.com/libgdx/libgdx/wiki/Pixmaps

Пример кода:

Pixmap pixmap = new Pixmap(colors.length, colors[0].length, Format.RGBA8888); 
for (int i = 0; i < colors.length; i++) 
{ 
    for (int i = 0; i < colors.length; i++) 
    { 

     pixmap.setColor(0, 1, 0, 0.75f); //Set to color r,g,b,a 
     pixmap.drawPixel(i,j); //Draw the pixel 
    } 
} 
Texture pixmaptex = new Texture(pixmap); //Create new texture from the Pixmap 
pixmap.dispose(); 
+0

Большое спасибо! :) –

Смежные вопросы