我正在创建一个像体素一样的游戏,其体素小于普通的我的克隆。这些体素没有ID来确定块的类型,而是一种颜色。
我的风景物体由微小的体素组成,由二进制数据构成,它保存每个体素的颜色整数。然后这些从体素构建一个小模型。
这个问题是它不接受我的微小网格颜色,但要求我提供一个覆盖所有其他颜色的材料。我还尝试了另外一种替代方案,它制作了许多小型模型,但这太慢了。
我目前拥有的场景是白色的:
private void buildFromColours(int[][][] colours) {
MeshBuilder mb = new MeshBuilder();
ModelBuilder mm = new ModelBuilder();
mm.begin();
List<Mesh> meshes = new LinkedList<Mesh>();
for (int x = 0; x < colours.length; x++) {
for (int y = 0; y < colours[x].length; y++) {
for (int z = 0; z < colours[x][y].length; z++) {
int col = colours[x][y][z];
if ((col & 0xFF) == 0) {
continue;
}
mb.begin(VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal, GL20.GL_TRIANGLES);
mb.setColor(new Color(col));
mb.box(x, y, z, 1, 1, 1);
Mesh m = mb.end();
meshes.add(m);
}
}
}
Mesh finalMesh = Mesh.create(true, meshes.toArray(new Mesh[0]));
mm.part("box", finalMesh, GL20.GL_TRIANGLES, new Material()); /* I have to specify a material :( */
model = new ModelInstance(mm.end());
}
我现在还不确定要去哪里。我必须能够在渲染时指定环境,因此使用着色器渲染一组网格将不起作用。
答案 0 :(得分:2)
我可以向你保证,材料不会覆盖顶点颜色(它们是两个截然不同的东西)。您根本没有指定要使用顶点颜色,导致它们不被包含在内。考虑添加VertexAttributes.Usage.ColorPacked
。