質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.83%

OpenGL系ライブラリが多すぎ!頭の中を整理したい。

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 11K+

tiwatiwa

score 65

OpenGLを一昨日から勉強し始めました。(言語はC++です)
とりあえずいろいろ動かしてみようと思ったのですが、「○○が定義されていません」のエラーがたくさん出てきて困っています。
(ライブラリがいろいろありすぎです><)

そこで、OpenGLのライブラリを整理したいと思い質問させていただきました。
ざっと調べると下のようなライブラリを見つけました。
・どのように分類されているのか
・なにができるのか
・どのように使い分けるのか

などを教えてください。
(まとめられているサイトなどがあればURLだけでもありがたいです。)

OpenGL
GLUT
OpenGL ES
GLSL
HLSL
GLKit
OpenCV
GLFW
OpenAL
glpng
webGL
・・・まだまだあると思います。

名前が似てるので分類されている?
仲間1:OpenGL、OpenGL ES、OpenCV、OpenAL
仲間2:GLUT、GLSL、HLSL、GLFW   みたいな?

=========================================================
追加で質問を失礼します。
「opengl インストール」で検索すると、OpenGLではなくGLUTのインストール設定方法が出てきます。
OpenGLとGLUTは同じものと考えていいのでしょうか?
また、<opengl.h>をインクルードして使うにはどうすればいいのでしょう。。。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

ご質問の内容を読むに、はじめたばかりという印象を受けました(はじめて1日とも書いてありますし・・・)。

さて、手っ取り早いところは、一冊OpenGLの基礎本を読んでしまうのが一番はやいでしょう。
いろいろ記載されていますが、そんなに一度に理解するひつようはありません。まずは、OpenGLの根本を理解するのがいちばんはやいかと。

ちなみに、いくつか出てきたキーワードを整理すると、

  1. OpenGL 基本の3D処理エンジンライブラリです。さまざまなOSで現在は利用できます。
  2. OpenGL ES 「Open GL」の組み込み用のサブセットライブラリです。できることはOpenGLとにていますが、組み込み用のため、関数の一部が使えないなどの制限があります(昔は・・・今はかわってるかも?)。
  3. GLUT OpenGLをもっと使いやすく?、便利に使えるように、OpenGLの関数を拡張したライブラリです。
  4. webGL OpenGL ESのAPIと同じような事を、Canvasで利用できるようにした、WEB用のライブラリです。

と、この通り、基本は、OpenGLをまずはきちんと、学習すれば、必然的に、他の役割などわかってくるかと思います。

とりあえずいろいろ動かしてみようと思ったのですが、「○ ○が定義されていません」のエラーが」・・・

との事、いろいろ実際に動かしたい気持ちはわかりますが、きちんと、そして効率よく学習したいならば、まずはポリゴンを1つ表示させる事など、簡単なOpenGLのサンプルなどを、書籍のチュートリアルなどを追って学習されるのが早いかと。

何せ、いろいろな聞き慣れないキーワードも多い、3D関連の世界ですのが、あきらめずにがんばってください。
ちなみに、私はあきらめて、そして絵心的な、デザインセンス的な、そんな所の不足もあり、途中で挫折した口です。。。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/14 23:21

    回答ありがとうございます。ちょっと目の前が明るくなりました。

    また、OpenGLチュートリアルでおすすめの本があれば教えてください。
    (DirectXは勉強したので、3Dの基礎は大丈夫なはずです)

    キャンセル

+1

まずどんな環境で実行するのか、OpenGLのバージョンは何を使うのかを決めたほうが良いと思います。
特にWindowsではそのままではOpenGL関連の定義がほぼ無いため、OpenGLの関数等を使用する事はできません。
今ならOpenGL ES2.0以降から入るのをお勧めします。

OpenGLとその亜種

  • OpenGL
    バージョンによって使える機能が異なります。使用するバージョンに注意しましょう

  • OpenGL ES
      携帯電話や車載器などの組み込みシステム向けのOpenGLのサブセットです。
      OpenGL ES 1.1と OpenGL ES 2.0以降では全く互換性はありません。
      組み込みシステム向けといってもデスクトップPCでも実行できる環境は整っていて(ANGLEやGPUベンダーの出しているSDKなど) Webブラウザ(WebGL)などでも使用でき実行できる環境が一番多いです。

  • WebGL
      OpenGL ES 2.0をJavaScriptへほぼそのまま移植したものです。

  • GLSL
      OpenGL 2.0やOpenGL ES2.0以降で使用するGPU内で実行するプログラムを書くための言語です。
      OpenGL ES2.0以降やWebGLを使う場合はGLSLの記述が必須になります。

補助ライブラリ

 OpenGLはウインドウを表示したりOpenGLを使用するためのコンテキストを生成したり、入力イベントを処理したりする機能はないため、それらを簡単に扱うための補助的なライブラリがよく使われます。

  • GLUT
    古くからあるクロスプラットフォームなウインドウ、コンテキスト生成や入力イベントの処理+αのライブラリです。OpenGL2.0以降では使えない機能があります。

  • GLFW
      クロスプラットフォームな割と新しめのウインドウ生成、コンテキスト生成、入力イベント処理ライブラリです。

  • GLKit
      iOSやOSXなどのApple環境専用のOpenGL補助フレームワークです。

  • glpng
      知りません。

無関係

  • HLSL
      DirectXを勉強したことがあるのであれば説明は不要ですね。
  • OpenCV
      Open な Computer Visionライブラリです。高度な画像解析などを行うためのライブラリです。
  • OpenAL
      Open な Audio Libraryです。APIはOpenGLに似せて作られていますが、OpenGLと直接関係ありません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/16 01:13

    WindowsでOpenGL ES2.0を扱うのであればANGLEとそのsampleコードをhello_triangleからを読むのをお勧めします。
    https://github.com/google/angle

    キャンセル

0

OpenCVやOpenALはOpenGLとは関係ないかなぁ、連携はできるけど。

まずOpenGLがあり、そのサブセットがあり、またC以外の言語から使うためのバインディングがあります。
それから、ラッパーが多数存在します。
まずその区別をつけましょう。

OpenGLのラッパーとしてはSFMLが有名かな。GLFWもラッパーだけどちょっとラッパーと呼ぶには低レイヤーというか・・・。あと、OpenGLを用いたGUIライブラリもあり、これはImgui
https://github.com/ocornut/imgui
が有名かな

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/14 23:23

    ライブラリたちはみんな全く別物なのですね。

    Imguiですね。調べてみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る