La mejor respuesta
He estado usando OpenGL en aplicaciones de gráficos por computadora durante casi 10 años.
OpenGL se usa principalmente para gráficos por computadora, es una API de gráficos. OpenCL se usa principalmente para computación paralela, es una API de computación.
Puede usar OpenGL para resolver algunos problemas que normalmente resuelve con OpenCL, pero tendrá que mapear su problema al contexto gráfico para que su cálculo funcione.
Creo que el El motivo principal para elegir OpenGL para tareas que no son de renderizado es para admitir hardware antiguo que «no puede ejecutar OpenCL».
Open Graphics Library ( OpenGL ) es un varios idiomas , multiplataforma interfaz de programación de aplicaciones (API) para renderizar 2D y 3D gráficos vectoriales . La API se utiliza normalmente para interactuar con un unidad de procesamiento de gráficos (GPU), para lograr acelerada por hardware renderizado .
Silicon Graphics Inc., (SGI) comenzó a desarrollar OpenGL en 1991 y lo lanzó en enero de 1992; las aplicaciones lo utilizan ampliamente en los campos de diseño asistido por computadora (CAD), realidad virtual , visualización científica , visualización de información, simulación de vuelo y videojuegos . OpenGL es administrado por el organización sin fines de lucro de tecnología consorcio Grupo Khronos . (de Wikipedia OpenGL )
Open Computing Language ( OpenCL ) es un marco para escribir programas que se ejecutan en plataformas heterogéneas que constan de unidades de procesamiento central (CPU), unidades de procesamiento de gráficos (GPU), procesadores de señales digitales ( DSP ), matrices de puertas programables en campo (FPGA) y otros procesadores o aceleradores de hardware. OpenCL especifica un lenguaje (basado en C99 ) para programar estos dispositivos y interfaces de programación de aplicaciones ( API) para controlar la plataforma y ejecutar programas en los dispositivos informáticos. OpenCL proporciona una interfaz estándar para computación paralela utilizando un paralelismo basado en tareas y basado en datos. OpenCL es un estándar abierto mantenido por el consorcio tecnológico sin fines de lucro Khronos Group . (de Wikipedia OpenCL )
Respuesta
Además de la similitud de nombres, son bestias muy diferentes. OpenCL son las siglas de Open Computing Language. Es un lenguaje que le permite crear núcleos de programa que pueden operar en paralelo en la GPU o CPU. OpenCL se utiliza normalmente para algoritmos de procesamiento de imágenes, simulaciones físicas y devuelve resultados numéricos. En otras palabras, el resultado de un programa OpenCL no es de naturaleza gráfica.
Por el contrario, OpenGL es una API gráfica que le permite enviar comandos de renderizado a la GPU. Normalmente, el objetivo es mostrar el renderizado en la pantalla.