1read 100read
2013年05月プログラム77: OpenGLスレ Part19 (607) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【iPhoneも】Titanium Mobileスレッド【Androidも】 (217)
Git 5 (954)
バージョン管理システムについて語るスレ9 (322)
C#, C♯, C#相談室 Part79 (458)
【最速へ】LowLevelVirtualMachine【LLVM】 (550)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (440)

OpenGLスレ Part19


1 :2012/11/27 〜 最終レス :2013/05/03
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在の最新バージョンは4.3
http://www.opengl.org/
http://www.opengl.org/wiki/Main_Page
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx:    XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut:   クロスプラットフォームなツールキット。でもさすがに古くさい
・GLFW   より新しいマルチプラットフォームなツールキット
・glew:   これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo:  自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK  C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
・OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ
・OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe:    http://nehe.gamedev.net/
Tutorials for OpenGL 3.3 and later  http://www.opengl-tutorial.org/
Learning Modern 3D Graphics  Programming http://www.arcsynthesis.org/gltut/
== 前スレ ==
OpenGLスレ Part18
http://toro.2ch.net/test/read.cgi/tech/1334374186/

2 :
== 必読書 ==
-- CG入門 --
OpenGL以前の普遍的なCGの概念。
CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。
・コンピュータグラフィックス (CG-ARTS協会)
・ビジュアル情報処理 (CG-ARTS協会)
・ディジタル映像表現 (CG-ARTS協会)
・ゲーム制作者になるための3Dグラフィックス技術
・ビジュアルコンピューティング 3次元CGによる画像生成
-- 初心者用 --
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
・OpenGL ES 2.0 プログラミングガイド
-- 上級者用 --
・OpenGL Shading Language (橙本)
・Shader Xシリーズ
・GPU Gemsシリーズ
・GPU Proシリーズ

3 :
== 必読書2 ==
-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム
-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門
-- 過去の書籍 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)

4 :
== チュートリアルサイト2 ==
OpenGL Step By Step:    http://ogldev.atspace.co.uk/
OpenGL Samples Pack:    http://ogl-samples.g-truc.net/

5 :
== 過去スレ ==
Part18: http://toro.2ch.net/test/read.cgi/tech/1334374186/
Part17: http://toro.2ch.net/test/read.cgi/tech/1321350331/
Part16: http://hibari.2ch.net/test/read.cgi/tech/1309182662/
Part15: http://hibari.2ch.net/test/read.cgi/tech/1289992928/
Part14: http://hibari.2ch.net/test/read.cgi/tech/1263901596/
Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)

6 :
おつおつ

7 :
機能の整数テクスチャーへの書き込みを質問した者だけど
翻訳された4.0の仕様書のglReadPixelsとかglClampColorの項目を何回読んでも理解出来なかったので
ギブアップして公式の4.2の仕様書を読んだら加筆訂正されていてワロタ。すげーわかりやすい
やっぱり原文からして意味不明だったのね・・・
結局全パターンについてテストケースを書いて1つずつ確認して言ったら
あちこち間違えまくっていたので修正したら思った通りの動作だった
あとAMDのGPUだとglColorClampが無視される。
つまり固定小数バッファーの時は必ずクランプされ(まあ当然だ)、
浮動小数バッファーと整数バッファーの時はまったくクランプされない。
(そのままの値が取得できる)
浮動小数バッファーのクランプ設定は使いそうな気がするけど、まあいいや
C#のOpenTKが内部で握りつぶしているのかも

8 :
むむ、データフォーマットをGL_FLOATにした上で、ピクセルシェーダで処理をした結果を
戻させても内部では8bitで処理されてる?
例えばフラグメントシェーダで単色グラデーションを作ってGL_FLOATで吐き出させても
255段の階段が見えてしまってるんだけど、俺がどこかでミスってる?それともこういうもの?

9 :
ディザリング有効にしてるか

