トップページgamedev
516コメント149KB

OpenGL

■ このスレッドは過去ログ倉庫に格納されています
000101/11/15 23:34ID:GvgJsycj
現在OpenGLを勉強してますが、OpenGLでは3Dゲームは作れないのでしょうか?無駄なのでしょうか?
0002名無しさん@お腹いっぱい。01/11/15 23:48ID:???
作れるよ
0003 01/11/15 23:56ID:GvgJsycj
やはりWinAPIとかも使えないとダメなんでしょうか。
0004名無しさん@お腹いっぱい。01/11/15 23:59ID:???
Quake
さげ
0005名無しさん@お腹いっぱい。01/11/16 00:11ID:???
>>3
ほどほどで大丈夫。
ダイアログとか自前でつくったほうがカコイイしね
0006 01/11/16 00:16ID:KPv6jcLU
衝突検出はどうやるんでしょうか。ax+by+cz+d=0でdの符号から判断する、面の交差を判断する方法でいいんでしょうか。
0007名無しさん01/11/16 00:33ID:???
OpenGLスレ@ム板
http://pc.2ch.net/test/read.cgi/tech/981044659/

ゲーム系の話題の方がスレが伸びるか…?
0008名無しさん@お腹いっぱい。01/11/16 03:05ID:???
ラッパーライブラリは知らないけれど、OpenGLもDirect3Dも
基本的には表示のみのAPI群でしょう。
衝突とかキャラ管理とか、そーいったものはCなりC++なりで書くもんだろう。
0009名無しさん@お腹いっぱい。01/11/16 03:25ID:???
この板できてからム板は見るのやめた。
3D系は全部この板に移行して欲しいね。
0010名無しさん@お腹いっぱい。01/11/16 09:33ID:KPv6jcLU
OpenGLで人間を作るのは不可能に近いと思う・・・
0011名無しさん@お腹いっぱい。01/11/16 10:00ID:???
はやくにんげんになりたーい
0012名無しさん@お腹いっぱい。01/11/16 13:47ID:oPPyOif1
>>10
どんな理由からですか?
OpenGLで無理なら何なら可能??
世の中ワカランことばかりだ。
0013名無しさん@お腹いっぱい。01/11/16 21:49ID:fsYad0wp
glutのコールバックって割り込みじゃなくてポーリングタイプだよね。
アクションゲームみたいなリアルタイム処理って大丈夫かな。
0014名無しさん@お腹いっぱい。01/11/17 04:51ID:???
OpenGLもDirect3Dも同じだろ?
ただ、昔はOpenGLは遅くて使い物にならないってだけだったのよね。

今はハードの性能が上がったし、OpenGLだってハードウェアアクセラレーション効くし
全然問題ないと思われ。
0015名無しさん@お腹いっぱい。01/11/17 12:40ID:FtDApPxx
>13

まったく問題なし。つうかQuakeとか見たことある?
OpenGLで作ってますよ。
0016名無しさん@お腹いっぱい。01/11/17 12:53ID:FtDApPxx
入門
ttp://www.sys.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
ttp://miso.ice.ous.ac.jp/~oka/opengl/index.html
ttp://www-nishilab.sys.es.osaka-u.ac.jp/~sonson/gl/opengltop.htm
ttp://www.butaman.ne.jp/~nobuyuki/3DDemo/index.html
ttp://www.nk-exa.co.jp/mmtech/OpenGLEdu/
ゲーム
ttp://nehe.gamedev.net/

あとは赤本見ながらここでわからないことを質問するぐらいで
何も困らないと思います。
0017レプタリアン教授01/11/17 12:58ID:DEuraLAg
>>16
俺も殆どそこで学んだけど、最後のリンクのチュートリアルは興味深いなぁ。

http://www.nk-exa.co.jp/mmtech/OpenGLEdu/ ここお勧め。
0018名無しさん@お腹いっぱい。01/11/17 17:51ID:FtDApPxx
>17

