知識ベース

リストを表示する

表示リスト (または表示ファイル )は、出力イメージを定義する一連のグラフィックコマンドです。コマンドを実行してさまざまなプリミティブを結合することにより、イメージが作成( レンダリング )されます。このアクティビティは、ほとんどの場合、ディスプレイのメンテナンスのオーバーヘッドからCPUを解放する目的で、システムのCPUから部分的または完全に独立した専用ディスプレイまたは処理ハードウェアによって実行され、CPUの能力を超える出力機能または速度を提供する場合があります。

古いベクターグラフィックスディスプレイなど、フレームバッファーのないディスプレイデバイスの場合、出力を維持およびアニメーション化するためにコマンドが1秒未満で実行されました。最新のシステムでは、コマンドが変更されたとき、または出力を更新するためにコマンドを実行する必要があります(最小化されたウィンドウを復元するときなど)。

表示リストは、2次元と3次元の両方のシーンを表すことができます。ディスプレイリストを使用してシーンを保存するシステムは、即時モードシステムとは対照的に、保持モードシステムと呼ばれます。

真の表示リストを持つ最も初期の人気のあるシステムの1つは、Atari 8ビットファミリでした。表示リスト(実際にはAtariの用語で呼ばれる)は、これらのマシンで使用されるビデオコプロセッサであるANTICの一連の指示です。コンピューターのメモリに保存され、ANTICによってリアルタイムで実行されるこのプログラムは、空白行、6つのテキストモード、8つのグラフィックモードのいずれかを指定でき、画面の各セクションを水平または垂直に細かくスクロールし、表示リスト割り込み(他のシステムではラスター割り込みまたはHBIと呼ばれます)。

Amstrad PCWファミリには、「ローラーRAM」と呼ばれるリスト表示機能が含まれています。これは、RAMへの256個の16ビットベクトルで構成される512バイトのRAM領域で、720×256ピクセルディスプレイの各行に1つずつあります。各ベクトルは、ラインの720ピクセル状態を保持する90バイトのモノクロピクセルの位置を識別します。 8ピクセル状態の90バイトは、実際には8バイト間隔で配置されているため、ピクセルデータの各バイト間に7つの未使用バイトがあります。これは、テキスト指向のPCWがRAMに典型的な画面バッファーを構築する方法に適しており、最初の文字の8行が最初の8バイトに、2番目の文字の行が次の8バイトに格納されます。 Roller RAMは、3.4 MHzのZ80が23 KBのディスプレイバッファーを「手で」つまりソフトウェアで移動するのが許容できないほど遅いため、ディスプレイのスクロールを高速化するために実装されました。画面の更新の開始時に使用されるローラーRAMの開始エントリは、Z80書き込み可能なI / Oレジスタによって制御されます。したがって、このI / Oレジスタを変更するだけで、画面をスクロールできます。

ハードウェアでディスプレイリストのような機能を使用する別のシステムはAmigaです。これは偶然ではなく、Atari 8ビットカスタムハードウェアを作成した同じ人々によって設計されました。 Amigaディスプレイハードウェアは当時非常に洗練されており、ディスプレイモードを作成するように指示された後は、後続のすべてのスキャンラインで自動的にそうし続けます。コンピューターには、ディスプレイと同期してハードウェアレジスタを変更するための単純なプログラムまたは「銅リスト」を実行する「銅」と呼ばれる専用のコプロセッサーも含まれていました。銅線リストの指示により、銅線はディスプレイが画面上の特定の位置に到達するのを待ってから、ハードウェアレジスタの内容を変更できます。実際には、Raster割り込みの処理専用のプロセッサでした。カッパーは、Workbenchが複数の表示モード(モニター上の複数の解像度とカラーパレットを同時に)を混合するために使用され、画面上に虹とグラデーション効果を作成するための多数のプログラムによって使用されました。 Amiga Copperは、1スキャンラインの遅延で、スプライトエンジンのミッドフレームを再構成することもできました。これにより、追加のスプライトが7つ以上の他のスプライトとスキャンライン(または1つのスキャンラインギャップ)を共有しない限り、8つ以上のハードウェアスプライトを描画できました。すなわち、少なくとも1つのスプライトが描画を終了している限り、画面上でその下に別のスプライトを追加できます。さらに、最新の32ビットAGAチップセットでは、同じ多重化を維持しながら、より大きなスプライト(行ごとのピクセル数)を描画できました。 Amigaには、より大きなオブジェクトをフレームバッファーに描画できる専用のブロックシフター(「ブリッター」)ハードウェアもありました。これは、スプライトの代わりに、またはスプライトに加えてしばしば使用されました。

より原始的なシステムでは、一連のレンダリングではなく、ビデオデバイスの特定のディスプレイモード、カラーコントロール、またはその他の視覚効果レジスタへのCPU集中書き込みを犠牲にして、ディスプレイリストの結果をシミュレートできます。デバイスによって実行されるコマンド。したがって、CPU駆動ディスプレイ生成の実行前または実行中に、他のレンダリングプロセスを使用して表示画像を作成する必要があります。多くの場合、画像はフレーム間で変更または再レンダリングされます。画像は、CPU駆動の表示コードが実装される正確な方法に応じて、さまざまな方法で表示されます。

CPU駆動のビデオを必要とするこれらの古いマシンで可能な結果の例には、Commodore 64/128のFLIモードやZX SpectrumでのRainbow Processingなどのエフェクトが含まれます。

非推奨

ディスプレイリストは、固定機能のグラフィックパイプラインのコマンドセットを表すため、現代のグラフィックアーキテクチャではほとんど使用されていません。最新のアーキテクチャでは、グラフィックスのパフォーマンスがCPUに結び付かないように、シェーダーと頂点バッファーオブジェクトが使用されます。ただし、VulkanやDirectX 12などの低レベルのグラフィックスAPIは、コマンドバッファーやコマンドリストの形式の機能のような表示リストを公開します。

参照資料

  1. ^ OpenGLプログラミングガイド:OpenGLを学習するための公式ガイド、バージョン1.1 (第2版)。アディソン・ウェスリー。 ISBN 978-0201461381。
  2. ^ 「第7章-OpenGLプログラミングガイド」。 www.glprogramming.comアディソン・ウェズリー。 2018年11月18日取得。