2016-05-23 19 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回だけ生成されるため、どのようにテクスチャに変換できますか? –

答えて

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

ありがとうございました! :) –

関連する問題