OpenGLスレ Part17
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/11/15(火) 18:45:31.83現在のバージョンは4.1
http://www.opengl.org/
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
== 必読書 ==
・OpenGLプログラミングガイド 原著第5版 (通称赤本)
・OpenGL(R) Reference Manual (通称青本)
・OpenGL Shading Language (通称だいだい本)
・OpenGL(R) SuperBible: Comprehensive Tutorial and Reference
・OpenGL ES 2.0 プログラミングガイド
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
あると便利。
・ゲームプログラミングのための3Dグラフィックス数学
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe: http://nehe.gamedev.net/
== 前スレ ==
OpenGLスレ Part16
http://hibari.2ch.net/test/read.cgi/tech/1309182662/
0232デフォルトの名無しさん
2011/12/07(水) 19:43:08.10本来は if then elseなんだな
0233デフォルトの名無しさん
2011/12/07(水) 19:45:51.25スマン
>>231 は擬似コードのつもりだ
0234デフォルトの名無しさん
2011/12/08(木) 23:59:15.80途中でマルチサンプルのON/OFFを切り替えるのって
もうできなくなってしまったんでしょうか?
0235デフォルトの名無しさん
2011/12/09(金) 21:31:02.670236デフォルトの名無しさん
2011/12/10(土) 00:43:40.490237デフォルトの名無しさん
2011/12/10(土) 03:28:12.940238デフォルトの名無しさん
2011/12/10(土) 16:16:42.39ありがとうございます。また質問させてください。
0239デフォルトの名無しさん
2011/12/10(土) 20:23:17.92うーんなるほど・・・
0240デフォルトの名無しさん
2011/12/10(土) 21:11:47.73質問1)
OpenGL の行列が C=CM なので
原点から10離れた位置でZ軸で45度回転する場合の行列を求めるには
紙の上では
C:カレント行列 R:Z軸で45度回転 T:X軸に10移動 I:単位行列
C=I
C=C * R ローカル座標のZ軸で45度回転
C=C * T ローカル座標のZ軸で45度回転したX軸で10移動
C=((IR)T)=(I(RT))
コーディングでは
C=I
C=C * T or C *= T ローカル座標のX軸で10移動
C=C * R or C *= R X軸で10移動したローカル座標のZ軸で45度回転
C=((IT)R)=(I(TR)) or C= I * T * R
つまり、紙の上では C=IRT コーディングは C=ITR
で、正しいですか?
0241デフォルトの名無しさん
2011/12/10(土) 21:12:29.51OpenGL の行列が C=CM なので
原点から10離れた位置でZ軸で45度回転する場合の行列を求めるには
C:カレント行列 R:Z軸で45度回転 T:X軸に10移動 I:単位行列
紙の上では
C=I
C=T * C 絶対座標系のX軸で10移動
C=R * C 絶対座標系のZ軸で45度回転
C =((RT)I)=(R(TI))
コーディングでは
C=I
C=C * T or C *= T 絶対座標系のX軸で10移動
C=C * R or C *= R X軸で10移動した絶対座標系のZ軸で45度回転
C=((IT)R)=(I(TR)) or C= I * T * R
つまり、紙の上では C=RTI コーディングは C=ITR
で、正しいですか?
紙の上ではC=MC をコーディングではC=CM で計算しているので
行列の計算順は質問1)と同じですが、行列TやRの算出方法は
今回はたまたま同じ行列TやRが使えるだけで 質問1)と異なりますよね?
0242デフォルトの名無しさん
2011/12/11(日) 09:54:37.99>で、正しいですか?
正しいわけないだろ
0243デフォルトの名無しさん
2011/12/11(日) 12:28:27.29紙の上ってどういう意味?
>>242
何が悪いか言わずに正しいわけないだけ言うのって内容を理解してない人間がよくやる
0244デフォルトの名無しさん
2011/12/11(日) 12:40:56.230245デフォルトの名無しさん
2011/12/11(日) 12:49:30.330246デフォルトの名無しさん
2011/12/11(日) 14:16:09.570247デフォルトの名無しさん
2011/12/11(日) 14:47:23.17右から計算するなら
0248デフォルトの名無しさん
2011/12/11(日) 14:58:12.26おのれー!
0249デフォルトの名無しさん
2011/12/11(日) 16:29:34.26ってことじゃないの?
ここは勉強出来ない、数学出来ない、ライブラリのリファレンス読んでわかったつもりの
ニートとクズの吹き溜まりだから、真面目な質問しても答え返ってこないよ
>>242-247 みたいなレスしか返せない。 さらにバカだと >>246 みたいな頭のおかしいレスになるし。
ちなみに俺は、数学弱いのでよくわからないw
0250デフォルトの名無しさん
2011/12/11(日) 16:49:04.800251デフォルトの名無しさん
2011/12/11(日) 17:17:43.47紙のRやTもOpenGLでは転置になるから同じR T ではない点に注意
(R * T)の転置 = Tの転置 * Rの転置
という関係があるので逆になるように見える。
縦書きと横書きの違いでしかない
つかずっと同じ話してるので、自分で実際にプログラム作って確認してみたらいいよ
0252デフォルトの名無しさん
2011/12/11(日) 18:17:41.79OpenGLでは転置になるとかウソ書くからまた混乱する初心者が増えるんだよ・・・。
OpenGLの主な(?)ドキュメントは列ベクトル表記を採用しているというだけの話だろ。
0253デフォルトの名無しさん
2011/12/11(日) 18:33:20.71その通りです。すいません。
0254デフォルトの名無しさん
2011/12/11(日) 19:32:11.05学校で習った数学での習慣を使った手計算の時の順序が
OpenGLでは逆になるという事だ
0255デフォルトの名無しさん
2011/12/11(日) 19:48:22.38>>249氏のとうりです。
>紙の上=学校で習った数学での習慣を使った手計算の時の順序では、
>>247
確かにです。
>>254
皆さん、有難うございます。
0256デフォルトの名無しさん
2011/12/11(日) 20:05:03.67写像 f1, f2, f3 (対応する変換行列は M1, M2, M3)を考えたときに
列ベクトル [x; y] に f1, f2, f3 を順番に適用すると、
[x'; y'] = f3(f2(f1([x; y])))
= M3 M2 M1 [x; y]
同様のことを行ベクトルで書くと、
[x' y'] = [x y] t(M1) t(M2) t(M3) t(・)は転置
というだけの話だろ
というか、変換行列であることを無視して単なる行列演算の話をしても無意味
0257デフォルトの名無しさん
2011/12/11(日) 20:14:05.98C/C++の配列=行ベクトル
だから逆順に掛けるんだよ
0258デフォルトの名無しさん
2011/12/11(日) 22:50:04.22ハァ??????
0259デフォルトの名無しさん
2011/12/12(月) 00:19:00.500260デフォルトの名無しさん
2011/12/12(月) 00:21:37.570261デフォルトの名無しさん
2011/12/12(月) 17:02:57.84glDrawArraysを用いて全く同じ物を描画しようとすると,
エラーでプログラムが落ちてしまいます.
ウィンドウが一つの時は問題なく描画できています.
頂点の数は2^24個程なのですが,何か制限があるのでしょうか?
頂点の数を減らしても駄目でした.
0262デフォルトの名無しさん
2011/12/12(月) 17:53:24.12昔のことなんで間違ってるかもしれないが
テクスチャとか頂点配列ってウィンドウごとに固有じゃなかったっけ
0263デフォルトの名無しさん
2011/12/12(月) 22:12:10.54いや適当だが
0264デフォルトの名無しさん
2011/12/12(月) 22:52:59.220265デフォルトの名無しさん
2011/12/12(月) 23:00:25.390266デフォルトの名無しさん
2011/12/13(火) 00:38:39.680267261
2011/12/14(水) 10:56:15.94検討したところ,>>262の方の言う通りでした.
VBOを二つ用意しても,予め二つ確保した場合では描画されず,
もう一つのウィンドウを作成したあとにもう一つのVBOを確保してやる必要がありました.
皆様,御助言ありがとうございました.
0268デフォルトの名無しさん
2011/12/14(水) 14:49:13.76それを共有するようにするのが>>265のwglShareListsだったり
glut使ってるとすんなりは無理かもしれないけど
0269デフォルトの名無しさん
2011/12/14(水) 17:02:23.81線のみ色が変わります。塗りつぶすにはどうすればいいでしょうか?
0270デフォルトの名無しさん
2011/12/14(水) 17:15:35.560271デフォルトの名無しさん
2011/12/14(水) 17:47:43.58少なくとも、MFCで四苦八苦するのはもうイヤだし。
OpenGL Menu http://t.co/4BrpJVuT
0272デフォルトの名無しさん
2011/12/14(水) 18:24:05.83それを使って塗りつぶせました。
ありがとうございます。
0273デフォルトの名無しさん
2011/12/14(水) 20:50:01.980274デフォルトの名無しさん
2011/12/14(水) 21:19:57.200275デフォルトの名無しさん
2011/12/14(水) 21:50:46.83MFC使わなきゃいいだけじゃね
stl と boost と自分の過去資産(win32ハンドリング含む)があればまったく不要
と言う俺は最近 Python+OpenGLが楽しい。直書きそのまま実行でGLSLのテスト出来るってのが、
スクラッチ&ビルドで実験コード書いてる時、超絶楽ちんぽん
0276デフォルトの名無しさん
2011/12/15(木) 03:07:36.75文字数にシビアな制限があるわけでもないし、
短縮だとどこへのリンクかURLから予測できないからクリックしずらい
0277デフォルトの名無しさん
2011/12/15(木) 09:16:56.060278デフォルトの名無しさん
2011/12/16(金) 18:14:51.33OpenGLって、ジオメトリインスタンシングを自動でやるのですか。
ディスプレイリストだったら、APIの仕様としてまとめて送るというのは知ってますが
ジオメトリまでやってるとは聞いた事がありません。
0279デフォルトの名無しさん
2011/12/16(金) 18:29:18.900280デフォルトの名無しさん
2011/12/16(金) 19:30:39.69それで出してしまう
関数ポインタを習った後、何でもかんでも関数ポインタ使って実装したのと同じ
0281デフォルトの名無しさん
2011/12/16(金) 19:51:58.100282デフォルトの名無しさん
2011/12/16(金) 20:02:18.4730フレームすら維持できないくらいに頂点を増した状態でインスタンシングすると
60フレームにビターッと張り付く
0283デフォルトの名無しさん
2011/12/18(日) 09:37:33.50みんなはプロジェクションビューとモデルビューどっちに置く?
0284デフォルトの名無しさん
2011/12/18(日) 10:15:36.870285デフォルトの名無しさん
2011/12/18(日) 12:02:02.53曖昧にしか理解していないか、
またはもの凄く話しを省略して話している?
自分が言った内容の詳細を説明してみろ
0286デフォルトの名無しさん
2011/12/18(日) 14:07:21.36それだとライティングやクリッピングその他、色々うまく動かなくなるよね。
0287デフォルトの名無しさん
2011/12/18(日) 14:17:20.92お前の理解はまったくダメダメなので
あと3回OpenGLの教科書を読み直せ
0288デフォルトの名無しさん
2011/12/18(日) 18:05:43.34まさかとは思うが、モデルビューとプロジェクションビューって言う、
プログラム的にまったく作りの異なる別の何かが存在してるとか思ってる?
あと、まさかカメラって言う、プログラム的に独立した、
何か曖昧なオブジェクトが存在してると思ってる?
0289286
2011/12/18(日) 18:28:08.72お二人とも、想像力豊かなコトでw
0290デフォルトの名無しさん
2011/12/18(日) 18:59:56.560291デフォルトの名無しさん
2011/12/18(日) 20:02:32.63「ここは茶臼山でしょうか?」
↓
関西人「ちゃうス」
0292デフォルトの名無しさん
2011/12/18(日) 20:20:45.45自前で行列管理してる話とかじゃないのかしら
0293デフォルトの名無しさん
2011/12/18(日) 22:51:23.18glMatrixMode(GL_PROJECTION);
gluLookAt(up_.x, up_.y, up_.x, eye_.x, eye_.y, eye_.z, center_.x, center_.y, center_.z);
こうするかって話じゃねーの?
glMatrixMode(GL_MODELVIEW);
gluLookAt(up_.x, up_.y, up_.x, eye_.x, eye_.y, eye_.z, center_.x, center_.y, center_.z);
0294デフォルトの名無しさん
2011/12/18(日) 22:52:00.440295デフォルトの名無しさん
2011/12/19(月) 08:43:44.81多分
0296デフォルトの名無しさん
2011/12/19(月) 11:40:52.17・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
OpenGLちゅんは、なんでこんなに分家しとるん?
いちいちめんどくさいだろ。
1つで全部できるようなもんないのか
0297デフォルトの名無しさん
2011/12/19(月) 11:50:10.150298デフォルトの名無しさん
2011/12/19(月) 11:56:34.57一人や一箇所が全部作ってる訳じゃないから。 分家してるとか、そういう事じゃないんだよ。LinuxやUnixのOSとかもそうだけど。
コンピュータの世界にあるライブラリや製品の多くがそうなように、それぞれバラバラに、
誰かがいつか思いついて開発して、そして増えて広がっただけ。 またはプロダクトの設計上、疎結の関係にして切り離したりしてるだけ
俺らが、他人の生み出した物を使わせてもらう分際で、それすらめんどくさいと思うのなら、
むしろ自分で一つにまとめたライブラリでも作って自分で使うか、または世界に発表して、標準化しておくれ。
誰にでもそうやって、高名を得るチャンスは平等にあるんだから
0299デフォルトの名無しさん
2011/12/19(月) 12:04:05.260300デフォルトの名無しさん
2011/12/19(月) 12:16:28.840301デフォルトの名無しさん
2011/12/19(月) 13:23:01.03わらったw
0302デフォルトの名無しさん
2011/12/19(月) 15:19:18.340303デフォルトの名無しさん
2011/12/19(月) 18:32:49.87glGetActiveUniformARBでシェーダ側の変数名を得ると
シェーダ側の変数が"uniform mat4 JointTransform[62];"の時
amd "JointTransform"
nvidia "JointTransform[0]"
と返ってくる
0304デフォルトの名無しさん
2011/12/19(月) 20:35:01.94>1つで全部できるようなもんないのか
いいとこに気がついたね
誰もそういうのを作ってないんだよ お前が作ればいいじゃん
0305デフォルトの名無しさん
2011/12/20(火) 08:14:09.99バグかどうか知らんけどうちでもそうなる。
もう随分前からずっとそうなので、そういうもんだと思ってやってる。
0306デフォルトの名無しさん
2011/12/20(火) 10:50:30.42だな。
そしてglなんとかがまた一つ増えるw
0307デフォルトの名無しさん
2011/12/21(水) 05:31:10.570308デフォルトの名無しさん
2011/12/21(水) 12:54:40.15接頭詞としてglつけろ”という決まりでもあるのか。
glグレネードランチャーとかいうの作ったら、略称がglglになるじゃねえか。
0309デフォルトの名無しさん
2011/12/21(水) 13:41:33.490310デフォルトの名無しさん
2011/12/21(水) 23:23:43.190311デフォルトの名無しさん
2011/12/21(水) 23:52:38.100312デフォルトの名無しさん
2011/12/22(木) 01:45:12.94つかSFMLすげえな。SDLだったらSDL_imageやSDL_mixerが必要なところをこれひとつで全部賄えるなんて
0313デフォルトの名無しさん
2011/12/22(木) 09:41:14.44uniform変数を使うと挙動がおかしくなるんですけど
uniform int n;
for(int i = 0 ; i < n ; i++){...
こんなの
これなんなんでしょうね
main関数以外でも同じようなことやってるんですがそっちは別段なんともないんですよね
0314デフォルトの名無しさん
2011/12/22(木) 09:57:30.13なんだこれ・・・
0315デフォルトの名無しさん
2011/12/22(木) 10:37:55.73標準では無理だった気がする。まだベンダー拡張じゃなかったか
0316デフォルトの名無しさん
2011/12/22(木) 11:16:54.55あとGLSLは#version 120
0317デフォルトの名無しさん
2011/12/22(木) 18:47:56.900318デフォルトの名無しさん
2011/12/24(土) 03:01:22.09glUniform
0319デフォルトの名無しさん
2011/12/25(日) 02:25:27.39なんか回避方法ないかねこれ
0320デフォルトの名無しさん
2011/12/25(日) 09:35:52.680321デフォルトの名無しさん
2011/12/25(日) 11:30:17.68WebGLのGLSLはループ回数(の上限)がコンパイル時に決まらないといけないから
for (int i=0; i<8; ++i) {
if (i >= num_lights) continue;
...
}
みたいな書き方になったりする。
0322デフォルトの名無しさん
2011/12/25(日) 12:06:40.62WebGL って OpenGL を JavaScript から使うバインダか何かじゃなかったか。
Python から OpenGL を使う PyOpenGL みたいな、要は
ほにゃららから OpenGL を使う 何とか、みたいなそういう立場の物。
なので、先に WebGL の話だけど、って前提置いてから話さないと、
君が一人で思ってる事なんて、誰にも伝わらないよ
0323デフォルトの名無しさん
2011/12/25(日) 12:19:42.96使わないライトは0になる値を入れておけば問題ない
0324デフォルトの名無しさん
2011/12/25(日) 12:22:04.66データとしてライトの情報を入れて、シェーダー側で参照ってできんの?
0325デフォルトの名無しさん
2011/12/25(日) 12:29:37.330326321
2011/12/25(日) 12:29:58.56何を勘違いしてるのか知らないけど。
俺は319じゃないし、単にこういうこともあるって書いただけだよ。
>>324
できる。
0327デフォルトの名無しさん
2011/12/25(日) 12:33:44.10浮動小数点フォーマットのテクスチャファイルに、長い行列の要素放り込んで
シェーダ側でそれを参照、とかは珍しくない話。だが、
>データとしてライトの情報を入れて
これがどこまでを想定してるのが曖昧なので、YesともNoとも言いにくい
自分が使いたい情報で、かつUniform変数で渡してられないほどの分量があった時、
かつ浮動小数点フォーマットのテクスチャが使える環境なら、そういう手段を取る事もあるでしょう、って話
0328デフォルトの名無しさん
2011/12/25(日) 12:36:30.60じゃあそれを最初に言えよ。>>319-321 の流れみたら、普通に本人だと思うだろうが。
なんでお前も前提置いて話せないの?
お前が一人で思ってる事なんて、誰にも伝わらな… あれ?デジャブ?
0329デフォルトの名無しさん
2011/12/25(日) 12:47:04.90恥ずかしかったのは分かるがそう開き直られてもな。
お前みたいなアホの事まで考慮して書き込む気は無い。
0330デフォルトの名無しさん
2011/12/25(日) 12:47:16.38どうでもいいけどそこはbreakじゃだめなん?用途しだいか?でもcontinueである場合ってないよな?
0331デフォルトの名無しさん
2011/12/25(日) 12:50:47.04なんだったけかな…よく覚えてないけど、breakだとうまく動かなかったような。
■ このスレッドは過去ログ倉庫に格納されています