NeHeはいいですね。
このレベルになるとOpenGLの場合海外サイトばかりになるんですよね。
DirectXに比べて日本語資料が少ないのはどうしたものか・・・。
0019名無しさん@お腹いっぱい。01/11/17 17:55ID:???
DirectXも日本語資料が少ないのは同じと思われ。
海外のDirectX資料も意外に少ない。
OpenGLの資料を参考にしている。
0020名無しさん@お腹いっぱい。01/11/17 18:25ID:mUKYqA/9
OpenGLでゲーム作ってる人ってサウンドはどうしてるのかな。
サウンドだけDirectXってのも変だし。
0021名無しさん@お腹いっぱい。01/11/17 18:28ID:???
QuakeもサウンドではDirectX使ってるはず。
0022レプタリアン教授01/11/17 18:36ID:DEuraLAg
OpenGLは互換性最強だから、大学のFreeBSDで学術モデル用にも使えるから便利★
0023名無しさん@お腹いっぱい。01/11/17 19:23ID:???
>>22
Linuxでも動きます?
0024レプタリアン教授01/11/17 19:26ID:DEuraLAg
もちろんそうよ
0025名無しさん@お腹いっぱい。01/11/17 19:37ID:???
>まったく問題なし。つうかQuakeとか見たことある?
glutを使っているの?
ソース見たことないけど、使っていないような気がするけど。
0026名無しさん@お腹いっぱい。01/11/17 21:40ID:???
単にラスタライザとして使ってるだけだよ
0027レプタリアン教授01/11/17 22:06ID:DEuraLAg
1日にどれくらいGLを勉強しました?どれくらいの期間勉強して、まともなプログラム組めるレベルにこぎつけました?
0028名無しさん@お腹いっぱい。01/11/18 02:35ID:???
>>27
勉強なんてつもりじゃなにも身につかねぇな。
00292801/11/18 02:42ID:???
すまん、上みてなかった。
教育上のデータとして聞いたのか?

まともなってのが曖昧だが、
GLだけなら1日。
3Dからなら1週間。
数学からなら1.5週間。
0030レプタリアン教授01/11/18 03:18ID:???
>>29
熱心な方なんですね。1日に何時間くらいなのかもお答え頂けると嬉しいです。
確かに、GLUTなら初日でちょっとしたものくらいは作れますね。
数学も、線形数学の初歩的な知識があれば最初のうちは事足りますしね。

まともな、っていうのは、まぁ、ウォークスルーやテキスト出力を用いたプログラム・・・じゃ初歩的過ぎますか。
00312801/11/18 03:42ID:???
数学ってのも曖昧だったか。1+1からなら5、6年かかりそう。
ウォークスルーができればまともとはいえると思う。
ちゃんと座標変換の意味を理解できてればの話。
あと、クォータニオン使用。

1日に何時間ってのは、そりゃぁ寝る時間と食う時間以外。
学生なら、自由に取れるすべての時間。

基礎のうちはすべての時間をそれにつぎ込むべき。
0032名無しサソ01/11/18 03:51ID:???
 まとも=Quake並とか言い出したら、おそらく自分は
あと何年もかかるんだろうなぁ・・・(笑)。あるいは永遠に?

 OpenGLに限らず、3Dって表示するだけと応用するのとでは
