OpenGLとOpenCLの主な違いは、OpenGLがグラフィックスプログラミングに使われるのに対し、OpenCLはヘテロジニアスコンピューティングに使われることです。
OpenGLとOpenCLはともにKhronos Groupによって管理されています。
OpenGLはグラフィックス処理を行うプログラムを書くことができ、OpenCLは複数のプロセッサで構成されるヘテロジニアスシステム用のプログラムを書くことができます。
どちらもC言語を使って書かれています。
OpenGLとは
OpenGLは、2Dおよび3Dのベクターグラフィックスを描画するためのAPIです。
グラフィックスプログラムを作成するための最も一般的なAPIの1つです。
科学的な可視化、ビデオゲームデザイン、フライトシミュレーション、機械工学のコンピュータ支援設計(CAD)などで使用されています。
OpenGLはすでに定義された関数で構成されており、プログラマはそれらを直接プログラム中で使用することができます。
OpenGLを使って2次元(三角形、多角形、六角形など)、3次元(立方体、球体、トーラスなど)のオブジェクトを作成することができます。
また、拡大縮小、移動、回転、色や影の塗りつぶし、入力デバイスとのインタラクションを追加することが可能です。
さらに、OpenGLによるブレンド、テクスチャマッピング、アニメーション、大気効果(霧、煙など)の付加、投影などを行うことができる。
OpenCLとは
ヘテロジニアスシステムとは、より多くのプロセッサまたはコアを使用してパフォーマンスを向上させるシステムのことです。
プロセッサはタスクによって似たり寄ったりです。
OpenCL は、ヘテロジニアスシステム用のプログラムを書くのに役立つフレームワークです。
したがって、プログラマはOpenCLを使って、複数のCPU、GPU、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Arrays)などを備えたシステム用のプログラムを書くことができる。
また、タスクベース、データベースの並列計算を行うことができる。
カーネルは、OpenCLデバイス上で実行される関数です。
OpenCLは、ホスト上で動作するプログラムが計算機上のカーネルを起動し、デバイスのメモリを管理するためのAPI(Application Programming Interface)を定義している。
さらに、プログラムを記述するためのC言語と同様の言語を提供する。
C、C++のほか、Python、Java、Perl、NETなどの言語や技術に対応したAPIを備えている。
OpenGLとOpenCLの違い
定義
OpenGLは2Dおよび3Dベクターグラフィックスをレンダリングするためのクロスプラットフォームのアプリケーションプログラミングインターフェース(API)であり、OpenCLは異種プラットフォーム間で実行するプログラムを記述するためのフレームワークです。
これがOpenGLとOpenCLの大きな違いです。
長文
OpenGLはOpen Graphics Libraryの略、OpenCLはOpen Computing Languageの略です。
原著者名
OpenGLの原著作者はSilicon Graphics、OpenCLの原著作者はApple Inc.です。
言語
OpenGL と OpenCL のもう一つの違いは、OpenGL が C 言語で書かれ ているのに対し、OpenCL は C++バインディングで書かれていることで す。
使用方法
OpenGLとOpenCLの大きな違いとして、Usage(使用法)があります。
OpenGLは2Dや3Dのグラフィックス操作を行うために使用され、OpenCLは複数のCPU、GPU、DSP、FPGAなどを搭載したヘテロジニアスシステム用のプログラムを記述するために使用されます。
結論
OpenGLとOpenCLの主な違いは、OpenGLがグラフィックスプログラミングに使用されるのに対し、OpenCLはヘテロジニアスコンピューティングに使用されることである。
OpenGLはビデオゲームデザイン、シミュレーションなどで使用されます。
OpenGLはシステムの性能を上げるのに役立ち、並列コンピューティングを可能にします。