web-dev-qa-db-ja.com

SDLとOpenGLが関連しているのはなぜですか?

SDLをいじくり回していて、SDLで画像を回転できないことがわかりました。質問がどこに出されても、人々はOpenGLを使ってローテーションを行うと言った。 SDLはOpenGLから完全に分離されているといつも思っていましたが、これは間違っているのでしょうか。私はSDL内でOpenGLを使用するためのチュートリアルも見つけました。 SDLとOpenGLの関係は正確には何ですか? OpenGLがより強力で、より多くのことができるようになっている場合は、なぜOpenGLを使用しないのですか(これは私が読んだものからです)?

47
Devan Buggay

[〜#〜] sdl [〜#〜] は、オーディオ、キーボード、マウス、ジョイスティックなどへの低レベルのアクセスを提供するように設計されたクロスプラットフォームのマルチメディアライブラリです。OpenGLを介して3Dハードウェアもサポートします。

OpenGL2Dおよび3Dコンピュータグラフィックスを生成するアプリケーションを作成するためのクロス言語、クロスプラットフォームAPIを定義する標準仕様です 。インターフェイスは250以上の異なる関数呼び出しで構成されており、単純なプリミティブから複雑な3次元シーンを描画するために使用できます。 OpenGLは1992 [4]にSilicon Graphics Inc.(SGI)によって開発され、CAD、バーチャルリアリティ、科学的視覚化、情報視覚化、および飛行シミュレーションで広く使用されています。ビデオゲームでも使用され、Microsoft WindowsプラットフォームのDirect3Dと競合します(OpenGLとDirect3Dを参照)。

25
karlphillip

SDLはOpenGLの上のレイヤーです。実際、WindowsではデフォルトでGDIを使用し、DirectXバックエンドも備えています。おそらくOpenGLを使用してSDLの制限を回避できると言われていますデフォルトでOpenGLを使用するプラットフォームでは(ahem、Linux)より高いレベルの抽象化ではその機能が公開されないためです。ただし、コードはWindows(または少なくともGDIバックエンドを使用するWindows)に移植できません)。

また、SDLはグラフィックス以外にも、OpenGLが行わないオーディオ、入力などの多くのことを行います。

15
J Trana

SDLは、入力、ウィンドウの作成、画像の読み込み、およびOpenGLが処理しないその他のいくつかの機能を処理します。

6
SurvivalMachine

SDLは、一部のプラットフォームでハードウェアレンダリングを必要とするコンテンツのハードウェアレンダラーとしてOpenGLを使用します。そのようなプラットフォームがある場合、OpenGLは、SDLが抽象化される基盤となるAPIです。

6
Puppy

グラフィックスの回転に関する例について:SDL自体(つまり、CPU上)よりもOpenGL(つまり、ハードウェアアクセラレーション)を使用する方がよいです。効果を滑らかにしたい)。

ただし、(理由以外に)ビットマップの回転とスケーリングを行うモジュールSDL_rotozoomを持つSDL_gfxパッケージの使用を妨げるものはありません。

5
Kos

多くの人が述べたように。 SDLはレンダリングだけではありません。オーディオ、入力、その他すべての素晴らしいものを処理することに加えて、他の方法で自分で実装する必要がある多くの機能にアクセスできるようにすることで、グラフィックをより簡単に使用できるようにします。
つまり、SDLはOpenGLの上の抽象化レイヤーです。アプリケーションでOpenGLにアクセスできるため、フルパワーで使用できます。
この種のAPIは初めてのようなので、簡単な追加:SDL(2Dグラフィック用)に類似したAPIが必要な場合は、 [〜# 〜] sfml [〜#〜] 。 Cの代わりにC++に基づいています。Cは回転などの機能を備えています。また、OpenGLに基づいています。 :)

3
Skalli