高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1229
OpenGL and 3D Graphics Changes in Mac OS X v10.2.3


Q: Mac OS X v10.2.3 対応の OpenGL と 3 次元グラフィックスは、どのように変更されたのですか?

A: Mac OS X v10.2.3 では、OpenGL 1.4 のサポート、13 の新たな OpenGL 拡張、ステレオサポートの向上、および OpenGL Utility Toolkit (GLUT) のアップデートが追加されました。さらに、今回のアップデートには、3 次元グラフィックスパイプラインの改良やバグ修正がいくつか含まれています。OpenGL 1.4 をサポートするグラフィックスプロセッサに対応して、現在、リスト 1 に示す機能に OpenGL のコア機能に含まれています。開発者は、レンダラの GL_VERSION ストリングを確認して、OpenGL 1.4 がサポートされているかを判断するべきです。


  • ミップマップの自動生成は、テクスチャパラメタ GL_GENERATE_MIPMAPGL_TRUE に設定することで行われます。ミップマップの自動生成により、ミップマップ配列のレベルベースのいかなる修正に対しても副次的な影響がもたらされ、ミップマップピラミッドの高レベル層全てについて、基本レベル配列の連続的なフィルタリングによる再計算が自動的に行われます。
  • Blend Squaring は、サポートされたソースおよびデスティネーションのブレンド関数群を拡張して、ブレンド処理中に RGB とアルファ値を 2 乗できるようにします。
  • Imaging サブセットが変更され、BlendEquation、BlendColor、BlendFunc モードの GL_CONSTANT_COLORGL_ONE_MINUS_CONSTANT_COLORGL_CONSTANT_ALPHAGL_ONE_MINUS_CONSTANT_ALPHA などが盛り込まれます。これらの機能は、以前は OpenGL のバージョン 1.2 と 1.3 の規格におけるオプションの imaging サブセットでだけ利用することができました。
  • デプステクスチャおよびシャドウテクスチャは、新たなテクスチャの内部フォーマットである GL_DEPTH を定義します。通常、GL_DEPTH はデプス値を表すために使用されるものです。アプリケーションには、イメージベースのシャドウキャスティング、置換マッピング、およびイメージベースのレンダリングがあります。イメージベースのシャドウイングは、パラメタ GL_TEXTURE_COMPARE_MODE の定義による新たなテクスチャアプリケーションモードで有効になります。
  • フォグ座標は、フラグメント用のフォグ計算に使用することができます。これは、フラグメントに対する二点間の距離の使用に代わるものであり、より複雑なフォグモデルにおいて有効です。
  • 複数のドローアレイでは、glMultiDrawArrays および glMultiDrawElements といったコマンドを一度呼び出すだけで、複数のプリミティブをレンダリングすることができます。
  • ポイントパラメタは、ポイントの更なる幾何学的特性をサポートし、ポイントサイズが直線距離または平面距離の減衰による影響を受けるようにします。あわせて、ポイントサイズからラスタポイントエリアへのマッピング制御や、ポイントの透明度制御を高めます。この効果は、パーティクルまたはライトポイントのレンダリングでの距離減衰にも役立つことがあります。
  • セカンダリカラーは、光が無効になっている場合でも、glSecondaryColor コマンドで頂点パラメタとして指定することにより変化させることができます。
  • 個別のブレンド関数により、ソースブレンド因子とデスティネーションブレンド因子を必要とするブレンド操作に関して、RGB ブレンド関数とアルファブレンド関数をそれぞれ個別に設定することができます。
  • ステンシルラップ操作 (GL_INCR_WRAPGL_DECR_WRAP) により、ステンシル値の増加中に最大値を取ったり、減少中に最小値を取るのではなく、ステンシル値の範囲を指定して循環するようにできます。
  • テクスチャクロスバー環境モードでは、異なるテクスチャユニットのテクスチャカラーを、テクスチャ合成機能のソースとして使用できるようにすることで、テクスチャ合成環境モード (GL_COMBINE) を拡張します。
  • テクスチャ詳細レベル (LOD) バイアスを設定して、ミップマップ詳細レベル選択のテクスチャリングで使用される計算済のラムダパラメタにバイアスをかけ、テクスチャをぼかしたり、はっきりさせたりできます。LOD バイアスは、フィールドの深度やほかの特別な視覚効果に使用されるほか、ある種の画像処理にも使用されこともあります。
  • テクスチャのミラーリピートは、GL_MIRRORED_REPEAT モードでテクスチャラップモードの設定を拡張します。これは、事実上、元のテクスチャイメージの 2 倍の大きさのテクスチャマップを定義しますが、2 倍になったうちの半分を構成する鏡像テクスチャの各座標は、元のテクスチャの鏡像です。ミラーリピートは、サーフェスの境目のないタイリングに使用することができます。
  • ウインドウラスターポジションでは、glWindowPos コマンドを使用してラスターポジションを直接特定のウインドウ座標に設定し、glRasterPos による変換が座標に適用されないようにすることができます。

