Melhor resposta
Tenho usado OpenGL em aplicativos de computação gráfica há quase 10 anos.
OpenGL é usado principalmente para computação gráfica, é uma API gráfica. OpenCL é usado principalmente para computação paralela, é uma API de computação.
Você pode usar o OpenGL para resolver alguns problemas que normalmente resolve com o OpenCL, mas você terá que mapear seu problema para o contexto gráfico para fazer seu cálculo funcionar.
Acho que o O principal motivo para você escolher OpenGL para tarefas de não renderização é oferecer suporte a hardware mais antigo que não pode “executar OpenCL.
Biblioteca de gráficos abertos ( OpenGL ) é um idioma cruzado , plataforma cruzada interface de programação de aplicativo (API) para renderização 2D e 3D gráficos vetoriais . A API é normalmente usada para interagir com um unidade de processamento gráfico (GPU), para obter aceleração por hardware renderização .
Silicon Graphics Inc., (SGI) começou a desenvolver OpenGL em 1991 e o lançou em janeiro de 1992; aplicativos usam-no amplamente nas áreas de design auxiliado por computador (CAD), realidade virtual , visualização científica , visualização de informações, simulação de voo e videogames . OpenGL é gerenciado pela tecnologia sem fins lucrativos consórcio Grupo Khronos . (da Wikipedia OpenGL )
Linguagem de computação aberta ( OpenCL ) é uma estrutura para escrever programas que são executados em plataformas heterogêneas que consistem em unidades de processamento central (CPUs), unidades de processamento gráfico (GPUs), processadores de sinais digitais ( DSPs ), matrizes de portas programáveis em campo (FPGAs) e outros processadores ou aceleradores de hardware. OpenCL especifica uma linguagem (com base em C99 ) para programar esses dispositivos e interfaces de programação de aplicativos ( APIs) para controlar a plataforma e executar programas nos dispositivos de computação. OpenCL fornece uma interface padrão para computação paralela usando paralelismo baseado em tarefas e em dados. OpenCL é um padrão aberto mantido pelo consórcio de tecnologia sem fins lucrativos Khronos Group . (da Wikipedia OpenCL )
Resposta
Além da semelhança de nomes, eles são bestas muito diferentes. OpenCL significa Open Computing Language. É uma linguagem que permite criar kernels de programas que podem operar em paralelo na GPU ou CPU. OpenCL é normalmente usado para algoritmos de processamento de imagem, simulações físicas e retorna resultados numéricos. Em outras palavras, a saída de um programa OpenCL não é de natureza gráfica.
Em contraste, OpenGL é uma API gráfica que permite enviar comandos de renderização para a GPU. Normalmente, o objetivo é mostrar a renderização na tela.