天と地ほどの差があるような。日々是勉強。怠け者にはきつい。
0033名無しさん@お腹いっぱい。01/11/18 03:52ID:l+W9gEoZ
SDLで頑張ろうと思ってますが何か?
0034レプタリアン教授01/11/18 03:58ID:ROvZSKp3
ttp://www.rimath.saitama-u.ac.jp/lab.jp/tsakurai/opengl/index.html ここのプログラムとかもいいですねぇ。個人的にはGLCLOCKが一番気に入ってますが・・
0035名無しさん@お腹いっぱい。01/11/18 04:05ID:???
>>32
OpenGLを応用するわけじゃない。
結局、OpenGLとかは道具にすぎないからね。
0036名無しさん@お腹いっぱい。01/11/18 04:27ID:???
>>33
そういえばSDLスレ下がっちゃったね。
0037_01/11/18 04:39ID:d8SKOzPf
>>31
クオータニオンを噛み砕いて、説明して下さい。
使ってはいるけど、理解してないです。
00382801/11/18 07:24ID:???
3次元じゃめんどくさいんで、2次元で。
それも、原点回りの回転に限定する。
これは俺なりの理解の仕方だから、証明じゃないんでよろしく。
クォータニオンは極座標と関係がある。(みたい)
原点からの距離と角度で座標を表現するやつだ。
p = r(cosA + i*sinA);
q = r'(cosB + i*sinB); なら、p*q は rr'(cos(A+B) + i*sin(A+B))となり
q をAだけ回転させて長さに r を掛けたものになる。
これは次のように考えることもできる。
q(x, y) とすると q = x*i + y*j とベクトル表記できる。
このとき極座標系ってのは実はもう1つの軸 k を用いた表記であって
p = r(cosA + k*sinA);
q = r'(cosB + k*sinB);
となり、複素数に外積の振る舞いを追加して
i*j = -j*i = k;
j*k = -k*j = i;
k*i = -i*j = j;とすると、p*qは
r(cosA + k*sinA) * (x*i + y*j)で、これを展開してくと
r(xcosA-ysinA)*i + r(xsinA+ycosA)*j となる。
x = r' *(x/r') = r'cosB だから、加法定理を用いて
rr'(cos(A+B)*i + sin(A+B)*j) となり最初と同じ結果になる。

だが、厳密にはおなじではない。後の方は交換法則が成り立たない。まあ、外積を用いてるからあたりまえだ。
交換すると-A の回転になる。

ここで分かるのは p にベクトルを掛ければ k 回りに A だけ回転したベクトルが得られるということ。
ただ、ここで1つ問題があって、長さが r 掛けられてしまうということ。
いま、回転だけを扱いたいので、この r を打ち消す必要がある。
そこで、今の結果に p の共役な値 (1/r)*(cosA - k*sinA) を今度は
逆から掛ける。
= (1/r)*(cos(-A) + k*sin(-A)) で、かつ逆から掛けて逆回転ってことで
さっきの結果をさらに A だけ回転させることになる。
さらに回転しちゃうが、r はなくなった。これでOK。
ってことで、この p がクォータニオンだ。任意の軸 v 回りのクォータニオンは
cos(A/2) + sin(A/2) * v になるのはご存知の通り。

なんで、素直に r で割らないんだ!
って話になると思うが、おそらく、任意軸に拡張すると
r で割るだけではうまくいかないのではないかと。