10 :
>>8
んなわけない
それはinternalFormatにRGB8(=固定小数8bit)を指定した時の動作
ちゃんとRGB8fにしてるか? 
可能性は低いがGPUが浮動小数バッファーに対応してなくて固定小数バッファーを使った可能性もある
glTexLevelParameterでGL_TEXTURE_INTERNAL_FORMATを指定して実際に確保した内部フォーマットを確認してみるがよろし

11 :
✘ RGB8f
○ RGB16f, RGB32f
ってかGL_FLOATって何だよ。glGetTexImageのformatか?
それはテクスチャーをCPU側にコピーする時の(CPU側の)形式なので、
コピー元のテクスチャーをRGB8で作っていたとしたらそもそも255階調しか存在しない

12 :
このゲームわざわざ50vs50である必要がないよね
仲間と協力してプレーしている感がまったくない
クランもないし・・・
CBだけでお腹いっぱいになってしまった

13 :
FEZスレの誤爆か。

14 :
>>10
レスありがとう
やっぱりそっちが問題だったのね、そっちはどこかの説明で色の数とだけあったから
そこで指定できるのは成分数だけかと思った
確認してきます

15 :
OSX Mountain Lionな環境な人から情報求む。
gl3wっていうOpenGLのCore Profileを有効にしてくれるライブラリを試してるんだけど、OSXをサポートしてるってサイトには書いてあるのに、サンプル(test.c)を動かしてみると、最初の初期化(gl3wInit())で失敗する……orz
他の人どう? 暇がある人は試してみて。

16 :
GUIツールキット側が対応してないのかもな
GLFWとかQtとかなら行けるんじゃないか?
あとはmacでOpenGLしてそうな人に聞くとかか
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?blogcategory=GLFW

17 :
>>15
Python起動するみたいだけどスクリプト(gl3w_gen.py)は正しく実行できてるの?

18 :
>>16
公式ページによると、標準のGLUTでいけるみたいなことが書いてあるんだけど、
それができずに困ってる。
ちなみにQtでも試してみたけど、ダメでした……。
>>15
gl3w_gen.pyは正しく実行できてる。
というかこれを実行しないとライブラリのCファイルが取得できないので。

19 :
馬鹿には無理

20 :
まあ情報が多いWindowsでやるのが楽ですわな

21 :
マカーには無理

22 :
Androidで地図アプリっぽいのを作りたいと思います。数十個のjpg画像をタイル状に配して2本指で拡大したりするものです。
glDrawTexfOESで画像描画するとGPUが動員されて速いそうなので、主にこれで2Dだけで行きたいんですが、座標の原点が左下なので換算が少々面倒です。左上にできませんか?
もう一つ。画面に入る場所のタイルだけ毎フレームglDrawTexfOESするのが普通ですか?マップ済みのを簡単にスクロール・拡大したりできないかと思って

23 :
>>18
OSX Mountain Lionで試してみたけど通らない
失敗する原因はglGetIntegervでのバージョン取得が上手くいってないからっぽい
なぜかはよくわからない

24 :
>>22
射影変換の後にY軸を反転する変換をすれば良いんじゃね
テクスチャ座標もあわせて変換しとかないといかんな

25 :
>>23
試してくれたのね。ありがとう。
なんでなんだろうね。何か動きがあるか、しばらく待った方がいいかな。

26 :
初期化で失敗する原因はもっぱらコンテキストが出来上がる前になんにゃらかんやらしちゃってる

27 :
glReadPixels()でステンシルバッファをうまく読み込めません…
↓ステンシルバッファの内容(左下がウインドウ座標原点)
90 … 99
:    :
10 … 19
0 … 9
上のステンシルバッファを読み込もうとしたコード↓
GLubyte sb[10][10];
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, 10, 10, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, sb);

結果は、
sb[0][0〜9] == 0
sb[1][0〜9] == 10
sb[2][0〜9] == 20
 :
