タグ:OpenGL ( 7 ) タグの人気記事

e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

OpenGLでビットマップ画像データを背景に描画

以前、DirectShowでキャプチャしたカメラ画像を
OpenGLの背景に差し込んだ時の、テストコードの一端。
めも。

void DrawVideo(DShowCapture* vcap)
{
if(vcap)
{
// メモリ確保は起動時1回だけ
// シンクロが必要かも
static long nDataSize = 640 * 480 * 3; //vcap->GetBufferSize();
static long* pbData = (long*)new BYTE[nDataSize];
static BITMAPINFO bmi;
if(vcap->CopyFrameData(pbData, nDataSize, &bmi))
{
// glDrawPixels をコールするときには、PROJECTIONマトリックスを
// 初期化しないと画面に表示されない。(普通の画面の場合)
// その後、DEPTHバッファをクリアすれば、画像を背景に
// OpenGLでレンダリングが出来る
GLint oldMatrixMode;
glGetIntegerv(GL_MATRIX_MODE, &oldMatrixMode);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glPixelZoom(1,1);
glRasterPos2i(-1 , -1);
glDrawPixels(640 , 480 , GL_BGR_EXT , GL_UNSIGNED_BYTE , pbData);
glPopMatrix();
glMatrixMode(oldMatrixMode);
glClear(GL_DEPTH_BUFFER_BIT);
}
else
{
//MessageBox(0, "can't get image", "fakegl", MB_OK);
}

//delete [] pbData;
}

}

[PR]
by isoq | 2011-03-03 11:35 | 3Dグラフィックス
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

NVIDIA Quadro FX 3700 で OpenGL 描画時にノイズの嵐

最近、職場のPCのグラフィックカードを Quadro FX 4600 から Quadro FX 3700 に

交換しました。

というのも、CUDAでプログラムを作成するために、

どうしても Compute Capability 1.1 以降の機能が必要になったから。

Quadro FX 4600 は、古いため、Compute Capability が 1.0 なのでした。

必要な機能は、32bit Integer の Atomic関数。

これなくて、まともな処理出来るのか???と疑問ですが、

かなり無理矢理な方法を使えば、無くてもどうにかなるかもしれないけど、

そのためにコードがぐちゃぐちゃになるし、難しい。


とにかく、FX 3700を使っているんだけど、OpenGLで絵を描画すると、

何フレームかに1度くらいの頻度で、描画がおかしくなり、モデルの周りに

ノイズが広がった感じになってしまう。


隣の席(同じくFX 3700)で試してもらったけど、同じ症状だったから、

最初、プログラムに原因があると思い込んで、シンプルなOpenGLの

プログラムを作成してテストしてみたけど、ダメ。

GLUTのバージョンなんかが悪いのかと思ったけど、そうでもないらしい。

以前作った普通に動くはずのプログラムもノイズだらけ・・・

これはおかしい。


自宅(GeForce GTS 250)で同じプログラムを実行してみたら、全くノイズなし。

・・・

ハードの仕様か?ドライバの仕様か???

どちらにしても、私には非はない事ははっきりした・・・

今日の午後の時間を返してくれぇ~~~~~ ・・・・・・ (;_;)




ユーブック
[PR]
by isoq | 2010-11-17 00:31 | コンピュータ
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

CUDAでちゃんと100倍超えた!

この間、CUDAでGPGPU の記事で、

  処理を CUDA で書き直しても10倍程度しか高速化されず・・・

と書きましたが、これは書籍に掲載されていたコードが シェアードメモリ を使用していない

ちょっと中途半端な物だったのが原因でした。

シェアードメモリを使用するように書き直してみると、しっかり100倍以上!の

速度で処理してくれるではありませんか!



もし、このコードで著者の方のPC(GeForce GTX 480)において、

100倍の高速化が成されていたなら、

GeForce GTX 480 ってドンだけ速いんだ!!!!! って事になりますが、

おそらく、掲載したコードと、実際に時間を計測したコードに違いがあるのでしょう。



ちなみに、それほどたいしたことがない私の環境(Core 2 Duo 2.4GHz)でも、

CPUプログラムの実行速度を著者の環境と比べて、3倍くらい速く動いていました。

どんだけ遅いCPUに速いGPUを乗せて、「ほら、こんなに差が出るでしょ??」

っとやっているのか・・・なんだか疑惑がわきました (^ ^;)



ちなみに、




最後に、AMDのRADEONってありますが、

GeForce GTX 480 が、480コア。   ¥46,799~
GeForce GTX 580 が、512コア。 =未発売=

