As diferenças entre essas duas APIs são pequenos detalhes de implementação que significam que, depois de aprender uma, posso usá-la para tudo? Ou existem razões para aprender um ao invés do outro se eu quiser usá-lo em geral sem precisar reaprender outra API no futuro? Um ou outro é mais geral?
Em particular, eu gostaria de poder escrever para qualquer placa gráfica, para que o código não se restrinja apenas à execução nas placas de um fabricante específico ou em um modelo específico. Eu também gostaria de poder escrever um código que ainda funcione na ausência de uma placa gráfica (embora mais lenta).
Existe uma diferença em como o código portátil será em diferentes plataformas (sistemas operacionais / arquiteturas)? Estou interessado na disponibilidade de outras bibliotecas que trabalham com elas e se uma ou outra leva a menos restrições de licenciamento em seu ambiente mais amplo. Qualquer coisa mensurável que faça diferença se um deles pode ser o único que eu aprendo sem me restringir.