sb[9][0〜9] == 90
となってステンシルバッファの最初の1列しか読み込んでくれません…
sb[y][x] == 10*y+x
となってほしいのですが何か設定が足りないのでしょうか?

28 :
ちなみにカラーバッファを読み込もうとしても同様のことが起こります。

29 :
GL_PACK_ALIGNMENTで1を指定してるからじゃないかな?
GL_PACK_ROW_LENGTHで10でやってみたら?
よくわからんけど

30 :
>>29
//glPixelStorei(GL_PACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ROW_LENGTH, 10);
でやってみましたが、
配列sbの中での行頭データが4byte境界にズレただけで
相変わらず1行分(10pixel)のデータが全て行頭データになってしまいます。
また、
glReadPixels(1, 0, 10, 10, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencil_buffer);
        ~~~~
としてxをずらしてもなぜか同じ結果です。

31 :
X GLubyte sb[10][10];
○ GLubyte sb[10*10];

32 :
>>31
それも試しましたが同じでした。

33 :
>>31
先頭アドレスが同じなら入ってくるデータは同じだよね
あとでアクセスするときに意味が変わるだけで

34 :
Open GL ES 1.0で、煙のような表現をやりたくて、
テクスチャを読み込ませ背景に重ね合わせたんですが、
なぜか微細な透過部分がグレー色になってしまいます
そういう仕様なんでしょうか?

35 :
はい、その通りです

36 :
いいえ、違います

37 :
あきらめずにググってたら解決方法見つかりました
>>35-36
どうもありがとうございました

38 :
答えをy/nで聞き、自己解決しても原因・対策を書いていかない
まるで役に立たない書き込みだな

39 :
まあ、どこかに一度アウトプットすることで整理されることもあるよね

40 :
>>37>>35,36に対するイヤミだろw
糞みたいに役に立たない回答ありがとうございました(R)
みたいな意味だと思うわw

41 :
いやまぁ、>35、>36を見て自分で調べるしかないと覚悟したのかも知れん。
まぁでも、>37を書くなら原因くらい書いていって欲しかったがな。

42 :
まあエスパーじゃないと>>34には答えられんわな

43 :
どうせ0.375だろうけどな

44 :
カラーバッファーのマスクについて教えてください
複数のカラーバッファーのマスクを個別に変更できる必要はありますか?
OpenGLの仕様上個別に制御可能ですが、こんな機能使わないと思うので
一括して変更にしか対応しない仕様にしようと思います

45 :
使ったことはある
画面全体の赤成分だけとか緑成分だけとかを反転させたかったときに
カラーマスクをかけて glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO) で塗り潰した

46 :
>>34
アルファブレンドしろよ
というか懐かしいな
20年前学生だったとき暇つぶしにやったよ

47 :
>>45
上の書き方だとそう取られてもしょうがない(反省)
複数バッファー(COLOR_ATTACHEMENT0,1,2,3...)をアタッチした時に、
その中の1つのバッファーだけカラーマスクを変えたい事がありますかという質問です。
そういう需要はないと踏44んでいます

48 :
あともう1つ
αブレンドってシェーダー&オフラインレンダリングの時代にはぶっちゃけもう必要ないですよね?
デフォルトのRGBのフレームバッファーに対する基本的な合成がせいぜい6種類ぐらいあれば十分で、
オフラインのRGBAバッファーに対する合成は必要無いですよね?
Aチャネルの扱いとか定義しろと言われても困る

49 :
必要ないときたかペイントツールとか思慮の外なんだろうな超絶頭悪いんだなお前
テスト仕様書漏れまくりだろ存在が人災レベルのクズ

50 :
アルファブレンドが必要ないとかありえませんわ
透明な物体を使わないってことだろ
ありえませんわ

51 :
ヌルポブレンド

