En primer lugar, supongo que con "llamar llamadas", te refieres al comando que le dice a la GPU que represente un cierto conjunto de vértices como triángulos con cierto estado (shaders, blend state, etc.).
Las llamadas al sorteo no son necesariamente costosas. En las versiones anteriores de Direct3D, muchas llamadas requerían un cambio de contexto, que era costoso, pero esto no es cierto en las versiones más recientes.
La razón principal para hacer menos llamadas al sistema es que el hardware de gráficos puede transformar y representar triángulos mucho más rápido de lo que puede enviarlos. Si envía pocos triángulos con cada llamada, la CPU lo obligará por completo y la GPU estará prácticamente inactiva. La CPU no podrá alimentar la GPU lo suficientemente rápido.
Hacer una llamada de un solo sorteo con dos triángulos es barato, pero si envía muy pocos datos con cada llamada, no tendrá suficiente tiempo de CPU para enviar tanta geometría a la GPU como podría haberlo hecho.
Hay algunos costos reales al realizar llamadas, requiere configurar un montón de estado (qué conjunto de vértices usar, qué sombreado usar y demás) y los cambios de estado tienen un costo tanto en el hardware (actualizando un grupo de registros) y en el lado del conductor (validando y traduciendo sus llamadas que establecen el estado).
Pero las llamadas al costo de sorteo principal solo se aplican si cada llamada envía muy pocos datos, ya que esto provocará que esté vinculado a la CPU y le impida utilizar el hardware por completo.
Al igual que dijo Josh, las llamadas al sorteo también pueden hacer que el búfer de comando se vacíe, pero en mi experiencia eso suele ocurrir cuando llamas a SwapBuffers, no cuando envías geometría. Por lo general, los controladores de video intentan almacenar tanto como puedan (con algunos fotogramas a veces) para extraer todo el paralelismo posible de la GPU.
Debería leer la presentación de nVidia Batch Batch Batch!, es bastante antigua pero cubre exactamente este tema.
Oh sí, gracias por este Q :) –