それに対して、

Radeon HD 5870 が、1600コア!   ¥37,970~
Radeon HD 5970 が、3200コア!!!!!    ¥65,800~

AMD(旧ATI) Radeon 恐るべし!

速いとこ、CUDAを卒業して、OpenCLへポートしなきゃ・・・




  

[PR]
by isoq | 2010-11-02 22:23 | 3Dグラフィックス
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

SLIでCUDAとOpenGLを別GPUで処理は可能!

昨日の CUDAでGPGPU の記事の中で、

『GPGPU専用にGeForce GTX 460/470/480あたりを乗せて、

 ステレオ出力用に Quadro FX 380 あたりを乗せて、

 2枚構成にして動くだろうか???』

なんて書きましたが、どうやらできるようです!

NVIDIAのページに解説がありました。

こちらです。

どうやら、複数のGeForceグラフィックカード(別の型でも!)をGPGPUに使用して、

CUDAで使いまくれちゃうみたいです。

GPU同士のデータ転送は結構遅いと思うので、

なるべく依存しないデータを使った処理を振り分ければ、

かなりの超高速分散処理が見込めます。

これこそ本当に、『パソコン』 を 『スパコン』 に変えるスーパー計算機になりますね。

しかも、GeForce GTX 480 は、メモリ容量以外は、汎用GPGPU専用ボード Tesla の2000番台を

凌駕する性能なので、これはかなり使えそうです。


・・・・


といっても、簡単に試せる額ではないので、

もし必要に迫られて SLI 構成での使用経験のある方がいらっしゃいましたら、

ぜひぜひその凄さを教えて下さい!






[PR]
by isoq | 2010-11-02 01:01 | 3Dグラフィックス
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

CUDAでGPGPU

物理的なシミュレーションの解像度と速度を上げようと

現状のマルチコアCPUを駆使した並行処理のプログラムを

流行のメニーコアGPUによる超並列化させようとしています。

使用するのは、NVIDIA環境でToolkitはCUDAです。

(OpenCLとかでも良いのですが、わかりにくそうなので、

 とりあえずCUDAで始めることにしました。)

まず簡単なプログラムを作成してCPUとGPUでの処理の違いを

みてみたのですが、予想していたような100倍程度の高速化には

ほど遠く、10倍程度しか高速化されませんでした・・・

書籍によれば、同じプログラムで、CPUよりも約100倍高速化されているらしいのですが・・・

いろいろ調べるうちにわかったのですが、どうやら、今使っているGPUがヨワッチイのが原因のようです。

私が使用しているのは、NVIDIA Quadro FX 4600 という

プロフェッショナル向けのハイエンド ボードなのですが、

2世代前のボードなので、compute capability が 1.0 と低い。

1.0 だと、遅いグローバルメモリへのアクセス時に完全に連続した領域へ、

順序よくアクセスを集中させる必要があるらしく、それが結構難しいのと、

メモリがDDR3で、帯域幅が少ないのと、

コアが96個しかなくて、同時処理数が少ないことと・・・・

そんな違いがあり、参考にした書籍の著者の環境と10倍の差が付いてしまったらしい。

ボードの単価にしたら、こっちの方が3倍も高いのに、10倍も遅いのだ。

こりゃ何とかしにゃぁいかん。



必要条件としては、Quadro(OpenGL/QuadBufferStereo) なので、選択肢は限られ、

10万円前後で Compute Capability が2.0のボードは、Quadro 4000 。

Quadro 2000には、3pin mini-DIN が付いていない様子だが、

ここの説明によると、

3D Vision をつなげて 「(NVIDIA IR出力付の)ジェネリック・アクティブ・ステレオ」 を選択すると、

OpenGL/QuadBuffer で、3D Vision の駆動ができるらしい。

でも、Quadro 2000だと、メモリ容量が少なく帯域が狭いので、どうせなら4000が良い。



・・・QuadBufferが、GeForce でできれば、Quadro なんて馬鹿高いボードを買う必要がないのに・・・

Compute 能力的には、GeForce GTX 460 の方が、半額以下で倍くらい強いはずなのに・・・



そう考えると、GPGPU専用にGeForce GTX 460/470/480あたりを乗せて、

ステレオ出力用に Quadro FX 380 あたりを乗せて、

2枚構成にして動くだろうか???

それができたら、もはやTeslaの出番はなくなるから、

できないようになっているのかなぁ~

とりあえず、GTX 460 を買ってみて、既存の Quadro FX 4600 と

2枚差しで動くかやってみようかなぁ~♪


