Сегодня я проводил бенчмаркинг с использованием C# и OpenTK, чтобы увидеть, сколько я мог бы сделать до того, как частота кадров снизится. Числа, которые я получил, были довольно астрономическими, и я вполне доволен результатом моих тестов.Возможная оптимизация производительности рендеринга
В моем проекте я загружаю обезьяну блендера, которая составляет 968 треугольников. Затем я примеру его и делаю его 100 раз. Это означает, что я рисую 96 800 треугольников на кадр. Это число намного превосходит все, что мне нужно будет отображать во время любой сцены в моей игре. И после этого я толкнул его еще дальше и отобрал 2000 обезьян в разных местах. Я теперь получал колоссальные 1,936,000 (почти 2 миллиона треугольников на кадр), а частота кадров все еще была заблокирована со скоростью 60 кадров в секунду! Это число просто взорвало мой разум. Я подтолкнул его еще дальше, и, наконец, частота кадров начала уменьшаться, но это просто означает, что предел составляет примерно 4 миллиона треугольников на кадр с помощью instancing.
Мне было просто интересно, потому что я использую некоторые устаревшие OpenGL, если это еще может быть нажато еще дальше - или я должен даже беспокоиться?
Для моих тестов я загружаю модель обезьяны блендер, хранить его в список отображения, используя устаревшие вызовы как:
modelMeshID = MeshGenerator.Generate(delegate {
GL.Begin(PrimitiveType.Triangles);
foreach(Face f in model.Faces) {
foreach(ModelVertex p in f.Points) {
Vector3 v = model.Vertices[ p.Vertex ];
Vector3 n = model.Normals[ p.Normal ];
Vector2 tc = model.TexCoords[ p.TexCoord ];
GL.Normal3(n.X , n.Y , n.Z);
GL.TexCoord2(tc.Y , tc.X);
GL.Vertex3(v.X , v.Y , v.Z);
}
}
GL.End();
});
, а затем вызвать этот список й количество раз. Мой вопрос, хотя, если бы я мог ускорить это, если бы я бросил объекты VAO (объекты вершинного массива) в список отображения вместо старого GL.Vertex3 api? Будет ли этот эффект вообще? Или он создаст тот же результат с отображением списка?
Вот захват экрана несколько тысяч:
Мои системные требования:
CPU: AMD Athlon IIx4(quad core) 620 2.60 GHz
Graphics Card: AMD Radeon HD 6800
Какое оборудование вы используете? –
Никогда не рисуйте 'GL' с вершинами, [если вы можете буферизировать] (http://www.opentk.com/doc/graphics/geometry/vertex-arrays) их ... –
@RetoKoradi см. Мое обновление. – Krythic