SDL Source Tour Extra Vol.2

SDL_OPENGLBLIT is officialy obsolete!

副題: 「SDL_OPENGLBLITとはつまり何だったのか」

概要

SDL_OPENGLBLITについては害ばかりが主張されており (拙訳)、 ここ数年はめったに話題に登ることもありませんでした。 存在すら知らなかったSDLユーザも少なくないでしょう。

Samさんの手により2004年の冬にひっそりと葬り去られたSDL_OPENGLBLITを追悼します。

終わりの日

以下は1.3のブランチの中での出来事です。 1.2系ではまだ使えますが推奨されておりません

src/video/SDL_video.c, Revision 1.42.2.8:

/* Handle obsolete flags */
if ( (flags & SDL_OPENGLBLIT_OBSOLETE) == SDL_OPENGLBLIT_OBSOLETE ) {
        SDL_SetError("SDL_OPENGLBLIT is no longer supported");
        return(NULL);
}
さらに SDL12/include/SDL_video.h - diff - 1.16.2.4。 SDL_OPENGLBLITを使っているとコンパイルエラーになり、 SDL_OPENGLBLIT_OBSOLETE を使おうとすると上記の通り実行時エラーになります。

始まりの日

SDL_OPENGLBLITの誕生は古く、リリース版では1.1.4が初出です。 2000年8月のことでした。 WhatsNewによると、

だそうです。

誕生の言葉

You can now use SDL for 2D blitting with a GL mode by passing the SDL_OPENGLBLIT flag to SDL_SetVideoMode(). You can specify 16 or 32 bpp, and the data in the framebuffer is put into the GL scene when you call SDL_UpdateRects(), and the scene will be visible when you call SDL_GL_SwapBuffers(). (WhatsNewより引用)

SDL_SetVideoMode()にSDL_OPENGLBLITを渡すことで、GLモードで2Dのblitが できるようになりました。16bppまたは32bppを指定することができ、 フレームバッファのデータはSDL_UpdateRects()を呼び出すことでGLシーンに 置くことができます。SDL_GL_SwapBuffers()を呼ぶことで出来上がったシーンを 表示することができます。

終わりに

現時点(2005年春)では、SDL + OpenGLの用法として 前回紹介したような考えかたが推奨されています。 要するにOpenGLを真面目に使おうというだけのことなのでしょう。 すでに見てきた通り、また方々で指摘されている通り、SDL_OPENGLBLITは 手軽にOpenGLを利用することができるものの、柔軟性が低く、また 十分な性能を得ることも期待できない物でした。

ただ、SDLやOpenGLに不案内な人にとって、 UpdateRectsの乗っ取り、フレームバッファとテクスチャのやりとり、などなど、 個々のテクノロジについて見るべきものは多いのではないかと思います。


戻る

Zinnia (zinnia@risky-safety.org)
このWebコンテンツ(ここから辿れるもの)に対する コメントのメールは許可なく公開することがあります。