2016-08-18 2 views
0

У меня есть что-то для 3D-спрайтов, которое выглядит примерно как последний шаг https://xoppa.github.io/blog/a-simple-card-game/. Который генерирует визуализируемую как этотLibGDX визуализируется только через шейдеры один раз?

public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool) { 
     meshBuilder.begin(mesh.getVertexAttributes()); 
     meshBuilder.part("cards", GL20.GL_TRIANGLES, renderable.meshPart); 
     for (Card card : this) { 
      meshBuilder.setVertexTransform(card.transform); 
      meshBuilder.addMesh(card.vertices, card.indices); 
     } 
     meshBuilder.end(mesh); 

     renderables.add(renderable); 
    } 

Странная часть, кажется, что первый раз он получает вынесенное modelbatch единственным, что она когда-нибудь выглядеть. Например, если я визуализую его с обычными шейдерами в фреймбуфере, то снова визуализируйте его с помощью шейдеров глубины (которые выводят только разные оттенки серого), он каким-то образом имеет цвет. Исходя из этого, я предполагаю, что по какой-то причине он просто не проходит через шейдеры.

Кто-нибудь знает, почему это так? Мне кажется таким странным.

И хотя я знаю, что отличительные знаки существуют, я хочу, чтобы «3D спрайты» отображались вместе со всем остальным.

ответ

0

Хорошо, я получил его работу. Проблема в том, что он только добавляет рендеринг один раз; вместо этого он должен каждый раз добавлять новый рендеринг.

val renderable = pool.obtain() 
renderable.material = mat 
... 
renderables.add(renderable) 

редактировать:

Лучше ответ, renderables кэш шейдеров они используют. renderally.shader = null также сделает трюк.

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