5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

OpenGLスレ Part17

1 :デフォルトの名無しさん:2011/11/15(火) 18:45:31.83
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在のバージョンは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/

217 :デフォルトの名無しさん:2011/12/06(火) 03:29:32.31
GPL混ざってる?

218 :デフォルトの名無しさん:2011/12/06(火) 11:05:49.93
>>211
好きなの選べ
http://www.opengl.org/resources/libraries/windowtoolkits/

さすがにSDLは時代遅れだろう
GLFWとかの方がいい

219 :デフォルトの名無しさん:2011/12/06(火) 12:34:32.43
SDLとGLFWとでは抽象レベルが全然違うような気がする

220 :デフォルトの名無しさん:2011/12/06(火) 12:45:26.92
SDL使うぐらいならSFMLを使ったほうがいい

221 :デフォルトの名無しさん:2011/12/06(火) 21:39:43.13
GLEWで音楽再生とかどうやるの?

222 :デフォルトの名無しさん:2011/12/06(火) 22:23:01.91
恥ずかしながらSFMLって初めて聞いた
面白そうだけど日本語情報が少ないから大変そうだ……

223 :デフォルトの名無しさん:2011/12/06(火) 22:30:46.33
>>221
GLFW 自体には音楽再生用の仕組みは用意されていないから、
別のライブラリやAPIを使う

play 関数を呼べば stop 関数を呼ぶまで再生し続ける関数があるなら、
それを適当なタイミングで呼べばいい

再生用バッファにwavデータを少しずつ放り込むタイプなら、
毎フレームにおいてバッファの様子を調べて適当にデータを放り込め

224 :デフォルトの名無しさん:2011/12/06(火) 22:39:54.84
>>218
横からだけど、glutしか使ってなかった
glfwまじで使いやすかったわ・・・ガチでありがとう

225 :224 :2011/12/06(火) 22:40:46.98
テンプレに入れて欲しいくらいだ

226 :デフォルトの名無しさん:2011/12/06(火) 23:23:03.87
フレームワークだけは自作じゃないと落ち着かない

227 :デフォルトの名無しさん:2011/12/06(火) 23:43:21.70
>>224
glutと比べてどこらへんが使いやすい感じなの?

228 :デフォルトの名無しさん:2011/12/07(水) 07:26:32.42
>>227
・ちゃんとメインループから帰ってくる
・tgaのテクスチャなら作るのラクチン
・glutくらいシンプル

229 :デフォルトの名無しさん:2011/12/07(水) 16:18:16.17
GLUTによる「手抜き」OpenGL入門を見てアニメーションを作っているのですがこのやり方で一定の動きをした後同じオブジェクトに違う動きをさせるアニメーションを作るにはどうすればいいでしょうか?

230 :デフォルトの名無しさん:2011/12/07(水) 17:24:24.21
どこのopenglのバージョンの境かしらないが
0サイズのテクスチャーをFBOにアタッチしてOKだったりエラーだったりするのな
焦らせやがって全くw

231 :デフォルトの名無しさん:2011/12/07(水) 19:04:32.62
>>229
それは GLUT や OpenGL とは何の関係もない

「一定の条件を満たしたかどうか」を判定する方法と、
判定した結果に応じて「状態を遷移させる」方法があればできる

if (一定の動きをしたか?) then 違う動き else 同じ動き

とか

void anim1 () { 同じ動き }
void anim2 () { 違う動き }
--------
a = anim1 // 初期化

if (一定の動きをしたか?) then a = anim2

とか、方法はいろいろある

232 :デフォルトの名無しさん:2011/12/07(水) 19:43:08.10
いつも省略してたからthenっていう書き方が斬新に見えた
本来は if then elseなんだな

233 :デフォルトの名無しさん:2011/12/07(水) 19:45:51.25
>>232
スマン

>>231 は擬似コードのつもりだ

234 :デフォルトの名無しさん:2011/12/08(木) 23:59:15.80
ES 2.0でglEnable/glDisableのGL_MULTISAMPLEがなくなってますが、
途中でマルチサンプルのON/OFFを切り替えるのって
もうできなくなってしまったんでしょうか?

235 :デフォルトの名無しさん:2011/12/09(金) 21:31:02.67
スレチだけど状態遷移書いてるとyieldとか手軽につかえたらなーと思うなぁ

236 :デフォルトの名無しさん:2011/12/10(土) 00:43:40.49
long jumpでええやん

237 :デフォルトの名無しさん:2011/12/10(土) 03:28:12.94
libpclマジオススメ

238 :デフォルトの名無しさん:2011/12/10(土) 16:16:42.39
>>231
ありがとうございます。また質問させてください。

239 :デフォルトの名無しさん:2011/12/10(土) 20:23:17.92
>>236-237
うーんなるほど・・・

240 :デフォルトの名無しさん: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
で、正しいですか?


241 :デフォルトの名無しさん:2011/12/10(土) 21:12:29.51
質問2)
OpenGL の行列が 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)と異なりますよね?

242 :デフォルトの名無しさん:2011/12/11(日) 09:54:37.99
>つまり、紙の上では C=IRT コーディングは C=ITR
>で、正しいですか?

