2010年12月23日木曜日

ディスプレイ acer GD245HQ

このあいだも書いたが、
NVIDIAの3D Vision 対応のディスプレイがほしかったので、
acer GD245HQ を購入。

で、その感想。

正直なところ、微妙。

テキスト表示がやや見苦しい。
画面を直接デジカメで撮ってみた。
(そのままだとどうも見にくいので、わざとぼかしてある。)

左がacer GD245HQ、右が同じくacerのH233H。
GD245HQは変なシャープネスがかかったような表示になっていて、
場合によってはかえってゴーストみたいな変な効果が出てしまっている。
これがテキスト表示が見苦しい原因。

もう一点。

3D Visionを使ったステレオ表示で、
コントラストが高い部分でクロストークが目立つ。
仕様では、応答速度が2ms(GTG)らしいので大丈夫だと思っていたのだが・・・。
ここでちょっと算数。
120Hzだと、1フレームあたりの表示時間は
1000[ms] / 120[Hz] = 8.333[ms]
これに対して画面の書き換えに2ms(ぐらい)かかるので、
2[ms] / 8.333[ms] = 0.24
1フレーム分の時間のうち、24%(たぶんそれ以上)が
画面の書き換えに使われていることになる。
さらに、「2ms」というのはGTG なので、
表示される色・輝度などによっては2msよりも遅れる。
つまり、1フレーム中、1/4ぐらいの時間はディスプレイの書き換え待ちになる。

・・・と考えると、
多少クロストークが見えそうだというのも想像がつくし、
むしろ、応答時間が2msというのが、
まだまだ遅すぎるようにも思えてくるわけで。
まぁ、最近の液晶技術はこんなもんだ、といえばそれまでなのかもしれないが。

(2011.01.02 追記)
どうも、クロストークが見える原因はディスプレイではなく、
メガネの遮光が完全ではないことが原因のような気がしてきた。
つまり、
メガネのシャッターが閉じていているのに、
そのシャッターがすこーし透けている、と。

画面に表示された絵の明るい部分だけで
クロストークが目立っているように見えるし、
物理的に板(シャッター)が開閉しているのではなくて
所詮は液晶シャッターなので完全に不透明ってわけでもなさそうだし。

2010年12月18日土曜日

Quadro で NVIDIA 3D Vision な OpenGL のプログラムを作る

3Dグラフィクスで遊んでいるからには
やっぱり、最近はやりのステレオ表示が気になるわけで。

(「3D」っていうと、ポリゴンな「3Dグラフィクス」のことなのか、
それとも「立体視」のことなのか紛らわしい、と思う今日この頃。)

ってことで、思い切って
3D対応のディスプレイ(GD245HQ)と
NVIDIA 3D Vision (アクティブシャッターの付いたメガネのアレ)を購入し、
ステレオ表示環境をそろえてみた。
(ディスプレイについてのレビューは、またそのうち、ってことで。)

で、そうなってくると、
OpenGLのステレオバッファを使って
自分でステレオ表示ができるプログラムを作ってみたくなるのだが、
GeForce系ではステレオバッファがサポートされておらず、
実質的にはQuadro系のグラフィックボードを使うしかない。
ということで、つづいてQuadro 2000を購入。
Quadro高いよ・・・。

ってなことで、
OpenGLでステレオバッファを使ってステレオ表示する方法を調べてみた。

→プログラム側でやること

  • まずは、レンダリングコンテキストを作成するときに
    ピクセルフォーマットでスレテオバッファを指定。
  •  で、右目用、左目用のシーンを
    glDrawBuffer() で BackLeft, BackRight を指定して
    左目用バックバッファと右目用バックバッファそれぞれに描画する。
  • wglSwapBuffers() を呼べば
    BackLeft, BackRight 両方いっぺんにフロントバッファに
    転送されるので、そこはあんまり気にする必要は無いっぽい。
→PC側の設定
 NVIDIAコントロールパネルで設定する必要があるのが少々めんどくさい。
  •  NVIDIAコントロールパネルの「Manage 3D setting」内、
    「Program Setting」タブで、「Add」ボタンをクリックしてビルドしたプログラムを選択。
    (Visual Sutudio のデバッグで実行する場合は、~.vshost.exe を選択する。)
  • でもって、その下のリスト(Feature - Setting のリスト)で、
    「Stereo - Display mode」 を 「Generic active stereo (with NVIDIA IR Emmitter)」、
    「Stereo - Enable」 を 「On」
    に設定する。
これで、プログラムを実行するとステレオ表示になって
同時にメガネのアクティブシャッターもONになるはず。
DirectXだとフルスクリーンにしないとステレオ表示できないが、
OpenGLだとウィンドウ表示でもステレオ表示できるみたい。
(ただし、Windows Aero がOFFになる。)

ちなみに、OpenGLの場合は
IR Emitter(メガネの同期用の赤外線送信機)の
On/Offスイッチと、裏のホイールは機能しません。
なので、プログラム側でステレオ表示のOn/Off機能とか
奥行き感の調整機能とかを用意しないといけないようだ。

あと、右目・左目のシーンを描画するときに、
左右の視点の位置のずらし方をうまくやらないと不自然な見え方になってしまうので、
このへんもプログラム側で工夫しないといけない。