ちなみに、最近世界最速!を発表した中国のスーパーコンピューターも、

Tesla C2050 を 7168 枚積んでいるそうだ。

おっかないねー




参考リンク:
ELSA GLADIAC GTX 480 1.5GB  ¥52,470  パソコン工房
ELSA GLADIAC GTX 470 1.2GB  ¥34,820  パソコン工房
ELSA GLADIAC GTX460 768MB  ¥22,200  ioPLAZA

Quadro 4000  ¥99,799  ツートップインターネットショップ
Quadro FX 380  ¥16,469  ツートップインターネットショップ

NVIDIA Tesla C2070  ¥488,000  ioPLAZA
NVIDIA Tesla C2050  ¥305,000  ioPLAZA


PR:

奥様のPCにぴったり!
信頼性抜群のレノボ製ネットノートの大本命!

IdeaPad U160 (スクエア・レッド)
特別特価(税込) ¥60,590
¥3030相当のポイント還元
送料無料!(11/1正午まで)
(詳細)

IdeaPad U160 (スクエア・レッド)は、十分な性能と広い画面を持ちながら、
バッテリーの持続性に優れた省エネタイプのネットノート(ミニノート)です。

夕べのひと時を電源ケーブルを引き回すことなく、
ソファーでもベッドでもトイレでも・・・
どこへでもワイヤレスで持ち運んで使えるので、とっても便利です。

1.2GHz駆動のデュアルコア Pentium DualCore U5400 を搭載し、
3GBメモリー、500GBHDDを搭載した高性能パソコンですが、
レッドとホワイトを基調としたおしゃれな外観で、
奥様専用のパソコンとしてお勧めです ^^

重さは1.4Kgと女性でも簡単に持ち運べます!
バッテリーも5時間持ちます!
Windows 7 Home Premiumも入っています!
無線LANもついてます!(注:リンク先ページには書かれていませんが付いてます。)
130万画素のWebカメラも付いてます!(注:リンク先ページには書かれていませんが付いてます。)
カードリーダーも入っています!
16:9液晶(1366x768) も付いてます!

これだけ、全部付いていて、たったの ¥60,590 ポッキリです。

今なら、送料も無料♪

お求めは、アイ・オー・データ直販サイト のioPLAZA まで。
[PR]
by isoq | 2010-10-31 01:41 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

OpenGL で Lighting しても真っ黒・・・

原因は、ノーマルが小さかった事。

表面形状から計算した方向ベクトルをノーマルとしたが、

方向ベクトルが小さかったため、

暗くなってしまった。

glNormal3dv(...) に渡す引数は、

しっかりと、Length が 1.0 の法線ベクトルを渡さないと、

このように、真っ黒になってしまうので注意!
[PR]
by isoq | 2010-09-08 16:10 | 3Dグラフィックス
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

Blender の 操作方法/ショートカットキー 一覧

トリンプ・オンラインショップ


仕事柄、3Dモデルが必要になったので、自作に挑戦。

最近は、Blender という、とても高機能な
アニメーション向けの 3D CADソフトがフリーで使えるので、大変便利です。
便利なのですが、使い始めるまでに結構苦戦します。

基本的に、3D CADソフトは、ソフトごとに独自の操作性があるので、
1つのソフトを極めたとしても、他のソフトには、全く歯が立たない事は
よくあることです。

Blenderも結構独自路線を行っているので、
操作方法やショートカットを覚えるのが結構手間取りました。

まだまだ、「あの機能」にどこからアクセスしたらよいか、ほとんど分かりませんが、
何とか、目的の形状データを作成することが出来ました。
STLで保存して、OpenGLで描画して、いっちょ上がり!
(ちなみに、BlenderのSTLは、バイナリーですね。)

自分でも忘れないように、ちょっとした表を作成してみました。

こちらです ↓ (エキブロでは、テーブルが使えんとは。。。)
Blender の 操作方法/ショートカットキー 一覧

とりあえず、これだけ覚えとけば、何とかなるかな、、、


あと、保存したはずなのに消えていた事件も起こりました。
メニューから「Save」と選んだだけでは、保存できず、
Saveを選んだ直後に表示されるメニューみたいな物で、
ファイル名のところを選択しないと、だめらしい。

いちおう、上書き確認のつもりらしいが、
最初、そんなこととは知らず、「Save したら、確認画面が出た」
程度に考えていて、後から冷や汗書きました。。。

結局、「前回のセッションを復元」で、事なきを得ましたが、、、
[PR]
by isoq | 2010-03-20 02:42 | 3Dグラフィックス
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