52 :
>>48
はい、シェーダーの時代なのでぶっちゃけ全部不透明オブジェクトです
オフラインレンダリングの時代なのでぶっちゃけOpenGLも必要ないです

53 :
alpha to coverageでお手軽半透明マジおすすめ

54 :
Windows で動く簡単な3Dプログラムを作りたいんだけど、何で作るのがおすすめ?
できれば Java でやりたいんだけど。
具体的には、平面のフロアマップを、タッチパネルで回転したり、拡大したりするだけ。

55 :
Processing どうぞ。

56 :
>>55
初めて聞きましたわ。なんだか自由度が低そうですわ。

57 :
フロアマップ出すだけとはいえ、画像管理したり、マップ切り替えたり、
UI作ったりしなきゃいけないので、そこそこ色々できるのがいいです。ごめんなさい。

58 :
とりあえず使ってみてから文句言えや

59 :
>>58
確かにそれは失礼した。明日使ってみる。
内部的にはJavaなのねこれ。
作った後誰かにメンテ託さないといけないので、
なるべくメジャーな言語がいいんだけど、ここまでJavaっぽいならありかもね。

60 :
うにty

61 :
UnityってWindowsでも動くんだ。いいかも。

62 :
当方、CGプログラミングを始めたばかりの初心者です。
以下の描画関数displayを用意して、glRotatedでY軸中心にに30度回転させると
四角形がいくらか縦長になるという動作を期待したのですが、
30度回転すると、何故か90度回転している?ようでXY平面には何もプロットされません。
60度回転すると、左と右の色が反転、すなわち180度回転?しているようなのですが
これはどういう解釈をすればいいのでしょうか?
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glRotated(30.0(任意の角度),0.0,1.0,0.0);
glColor3d(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glColor3d(1.0,0.0,0.0); glVertex2d(-0.9,-0.9);
glColor3d(0.0,1.0,0.0); glVertex2d(0.9,-0.9);
glColor3d(0.0,0.0,1.0); glVertex2d(0.9,0.9);
glColor3d(1.0,1.0,0.0); glVertex2d(-0.9,0.9);
glEnd();
glFlush();
}

63 :
radian

64 :
>>62
このコードだとdisplay()が呼ばれるたびにY軸中心の回転変換が加えられてしまう
glLoadIdentity()とかを使って行列を毎回初期化してください
話はそれからだ

65 :
>>64
なるほど。
glLoadIdentity()を追加したところ、正常とおもわれる動作で90度回転でXY平面からは見えず
180度回転で反転となりました。
ウィンドウが開くまでに、内部的にdisplay()が三回呼び出されていて回転変換が重なってしまったた。
ということでしょうか。
ご示唆ありがとうございました

66 :
AndroidのアプリをOpenGLで作っていて初心者なんですがテクスチャを表示するとき
その表示しようとした部分だけ白くなる原因ってサイズを2の累乗にしなきゃいけないってこと
以外にどんなものがあります?
あとアルファ値を有効にして表示するのは
glEnable(GL10.GL_ALPHA_TEST);
を使えばokですか?

67 :
サンプラパラメータのGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなので
ミップマップなしのテクスチャだとおかしなことになりそうだな

68 :
テクスチャをDISABLEしてるとなる

69 :
>>66
なんのアルファ値を有効にしたいのか分からないけど、
テクスチャのアルファブレンドとALPHA_TESTは違う

70 :
Javaには無理

71 :
C → C++ → JAVA → C++
これが正しい進み方

72 :
Javaなんて糞言語三角コーナーに投げ捨てろ
代わりにC#を使ったほうが便利だ

73 :
ぷぷっ

74 :
C#って何ができるの?

75 :
何故C++じゃなくてC#なのか全く意味不明。

76 :
C++
 ++

77 :
JavaじゃなくてC#って書いてあるのがいつの間にかC++じゃなくてC#ということになってるのが意味不明です

78 :
C++から一度はJAVAに移るが例外処理のウザさと実行速度の遅さに
ウンザリして結局C++に戻るんですね、わかります。

