この付録では、OpenGL と IRIS GL の違いを示します。 各相違点の用語を指定し、その後に説明を付けます。
用語 | 形容 |
---|---|
蓄積ラッピング | OpenGL 累積バッファー操作は、コンポーネント値が 1.0 を超えるか、1.0 を下回る場合には定義されません。 |
アンチエイリアシングされた線 | OpenGL はアンチエイリアシングされた行をスチルップします。 IRIS GL はしません。 |
弧 | OpenGL では、ユーティリティ ライブラリの円弧がサポートされています。 |
属性リスト | IRIS GL pushattributes によってプッシュされる属性は、OpenGL glPushAttrib によってプッシュされる属性セットと異なります。 ただし、すべての OpenGL 状態を読み取り戻すことができるため、OpenGL を使用して任意のプッシュ/ポップ セマンティクスを実装できます。 |
テクスチャの自動スケーリング | OpenGL テクスチャ インターフェイスは、2 次元の累乗に対するイメージの自動スケーリングをサポートしていません。 ただし、GLU ではイメージのスケーリングがサポートされています。 |
bbox | OpenGL では、表示リストの条件付き実行はサポートされていません。 |
callfunc | OpenGL では、表示リストからのコールバックはサポートされていません。 IRIS GL は、クライアントとサーバーが異なるプラットフォーム上にある場合にも、この機能をサポートしていないことに注意してください。 |
円 | OpenGL では、GLU を使用した円がサポートされます。 OpenGL では、円と円弧 (ディスクと部分ディスク) の両方に穴を開けることができます。 さらに、サーフェス法線が照明に使用できる OpenGL のプリミティブのサブ区分を変更することもできます。 |
オプションのクリア | OpenGL は実際にバッファーをクリアします。 現在指定されているピクセル操作 (ブレンドや logicop など) は、モードに関係なく適用されません。 このような機能を使用してクリアするには、ウィンドウ サイズの多角形をレンダリングする必要があります。 |
閉じた行 | OpenGL では、すべての単一幅のエイリアス線がレンダリングされ、アバスッティングラインはピクセルを共有しません。 つまり、独立した線の最後のピクセルは描画されません。 |
color/normal フラグ | OpenGL ライティングは明示的に有効または無効になっています。 有効にすると、色と法線の指定順序に関係なく有効になります。 OpenGL glBegin コマンドと glEnd コマンドの間で照明を有効または無効にすることはできません。 glBegin と glEnd の間の照明を無効にするには、アンビエント、拡散、および反射マテリアルの反射率をゼロに指定し、マテリアルの発光を目的の色に設定します。 |
凹型ポリゴン | コア OpenGL API は凹型の多角形を処理しませんが、GLU は凹型の自己交差しない輪郭を三角形に分解することをサポートしています。 これらの三角形は、すぐに描画するか、返すことができます。 |
現在の計算された色 | OpenGL には、現在の計算された色に相当するものはありません。 OpenGL を照明エンジンとして使用している場合は、フィードバックを使用して、照明の計算によって生成された色を取得できます。 |
現在のグラフィックス位置 | OpenGL では、現在のグラフィックス位置は維持されません。 相対線やポリゴンなど、現在のグラフィックス位置に依存する IRIS GL コマンドは OpenGL には含まれません。 |
曲線 | OpenGL では、IRIS GL 曲線はサポートされていません。 NURBS カーブを使用することをお勧めします。 |
defs/binds | OpenGL には、マテリアル オブジェクト、ライト オブジェクト、テクスチャ オブジェクトの概念はありません。マテリアル、ライト、テクスチャのプロパティのみ。 ただし、表示リストを使用して独自のオブジェクトを作成することはできます。 |
depthcue | OpenGL は深度キューを直接サポートしませんが、その霧のサポートは、IRIS GL 深度キュー関数をエミュレートするために簡単に使用できる一般的な機能です。 |
リストの編集を表示する | OpenGL の表示リストは、作成および破棄された編集はできません。 ただし、表示リスト名を指定できるため、階層内の個々の表示リストを再定義することができます。 OpenGL 表示リストは、データベース管理用ではなく、データ キャッシュ用に設計されています。 クライアント環境またはサーバー環境でサーバーに格納することが保証されているため、実行中のネットワーク帯域幅によって制限されません。 openGL 表示リストは glBegin コマンドと glEnd コマンドの間で呼び出すことができるので、表示リスト階層を十分に細かくして、実際に編集することができます。 |
エラー チェック | OpenGL では、IRIS GL よりも注意深くエラーがチェックされます。 たとえば、glBegin と glEnd の間で受け入れられないすべての OpenGL 関数はエラーとして検出され、その他の影響はありません。 |
エラー戻り値 | 値を返す OpenGL コマンドでエラーが検出されると、常に 0 が返されます。 渡されたポインターを介してデータを返す OpenGL コマンドは、エラーが検出された場合、配列の内容を変更しません。 |
エラーの副作用 | OpenGL コマンドでエラーが発生した場合、唯一の副作用は、エラー フラグを適切な値に更新することです。 その他の状態変更は行われません。 (例外は致命的なOUT_OF_MEMORY エラーです)。 |
フィードバック | フィードバックは OpenGL で標準化されているため、コンピューター間で変更されることはありません。 |
フォントと文字列 | OpenGL では、文字グリフを個々の表示リストとして操作する必要があります。 表示リスト名のリストを受け入れる表示リスト呼び出し関数を提供します。各名前は 1、2、または 4 バイトとして表されます。 glCallLists 関数は、呼び出しの前に各表示リスト名に個別に指定されたオフセットを追加し、表示リスト名のリストを文字列として扱えるようにします。 このメカニズムは、IRIS GL フォントのすべての機能を提供し、さらに多くを提供します。 たとえば、三角形で構成される文字は簡単に操作できます。 |
frontbuffer | IRIS GL には、シングル バッファー モードでフロント バッファーにレンダリングするための複雑なルールがあります。 OpenGL は、フロント バッファーへのレンダリングを簡単な方法で処理します。 |
空の多角形 | OpenGL ステンシル容量を使用して、中空のポリゴンをレンダリングできます。 OpenGL では、空の多角形を作成するための他の方法はサポートされていません。 |
インデックスクランプ | 可能な場合、OpenGL は色インデックスとステンシル インデックスを数値ではなくビット フィールドとして扱います。 したがって、インデックスは、クランプされるのではなく、フレームバッファーのサポートされている範囲にマスクされます。 |
整数の色 | 符号付き整数の色成分 (赤、緑、青、またはアルファ) は、負の整数が 1.0 に、最も正の整数が 1.0 にマップされるように、線形形式で浮動小数点にマップされます。 このマッピングは、OpenGL が現在の色を置き換える前に色を指定した場合に発生します。 符号なし整数の色コンポーネントは、0 が 0.0 に、最大の整数が 1.0 にマップされるように、浮動小数点に直線的にマップされます。 このマッピングは、OpenGL が現在の色を置き換える前に色を指定した場合に発生します。 |
整数の法線 | 整数の標準コンポーネントは、符号付きカラー コンポーネントと同様にマップされます。 最も負の整数は 1.0 に、最も正の整数は 1.0 にマップされます。 ピクセル フラグメント。 glDrawPixels または glCopyPixels によって描画されたピクセルは、常にラスター化され、フラグメントに変換されます。 結果のフラグメントは、ジオメトリ ポイントから生成された場合と同様に、テクスチャ、霧化、深度のバッファリング、ブレンドなどが行われます。 ソース ピクセルによって提供されないフラグメント データは、現在のラスター位置から拡張されます。 たとえば、RGBA ピクセルは、ラスター位置 Z とテクスチャ座標を受け取ります。 深度ピクセルは、ラスター位置の色とテクスチャ座標を取得します。 |
不変性 | OpenGL では、IRIS GL では保証されない一定の整合性が保証されます。 たとえば、OpenGL では、同じシステムに送信される同一のコード シーケンスが、指定されたブレンド関数でのみ異なって、同じピクセル フラグメントを生成することが保証されます。 (ただし、ブレンドを有効にしてから無効にした場合、フラグメントは異なります)。 |
照明の数式 | OpenGL 照明の数式は、IRIS GL の数式とは若干異なります。 OpenGL では、IRIS GL のようなすべての光源に対して単一の減衰ではなく、各光源に対して個別の減衰がサポートされています。 OpenGL は、アンビエント、拡散、および反射照明のコントリビューションがすべて減衰されるように、数式を調整します。 また、OpenGL を使用すると、光源のアンビエント、拡散、および反射の強度、およびマテリアルのアンビエント、拡散、および反射反射率に対して個別の色を指定できます。 すべての OpenGL ライトとマテリアルの色にはアルファが含まれます。 反射指数を 0 に設定しても、OpenGL の反射照明は無効になりません。 |
mapw | OpenGL ユーティリティは、オブジェクト座標とウィンドウ座標間のマッピングをサポートします。 |
マトリックス モード | IRIS GL オルソ関数、オルソ 2 関数、パースペクティブ関数、ウィンドウ関数が特定の行列で動作する場合、すべての OpenGL マトリックス操作は現在の行列で動作します。 glLoadIdentity と glLoadMatrix を除くすべての OpenGL マトリックス操作は、現在の行列を置き換えるのではなく乗算します (IRIS GL のオルソ、オルソ 2、パースペクティブ、ウィンドウと同様)。 |
ミップマップ、自動生成 | OpenGL テクスチャ インターフェイスでは、ミップマップ イメージの自動生成はサポートされていません。 ただし、GLU では、1-D テクスチャと 2-D テクスチャの両方でミップマップ イメージの自動生成がサポートされています。 |
move/draw/pmove/pdraw/pclos | OpenGL は、現在のグラフィックス位置を維持しないため、Begin/End スタイルのグラフィックスのみをサポートします。 ただし、古い移動/描画コマンドのスカラー パラメーター指定は、すべての頂点関連コマンドに対して OpenGL によって受け入れられます。 |
mprojection モード | IRIS GL は、プロジェクション マトリックス モードの間、モデルビュー マトリックスによってジオメトリを変換しません。 OpenGL は、マトリックス モードに関係なく、モデルビューとプロジェクション マトリックスの両方によって常に変換されます。 |
マルチバッファー描画 | OpenGL は、IRIS GL のように、1 つのカラー バッファーの内容に基づいて単一の新しいカラー値を計算し、すべての有効なカラー バッファーに書き込むのではなく、各カラー バッファーに個別にレンダリングされます。 |
NURBS | OpenGL では、コア機能 (エバリュエーター) と GLU サポートの組み合わせで NURBS がサポートされます。 IRIS GL NURBS のすべての機能がサポートされています。 |
古いポリゴン モード | エイリアス化された OpenGL ポリゴンは常にポイント サンプリングされます。 IRIS GL のポリゴン互換モードでは、ポリゴン境界外のピクセルがラスタライズに含まれますが、サポートされていません。 コードでこの多角形モードを使用する場合は、おそらく四角形用です。 古いポリゴン モードの四角形は、1 ピクセル以上広く表示されます。 |
パックされた色の形式 | OpenGL は 8 ビット コンポーネントとして色を受け入れますが、これらのコンポーネントは、より大きな単語にパックされたバイトとしてではなく、バイトの配列として扱われます。 OpenGL は、シフトではなく配列インデックス作成を奨励することで、エンディアンインバリアント プログラミングを促進します。 IRIS GL が幾何学的レンダリングとピクセル レンダリングの両方でパックされた色を受け入れるのと同様に、OpenGL は幾何学的レンダリングとピクセル レンダリング用のカラー コンポーネントの配列を受け入れます。 |
斑 | OpenGL では、IRIS GL パッチはサポートされていません。 |
ビットごとのカラー 書き込みマスク | カラー コンポーネントの OpenGL 書き込みマスクでは、コンポーネントの個々のビットではなく、コンポーネント全体 (赤、緑、青、またはアルファ) への変更を有効または無効にします。 ただし、カラー インデックスとステンシル インデックスの両方でビット単位の書き込みマスクがサポートされていることに注意してください。 |
ビットごとの深度書き込みマスク | 深度コンポーネントの OpenGL 書き込みマスクでは、深度コンポーネントの個々のビットではなく、コンポーネント全体に対する変更を有効または無効にします。 |
摘む | OpenGL ユーティリティ ライブラリには、ピック マトリックスを生成するためのサポートが含まれています。 |
ピクセル座標 | OpenGL と IRIS GL の両方で、ウィンドウの座標系の原点は左下隅にあります。 ただし、OpenGL は原点をこのピクセルの左下隅に配置しますが、IRIS GL は左下のピクセルの中心に原点を配置します。 |
ピクセル ズーム | OpenGL の負のズーム係数は、現在のグラフィックス位置を反映します。 IRIS GL は負のズーム 係数の演算を定義せず、代わりにRIGHT_TO_LEFTおよびTOP_TO_BOTTOMリフレクション pixmode を提供します。 これらの反射モードは、現在のラスター位置ではなく、所定の位置に反映されます。 OpenGL ではリフレクション モードは定義されません。 |
pixmode | OpenGL ピクセル転送は、IRIS GL と同様に、4 つの 8 ビット コンポーネントのパックされたグループではなく、個々のカラー コンポーネントで動作します。 OpenGL は IRIS GL よりも大幅に多くのピクセル機能を提供しますが、パックされたカラー コンストラクトをサポートしていません。また、ピクセル コピー操作中にカラー コンポーネントを再割り当て (赤から緑、赤から青など) することはできません。 |
polf/poly | OpenGL では、表示リスト以外の頂点リストは直接サポートされません。 ただし、polf や poly などの関数は、OpenGL API を使用して簡単に実装できます。 |
多角形誘発頂点 | フラット シェーディングされた IRIS GL ポリゴンは、指定された最後の頂点の色を受け取り、OpenGL ポリゴンは指定された最初の頂点の色を受け取ります。 |
polygon stipple | IRIS GL では、多角形のヒント パターンは画面に対して相対的です。 OpenGL を使用すると、ウィンドウに対する相対値になります。 |
polygon 頂点数 | glBegin(POLYGON) の場合でも、OpenGL を使用した glBegin と glEnd の間の頂点の数に制限はありません。 IRIS GL では、ポリゴンは 255 個以下の頂点に制限されます。 |
readdisplay | ウィンドウ境界外のピクセルの読み取りは、レンダリング機能ではなく、適切にウィンドウ システム機能です。 Windows 関数を使用して IRIS GL readdisplay コマンドを置き換えます。 |
relative move/draw/pmove/pdraw/pclos | OpenGL は現在のグラフィックス位置を維持しないため、相対頂点操作はサポートされません。 |
RGBA logicop() | OpenGL では、RGBA バッファーに対する論理操作はサポートされていません。 |
sbox() | sbox は、回転せずに変換された場合にのみ明確に定義された IRIS GL 四角形プリミティブです。 標準の四角形よりも高速にレンダリングされるように設計されています。 OpenGL はこのようなプリミティブをサポートしていませんが、行列やその他のモードが計算を簡略化する状態にある場合に、四角形を非常に迅速にレンダリングするように調整できます。 |
スカラー引数 | glBegin と glEnd の間で受け入れられるすべての OpenGL コマンドには、スカラー引数を受け入れるエントリ ポイントがあります。 たとえば、glColor4f (赤、緑、青、アルファ) などです。 |
はさみ | OpenGL glScissor 関数はビューポートを追跡しません。 IRIS GL ビューポート コマンドによって、スマスクが自動的に更新されます。 |
scrbox() | OpenGL では、境界ボックスの計算はサポートされていません。 |
scrsubdivide() | OpenGL では、画面のサブ区分はサポートされていません。 |
シングル マトリックス モード | OpenGL では、常に ModelView と Projection の 2 つのマトリックスが維持されます。 OpenGL 実装では、パフォーマンス上の理由からこれらを 1 つのマトリックスに統合できますが、常に 2 マトリックス モデルをプログラマに提示する必要があります。 |
サブピクセル モード | すべての OpenGL レンダリングは、サブピクセル位置サブピクセル モードが常にオンになっています。 |
swaptmesh() | OpenGL では、swaptmesh 機能はサポートされていません。 ただし、2 種類の三角形メッシュが提供されます。1 つは IRIS GL の既定の "ストリップ" 動作に対応し、もう 1 つは 3 つ目より前の swaptmesh の呼び出しに対応し、IRIS GL を使用する場合はそれ以降のすべての頂点に対応します。 |
vector 引数 | glBegin と glEnd の間で受け入れられるすべての OpenGL コマンドには、ベクター引数を受け入れるエントリ ポイントがあります。 たとえば、glColor4fv です。 |
ウィンドウ管理 | OpenGL には、ウィンドウ システム コマンドはありません。 これは常に、デバイスとウィンドウ制御の機能を含むウィンドウまたはオペレーティング システムの拡張機能としてサポートされます。 各拡張機能には、OpenGL レンダリング コンテキストを作成、破棄、および操作するためのシステム固有のメカニズムが用意されています。 たとえば、X ウィンドウ システム (GLX) の OpenGL 拡張機能には、この目的のために約 10 個のコマンドが含まれています。 gconfig や drawmode などの IRIS GL コマンドは、OpenGL では実装されません。 |
ウィンドウ オフセット | IRIS GL は、ウィンドウ座標ではなく、画面のビューポートと文字の位置を返します。 OpenGL では常にウィンドウ座標が使用されます。 |
z レンダリング | OpenGL では、深度バッファーへの色のレンダリングはサポートされていません。 これにより、他のウィンドウ構成の深度バッファーに使用されるのと同じメモリを使用して実装できる追加のカラー バッファーが可能になります。 ただし、これらの追加のカラー バッファーでは、1 つの構成で深度バッファーとメモリを共有することはできません。 |