방금 XNA를 사용하기 시작했으며 지금은 초보자 문제가 있습니다. 내가 그리는 객체에는 자체 정점 버퍼가 있으므로 ~ 50k 개의 객체가있을 때 fps는 극적으로 감소합니다 (60에서 5/12). XNA 초보자 : 버텍스 배열을 단일 버텍스 버퍼에 병합하는 방법
가 나는 덩어리로 내 정점을 병합해야하는 팁을 가지고,하지만 난내가 코드 예제를 얻을 수있는 모든 도움을 주셔서 감사합니다겠습니까 .. 그렇게하는 방법을 모르겠어요.
편집 : 이것은 당신이 비슷한을 가지고 그들을 병합하려면 블라
var cubes = newChunk.Where(c => c != null && !badIndex.Contains(c.BlockType));
VertexPositionColorTextureNormal[] verts = new VertexPositionColorTextureNormal[cubes.Sum(c => c.Vertices.Count)];
int VertexOffset = 0;
var inTheRightOrder = cubes;
foreach (var cube in inTheRightOrder)
{
var cb = cube.Vertices.ToArray();
for (int v = 0; v < cb.Length; v++)
{
verts[VertexOffset + v] = cb[v];
}
VertexOffset += cb.Length;
}
VertexBuffer newVB = new VertexBuffer(device, VertexPositionColorTextureNormal.VertexDeclaration, verts.Length, BufferUsage.WriteOnly);
newVB.SetData(verts);
var ck = new Cube { Vertices = verts, BoundingBox = BoundingBox.CreateFromPoints(verts.Select(i => i.Position)), Buffer = newVB, Cubes = cubes.Count() };
Cubes.Add(ck);
50,000 개체? 오브젝트를 그리기 전에 오브젝트를자를 필요가 있습니다. – Blau
오브젝트는 가시적 인 정점으로 만 만들어 지므로 큐브가 맨 위에서 만 보이면 맨 위의 정점 만 만들어집니다. – NoLifeKing