79 :
C丼

80 :
OpenGLを使う上でC#の優位性が全く存在しないのに、
役立たずを勧める意図は何なんだろう?

81 :
OpenGL以外の部分で優位だからじゃないの?

82 :
その通り
C++だとGUI作るのが面倒すぎる

83 :
qtgl

84 :
GUIといえばJAVAとC#だけどC++でもGUIライブラリ使えば
それなりに楽できるんじゃないかな?

85 :
なんで今更C++なんて覚えなきゃいけないんですか?時代遅れですよね?

86 :
C#の場合C++でライブラリ書いて呼び出すのも比較的簡単だし
え?SWIG?

87 :
Fortran2003にしましょう

88 :
今更と思うのなら、自分の使っているアプリを見回してみるいい。
OS、アプリ、ゲームと、ことごとくC/C++で出来ている。
C#で出来ている物といえば、手抜きっぽい小規模なプログラムばかりだ。

89 :
手抜きで間に合うのなら手抜きでいいんだよ

90 :
VC#が神すぎてQtとかうんこに見えてくる

91 :
お前らOpenGLの話しろよ(´・ω・`)

92 :
GUIなんて自作しろよ
.NETFRAMEWORKはモッサリで駄目だ

93 :
C#でGUIって、OpenGLで描画したものと整合性がとれないだろう。
だからみっともないユーティリティ擬きしか作れないんだよ。

94 :
C#使ったことないならでたらめなこと言わないほうが良いよ
恥かくのが趣味なら止めないが
ttp://sky.geocities.jp/freakish_osprey/opengl/images/Demo_MQOViewer.png

95 :
まずリンク先がデタラメだよね。

96 :
結局、OpenGLでまともにGUIをやろうと思ったら、
標準で提供されているRADツールなど何の役にも立たない。

97 :
>>85
なんで今更歩くことなんて覚えなきゃいけないんですか?時代遅れですよね?
っていって足を切り落とされるお前の赤ちゃんがかわいそう

98 :
他のGUIライブラリも何の役にも立たないけどね
自作しなければならない部分はあるが、そうでない部分をRADでとても楽させてもらえるのが良いね

99 :
通常のGUIコンポーネントの一部にOpenGLで描画したいって需要もあるんだよ

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
GARMIN社のGPSのプログラム (657)
くだすれC++Builder(超初心者用)その5 (361)
★初心者以前の質問に雪崩のように答えるスレ★ (710)
***Javaのオススメ入門書*** 『創るJava』 3.0 (567)
プログラム板 自治スレッド Part7 (669)
NetBeans Part6 (947)
--log9.info------------------
福岡のCMについて語る (874)
秋田のCMを語るPart2 (362)
【新垣結衣】アサヒ飲料 十六茶 (415)
【AC CM】大和田健介クンが可愛い【見える気持ちに】 (854)
飯時に生理用品のCMはやめろ (274)
ハウス食品のCM (291)
【オルビス】多部多部未華子は意外に可愛い (424)
[test]書き込みテスト 専用スレッド[テスト] (662)
2010年不愉快CM大賞 (291)
東海地方のCM自慢 part12 (305)
■ 揖保の糸CMキャラクターを継ぐのはこの女優 ■ (344)
ベッキーのUSJのCM (243)
【日本の至宝】武井咲CM・広告スレ★4【現代の女神】 (477)
【リングディンドン♪】木村カエラのCM【Docomo】 (365)
山下智久のCM (351)
2000名に聞いたウザいCM、トヨタ社がトップ3を独占 (288)
--log55.com------------------
西野ジャパン part179
西野ジャパン part180
西野監督、一夜明け選手らに謝罪
西野ジャパン part181
西野監督「本意ではないが勝ち上がるための戦略」3
西野ジャパン part182
西野ジャパン part183
西野ジャパン part183