我有一些3D精灵的东西看起来像https://xoppa.github.io/blog/a-simple-card-game/的最后一步。哪个生成像这样的可渲染
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);
}
奇怪的是,似乎第一次由模型渲染渲染它是唯一的样子。例如,如果我使用帧缓冲区中的普通着色器渲染它,然后使用深度贴图着色器(仅输出不同的灰色阴影)再次渲染它,它以某种方式具有颜色。由此可见,我认为它无论出于何种原因都不会再次通过着色器。
有谁知道这是为什么?这对我来说似乎很奇怪。
虽然我知道贴花存在,但我想要&#34; 3D精灵&#34;与其他一切一起呈现。
答案 0 :(得分:0)
好吧,我明白了。问题是它只添加了一次渲染;相反,它每次都需要添加一个新的渲染。
val renderable = pool.obtain()
renderable.material = mat
...
renderables.add(renderable)
编辑:
更好的回答,renderables缓存他们使用的着色器。 renderable.shader = null也可以做到这一点。