まあ、専門書読んだことないんで、適当な理解の仕方だ。
31 では、クォータニオンは'使用'って書いただろ?
00392801/11/18 07:29ID:???
すまん、途中間違えた
k*i = -i*k = j;
0040レプタリアン教授01/11/18 14:21ID:???
>>38
この前それ大学で習った(w
00412801/11/18 15:33ID:???
すまん、OpenGLの話じゃないんだが1つだけ聞かせて欲しい。

>>40
ってことはだいたいあってるてことか?
それじゃなんでクォータニオンの回転は
p*q*p' じゃないといけないのか教えて欲しい。これがわからん。
ってか、この辺が載ってるお勧めの本とか。
0042レプタリアン教授01/11/18 15:55ID:???
なはは。学ぶのと教えるのは別次元ですよ。力不足でスミマセン。
0043初心者01/11/18 16:47ID:1axizOQg
SO(3)とSU(2)が同じとかって話はクォータニオンに関係ある?
0044名無しさん@お腹いっぱい。01/11/18 19:43ID:???
>>43
その辺は何学なんだ?高卒なんで分からん。
0045 01/11/18 21:05ID:???
テクスチャーってBMPダメなんでしょ?ならどうやってテクスチャー用の画像を作るの?
0046名無しさん@お腹いっぱい。01/11/18 21:17ID:???
>>45
OpenGLなら、
どんな画像でもテクスチャーに出来るよ。
0047 01/11/18 21:34ID:???
え・・glTexImage2D()でしょ。 海外サイトでも、OpenGLではjpg、Gif、BMPなどの形式は一切サポートしてません、って書いてあったし。
どうやってBMP読み取れるの?
0048名無しさん@お腹いっぱい。01/11/18 22:05ID:wTN+FDJL
>>47
OpenGL自体には特定のビットマップフォーマットを読み込む機能はないので、
指定したピクセルフォーマットのベタデータにコンバートするコードを書くか、
その手のイメージ処理を行うライブラリを使ってベタなイメージデータを作る必要があります。

#GL_RGB なら RGBRGBRGBRGB .... という具合に並べておかないといけないって事ね。

ベタデータ(photoshopで.raw形式で出力されるファイル)であれば直に読み込む
事ができますけれど。
0049名無しさん01/11/18 22:42ID:???
>>47
BMPぐらいなら自力でDIBで読んで適当にできるよ。まぁ、自己満足かもしれないが。
詳しくはこのへん参照。
ttp://www.sm.rim.or.jp/~shishido/windows.html

JPGやPNGは… ライブラリに頼る、か。
自力で読めるんならやってみたいが、難しそう。つか、これは自己満足やね。
0050_01/11/18 23:13ID:d8SKOzPf
>>38
すいません。やっぱわかんないやw
取り敢えず、他の資料と照らし合わせて眺めときます。THX!
0051名無しさん@お腹いっぱい。01/11/18 23:47ID:???
>>47
簡単に読み込みたきゃglaux使えば?
0052名無しさん@お腹いっぱい。01/11/19 04:56ID:u+/4qdZf
そこで蕎麦屋のSDLサンが「おう!それなら俺の出番だね」と顔を出すわけだ。
0053名無しさん@お腹いっぱい。01/11/19 17:12ID:RPBMak4n
>>44
行列と変換郡って本で読んだんだけど、
覚えている内容は↓の感じ。

2次元の回転はY軸を虚数でおいた複素平面では、
EXP(iθ)=cos(θ)+i*sin(θ)で回転を表せる。
座標は(x,y)=x+iyね。
Y軸が実数なら行列
cos(θ) -sin(θ)
sin(θ) cos(θ)
で回転できる。

これらの関係をSpecialUnitary(1)=SpecialOrthogonal(2)っていうらしい。
Specialは行列式が+1になるって意味とのこと。

他に、i*i=-1だけど、
行列Aを
0 1
-1 0
と置くと、
A*A=−E(Eは単位行列)
になって、
行列Aが虚数iに見えるよなぁって話もでてた。
0054名無しさん@お腹いっぱい。01/11/22 22:12ID:0blDtgUU
DirectXに比べてOpenGLのほうが優れているのは何でしょうか?
高価なOpenGLボードを使えばGeForce3より速くなるのでしょうか?

ハイエンド用途ならOpenGLなのでしょうか?
0055名前は開発中のものです。01/11/22 22:37ID:???
>>54

DirectX と OpenGL をDQN的に単純比較することで
その優劣を評価しようと試みた人間は過去に大勢いましたが
これといった成果を残すことなくログの藻屑と消えてゆきました。
0056名前は開発中のものです。01/11/23 01:51ID:???
変換郡に住みたい。。。
0057 01/11/25 01:48ID:k801mtcL
LightWaveで作ったモデルってプログラムに使える?
0058名前は開発中のものです。01/11/25 01:55ID:N7+FZWf2
>>57
ほい。
http://www.dstorm.co.jp/dev/docs/lwsdk65/docsj/filefmts/lwo2.html
0059名前は開発中のものです。01/11/26 07:37ID:???
>>55
C魔我でもやってたね。
0060名前は開発中のものです。01/12/03 23:16ID:Zd+puLmJ
>54

と関係するかもしれませんが。Softimage,Mayaなどのハイエンドツールで
OpenGLが使われているのはなぜでしょうか?

まあこれからはDirectXに変わっていくのかもしれませんが。

Softimage|XSIのシェーダーなんかはどうやってDirectX→OpenGL変換して
いるのでしょうか?
0061名前は開発中のものです。01/12/04 00:28ID:???
>60
Softimage,Mayaなどのハイエンドツールは
他のOSにも移植する事を考えて、
OpenGLを使ってるのだと思うョ。
DirectXはWindowsだけのAPIだからね。
0062名前は開発中のものです。01/12/04 00:40ID:???
>>61
Fahrenheitが実現すればよかったんだろうけどネ
0063名前は開発中のものです。01/12/05 07:40ID:???
OpenGLとD3Dの場合、僕のPCでは D3DこけるとPC死ぬけど
OpenGLならPC死ななくて 再起動できるから好き。
0064名前は開発中のものです。01/12/05 12:46ID:DEoHzlOJ
>63

そうそう、それ重要です。
0065名前は開発中のものです。01/12/06 17:00ID:kgRkIMNp
レンダラ作りたいんですが参考になりそうなOpenGLのソース
とかないでしょうか?
0066名前は開発中のものです。01/12/06 17:20ID:???
ない。
0067名前は開発中のものです。01/12/06 20:19ID:kaPhEB1U
glutでは、キーを離したときのイベントが無いようなのですが、
キーボードの同時押しは判定できないのでしょうか?
0068名前は開発中のものです。01/12/06 21:00ID:???
>>67
できないと思うのです。キーのリピートで繰り返し呼ばれてるような気がするのです。

GLUT API
http://www.sccs.chukyo-u.ac.jp/~miyazaki/glut_man/

ここ見た感じだと (Shift Ctrl Alt) + key ならできる… かも。
つか、素直にWindows で GetAsyncKeyState とか。
0069名前は開発中のものです。01/12/06 21:20ID:???
glutKeyboardUpFuncこれはちがぅ?
00706701/12/06 22:52ID:???
>>68-69
ありがとうございました。

glutKeyboardUpFuncですが、
ヘッダファイルを見たところ、

#if (GLUT_API_VERSION >= 4 ...)
GLUTAPI void GLUTAPIENTRY glutKeyboardUpFunc(...);
...
#endif
ということで、将来サポート予定の機能のようです。

今のところ、glutは諦めた方が良いみたいですね。
0071名前は開発中のものです。01/12/06 23:15ID:???
>>70
自力で作るべし。
俺もつくるぜぇ〜(;´Д`)
0072名前は開発中のものです。01/12/07 03:44ID:???
>>67
正直、そこまでくると NeHe の Lesson2 を見て
wgl (って言うんだっけ?) とか glx 使ったほうがラクそうな気がします。
0073名前は開発中のものです。01/12/07 21:48ID:zuKE/z5e
OpenGLを2D描画に使ってる人いますか?
0074名前は開発中のものです。01/12/07 22:50ID:pogN6hlZ
>73

これ気になる。3DベースのAPIで2Dの処理もしないといけない時
って結構あるもんだ。
0075名前は開発中のものです。01/12/11 01:10ID:TsYyZh1p
age!
NVSDKのサンプルでもみんなで読みましょう。
0076名前は開発中のものです。01/12/13 13:24ID:???
DIRECTXの頂点ブレンドに位置する機能を
OpenGL上でもアクセラレーション対応させたいんですけど
(今までソフトエミュレーションだったので・・・)。
その辺詳しい方、おられますか?
0077名前は開発中のものです。01/12/13 15:23ID:???
http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt
http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_weighting.txt
0078名前は開発中のものです。01/12/13 18:43ID:???
どうもありがとう。
NVやATIも、好き勝手やってるようですが、
これが本流という事ですね?
とりあえず、組み込んで見ます。
0079名前は開発中のものです。01/12/14 01:08ID:???
ATIはvertex_weightingだけサポート
NVはvertex_blendだけサポート

本流も2流あるね
0080名前は開発中のものです。01/12/14 04:05ID:???
>>79
ATiとnVが逆だよ。
それにしても、ほんと好き勝手やってるなぁ>ATiとnV
0081名前は開発中のものです。01/12/14 12:08ID:qSHJFlWd
ちょっとクォータニオンについて素朴な疑問なんだけど、
結局あれって行列では誤差があるからこっちのほうが良いよ、ってことで使うんですか?
あと、姿勢の補間と。
この2つの理由のみからですよね?
0082名前は開発中のものです。01/12/14 13:18ID:???
>>81
オイラー角の致命傷を防ぐ。
IKの問題解決には、AXISかクォータニオンしかないね。
0083名前は開発中のものです。01/12/20 19:42ID:VGfmdElm
姿勢補完
0084名前は開発中のものです。01/12/31 03:14ID:???
WGL_ARB_render_textureが面白そうなんだけど、
WGL系拡張なのが気に入らないなあ。
GLUTと併用してうまくいった人いる?

ていうかRADEON欲しい。
0085デザイーナ01/12/31 15:37ID:wsH3SVJd
>>82
>オイラー角の致命傷
ってどんなんですか?ジンバル六区とか?

いまいちクオータニオン使うメリットがわからんです
0086名前は開発中のものです。01/12/31 17:17ID:???
>ジンバル六区とか?
まさに。

まあ、だからといってクオタニオンにする必要もないんだけどね。
とりあえずオイラー角はやばい、と。
0087名前は開発中のものです。01/12/31 17:20ID:???
>>とりあえずオイラー角はやばい、と。
なすて?
0088名前は開発中のものです。01/12/31 19:09ID:???
>なすて?
ジンバル六区とか

(以下、無限ループ)
0089名前は開発中のものです。02/01/01 12:34ID:YwsXNczB
絶対角で管理すればクォータニオンを使う必要はないんじゃ?
ゲームの場合基本的に地面がある場合が多いので
ベクトルは事実上二次元(極座標)で扱えば計算量はぐっとへる。
0090名前は開発中のものです。02/01/01 12:39ID:YwsXNczB
現状ハードに対応しているかどうかということではOpenGLはDirectX8.1に負けているように思うけれど
CPUだって高性能なんだからなんでもかんでもGPU任せで
結局はフェイクシェーディングのATIやNVの方針はどうかと思う。

ところで音楽関係だけどでもとか商用でない場合はFMOD、BASS、MIDPlugを使うのが
OpenGLの基本だと思う。
おれはWinだけだけどDirectDrawの画像変換とDirectInputとDirectSound、DirectShowを使う

あとOpenGLトゥーンシェーディングとかはラインを併用すれば
古いマシンでもアンチエイリアスがそこそこの速度でじっそうできるのがよい。
0091名前は開発中のものです。02/01/03 00:12ID:HrlJ3rN9
ttp://romka.demonews.com/opengl/demos/zip/particles.zip
パーティクルたくさん。楽しいねえ。

ソースもあるよ。
ttp://romka.demonews.com/index_eng.htm
0092名前は開発中のものです。02/01/08 01:51ID:MknuQv4Z
ヘボい質問ですまぬが、
アキュムレーションバッファを使った処理(モーションブラー等)
が異様に遅いのは俺だけ?

ちなみにビデオカードはGeForceMXと3dfx Voodoo3の2種類。
0093名前は開発中のものです。02/01/08 06:39ID:???
みんな遅い。安心しろ。
0094名前は開発中のものです。02/01/12 14:39ID:ASkJ6hrF
age
0095名前は開発中のものです。02/01/14 03:26ID:???
glBindTextureでテクスチャを切り替えて貼ってるんですけど、表示されないで生ポリゴンになっちゃうテクスチャがあります。
そのテクスチャだけ表示だと正常に表示されるのに、違うテクスチャと切り替えてると表示されません。

4枚テクスチャがあってそのうちの2枚は正常
異常な2枚だけを表示させるとそのうちの1枚だけ正常
1枚だけだと正常
0096名前は開発中のものです。02/01/14 04:05ID:???
とりあえずソースを見せないことにはどうにもならないのでわ
0097名前は開発中のものです。02/01/14 05:02ID:???
とりあえず、glGetError()でどうなってるとか見てるというのは?
0098名前は開発中のものです。02/01/14 05:09ID:???
×見てる
○見てみる

表示付近が完璧と思うなら、glGenTextures付近で失敗してるとかは?
0099名前は開発中のものです。02/01/14 05:13ID:???
それがエラー出てないんですよ。
0100名前は開発中のものです。02/01/21 02:04ID:W9Hprj7q
OpenGL & SDL for C#
ttp://csgl.sourceforge.net/

日本語のVisualStudio.NETっていつ頃になるの?
0101名前は開発中のものです。02/02/02 17:05ID:???
寂れてしまった…
■ このスレッドは過去ログ倉庫に格納されています