正しいわけないだろ

243 :デフォルトの名無しさん:2011/12/11(日) 12:28:27.29
>>240-241
紙の上ってどういう意味?

>>242
何が悪いか言わずに正しいわけないだけ言うのって内容を理解してない人間がよくやる

244 :デフォルトの名無しさん:2011/12/11(日) 12:40:56.23
今からまた行ベクトルだ列だ転置だ左手だってはじめるのかw


245 :デフォルトの名無しさん:2011/12/11(日) 12:49:30.33
はあフレームバッファの始点を左上にしたい

246 :デフォルトの名無しさん:2011/12/11(日) 14:16:09.57
また阿呆が暴れてるのか。消えろよ 240

247 :デフォルトの名無しさん:2011/12/11(日) 14:47:23.17
紙の上ってのが良くわからんが C=IRT コーディングは C=TRI じゃねぇの?
右から計算するなら

248 :デフォルトの名無しさん:2011/12/11(日) 14:58:12.26
一部のandroid機種だとGL_INFO_LOG_LENGTHの値って常に0が返ってくるのね…

おのれー!

249 :デフォルトの名無しさん:2011/12/11(日) 16:29:34.26
紙の上=学校で習った数学での習慣を使った手計算の時の順序では、
ってことじゃないの?

ここは勉強出来ない、数学出来ない、ライブラリのリファレンス読んでわかったつもりの
ニートとクズの吹き溜まりだから、真面目な質問しても答え返ってこないよ
>>242-247 みたいなレスしか返せない。 さらにバカだと >>246 みたいな頭のおかしいレスになるし。

ちなみに俺は、数学弱いのでよくわからないw

250 :デフォルトの名無しさん:2011/12/11(日) 16:49:04.80
>>249はなんで書き込んだんだ?

251 :デフォルトの名無しさん:2011/12/11(日) 17:17:43.47
>>240
紙のRやTもOpenGLでは転置になるから同じR T ではない点に注意
(R * T)の転置 = Tの転置 * Rの転置
という関係があるので逆になるように見える。
縦書きと横書きの違いでしかない
つかずっと同じ話してるので、自分で実際にプログラム作って確認してみたらいいよ

252 :デフォルトの名無しさん:2011/12/11(日) 18:17:41.79
>>251
OpenGLでは転置になるとかウソ書くからまた混乱する初心者が増えるんだよ・・・。
OpenGLの主な(?)ドキュメントは列ベクトル表記を採用しているというだけの話だろ。

253 :デフォルトの名無しさん:2011/12/11(日) 18:33:20.71
>>252
その通りです。すいません。

254 :デフォルトの名無しさん:2011/12/11(日) 19:32:11.05
>>247は合ってると思うけどw
学校で習った数学での習慣を使った手計算の時の順序が
OpenGLでは逆になるという事だ

255 :デフォルトの名無しさん:2011/12/11(日) 19:48:22.38
紙の上とは
>>249氏のとうりです。
>紙の上=学校で習った数学での習慣を使った手計算の時の順序では、

>>247
確かにです。

>>254
皆さん、有難うございます。


256 :デフォルトの名無しさん: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(・)は転置

というだけの話だろ
というか、変換行列であることを無視して単なる行列演算の話をしても無意味

257 :デフォルトの名無しさん:2011/12/11(日) 20:14:05.98
数学、OpenGL=列ベクトル
C/C++の配列=行ベクトル
だから逆順に掛けるんだよ

258 :デフォルトの名無しさん:2011/12/11(日) 22:50:04.22
>>257
ハァ??????

259 :デフォルトの名無しさん:2011/12/12(月) 00:19:00.50
ここは自分の中の知識を相手に伝えることの出来ない人間と相手の言っていることを理解しようともしない人間の巣窟ですね

260 :デフォルトの名無しさん:2011/12/12(月) 00:21:37.57
さすがに>>257は、わざわざ頓珍漢な事を書いて場を荒らそうとしてるとしか思えないレベル。

261 :デフォルトの名無しさん:2011/12/12(月) 17:02:57.84
glutで作った二つのウィンドウに,
glDrawArraysを用いて全く同じ物を描画しようとすると,
エラーでプログラムが落ちてしまいます.
ウィンドウが一つの時は問題なく描画できています.
頂点の数は2^24個程なのですが,何か制限があるのでしょうか?
頂点の数を減らしても駄目でした.

262 :デフォルトの名無しさん:2011/12/12(月) 17:53:24.12
>>261
昔のことなんで間違ってるかもしれないが
テクスチャとか頂点配列ってウィンドウごとに固有じゃなかったっけ

263 :デフォルトの名無しさん:2011/12/12(月) 22:12:10.54
2つのスレッドが同じ所を参照しようとして… とか
いや適当だが

264 :デフォルトの名無しさん:2011/12/12(月) 22:52:59.22
クリティカルセクション

265 :デフォルトの名無しさん:2011/12/12(月) 23:00:25.39
wglShareLists

266 :デフォルトの名無しさん:2011/12/13(火) 00:38:39.68
glutでウィンドウ2つ作れることに驚いた

67 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)