Поэтому я хочу проверить некоторую информацию для моего проекта.
У меня есть видеокарта GTX 460. Я написал программу DX10 с 20k треугольниками, напечатанными на экране, и теперь я получаю 28 FPS в версии Release. Все эти треугольники вызывают DrawIndexed внутри них, так что это, конечно, накладные расходы на коллирование такого количества дро.
Но в любом случае, я хотел бы знать: сколько треугольников я могу нарисовать на экране с этими возможностями и на каком FPS? Я думаю, что 20k треугольников недостаточно даже для загрузки хороших моделей на игровую сцену.
Извините за мой ужасный английский.
Похоже, что вы создаете один вызов отрисовки для каждого примитива треугольника, это очень плохо, поэтому ужасный FPS, вы должны стремиться нарисовать как можно больше треугольников за вызов отрисовки, это можно сделать несколькими способами:
DX SDK будет иметь примеры реализации каждого из них. Точная сумма для треугольников, которые вы можете нарисовать, и приличный FPS (30 или 60, если вы хотите vsync) сильно варьируется в зависимости от сложности затенения треугольников, однако, если нарисовать проще всего, вы сможете набрать несколько миллионов с легкость.
Я бы рекомендовал хорошенько взглянуть на внутренности движка с открытым исходным кодом DX11 (существует не так много проектов DX10, но API практически идентичен), например, Гейроглиф 3, и пройти через учебники SDK.
Есть также довольно много презентаций о повышении производительности с DX10, но профилируйте ваш код, прежде чем углубляться в предложения, в полной мере, вот некоторые из самих поставщиков оборудования (подсказки с цветовой кодировкой для оборудования nVidia против AMD):
Других решений пока нет …