リスト 1. OpenGL 1.4 の機能


リスト 2 に示す拡張が Mac OS X 対応の OpenGL に追加されています。開発者は、特定のレンダラがサポートされているかどうか、拡張ストリングを見て確認できます。また、拡張の使い方と仕様については、Mac OS X OpenGL Extensions Guide(英語の情報です)を参照してください。


  • GL_APPLE_float_pixels
  • GL_ARB_fragment_program
  • GL_ARB_shadow_ambient
  • GL_ARB_vertex_blend
  • GL_ARB_window_pos
  • GL_EXT_multi_draw_arrays
  • GL_EXT_s3tc_texture_compression
  • GL_EXT_shadow_funcs
  • GL_EXT_stencil_two_side
  • GL_ATI_point_cull
  • GL_ATI_texture_mirror_once
  • GL_NV_light_max_exponent
  • GL_SGIS_generate_mipmap

リスト 2. 新 OpenGL 拡張


GLUT がアップデートされ、ジョイスティックとステレオのコンテキストに対するサポートが加わりました。また、イベント処理の機能も大幅に改良されたため、多くの場面で、安定したパフォーマンスがもたらされ CPU の占有時間も減ります。

すでに説明済みの追加事項および改善事項に加え、リスト 3 に、開発者に影響を与える可能性のある 3D グラフィックスのバグのうち Mac OS X v10.2.3 において修正されたものの中から代表的なものを示します。


  • iPhoto スライドショーを修正 (r. 2851438)
  • スクリーンセイバーを修正 (r. 2947854, 2981882, 2983532, 3049055)
  • 更なる OpenGL の安定性強化 (r. 2987229, 3010024, 3044963)
  • DVD ビジュアルを修正 (r. 2988472, 3034700, 3065118, 3099283, 3102416, 3102431, 3109605)
  • Bugdom における滑らかさの向上 (r. 3002070, 3108864)
  • Shader Builder サポートの向上 (r. 3003329)
  • Java グラフィックサポートの向上 (r. 3007437)
  • GL_ATI_text_fragment_shader を改良 (r. 3023059)
  • LOD バイアス問題を修正 (r. 3039061, 33039007)
  • テクスチャリングを修正 (r. 3063842, 3063845, 3033919)
  • 拡張ディスプレイサポートの向上 (r. 3071846, 3081613, 3101551, 3122070, 2999184, 3003635, 3025839, 3088102)
  • glReadPixels の堅牢性の向上 (r. 3110816, 3113045, 3103065)
  • カーソル問題を修正 (r. 3058957)
  • ラインモードを修正 (r. 3092958)
  • 一部の w = 0 問題を修正 (r. 3093070)
  • テクスチャ範囲のサポートの向上 (r. 3093739)
  • OpenGL の仕様に沿った、一部の OpenGL ヘッダ宣言を修正 (r. 3013229, 3014102)
  • OpenGL の一部のクエリを修正 (r. 3116500)
  • GLUT への複数ディスプレイサポートを追加 (r. 2932866)
  • GLUT 適合テストを修正 (r. 3094824, 3110053)
  • GLUTにおけるウインドウおよび visibility 処理の向上 (r. 3094828, 3065960, 3110804)
  • GLUT におけるフルスクリーンバックグラウンドのリサイズ問題の修正 (r. 3094832)
  • GLUT のコンソール出力の排除 (r. 3095226)
  • GLUT の受動モーションとメニュー処理の向上 (r. 3065960, 3091508, 3082250)
  • GLUT のイベント処理とタイマー処理の全般的な向上 (r. 3032121)

リスト 3. 3D グラフィックバグ修正項目



[2003 年 1 月 3 日]