Diferença entre OpenGL e DirectX12

APIs (Application Programming Interfaces) é o que processa o comando que você faz e faz a interface com o software para obter o resultado que você precisa.

Uma chamada de API envolve fazer uma solicitação ao servidor para executar uma tarefa / ação específica. Uma rápida comparação do Open GL e Direct 3D será feita aqui. Examinaremos mais de perto o desempenho das duas APIs com o GeeXLab, que agora está disponível com os renderizadores Open GL e Direct 3D 12.

A Open Graphics Library (OpenGL) é uma API de várias plataformas e vários idiomas para renderizar gráficos vetoriais em 2D e 3D. A API é normalmente usada para interagir com uma unidade de processamento gráfico (GPU), para obter a renderização acelerada por hardware. O Direct3D é uma interface de programação de aplicativos gráficos (API) para Microsoft Windows que faz parte do DirectX. O Direct3D é usado para renderizar gráficos tridimensionais em aplicativos em que o desempenho é importante, como jogos. O Direct3D usa aceleração de hardware se estiver disponível na placa de vídeo.

Uma malha texturizada é renderizada com várias densidades de polígono. O teste utiliza uma lista de comandos, um PSO, um programa HLSL, uma malha e uma textura. O GeeXLab e o teste estão disponíveis para download na pasta host_api / Direct3D12_vs_OpenGL / do pacote de amostra de código. O número de polígonos pode ser alterado editando o código fonte dos dois arquivos. O teste foi realizado para as seguintes especificações:

CPU: Intel Core i5 6600K a 3.5GHz

Placa-mãe: ASUS Z170 Pro Gaming

RAM: 8GB DDR4 Corsair Vengeance

SO: Windows 10 de 64 bits

Drivers:

Radeon R9 290X: Catalyst 15.10 beta

GeForce GTX 970: R358.50

Gráficos HD 530: v4279

Taxa de quadros por segundo

A taxa de quadros por segundo de ambas as APIs com drivers diferentes foi estudada.

Resultados Direct3D 12

Triângulos AMD Radeon R9 290X NVIDIA GeForce GTX 970 Intel HD Graphics 530

800 9100/40% 5500/25% 1360

5000 8200/45% 5300/35% 1220

20000 5800/60% 5100/45% 1100

80000 2400/80% 2600/70% 850

320000 720/90% 700/85% 500

500000 480/98% 480/90% 400

2000000 130/100% 130/97% 160

Resultados OpenGL 3.2

Triângulos AMD Radeon R9 290X NVIDIA GeForce GTX 970 Intel HD Graphics 530

800 4600/25% 3700/35% 1220

5000 4300/25% 3600/35% 1160

20000 4200/25% 3600/36% 1060

80000 4100/30% 3600/58% 840

320000 4100/46% 2800/87% 500

500000 3200/70% 2200/90% 420

2000000 1000/100% 930/95% 180

Os resultados do Direct 3D 12 foram mais rápidos que o OpenGL quando o número de polígonos era baixo. Quando o número de polígonos estava em torno de 80k, verificou-se que o Direct3D oferece o mesmo tipo de desempenho que o OpenGL. Quando esse número ultrapassou 80k, o OpenGL foi muito mais rápido.

Quads renderizados

Os resultados de um teste de esforço de tração também são listados, um quad foi processado 100, 400 e 4000 vezes. Cada quad é renderizado com sua própria chamada de empate. Para este teste, cada quad é composto de 4 vértices e 2 triângulos.

Direct 3D 12

GeForce GTX 960 (R361.43)

100 2900/20%

400 1070/26%

4000 180/20%

OpenGL 3.2

GeForce GTX 960 (R361.43)

100 1840/58%

400 730/30%

4000 97/20%

Pode-se observar que mais objetos podem ser desenhados com o Direct 3D 12 do que com o OpenGL.