これがアニメーションのない単一フレームのスプラッシュ画像である場合、 を使用しても害はありませんglDrawPixels
。パフォーマンスが重要であり、テクスチャを使用する必要がある場合は、プロキシ テクスチャを使用して、サポートされているテクスチャの最大サイズを実行時に決定するのが正しい方法です。
GLint width = 0;
while ( 0 == width ) { /* use a better condition to prevent possible endless loop */
glTexImage2D(GL_PROXY_TEXTURE_2D,
0, /* mip map level */
GL_RGBA, /* internal format */
desiredWidth, /* width of image */
desiredHeight, /* height of image */
0, /* texture border */
GL_RGBA /* pixel data format, */
GL_UNSIGNED_BYTE, /* pixel data type */
NULL /* null pointer because this a proxy texture */
);
/* the queried width will NOT be 0, if the texture format is supported */
glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
desiredWidth /= 2; desiredHeight /= 2;
}
システムの OpenGL ドライバーでサポートされているテクスチャの最大サイズがわかったら、画像が収まらない場合に少なくとも 2 つのオプションがあります。
- 画像のタイリング: 画像をサポートされている小さなチャンクに分割した後、複数のクワッドを使用します。スプラッシュ スクリーンのような画像のタイリングは、それほど難しいものではありません。glPixelStoreiのパラメータを使用
GL_PACK_ROW_LENGTH
して、より大きな画像のセクションをテクスチャにロードできます。
- 画像のサイズ変更: サポートされているテクスチャの最大サイズに合わせて画像のサイズを変更します。これを行うための GLU ヘルパー関数 gluScaleImageもあります。