Drowsy Dog's Diary

any note, any thought

2014年1月31日
by kazoo
0 comments

glReadPixels()の alpha の値

めもん。

GLUTとOpenGLで描画したとある領域を glReadPixels() してフレームをキャプチャする。
データはRGBAで、透明をちゃんと読み出したいのだけど、なんか環境によってアルファの値がすべて FF になっていることがあった。

ごく単純に

だけやっても、α=0なのでキャプチャ結果は真っ黒を期待しているんだけど、実行環境によって青になったりする。

RGBA を指定しているのになんでだー?と、思ったら。

glutInitDisplayMode

GLUT_RGBA
Bit mask to select an RGBA mode window. This is the default if neither GLUT_RGBA nor GLUT_INDEX are specified.

GLUT_RGB
An alias for GLUT_RGBA.

おお。GLUT_RGB と GLUT_RGBA って同じものだったのか。。

ということで、

とするのが正解だったらしい。

2013年4月23日
by kazoo
0 comments

glxinfo – 3Dアクセラレーションの確認

ふわふわしたメモ

懇意にしていただいている とあるクラウド屋さんに、OpenGL 的に重い処理をクラウド側でやるのでグラフィックボードを乗っけてくれないかとお願いをしたところ、こころよく OK をいただき、セッティングしてくれた。
(X を立ち上げるのでクラウドだけど起動時モニター繋いでもらうとかいろいろめんどい。感謝)
処理内容は GLUT で描画された 3D 画像を何万フレームも書き出して、最後にそれを動画にエンコードするようなもの。

で、繋いでもらったはいいけど速度以外にどうやってアクセラレーションされてるかどうかを確認すればいいんだろう、というメモ。
ふわふわなので突っ込み歓迎です。

glxinfo をつかう

glxinfo は使われている libGL のバージョンやドライバの情報を調べるプログラム。

とすれば、

OpenGL vendor string: Intel Inc.
OpenGL renderer string: Intel HD Graphics 3000 OpenGL Engine
OpenGL version string: 2.1 APPLE-7.32.12
OpenGL shading language version string: 1.20
….
みたいな情報が確認できる(MacbookAir の場合)。

んで、そのクラウド環境では、

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: Quadro 4000/PCIe/SSE2
OpenGL version string: 4.3.0 NVIDIA 310.44

とかになる。ちゃんと NVIDIA のドライバが Quadro ハードウェアを動かしてることがわかる。
同じサーバで VNC 環境になっている display:1 を見ると、

OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.5.1)

こちらではアクセラレーションなしのレンダリングが行われる。

あと、描画を行っているプロセスの、/proc/{PROCID}/maps を見て libGL.so をリンクしているかどうか?も目安になるらしいが、これだと VNC 環境でもリンクされていたので確証なし。。