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

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

OpenGLスレ Part16

1 : 忍法帖【Lv=40,xxxPT】 :2011/06/27(月) 22:51:02.50
クロスプラットフォームの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スレ Part15
http://hibari.2ch.net/test/read.cgi/tech/1289992928/

2 : 忍法帖【Lv=40,xxxPT】 :2011/06/27(月) 22:51:32.02
== 過去スレ ==
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落ち)

== C/C++以外から使うには ==
Rubyから    --> ruby-opengl
Pythonから   --> PyOpenGL
Javaから    --> JOGL
JavaScriptから --> ???
Haskellから  --> ???
C#等、.NET系  --> OpenTK

3 : 忍法帖【Lv=40,xxxPT】 :2011/06/27(月) 22:55:23.08
== 追記 ==
OpenGL.org wiki:
 http://www.opengl.org/wiki/Main_Page
OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ
 http://www.openscenegraph.org/
OpenGL Mathematics (GLM): GLSL の仕様を元に特化された C++ 数学ライブラリ
 http://glm.g-truc.net/


WebGL あたりのテンプレも欲しいな

4 :デフォルトの名無しさん:2011/06/27(月) 23:04:59.83
OpenGL 4.1 API Quick Reference Card
 http://www.khronos.org/files/opengl41-quick-reference-card.pdf
OpenGL 3.2 API Quick Reference Card
 http://www.khronos.org/files/opengl-quick-reference-card.pdf
OpenGL ES 2.0 API Quick Reference Card
 http://www.khronos.org/opengles/sdk/docs/reference_cards/OpenGL-ES-2_0-Reference-card.pdf
WebGL 1.0 API Quick Reference Card
 http://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf

5 :デフォルトの名無しさん:2011/06/27(月) 23:45:48.21
勝手にオススメライブラリ:

TriMesh2 :
 - http://gfx.cs.princeton.edu/proj/trimesh2/
 - モデラーから出力した綺麗なデータを描画したい時に使う
 - 主要なファイルフォーマットが読めて使い方もファイル名を指定してreadするだけ
TriStripper :
 - トライアングル・ストリップ化ライブラリ
 - メッシュからストリップを作りたい時に使う
 - NvTristipより高速でモダン




6 :デフォルトの名無しさん:2011/06/27(月) 23:47:10.81
http://nehe.gamedev.net/
 NeHe's チュートリアル: 昔からあるOpenGLのオンライン教材



7 :デフォルトの名無しさん:2011/06/28(火) 00:21:16.68
>>5
GPL注意

8 : 忍法帖【Lv=1,xxxP】 :2011/06/28(火) 03:36:23.91
今勉強中なんだけどリッチなGUIを持ったOpenGLプログラムを作りたいならQTがよさそう。
OpenGL使わなくてもC++のGUIライブラリとしては定番な感じかな。

これからはglutより新しいglfw, sfmlあたりがいいんでないだろうか。
日本語の情報は少ないかもしれいが。

9 :デフォルトの名無しさん:2011/06/28(火) 03:49:02.31
Qtと組み合わせて使うには
どのライブラリがいいの?

10 :デフォルトの名無しさん:2011/06/28(火) 07:46:13.80
SFMLははじめて知った。なかなかいけてる。

OpenGLで使えるライブラリとかテクニックとかまとめたWikiが欲しいね。
自分専用で作る気でいるけど、誰でも書き込めるようにしたほうがいいのだろうか。


11 :デフォルトの名無しさん:2011/06/28(火) 07:48:40.29
あとGoogle GroupsにあるOpenGLのメーリングリスト。
http://groups.google.com/group/opengl_japan

未だに使われてないけどw


12 :デフォルトの名無しさん:2011/06/28(火) 21:56:48.64
SFMLが一番近いのはSDLだな。Qtも近縁。
SFMLは日本語情報がまったくないのが欠点だろう。
個人的にはSDLを使うならSFMLを使いたい。作りがSDLは古臭すぎる。




13 :デフォルトの名無しさん:2011/07/01(金) 18:02:36.58
SDLって初期化に時間がかかり過ぎるんだよな
ただ、それだけの理由で使わなくなった

14 :デフォルトの名無しさん:2011/07/01(金) 21:14:41.49
シェーダー使ってる人は自分で書くんだと思うんですが
perspective division(クリップ座標→正規化デバイス座標の変換。wで割る作業)は
普通、どのタイミングで行われるのですか?
webにはglFrustumやglOrthoで変換されると書いてあるページもあるものの
opengl.orgのリファレンスを読む限りカメラ座標→クリップ座標への変換しか
やっていないように見えます

15 :デフォルトの名無しさん:2011/07/01(金) 22:16:16.07
どのタイミングというかクリップ座標 --> 正規化デバイス座標の変換の時だが。
本によってはクリップ座標と正規化デバイス座標がごっちゃになっていたり無くなっているのでよく混乱する。



16 :デフォルトの名無しさん:2011/07/02(土) 12:45:07.49
ありがとうございます。えっとその場合、どのapiがやってるかわかりますでしょうか?
(すみません、自分の質問がおかしかったです)

ローカル/ワールド/カメラはGL_MODELVIEW_MATRIX (gluLookAt+glTranslatef他)
カメラ→クリップはGL_PROJECTION_MATRIX (glOrthoやglFrustum)
クリップ→正規化デバイス ?
正規化デバイス→デバイスはglViewport。行列不使用

17 :デフォルトの名無しさん:2011/07/02(土) 12:55:02.74
どれもAPIで変換してるわけじゃない。グラフィックス パイプラインで調べてみ


18 :デフォルトの名無しさん:2011/07/02(土) 14:56:59.15
w=1/zなので固定シェーダーならGPUが自動で計算して適応する(のでAPIはない)。
シェーダー使うとwの出力に何でも代入できたはず。


19 :デフォルトの名無しさん:2011/07/02(土) 15:11:41.31
>>14>>16
CCからNDCへの変換は、「x,y,zをwで割る操作である」と決められてるので
それらを制御するAPIはありませんよ。
ちなみにプログラマブルシェーダの場合、バーテックスシェーダの出力gl_Positionは
クリップ座標であるべしと決められてるので、シェーダでは変換しないです。
どのタイミングで変換されるのか・・・はよく分からんけど、クリッピングが終わって
ラスタライザでトライアングルセットアップされる直前あたりじゃないかなぁ。

20 :天使 ◆uL5esZLBSE :2011/07/03(日) 05:37:05.38
Rubyバカにしてる子ってさ
変数に$ついてる言語触ってるって事だよね

いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
ゴッミゴミだな

21 :デフォルトの名無しさん:2011/07/03(日) 14:05:16.15
>>20
でも処理速度がねぇ…
Lua最強!

22 :デフォルトの名無しさん:2011/07/03(日) 18:24:13.75
GoとPython使ってる俺はかなりのマイノリティ

23 :デフォルトの名無しさん:2011/07/03(日) 18:56:36.40
たいして使えてないくせに

24 :デフォルトの名無しさん:2011/07/03(日) 19:26:04.02
すいません

25 :デフォルトの名無しさん:2011/07/03(日) 19:27:25.86
すっげームカツクこういう奴(>>23)を完膚無きまでに
ぐぅの音もでないまでに打ちのめすにはどうすればいい?

26 :デフォルトの名無しさん:2011/07/03(日) 19:37:38.07
そういうやつを気にするまでもないくらいに能力を上げる

27 :デフォルトの名無しさん:2011/07/03(日) 19:42:52.93
   ∩___∩
   | ノ      ヽ/⌒) ♪ ぐぅ
  /⌒) (゚)   (゚) | .|  ぐぅ
 / /   ( _●_)  ミ/ ぐぅ ♪
.(  ヽ  |∪|  / ぐぅ ぐぅ
 \    ヽノ /  ぐぅ ぐぅ ぐぅ
  / >>23  / ぐぅ  ぐぅ 
 |       /  ぐぅ ぐぅ ぐぅ ぐぅ
 |  /\ \  ぐぅ  ♪
 | /    )  )
 ∪    (  \
       \_)

28 :デフォルトの名無しさん:2011/07/03(日) 20:27:26.02
その分野で超有名なオープンソースを作って、これの作者ですが何か?、が一番カッコいい気がする

29 :デフォルトの名無しさん:2011/07/03(日) 21:25:29.87
そもそもすごい奴は、いちいちそんな見栄をはったりしない

30 :デフォルトの名無しさん:2011/07/03(日) 23:42:03.76
>>25
黙るようなコードを書けば良い

31 :デフォルトの名無しさん:2011/07/04(月) 00:54:22.33
>>25
お互いに相手も知らないし、実際の程度も知らないし、何も知らない状態で
言ってるだけだから普通はスルー


32 :デフォルトの名無しさん:2011/07/04(月) 20:25:57.28
まともな人間は>>23みたいなこと言わない
大抵が何やってもうまくいかずいつもボロクソ言われてるから
せめてネットでは、と>>23みたいな発言するもんだ
気にすることないよ

33 :デフォルトの名無しさん:2011/07/04(月) 20:51:17.78
   ∩___∩
   | ノ      ヽ/⌒) ♪ ぐぅ
  /⌒) (゚)   (゚) | .|  ぐぅ
 / /   ( _●_)  ミ/ ぐぅ ♪
.(  ヽ  |∪|  / ぐぅ ぐぅ
 \    ヽノ /  ぐぅ ぐぅ ぐぅ
  / >>23  / ぐぅ  ぐぅ 
 |       /  ぐぅ ぐぅ ぐぅ ぐぅ
 |  /\ \  ぐぅ  ♪
 | /    )  )
 ∪    (  \
       \_)

34 : 忍法帖【Lv=2,xxxP】 :2011/07/05(火) 03:26:39.89
OpenGLの話をして下さい><;

35 :デフォルトの名無しさん:2011/07/05(火) 04:26:35.63
>>34
OpenGLで>>33のスキニングアニメーションをやりたいです
サウンドはOpenALでぐぅぐぅ♪です

36 :デフォルトの名無しさん:2011/07/05(火) 07:26:17.68
>>35
それは、いっしょにやりませんか、というお誘いか?
それとも、何か質問があるのか?

前者なら断る
後者なら、今何ができて何ができないか、質問は何か、ちゃんと言いなさい

37 :デフォルトの名無しさん:2011/07/05(火) 09:53:21.03
そんなこと言わずになんとかお願いしますよぉ

38 :デフォルトの名無しさん:2011/07/05(火) 12:44:05.76
それは人にものを頼む態度ではない

39 :デフォルトの名無しさん:2011/07/05(火) 19:45:41.24
それは人にものを頼まれる態度ではない


40 :デフォルトの名無しさん:2011/07/05(火) 21:01:32.45
それなら、そんな人にものを頼むなよ

41 :デフォルトの名無しさん:2011/07/05(火) 21:48:59.55
頼む方だけでなく、頼まれる方にも非がある。

42 :デフォルトの名無しさん:2011/07/05(火) 22:42:08.98
どのような非があるのか?

43 :デフォルトの名無しさん:2011/07/05(火) 22:53:00.62
例えば満員電車で裸の女性が股間を濡らしていたとしよう

44 :デフォルトの名無しさん:2011/07/05(火) 23:50:04.80
出もの腫れもの処嫌わずぢゃ

45 :デフォルトの名無しさん:2011/07/06(水) 02:26:01.66
つまり、全てがオープンなGirL が居たと言う事ですね。


さ、とっとと OpenGL の話しに戻すんだお前らwwwwwwwwww


46 :天使 ◆uL5esZLBSE :2011/07/06(水) 06:42:10.73
∨∨
<<<<<<<< つまり、全てがオープンなGirL が居たと言う事ですね。 >>>>>>>>(キリッ!
∧∧∧∧∧∧∧∧(キリッきリッッ!!!キリッッキリッッッ
∨∨
<<<<<< さ、とっとと OpenGL の話しに戻すんだお前らwwwwwwwwww >>>>>>(キリッッッ!!!キリッッッッ!キリッッッッキリキリッ!!!!

47 :デフォルトの名無しさん:2011/07/06(水) 07:25:06.99
珍獣がこのスレに来ていると聞いて

48 :デフォルトの名無しさん:2011/07/06(水) 07:47:54.37
このコテハン「天使 ◆uL5esZLBSE」は天才チンパンジー「アイちゃん」が
言語訓練のために使用しているハンドルです。

アイと研究員とのやり取りに利用する書き込みなので、
関係者以外はレスしないで下さい。

                  京都大学霊長類研究所

49 :デフォルトの名無しさん:2011/07/06(水) 12:59:27.03
うるせー、ばか。
京都大学霊長類研究所が何様だよ。
命令すんじゃねーよ!

50 :デフォルトの名無しさん:2011/07/06(水) 13:47:10.82
もしかしてWin7では
glutReshapeWindowは無効なんですか?
どこで呼び出してもウィンドウサイズに
変化がみられません

ちなみに
glutInitWindowSizeはうまくいきます

51 :デフォルトの名無しさん:2011/07/06(水) 15:07:27.62
win7でも正常に動作します

52 :デフォルトの名無しさん:2011/07/06(水) 15:40:29.30
>>51
ありがとうございます
機能的にWin7でも動くということなので
他の何が原因なのか探ってみます

53 :デフォルトの名無しさん:2011/07/07(木) 15:52:47.58
openGLで8,16,32bit par channel,で ARGB順でglReadPixelする方法はありますか?

54 :デフォルトの名無しさん:2011/07/07(木) 19:01:29.43
openGLの標準のアンチエイリアス機能って色も黒くしちゃうのね・・・
それとも回避する方法ある(´・ω・`)?

55 :デフォルトの名無しさん:2011/07/07(木) 19:29:27.53
は?

56 :デフォルトの名無しさん:2011/07/07(木) 19:43:36.19
GL_POLYGON_SMOOTH
GL_MULTISAMPLE
どっちでもポリゴンのアルファだけじゃなく色もアンチエイリアスの影響で値が小さくなるから
黒くなるんだよ

57 :デフォルトの名無しさん:2011/07/07(木) 19:53:48.07
GL_NICEST

58 :デフォルトの名無しさん:2011/07/07(木) 20:03:34.73
アンチエイリアスなんてビデオカードの設定次第だろ

59 :デフォルトの名無しさん:2011/07/07(木) 20:07:56.25
うん、俺の環境ではなんかイマイチなままなようだよ
話し聞いてくれてありがろん

60 :デフォルトの名無しさん:2011/07/07(木) 21:32:57.73
いいってことよ

61 : 忍法帖【Lv=2,xxxP】 :2011/07/08(金) 04:27:45.31
>>53
OpenGL specificationの"4.3 Reading and Copying Pixels"を読んで見たら?

>>54
OpenGL specificationの"3.3 Antialiasing"を読んで見たら?

62 :デフォルトの名無しさん:2011/07/08(金) 09:59:25.14
AndroidのOpenGLESで開発をしております。
ダウンロードした画像リソースとアプリ内に持っている(resファイル配下)
画像リソースとで組み合わせてアルファブレンドを行っていますが、
うまくブレンドされず、後に描画した画像で塗りつぶされてしまいます。

原因がわかる方いらっしゃいましたら、ご教示頂けませんでしょうか

63 :デフォルトの名無しさん:2011/07/08(金) 10:35:23.54
エスパーするとアルファブレンドできてない。
理由はいろいろ考えられるので自分で調べろ。


64 :デフォルトの名無しさん:2011/07/08(金) 13:42:38.33
TriStripper 知らなんだ。
もう数年まともにいじってないからのう。


65 :デフォルトの名無しさん:2011/07/08(金) 15:45:42.98
そういやさ、ストリップ長って長ければ長いほどいいの?
TriStripperは16ぐらいで短いストリップを敷き詰めたほうが
バーテックスキャッシュのヒット率が上がっていい、
みたいな事が書いてあるけど。

66 :デフォルトの名無しさん:2011/07/08(金) 22:55:33.42
キムヨナは愛されキャラだね。
ファンばかりでなく、アンチからも愛されるという稀有な存在。

67 :デフォルトの名無しさん:2011/07/09(土) 00:26:58.53
ウホ、誤爆

68 :デフォルトの名無しさん:2011/07/12(火) 02:32:35.38
レーザーレンジセンサで距離データを取り込んで、表示させているんですが、点を軌跡のように描きたいです。
glClear(GL_COLOR_BUFFER_BIT)を書かなければ描画が蓄積されると思ったのですが、windowはぐちゃぐちゃになって表示できません。
どうしたらよいでしょうか?



69 :デフォルトの名無しさん:2011/07/12(火) 02:36:46.84
ゴミが残ってるとか?
最初だけ glClear() 実行しても駄目?

70 :デフォルトの名無しさん:2011/07/12(火) 03:14:43.32
ダブルバッファと言う言葉の意味を調べてみなされ

71 :デフォルトの名無しさん:2011/07/12(火) 04:24:47.54
>>68
ダブルバッファを使わない
glClear()は1度はする

72 :デフォルトの名無しさん:2011/07/12(火) 18:54:46.96
ジオメトリシェーダ使おうと思ったら
glGetUniformLocationで-1返るようになった。

73 :デフォルトの名無しさん:2011/07/12(火) 18:57:07.95
関数がお前の意志に反応したのか。

74 : 忍法帖【Lv=4,xxxP】 :2011/07/12(火) 22:29:57.56
>>72
シェーダでuniform変数を定義しててもそれをシェーダ内で使用していなければ
そのuniform変数は無かったことにされ、glGetUniformLocationは-1を返す。

そこんとこ大丈夫?

OpenGL specificationのOpenGL Operation->Vertex Shaders->Uniform Variables
の所を読み返すのだ。

75 :デフォルトの名無しさん:2011/07/13(水) 00:15:33.27
お前らやたらOpenGLに詳しいけど普段から使ってんの?
ゲーム製作とか?

76 :デフォルトの名無しさん:2011/07/13(水) 00:19:28.22
メール書くときにOpenGL必須だろ?常考

77 :デフォルトの名無しさん:2011/07/13(水) 01:02:14.30
不覚にもワロタ

78 :デフォルトの名無しさん:2011/07/13(水) 01:14:18.58
ビジネスの最前線でOpenGLを活用したまったく新しいそるーしょんを提案しています。

79 :デフォルトの名無しさん:2011/07/13(水) 01:23:29.75
俺は今までGeforceでOpenGLプログラムを開発し、よくnvidiaのサイトに行って開発者向けツール情報を読んだりしていた。
しかし最近AMDのGPUの方がコストパフォーマンスがいいらし
ノートPCでもRadeonを載せたものが多いようだ。

だが、ATIのGPUでOpenGLプログラミングするのはどうなんだろうか。
AMDの技術関係のスライドの殆どはOpenGLではなくDirect3Dをベースに説明していたり
Geforceで作ったプログラムがRadeonで動かないというのはよく聞くが
逆はあまり聞かないような気がする。

AMDはDirect3Dひいきで、OpenGLのサポートはしかっりしていないような気がするが
ATIのGPUを最後に使ったは7年ぐらい前になるのではっきりした事はわからない。

もしRadeonでOpenGLプログラミングの経験のある方がいれば御意見を伺いたい。

80 :デフォルトの名無しさん:2011/07/13(水) 02:54:03.51
逆だね
NVIDIAドライバのOpenGL実装が、優秀すぎると言うか、ゆるすぎる
GLの規格外の実装していても大抵は動いてくれる

そんで、ATI(Radeon)ドライバの場合は
OpenGLの規格に厳密すぎて、ちょっと規格から外れる実装(例えばFBOを作って使う部分とか)
しようものなら、すぐにハングって感じ

まあ、それで英語のGL仕様規格を翻訳しながら読む癖がついたって言えば良い事なのか?w

81 :デフォルトの名無しさん:2011/07/13(水) 08:37:50.23
gDEBuggerがOpenCLのおまけっぽいとはいえAMDから出たしOpenGLサポートが弱いってのは実際あまり感じないな
意外とOpenGL関係のツールも充実してる
NVIDIAの方が拡張に熱心だから最新機能は使いやすいが
AMDも最新標準まで早いうちにサポートしてるし
今時はNVIDIAの方がOpenGLにはいいってこともなさそうだな


82 :デフォルトの名無しさん:2011/07/13(水) 09:29:11.69
そういや(AMDの)gDEBuggerって誰か使った?
フリー化されたりAMDに買われた(?)り迷走感が凄い。
昔のgDEBuggerはうちでは動かなかったが、AMD版なら動くかもしれない

83 :デフォルトの名無しさん:2011/07/13(水) 12:36:12.37
>>75
スマフォブームでOpenGLが再び脚光を浴びたの知らないのか

84 :デフォルトの名無しさん:2011/07/13(水) 13:59:35.55
Windows 以外は OpenGL だからなあ

85 :デフォルトの名無しさん:2011/07/13(水) 21:58:38.33
Windowsでも使える死ね

86 :デフォルトの名無しさん:2011/07/13(水) 21:59:59.90
死ねはやめようよ

87 :デフォルトの名無しさん:2011/07/13(水) 22:18:57.01
>>85
主流はって意味だろ流れを読め。市ね

88 :デフォルトの名無しさん:2011/07/13(水) 22:27:39.03
使えるしねに変換が入ったとかそんなとこだろ
アスペかお前ら

89 :デフォルトの名無しさん:2011/07/13(水) 22:47:15.18
普通は書き込む前に読み返す

90 :デフォルトの名無しさん:2011/07/13(水) 23:59:12.46
このなかにマジレスがいます

91 :デフォルトの名無しさん:2011/07/14(木) 00:08:30.74
あjl;gじゃ@おvふじこ。

92 :デフォルトの名無しさん:2011/07/14(木) 02:38:40.48
藻舞らここは2ちゃんなんだから五時脱字暗いそんな敏感になんなYO

93 :デフォルトの名無しさん:2011/07/14(木) 10:26:18.35
プログラム板などはわざと誤字などを入れる風習が見られない
真面目な話をしてる時は空気を読め

94 :デフォルトの名無しさん:2011/07/14(木) 10:31:38.32
いろんなスレで自論を押し付けるようなレスすんのヤメレ

95 :デフォルトの名無しさん:2011/07/14(木) 12:05:18.62
いろんなスレで君は注意されてるのかい?
迷惑な人なんですね。

96 :デフォルトの名無しさん:2011/07/14(木) 20:04:25.53
どうでもいいん蛇ね

97 :デフォルトの名無しさん:2011/07/14(木) 21:16:48.40
PBO使いたいんだけどWindowsだからOpenGL1.1までしかサポートしてなくて、
調べたらglew使えって書いてあったんで導入してみたんだけど

glewだとGL_PIXEL_UNPACK_BUFFER,がなくてGL_PIXEL_UNPACK_BUFFER_EXT
とかになってるんだけど、
GL_PIXEL_UNPACK_BUFFER=GL_PIXEL_UNPACK_BUFFER_EXTって考えておけ?

98 :デフォルトの名無しさん:2011/07/14(木) 22:31:07.26
正式なやつのプロトタイプ作ったり実験したりするのに手軽にOpenGLするLL言語って何がいい?

99 :デフォルトの名無しさん:2011/07/15(金) 00:38:46.99
ちょっとアニメネタの台詞書いただけでこんなに荒れると思わなかった>>86であった。

>>97
多分同じ定数じゃないかな?

>>98
むしろあなたがどのLLを使えるのかが大切なような。
ちなみにPerlはGLUT/OpenGL使うのが超簡単だった。
Ioも楽だったと思う。Gaucheとかもすぐ使えるんじゃね。

100 :デフォルトの名無しさん:2011/07/15(金) 06:57:27.89
言語的に相性よくても
拡張でもないのにあのapiだけ呼べない、あの定数がないとかあるからなー

101 :デフォルトの名無しさん:2011/07/15(金) 09:51:31.69
glslでstatic使えるんだけど
何の意味あんの?

102 :デフォルトの名無しさん:2011/07/15(金) 10:30:40.69
staticはキーワードとして予約はされてるだけで使えないことになってる
コンパイラによっては通すかもしんないけど意味ないんじゃね

103 :デフォルトの名無しさん:2011/07/16(土) 10:31:13.72
メタセコイアで作ったモデルをOpenGLで表示すると一部「抜けてない」ところができるんだけど、
完全に透明なピクセル(α=0)を書き込んだらZバッファーって更新される?
どうもメタセコイアだと更新されなくて、OpenGLだと更新されている気がする。
手前の透明ピクセルを書いてから、後ろのピクセルを書くとZで落とされる....



104 :デフォルトの名無しさん:2011/07/16(土) 10:37:18.48
アルファテストしなければα=0でも書き込む

105 :デフォルトの名無しさん:2011/07/16(土) 10:39:15.81
他人が書いた処理だとこう表示されるが、
自分で書いた処理だとこう表示される、どうして?って話か


106 :103:2011/07/16(土) 10:57:59.05
αテストで2/255以下を落としたつもりですが、やっぱり落ちません。
この画像のサンダルの足の甲の部分なのですが、
http://www.picamatic.com/show/2011/07/16/05/53/7697888_890x672.png
αテストで落ちていればZには描かれない=上の画像ではαテストが行われてない
という理解でOK?
設定は間違えてないはず。

107 :デフォルトの名無しさん:2011/07/16(土) 11:19:04.33
「ある程度は妥協する」って前スレで誰かが言ってた

108 :デフォルトの名無しさん:2011/07/16(土) 11:19:53.87
それよりこのモデルデータさんをうpだ!

109 :デフォルトの名無しさん:2011/07/16(土) 11:23:31.89
>>106
この欠け方は確かに気になる。直したくなる

110 :デフォルトの名無しさん:2011/07/16(土) 11:23:42.37
Zバッファの精度が足りてるかが気になる

111 :デフォルトの名無しさん:2011/07/16(土) 11:29:26.47
>>106
もうちょい閾値上げてみたら?

112 :デフォルトの名無しさん:2011/07/16(土) 11:53:18.05
左足の方はちゃんと抜けてるみたいだし、
矢印の先端から下(少しだけ左)の部分に数ピクセル描かれてる部分があるから、
αテストはちゃんとできてるんじゃないのかなぁ。
他の問題もあるのかも、って気もする。
別の角度からの画像とかは無いですか?


113 :デフォルトの名無しさん:2011/07/16(土) 12:57:24.99
>>112
このモデルは構成がかなり複雑で
右サンダル --> 両足 --> 左サンダル と描画してるから左足は常に正常に表示できる。

で、みなさんの意見を参考にいろいろ試すとαテスト抜けてねーーーー!!
っていうか絶対αテストしてねーーーー!!
(外部から見たらしたことになってるけど、レンダラー内部で無視しているようだ)

手前にα付きの板ポリを描画して、その奥に球を書いた図。
http://www.picamatic.com/show/2011/07/16/07/47/7698154_890x672.png

ちなみにレンダラーはHI社のもの。
雑な実装しやがって(- -メ

114 :デフォルトの名無しさん:2011/07/16(土) 13:01:37.85
>>108
PFYさんポニメガ娘。http://www.cg-site.net/products/127155
この場をお借りして感謝の意を表します。
こうやってデータを公開してくれているのはありがたい。
できればアニメーション付きで欲しいな(チラッ


115 :デフォルトの名無しさん:2011/07/16(土) 13:03:54.50
アニメーション付きとか適当なフォーマットで持たされても困りますし


116 :デフォルトの名無しさん:2011/07/16(土) 13:44:47.00
なんだ、自前のプログラムの話じゃなかったのね。
だったら「OpenGLで表示すると」じゃなくて「そのレンダラで表示すると」の話になっちゃうから
何とも言えないというか、どうしようもないというか。

117 :デフォルトの名無しさん:2011/07/16(土) 13:47:42.87
つまり、モデルもソフトも全て借り物の、ただのエンドユーザが、
OpenGLでプログラミングを行っているスレに、質問しにきた訳ですね。

もう無視でいんじゃね

118 :デフォルトの名無しさん:2011/07/16(土) 13:56:27.74
そこまで冷たくしようとは思わないけどw
なんで?と聞かれても、HIさんに聞いてくださいとしか言えないよね。

とりあえず・・・
>完全に透明なピクセル(α=0)を書き込んだらZバッファーって更新される?
これはYES。
>αテストで落ちていればZには描かれない=上の画像ではαテストが行われてない
>という理解でOK?
これもYES。ただ、112で指摘した数ピクセルの件が気になるっちゃ気になる。

まぁでも、113で結論は出たっぽいので、いいのかな。

119 :デフォルトの名無しさん:2011/07/16(土) 18:27:31.63
>>113
ああ、このモデルなら既に頂いてたわ…
http://www.dotup.org/uploda/www.dotup.org1795019.jpg

120 :デフォルトの名無しさん:2011/07/17(日) 19:41:56.61
>>113
これはひどいな なんていうソフト?

121 :デフォルトの名無しさん:2011/07/17(日) 21:24:01.48
HI社っていったらあれしかない

122 :デフォルトの名無しさん:2011/07/18(月) 00:43:39.50
gluLookAtのcenterとgluPerspectiveのnearの関係ってどうなってるの?
centerがnearとfarの中心になるように死体咳が縮尺されるってことですか?

123 :デフォルトの名無しさん:2011/07/18(月) 00:46:22.92
>>122
まったく関係のない機能を並べて
疑問を投げられても。

124 :デフォルトの名無しさん:2011/07/18(月) 00:51:57.13
>>122
gluLookAt の center は、eye から見てその方向を見るってだけで、(center - eye)ベクトルの長さに意味はないからな。

125 :デフォルトの名無しさん:2011/07/18(月) 00:56:46.96
ああ、そういうことか・・・
gluLookAtのupと同じように向きだけが重要なんですね
カメラのモデルを完全に間違って理解してた

126 :デフォルトの名無しさん:2011/07/18(月) 01:12:31.27
くるくるまわる立方体を表示したいと思っています。
下記の順で定期的にレンダリングしてるんですけど
ライトまでくるくる廻ってるように見えます。
自分がしたいことはライトは一方向からずっと照らしてて
立方体だけくるくる廻ってるのをカメラで狙って画面に表示したいんですけど
立方体が回転にあわせて明るくなったり暗くなったりしてしまいます。
これって手順を間違えてライトも回してしまってるんでしょうか。
どういう順にライトの設定、カメラの設定、立方体のレンダリングをすれば
意図した表示が出来るんでしょうか。


glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
setCamera();      // 固定位置
setLighting();     // 固定位置

glRotatef();
renderCube();

127 :デフォルトの名無しさん:2011/07/18(月) 01:26:58.40
glPushMatrix();
glRotatef();
renderCube();
glPopMatrix();

128 :デフォルトの名無しさん:2011/07/18(月) 01:35:35.66
pushは関係ないかと。

>>126 であってる。

立方体の法線が全部同じ方向向いてたりとかじゃね
glut使ってるならrenderCubeをglutSolidCubeとかにしてみたら

129 :デフォルトの名無しさん:2011/07/18(月) 01:38:31.34
>>127
こうしましたが変化なしでした 

void render()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();

  setLighting(); // 固定位置
  setCamera(); // 固定位置

  glPushMatrix();
  glRotatef(rot, 1.4, 1.4, 0.0);
  renderCube(0.6); // 一辺0.6の立方体表示
  glPopMatrix();

  rot += 12;
  if(rot == 360)rot = 0;
}


130 :デフォルトの名無しさん:2011/07/18(月) 02:08:12.57
>>128
これっぽいです!
glutは使ってないからわからないですけど
glBegin(GL_POLYGON);でやってるので多分法線設定されてない・・・?
試しに頂点配列でやってみます。

131 :デフォルトの名無しさん:2011/07/18(月) 02:30:41.91
>>130
glBegin使ってるならglNormal使わなきゃ法線設定しないよ

132 :デフォルトの名無しさん:2011/07/18(月) 02:57:51.16
>>131
わ、ほんとだ。 できましたー!

133 :デフォルトの名無しさん:2011/07/18(月) 03:39:33.45
OpenGL使うための環境設定で調べ回ってるが心が折れそうなので質問させてくれ
OSはWindowsVista32bit グラボはGeforce8600GTS

基本ヘッダだけ最新にしてwglGetProcAddressで使うAPIを持ってくるようなんだが、
OpenGL4.0で古いのが一掃されたみたいだがそのヘッダが見つからない。
gl3.h gl.h glext.h どれ(すべて?)使うべきなのか・・・。スタブライブラリいらないんだろうかとか
opengl.orgのスペックカード見て関数取り出していくような感じなんだろうか

最終的にWindowsでOpenGLES2.0互換の環境つくりたいんだ
ご免ね、DirectX畑でOpeGLの作法分からなくてご免ね

134 :デフォルトの名無しさん:2011/07/18(月) 04:17:01.05
っAndroidシミュレータ

135 :デフォルトの名無しさん:2011/07/18(月) 06:57:57.74
GLES2の互換環境ならANGLEはどうよ
http://code.google.com/p/angleproject/
自分でビルドする必要はあるが、あとはインポートライブラリをリンクするだけで使えるはず
そうでなければGLES2互換用の拡張とか使うことになるが8600で使えたかちょっとわからない

136 :133:2011/07/18(月) 07:30:03.94
>>134
Androidエミュレータかな? あれはOpenGLES2.0動かないんだ・・・
あとすごい重い

>>135
ありがとう。とりあえずそれを調べてみる
拡張はOpenGL Extension Viewerで見てみたら
3.3まで100% 4.0全滅 4.1がES2.0関連がOK?のようだ.具体的には
GL_ARB_ES2_compatibility OK
GL_ARB_get_program_binary OK
GL_ARB_separate_shader_objects OK
GL_ARB_viewport_array OK

Shading language version 4.10 NG
GL_ARB_shader_precision NG
GL_ARB_vertex_attrib_64bit NG

のようなのでいける?のかな
OpenGL ES2.0の関数ヘッダ、ポインタとwgl系の関数ヘッダ、ポインタのファイルを
作ればいいんかな(あとegl)

とりあえずやってみる。ありがとう

137 :デフォルトの名無しさん:2011/07/18(月) 11:03:22.01
>Androidエミュレータかな? あれはOpenGLES2.0動かないんだ・・・
eeeee
俺後でやろううと楽しみにしてたのに・・・・
動かないのか・・・・


138 :デフォルトの名無しさん:2011/07/18(月) 14:16:14.58
ANGLEはGLSLも含めて結構真面目にd3d9への変換やってるから使えると思うよ
5年以上前のintelのヘボgpuでも動くし

139 :デフォルトの名無しさん:2011/07/18(月) 23:36:06.06
普通にEGL使えばいいんじゃない?
WindowsでES2.0やるときはいつもそうしてる。
MacならiPhoneシュミレーターがオススメ。
Androidシュミレーターはゴミ。

140 :デフォルトの名無しさん:2011/07/19(火) 00:30:16.63
下の様にカメラと同じ座標に光源を置いているのに
画面の正面が明るくならず上から照らされる感じになるのは
どんな理由が考えられますか?

gluLookAt(0, 0, -5, 0, 0, 0, 0, 1, 0);

GLfloat lightPosition[4] = {0.0f, 0.0f, -5.0f, 0.0f};
glLightfv(GL_LIGHT0, GL_SPECULAR, lightPosition);


141 :デフォルトの名無しさん:2011/07/19(火) 00:44:11.71
>>140
書き間違えましたここ誤記です><
×glLightfv(GL_LIGHT0, GL_SPECULAR, lightPosition);
○glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); ←ちゃんとこうしてます!

142 :デフォルトの名無しさん:2011/07/19(火) 01:16:14.32
法線の設定してないんじゃない?

143 :デフォルトの名無しさん:2011/07/19(火) 01:16:50.35
>>140
俺の超能力だと、gluLookAtとglLightfvの間にglRotatefがあると思う。

あと関係ないと思うけど、点光源をカメラと同じ「位置」に置きたいなら、ライト位置のwは1.0だよ


144 :デフォルトの名無しさん:2011/07/19(火) 01:19:16.17
途中に行列演算が入っている、くらいしか思いつかない。

145 :デフォルトの名無しさん:2011/07/19(火) 01:48:32.59
カメラ設定とライト設定の間は何も入れてないから法線なのかなぁ。。
キューブ表示はこんな感じです。法線おかしいとこあります?
http://ideone.com/WyKQr

146 :デフォルトの名無しさん:2011/07/19(火) 02:01:52.08
glNormalはglVertexより前に...

147 :デフォルトの名無しさん:2011/07/19(火) 21:01:57.73
わ、わ、わ!!出来ました!!
ありがとうございますーー!!

148 :デフォルトの名無しさん:2011/07/20(水) 14:13:12.32
シャドーマップを使った影生成の解説ありませんか?
基礎から現在のゲーム業界で使われるテクニックまでトータルで解説してあるもの。
英語でもいいです。

149 :デフォルトの名無しさん:2011/07/21(木) 02:38:25.79
glui でspinnerを表示しその枠内でバックスペースを連打すると
string subscript out of range
と出るのですが 解決法ありますか?

150 :デフォルトの名無しさん:2011/07/21(木) 09:25:48.83
>>148
どこにでもあるだろ

151 :デフォルトの名無しさん:2011/07/21(木) 11:17:43.81
>>150
そういう回答が一番イラネ

152 :デフォルトの名無しさん:2011/07/21(木) 12:48:24.88
>>148
「Real-Time Shadows」という本が今まで進化してきた理論と実践の
総括的な内容となっていると期待している

出版社のサイトによると 2011/7/25 発売だそうだ
http://www.crcpress.com/product/isbn/9781568814384

153 :デフォルトの名無しさん:2011/07/21(木) 21:30:04.11
>>151
どこにでもあるだろ


154 :デフォルトの名無しさん:2011/07/22(金) 02:47:07.23
現在のゲーム業界という意味ではRealTimeRenderingもいいかもしれない。
影というより全体的だけど、コンシューマ機の仕組み載ってると言う意味で。第3版翻訳マダー?

>>139
EGLのWindows実装ってもうあったっけ?

155 :デフォルトの名無しさん:2011/07/22(金) 13:20:03.67
>>154
いくつかあるが製品に組み込んでokかどうかは知らん

156 :デフォルトの名無しさん:2011/07/24(日) 14:09:36.74
カメラ(glLookAt)管理はどんなクラス作ってる?

157 :デフォルトの名無しさん:2011/07/24(日) 14:57:10.41
俺はとりあえず2軸ベクトルと、ターゲットの位置と、カメラの現在地の
3組のfloatを持ってるだけのクラス。
これはワールド上に配置される何かって位置づけにしてるので、それだけ。
描画先デバイスのアスペクト比とかは、別の立ち位置のクラスに持たせてる。 そんな構成



158 :デフォルトの名無しさん:2011/07/24(日) 14:59:43.87
と言うか、glLookAt関数自体は使ってないや
特に不要というか

159 :デフォルトの名無しさん:2011/07/24(日) 15:09:05.19
アスペクト比も独自管理ってことはgluPerspectiveも使わないってことですか?
むずー

160 :デフォルトの名無しさん:2011/07/24(日) 17:51:23.74
俺はCameraだな。
基本的なパラメーターfov,aspect_ratio,near,far.
あとはT,R,S,M(それぞれ平行移動、回転、スケーリング、任意の4x4行列)

161 :デフォルトの名無しさん:2011/07/25(月) 17:59:31.08
視点座標を元にテクスチャー座標を自動生成するときの順番で質問があります。
こういう順番(回転、生成、ティーポット)で書くとテクスチャーがティーポットの回転にくっついて
一緒に回るのですが、これが納得いきません。

// 回転
glRotatef (angle, 0,1,0);

// テクスチャーの自動生成
glTexGenfv (GL_S, GL_EYE_PLANE, tex_gen_func);

// ティーポット
glutSolidTeapot (1);

glTexGenfv()を発行した段階でMODELVIEW行列はすでに回転済み(実際に取得して確かめた)にもかかわらず
なぜテクスチャーは視点に固定にならないのでしょうか?
床井先生のところhttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20041229
でも同様の解説があり動作自体は問題ありません。
ただOpenGLがこういう動作になるのが納得行きません。



162 :デフォルトの名無しさん:2011/07/25(月) 20:31:47.58
今まで愉快先生と誤読していた俺を何とかしてくれ

163 :デフォルトの名無しさん:2011/07/25(月) 21:01:14.81
tokoi……だと……!?

164 :デフォルトの名無しさん:2011/07/25(月) 21:23:49.22
ところがとっこい

165 :デフォルトの名無しさん:2011/07/25(月) 21:50:43.30
>>161
ちょっと質問の意味がわかってないんだが、GL_EYE_PLANEは関係ないんじゃないか?
視点座標での生成はGL_TEXTURE_GEN_MODEをGL_EYE_LINEARにするとできる。
あとテクスチャ座標の自動生成は描画時点で計算だからな
glTexGenを呼び出したタイミングは関係ない

166 :デフォルトの名無しさん:2011/07/25(月) 21:59:15.83
>>161
GL_EYE_PLANEのパラメータはそれを設定したとき(glTexGenを呼んだとき)のモデルビュー行列で変換されるよ
だからティーポットを描くときのモデルビュー行列で呼んだら、ティーポットのモデルビュー行列で変換されて、ティーポットの位置や向きと連動するよ
モデルビュー行列が恒等変換のときにglTexGenを呼べば、ティーポットの向きに関わらず一定になるよ

167 :デフォルトの名無しさん:2011/07/25(月) 23:27:04.78
うーーん、と? 赤本によると
生成される座標 = p1x + p2y + p3z + p4w
従ってGL_EYE_LINEARの時はビュー座標(x,y,z,w)をパラメーター(p1,p2,p3,p4)で変換してテクスチャー座標ですよね?
>>161の場合はティーポットが回転すると、例えば注ぎ口のビュー座標も変化するので、それに応じてテクスチャー座標も変化しますね。
ところが実際にはそうならず常に一定のテクスチャー座標が割り当てられます。
これはどう説明するのがいいのでしょうか?



168 :161:2011/07/25(月) 23:35:51.07
あ、わかりました。
>>167の式はGL_OBJECT_LINEARの時だけですね。2ページ後ろに
生成されるテクスチャ座標 = p1'x + p2'y + p3'z + p4'w
ただし(p1' p2' p3' p4') = (p1 p2 p3 p4) M^-1 (Mはモデルビュー行列)
というわけでパラメーターの方がモデルビュー行列に応じて変化するんですね。
こんなのわかるか〜 (ノ`Д´)ノ彡┻━┻

素直にビュー座標にパラメーター(一定)をかけて作ってくれよ...
シャドーマップを実装しようと思っているのですが先は長そうです。





169 :161:2011/07/25(月) 23:50:56.45
しかしこのOpenGLの仕様は謎ですね。
なんでわざわざGL_EYE_LINEARでビュー座標を使えと指定しているのにオブジェクト座標に戻すのか・・・
仕様策定の時に酩酊していたとしか思えない。
この仕様はおかしい。


170 :デフォルトの名無しさん:2011/07/26(火) 00:24:13.53
OpenGLのOpenは開けっ広げの意味
OpenGLのGはGirlのG
OpenGLのLはLadyのL

171 :デフォルトの名無しさん:2011/07/26(火) 00:55:54.07
もう少しだけ頑張ってみる。

172 :デフォルトの名無しさん:2011/07/26(火) 08:29:25.68
素直に頂点シェーダ使え

173 :デフォルトの名無しさん:2011/07/26(火) 09:35:07.29
素直になんかなれない

174 :デフォルトの名無しさん:2011/07/26(火) 09:42:35.67
ごめんね素直じゃなくって

175 :デフォルトの名無しさん:2011/07/26(火) 10:12:52.14
夢の中なら言える

176 :デフォルトの名無しさん:2011/07/26(火) 13:23:28.66
砂漠怪人 砂男

177 :デフォルトの名無しさん:2011/07/26(火) 21:13:25.71
逝ってみたいと思いませんか?

178 :デフォルトの名無しさん:2011/07/26(火) 21:15:25.79
ウッフフー♪

179 :デフォルトの名無しさん:2011/07/26(火) 21:17:52.06
バカやってないでOpenGLについて語れ

180 :デフォルトの名無しさん:2011/07/26(火) 21:22:04.79
OpenGLのゲーム向けフレームワークてかクラスライブラリありませんか

181 :デフォルトの名無しさん:2011/07/26(火) 21:32:06.07
ゲームエンジンとは違うの?

182 :デフォルトの名無しさん:2011/07/26(火) 22:27:28.18
>>180
それを作るのが醍醐味。 てか、OpenGLの、ゲーム向け、ってどういう事だよ


183 :デフォルトの名無しさん:2011/07/26(火) 22:41:41.06
物理エンジンがくっ付いてるタイプでサポートがしっかりしてるパブリックドメインのがいいです

184 :デフォルトの名無しさん:2011/07/26(火) 23:04:08.78
物理演算でなにやるつもり?

185 :デフォルトの名無しさん:2011/07/26(火) 23:19:09.37
なぐるんだろ?

186 :デフォルトの名無しさん:2011/07/26(火) 23:23:11.19
ダンボール箱でなぐるゲーム作ります
角が攻撃力高いです

187 :デフォルトの名無しさん:2011/07/26(火) 23:27:42.24
ダンボールは投げて遠くの敵を殺すことも出来ます
ダンボールが雨にぬれるとダンボールがふやけてプレイヤーは死にます
これはプレイヤーの命がダンボールにこめてあるためです。

188 :デフォルトの名無しさん:2011/07/27(水) 06:20:23.71
VC2010で、windows.hをインクルードしないで、
gl.hやglu.hの関数を使用する方法はありませんか?
なぜこんなことを言うのかというと他のライブラリとwindows.hが一部競合
してしまって・・・無理なら他の解決策を考えます。
すごく具体的にいうと、juce libraryです。

189 :デフォルトの名無しさん:2011/07/27(水) 09:36:26.13
windows.hじゃなくて、windows.hから呼ばれてるヘッダのうち一つを呼べば十分だったと
思うけど・・・どのヘッダだったかな。忘れちゃった。

あるいは、WINGDIAPIとAPIENTRYを自分で定義してやれば?

190 :188:2011/07/27(水) 15:44:42.35
>>189
ありがとうございます。
アドバイスにしたがって定義してみました
#ifdef _WIN32
#define WINGDIAPI __declspec(dllimport)
#define APIENTRY __stdcall
#define CALLBACK __stdcall
#endif

一応競合は解消され、コンパイル、動作ともに良好です。
が、とても無理やりなかんじです。
なにか他に方法を知っている方がいらっしゃいましたら、
教えていただければ幸いです。

191 :デフォルトの名無しさん:2011/07/27(水) 16:38:36.87
そんだけで解決できるならwtypes.hでいいんじゃない

192 :188:2011/07/27(水) 19:39:58.44
>>191
#include <WTypes.h>
でいけました。
ありがとうございました!。解決です。

193 :デフォルトの名無しさん:2011/07/27(水) 19:46:39.51
OpenGLのコンテキストだけ作ってくれてmainループを乗っ取らないglutみたいなウィンドウツールキット(?)ないですか?


194 :デフォルトの名無しさん:2011/07/27(水) 19:59:14.78
結局ゲーエルユーテーってどうなん

195 :デフォルトの名無しさん:2011/07/27(水) 19:59:22.67
GLFW がわりと近いんじゃないか

196 :193:2011/07/27(水) 20:23:53.05
>>195
非常に良さそうなのですが、ウィンドウを作らないでOpenGLコンテキストだけ作れませんか?
ウィンドウ自体はFLTKを使って作って、その中の一部のウィンドウだけ(ウィンドウツールキットとは独立して)OpenGLを使いたいです。


197 :デフォルトの名無しさん:2011/07/27(水) 20:36:39.76
そこまで行くとツールキットとかじゃなくてwglなりglx直接使ってコンテキスト作るしかない

198 :デフォルトの名無しさん:2011/07/27(水) 20:44:07.60
OpenGLコンテキスト作るだけで良いなら簡単だろ

それとも、OpenGLコンテキスト作る他に何か求めてるものでもあるのか

199 :デフォルトの名無しさん:2011/07/27(水) 20:50:26.72
タイトルバーとかないポップアップウィンドウをウィンドウに貼り付ければいいじゃん

200 :193:2011/07/27(水) 21:55:35.06
ウィンドウとOpenGLコンテキストは不可分(?)みたいなので、あきらめてFLTKのOpenGLを使います。
ありがとうございました。

201 :デフォルトの名無しさん:2011/07/27(水) 22:20:53.90
どうせ汎用性とか言ってもWindowsしかテストしねーなら
Windows専用でいいじゃない

202 :デフォルトの名無しさん:2011/07/27(水) 23:09:01.31
クリックした場所の3次元座標を取得するにはどうすればいいですか?

203 :デフォルトの名無しさん:2011/07/27(水) 23:53:03.07
レイ飛ばすとか

204 :デフォルトの名無しさん:2011/07/28(木) 00:21:21.50
>>190
そんなバカみたいな事しなくても、VC++使う時で、特に windows.h includeしたくない時は、
コンパイラのプリプロセッサ定義を _CONSOLE にして、リンカのサブシステム指定を WINDOWS にしてやればおk

そうすると、メインエントリが WinMain じゃなくて、main になるので、
windows.h も stdafx.h も必須じゃなくなる。

※要はコンソールプログラムとしてコンパイルはされるが、
 サブシステムとして コンソールベースでなく、ウィンドウGUI前提になるので、多分望みどおりになる
※ただし、勿論当然、win32は扱えなくなる。自前で改めて includeすれば当然使えるが。

また、これらの設定を IDE の GUI から行わずに、プリプロセッサマクロで指定したい場合は、
_WIN32 だったかが定義されてるか否かで、ifdef すればいい


205 :デフォルトの名無しさん:2011/07/28(木) 00:22:47.13
×定義されてるか否かで、ifdef すればいい
○定義されてるか否かで、分岐すればいい

ワケわからん事言ってしまった


206 :デフォルトの名無しさん:2011/07/28(木) 00:49:05.37
ifdefは業務でもやる手だろう
特別なことじゃない

それに分かりやすい

207 :デフォルトの名無しさん:2011/07/28(木) 00:54:52.66
>>206
いや ifdef を使う使わないじゃなくて、意味が重複したから訂正しただけ

208 :デフォルトの名無しさん:2011/07/28(木) 00:58:26.66
oh

209 :デフォルトの名無しさん:2011/07/28(木) 01:17:10.97
pun

210 :デフォルトの名無しさん:2011/07/28(木) 02:00:29.43


211 :デフォルトの名無しさん:2011/07/28(木) 08:06:22.17
>>202
gluUnProject

212 :デフォルトの名無しさん:2011/07/28(木) 13:45:16.28
点光源を指定するときに赤本によると「GL_POSITIONは(0,0,1,0)で、これは、Z軸の負の方向を向いている指向性光源を定義しています」と書かれていますが、
なぜ方向として(0,0,1)を指定するとZ軸正の方向を向かずに負の方向を向くのでしょうか?
単なる誤植?


213 :212:2011/07/28(木) 13:45:45.13
点光源ではなく指向性光源でした。

214 :デフォルトの名無しさん:2011/07/28(木) 14:42:29.13
ライトの向きと法線の内積をとるから
向きが(0, 0, 1)の場合は法線も(0, 0, 1)の時最大になる
外から見た場合の向きとは逆向きを指定しないといけないんだよな

215 :デフォルトの名無しさん:2011/07/28(木) 18:34:35.63
デプスバッファーからGL_DEPTH_COMPONENTを指定したデプステクスチャーにコピーして、
それをメインメモリにコピーしてPNG画像で出力仕様としています。
テクスチャーからメインメモリにコピーするときに、ドキュメントには
glGetTexImage (GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
というようにGL_DEPTH_COMPONENTを<<<指定してはいけない>>>と書かれていますが、
glGetTexImageを使わずにどうやってデプステクスチャーからメインメモリにコピーすればいいか教えてください。
ちなみに試しにやってみたら正しく取れているようです....
(デプスバッファーをちょくに読み取るのはできましたがデプステクスチャーから読む方法を探しています)

216 :デフォルトの名無しさん:2011/07/28(木) 19:51:24.71
>>214
なんという非直感的な仕様

217 :デフォルトの名無しさん:2011/07/28(木) 21:06:51.32
GL_POSITION が (0, 0, 1, 0) ということは w=0 だから xyz を w で割って (0, 0, +∞)
つまり +z 方向の無限遠点に光源があるんだと思うとスッキリする

218 :デフォルトの名無しさん:2011/07/28(木) 21:19:29.84
あれ光源の「方向」を指定してるんじゃなくて、あくまでGL_POSITION、つまり「位置」を指定してるんだよな...
アホか。

219 :デフォルトの名無しさん:2011/07/28(木) 21:26:48.17
ん?日本語としては意味は同じ気がするが・・・。

>+z 方向の無限遠点に光源がある
>「位置」を指定

220 :デフォルトの名無しさん:2011/07/28(木) 21:28:47.60
>>217
If the last value, w, is zero, the corresponding light source is a
directional one, and the (x, y, z) values describe its direction.

ハッキリ (x, y, z) は 「向き」 だと書かれてるからなぁ

w で割って (0, 0, +∞) の「位置」に点光源がある(平行光線)と考えるのは、
結果的にそう考えても(この件に関しては)不都合がないというだけの話でしょ

その考え方は、方程式の授業で移項という操作を教え込まれるみたいで、
やはりなんか違和感があるんだよなぁ

文句ばかり言っても全く進まないから、>>217 の考え方で乗り切るしかないけど

221 :デフォルトの名無しさん:2011/07/28(木) 21:30:38.82
俺にはまったく直感的だけど、お前にとってそうじゃないのはどうしようもないね。

222 :デフォルトの名無しさん:2011/07/28(木) 22:16:50.08
あれが直感的ってどれだけひねくれてんだお前

223 :デフォルトの名無しさん:2011/07/28(木) 22:54:30.93
ひねくれてると言うより、計算プロセスが自然に目に見えるからでは
元々数学が得意な人と、そうでない人の間には、理解し難い溝がある

224 :デフォルトの名無しさん:2011/07/28(木) 23:05:03.32
それを直感と呼ぶかどうかはさておき

225 :デフォルトの名無しさん:2011/07/28(木) 23:09:21.25
歴代のボンゴレボスが持つ超直感に死角はなかった

226 :デフォルトの名無しさん:2011/07/29(金) 02:47:07.00
>>215

GL_EXT_shadow

227 :デフォルトの名無しさん:2011/07/29(金) 08:54:38.68
>>215
ARB_depth_texture拡張じゃね
3.0以降は標準ぽい

228 :デフォルトの名無しさん:2011/07/29(金) 21:50:37.82
OpenGLの入門用のWebサイトや本って、なぜかGLUTというライブラリを使ってるみたいですが
直接OpenGLを使う方法をとっている本やWebサイトを教えてください

229 :デフォルトの名無しさん:2011/07/29(金) 22:13:34.54
>>228
英語じゃだめ?

230 :デフォルトの名無しさん:2011/07/29(金) 22:28:09.74
>>229
出来れば日本語のほうが嬉しいですが、英語でもかまいません

231 :デフォルトの名無しさん:2011/07/29(金) 22:59:11.37
>>230
それでは http://nehe.gamedev.net/

ページ右の Legacy Tutorials のレッスンを 01 から順に見るといい
特に 01 では Windows でレンダリング コンテキストを作るところから解説してる

232 :デフォルトの名無しさん:2011/07/29(金) 23:03:55.25
>>231
ありがとうございます

233 :デフォルトの名無しさん:2011/07/30(土) 16:33:36.78
>>231
Desktop Tutorialが準備中で
これまでのTutorialがレガシー扱いになってるな。
4系対応に期待

234 :デフォルトの名無しさん:2011/07/31(日) 23:00:25.69
拡張使えるはずなのに gl_InstanceIDARB でエラーが出るぞと思ったら、

#extension GL_ARB_draw_instanced : require

しなきゃいけなかったのか。コレで実験できる

235 :デフォルトの名無しさん:2011/08/01(月) 00:22:04.15
何言語よそれ

236 :デフォルトの名無しさん:2011/08/01(月) 00:59:12.28
GLS言語と言えば満足か?

237 :デフォルトの名無しさん:2011/08/01(月) 02:52:36.56
満足できないな

238 :デフォルトの名無しさん:2011/08/01(月) 03:22:17.76
そんなことではチームサティスファクションに入ることは出来ないな・・・
OK。巣に帰ろう

239 :190 :2011/08/01(月) 04:26:24.97
>>204
ありがとうございます。

ですが、問題はマクロやテンプレートの競合で、
WinMainはもともと使っていませんでした。
stdafx.hはプリコンパイル済みヘッダも今回は使っていません。
今はサブシステム指定を WINDOWSにしてエントリーポイントだけ、
mainCRTStartupに変更しています。
ただデバッグだとコンソールが便利なのでリリースだけですが

240 :デフォルトの名無しさん:2011/08/02(火) 11:04:04.62
OpenGLES1.X系と OpenGLES2.0の違いをバグ解消を含めてまとめられて
いるサイトをご存知ありませんでしょうか?

なかなか見つかりません。

αブレンディングがOpenGLES1.X系でうまくいっておりません。

241 :デフォルトの名無しさん:2011/08/02(火) 11:16:01.06
大方ソートしてないだけ。

242 :デフォルトの名無しさん:2011/08/02(火) 14:53:27.05
相変わらず半透明の交差はできないのね

243 :デフォルトの名無しさん:2011/08/02(火) 17:05:38.54
まあZバッファでは…

244 :デフォルトの名無しさん:2011/08/02(火) 21:56:34.02
1.x系と2.0で仕様バグの修正とかいうのは無いんじゃないのか
ドライバのバグ修正なら機種を限定しないと見つからんだろう

245 :デフォルトの名無しさん:2011/08/03(水) 00:34:42.46
アキュムレーションバッファってglutでないと使えないの(´・ω・`)?

246 :デフォルトの名無しさん:2011/08/03(水) 01:03:07.11
んなーわけない

247 :デフォルトの名無しさん:2011/08/03(水) 01:32:54.45
アキュムレータってアセンブラじゃないと使えないの(´・ω・`)?

248 :デフォルトの名無しさん:2011/08/03(水) 01:36:14.59
アキュムレータって機械語の計算用レジスタの事じゃないの?

249 :デフォルトの名無しさん:2011/08/03(水) 07:03:17.62
>>246
ですよね
ただglAccumでINVALID_OPERATIONが返ってくるんですよ
多分glutInitDisplayMode(GLUT_ACCUM)で状態変えてないからだと思うんですが
これって中では何をしてるんですか?

250 :デフォルトの名無しさん:2011/08/03(水) 12:37:59.38
>>249
WindowsならChoosePixelFormatで使う値の変更

251 :デフォルトの名無しさん:2011/08/03(水) 18:05:06.70
OpenGLのステート変えてるわけではないのか・・・
もうちょっと調べてみます

252 :デフォルトの名無しさん:2011/08/03(水) 22:34:01.02
むむ、万策付きました
glutを使うプログラムをテストするとアキュムレーションバッファが使える
glutを使わないプログラムだとアキュムレーションバッファが使えない
どうもバッファ自体が存在しないらしい
PIXELFORMATDESCRIPTORもいじってみたが効果無し
どなたかアキュムレーションバッファを増築?させる方法をご存知であればご教授願います

253 :デフォルトの名無しさん:2011/08/03(水) 22:36:27.20
     / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ  
    l:::::::::.                  |  
    |::::::::::   (●)     (●)   |  
   |:::::::::::::::::   \___/     |   
    ヽ:::::::::::::::::::.  \/     ノ 
     \           /    ♪
      /         ::::i \
     /  /       ::::|_/
     \/          ::|
        |        ::::|  キュム
        i     \ ::::/ キュム
        \     |::/
          |\_//
          \_/

254 :252:2011/08/03(水) 22:38:44.41
連投失礼
やりたいことは被写界深度からずれた時のボケとモーションブラーなのでアキュムレーションバッファを
使わずにこれらを実装する方法があればご指南願います

255 :デフォルトの名無しさん:2011/08/03(水) 22:39:25.41
>>252
多分、そこまで触ってる人いないかもしれない。
あるいはいたとしても、たまにしか来ないかもしれない。
勿論、俺はわからない

256 :デフォルトの名無しさん:2011/08/03(水) 22:51:46.37
>>254

以前、マルチサンプリングがうまくいかなかったときに、
wglChoosePixelFormatARB
で何とかした記憶がある

アキュムレーションバッファは、やったことないから知らない(´・ω・`)

257 :デフォルトの名無しさん:2011/08/03(水) 22:53:09.79
>>252
> PIXELFORMATDESCRIPTORもいじってみたが

どう弄ったんだよ書いてみろ。

258 :デフォルトの名無しさん:2011/08/03(水) 22:53:33.17
>>252
glutだと動くならglutのソース落としてきてglut_win.cのglutCreateWindowの中で
PixelFormatがらみでなにやってるかprintfでもしてみればいいのでは

259 :デフォルトの名無しさん:2011/08/03(水) 22:57:30.35
てきとーにぐぐってみたがやっぱりChoosePixelFormat,SetPixelFormatあたりで設定するみたいだな
この関数でエラー帰ってきてたりしてない?GLUTで使えるんならビデオカードが対応してないことは
ないだろうし。どっかにGLUTのソースなかったっけ。まぁまだ万策と言うには早いな

ボケとモーションブラーならステンシルバッファとかテクスチャに描画して拡大縮小なりフィルタなり
色々あった気がする。GAME WATCHのグラフィックス講座でも見てみたらいいんでないか

260 :252:2011/08/03(水) 23:58:33.54
多レス感謝です

とりあえずやってみたことは以下です
HDC hDC = wglGetCurrentDC();
PIXELFORMATDESCRIPTOR pfd = {
   .....
1, //accumulation buffer
   .....
};
int iPF = ChoosePixelFormat(hDC,&pfd);
SetPixelFormat(hDC,iPF,&pfd);

(pfdの他の値は
http://www.sm.rim.or.jp/~shishido/gltest.html)

これから>>258,>>259辺りを検証してみます

261 :デフォルトの名無しさん:2011/08/04(木) 00:01:42.30
>>260
はあ。1bit のアキュムレーションバッファか

262 :デフォルトの名無しさん:2011/08/04(木) 00:02:38.00
>>260
http://msdn.microsoft.com/en-us/library/dd368826%28v=vs.85%29.aspx
これ見て自分がやってることのおかしさ分からん?

263 :252:2011/08/04(木) 00:45:37.89
意味も理解せず書いておりました。お恥ずかしい
結局以下のようにしました
HDC hDC = wglGetCurrentDC();
PIXELFORMATDESCRIPTOR pfd;
int iPF = GetPixelFormat(hDC);
DescribePixelFormat(hDC, iPF,sizeof(PIXELFORMATDESCRIPTOR), &pfd);
pfd.cAccumRedBits = pfd.cAccumBlueBits = pfd.cAccumGreenBits = pfd.cAccumAlphaBits = pfd.cAlphaBits;
pfd.cAccumBits = pfd.cAccumAlphaBits + pfd.cAccumRedBits + pfd.cAccumGreenBits + pfd.cAccumBlueBits;
iPF = ChoosePixelFormat(hDC,&pfd);
SetPixelFormat(hDC,iPF,&pfd);
これでAccumのBitsは変わったのですが、相変わらずエラーがでます。
それと何故かAccum側はColor側と同じバイトを用意させてるはずが、2倍のビットが用意されます。
むう、何かまだ勘違いしていそうです

264 : 忍法帖【Lv=15,xxxPT】 :2011/08/04(木) 03:23:22.75
アキュムレーションバッファはDeprecatedになってるから
素直にFrame Buffer Objectを使うようにしたほうがいいんじゃないの?

265 :デフォルトの名無しさん:2011/08/04(木) 08:02:24.08
アキュムレーションバッファって凄い重かった様な気が
速度気にしないならいいけど

266 :252:2011/08/04(木) 11:51:52.16
Deprecatedなんですか・・・赤本に普通に記述してあったので使ってみようと思ったのですが
Frame Buffer Object (+Shader?)で同じことができそうですか?であればそっちを勉強しようと思います
重いのはちょっと嫌ですし

267 :デフォルトの名無しさん:2011/08/04(木) 11:56:58.75
はい

268 :デフォルトの名無しさん:2011/08/04(木) 13:12:30.02
これだけコメントもらってもアキュムレーションバッファ使えないならFBO+Shaderとか無理じゃね
glutで動くならそのままglut使っとけ

269 :デフォルトの名無しさん:2011/08/05(金) 00:00:18.79
ポリゴン描画は出来るけどアキュムレーションバッファだけ使えないの?
それともポリゴン描画すら出来ない?

270 : 忍法帖【Lv=16,xxxPT】 :2011/08/05(金) 04:17:48.78
新しいGPUで快適に動くようにしたいなら、FBO + Shaderでボケとモーションブラーを実装したほうがいいかと。
古くてFBO+Shaderが使えないけどアキュムレーションバッファが使えるGPUでも動かしたいなら
アキュムレーションバッファを使うのがいいかも。

271 :デフォルトの名無しさん:2011/08/05(金) 11:57:20.12
>>268
これだけアドバイスいただいてあっさりあきらめてしまったのは申し訳なかったです。
精進いたします。

>>269
ポリゴン描写は出来ています。

>>270
そういった情勢の話はありがたいです。
しばらくはFBO+Shaderの方向で勉強です。

272 :デフォルトの名無しさん:2011/08/05(金) 20:45:32.06
doom3がオプソ化されるとか

273 :デフォルトの名無しさん:2011/08/05(金) 21:47:30.09
>>271
FBO は便利。とにかく便利。マジおすすめ。
がんばって勉強するのだ。

274 :デフォルトの名無しさん:2011/08/06(土) 23:02:50.00






「バッファリングの半分は優しさで出来とる。」








275 :デフォルトの名無しさん:2011/08/07(日) 00:09:34.39
あとの半分はメモリです
以上です

276 :デフォルトの名無しさん:2011/08/08(月) 13:23:12.24
愛のメモリー

277 :デフォルトの名無しさん:2011/08/08(月) 18:43:11.33
オライリー初めてのOpenGLESのサンプルコードがダウンロード出来ないぞ
金返せごるあ!
っていうのは外出ですか

278 :デフォルトの名無しさん:2011/08/08(月) 22:14:20.91
OpenGL4.2来てる

279 :デフォルトの名無しさん:2011/08/09(火) 07:24:35.78
またバージョンアップか

280 :デフォルトの名無しさん:2011/08/09(火) 09:22:01.72
OpenGL4.0以降はかなり期待しているので、VerUpはうれしいです

まあ、2.1で手に余っていますが

281 : 忍法帖【Lv=18,xxxPT】 :2011/08/10(水) 02:57:54.89
nVidiaがもうOpenGL4.2対応のドライバをリリースしたらしいが
そもそもOpenGL4クラスのGPUはどのくらい普及しているのだろうか。
俺はまだOpenGL3クラスの3Dアクセラレータを使ってるぜ。

282 :デフォルトの名無しさん:2011/08/10(水) 07:54:44.27
>>281
ゲーマーに限って言えば、steamの統計が参考になるかも、意外と最近はDX11クラス使ってる人が多かった気が。

283 :デフォルトの名無しさん:2011/08/10(水) 10:51:55.81
ChoosePixelFormatのすごく時間がかかるんですけどどうしてでしょうか?
似たようなものをみつけたけど解決方法は不明……。
http://labo.xo-ox.net/article/83721955.html

284 :デフォルトの名無しさん:2011/08/10(水) 12:20:09.07
GLSLでgl_FragColorのアルファ値をいじってもポリゴンのないアルファ=0の部分が変化しないのはどう理解すればいいんだろう?

285 :デフォルトの名無しさん:2011/08/10(水) 14:50:06.63
>>284
フォグを間違って理解しているぞ

286 :デフォルトの名無しさん:2011/08/10(水) 17:51:56.66
FragColorってフォグの色なの?

287 :デフォルトの名無しさん:2011/08/10(水) 18:10:20.53
>>284
理解も何もキミの理解が間違ってる
シェーダーってのは、基本的にポリゴンのシェーディングをする物
ポリゴンが無い部分はフレームバッファ(テクスチャだとFBOとか)だよ

288 :デフォルトの名無しさん:2011/08/10(水) 18:20:48.90
>>287
フラグメントは文字通りポリゴンのフラグメントのシェーダーなわけか
そうするとバーテックスシェーダーって言い方が微妙な気がしてきたがまあいいや
ありがとう

289 :285:2011/08/11(木) 00:21:12.86
GL_FOG_COLOR と勘違いした orz

290 :デフォルトの名無しさん:2011/08/11(木) 01:15:53.71
素直でよろしい。

291 : 忍法帖【Lv=19,xxxPT】 :2011/08/11(木) 03:08:20.60
フラグメントシェーダは三角形をレンダリングするときに
三角形を構成する各フラグメントに対して実行される。

昔は頂点単位でライティングの計算をして、ポリゴン内部は頂点の色を補間していたので
バーテックスシェーダという言い方はそんなに変でもないと思う。

まぁ、ジオメトリシェーダではシェーディングの計算する事が無くてもシェーダと呼ばれるわけだから
今はもうシェーダ=シェーディングを計算する物という意味では使われなくなっているんじゃない。

292 :デフォルトの名無しさん:2011/08/12(金) 18:12:42.79
パラメータはテクスチャじゃなくてテクスチャユニットに付く属性?
glTexEnvで設定するのもユニットに付く?

293 :デフォルトの名無しさん:2011/08/12(金) 20:55:57.19
glTexParameterはテクスチャオブジェクトに付く属性
glTexEnvはテクスチャユニット

294 :デフォルトの名無しさん:2011/08/12(金) 21:05:29.64
>>293
ややこしいんだねえ
ありがとう

295 :デフォルトの名無しさん:2011/08/13(土) 06:04:39.59
ウチの環境(Ubuntu 10.04 LTS、CompizFusion、GeForce2 MX/MX400プロプラドライバ、freeglut3)でGLUT使うと
glFlush()やglFinish()では、画面が即時には更新されず
他のウィンドウを一旦上に置くなどして、ウィンドウの再描画を促してやるとやっと更新される

CompizFusion(3Dデスクトップ)を切ると更新されるようになるから、CompizFusionとかち合ってるのは間違いないんだが
なぜかglutSwapBuffers()を使うと即時更新されるのがよくわからん…内部的には何が違うんだろ?

296 :デフォルトの名無しさん:2011/08/13(土) 07:36:53.60
Compizとか使うと強制的にダブルバッファが有効になってるんだろう

297 :デフォルトの名無しさん:2011/08/13(土) 08:54:08.25
ああ、そういうことか
それを参考にfreeglutのソース読み直したら理解できた
freeglutのglutSwapBuffers()はGLXのglXSwapBuffers()を呼んでるのな

俺の勘違いは「OpenGL仕様にダブルバッファはない」のだから
・OpenGL自体は常に単一バッファであるため、glFlush()やglFinish()の動作は不変
・だからGLUTやCompizFusionはそれを自前か、または何らかのライブラリで実装している

という風に思い込んでいたんだ…ところが
実際は仕様でなくとも「実装」であるGLXがダブルバッファを持っているから、どちらもそれを利用していて
GLXのダブルバッファを有効にすると、同じくGLXで実装されているglFlush()、glFinish()の動作に影響してしまうワケね

ありがとう、すっきりした!!!

298 :デフォルトの名無しさん:2011/08/13(土) 19:57:55.19
>>295 >>297 は出来る子

横からなんだけど、詳細な情報、参考になりました。ありがとう


299 :デフォルトの名無しさん:2011/08/14(日) 02:36:59.14
>>297
GLXの都合でダブルバッファになっちゃうというのは合ってると思うんだけど、
「OpenGL仕様にダブルバッファはない」は違うと思う。
glDrawBuffer()/glReadBuffer()でfront/backバッファの指定ができるし、
OpenGLはダブルバッファを扱う(ついでに言えばステレオも)という解釈の方が
適切なんじゃないかな。

300 :デフォルトの名無しさん:2011/08/14(日) 03:22:52.78
>>299
赤本の割と後ろのほうの、バッファの項に書いてあった…<<glDrawBuffer()/glReadBuffer()
索引からダブルバッファで探すと、最初のほうの「アニメーション」の部分しか出てこないから見逃してた
こうやってOpenGLの仕様内でもダブルバッファは実現できるのね、サンクス

301 :デフォルトの名無しさん:2011/08/16(火) 12:19:50.59
glGetDoublev(GL_MODELVIEW_MATRIX, ptr);が失敗するようで
ptrの配列にデータが書き込まれてこないんですけどどんな原因がありますか?

302 :デフォルトの名無しさん:2011/08/16(火) 12:29:12.12
いろいろな原因があります


303 :デフォルトの名無しさん:2011/08/16(火) 12:40:03.38
>>.302
kwsk


304 :デフォルトの名無しさん:2011/08/16(火) 14:44:36.83
ptr に原因があるんじゃね?

305 :デフォルトの名無しさん:2011/08/16(火) 15:09:11.81
GLdouble[16]のptrです

306 :デフォルトの名無しさん:2011/08/16(火) 15:26:28.22
つglGetError()

307 :デフォルトの名無しさん:2011/08/16(火) 16:39:46.86
GL_INVALID_OPERATIONでした なんだろこれ・・・

308 :デフォルトの名無しさん:2011/08/16(火) 16:44:14.38
もしかしてWindowsに標準搭載されてるopengl32.dllでサポートされてない関数なんでしょうかglGet

309 :デフォルトの名無しさん:2011/08/16(火) 17:08:03.98
glGet自己解決しました。
glGetを使用するマウス入力処理が描画処理の外(wglMakeCurrent(セット)〜wglMakeCurrent(解除)の外)にあるため失敗していたようです。
描画以外で使うなら各種マトリクスは自分で覚えとけってことなんですね。

310 : 忍法帖【Lv=22,xxxPT】 :2011/08/16(火) 19:35:50.23
>>309
OpenGLの関数は基本的にOpenGLのコンテクストが設定されていないと使えないんじゃ。
よーく覚えてOK

311 :デフォルトの名無しさん:2011/08/16(火) 21:56:15.83
>>310
コンテキストの設定はライブラリ中の描画関数呼び出し前後でやっててプログラム側では見えてなかったので
盲点でした。。

312 :デフォルトの名無しさん:2011/08/17(水) 15:19:05.12
GLubyte * bitsの領域を確保してglDrawPixelsで表示したのですが、斜めの破線が入ってしまいます。
どうしたらいいでしょうか?
ttp://sakurasite.homeip.net/imgboard/img-box/img20110817151830.png

313 :デフォルトの名無しさん:2011/08/17(水) 16:00:07.36
領域と画像サイズが合ってないんじゃね。widthに1加えたらうまくいきそうだが...

314 :デフォルトの名無しさん:2011/08/17(水) 16:37:35.24
どこのサンプル見てるか丸分かりだなw
クライアントエリアを固定サイズにしてglViewPortをちゃんと設定すると直ると思う

315 :デフォルトの名無しさん:2011/08/17(水) 17:27:12.91
多分なおりました。glDrawPixelsのGL_RGBをGL_RGBAにして一色3バイトから4バイトにしてアルファに0を入れたらなぜか……
と思ったら、glDrawPixelsがGL_RGBでglutInitDisplayModeがGLU_RGBAだった。よくわからないな。

ttp://sakurasite.homeip.net/imgboard/img-box/img20110817171726.png

316 :デフォルトの名無しさん:2011/08/18(木) 01:14:13.49
>>309に関連して
ModelView行列はフレーム処理の最後にGLdouble配列に保存しておくとして
描画のフレームスキップ中にもModelView行列を参照したい場合どうすればいいでしょうか

描画処理を行わなくても入力処理は行うのでフレームスキップ中でもModelView行列を
更新しないと古い情報を使用してしまうため困っています

317 : 忍法帖【Lv=23,xxxPT】 :2011/08/18(木) 02:10:10.47
>>316
描画する時以外は常にOpenGLのコンテクストが設定されていない状態なの?
プログラム起動中はずっとコンテクストを設定しておくとか
OpenGLの関数が必要なときだけコンテクストを設定するとかは駄目なの?

俺はコンテクスト一個で済むときは初期化からずっとコンテクストは設定したままにしてるし
以前複数ウィンドウ&複数コンテクストなプログラムを作ったときも描画終了時にコンテクストをはずしたりはしなかったよ。

318 :デフォルトの名無しさん:2011/08/18(木) 04:19:41.40
>>317
Windowサイズが変わるとhdcも変わるので(?)毎回コンテキストを設定してるみたいです(ライブラリ側で)
なので描画時しかOpenGLの情報を取得できないです。
カメラ座標等からModelView行列が取れればいいんですが数学の知識に乏しく・・

319 :デフォルトの名無しさん:2011/08/18(木) 06:29:09.12
1. 別にコンテクストを作っておく
2. 行列計算を自分でする

どちらか選べ

320 :デフォルトの名無しさん:2011/08/18(木) 08:42:23.49
ライブラリってのもオリジナルのライブラリなの?
ならModelViewをGet/Setするっていう機能をライブラリに追加すればいい

321 :デフォルトの名無しさん:2011/08/18(木) 13:56:20.30
普通は2かな?

322 :デフォルトの名無しさん:2011/08/18(木) 14:07:35.64
なるほどModelView行列雪駄下駄を追加してもらえば行けそうですね

ついでにView位置からモデル座標を割り出すために深度バッファもフレーム処理の最後にコピーを保存してもらって
コンテキストがない時でも取得可能にして下さいって言ったら怒られますかね・・・さすがに・・
通常って深度バッファも保存しておくものですか?

323 :デフォルトの名無しさん:2011/08/18(木) 14:40:31.59
openGLを外部から直接触れないようにするライブラリなら、
ライブラリユーザーが何を言っても怒られるこたーないだろ。
怒りっぽい人が作ってるなら別だが。
で、ここはopenGLのスレだから、そのヘンテコライブラリの実装について聞かれても困るよ

324 :デフォルトの名無しさん:2011/08/18(木) 16:33:17.02
そこは積極的には聞いてないですが深度バッファは通常ローカルバッファに保存しておくものでしょうか

325 :デフォルトの名無しさん:2011/08/18(木) 16:39:17.58
好きにせぇや。
その辺りからはプログラマの思想次第。
答えはない。

326 :デフォルトの名無しさん:2011/08/18(木) 17:20:06.14
>>324
GPU-CPU間のやり取りは、時間がかかる。
普通は、わざわざCPU側に保存しない、と思う。

327 :デフォルトの名無しさん:2011/08/18(木) 18:34:59.76
>>324
保存するよ

328 :デフォルトの名無しさん:2011/08/18(木) 20:54:05.12
>>325-327
ありがとうございます50−50なんですね むむむ

329 :デフォルトの名無しさん:2011/08/18(木) 21:14:34.30
>>322
>View位置からモデル座標を割り出すために深度バッファも

って所が気になるが、まぁいいか

330 :デフォルトの名無しさん:2011/08/18(木) 21:43:00.70
>>326-327 の流れ見ても、>>325 が正解言ってるのがわかるなww

331 :デフォルトの名無しさん:2011/08/18(木) 22:27:58.69
>>329
Viewのマウス座標(x, y)+深度バッファ(z)からgluUnProjectでモデル座標を計算してるんですが
深度バッファを利用せずに低コストに代替できるような方法があれば是非教えて頂きたいです

332 :デフォルトの名無しさん:2011/08/18(木) 22:44:19.98
>低コストに

ここが鍵だな

333 :デフォルトの名無しさん:2011/08/19(金) 00:43:21.59
>>331
なら(x,y)の深度だけがわかればいいので、深度バッファ全体を貰うことはないのでは?
とりあえず326も言うようにGPU<->CPUのデータのやり取りは高コスト
まぁ遅くてもいいっていう場合もあるし、>>325が正解か

334 :デフォルトの名無しさん:2011/08/19(金) 01:00:46.67
>>333
どんなマシンを想定するかとかもあるしねー

335 :デフォルトの名無しさん:2011/08/19(金) 01:03:10.07
>>331
「入力処理→移動処理→描画処理(処理遅延状況でフレームスキップの可能性あり)」
の3ステージに処理を分離しているので描画処理の時点では
取得が必要な座標がどこなのか決まらないんです。
このため全ての座標について深度を保持しておく必要があるかなと思っています。

それともっと問題なのが描画処理がスキップされた場合保持しておいた深度バッファの情報も
古くなっているという・・

ジレンマだらけです

336 :デフォルトの名無しさん:2011/08/19(金) 21:04:38.16
こんにちは。
無数のポイントからそれぞれのポリゴンが交差しないような
メッシュを作成する方法はないでしょうか?
結果としてはボールのような形になると思います。

337 :デフォルトの名無しさん:2011/08/19(金) 21:21:12.28
頂点集合Sから、凸包を作れる最小の頂点集合Mを抽出
凸包を3各ポリゴンで作成
M≠SならばS-Mに対し、それを凸包のポリゴンからの距離が近いグループで分割
このポリゴンーグループの集合に対し凸包を作る、以下繰り返し

338 :デフォルトの名無しさん:2011/08/19(金) 21:30:00.46
宿題? スレチだよ

339 :デフォルトの名無しさん:2011/08/19(金) 22:29:02.65
バウンティングボックスを真空パックみたいにちぢめてけばできるよ

340 :デフォルトの名無しさん:2011/08/19(金) 22:57:12.37
>>399
曖昧
辺の繋ぎ方が提示されていない

あと、もし無数のポイント「全て」を使ってという制約があるなら、
>>399 が考えている方法ではたぶん無理

341 :デフォルトの名無しさん:2011/08/19(金) 23:58:09.90
だとさ、>>399
お前何言ったんだよww

342 :デフォルトの名無しさん:2011/08/20(土) 00:10:14.15
大丈夫
>>399 になったら俺が >>339 の内容をコピペしとく

343 :デフォルトの名無しさん:2011/08/20(土) 01:00:12.80
無数のポイント全てとかちょっとロマンティック

344 :デフォルトの名無しさん:2011/08/20(土) 09:46:06.86
無数の星屑(ポイント)すべて集めたら
あなたへ課題(レポート)提出するの
きっとそのとき凸包は張り裂けそうに鋭角
やさしくつつんであげる♪
以下繰り返し

345 :デフォルトの名無しさん:2011/08/20(土) 14:34:06.95
質問があります。
現在、顔の2次元データと、3次元データを持っております。
この3次元データに対し、2次元データをマッピングしたいのですが、
うまくいきません。

現在やっている処理は
glTexCoord2d -> glVertex3d で顔のポイントを対応づけています。
ただ、これだけでは、顔の3Dデータに対し2次元データがうまく貼り付けられず、
z軸(奥行き?)が飛び出してしまっているような状態になっております。

もしよろしければ、アドバイスをいただけないでしょうか。
よろしくお願いします。

346 :デフォルトの名無しさん:2011/08/20(土) 16:26:26.70
ただのテクスチャマッピングをしたいけど、うまくテクスチャが貼られません

こういうことでいいのか。抽象表現やめて素直に書けよ。

347 :デフォルトの名無しさん:2011/08/20(土) 16:53:56.32
というより、ポリゴンとテクスチャが有るけどテクスチャ座標が分かりません

かと。

348 :デフォルトの名無しさん:2011/08/20(土) 22:07:59.64
>glTexCoord2d -> glVertex3d で顔のポイントを対応づけています。
>ただ、これだけでは、顔の3Dデータに対し2次元データがうまく貼り付けられず、
これだけで貼り付けられるはずですが

349 :デフォルトの名無しさん:2011/08/20(土) 23:40:09.66
おおかた巻きつけで貼るテクスチャ画像をxyで貼ってるとかそんなんじゃね

350 :デフォルトの名無しさん:2011/08/21(日) 02:30:00.04
ソースなり結果画像なりださないとやり方は合ってるから問題なしとしかいえないよ

351 :336:2011/08/21(日) 02:58:45.80
凸包というのですね、知りませんでした。
ちなみにレポートでもなければ宿題でもありません。仕事です。
辞めた(逃げちゃったに近い)人の仕事を引き継いだのですが、
一部OpenGLで表現するところがあって自分は3Dは未経験なので
参考書片手にポリゴンを出すところまでは出来ました。
そんなところに>>336のような要求が来て困っています。
ぐぐってみたところ考え方みたいなところは見つけたのですが、
自分にはさっぱりでした。
凸包を生成してくれるような拡張ライブラリみたいのはないのでしょうか?

352 :デフォルトの名無しさん:2011/08/21(日) 04:45:01.80
http://en.wikipedia.org/wiki/Convex_hull_algorithms#Algorithms

あとスレチ
3Dアルゴリズム全般
http://hibari.2ch.net/test/read.cgi/tech/1164171086/

353 :デフォルトの名無しさん:2011/08/21(日) 05:48:05.06
>>351
Convex(凸包)とか、そういう固有の要件はもう OpenGL ライブラリとは無関係なので
>>352 の誘導先に行くか、さもなきゃ bullet でも使っとけ。そして bullet の質問は他所で
あと、考え方がさっぱりでした、な状態でそんな仕事するな。話来た時点で他の人間に回せよ

354 :デフォルトの名無しさん:2011/08/21(日) 11:23:40.36
>>352
外郭だけを表示するのが目的なら凸包でいいけど、
ひょっとして有限要素法なんかで使われる
メッシュ作ろうとしてるんじゃないよね?だとしたらこっち

- Netgen Mesh Generator, Gmsh メッシュ生成
- Finite elements for partial differential equation
- ALBERTA Adaptive finite element library



355 :デフォルトの名無しさん:2011/08/21(日) 13:06:23.84
仕事で怪しげなライセンスはどう

356 :336:2011/08/21(日) 22:16:04.62
凸包についていろいろありがとうございます。
スレチのようなので誘導先で質問してみます。
ちなみに会社が零細なので人がいないのと、OpenGLを知ってる人が辞めた人だけなのと、
たまたま案件が片づいて手隙になったのが自分だったということで引き継いだのが経緯ですか。
スレ汚してしまい失礼しました。

357 :デフォルトの名無しさん:2011/08/22(月) 15:27:46.23
ttp://openglsamples.sourceforge.net/files/glut_ply.cpp
のクラスを使って自前のplyファイルをOpenGLのウィンドウに描画したいと考えています。

ざっくりとした質問で申し訳ないのですが、
ファイルを読み込み、ウィンドウに表示するためには
このファイルにどのような改変を加えれば良いのでしょうか。

また、他にplyファイルを読み込む良い方法を知っている方がいらっしゃいましたら
教えていただけると非常にありがたいです。

358 :デフォルトの名無しさん:2011/08/22(月) 16:22:49.27
OpenGLのウィンドウの作り方もわからないってことかな

359 :デフォルトの名無しさん:2011/08/22(月) 17:33:36.81
>>357

>>1 にあるチュートリアルサイトおすすめ

360 :デフォルトの名無しさん:2011/08/22(月) 21:02:15.41
>>357
>また、他にplyファイルを読み込む良い方法を知っている方がいらっしゃいましたら
>教えていただけると非常にありがたいです。

いや普通に読むだけだと思うけど。勿論、OpenGLだとかDirectXとかじゃなく、普通にC/C++でファイル読むっていうだけの話



361 :デフォルトの名無しさん:2011/08/22(月) 21:35:22.74
>>357
まずC/C++の勉強から始めればいいと思う

362 :デフォルトの名無しさん:2011/08/23(火) 08:33:31.78
>>357
そのクラスにはplyファイルを読み込むコードも描画するコードも既に入ってる
つまりそのcppファイルを変更する必要はないので、
自前のウィンドウを作るとこだけなんとかしてあとはLoadとDrawの各メンバ関数を呼ぶだけ

363 :デフォルトの名無しさん:2011/08/23(火) 10:48:34.93
OpenGL自体が、そもそもどういう物かわかってないんじゃね
さらに元ソースが他人の丸コピーで、その plyファイルとやらだけ自作したか、別人のデータを変換した
ってだけなんじゃね。 だから大雑把で基本的な質問しか出来ないんじゃね
全部他人製のコピーって状態

364 :デフォルトの名無しさん:2011/08/23(火) 11:03:27.08
まぁ最初はみんなそんなもんだ


365 :デフォルトの名無しさん:2011/08/23(火) 12:15:52.38
そうでもない

366 :デフォルトの名無しさん:2011/08/23(火) 12:44:25.12
こともない

367 :デフォルトの名無しさん:2011/08/23(火) 13:11:13.26
>>363
元レスにあるurl見ろよ馬鹿w

368 :デフォルトの名無しさん:2011/08/23(火) 14:33:18.62
質問者はこういう奴でした

369 :デフォルトの名無しさん:2011/08/24(水) 06:57:44.39
>>368
恥ずかしい見落とししたからって、元レスの人と思いこもうとしないでくれ。

370 :デフォルトの名無しさん:2011/08/24(水) 21:17:47.78
>>369
>>368>>363 は別人だと気づいて欲しい

371 :デフォルトの名無しさん:2011/08/25(木) 00:47:57.00
PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
これって宣言に見えて定義なの?あるヘッダでこれをかいて他のところで読み込もうとすると複数回定義ではじかれる

372 :デフォルトの名無しさん:2011/08/25(木) 01:15:13.90
>>371
逆になぜ宣言に見えるのか知りたい。


373 :デフォルトの名無しさん:2011/08/25(木) 01:46:26.64
じゃあこれはもう関数宣言的にヘッダなんかにかいて置けないの?

374 :デフォルトの名無しさん:2011/08/25(木) 02:06:37.00
extern て付ければ宣言。
どこかに定義が1つだけ必要。

375 :デフォルトの名無しさん:2011/08/25(木) 04:57:11.66
C言語の入門をやりなおすレベルだろ・・・

376 :デフォルトの名無しさん:2011/08/25(木) 07:37:56.48
ありがとう
んでもどうやらソースファイルの切り分けは出来ないみたいね
ラッパーのようなものをしこしこ作るしかないのかしら

377 :デフォルトの名無しさん:2011/08/25(木) 07:53:50.23
>>370
別人でも同じ見落とししてないと出てこない返しじゃね
それとも、sourceforge?何それ?おいしいの?な人の率高いのかこのスレ

378 :デフォルトの名無しさん:2011/08/25(木) 08:05:05.51
時代はgithub or Google Code

379 :デフォルトの名無しさん:2011/08/25(木) 08:10:13.88
>>376
言語の勉強やり直すことをオススメするわ・・・

380 :デフォルトの名無しさん:2011/08/25(木) 23:17:40.75
研究室で使われるだけあってOpenGL界隈ってプログラミング未経験者多いのか

381 :デフォルトの名無しさん:2011/08/25(木) 23:21:17.61
プログラミングもできないのにどうやってOpenGL使うんだよ。
単にOpenGLを使っているアプリを使うだけの事か?

でも、授業でプログラミングを習ったけど大して身についていない学生が
別の授業や研究室でOpenGLを使ってプログラミングって事がありそうだな。

382 :デフォルトの名無しさん:2011/08/25(木) 23:42:00.71
うちの研究室はそれだ

383 :デフォルトの名無しさん:2011/08/26(金) 17:16:15.46
結局こうした
//sub.h
#include "GL.h"
void glXxxEXT(Hoge hoge);
void Startup();

//sub.cpp
#include "sub.h"
extern PFNGLXXXEXTPROC glXxxEXT0 = NULL;
void glXxxEXT(Hoge hoge){
glXxxEXT0(hoge);}
void Startup(){
glXxxEXT0 = (PFNGLXXXEXTPROC)wglGetProcAddress("glXxxEXT");}

//main.h
#include "sub.h"
//main.cpp
#include "main.h"
void main(void){
...
Startup();
glXxxEXT(hoge);
}

他になにかいいやり方あったら教えてくれ

384 :デフォルトの名無しさん:2011/08/26(金) 18:47:44.24
一つ無駄にラップしているような…。


385 : 忍法帖【Lv=30,xxxPT】 :2011/08/27(土) 02:59:42.02
>>383
きっと彼はglewやgleeを超越した、まったく新しいパラダイムに基づいたライブラリを構築しようとしているのだろう。

特にこの部分が今だかつて誰も使った事の無い手法ではないだろうか。
> extern PFNGLXXXEXTPROC glXxxEXT0 = NULL;
> void glXxxEXT(Hoge hoge){
> glXxxEXT0(hoge);}


386 :デフォルトの名無しさん:2011/08/27(土) 12:59:23.00
どうでもいいけど
hoge(a,b){

}
みたいなくくり方いやだわあ。

hoge()
{

}
のほうが見やすいだろ。

387 :デフォルトの名無しさん:2011/08/27(土) 13:02:29.50
そんなの人それぞれだろ

388 :デフォルトの名無しさん:2011/08/27(土) 14:02:26.44
>>386
同意
古き良き時代のK&Rはどこへいってしまったのか
JavaとかC++のクラス定義とかからそんな感じのが蔓延しだした

389 :デフォルトの名無しさん:2011/08/27(土) 15:45:15.65
>>386
Cより先にJava覚えた俺には上のが見やすい

390 :デフォルトの名無しさん:2011/08/27(土) 16:17:36.64
2chスレに書くときは行数を詰めたいしね

391 :デフォルトの名無しさん:2011/08/27(土) 17:49:58.64
>古き良き時代
画面が狭かったから今以上に行節約されてクソ読みにくかった

392 :デフォルトの名無しさん:2011/08/27(土) 21:59:16.64
>>386
VisualStudio使ってると下に慣れるよな
Javaな人は上だよな


393 :デフォルトの名無しさん:2011/08/28(日) 02:46:46.16
>>386
if文とかクラスは上だけど、関数は下だわ・・・

394 :デフォルトの名無しさん:2011/08/28(日) 07:59:18.97
関数の方は下げないと動作が未定義だったような

395 :デフォルトの名無しさん:2011/08/28(日) 08:11:49.67
ギャグかそれは

396 :デフォルトの名無しさん:2011/08/28(日) 08:21:54.29
行を節約するなら閉じ括弧もLispっぽく纏めたらいいんじゃないだろうか

397 :デフォルトの名無しさん:2011/08/28(日) 12:03:32.81
そっかー俺の関数全部未定義だったかーそっかー

398 :デフォルトの名無しさん:2011/08/28(日) 12:21:43.92
コメントの改行の数も奇数だと動作が未定義だよな
あとプリプロセッサマクロは実行時評価だったよな

死ね

399 :デフォルトの名無しさん:2011/08/28(日) 12:55:22.28
何そのクソ仕様

400 :デフォルトの名無しさん:2011/09/02(金) 09:06:44.31
>>386
同意

401 :デフォルトの名無しさん:2011/09/03(土) 19:30:23.14
これって計算で出てきたデータのプロットに適してる?
cgplotみたいな使い方できる?

402 :デフォルトの名無しさん:2011/09/03(土) 22:12:16.09
点を打つのと直線を引くのと三角形を描くことしかできません
そういう用途にはデータプロット用のライブラリを使うべきで、
OpenGLを直接使うのはおすすめしない

403 :デフォルトの名無しさん:2011/09/05(月) 01:10:57.39
OpenGLをグラフィクス処理の基盤として使い、
データプロット用のライブラリそのものを自分で書きます、なら使ってもいい

そういうレイヤ、あるいは作図で言えば >>402 も言うような簡易な物です

404 :デフォルトの名無しさん:2011/09/08(木) 12:25:29.84
今からOpenGLの勉強をするとしたら4.0を学べばいいですか?
将来的にはOpenGLを使ってFF14みたいなグラフィック・エンジンを作りたいです。


405 :デフォルトの名無しさん:2011/09/08(木) 12:36:25.94
そんな事を言ってるヒマがあったら手と頭を動かせ

406 :デフォルトの名無しさん:2011/09/08(木) 13:56:56.48
>>404 じゃあおれはクラウドの髪の毛担当するな!
ティファのおっぱい担当を早急に決めてくれ

407 :デフォルトの名無しさん:2011/09/08(木) 19:33:20.87
>FF14みたいなグラフィック・エンジンを作りたいです。
こんなこといって始めるやつは1ヶ月以内に投げ出す法則

408 :デフォルトの名無しさん:2011/09/08(木) 22:16:16.58
>FF14みたいなグラフィック・エンジン

つまり見た目の割りにクソ遅い失敗作を作りたいって事?

409 :デフォルトの名無しさん:2011/09/08(木) 22:30:32.27
>>404
4.0でもいいけど基本は3.0ベースなのでまず3.0あたりから学べばいい
OpenGL ES 2.0でもいいよ
とにかくシェーダと頂点バッファが無いと何も描けないところから始めよう

410 :デフォルトの名無しさん:2011/09/08(木) 23:58:47.22
Windowsだと1.0だから1.0から学んだほうが

411 :デフォルトの名無しさん:2011/09/09(金) 01:44:19.73
>>410
出直せ

412 :404:2011/09/09(金) 10:03:53.56
いや本気なのですが... 出たばかりのこの本どうですか?
Opengl 4.0 Shading Language Cookbook [ペーパーバック]
David Wolff (著)

413 :デフォルトの名無しさん:2011/09/09(金) 10:11:07.06
役に立つ本だよ。でもお前には現状不要だろ

414 :デフォルトの名無しさん:2011/09/09(金) 10:13:02.17
>>412
入門の仕方を聞きにくるレベルで洋書買っても積ん読になるだけ
近道なんかないぞ

415 :デフォルトの名無しさん:2011/09/09(金) 10:25:35.05
>>412
ペーパーブックを漁れるなら本家HPを熟読する所から始めたら?
>>414が言うように近道なんて無いよ。

416 :デフォルトの名無しさん:2011/09/09(金) 10:42:46.67
最初から本気のやつは2chのスレなんかで聞く前に自分で調べる

417 :404:2011/09/09(金) 11:36:30.15
なら日本語で読める4.0の入門書教えろよ。無いだろ馬鹿。
結局洋書を読むしか無いんだからいつ読んでも同じ

418 :デフォルトの名無しさん:2011/09/09(金) 11:38:41.81
お前 Shading Language が何かもわかってないだろ。

419 :デフォルトの名無しさん:2011/09/09(金) 11:59:37.12
入門書欲しくて逆ギレですかw

420 :デフォルトの名無しさん:2011/09/09(金) 12:27:49.83
モッピー知ってるよ、>>417が真性の馬鹿だって

421 :404 ◆hEpdoZ.tHU :2011/09/09(金) 14:13:54.36
>>417はニセモノです。
トリップ付けたので、今後ともご指導宜しくお願いします

422 :デフォルトの名無しさん:2011/09/09(金) 14:31:10.77
>>421
どうせおめーもだろw

423 :デフォルトの名無しさん:2011/09/09(金) 14:31:14.80
つか、トリップ付けても君の今のスキルに入門書を読んだ程度じゃ
ご指導ってレベルに至らないんだよ。

424 :404 ◆hEpdoZ.tHU :2011/09/09(金) 14:43:25.93
今のスキルを推し量れるなんて凄いですね。

425 :デフォルトの名無しさん:2011/09/09(金) 14:55:53.93
そりゃ>>404,412みればそこそこは・・

426 :デフォルトの名無しさん:2011/09/09(金) 15:04:50.41
「入門書の選定を他人に教えてもらう」程度のスキルだろ?

427 :404:2011/09/09(金) 15:53:50.76
うるせーよ。誰でも最初はそんなモンだろ。教えろよ

428 :デフォルトの名無しさん:2011/09/09(金) 20:01:27.73
ツクールでもさわってろ(´・ω・`)

429 :デフォルトの名無しさん:2011/09/09(金) 20:19:44.35
筒状のポリゴンにテクスチャーを巻きつけるように貼り付ける場合、
巻きつけテクスチャーの端と端で頂点を重ねるように準備するしかないですか?

430 :デフォルトの名無しさん:2011/09/09(金) 20:38:24.72
テクスチャーユニットを複数使えば出来なくもない気がしてきた
0.0-0.1-0.2-・・・-0.9-0.0
で0.9-0.0間だけ別のテクスチャーユニットにする
テクスチャー座標を指定しない頂点ってどうなるんだっけな?

431 :デフォルトの名無しさん:2011/09/09(金) 23:36:09.69
OpenlGL 4.0 Shading Language Cookbookはタイトル通り
こんなシェーダとかどうよっていう本なので入門書ではまったくない
4.x系の入門書っぽいものは無さそうだが
OpenGL Programming Guideの8th Editionなんての出てたのね
だが入門書としてはちょっと向いてないかもしれない

432 :デフォルトの名無しさん:2011/09/10(土) 00:18:16.19
スキルなさそうなのに命令口調で口だけ立派なのが混ざってるよね

433 :デフォルトの名無しさん:2011/09/10(土) 01:10:27.83
だな

434 :デフォルトの名無しさん:2011/09/10(土) 08:49:30.55
>>432
自己紹介乙

435 :デフォルトの名無しさん:2011/09/10(土) 12:30:24.65
教えてくれないからって拗ねるなよ

436 :デフォルトの名無しさん:2011/09/10(土) 12:46:58.32
>>424

>>425>>431 の話を良く見てくれ
それは今から OpenGL4.0を (という大くくりで) 勉強する人向けの本じゃ全然無い
タイトルに思いっきり書かれてるのに OpenGL4.0 っていう字面だけで持ってきて、どうですか?とか聞いてるぐらいだから
それが誰にでもわかる、推し量れるヒント、です。 それすらわかんなそうなので、横から補足


437 :デフォルトの名無しさん:2011/09/10(土) 14:59:21.18
しつこい

438 :デフォルトの名無しさん:2011/09/10(土) 16:26:37.64
乙ってまだ使うヤツいたんだ

439 :デフォルトの名無しさん:2011/09/10(土) 16:37:35.71
そこなの?

440 :デフォルトの名無しさん:2011/09/10(土) 19:08:12.25
フェアレディ乙とかまだ使うぞ

441 :デフォルトの名無しさん:2011/09/10(土) 19:27:21.19
とりあえず何かに噛み付かないと死んじゃう病気なんだろ、もうほっとけよw

442 :デフォルトの名無しさん:2011/09/10(土) 19:47:01.25
w使うヤツまだいたんだ

443 :デフォルトの名無しさん:2011/09/10(土) 22:20:52.19
>>432=438=442=真っ赤w

444 :デフォルトの名無しさん:2011/09/10(土) 22:34:04.55
釣れたな。
>>443おまえ宿題スレと麻雀スレで暴れてるキチガイだろ
>>434の書き込みで気付いて関心引くようなレス書いたら即釣れるとかどうなの?

445 :デフォルトの名無しさん:2011/09/11(日) 00:13:14.96
頭悪いレスつけまくって挙句に釣れたとか恥ずかしいからさっさと消えろよ、
小学生以下の知能しか無いならネットなんか使うなクソが

446 :デフォルトの名無しさん:2011/09/11(日) 00:44:27.26
>>445俺は小学生だからいいけどそんだけ怒りくるってお前大人の癖に脳が小学生以下だろwwwwwwwみてて恥ずかしいwwwwwwwww

447 :デフォルトの名無しさん:2011/09/11(日) 01:06:40.43
>>445
落ち着けもうさわんな

448 :デフォルトの名無しさん:2011/09/11(日) 01:18:11.02
前はこんなに馬鹿みたいな流れなかったのに、
あれか、ニコニコとかMMDとかから人流れ込んできたせいで
こんな事になってんのか


449 :デフォルトの名無しさん:2011/09/11(日) 03:24:02.46
変なおやじギャグの一言レスとかあったり。
その辺はどこから来たんだろうか。

450 :デフォルトの名無しさん:2011/09/11(日) 05:54:26.75
まあまあ
ここはひとつ>>429-430を考えて元の流れに戻そうじゃないか

451 :デフォルトの名無しさん:2011/09/11(日) 10:34:51.52
コンパイルしてリンクしてin/outを接続して...
たかだかシェーダーを使うだけなのに手間が多すぎる

452 :デフォルトの名無しさん:2011/09/11(日) 10:52:14.70
手間多いけど一度関数作って隠蔽してしまえばそれで完了だろ。

453 :デフォルトの名無しさん:2011/09/11(日) 16:59:08.57
そうやってみんな各自の俺ライブラリが作られて取り止めなくなっていくんだよね

454 :デフォルトの名無しさん:2011/09/11(日) 17:19:37.16
それで問題ない


455 :デフォルトの名無しさん:2011/09/11(日) 18:05:33.47
日本のPG能力の底上げが叶わない理由が分かった気がする

456 :デフォルトの名無しさん:2011/09/11(日) 18:15:29.66
こんなカススレ覗いて「分かった」とかww

457 :デフォルトの名無しさん:2011/09/11(日) 18:25:12.38
底上げじゃなく天井上げするために努力しろよ

458 :デフォルトの名無しさん:2011/09/11(日) 23:36:55.92
じゃあおまえがソース公開しろよ

459 :デフォルトの名無しさん:2011/09/12(月) 00:03:41.77
>>456

460 :デフォルトの名無しさん:2011/09/12(月) 09:06:57.13
何?悔しかったのか?

461 :デフォルトの名無しさん:2011/09/12(月) 11:56:53.62
うん
そうだね
プロテインだね

462 :デフォルトの名無しさん:2011/09/12(月) 16:13:00.89
日本人でOpenGLというかGLSLバリバリに使った描画エンジンのソースって存在してる?
ないような気がするんだけど。


463 :デフォルトの名無しさん:2011/09/12(月) 16:21:25.36
バリバリ存在しまくりです

464 :デフォルトの名無しさん:2011/09/12(月) 20:05:02.51
日本人で描画エンジンのソース?

そもそもソースは人じゃないのでは?

465 :デフォルトの名無しさん:2011/09/12(月) 20:59:47.84
>>464
こういう方とは一緒に仕事したくありませんわ
めんどくさそうです

466 :デフォルトの名無しさん:2011/09/12(月) 22:04:55.65
俺は>>465とは仕事どころか、同じ部屋に居たくはないな

467 :デフォルトの名無しさん:2011/09/12(月) 23:18:41.76
>>464
こういう誰でも(本人でも)理解していることをわざわざ皮肉たっぷりに書かずにはいられない精神が病んでる人とはねぇ

468 :デフォルトの名無しさん:2011/09/13(火) 00:08:20.92
GLSL内の自作関数呼び出しっててオーバーヘッド大きいの?

469 :デフォルトの名無しさん:2011/09/13(火) 00:26:45.60
>>465-467って全部同じ人だったんだけど・・・

470 :デフォルトの名無しさん:2011/09/13(火) 01:06:08.60
>>467
間違えた本人乙

471 : 忍法帖【Lv=36,xxxPT】 :2011/09/13(火) 01:10:20.59
>>468
基本的にシェーダ内の関数はすべてinline展開されてたはず。
気になるなら最近のOpenGLの拡張機能であるバイナリ出力を見るといいかも。
でもOpenGL4.0で関数の呼び出し先を変更できる機能が付いたようで
これはinline展開されないのかな?

472 :デフォルトの名無しさん:2011/09/13(火) 08:29:22.43
OpenGL 4.0のサブルーチン(関数のことではなくシェーダーの一部(関数)を実行時に動的に入れ替える仕組み)が謎だな。
Uniform変数を見てif文で切り替えるのに比べて比較と関数呼び出しのコストがかからないらしいが...
絶対使わない。

473 :デフォルトの名無しさん:2011/09/13(火) 22:45:01.23
>>472
謎も何もそういう機能がGPUにあるかドライバが何か頑張ってるんじゃないか?
本当に速いかどうかは謎だが試してみないことには絶対使わないは言いすぎ

474 :デフォルトの名無しさん:2011/09/15(木) 03:21:35.74
OpenGLのテクスチャ周りの規則が厳しすぎ。
テクスチャをバインドしたらフィルタ等のフラグが全部クリアされるとかやめてくれ。
ちょっと順序を間違っただけでドツボにはまる仕掛けが多すぎるぞ。

475 :デフォルトの名無しさん:2011/09/15(木) 05:18:03.58
BindTextureで設定がクリアされるんじゃなくて
TexParameterで設定できる物はテクスチャオブジェクト毎に保持されてるんだ
ぱっと見てどのオブジェクトに影響与えてるのかわからないのは確かにひどいけどな
EXT_direct_state_accessが標準になれば楽なのに

476 :デフォルトの名無しさん:2011/09/15(木) 08:18:30.04
>>472
複数のレンダリングパスを持つマテリアルをシェーダー1つで
レンダリングパス毎に異なる部分をサブルーチン化して実装してるのなら見たことがある。
みんなマルチパスが必要なシェーダーってどう実装してる?


477 :デフォルトの名無しさん:2011/09/15(木) 11:52:33.32
>>475
なるほど
glGenTextureで作ったハンドルごとに設定されてるのか
それなら納得^^

478 :デフォルトの名無しさん:2011/09/16(金) 01:48:26.20
TexParameterはテクスチャ一つずつの設定
TexEnvはテクスチャステージごとの設定
パイプラインをきちんと理解できてれば、覚えやすいと思うけど。

479 :デフォルトの名無しさん:2011/09/16(金) 10:22:45.17
Quakeのマップエディッタはブラシって概念使ってたのでそれで理解できた
あまり頻繁にブラシを切替えると効率良くないって脅されたけど
今はテクスチャバッファ上に乗っていれば切替えコストなんて無視できるのかな?

480 :デフォルトの名無しさん:2011/09/16(金) 22:12:15.82
質問失礼します。
テクスチャーへ描画したいのですが、レンダーターゲットの変更が上手くいきません。

glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, uinFboID );
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //バックバッファをクリアする色の指定
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //バックバッファクリア

レンダーターゲットへの変更部分なのですが、glClearでエラーが出ているようです。
glGetError()で調べた所、エラーコード 1286 が返ってきました。
(このコード直前はエラーコード 0 で問題ありませんでした)

どうやったら解消できますでしょうか?
分かる方、よろしくお願いします。

481 :デフォルトの名無しさん:2011/09/16(金) 22:18:54.02
FBOのカラーバッファとデプスバッファは設定した?

482 :480:2011/09/16(金) 23:00:44.27
>>481
返答ありがとうございます。
デプスバッファサイズとカラーバッファサイズが違ってました><
スレ汚しすいませんでした。

483 :デフォルトの名無しさん:2011/09/17(土) 03:17:08.33
C言語、OpenGLの初心者ですが、質問です。

glutpostredisplayを使って、ディスプレイのコールバックを呼び出して再描画するように、
resize関数内のgluperspectiveを更新を促すようなものはありますか?

変な説明になってますが、分かる方教えて下さい。

484 :デフォルトの名無しさん:2011/09/17(土) 04:30:11.40
gluPerspectiveをresizeの中でやるのをやめて、displayのコールバックの先頭でやるようにすればいいんじゃね

485 :デフォルトの名無しさん:2011/09/17(土) 08:24:37.58
gluPerspective()はGL_PROJECTION行列を変更するだけなのでもう1度呼べばOK.

486 :デフォルトの名無しさん:2011/09/17(土) 10:02:03.83
質問です。

テクスチャーの特定の"色"を透明にする事は可能ですか?

α値を用いてアルファブレンドやアルファテストで抜く方法は分かるのですが、
α値が1.0で特定の色だけ抜く方法が分かりません。

アルファテストならぬカラーテストみたいなのがあったら良いのですが。。。

お願いします。

487 :デフォルトの名無しさん:2011/09/17(土) 10:14:48.56
シェーダー使えばできる。
使わないならできない。

488 :デフォルトの名無しさん:2011/09/17(土) 10:36:10.15
>>486
Color Key Transparency
ttp://www.codesampler.com/oglsrc/oglsrc_4.htm

489 :483:2011/09/17(土) 11:11:10.22
>>484
gluPerspective(45.0, (double)width / (double)height, 0.1, 100.0);
という感じで引数を用いているので、displayに持って行くとエラーになっちゃいます…

>>485
もう一度呼ぶとはどういうことですか?
無知ですみません。

490 :デフォルトの名無しさん:2011/09/17(土) 11:19:02.49
widthとheightぐらい保存しとけや。
っていうかdisplay()関数の中で毎回gluPerspective()を呼ぶ必要はない。
必要があることもあるけど、お前には多分必要ない。
お前はする必要のないことを心配している。


491 :486:2011/09/17(土) 14:14:40.97
>>487 >>488
大人しくシェーダー使う事にします。
ありがとうございます。


492 :デフォルトの名無しさん:2011/09/17(土) 15:13:48.75
初対面の人間に「お前」っていうのは人としてどうだろう

493 :デフォルトの名無しさん:2011/09/17(土) 15:17:09.42
2ch の中で「お前」と言われても別に何も感じない

たとえば仕事で初めて出会った人に「お前」と言われると、
態度悪いなと感じる

494 :デフォルトの名無しさん:2011/09/17(土) 15:17:24.31
2ちゃんねるでそれを言うのかお前は

495 :デフォルトの名無しさん:2011/09/17(土) 15:38:43.20
お前お前言ってると 492 が憤死するぞ

496 :デフォルトの名無しさん:2011/09/17(土) 15:44:43.34
あなたには必要が全く無さそうなことですが、無駄な心配をされていませんか?

慇懃無礼な方が効果の出る場面もあるな
ていうかスレチだぞテメーら

497 :デフォルトの名無しさん:2011/09/17(土) 15:52:47.54
おいお前ら元気そうでなによりです

498 :483:2011/09/17(土) 16:27:51.35
>>490
で、どうすれば解決できますか?

499 :デフォルトの名無しさん:2011/09/17(土) 16:38:28.04
>>498
resize呼ばれたときにwidth/heightを覚えといてgluPerspectiveを呼びたいときにはそれつかえばいいいだろ


500 :483:2011/09/17(土) 16:52:04.73
>>499
width/heightを覚えるってどうやるんですか?
あと、gluPerspectiveはdisplay内に入れていいんですか?

本当にバカらしい質問かもしれませんが、お願いします。

501 :デフォルトの名無しさん:2011/09/17(土) 17:05:49.90
いや、それ、その先に進めないだろう。。。

502 :デフォルトの名無しさん:2011/09/17(土) 17:42:53.07
>>500
それはopenGLの質問ではないので、c++かcのスレでどうぞ。

503 :デフォルトの名無しさん:2011/09/17(土) 17:56:05.45
何で基本やらずにいきなり3Dなんだよ・・・・

504 :デフォルトの名無しさん:2011/09/17(土) 18:02:27.74
大物感がハンパないw

505 :483:2011/09/17(土) 22:09:55.92
初歩的な質問し過ぎですよね。
もう少し質問できるレベルになって分からかったらまた来ます。

506 :デフォルトの名無しさん:2011/09/17(土) 22:58:07.30
多分、「こういう時は、とにかくこの関数をこうしろ」 とか 「これをコピペすれば、大体動く」 とか
そういう状態なんだろうな。 一旦戻って、基礎飛ばさないで真面目に、せめて普通にコード書ける状態になってからくるべき

507 :デフォルトの名無しさん:2011/09/17(土) 23:30:20.52
うるせーバカ

508 :483:2011/09/17(土) 23:46:04.37
>>506
まさにそんな状態ですね。
基本を押さえられてないんで、しっかり勉強します。

509 :デフォルトの名無しさん:2011/09/18(日) 00:09:41.15
>>507
ごめんなさい

510 :デフォルトの名無しさん:2011/09/18(日) 22:31:45.17
今までプロファイルをvp40決め打ちでやってたんだが
cgCreateProgramFromFileでCGprofileをCG_PROFILE_GPU_VP
にしたらハードウェアスキニングが崩壊した・・・
一体何が変わったというのだ・・・

511 :デフォルトの名無しさん:2011/09/19(月) 21:54:30.27
しょうもない質問だけど、よろしいかな。
最近GLSLの勉強を始めたんだけど、シェーダプログラムって
用途ごとに何個も別々に用意して作っていく、ってのが正道なんでしょうか。

たとえばテクスチャとポリゴン色の合成方式を乗算から加算にするとかの些末な変更でも
それぞれのケース毎にフラグメントシェーダを用意するのかな、と。
条件分岐も考えたのだけど、それは速度的にどうかという気がするので…

環境はGLES2.0/GLSL ES1.0です。

512 :デフォルトの名無しさん:2011/09/19(月) 22:17:49.01
>>511
俺なら別に用意する
1つ作って、あとはそれコピペして一部改変、みたいな
そんなに速度気にしなくてもいいぐらいの描画内容なら、1つにまとめて中で分岐するけど

513 :デフォルトの名無しさん:2011/09/19(月) 22:20:01.23
正道とかそういうバカみたいな話じゃなくて、
どういう都合だからどうしたいって言う、自分で判断する事だろ。普通に


514 :デフォルトの名無しさん:2011/09/19(月) 22:56:56.29
>>512-513
成程、つまりそういうスタイルも普通にあり得るということですね。
巷のサンプルとかは大抵1コード1シェーダで解説してるので、実際に運用する時の扱いが結構気になってたんですよ。

何にしろおかげで迷いが取れました。ありがとうございます。

515 :デフォルトの名無しさん:2011/09/20(火) 17:49:15.46
分岐とか繰り返しはCPUに比べてGPUは苦手だから負荷が相対的に大きいんだよな。だから1つの機能を1つのシェーダーで実現しているものが多い。
ちなみにOpenGL4(からだったっけ?)のシェーダーサブルーチン機能を使えば、比較的低負荷に機能の分岐ができる。

516 :デフォルトの名無しさん:2011/09/20(火) 18:10:10.88
OpenGLのテクスチャについて質問
glGenTexture(1, texture) → texture = 1
glBindTexture(GL_TEXTURE_2D texture)
glTexImage2D( …, image1)

glGenTexture(1, texture) → texture = 2
glBindTexture(GL_TEXTURE_2D texture)
glTexImage2D( …, image2)

ってやった後

glBegin(GL_POLYGON)
glBindTexture(GL_TEXTURE_2D, 1)
 : (テクスチャ1)
glEnd

glBegin(GL_POLYGON)
glBindTexture(GL_TEXTURE_2D, 2)
 : (テクスチャ2)
glEnd

ってやるとテクスチャ1の部分にもテクスチャ2が貼られるんだけど
何か間違えてる?もしかして毎回glTexImage2D呼ばないといけない?



517 :デフォルトの名無しさん:2011/09/20(火) 18:23:06.29
glBegin ~ End の中で glBindTexture が使えるなんて妄想どこで拾った

518 :デフォルトの名無しさん:2011/09/20(火) 18:45:40.00
>>517
ありがとうございました。解決しました。


519 :デフォルトの名無しさん:2011/09/20(火) 22:16:59.31
質問よろしいですか?
三次元ベクトルをリアルタイムで表示することはできますか?
目的としてある並んだ黒色マーカの移動量をベクトル表示したいと考えています。
ここでの移動量はマーカの初期位置とある時間でのマーカ位置の差から三次元の位置差を計算した値です。
@カメラから画像をとりこむ
A処理
Bベクトル表示
の三段階をループすればいいとおもうのですが、ループがうまくいきません。
@,Aはopencvを用いています。
openglの関数ではglutmainLoopを用いています。これがまずいのでしょうか。
初心者なため、これといった根拠のない関数を使っているとおもいます。
三次元ベクトルをリアルタイムで表示できればいいので
最適なものも含めアドバイスお願い致します。

520 :デフォルトの名無しさん:2011/09/20(火) 22:38:55.80
>>519
OpenGLで三次元ベクトルをリアルタイム表示はできます。
そういうことするためのAPIです。
しかしながらループがうまくいきませんだけではそれ以上のことはわかりません。
上手くいってないところをもうちょい詳しく書くとアドバイスできるかもしれません。

521 :デフォルトの名無しさん:2011/09/20(火) 22:52:21.95
詳しくをどうかけばいいのかわかりません。
@ABをwhile文の中に書いています。
本来なら、終了条件を満たすまでループすると思いますが、最初の画像をとりこんでグラフを書いたところで次の画像が取り込まれず、待ち状態になります。
グラフのウインドウを消せばプログラムが終了します。

カメラを使った簡単なサンプルプログラムがあれば嬉しいです。

522 :デフォルトの名無しさん:2011/09/20(火) 22:56:46.37
訳「OpenGL も OpenCV も GLUT も分かりません。手取り足取り教えてください」

523 :デフォルトの名無しさん:2011/09/20(火) 23:03:34.23
確かに、その訳は正しいのかもしれません。
OpenCVで取り込み、処理するまではできています。今、出力をテキストにだしているものをグラフ化したいのです。
お願い致します。


524 :デフォルトの名無しさん:2011/09/20(火) 23:12:19.44
>>523
glutmainLoop 関数の振る舞いを調べてみろ

ググれば簡単に分かるはずだ
そうすれば、なんで while ループが回らないのか理解できる

まずはそこからだ


ちょっと先走って言うと、そういう処理には GLUT は不向き
OpenGL を直に叩くか、あるいは GLUT の代わりに GLFW なんか使うといい

525 :デフォルトの名無しさん:2011/09/20(火) 23:22:08.42
>>524
やっぱりそうなんですか。
glutmainLoop はループをし続けてウインドウを閉じた時、プログラムを終わる関数ですよね?それでglutmainLoopを抜け出す為にfreeglutのglutmainReleaseLoop関数をあるんですよね?

これ以外の方法とりたかったんです。
GLFWですか、あたってみます。

526 :デフォルトの名無しさん:2011/09/21(水) 07:34:00.68
glutDisplayFunc(disp);
と書いたなら、void disp()の中を弄るんでないかい?

527 :デフォルトの名無しさん:2011/09/21(水) 08:45:27.87
>>525
glutMainLoop()はイベントの発生を監視しつつループする関数
それ以上でもそれ以下でもない

GLUTでやるなら、基本的にはループ自体はglutMainLoop()任せで
各種のglutXXXXFunc()に登録したイベントで処理をするんだよ
定期的に処理させたいならglutIdleFunc()とかglutTimerFunc()とかで
定期的に呼んでほしい関数を登録する

528 :デフォルトの名無しさん:2011/09/22(木) 08:34:37.72
GLSLの質問なんだけど良いですか?

glGetAttribLocation, glGetUniformLocationなどで指定するリソースインデックスの値を固定することってできる?
HLSLやCgだとセマンティック名なんかで固定できるんですが。

あと、どういうパラメータがシェーダに入っているか調べる方法はあります?
Cgでいう所のcgGetFirstParameterとかみたいなAPIがあると良いのですが。

529 :デフォルトの名無しさん:2011/09/22(木) 09:40:57.18
>>528

attibute 変数のインデックスは glBindAttribLocation で変更できます。
uniform 変数はたぶんリンカーが決定したロケーションしか使えません。

attibute 変数の列挙は
GL_ACTIVE_ATTRIBUTES, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, glGetActiveAttrib

uniform 変数の列挙は
GL_ACTIVE_UNIFORMS, GL_ACTIVE_UNIFORM_MAX_LENGTH, glGetActiveUniform


530 :デフォルトの名無しさん:2011/09/22(木) 09:48:54.13
>>529
わーお、ありがとう!

531 :デフォルトの名無しさん:2011/09/22(木) 09:51:40.99
GLSLの中でlocation修飾子をつけるとできるぞ。
layout (location = 3) oin vec4 VertexNormal;
ただ番号で管理するより名前で管理したほうがいいと思うが...
サンプルなんかではコードが単純になるぶん番号を直叩きしたほうがいいかも。

532 :531:2011/09/22(木) 09:53:04.23
oinって何だよ。inな

533 :デフォルトの名無しさん:2011/09/22(木) 10:06:51.50
>>531
ありがとう、GLSLの仕様書もう一度真剣に読んで見るよ。
おっしゃるとおり、名前で管理したほうが堅牢だと思います。

534 :531:2011/09/22(木) 11:29:38.08
NVIDIAやATIのGLSLの実装のドキュメントない?
具体的にはnoise()関数が実装されているかどうかが知りたい。
うわさではされてない。


535 :デフォルトの名無しさん:2011/09/22(木) 14:28:27.86


536 :デフォルトの名無しさん:2011/09/22(木) 17:29:05.85
NVIDIA、初期の実装ではnoise実装されてないってどっかに書いてあったけど、
今はどうなんかねぇ。
試してみるのが一番なんだろうけど試せる環境にない。

537 :デフォルトの名無しさん:2011/09/22(木) 23:00:36.36
Radeonも昔(X600とかのころ)も実装されてなかったな。常に1.0か何かが返ってきてた。
最近はどうだろうなぁ。

538 :デフォルトの名無しさん:2011/09/22(木) 23:22:34.51
初期の頃は必ず0.0が帰ってきたな。
その後実装されたという話は聞かないので今でもされてないと思う。
どうでもいい勝手拡張は”実装しました!!”とか書いてるけど
肝心な情報は書かないからな。実際に読んでみるのが一番だが
全部の機能を自分で試せというのも乱暴な話だ。

539 :デフォルトの名無しさん:2011/09/23(金) 00:16:04.90
まあそのへんはGLに限った事じゃないけどねぇ…>肝心なことは書かない

540 :デフォルトの名無しさん:2011/09/24(土) 14:42:43.53

点(ポイント)スプライトでテクスチャを回転させる方法はありますか?
もしあれば方法を教えてください。

 

541 :デフォルトの名無しさん:2011/09/24(土) 14:49:50.74
>>540 質問の仕方を訂正します。

点(ポイント)スプライトでポイントごとにテクスチャを貼り付けて(つまり自動でリピートしないで)、その個々のテクスチャを任意に回転させる方法はありますか?
(普通の三角形ストリップにテクスチャを貼り付けるのと同様に)
もしあれば方法を教えてください。
よろしくお願いします。

542 :デフォルトの名無しさん:2011/09/24(土) 14:50:48.90
シェーダー使え

543 :デフォルトの名無しさん:2011/09/24(土) 18:01:44.15
やったことないからわからんが、テクスチャ行列使えばいいんじゃね?
それか>>542が言うようにフラグメントシェーダでテクチャ座標回転させる

544 :デフォルトの名無しさん:2011/09/24(土) 22:15:32.25
そこまでやるなら普通にポリゴンに張った方が速い

545 :デフォルトの名無しさん:2011/09/24(土) 23:11:59.81
自分で試したことはないがテクスチャーマトリックスに回転行列をセットすればいけるだろ。



546 :デフォルトの名無しさん:2011/09/24(土) 23:40:19.19
俺もそれ試したが
確かVS3.0縛りになったはず

547 :デフォルトの名無しさん:2011/09/25(日) 00:39:15.36
floatフォーマットのテクスチャをシェーダに渡して云々って、
いまの一般的に出回ってるグラボで普通に動くんだろうか
…一般なグラボって言い方が曖昧で申し訳無いんだけど

548 :デフォルトの名無しさん:2011/09/25(日) 02:57:47.38
一番一般的って言うとマザボ内臓の640x480のかな

549 :デフォルトの名無しさん:2011/09/25(日) 03:01:34.35
だいたい今のグラボなら動くと思けど、ARB_texture_float がサポートされてるなら。

550 :デフォルトの名無しさん:2011/09/25(日) 03:01:53.77
追加ドライバ無い状態のVGAか
ってそこまで遡らんでもええやろ

551 :デフォルトの名無しさん:2011/09/25(日) 03:03:37.07
そうか、世間の3D画像表示させたい人達は、マザボ内蔵の640x480が普通なのかってなんでやねん


552 :デフォルトの名無しさん:2011/09/25(日) 11:17:40.16
さすがにそこまで古いとwin7も動かないだろ・・・。

553 :デフォルトの名無しさん:2011/09/25(日) 11:18:41.04
もうそろそろOpenGL 4.0を最低環境にしてもいいだろう


554 :デフォルトの名無しさん:2011/09/25(日) 11:52:56.39
APUが普及すればそういえるかもしれん。

555 :デフォルトの名無しさん:2011/09/25(日) 14:54:24.71
Androidのタブレット端末のGPU性能がXBOX以上ってマジか
すごい時代になったもんだ

556 :デフォルトの名無しさん:2011/09/25(日) 15:02:10.37
初代XBOXの事を指しているなら別に不思議でも何でも無いだろ


557 :デフォルトの名無しさん:2011/09/25(日) 20:06:23.04
不思議なんて言ってないけど
すごいって書いてるの読めない?

558 :デフォルトの名無しさん:2011/09/25(日) 20:10:06.44
不思議でも何でも無い = たいして凄くもない

というニュアンスかと

559 :デフォルトの名無しさん:2011/09/25(日) 20:25:11.84
>>557
(Xbox以上なのは)不思議でもなんでもない
だろ
日常会話レベルだけどお前日本語大丈夫か?

560 :デフォルトの名無しさん:2011/09/25(日) 20:50:03.07
どう考えても大丈夫じゃない。

561 :デフォルトの名無しさん:2011/09/25(日) 21:02:00.52
>>559
日本語読めて無いのお前じゃねえかw

562 :デフォルトの名無しさん:2011/09/25(日) 21:21:20.98
「Androidのタブレット端末のGPU性能がXBOX以上って本当の話かよ。
 まったく時代の進歩は凄いな。驚くばかりだ」

「その話のXBOXって、最新の機種じゃなくて初代の事か?
 もしもそうならば、驚くような事じゃないだろ」 (=初代機の性能は、そんなに高い物じゃないと言いたい)

ただのこういう会話だと思ったのに、

 「不思議なんていってないけど、すごいってかいてるのよめない?」


なんだよこの流れ。子供でも混じってんのかwww


563 :デフォルトの名無しさん:2011/09/25(日) 21:31:49.73
子供と言うよりコミュ障

564 :デフォルトの名無しさん:2011/09/25(日) 21:57:13.00
最近は完全に字面通りにしか解釈しないやつが増えた気がする。
喩えとか皮肉とかまったく通じない。

565 :デフォルトの名無しさん:2011/09/25(日) 22:00:02.30
板的に理屈っぽくて融通きかないのが多いんだろう。

566 :デフォルトの名無しさん:2011/09/25(日) 22:20:37.95
理屈っぽくて融通きかない振りをし、相手をおちょくって楽しむ奴が多い

本当は分かってるはずだから無視すればいい

567 :デフォルトの名無しさん:2011/09/25(日) 22:38:09.46
>>566
お前優しいな。最近は想像を絶する無知ゆとりも増えてんだぜ
本当はわかってるはずと見せかけて、さらに本当に何も知らないわからないバカもいるんだぜ

568 :デフォルトの名無しさん:2011/09/25(日) 22:48:01.54
XBOXの性能を持つ携帯端末は十分凄いと思うがな
1万5000円程度で買える中華パッドでさえ物凄いポテンシャル秘めてるし

569 :デフォルトの名無しさん:2011/09/25(日) 23:02:34.08
どうでもいいけどお前ら一度スレタイ音読してみろ


570 :デフォルトの名無しさん:2011/09/25(日) 23:13:23.30
>>567
だから無視すればいい

571 :デフォルトの名無しさん:2011/09/25(日) 23:16:33.14
そもそも凄いとか凄くない、みたいな個人の主観でしか語れない話に結論をつくろうとするからおかしくなる。
そうだね、おれはそうはおもわないけどひとそれぞれだよね。これで終わりにすればいいだけの話

572 :デフォルトの名無しさん:2011/09/25(日) 23:34:24.62
また方向性の違う変なのが来た

573 :デフォルトの名無しさん:2011/09/26(月) 00:11:27.08
たまにスレが進んでいると思ったらこれかよ...

574 :デフォルトの名無しさん:2011/09/26(月) 07:38:33.04
>>542-546
みなさんありがとうございます。

iPhoneでES2.0より前でやっていますのでシェーダは使えません。経験もありません。(始めに書くべきでした)
でも今後機会があったらトライします。
結局>>544さんが言うように、VBOで一気に glDrawElements(GL_TRIANGLE_STRIP,...); &レンダリングした方が速いようです。



575 :デフォルトの名無しさん:2011/09/26(月) 08:00:30.87
>>542-546

>>574 の補足です
テクスチャ行列で回転させるのと、頂点を回転(行列とコード上で直接計算両方)させるのとをやってみましたが、どれも速さは変わらないようでした。
体感やiPhone SDKに付属の"OpenGL ES Performane Detective"というツールで見る限り
もっと切れの良い動きを期待して点スプライト(ES2.0機能の一部使えたので)での件質問したのですが、まこれでも十分かという感じです。
時期を見てES2.0へ移行したいとも思います。
ありがとうございました。

576 :デフォルトの名無しさん:2011/09/26(月) 16:20:02.91
vertex_saderを使おうと思うんだが(programじゃないほう)
intelのオンボードは結構最近のまでサポートしてない。
ドライバをMesaにでもしたら対応してくれるだろうか


577 :デフォルトの名無しさん:2011/09/26(月) 16:51:08.87
独り言はチラシの裏に書いとけ、なっ?

578 :デフォルトの名無しさん:2011/09/26(月) 16:57:16.08
ここがチラシの裏だ!

579 :デフォルトの名無しさん:2011/09/26(月) 20:41:55.02
表はどこですか?

580 :デフォルトの名無しさん:2011/09/26(月) 21:42:25.77
>>576
ProgramじゃないVertexShaderってなんだ


581 :デフォルトの名無しさん:2011/09/26(月) 21:48:01.37
あ、それやっぱ疑問なんだ
俺の見識が足りないのかとw

582 :デフォルトの名無しさん:2011/09/26(月) 21:55:25.90
あぁ多分 >>576 をエスパーすると、

「プログラムを組む類の話では無いんだけど(と言う前置きで)、

 intelのオンボードグラフィクス機能は、最近の物でも VertexShader に対応していない。
 ドライバを他に変えたら、動くものなんだろうか。
 (例えば、Mesaに買えたら、VertexShaderに対応していないチップでも、それが使えるだろうか) 」

って、聞きたいんだと思う答えは無理だろばか。 以上



583 :デフォルトの名無しさん:2011/09/26(月) 22:02:13.43
固定頂点シェーダーのことかも

それが何かは知らんが

584 :デフォルトの名無しさん:2011/09/26(月) 22:08:26.22
vertexshaderの時点で、すでにプログラムな件について

>>583
"固定パイプライン"って言葉とごっちゃになってるだろww
あれは予め用意されてて、隠されたシェーダ処理だよ


585 :デフォルトの名無しさん:2011/09/26(月) 22:22:00.19
>>584
プログラマブルシェーダーに対して、
PICA みたいなのを固定機能シェーダーと言うこともある

586 :デフォルトの名無しさん:2011/09/26(月) 22:27:12.56
つまり >>576 は、プログラマブルじゃない方のシェーダに対応してないintelのオンボードで、って言ってるのか
プログラマブルじゃないシェーダ=固定機能シェーダに対応してない時点で、そもそもシェーダ自体対応してないって事になる?
だとしたら、(programじゃないほう) とか言う必要なかったよな


587 :デフォルトの名無しさん:2011/09/26(月) 22:50:03.42
チンパンジーの考えることを推測するだけ無駄

588 :デフォルトの名無しさん:2011/09/26(月) 23:12:41.90
チンパンジーの考えることを推測する学問がある

589 : 忍法帖【Lv=40,xxxPT】 :2011/09/26(月) 23:47:29.88
俺はglCreateShaderでシェーダオブジェクトを作るが
glCreateProgramを呼ばずにNASAの開発した最新技術を使って
シェーダオブジェクトをbindしておうという事かとエスパーしたが
大誤算のようだったな。

590 :デフォルトの名無しさん:2011/09/26(月) 23:49:00.08
apiレベルで使えるか使えないかだけで directx ならオンボでも hlsl は動きますがな
まぁ opengl グラボの依存性高い印象はあるからその辺動かんかもしれんけど

591 :デフォルトの名無しさん:2011/09/27(火) 00:02:56.83
機能がグラボに左右されるとか使えないよ
openGLにはDirectXのHELみたいなのないの?

592 :デフォルトの名無しさん:2011/09/27(火) 01:42:35.61
>>580-589がネタなのかマジで言ってるのか分からん・・・
>>576が言いたいのは、ARB_vertex_shaderが使いたい(ARB_vertex_programじゃないほう)って事でしょ。

593 :デフォルトの名無しさん:2011/09/27(火) 02:44:27.06
お前よくわかったな

594 :デフォルトの名無しさん:2011/09/27(火) 08:08:02.06
アセンブリシェーダしか使えない環境だったらCg使うのが楽じゃないかな

595 :片山博文MZ:2011/09/27(火) 11:01:05.93
1.アンチエイリアスの利いた日本語文字列を出力するにはどうすればいいですか?
2.円や楕円を描くにはどうすればいいですか?

教えてください。

596 :デフォルトの名無しさん:2011/09/27(火) 11:14:01.91
>>595
どこで詰まったの?
テキストの件は環境によるとして、円や楕円なんて単純に計算してLINEでも引けば


597 :片山博文MZ:2011/09/27(火) 11:20:53.98
Windows前提でお願いします。
アンチエイリアス&αブレンドが掛かった日本語文字列を出力する方法はありませんか?

598 :片山博文MZ:2011/09/27(火) 11:26:31.83
自決しました。
http://www21.atwiki.jp/opengl/pages/24.html

599 :デフォルトの名無しさん:2011/09/27(火) 11:28:12.70
その辺は、方法って言うより、そういうロジック書けって話だなぁ
winでテキストなら、きっと必要になる関数は

wglUseFontBitmapsW で、あとは

wglGetCurrentDC
CreateFontW ※win32API

とかかな。αブレンド云々は、普段3D処理書くときの要領で



600 :デフォルトの名無しさん:2011/09/27(火) 11:29:24.32
早まって自決しちゃったか・・・

601 :デフォルトの名無しさん:2011/09/27(火) 11:56:22.03
最近OpenGLに入ったGeometry Shaderって名前がおかしくないか?
プリミティブ全体にアクセスできるシェーダーなんだからPrimitive Shaderの方が正しいと思う。
シェーダーの名前付けはプリミティブ、バーテックス、フラグメントと適応される場所でなされていると思っていたのだが...
(ただ理想的にはジオメトリー、マテリアル、ライティングみたいに処理内容で名前をつけたほうがいいと思う)

602 :デフォルトの名無しさん:2011/09/27(火) 12:02:25.22
Primitive Shader って書かれたら、どういう原初的で初歩的なシェーダなんだ?って思うんじゃね?
英語圏の言葉的な意味で。 なので

>プリミティブ全体にアクセスできるシェーダーなんだからPrimitive Shaderの方が正しいと思う。
これだけは無いわ。もうちょっと考えてよく観察してから言ってくれ


603 :576:2011/09/27(火) 12:23:33.47
質問の仕方が悪かった。>>592フォローthx。

拡張機能のARB_vertex_saderを使おうと思うんだが(GLSL)
intelのオンボードは結構最近のまでサポートしてない。

ドライバをMesaにでもしたら対応してくれるだろうか。
vertex対応でfragment非対応とかいう変態でもMesaで対応できるんだろうか。
拡張機能全滅のグラボでもMesa入れたら2.1までの機能全部使えるようになるんだろうか。

もしそうならCgはMesaと変わらん
というかCgは将来削除されそうでそっちのほうが怖い
vertex_programも現状ほぼ無視されてるからなあ

604 :デフォルトの名無しさん:2011/09/27(火) 12:33:00.65
>>602
普通はプリミティブで「基本的な構成要素」と解釈される。
お前がなぜそんなに顔真っ赤なのか理解不能

605 :デフォルトの名無しさん:2011/09/27(火) 12:36:26.94
>>604
なんで顔真っ赤にして言い返してきてんだよw

606 :デフォルトの名無しさん:2011/09/27(火) 12:37:01.81
OpenGLの話でプリミティブって出てきたら、点とか線とか三角とかの事を思い浮かべるかな。

607 :576:2011/09/27(火) 12:44:46.36
>>603
CgはOpenGLの機能じゃないのね
DirectXでも使えるのはいい
でもARB_vertex_programも動かない環境ではどうなるんだろう

608 :デフォルトの名無しさん:2011/09/27(火) 20:15:42.80
OpenGLは当初はプリミティブシェーダーの計画だったけどDirectXに合わせてかジオメトリシェーダーになったな。
テッセレーションステージのシェーダーは、ハルシェーダー、ドメインシェーダーがそれぞれテッセレーションコントロールシェーダー、テッセレーションエバリュエーションシェーダーになってDirectXとは違っているが。

609 :デフォルトの名無しさん:2011/09/27(火) 21:46:56.33
>>608
あ、本当だ。ぜんじーのコラムにもそう書いてある。

http://journal.mycom.co.jp/articles/2007/02/18/dx10/003.html
ちなみに、ジオメトリシェーダは当初「プリミティブシェーダ」(Primitive Shader)という仮称も候補に挙がっていたのだが、
いろいろな議論の結果、DirectX環境下では「ジオメトリシェーダ」という名称に確定統一された。

たしかに違和感のある名前ではある。やろうと思えばジオメトリシェーダーの中でライティングの計算も可能だしな...
このスレ侮りがたし。

610 :デフォルトの名無しさん:2011/09/27(火) 22:42:17.41
>>607
Cgは結局のところCg言語から他のシェーダ言語へのコンパイラだから全くシェーダが無い環境では当然動かない
ソフトウェアレンダラが欲しいというならOSMesa使え
ただしまともに使える速度では動かんぞ

611 :デフォルトの名無しさん:2011/09/27(火) 22:47:24.52
OSMesa 関連記事
http://www.keshi.org/blog/2006/12/b2con2006.html


612 :デフォルトの名無しさん:2011/09/28(水) 18:29:11.44
多分初歩的な質問だと思うんだが、大量のデータ(100万データ程)で描画すると、
POINTSとかTRIANGLESとかの各描画モード間で描画速度に差がでる
POLYGONがTRIANGLESとかより速度が遅い理由はわかったんだが、POINTSがTRIANGLESより遅くなる理由がわからなくて困ってる
※描画速度に関してはディスプレイリストを用いて再描画した時の速度のことに限定してる

613 :デフォルトの名無しさん:2011/09/28(水) 18:35:49.56
でぃ、ディスプレイリストですか

614 :デフォルトの名無しさん:2011/09/28(水) 18:44:50.36
初心者なもんで見当違いなことを書いてたらすまない
因みにLINEもTRIANGLESより遅い
グラボ内での処理の違いによるものなのかな

615 :デフォルトの名無しさん:2011/09/28(水) 20:09:56.40
陰面消去しないからじゃね

616 :デフォルトの名無しさん:2011/09/28(水) 20:16:33.03
>>605
ここにもいたのか麻雀スレのかわいそうな子

617 :デフォルトの名無しさん:2011/09/28(水) 22:13:14.33
>>615
なるほど、透過した際の処理が絡んでくるからか
ありがとう

618 :デフォルトの名無しさん:2011/09/28(水) 22:57:22.84
>>617
透過は関係ない、面であれば普通裏むいてりゃラスタライザ前で捨てる

619 :デフォルトの名無しさん:2011/09/29(木) 01:05:54.07
>>616
なんだよそれ。シャドーボクシングならよそでやってくれ


620 :デフォルトの名無しさん:2011/09/29(木) 21:56:03.83
論文(*1)読んでたらバーテックス・シェーダーだけでテッセレーション・シェーダーもジオメトリー・シェーダーも使わずに
テッセレーションできる方法が実装できてすぐにも実用できそうなんだけど
そういう話を聞いたことがないのは誰も注目してないの?

*1 Geometric Mesh Refinement on GPU, Boubekeur & Schlick



621 :デフォルトの名無しさん:2011/09/30(金) 01:07:02.96
今はJOGLってダウンロード出来ないんですかね?
リンクが見つからなくて・・・

622 :デフォルトの名無しさん:2011/09/30(金) 02:18:42.79
GL ES2.0の本にuniform変数はvec4*128個がどのハードウェアでも最低限サポートされてるって書いてあるけど
2011年になって256個に増やされたとかいう事は無い?

623 :デフォルトの名無しさん:2011/09/30(金) 08:34:30.71
>>621
http://jogamp.org/
ここからいけない?

>>622
なんで急に増えるわけがあるんだよ
万が一規格で増えたとしても古いハードウェアが勝手に性能アップするわけもないだろ

624 :デフォルトの名無しさん:2011/09/30(金) 18:15:39.22
この本ってどう?
Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL (6th Edition) [ハードカバー]
Edward Angel (著), Dave Shreiner (著)
値段が値段(9458円)だけに買うのがためらわれるんだけど、値段分の価値はある?
OpenGLの基本的なことは知っているので応用がしりたい。


625 :デフォルトの名無しさん:2011/09/30(金) 22:52:31.48
ここで聞くより海外の書評を見たほうが早い

626 :デフォルトの名無しさん:2011/10/01(土) 15:58:13.65
全頂点に対して実行するとシェーダー処理が重すぎるので、
視界から見える可能性のある頂点だけピックアップして行ないたいのですが、
この「見える可能性のある頂点」を高速に判定するにはどうすればいいでしょうか?




627 :デフォルトの名無しさん:2011/10/01(土) 18:09:30.84
そもそも頂点シェーダーで見え方のコントロールを行うんだからそれは無理。

628 :デフォルトの名無しさん:2011/10/01(土) 22:23:24.14
CPUの方が空いてるならスキニングとか裏ポリカリングはCPUでやってしまうとか、
簡易モデルでオクルージョンカリングするとかかな


629 :626:2011/10/01(土) 23:27:56.94
一度全部レンダリングして最終的に描画されたピクセルから
そのトライアングルの元になった頂点を求める方法がベストなんですがどう考えても難しいです。


630 :デフォルトの名無しさん:2011/10/01(土) 23:39:59.11
>>629
「レースが始まる前に一度競馬の結果を知る事が出来れば、
 効率よく当たり馬券を得られるのですが、何か良い方法が無いですか?」
と質問した?


631 :デフォルトの名無しさん:2011/10/02(日) 11:04:39.87
>>626
事前にプリミティブの頂点が全て収まる球を CPU で計算しておいて、その球が視体積と
交差する可能性がなければそのプリミティブに対する描画コマンドを実行しない。

632 :626:2011/10/02(日) 12:27:52.20
Zテストで落ちる頂点も取り除きたいです。

1 頂点ごとに固有のIDを頂点Attributeで送る
2 ジオメトリーシェーダーでピクセル毎に3頂点IDを複製する
3 最終的に残ったZバッファーのピクセルを見ると元になった頂点IDx3がわかる
4 Zバッファーから全ての頂点IDを取得してソートして重複を取り除けば完成

というアルゴリズムを考えたのですが、どう考えても4が実用的でありません。
できればジオメトリーシェーダーも使いたくありません。


633 :デフォルトの名無しさん:2011/10/02(日) 12:33:25.44
>>632
当然オクルージョンカリングを試した上での発言だろうな

634 :デフォルトの名無しさん:2011/10/02(日) 12:51:50.50
>>632
コンディショナルレンダリングを使うのは検討した?

635 :デフォルトの名無しさん:2011/10/02(日) 14:14:11.75
取引先に荷物をオクルージョン

636 :626:2011/10/02(日) 14:31:22.25
>>644-634
はじめて知った\(^o^)/
え、何これ凄い便利そうなんですけど
3回レンダリングするのが少し気になりますがこれ使えばいけそうです


637 :デフォルトの名無しさん:2011/10/02(日) 14:38:33.11
角とパンチパーマがないとドーモ君という事が判明

638 :デフォルトの名無しさん:2011/10/07(金) 15:58:15.19
GL_TRIANGLESで作った多面体をマウスでクリックした面の色を変える
という事をしたいのですが、どうやったらいいですか?

詳しく紹介されているサイトがありましたら、教えてください。

639 :デフォルトの名無しさん:2011/10/07(金) 23:26:20.56
それは2回レンダリングするといい

640 :デフォルトの名無しさん:2011/10/08(土) 01:07:37.18
>>638
マウスで画面上の座標をクリックした時、そのスクリーン座標 x, y から、三次元空間で向いてる方向に
まっすぐ線を延ばして、その伸びた線分と最初に交差する面を計算して特定しておいて、

あとは通常通り、メッシュをdraw&その特定した面を構成する頂点位置と、まんま重なる別のポリゴンを重ねて描画
※ただし完全に同じ位置に描画するとモアレみたいな状態になるので、わずかにカメラ側のベクトルに移動させて描画

とかが、ぱっと思いつくベタな方法。勿論他にもやりようなんて都合と工夫次第


641 :デフォルトの名無しさん:2011/10/08(土) 01:38:08.44
opengl3.0からは
glBegin,glEnd,glVertex3fとかの固定機能系はdeprecated
となってるそうですけど、
やはり積極的にシェーダ利用の描画に乗り換えていくべきですか?


642 :デフォルトの名無しさん:2011/10/08(土) 02:07:59.76
正直その辺は動かしたい環境次第かと。

643 :デフォルトの名無しさん:2011/10/08(土) 02:10:31.78
好きにしたらいい

644 :デフォルトの名無しさん:2011/10/08(土) 02:29:37.33
>>642-643
ありがとうございます!

645 :デフォルトの名無しさん:2011/10/08(土) 03:52:17.70
>>640
ありがとうございます。
とりあえずその案でやってみます。

646 : 忍法帖【Lv=40,xxxPT】 :2011/10/08(土) 04:14:47.28
>>640
逆に各三角形をスクリーン座標系へ座標変換してからスクリーン座標系で
マウス位置と重なっているか計算するという手もあるぞ

647 :デフォルトの名無しさん:2011/10/12(水) 12:42:17.87
OpenGL ES2.0の入門サイトでおすすめのサイトはありませんか?
Android SDKと一緒に使おうと思ってます

648 :デフォルトの名無しさん:2011/10/12(水) 15:10:26.32
http://www.amazon.co.jp/dp/4894714396/
ネットを探すだけ無駄
そもそも適切なキーワードを知らないし、見つけたサイトが有用かそうでないかわからないでしょ。
素直に1冊買いなさい


649 :デフォルトの名無しさん:2011/10/12(水) 23:06:41.66
>>648
デビットカードの残金が切れていてamazonで買い物ができないんですが分かりました
代引きで頼んでみます

650 :デフォルトの名無しさん:2011/10/13(木) 11:06:10.70
OpenGLの凄い本を教えてください。
エキスパート向けの高度なテクニックをわかり易く解説している本がいいです

651 :デフォルトの名無しさん:2011/10/13(木) 12:37:24.97
本を探すより、SIGGRAPH の会員になって仲間と交流した方が早いと思う

652 :デフォルトの名無しさん:2011/10/13(木) 19:38:45.02
>>650
最強の怪獣を教えてください
すごい強いのがいいですって、言った?

653 :デフォルトの名無しさん:2011/10/13(木) 20:39:38.54
>>650
エキスパート向けの高度なテクニックって、基本的にその前提になる
別の高度なテクニックについて、予め知識がある人向けわかり易く解説してる物だから、
「凄い本おしえてください!」 とか言ってるような初心者では、多分、全然わかり易くはないと思うよ

例えばC++のイディオム集みたいな物があったとして、そこで高度なテクニックがわかり易く紹介されてたとしても、
そもそもそれを理解する為の C++ の高度な使い方知ってなかったら、何を話してるのかすらわからない、みたいな


654 :デフォルトの名無しさん:2011/10/13(木) 20:50:28.31
Modern C++ Design 読んでも意味が分からんとかね
(エキスパート向けというわけではないが)

この人のブログで時々マニアックなもの紹介されてたりするから、
過去のチェックすると良いよ
http://masafumi.cocolog-nifty.com/masafumis_diary/

655 :デフォルトの名無しさん:2011/10/13(木) 23:32:51.06
ゴタクはいいのでよろしくお願いします。
例えばdeffered renderingしたいけどMSAA効かないよね
⇒ そうだあれしよう(ぴこーん!)
みたいなのお願いします

656 :デフォルトの名無しさん:2011/10/13(木) 23:54:52.70
>>655
そういう用途なら、Googleが最適じゃないの?


657 :デフォルトの名無しさん:2011/10/14(金) 00:02:46.75
駅すぱあとがOpenGL対応ときいて。

658 :デフォルトの名無しさん:2011/10/14(金) 12:44:31.43
>>655
最新のものを知りたいならGDCとかSIGGRAPHの発表資料とか論文見ろ
さらにそこから参考文献探し出せばよい
あとOpenGLに限らずDirect3Dの資料も読め。どうせやってることはかわらん

659 :デフォルトの名無しさん:2011/10/14(金) 16:54:37.64
出発地 OpenGL 2.0
目的地 WinG
経由地 DirectX 11
表示順序 乗換回数順

660 :デフォルトの名無しさん:2011/10/15(土) 11:43:26.54
俺DIBSectionで3Dエンジン作るわ

661 :デフォルトの名無しさん:2011/10/15(土) 12:19:05.80
>>660
DIBセクションって、DIB形式画像のヘッダ部分だと思うが


662 :デフォルトの名無しさん:2011/10/16(日) 11:32:25.19
OpenGLのアニメーションで、
人間や動物が手足を動かすものを
作る方法について書いた本やWebのページは
あるでしょうか。

ロボットが手足を動かす例はみつけましたが、
ロボットを九体や立方体に分けて別々に
動かすというもので、人間や動物のように
柔らかいものについては使えそうには
ありません。

よろしくお願いします。

663 :デフォルトの名無しさん:2011/10/16(日) 14:07:21.15
>>662
ロボットの手足を動かす事はできてるわけだ
ボーンを手足に見立てて人間のように動かすことできていると
(できてなければ、そこから始めた方がいい)

であれば、あとは各ボーンの動きに合わせて、
ポリゴンを「人の皮膚のように」切れ目なく動かすだけで、
とりあえず人間や動物が手足を動かしているように見える
(皮膚を押したら凹むとかはまた別の話)

まずは下記のようなページでスキンメッシュの計算の基礎を学ぶといい
http://graphics.ucsd.edu/courses/cse169_w05/3-Skin.htm

日本語での理論の丁寧な解説が意外にないな・・・

664 :デフォルトの名無しさん:2011/10/16(日) 19:28:11.82
いわゆるスキニニングとかボーンアニメーションとか言われる奴だな
ジェイソングレゴリーのゲームエンジン・アーキテクチャに詳しい
俺はそれで勉強して実装した
ゲーム作るには必須の技術だが日本語で読める解説書は無きに等しい

665 :デフォルトの名無しさん:2011/10/16(日) 20:16:59.28
あれみて実装するやつなんているのかw
OpenGL ほとんど関係ないしMMD周辺調べてみたら?

666 :デフォルトの名無しさん:2011/10/16(日) 21:26:36.11
OpenGLのサンプルにスキニングなかったっけ
それでええやん?

667 :デフォルトの名無しさん:2011/10/16(日) 21:34:58.13
なんでMMDとかそこで出てくるんだよww なんでやねんだ。

>>662
その立方体や球体に分けて関節表現、が本当にわかってて、
読んでわかったとかコピペしたら出来た、とかでないなら、
後はどうすればいいか、とりあえず気づくと思う。

要は、 「ボーンの移動や回転に合わせて単純に位置更新、が、出来ない頂点」 に視点を向けろ
そこがどうなればいいかわかれば、後は簡単だから。

単純移動出来ない頂点は、どちらかに何パーセント移動し、
他方に何パーセントか移動する訳だから、それを計算しろ。

単純にとある面を構成する頂点が、全て同じボーンに含まれるなら、それは形は変わらず、
面が回転移動するだけだけど、 そうでない 「単純に更新が出来ない、変形する面の頂点」 は、
どう計算したらいいか、って話。 その観点に視点を向ければ楽勝。簡単なこと



668 :デフォルトの名無しさん:2011/10/16(日) 21:36:13.99
>>667

669 :デフォルトの名無しさん:2011/10/16(日) 21:43:51.19
>>668
無言安価打たれる理由がないんだが

670 :デフォルトの名無しさん:2011/10/16(日) 21:58:51.52
>>662
スキニング、原理の説明だとこことか分かりやすいんじゃないかな
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20091231

671 :デフォルトの名無しさん:2011/10/16(日) 22:55:30.02
後は簡単だからと言われても
原理はともかく実装はノウハウの塊だからなぁ

mikoto互換から始めたけど未だにmikotoの品質を超えられない

672 :デフォルトの名無しさん:2011/10/16(日) 23:16:58.74
+π|-π
+0|-0

の角度を

+π|+0
-π|-0

に変換するスマートな方法ってある?

673 :デフォルトの名無しさん:2011/10/16(日) 23:23:26.92
>>669
元コメで欲されてるスキニングの変形方法について有為な情報が皆無だからじゃねーの

674 :664:2011/10/16(日) 23:24:17.76
>>667
お前がスケレタル・アニメーションについて理解してないことがよく分かった。
恥をかくだけだからもう発言しない方がいい。
>>670
床井先生には申し訳ないのだが、この説明で初心者が理解できるだろうか?
ゲームエンジンアーキテクチャーを読んだほうが100倍良くわかるはずだ。
床井先生にはいつも感謝してるが、世界最高の良書と比べるとやはりわかりにくい。
というわけでこういうゲーム作りの基本情報がネイティブ言語で読めないというのは日本の国益に非常にダメージを与えている。
国は床井先生に金を払って書き直してもらうべき。



675 :デフォルトの名無しさん:2011/10/16(日) 23:27:45.04
あと最新のテクノロジーを詰め込んだ国産のオープンソースのレンダリングエンジンがないというのは良くない。
床井研究室主導で一発凄いのを作ってもらえないだろうか。
ソースだけじゃなくドキュメントも豊富に揃えて。
例えばスタンフォードのPBRTとかが理想。

676 :デフォルトの名無しさん:2011/10/16(日) 23:30:14.58
>>672
意味が分からん

縦棒の記号はなんだ?
なんで上下2段になってる?
+0 と -0 は IEEE574 のゼロ表現のことなのか?

677 :デフォルトの名無しさん:2011/10/16(日) 23:31:08.51
それ別に国産にこだわる必要なくね

678 :デフォルトの名無しさん:2011/10/16(日) 23:39:15.39
lucilleとかはもう開発とまっちゃったみたいだしなぁ。

679 :デフォルトの名無しさん:2011/10/17(月) 00:20:16.32
>>678
そうなの?HP見るともうすぐ製品リリースっぽいけど...

680 :デフォルトの名無しさん:2011/10/17(月) 01:19:55.66
ゲームエンジンアーキテクチャーって前半部の線形代数の部分は素晴らしく自然な日本語でわかりやすいけど
後半の微分あたりから急に硬い理系の教科書みたいな意味不明な文章になって読む気無くすよね
3D数学本の訳者は日本語が上手い人間にするべきだよね

681 :デフォルトの名無しさん:2011/10/17(月) 01:43:07.31
自分が英語上手くなるべきだよね

682 :デフォルトの名無しさん:2011/10/17(月) 01:48:20.97
こりゃ一本!一本取られた!


683 :デフォルトの名無しさん:2011/10/17(月) 09:42:19.00
俺は日本語版が出る前に英語版を読んだ
今までは無条件に勧めていたけど、翻訳の質がよくないなら考え直さないと...


684 :デフォルトの名無しさん:2011/10/17(月) 09:47:31.88
あの本アニメーションの部分以外目新しいトピックはないよね

685 :デフォルトの名無しさん:2011/10/17(月) 16:55:14.14
質問
Light Pre-Pass Renderingの性能上の利点ってどこにあるの?
実装上はライティングの計算がシェーダーから分離してくれるのでありがたいけど、
普通のForward Renderingに比べて利点はそれだけな気がする。



686 :デフォルトの名無しさん:2011/10/17(月) 21:56:52.12
>>682
取られてない。
翻訳の日本語が悪いのは事実なのだから単なる話のすり替え

687 :667:2011/10/17(月) 22:51:31.84
>>674
いや、お前は何もわかっていない。言葉だけでわかったフリしてるだけの、ただのマヌケだ。
知ったか厨二病乙
俺は自分で実装してるよ

688 :デフォルトの名無しさん:2011/10/17(月) 23:34:14.21
喧嘩すんな

689 :デフォルトの名無しさん:2011/10/18(火) 05:31:20.02
反論できなくなったら発言者の人格を攻撃したり挑発を始める
証明できない事実を並べたり、関係ない事実を述べたりする

690 :デフォルトの名無しさん:2011/10/18(火) 07:21:49.50
>>687
君はもういいから...

691 :デフォルトの名無しさん:2011/10/18(火) 07:25:17.06
>>674
> お前がスケレタル・アニメーションについて理解してないことがよく分かった。

割り込みでスマンが、言ってる意味がよく分からない
その反論をもう少し詳しく教えてくれないだろうか

というのも、>>667 が言ってることは、やや大げさな言葉使いは別にして、
至極まともなことを言っているように感じる

>>662 のようなスキンメッシュやスケレタル・アニメーションなどの言葉も知らない人に、
一つの頂点の位置を複数のボーンの座標変換の合成によって決定するという、
スキンメッシュの単純な本質に目を向けさせ、まずは自分で考えさせるのは
理解させるひとつの方法だと思う

これが本質であることは >>674 も同意見だと思うが、違うのだろうか
どのサイト、本にも載っている基礎中の基礎だと思う

ただまぁ、質問者は本やWebのページを求めているので、
質問の趣旨からは外れているわけだが

692 :デフォルトの名無しさん:2011/10/18(火) 07:34:20.33
>>667
を読んでみると
MMDに対するツッコミは別におかしく無い
その後読みにくいけど頂点ブレンディングについて書いてる

>>674
そこから>>674が言うようにスケルタルアニメーションを
理解できてないにどうして繋がるか俺には分からん

>>687
はスキニニングとかのタイポにたいする皮肉と思われる
なぜファビョったかは不明

第三者的にはまじで意味が分からない

693 :デフォルトの名無しさん:2011/10/18(火) 07:58:10.29
分からなくても別にどーでもいい。


694 :デフォルトの名無しさん:2011/10/18(火) 08:35:32.25
悔しがりすぎw

695 :デフォルトの名無しさん:2011/10/18(火) 09:15:58.66
>>667を自分で読み直してこれで他人に意図が伝わると思うか?
思わないだろ?
他人が理解できるように説明できないということは、理解してないということ
>>667の文章を読めば、ああこいつ理解してないなと思うは当然

他人にスケレタルアニメーションを説明するにはまず第1にスケルトンが階層構造のボーンと、
ボーンに関連付けられた頂点(スキン)でできてることを説明する。
そしてボーンを動かせばそれに追従してスキンが動く事を押さえる。
この時1つの頂点が1つのボーンにしか追従しないと関節部分が割れたりするので
通常は1つの頂点が2つ(以上)のボーンに関連付けられていて、なめらかに遷移するように両者がブレンドされる

くわしくはゲームエンジンアーキテクチャーに全部書いてある。
床井先生のページの説明も気に入らないし、俺は日本語で読めるスケレタルアニメーションの全ての説明が気に入らない。
何で日本語の資料はこんなにそろいもそろって酷いんだ。
みんなまともな資料を読んだことがないから>>667みたいに自分は理解していると思って馬鹿げた説明を繰り返す

696 :デフォルトの名無しさん:2011/10/18(火) 09:22:14.11
くっだらねぇ

697 :デフォルトの名無しさん:2011/10/18(火) 09:23:38.02
あとスケレタルアニメーションの数学的なキモは
ボーンのローカル座標に落とすところな
これが全てのトリックの根幹
最終的にはボーン行列をかけるだけの処理だが
以外とそこに至るまでの仮定は奥が深い
そのギャップが一番面白いところで、そういう面白さに気がつかせてくれるのがいい教師

698 :デフォルトの名無しさん:2011/10/18(火) 09:24:28.04
>>696
ひっこめゴミ
自分が場違いなところに書き込んでいることを理解しろ

699 :デフォルトの名無しさん:2011/10/18(火) 09:40:03.03
たかが実装手法でずいぶん勝ち誇るなw

700 :デフォルトの名無しさん:2011/10/18(火) 19:24:48.66
すいません
質問です。
Visual C++2010でopenglを動かしているのですが、openglで作ったアニメーションを動画キャプチャしたいのですが、
やり方がわかりません。フリーの動画キャプチャを使ってみたのですが、openglの動きは反映されませんでした。
わかるかたよろしくお願いします。言語はC言語です。

701 :デフォルトの名無しさん:2011/10/18(火) 19:28:26.43
http://www.forest.impress.co.jp/lib/pic/piccam/capture/

702 :デフォルトの名無しさん:2011/10/18(火) 19:39:03.24
このなかのアマレココを使ってみたのですが、ウィンドウの動きとかはキャプチャされたのですが、
その中で動いている点とかが最初のままで動いてないのがキャプチャされたのですが、
これは設定とかに問題があるんですか?

703 :691:2011/10/18(火) 19:57:49.87
>>695
あぁなるほど、言われればそうかも、納得しました

俺は自分が知ってるから無意識にそういう視点で読んでたけど、
確かに全く触れたことがない人にとっては、ちょっと分かりにくい文章ではあるな

ただ、質問者がロボットの手足を動かすことはできていることを前提にすると、
ボーンの構造自体は理解できている筈だから、それなら推測できるだろうとは思う
それを前提にすること自体が誤った推測かも知れんが

>>667 も理解してると思うよ


ところで >>695 は、そこから「日本人が誰もやらないなら俺が解説を書いてやろう」
という発想には至りませんか? 応援しますけど

704 :デフォルトの名無しさん:2011/10/18(火) 20:13:48.14
断言するが>>662のロボットに絶対にボーンは入っていない
ゲームプログラマーになる前に〜に適当に手足のパーツを動かした例がのっていたはずだがそのレベル
そもそも日本語で真面目にボーン入れて動かすチュートリアルを見たことがない

705 :デフォルトの名無しさん:2011/10/18(火) 20:36:33.03
だったら、やはりスキンの前にボーンの基礎だな
スキンはその後だ

706 :デフォルトの名無しさん:2011/10/18(火) 22:53:51.04
本で読んだだけで、それでわかった気になる奴ほど他人を見下したがるもんよ
でも実装経験が伴ってないから、
具体的な動きを書かれても意味がわからず、
「お前が何もわかってない事がわかった(キリッ」とか言って恥かくんだよ
でもプライド高くてバカだから想像できないのw

707 :デフォルトの名無しさん:2011/10/18(火) 23:23:34.42
なんかレベル低いな

708 :デフォルトの名無しさん:2011/10/18(火) 23:42:38.52
>>700
WindowsVista以降ならデスクトップコンポジション切るといけるかもしれない
あまりプログラミング関係ないからソフトウェア板とかで聞いた方が早いかも

709 :デフォルトの名無しさん:2011/10/19(水) 05:34:21.54
結論:スキンメッシュは天才しか扱えない

710 :デフォルトの名無しさん:2011/10/19(水) 07:12:12.40
天才で片付けて思考停止するなよ

711 :デフォルトの名無しさん:2011/10/19(水) 08:33:12.55
オープンソースの描画エンジンのコードがいくらでもあるだろ
ogreとかirrlichtとか

712 :デフォルトの名無しさん:2011/10/19(水) 09:17:15.25
それ以外で

713 :デフォルトの名無しさん:2011/10/19(水) 09:48:28.97
日本人が作った奴でおねがいします

714 :デフォルトの名無しさん:2011/10/19(水) 10:09:06.00
ソースコードに英語も日本語もないだろ・・・

715 :デフォルトの名無しさん:2011/10/19(水) 10:28:50.17
俺は正しいコードを書いてるはずなのにいくら試しても正常に表示されないからスキンメッシュを投げたことがあるが、
3年後に再挑戦してクオータニオンの回転角の符号を反転させたら正常に表示されて3年間を無駄にしたことがある

716 :デフォルトの名無しさん:2011/10/19(水) 10:36:30.37
つまり、俺でも書けるんだからスキンメッシュなんてそんなに難しくないということだ

717 :デフォルトの名無しさん:2011/10/19(水) 10:40:21.10
>>715=716かい?

1レスで書ける事を8分待たなきゃ書けなかった事をよく考えれば
3年て時間を無駄にした本当の理由が見えてくるんじゃ?

718 :デフォルトの名無しさん:2011/10/19(水) 10:50:44.90
何でこのスレこんなに殺気立ってるの?
落ち着けよカスども

719 :デフォルトの名無しさん:2011/10/19(水) 10:53:06.40
ゴミは揚げ足を取らないと精神の均衡が保てないから仕方ない


720 :デフォルトの名無しさん:2011/10/19(水) 10:54:56.60
だからチキンって呼ばれてるんだな


721 :デフォルトの名無しさん:2011/10/19(水) 11:03:27.25
マジチキン

722 :デフォルトの名無しさん:2011/10/19(水) 11:04:06.71
それよりDeffered Renderingは有効かについて語ろうぜ!
ちなみに俺はDeffered Renderingは時代遅れ派だ
欠点は
- バンド幅を食いすぎる
- MSAAが効かない
- 半透明ダメポ
- 変更に弱い(G-Bufferのデザインが全てに影響する)
という理由からDeffered Renderingイクナイと思っている

723 :デフォルトの名無しさん:2011/10/19(水) 11:15:19.68
deferred

724 :デフォルトの名無しさん:2011/10/19(水) 12:21:48.87
>>715
>俺は正しいコードを書いてるはずなのに
2chでも、なんかやらかしてそうな奴だな

725 :デフォルトの名無しさん:2011/10/19(水) 12:34:17.66
こんな抜けた奴でもできるスキニングなのに、お前らには出来ないから妬んでんの?

726 :デフォルトの名無しさん:2011/10/19(水) 12:38:58.99
スキニングできないゲームプログラマって存在していいの?


727 :デフォルトの名無しさん:2011/10/19(水) 12:47:16.45
いいんじゃない?

728 :デフォルトの名無しさん:2011/10/19(水) 13:12:47.29
少しスレチだけど、スキンアニメにかかわらず
〜〜ができるやつは積極的にwebに情報配信してほしい


729 :デフォルトの名無しさん:2011/10/19(水) 13:12:53.75
趣味プログラマーの彼女(19)からスキニングもできないの?って笑われた


730 :デフォルトの名無しさん:2011/10/19(水) 13:15:24.56
結論:スキンメッシュはバカでも扱える

できない奴はバカ以下

結論:スキンメッシュは天才しか扱えない

できなくても仕方ないのさ

天才が謙遜するたびに挫折した奴が傷つくなら
天才を自称した方が綺麗に収まるんだよ
挫折してからできるようになった人も達成感を得られる
できないくせに簡単にできると言ってる奴はただのバカだが

731 :デフォルトの名無しさん:2011/10/19(水) 13:26:17.86
>>728
スキニングなんて20年前の技術なのに
なんでいまだにwebにまともな情報が無いんだ?
クソblogが氾濫したせいで埋もれてるのか?


732 :デフォルトの名無しさん:2011/10/19(水) 13:29:05.48
てか十分あるだろ

733 :デフォルトの名無しさん:2011/10/19(水) 13:29:19.74
ゲームプログラマーのためのフォーラム欲しいよね。
最新技術とか1人で全部追いかけるの大変だし
相談できる相手は社内にいないしどないせいっちゅうねん


734 :デフォルトの名無しさん:2011/10/19(水) 14:01:05.27
やねうらお先生あたりがやってそうだが無いのか

735 :デフォルトの名無しさん:2011/10/19(水) 15:38:03.65
まともなモーションがついたモデルデータが皆無に等しいからじゃね
まあ今更頑張って書いたところで、素人が動かすMMDにも及ばんだろ
高度なはずの技術がツール使えば誰でもできることになっちまったw

736 :デフォルトの名無しさん:2011/10/19(水) 16:03:57.72
十数前のム板で言うところのVB厨が今や開発者の主流になってしまったってことだな

737 :デフォルトの名無しさん:2011/10/19(水) 16:40:16.44
つまり十数年前からム板に居続けてスキルの向上も無くスレで愚痴ってると?

738 :デフォルトの名無しさん:2011/10/19(水) 16:55:07.30
>まともなモーションがついたモデルデータが皆無に等しいからじゃね

数年前までは割と深刻な問題で言い訳にも使えたけど、今はモーションどころか
剛体設定まで仕込んであるMMD用データがいくらでも入手できるからなあ

739 :デフォルトの名無しさん:2011/10/19(水) 17:00:59.75
素人でMMDデータでopenglでスキニングしてるけどまじいい時代になったもんだ
物理演算とか使うとオンラインは厳しいからゲームには使えないけど

740 :デフォルトの名無しさん:2011/10/19(水) 17:11:21.00
線形補間?ウェイト値?なにそれ
MMD使ってちょちょっとやればいいじゃん
プログラムできても大したことないね〜www

そういう時代
数学なんて要らなかったんや

741 :デフォルトの名無しさん:2011/10/19(水) 17:36:01.44
でもMMDしか作れないよね
箱庭から出るのが面白いのに

742 :デフォルトの名無しさん:2011/10/19(水) 17:47:17.78
なんかレンダラの話になってないか?
MMDデータをopenglで描写するエンジンを自作したいとかなら分かるが

743 :デフォルトの名無しさん:2011/10/19(水) 18:18:36.71
使いたいモデル毎にパーサ書くのが面倒すぎる
いい加減統一してくれ

744 :デフォルトの名無しさん:2011/10/19(水) 18:58:46.87
そこで COLLADAですよ

流行る気配はないけどね

745 :デフォルトの名無しさん:2011/10/19(水) 20:29:25.14
理念は分かるんだけど重い仕様だからなあ
もっとコンパクトなサブセットないんかな、jsonとかで
webglやflash11通して普及したりせんかなと

746 :デフォルトの名無しさん:2011/10/19(水) 20:36:54.61
統一するとなると、どうしても今の最大公約数か最小公倍数になるしかないんだよね

COLLADAは最小公倍数の方だね

747 :デフォルトの名無しさん:2011/10/19(水) 22:35:50.11
やらない言い訳いらない

748 :デフォルトの名無しさん:2011/10/19(水) 23:07:54.68
>>739
「オンラインは厳しいから」から「ゲームには使えないけど 」に俺の思考が直結しないんだけど
これってどういう意味?

749 :デフォルトの名無しさん:2011/10/19(水) 23:21:54.38
オンライン=リアルタイムレンダリング
オフライン=プリレンダリング
ってことかな

750 :デフォルトの名無しさん:2011/10/19(水) 23:34:10.75
プリレンダをオフラインレンダリングとか言ってたよな。

751 :デフォルトの名無しさん:2011/10/19(水) 23:45:04.54
MMDレベルの物理なんて誤差の範疇の処理時間じゃん

752 :デフォルトの名無しさん:2011/10/20(木) 02:55:19.41
>>722
素直に実装するとBRDFが固定されてしまう点以外は思ったよりいいと思う > deferred rendering

MSAAはDX11世代のグラボでは普通にサブピクセルで操作出来るから問題ないし、そもそもPC のパワーが増えてきたら下手にMSAA使うよりもその分解像度あげてレンダリングする方にパワー使ってFXAAとかの方が綺麗なケースが多い気がする。試してる限りでは。

DRに取って替わる手法とかあったら教えて欲しい。

753 :デフォルトの名無しさん:2011/10/20(木) 03:07:23.38
CUDAやOpenCLのローカルメモリを使った実装なら、複数のライトを計算するコストに対してバンド幅も節約出来ると思う。

たくさんライトを出さない、BRDFをいろいろ変えてレンダリングしたい、とかならディファードレンダリングは向かないかもしれないけど…。

754 :デフォルトの名無しさん:2011/10/20(木) 03:13:04.93
>>751
スカートが付いてるキャラとか
mob1対につき骨が200本くらいだったかあってそれぞれに剛体が付いてて
とてもじゃないが無理ゲーだった

755 :デフォルトの名無しさん:2011/10/20(木) 05:58:24.88
細かいところまでやるならMMDでは足りなくなるから困る
ボーンシミュは捨ててOpenCL格子シミュでもいいと思うけどまだ試してない
骨+モーションも後付けで拡張できるようにしたら
顔の表情や手の動きなんかも付けやすくなりそうだけど試してない
できるならトゥイーニングは捨てれる
頂点の編集も手動でやるならツールに頼らなきゃならないし
データも
骨+モーション
頂点
の二つに分けといた方がいいような気もする
頂点シミュレーション後にnormalを計算したいから
テセ使いたいけどwebglでは少し足りないし
まだ拡張の余地があるからしばらくは柔軟なフォーマットでやるしかないよ

756 :デフォルトの名無しさん:2011/10/20(木) 08:47:48.77
要は妄想してるだけと

757 :デフォルトの名無しさん:2011/10/20(木) 11:33:52.18
>>752
今1から実装するなら個人的にはLight Pre-Pass Rendering(Engel)を押したい
Deferred系レンダリングの一種だが上記の欠点(MSAA)を克服している

1パス目でG-Buffer(位置、法線)をレンダリング(Geometry)
2パス目でライトの放射照度(拡散光、鏡面光)をレンダリング(Light)
3パス目でもう1度ジオメトリーを送ってレンダリング(Geometry)

最大の違いは3パス目で、再度ジオメトリーを全部送っているのが無駄に思えるが
オクルージョンカリングを有効にしているのでたいしたコストではない
実際のところ3パス目でやっていることは通常のForward Renderingと同じで
その前にプリプロセスとして1パス目でZを、2パス目で放射照度をピクセル毎に求めているに過ぎない

Light Pre-Pass Renderingは各手法の”いいとこどり”で
ライト無制限、MSAA、オクルージョンカリングが使える

と思ってるけど実装したこと無いからここまで全部俺の妄想


758 :デフォルトの名無しさん:2011/10/20(木) 13:53:43.22
>>757
自分はどちらも実装した上で書いてたんだけど、その二つなら作りたいものの都合に合わせて選べばいいんじゃない?って感じ。

MSAAの対処って基本的にディファードとライトプリパスで変わらないよね?
sampler2DMS使うみたいな。


759 :デフォルトの名無しさん:2011/10/20(木) 14:33:58.51
全然違うだろ
3パス目はジオメトリーを書き込むからglEnable(GL_MULTISAMPLE)がそのまま使える
Deferred Renderingの場合最後は1枚の板なのでマルチサンプリングしても意味がない



760 :デフォルトの名無しさん:2011/10/20(木) 14:52:46.55
あぁ、理解した。Deferredから作り始めてたからライトバッファもMSAAにしてた。

Deferredの場合はGバッファがMSAAで書き込んでるから、リゾルブの時にMSAAテクスチャとして対処しないといけないんだ。

761 :デフォルトの名無しさん:2011/10/20(木) 16:19:40.76
たぶんそこが1番違うね。マルチサンプリングテクスチャーを使う(Deferred)のと使わないの(Light Pre-Pass)。
世間ではDeferredでスーパーサンプリングせずにポスト処理でAAをかけるのが流行りっぽいけどよく知らね
それは個人的には筋が悪いと思う。というわけで俺はMSAAが使えるLight Pre-Passを押すぜ

あとどうでもいいがマルチサンプリングと言いつつ、やっている事はスーパーサンプリングなのはネーミングがおかしいと思う...



762 :デフォルトの名無しさん:2011/10/20(木) 19:23:32.92
ここでMMDMMD言ってる奴等は、
やっぱ当然、クローンというか、それっぽいソフトは作ったことあるんだよな?
モーションのフォーマットって、俺は自分の都合でべたに並べたけど
既存のフォーマットに揃えたりする?

763 :デフォルトの名無しさん:2011/10/20(木) 19:26:18.71
>>751
bullet使ってコード書いたことあるか?
多分何も知らずにそのレス書いただろw

764 :デフォルトの名無しさん:2011/10/20(木) 21:50:17.61
AAって言えばPractical Morphological Anti-Aliasingってどうなん?
論文には画質はx4~x8 MASSぐらいで10倍高速とか書いてあるけど
それが本当ならMSAA切ってポストプロセスでやったほうが高速にできるはず
ちょっと信じられない

765 :デフォルトの名無しさん:2011/10/20(木) 22:13:21.06
>>764
FXAAの倍以上時間がかかるけど、処理時間を正当化できるほど綺麗とは思えないな。
実際に自分のコードにいれて見たらわかると思うよ。某MLAAのソースはサンプリングポイントがおかしかった気がするけど。

766 :デフォルトの名無しさん:2011/10/20(木) 23:20:28.38
>>763
使って商品だしたけど?

767 :デフォルトの名無しさん:2011/10/21(金) 07:16:11.75
>>766
それを信用しろと?

768 :デフォルトの名無しさん:2011/10/21(金) 07:55:41.76
照明できない事実を出すような奴が何言っても説得力ないよね
認められたいなら実名でやればいいだけ、わざわざ匿名でする理由がない
他人を見下してバカにして優越感を得たいか
またはそれをやってそうな人や会社の価値を落としたいか
見え透いている

技術者なら技術で戦うべき
政治力や金や社会的地位や口先で勝っても
技術者に敗北感を与えることは不可能

769 :デフォルトの名無しさん:2011/10/21(金) 09:38:40.14
MMD関連の話題は、本やどこかのブログ読んだだけの知ったか厨房が
沸いてくるから禁止。
スレタイ音読して、せめてOpenGLの話にしてくれ。


770 :デフォルトの名無しさん:2011/10/21(金) 10:02:33.70
bulletなんてライブラリ落としてビルドしてチュートリアル計測すればパフォーマンス把握できる
MMDがなにやってるかはデータフォーマットみればわかる
その程度も理解できずに偉そうに語ってたの?

771 :デフォルトの名無しさん:2011/10/21(金) 11:53:15.73
文を見れば目的もわかる
他人を見下したがってるのがよくわかる
挑発して争いの種をばらまいてるのがよくわかる

そんなに他人を見下して優越感に浸って虚栄心を満たしたいなら
俺を見下せばいいよ
そうすればお前は満足なんだろ
ならそうすればいい

772 :デフォルトの名無しさん:2011/10/21(金) 12:19:54.31
みんなぐだぐだと長ったらしいな
「お前のかーちゃんでべそ」でいいでしょ
等価なんだから

773 :デフォルトの名無しさん:2011/10/21(金) 12:26:20.49
悔しいんですね

774 :デフォルトの名無しさん:2011/10/21(金) 12:47:35.34
どうでもいいからOpenGLの話しようぜ

775 :デフォルトの名無しさん:2011/10/21(金) 12:48:57.93
>>772
等価であるという命題は自明ではない
証明が必要だ

776 :デフォルトの名無しさん:2011/10/21(金) 12:55:12.22
もういい加減にしろよ

777 :デフォルトの名無しさん:2011/10/21(金) 13:10:53.31
落としどころがわかんないんだよ
簡単か難しいかは主観的、どっちが正しいかなんてのはない
事実としてレアかどうかぐらいでしか語れない
レアだから難しいんだろと言っても認めない
もう無理、こいつは常駐してずっと荒らすに決まってる
このスレはもう終わりかもな
みんな今までありがとう楽しかったよさようなら

778 :デフォルトの名無しさん:2011/10/21(金) 13:27:08.94
>>777
マジ二度と来んな

779 :デフォルトの名無しさん:2011/10/21(金) 14:35:26.86
>>777
なんでお前が終わることが
スレが終わりになるんだよこの自己中

780 :デフォルトの名無しさん:2011/10/21(金) 14:42:36.69
>>777
「とりあえずこいつが今後レスるだろう事を
先にレスって口封じ的な対策を取ってみました。」
って事ですか?
あ、もう見ていませんね。

781 :デフォルトの名無しさん:2011/10/21(金) 18:04:36.84
glTranslatedに指定する引数ってどういう単位なんでしょうか
たとえば以下のように正射影を設定して
glOrtho(0.0, 200.0, 200.0, 0.0, -1.0, 1.0);
glTranslatedでx軸に対して100移動させたいのですが
glTranslated(100.0, 0.0, 0.0)とやってもぶっ飛んでいってしまいます。
glTranslated(1.0, 0.0, 0.0)とやると画面丁度半分くらい移動するんですが


782 :デフォルトの名無しさん:2011/10/21(金) 18:58:27.90
んなわけない
どこかでなにかしてるからミニマムのコードにして動かしてみ

783 :デフォルトの名無しさん:2011/10/21(金) 20:00:28.84
モデルビュー行列とプロジェクション行列の違いをググれ

784 :デフォルトの名無しさん:2011/10/21(金) 20:33:54.82
何でこんなに荒れてるんですか?

785 :デフォルトの名無しさん:2011/10/21(金) 20:37:27.99
ああ、MMDとニコ厨は深い関係があるってことか

786 :デフォルトの名無しさん:2011/10/21(金) 21:00:26.68
>>784
「人を見下したい」
原因はこの1点に尽きる。
ここで荒れるようなコメント打つ元気があるなら、
webに有用な情報を提供する側にでもなったらどうだと思う。
見下すくらい自身があるなら、そのくらいの技術はあるだろうに

787 :781:2011/10/21(金) 21:01:26.29
LoadIdentityの後にglOrthoとglMatrixModeを再設定したら
意図した動きになりました
正直、詳細はよくわかってないんですが目の前の問題は解決しました
ありがとうございました

788 :デフォルトの名無しさん:2011/10/21(金) 21:05:43.90
>>787
glMatrixModeかPushMatrixあたりでなにか手違いがおこったんじゃないか?

789 :デフォルトの名無しさん:2011/10/21(金) 21:11:14.02
Gems方式というかある課題について解説とサンプル実装を集めて寄稿するサイトが欲しい
例えばSSAOという題で解説とサンプルをのせる。
一人でやると大変だから有志で。1つぐらいなら貢献できる分野があるだろ。
取りまとめは床井先生でお願いします

790 :デフォルトの名無しさん:2011/10/21(金) 21:19:38.94
「お題」 と 「俺の解き方」 みたいな感じか

791 :デフォルトの名無しさん:2011/10/21(金) 23:36:55.88
よっこらとっこいしょ

792 :デフォルトの名無しさん:2011/10/22(土) 02:43:45.99
いいとこいけばいいのに

793 :デフォルトの名無しさん:2011/10/22(土) 04:10:16.92
>787
元コードは
glOrtho(0.0, 200.0, 200.0, 0.0, -1.0, 1.0);
glLoadIdentity();
glTranslated(1.0, 0.0, 0.0); // ---A

みたいな流れになっていたと見た。これだとAに100とか指定するとぶっとんじゃう。


794 :781:2011/10/22(土) 10:56:03.58
>>793
まさにそんな感じでした
というかglOrthoは1度だけ設定すればいいと思ってました

795 :デフォルトの名無しさん:2011/10/22(土) 20:30:40.04
えっ違うの?!

796 :デフォルトの名無しさん:2011/10/22(土) 20:39:45.11
話違うかも知れんが、glOrtho とかって、
射影方法を OpenGL に「設定する」関数だと勘違いする人いるね(俺も最初してた)

本当は、単に現在の変換行列に glOrtho なんかで指定した行列をかけ算するだけなのに

797 :デフォルトの名無しさん:2011/10/22(土) 20:48:12.69
そこらへんちょっと特徴あるからなGLは。D3Dから入ると最初は結構戸惑うよね。
一応プロジェクションに一回設定して以後触らなければロストするまではそのまま使えるな。

798 :デフォルトの名無しさん:2011/10/22(土) 21:23:04.18
ES2.0だとその辺なんにもないw

799 :デフォルトの名無しさん:2011/10/22(土) 22:32:10.25
俺はchronosのPVRTライブラリから拝借してるよ。

800 :デフォルトの名無しさん:2011/10/22(土) 22:37:47.30
クロノスじゃなかった
Imaginationだった

801 :デフォルトの名無しさん:2011/10/22(土) 23:55:01.58
GLM使えよ常識的に考えて

802 :デフォルトの名無しさん:2011/10/23(日) 00:25:14.78
今GLMダウンしたけど使い方がわからない。
hppって何?

803 :デフォルトの名無しさん:2011/10/23(日) 00:29:18.22
ヘッダーだよ
中身は全部ヘッダーに書いてあるから別途ライブラリをリンクする必要はない
ヘッダーをコピって終わり

804 :デフォルトの名無しさん:2011/10/23(日) 01:15:20.59
なるほど!^^

805 :デフォルトの名無しさん:2011/10/24(月) 00:20:36.78
glewについての話題もここでいいのかな?

glewのコードを眺めてみたのだが、どうなってるの、これ?

コードは暗にOpenGLの上位互換を前提にしてある用に見えるのだが、ダメじゃね?

例えば、glBeginとかは新しいバージョンでは使えなくなってるけど、
なんでバージョン1.1のAPIだけプロとサイプ宣言するだけで外から関数アドレスを取得しないの?

できるだけ多くのバージョンに対応しようとしたら、
glStringでバージョンを取得して分岐とかしなけれあばならないわけか?え?


806 :デフォルトの名無しさん:2011/10/24(月) 11:06:42.72
32bitのXPでノートPCなんだけどQuadroFX570M使っててドライバもNVIDIAで落とせる最新のなんだが
インストールちゃんとしてもOpenGLが無い的なこと言われるんだがどうすれば・・・

807 :デフォルトの名無しさん:2011/10/25(火) 01:57:16.99
並行移動って単にベクトル足し算すればいいんでしょ。
なんでtranslate行列とかあんの?

808 :デフォルトの名無しさん:2011/10/25(火) 02:08:33.56
3D処理は行列演算だらけだから処理まとめちまうわけよ

809 :デフォルトの名無しさん:2011/10/25(火) 03:11:11.38
単純なデータなら別にいいが、複雑なモデルや変換だとベクトル足していくだけじゃダメだからな。
まあ実際やる事は結局足し引きだが、そういう場合に毎回ベクトル持ち運ぶのは面倒だろ?
だから行列でやんの。

あとtranslate行列ってのはあくまで概念的なもので
ベクトルから毎回translate行列をわざわざ作ってそれを改めて使うってことはあまりしないぞ。

810 :デフォルトの名無しさん:2011/10/25(火) 10:49:46.89
最近ライトを10000個描画するにはどうすればいいだろうと考えていたが、
Deferred系レンダリングで画面全体を覆う板ポリゴンの代わりに
ライトの影響範囲と同じ形状の物体(点光源なら球)をレンダリングすると
クリッピングやZテストが効いて無駄なライトを高速に除外できることに気がついた。
ライト10000個というと随分多い気がするが球を10000個なら屁でもない。
有効かどうかは不明だけどインスタンス・レンダリングを使ってもいい。
......という事を考えたのだがどうだろう?
もう1つの課題はシャドーマップをいかに高速に作るか。できればソフトシャドー処理付きで。
影がつくライトは最大4個とかでいいが、それでもやはり重い処理であることに変わりはない。




811 :デフォルトの名無しさん:2011/10/25(火) 12:01:19.97
>>810
それだとライトが重なるフラグメントで何度もGバッファの読み出しとライトの計算結果の書き出しが発生しない?

OpenCL使ってLighting passを実装したらGバッファへのアクセスも一度ですんで、何個ライトがあってもレンダーターゲットへのメモリアクセスが一度で済んで良かったよ、一万は試して無いけど、千くらいのライトなら余裕で扱える。



812 :810:2011/10/25(火) 13:07:47.22
うん、超読みまくる
1フラグメントを照らすライトの数だけ(別のシェーダーが)G-Bufferを読みまくるのでそれが明らかな欠点
利点は個数無制限でライト毎に個別のシェーダーを実行できる事かな?
TrebilcoのLight Indexed Deferred Shadingも考えたけど
事前にライトのインデックスを作って帯域の節約を頑張るより、
全部素直に実行してしまったほうがシンプルでフレキシブルかなと思った。

OpenCL使うのはちょっと...


813 :デフォルトの名無しさん:2011/10/25(火) 21:00:17.23
生活してたら光源10000個もないよな
花火大会の会場で魔法で戦争でもしたらそのくらいかな

814 :デフォルトの名無しさん:2011/10/25(火) 22:54:20.04
光源10000個ってさ、電球のような光源じゃなくて、
GIとか火花とか火線とかをシミュレートするためのもんじゃないの?

いや、全く知らんが

815 :デフォルトの名無しさん:2011/10/26(水) 20:24:36.58
Deferred Shading(DS)とLight Pre-Pass(LPP)を実装して比べた人の話を調べると
概ね(期待に反して)Light Pre-Passの方が遅いことが多いな。例えばここ。
http://www.gamedev.net/topic/585647-deferred-shading-vs-pre-pass-lighting/
頂点数が多くなるとLPPが遅くなるとかCPUがボトルネックとかシーンジオメトリーを2回送るデメリットが数字に出ているようだ。
意外とDSのG-Bufferの転送は大丈夫らしい。
いろいろ書かれているけどどれも実装次第のような気がする^^;
まあCPU側のシーントラバーサルのコストはどうしよもない。
最新のGPUだとどうなるかも興味あるし、やはりこれは両方実装してみないとわからん






816 :デフォルトの名無しさん:2011/10/26(水) 22:01:47.55
シーントラバース、バッチといえば、OpenGLでDX11でいうところのdeferred contextみたいなスレッド並列でコマンドバッファを作成する拡張命令ってあります?

817 :デフォルトの名無しさん:2011/10/27(木) 15:17:43.18
>>752 FXAA performance tests
http://www.geeks3d.com/20110405/fxaa-fast-approximate-anti-aliasing-demo-glsl-opengl-test-radeon-geforce/4/
これを見るとローエンド(HD2400)でFXAAをかけると16.0msと悲惨な事になるけど、
ハイエンド(HD6970)だと0.11msと爆速でできるね。
スクリーン全体をピクセル単位で処理するから”え〜”と思っていたけど
MSAAがロー/ハイ関係なく数msだとすれば、とっくの昔にポスト処理系のAAの方が速くなっている。
2012年のレンダリングシステムを考えるとFXAA(or MLAA,DLAA,etc.)で決まりだろう。
(MSAAが使えたとしてもFXAAの方がいい)

って実はFXAA全然知らないんだけど。
この辺誰かまとめて分かりやすく解説してアップしてくれると激しく感謝して喜ぶんだけど誰かやらないですかね。
ゲーム会社の人でもこの辺の最新技術をキャッチアップしてる所はそんなに多くないだろう。




818 :デフォルトの名無しさん:2011/10/27(木) 17:53:28.51
立方体回転させてライトの光が少ししか当たってない下面を上向くように回したら、
下面が暗いままでした。
現実世界と同じように暗い部分を回転させて光源に向ければ明るくなるようなライトを期待
してたんですが、ライトの概念勘違いしてるよね?

819 :デフォルトの名無しさん:2011/10/27(木) 18:55:34.71
>>818
それ、プログラム自体がおかしいだろ

820 :デフォルトの名無しさん:2011/10/27(木) 19:20:43.70
>>818
どのAPIを使っているのかわからないので具体的な指摘が出来ないが、ジオメトリの座標系とライトの座標系の不一致だと思われる。

821 :デフォルトの名無しさん:2011/10/27(木) 23:41:59.14
ES2.0なんですが、プログラム間違ってるということで座標設定辺りを中心にもう一度見直してみます。


822 :デフォルトの名無しさん:2011/10/28(金) 00:06:30.74
>>818
立方体と一緒に光源も回転させてる

823 :デフォルトの名無しさん:2011/10/28(金) 02:28:40.96
あの辺のOpenGLのライトの仕様は狂ってるよな
初心者頃殺しだわ

824 :デフォルトの名無しさん:2011/10/28(金) 04:20:19.39
ライトも行列スタックの影響を受けるんかもう忘れちまったわ

825 :デフォルトの名無しさん:2011/10/28(金) 12:58:41.22
ちょいと質問。
今、2Dの画像を表示するのにglPixelZoom()してglDrawPixels()しているんだが、
これだと画素がそのまま拡大されてしまうからせめてリニア補間したい。
となると、避けて通ってきたテクスチャを使う以外に妥当な手段はないのかな?
目的が目的なので、画像サイズは120x12とかで表示エリアは800x200なんだ。
避けて通ってきたからテクスチャでも実現可能なのか、どうすりゃいいのか誰かヒントを頼む。

826 :デフォルトの名無しさん:2011/10/28(金) 13:05:37.06
>>825
テクスチャ以外でできるかどうかは知らんけど、少なくともテクスチャならできる。
注意するのは、120x12を拡大するなら、128x16のテクスチャを作成して、
そのうち左下隅(まぁ別にどこでもいいけど)を使うようにすることくらいかな。
120x12のテクスチャだとダメな場合があるので。

テクスチャ最初はメンドイし避ける気持ちも分からないでもないけど、一旦使えるように
なれば、すごい自由に描画できるようになるから、ちゃんとやった方がいいよ。

827 :825:2011/10/28(金) 13:29:18.90
>>826
レスTHX!
やっぱりテクスチャでやるか。
仕方ないから「回せますよ」って釣り言葉で工数拾ってこよう。
えーと、サイズは2の冪じゃないとダメかもしれないってことね。
併せて了解。

828 :デフォルトの名無しさん:2011/10/28(金) 13:36:41.27
http://www.amazon.co.jp/dp/4777513327/

テクスチャー以外でやろうと思う方が間違えている


829 :825:2011/10/28(金) 13:44:52.82
>>828
お、>1にある本だね。流石に買おうかな。
本を買わずにOpenGLやってるのが間違いだとは自分でも思うw
# なんせろくに本などない時代からエンジニアやってるロートルだからさ。

830 :デフォルトの名無しさん:2011/10/28(金) 14:34:21.80
POP PUSHシステムとDirectXのSetTransformシステムどっちが使いやすいの?

831 :825:2011/10/28(金) 17:05:20.54
書き忘れたけど、>828もTHX!

ってことで、やっつけでこんな感じに。
GL_CLAMPを指定しないと、端っこが影響受けてしまうのに気付くまでに二時間悩んだw
--
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, height, depth, 0, GL_RGBA, GL_UNSIGNED_BYTE, raster);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glTexCoord2d(0, 0); glVertex2d(-1, -1);
glTexCoord2d(0, 1); glVertex2d(-1, 1);
glTexCoord2d(1, 1); glVertex2d(1, 1);
glTexCoord2d(1, 0); glVertex2d(1, -1);
glEnd();
glDisable(GL_TEXTURE_2D);
--
うーん、今のところ遅くないから目を瞑ったけど、
再描画のときくらいテクスチャ割り当て処理を飛ばすようにしないとなぁ。

で、ついでにもう一つ質問。
テクスチャを複数(割り当て直さずに)使い分けるにはテクスチャオブジェクトを使えってこと?
まぁいいか、本を買おう。

832 :デフォルトの名無しさん:2011/10/28(金) 18:33:00.45
120x12程度なら、毎フレ転送しても影響無いかもw

>テクスチャを複数(割り当て直さずに)使い分けるにはテクスチャオブジェクトを使えってこと?
合ってます。

833 :デフォルトの名無しさん:2011/10/28(金) 20:36:30.43
テクスチャって256x256に32x32を64個詰めて切り出すみたいにして貼ってる?
それとも32x32のテクスチャを64個作ってidで管理してる?
どっちがいいのかな
テクスチャリソースの上限とかあります?


834 :デフォルトの名無しさん:2011/10/28(金) 22:02:26.30
そりゃ作りたいプログラムと動かすハードによるとしか
普通は32x32を64個が扱い易いけど


835 :デフォルトの名無しさん:2011/10/28(金) 22:14:26.57
>>817
FXAAの日本語の説明だと、Cedilのcedec2011タグの中に入っているNVIDIAの解説がわかりやすいかも。

>>833
ターゲットが携帯向けGPUとかなら出来るだけパックしたほうが良いかも。

836 :デフォルトの名無しさん:2011/10/29(土) 00:29:01.39
>>834-835
どもです
2Dのときは一枚の画像ファイルにマップチップ詰め込んでやってたんだけど
上ででたGL_CLAMPとかのからみもあって3Dではやっぱりばらばらの方がいいのかなかな

837 :デフォルトの名無しさん:2011/10/29(土) 07:30:05.94
ビデオカードにもよるが、大抵のビデオカードは256×256か512×512の画像サイズに
最適化されてて速い
32×32とかに最適化されてるのはほとんどない
速さを求めるなら256×256か512×512にまとめて使う部分を切り出すのが良い

838 :デフォルトの名無しさん:2011/10/29(土) 08:44:12.12
>>836
テクセルとピクセルをドットバイドットで使うなら
→マップチップ詰め込みが良い

テクセルとピクセルをドットバイドットで使わないなら
→チップの端の問題は、GL_CLAMPにしても完全に解決するわけじゃない(BORDERまで使えば別だけど)ので、
どうせ問題あるならマップチップ詰め込んだ方が性能的にオイシイと思いますよ。
チップは32x32で作るけどその内側30x30を使うようにする、とかの妥協はできないんでしょうか。

839 :デフォルトの名無しさん:2011/10/29(土) 10:13:35.83
>>835
資料
PR0022-NVIDIA-DirectX.pdf
資料は期間限定でCEDEC2011参加者のみに公開しています。それ以外の会員の方には年明け予定です。いま暫くおまちください。

だからCEDECは嫌いなんだヽ(`Д´)ノ

840 :デフォルトの名無しさん:2011/10/29(土) 10:28:35.70
>>839
昔は一般に公開すらされなかったんだから
甘えるな。

841 :デフォルトの名無しさん:2011/10/29(土) 11:26:07.02
年明けまで待てるかボケ
ググったらソース(FXAA3_8.h)と超短い解説はゲットしたのでそれで勉強するわ
CEDEC以外から良質の資料が今すぐ無料でダウンロードできるのに
アイツらなんで金とって不便なことやってんの? 馬鹿なの?

で、のっけからよくわかんないんだけどRGBLのL(luma)というのはluminanceにガンマ補正をかけたもの?
つまり元データがガンマ補正してない普通のRGB8だった場合Lは
a = sqrt(0.299r + 0.587g + 0.114b)
でいいの? そして使う時に FXAA_LINEAR = 0 を指定すればいい? 知っている人教えて





842 :デフォルトの名無しさん:2011/10/29(土) 12:53:06.35
>>841
それでいいよ。
英語でいいならNVIDIA SDK11のFXAA white paperがわかりやすいと思う。

というか某tuedaさんはOpenGL以外の話をするなら別にスレたてて話しした方が良いのでは?

843 :デフォルトの名無しさん:2011/10/29(土) 13:08:17.33
訂正、sqrtはなくていい。


844 :デフォルトの名無しさん:2011/10/29(土) 13:57:32.49
入力はRGBは線形(FXAA_LINEAR=1)でLのみ非線形(ガンマ補正済み)だな
ざっと見る限り3x3の輝度(luma)を見ながらエッジの方向を決めて
テクセルフェッチを繰り返してエッジの長さを決める
いま注目しているピクセルが長いエッジのどの辺にいるか求めつつ(dstN/spanLength),
-0.5〜+0.5のオフセット(subPixelOffset)を計算して
(バイリニア補正の)フェッチしなおして終わり。

え、こんな簡単な処理でいいのって感じだな
要はエッジ方向と垂直に少しずらして取りなしているだけ
エッジの端点の形を考慮する必要もない
そもそもこれでポリゴンの外側のみぼかす事ができるのか不思議だ
使うだけならコピってくれば終わりだけど。


845 :デフォルトの名無しさん:2011/10/29(土) 14:00:39.67
>>842
あまり細分化してもしょうがないんじゃね?
ゲ製作技術に3Dゲームグラフィックス・プログラミングを立ててもいいけど
どうせOpenGLかDirectXを使うんだから同じ事だろう

846 :デフォルトの名無しさん:2011/10/30(日) 00:57:42.65
ゲ製にもOpenGLスレなかったけ?


847 :デフォルトの名無しさん:2011/10/30(日) 01:53:21.18
あるけどあまり機能していないな。

848 :デフォルトの名無しさん:2011/10/30(日) 11:13:48.09
物体を指定位置に表示して以後その場で回転させる動作を、pushとpopを使って処理したいのですが。
draw {

glMatrixMode(GL_MODELVIEW) // 行列をモデルビューに指定

if ( 最初の1回目 ) {
glTranslatef // 指定位置にセット
}

  glRotatef // 回転
… // 描画命令
}

今まではこのように記述していました。
これをpush、popを使用した場合、
draw {

glMatrixMode(GL_MODELVIEW) // 行列をモデルビューに指定
glRotatef // 回転

glPushMatrix // 現在の行列を保存
  glTranslatef // 指定位置にセット

  … // 描画命令
glPopMatrix // 保存した行列に戻す

}

と記述したのですが、正常にその場で回転してくれません。
回転処理は累積させたいので保存させ、指定位置のセットはその瞬間だけ行いたいので描画後保存した行列に戻
せばよいと思ったのですが、考え方間違えていますでしょうか?

849 :デフォルトの名無しさん:2011/10/30(日) 11:43:31.19
何がやりたいのかサッパリわからん
1描画ごとにMODELVIEW行列をクリアしてるなら(普通はしてるだろう)、
1回目は
 glTranslate();
のみで2回目以降は angle += 10 して
 glTranslate();
 glRotate();
というだけだろう。



850 :デフォルトの名無しさん:2011/10/30(日) 11:46:13.60
もしかして描画(フレーム)をまたいで行列を再利用しようとしてないか?
それやると死ぬ
MODELVIEW行列に限らずOpenGLステートは基本的に
1描画(フレーム)ごとに0から全部セットし直すものだ


851 :デフォルトの名無しさん:2011/10/30(日) 11:50:55.23
>>848
多分、考え方を間違えてる。
「物体を指定位置に表示して以後その場で回転させる動作」をさせるだけなら、pushとpopは要らないよ。
行列スタックの概念というか、使い方を勘違いしてるんじゃないかな。

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(x, y, z); // x,y,z: 物体の位置
glRotatef(angle, rx, ry, rz); // angle,rx,ry,rz: 物体の回転
物体を表示();

でおk。
変数x,y,zを変化させれば物体は移動するし、変化させなければ物体は移動しない。
変数angleを変化させれば物体は回転するし、変化させなければ物体は回転しない。


852 :デフォルトの名無しさん:2011/10/30(日) 12:07:14.11
なんでOpenGLってpush popなの?
普通にテンポラリー変数に保存しておけばいいだけじゃないの?
何か使い道あるの?

853 :デフォルトの名無しさん:2011/10/30(日) 12:17:45.61
>>852
使い道どころか、テンポラリ変数自分で用意してだなんてしんどすぎる。
例えば 人体の間接や木の枝とか、再帰的なノード構成になってる内容を計算しながら描画するとき、

深度1: ノード0のローカル空間を基準に子が回転している
 深度2: ノード1のローカル空間を基準に子が回転している
  :

みたいな状態があって、それをテンポラリで自前でスタック用意してやるんかい
てか、普通にスタック push/pop の方が全然便利で楽。使い道どころか必須



854 :デフォルトの名無しさん:2011/10/30(日) 12:23:33.35
>>852
OpenGLはもともとクライアントサーバモデルだから、push/popが無いと
サーバステートの読み出しが頻発して困っちゃうんじゃないかな。


855 :デフォルトの名無しさん:2011/10/30(日) 12:34:22.58
あと追記しておくと、OpenGLで行列セットしてくってのは、
「その空間上の頂点位置を変換する為の行列」 = 空間のその時の位置変換行列 になる訳だから、
いまどういう状態になっているか、(当たり前だが)どのタイミングでどうなっていて欲しいかを把握してないといけない

例)
関数 F()
 *) ここまで回転やら移動やらさせました。この空間に基準に描画したり、あと個別に移動回転拡縮させたい
 for(…) {
  ・なので一旦ここで push
    A) 描画したり
    B) 現時点での変換行列をベースに、さらに個別の回転や移動 ※再帰で F に行くケースもこれと同じ
  ・個別の行列変更が終わったので pop して * の時の行列状態に戻す
 }

で、push/pop のFILOスタックは便利な訳です

856 :デフォルトの名無しさん:2011/10/30(日) 13:03:38.36
それ別に一時変数でget/setしても変わらないよね
もっともpush/popで良いと思うけど

857 :デフォルトの名無しさん:2011/10/30(日) 13:11:59.40
>>856
再帰するような場合、結局自前のテンポラリもスタックや他の構造に変えなきゃならなくなるから、
だったら単純に用意されてるスタック使う方がいい
てか、こだわる必要がある話じゃないと思うぜ

858 :デフォルトの名無しさん:2011/10/30(日) 13:19:16.54
>>857
この件に限らないけど、経験がないと理解できない考え方とかあるから、
あんまり難しい話はどこかの解説サイトのリンクでも貼った方がいいよ
絶対に話長くなるから

859 :デフォルトの名無しさん:2011/10/30(日) 13:20:09.10
>>849
>>850
まさにその通りで行列を初期化せず、使い続けるものと思い込んでました。
glRotateで回転させるには初期化せずに行列を更新していくものと勘違いしてましたが、
確かにangleを増減させれば済む話ですね。

>>851
回転させたくない別の物体まで回転していたのでおそらくpushとpopを使わなければならないと思い、
試しに1つの物体でpushとpopを使ってみようとコードを書き、今回に至りました。
指摘された部分を直してもう一度考えてみます。

致命的な勘違いが分かって良かった…
ありがとうございます。

860 :デフォルトの名無しさん:2011/10/30(日) 14:13:36.49
push/popは無意味に使ってる解説サイトとかあるから誤解を生みやすいな。

861 :デフォルトの名無しさん:2011/10/30(日) 15:24:32.19
解説サイトを見て投影設定,カメラの位置,光源の位置を決めて立体物を描画したのですが,
これらをどのように扱うものなのかイマイチ理解できていません。

現在:
1回だけの処理(俗に言うInit関数)
   Lightの位置,パラメータを決めて有効化(MODELVIEWワールド?)
リサイズ関数(glutReshapeFunc(resize))
   GL_PROJECTION Mode → glLoadIdentity → 投影設定(glOrtho/glPersp.) → gluLookAt設定 →GL_MODELVIEWに戻す
Display関数
   push/pop なり rotate/translateなり描画する。

この設定順と設定場所は一般的な使われ方として正しいですか?

カメラをXZ平面と平行に回転させるプログラムを作ったのですが,キーボードコールバック関数内でresize(width, height)関数を呼び出して
カメラの位置を再設定するというおかしな処理をすることになってしまいました(gluLookAtを書き換えるだけだと上手くいかない。)

862 :デフォルトの名無しさん:2011/10/30(日) 15:37:29.55
>>861
キーボードコールバック関数の中でGL使っちゃだめです。
reshapeコールバックの中でglViewport()呼んでるサンプルとか多いけど、本当はあれも良くないはず。
基本的には、displayコールバックの中以外では、GL関数は一切呼ばないようにした方が良いですよ。

863 :デフォルトの名無しさん:2011/10/30(日) 15:44:21.27
>>862
なんで?
もっとくやしく

864 :861:2011/10/30(日) 16:04:23.92
>>862
それはつまりglutPostRedisplay()で全てを更新できるような設計にすべきということでしょうか?

865 :デフォルトの名無しさん:2011/10/30(日) 16:18:10.11
>>864
「glutPostRedisplay()で全てを更新できるような設計」というのがちょっと意味分からないですけど、
つまり、

・display以外の全てのコールバックは、単に状態(描画領域の大きさ、カメラの位置、etc.)を更新する。
 ここでいう状態の更新というのはglLightやglOrthoを呼ぶということではなく、アプリが持つ
 ライト位置や視野などの情報(変数)を更新するいう意味。
・displayコールバックでは、上の情報を元に描画する。

てことです。

866 :デフォルトの名無しさん:2011/10/30(日) 16:23:28.51
なんで display コールバック以外で glOrtho なんかを読んじゃダメなの?
メモリリークするとか?

867 :デフォルトの名無しさん:2011/10/30(日) 16:28:46.81
>>866
実装上の理由:
displayコールバックが呼ばれる時以外は、GLのコンテキストがきちんと設定されていない場合がある。

設計上の理由:
「状態の更新」と「描画」をきちんと分離しておくと、プログラムの再利用がしやすくなる。

後者に関しては必須ではないんですけどね。
GLUT以外に移植したり、ステレオ描画とかし始めたりすると、多分有難みが分かってくるんじゃないかと・・・。

868 :デフォルトの名無しさん:2011/10/30(日) 16:36:45.90
>>865
言葉足らずですみません。おそらく同じことを考えてました。

「状態の更新」を行ったあとにglutPostRedisplay()でdisplayコールバック関数を呼び出し,
カメラ,光源などの設定を全て再設定する設計,ということでした。(ちょっと無駄が多い気もしますが)

869 :デフォルトの名無しさん:2011/10/30(日) 16:42:58.69
>>867
なるほどね

それを考えると、ほとんどの入門サイトや入門書はやばいな

870 :デフォルトの名無しさん:2011/10/30(日) 16:46:33.51
>>868
ああ、それじゃ、その認識で合ってます。ハイ
「カメラ,光源などの設定を全て再設定する」のが普通だし、無駄とはいっても実行時間が
増えるわけでもない(誤差みたいなもん・・・誤差にすらならない程度)ので、毎フレームやるよろし。
毎フレームやらないのはテクスチャ転送くらいじゃないですかね。

871 :デフォルトの名無しさん:2011/10/30(日) 16:57:14.60
>>870
有用な情報ありがとうございました

872 :デフォルトの名無しさん:2011/10/30(日) 17:36:08.83
>>867
displayコールバックが呼ばれる時以外でGLのコンテキストがきちんと設定されていない場合があるって
glutMainLoopが走ってる段階でGLのコンテキストが無効になってる場合ってどんな時?


873 :デフォルトの名無しさん:2011/10/31(月) 00:43:37.06
OpenGLではなくGLSLスレを立ててもいいかもしれないな


874 :デフォルトの名無しさん:2011/10/31(月) 23:26:33.28
ここで質問すべきことかも自信ないのですが、
障害物の向こうに隠れても見えるようなオブジェクトを描画するには
どう実装するのが良いのでしょうか?

ゲームを作ってるのですが、キャラクターのHPバーがそのキャラの頭上に浮いてて、
HPバーだけは壁みたいな障害物の向こうからも見えるイメージです

こういう方法に名前が付いていれば、名前だけでも教えていただけると嬉しいです

875 :デフォルトの名無しさん:2011/10/31(月) 23:32:20.83
>>874
デプステストをalwaysで描くのはダメ?

隠れた所だけ別のマテリアルで書きたいなら、普通にデプステストありで書いた後で、デプステストの方向を反対にしてマテリアル変更してもう一度描くとか。

876 :デフォルトの名無しさん:2011/10/31(月) 23:38:18.30
たしか特許取られてる手法(表現方法?)もあるから気をつけろよ

877 :デフォルトの名無しさん:2011/10/31(月) 23:50:44.20
コナミだったかな。

878 :デフォルトの名無しさん:2011/10/31(月) 23:57:18.39
>>874
方法も何も、単に
glDisable(GL_DEPTH_TEST);
描画
glEnable(GL_DEPTH_TEST);

で終わりでは


879 :デフォルトの名無しさん:2011/10/31(月) 23:59:09.87
ちなみに >>878 はただの上書きだけど、HPバーがどうのって話であれば
まさにそれだけの事かなと。 別に難しく考える必要ないっていうか、
普段コード書いてる人なら誰でも知ってる普通の話

880 :874:2011/11/01(火) 01:12:28.23
極々初歩的な質問に付き合ってくださって有難うございました...
>>878の方法でできました
お恥ずかしい限りです...

881 :デフォルトの名無しさん:2011/11/01(火) 01:17:24.62
いいってことよ。

882 :デフォルトの名無しさん:2011/11/01(火) 03:49:58.75
話の流れで出てた特許に関する部分が気になるな。
どっか3D表現に関する特許絡みをまとめた所って無いのかな。

しかしソースとかならともかく表現手法とかに特許取られると
クリエイター側にとっては本当につらいね。

883 :デフォルトの名無しさん:2011/11/01(火) 09:01:15.02
クリエーターて

884 :デフォルトの名無しさん:2011/11/01(火) 10:04:01.22
いやぁ、表現部分に関することだし
プログラマーって書くのはちょっと憚られたというかなんというか。

885 :デフォルトの名無しさん:2011/11/01(火) 11:07:10.33
かといってモバ○ーみたいなクソ会社がすぐ他社のコピーゲームを作るのも問題だからな

886 :デフォルトの名無しさん:2011/11/01(火) 15:19:21.97
特定の表現を実現するためのアルゴリズムの特許があったとして、
それとクリエイターがどう関係するのか分からん
もしかして、クリエイターがロジックも組むのが普通なのか?


887 :デフォルトの名無しさん:2011/11/01(火) 15:37:06.53
糞レス続けるな

888 :デフォルトの名無しさん:2011/11/01(火) 16:03:22.26
>>878
うぁはは、入門サイトなどではしばしば「壁の少し手前」を計算しているけど、これで充分ジャンw

889 :デフォルトの名無しさん:2011/11/01(火) 22:03:18.08
お前バカ?

890 :デフォルトの名無しさん:2011/11/01(火) 23:01:03.51
部屋を作りたい場合は
glfrustumのfarを部屋の奥行きの長さにして、
床、壁、天井を長方形で指定位置に描画してテクスチャ貼り付けって感じだよね?

891 :デフォルトの名無しさん:2011/11/02(水) 08:51:29.67
それでいいんじゃない

892 :デフォルトの名無しさん:2011/11/02(水) 16:48:25.03
Pointsの形を四角形から丸に変える方法はないですか?

893 :デフォルトの名無しさん:2011/11/02(水) 17:07:03.53
テクスチャー貼れ
それかシェーダーでがんばれ

894 :デフォルトの名無しさん:2011/11/02(水) 18:04:42.30
>>892
glEnable(GL_POINT_SMOOTH);

・・・ま、使えない場合もあるけど。

895 :デフォルトの名無しさん:2011/11/02(水) 21:05:24.21
>>894
できました。
ありがとうございました

896 :デフォルトの名無しさん:2011/11/02(水) 23:14:31.74
>>895
すこぶる重いから気をつけてな。

897 :デフォルトの名無しさん:2011/11/03(木) 10:00:30.33
立方体内の後方にカメラを置いて描画の確認をしたのですが、1辺10.0fの場合と1辺100.0fの場合で
立方体が同じ大きさになっているかのように見えてしまいます。

http://www.dotup.org/uploda/www.dotup.org2215133.jpg

1辺を10倍にすれば立方体内が大きく見えると思ったのですが…。
glFrustumを変更すれば当然見え方が変わりますが、
人の視界にあたるもので滅多なことでは値を変更しないと思っています。
行列の変換を間違えているのでしょうか?


898 :デフォルトの名無しさん:2011/11/03(木) 10:03:33.70
書き忘れてしまいました。
100.0fの立方体の方がほんの少し広いように見えていますが、
これはカメラの位置が10.0fのものより若干後ろにあるためです。

899 :デフォルトの名無しさん:2011/11/03(木) 10:09:08.57
>>897
どうやってんのか知らないけど、どっか間違ってるんだろ
10.0fと100.fを同時にワイヤーフレームで描画するようにしてみたらデバッグしやすいんじゃね

900 :デフォルトの名無しさん:2011/11/03(木) 10:22:24.28
>>897
いや、見え方は変わらないよ
ちゃんとした状況がわからないけど、カメラが後ろの壁にぺったり張り付いてるならそれはカメラに取って相似な状況だからね

901 :デフォルトの名無しさん:2011/11/03(木) 10:31:59.15
果たしてちゃんと、カメラ位置をグローバル空間上固定した状態で、
頂点位置を拡大縮小してるんだろうか。

俺も立方体の壁にカメラがぴったり張り付いた状態で、立方体の拡大縮小してるんじゃないかと予想ww
=拡大に合わせてカメラ位置も後退しているから、同じ格好に見える、みたいな


902 :デフォルトの名無しさん:2011/11/03(木) 10:42:30.36
カメラ位置固定なら部屋全体を10倍しようが100倍しようが見える風景はまったく同じだろ

903 :デフォルトの名無しさん:2011/11/03(木) 10:57:26.25
>>902
お前は何を言ってるんだ

904 :デフォルトの名無しさん:2011/11/03(木) 11:26:44.06
900,902を支持

905 :デフォルトの名無しさん:2011/11/03(木) 11:48:40.32
これは一辺10.0fの時にカメラ位置が10.0fにある場合と100.0fの時にカメラ位置が100.0fにある場合ってことか?
それともカメラの位置は両方の場合で同じ位置に固定?

前者ならほとんど見え方が変わらない可能性はあるな。

906 :デフォルトの名無しさん:2011/11/03(木) 12:40:59.67
正直、情報が足りない

907 :デフォルトの名無しさん:2011/11/03(木) 12:43:18.96
>>904
自分の部屋の真ん中にカメラを設置して、部屋が10倍、100倍に広がった状況想像してみろ
その意味で >>900 はその通りだが、>>902 は違うだろw

908 :904:2011/11/03(木) 13:09:21.55
>>907
900と902の言ってるコトは、本質的には同じでしょ。
「カメラ位置固定なら見える風景は同じ」ってことは逆に、カメラを同じ量(たとえば右に5.0)動かして
カメラから見て相似であるという条件を崩せば違いが分かる、って事なんだから。
902がそういう意図で書いたのかどうかは知らないけど、自分はそう読み取ったので。

909 :デフォルトの名無しさん:2011/11/03(木) 13:34:40.11
ぶっちゃけくだらなすぎてどうでもいいな。レベル低すぎだろ


910 :デフォルトの名無しさん:2011/11/03(木) 13:36:24.40
どうでもいいと言いつつレスとはこれいかに

911 :デフォルトの名無しさん:2011/11/03(木) 13:41:56.36
>>904
うむ。
ほかのやつは頭大丈夫か?

912 :デフォルトの名無しさん:2011/11/03(木) 13:57:19.52
>>911 おいおい、カメラの壁に対しての相対位置が同じならそうだが、カメラ位置固定で壁だけスケーリングしたら違うぞ。頭大丈夫か?

913 :デフォルトの名無しさん:2011/11/03(木) 14:08:05.16
>>908
お前、プログラマの端くれだったら、「どこに固定」 と書かれてもいないレスに対して
本質的には同じでしょ、とか言うなよw
壁に対して相対的に距離が同じってのは、少なくともカメラの座標値的に移動してる訳だから、
むしろ固定じゃなくて移動してるだろww

914 :デフォルトの名無しさん:2011/11/03(木) 14:09:32.72
なので正解は、>>906 だと思う
他のレスは全部、想像と思い込み。お前らプログラマ失格

915 :デフォルトの名無しさん:2011/11/03(木) 14:14:35.63
>>897
カメラ位置(あるいはその近く)を中心に部屋を拡大した場合、
同じ大きさになっているかのように見えるのは正しいです。
カメラを移動してみれば、違いが分かると思いますよ。
(一辺100.0fの方が、相対的に移動量が少なく見えるはず)

人間やカメラの場合、部屋が大きくなればそれと分かるのは、視差(カメラの移動に相当)や
ピントがあるからです。OpenGLにはそういうのが無いので。
簡単に言うと、10倍大きい物が10倍遠くにあっても、1/10の大きさに見えるので
違いが分からない、みたいな。

916 :デフォルトの名無しさん:2011/11/03(木) 15:34:39.06
あなたは今ある部屋を眺めています
あなたは今一辺1/10のある部屋の模型を見ています
後者は目の前にあるのに元の部屋より大きく見えませんどうすればいいですか

917 :デフォルトの名無しさん:2011/11/03(木) 15:58:54.38
月と太陽がほぼおなじ大きさに見えるとかそういう話か
別のカメラ位置から見てみるとかなんで自分でやってみないのかね

918 :897:2011/11/03(木) 16:15:34.23
すみません…
両方の立方体の中心は0,0,0で、10.0fの方のカメラ位置が(0,0,4)、
100.0fの方が(0,0,49)だったかな。
100.0fの方は移動量は少なく見えますね。

>>915にある後半の説明で多少理解しましたが、
カメラについて知識不足なんで付いたレス見ながら調べてきます。
ありがとうございました。

919 :デフォルトの名無しさん:2011/11/04(金) 11:54:28.12
>>915
月面で撮られた写真が偽物()とか言われてるのもそのせいだな

920 :デフォルトの名無しさん:2011/11/04(金) 21:48:26.32
これからの3DAPIっていったらopenglかねえ・・
当面はスマホが主流そうだし


921 :デフォルトの名無しさん:2011/11/05(土) 01:15:17.44
打算で取り組むようなもんでもないと思うけど。

922 :デフォルトの名無しさん:2011/11/05(土) 14:59:42.12
スマホで主流だからなんて浅ましい理由でやったら間違いなく損だな
スマホで作るだけならUnityやcocos2dのようにOpenGLのラッパが幾らでもあるし


923 :デフォルトの名無しさん:2011/11/05(土) 15:30:21.15
純粋にハンドリング覚えたいとか、もっと単純にあれってどうやるんだ?から始まるとか
その辺の探究心や好奇心が根っこに無いと、きっと何も覚えない


924 :デフォルトの名無しさん:2011/11/05(土) 23:06:38.64
OpenGLで3次元で3つの球がぶつかる物理シミュレーションをC言語でやっています
球同士・球と壁がぶつかるときの計算式教えていただけませんか?
物理が苦手なんで分かりません

925 :デフォルトの名無しさん:2011/11/05(土) 23:22:20.83
どう考えてもOpenGL以前の問題なんだが。
数学板にでも行くか、Yahoo!猿知恵袋辺りで質問したら?

926 :デフォルトの名無しさん:2011/11/05(土) 23:37:02.06
以前ではなく、全く関係ない問題

927 :デフォルトの名無しさん:2011/11/05(土) 23:41:51.33
>>924
openglと球同士・球と壁がぶつかるときの計算式がどういう関係があるのか説明してみて


928 :デフォルトの名無しさん:2011/11/06(日) 00:39:31.90
「OpenGLで3Dインターネットブラウザを作っているのですが、
 インターネットにつなぐ方法を教えてください」 ってぐらい関係無い


929 :デフォルトの名無しさん:2011/11/06(日) 02:44:45.83
Bulletライブラリでも使ったら?ソースもあるし。

930 :デフォルトの名無しさん:2011/11/06(日) 10:36:14.01
レベル低すぎだろ。ほんと日本には最新のOpenGLを語れる奴がいないわ

931 :デフォルトの名無しさん:2011/11/06(日) 10:55:10.38
>>924
http://homepage2.nifty.com/eman/index.html

上記のトップページの目次から [力学] へ飛んで、
第1部「運動量保存則」の最初 [力とは何か] から、
第2部「エネルギー保存則」の [2物体の衝突] まで
ゆっくりじっくりまったりと読んでみてくれ

932 :デフォルトの名無しさん:2011/11/06(日) 12:16:38.47
>>930
海外に逝けよ

933 :デフォルトの名無しさん:2011/11/06(日) 12:36:22.56
× 日本には最新のOpenGLを語れる奴がいない
◯ 2chには最新のOpenGLを語れる奴がいない

934 :デフォルトの名無しさん:2011/11/06(日) 12:37:32.44
>>931
そういうサイトはぐぐるとすぐ出てくるんですが、よくわからないので
計算式教えていただけませんか?

計算式がわからないなら、ググった結果だけを教えていただかなく結構ですので

935 :デフォルトの名無しさん:2011/11/06(日) 12:55:23.24
>>934
レス乞食乙。安価一つだけつけてやる


936 :デフォルトの名無しさん:2011/11/06(日) 13:14:49.12
>>930
openGLのどんなお話が聞きたいの?

937 :931:2011/11/06(日) 14:02:22.41
>>934
お前は本当に馬鹿だな
ものを知らないとか幼稚だとか、そういうレベルではなく、本当に馬鹿だ

>>931 の第2部「エネルギー保存則」の [2物体の衝突]に、
衝突後の2球体のそれぞれの速度を計算する式がそのまま書かれている
もしかして、その式だけをここに引用しろと言ってるんじゃないだろうな

まして、そこにC言語のソースコードもあるのだが、それも見えないのか


「よくわからない」というのは、何も見ないで言っているのか?
そんな姿勢で理解できるわけないだろ、馬鹿か

938 :デフォルトの名無しさん:2011/11/06(日) 14:23:13.35
>>937
934が馬鹿かどうかとopenGLはどう関係するんですか?

939 :931:2011/11/06(日) 14:23:24.71
2次元の球体の衝突計算だ(プログラムソースもある)
http://marupeke296.com/COL_main.html
http://kanasana.sblo.jp/article/28818677.html

これらのページと >>931 で紹介したページを、
物理が苦手なら苦手なりにゆっくり時間をかけて、
一言一句脳に染み渡らせながら、丁寧に読んでみろ
チラシの裏やノートに、自分の手で式変形を書き下せ

3次元空間でやりたいのなら、これを理解してからにしろ

その上で、どこの何が分からない為に
OpenGL で実現できないのかを質問してこい
OpenGL に関わらない話は物理系の掲示板で質問してこい
http://hooktail.sub.jp/ など)

上から目線&威圧的な態度で悪いが、>>934 のレスには本当にむかついた

940 :デフォルトの名無しさん:2011/11/06(日) 15:22:52.11
>>934 は本人じゃないかもしれないだろww
だからレス乞食乙と書いたのにお前らと来たら

てかそんなの bullet と併用すれば一発終了だろっての


941 :931:2011/11/06(日) 15:40:06.04
>>940
2ch において2つのレスが同一人物によるものかなんてどうでもいい事だと思う
正確なところは確認しようがないし、同じ・違うと言われても信じられるものでもない

俺は >>934 のレスにむかついたから、ああいうレスをした
>>924 本人でないのなら、本人は自分のレスに問題があったわけではないのだから、
何も気にする必要はない(>>934 自身は是非気にしてほしいところだが)

ちなみに >>924>>934 も)は「計算式」が知りたいそうだが、
bullet と併用して計算式の理解が一発終了となるのなら、
是非その方法を質問者に教えてやってくれ

ここで計算式を並べて解説するよりも、bullet を使ってみるよりも、
既に丁寧に解説されているページが多数あるのだから、
それをしっかりと読んだ方が計算式の理解は遙かに早いと俺は思う

942 :デフォルトの名無しさん:2011/11/06(日) 15:50:50.73
完全に糞スレ化してるな。最近レベルが高いと思っていたらすぐこれだ

943 :931:2011/11/06(日) 15:59:40.36
俺も含めて、高いレベルのネタを間をおかずに振れない・返せないのが原因

ちょっと精進してくる

944 :デフォルトの名無しさん:2011/11/06(日) 16:04:56.19
>>943
お前がスルーできないだけだろ

945 :デフォルトの名無しさん:2011/11/06(日) 16:27:44.97
>>943
レス乞食にレスするお前がバカ

>>934が本人かどうかなどどうでもいい
レスしたお前がバカ

946 :デフォルトの名無しさん:2011/11/06(日) 16:27:48.32
>>941
その話題自体がスレチだって事に気づかないまま、顔真っ赤にして長文ご苦労様です


947 :デフォルトの名無しさん:2011/11/06(日) 16:29:32.08
>>937
>まして、そこにC言語のソースコードもあるのだが、それも見えないのか

ソースらしきものはありますけど、そのままじゃコンパイルできませんでした
コンパイルできるソースください

それがわからないならレスしていただかなくて結構ですので

948 :こうですか? 分かりません。:2011/11/06(日) 16:36:49.71
>>947
コンパイルできなかったのならエラーメッセージを提示しろ。
但し、スレ違いだからどっか逝け。

949 :デフォルトの名無しさん:2011/11/06(日) 16:38:13.53
レ ス 乞 食 に レ ス す る な

950 :デフォルトの名無しさん:2011/11/06(日) 17:54:51.56
>>930
OpenGL extension registryでも読んたらいいんじゃない。

951 :デフォルトの名無しさん:2011/11/06(日) 18:05:21.62
OpenGLで究極のおっぱいをレンダリングするにはどうすればいいですか?


952 :デフォルトの名無しさん:2011/11/06(日) 18:19:51.35
>>951
現物をこねくりまわしてよく研究する事が不可欠だと思います。

953 :デフォルトの名無しさん:2011/11/06(日) 18:42:44.01
>>951
動きを真似るにはとりあえず分子間力を学ばれるのが良いかと

あと、見た目の色を真似るには電磁気学の知識も有った方が良いと思われます

954 :デフォルトの名無しさん:2011/11/06(日) 18:53:34.06
ID出ない板はこれだから困る。

955 :デフォルトの名無しさん:2011/11/06(日) 19:36:25.96
ID出ても変わらないと思う

956 :デフォルトの名無しさん:2011/11/06(日) 21:30:27.29
来年の卒業研究それにしようかな...

957 :デフォルトの名無しさん:2011/11/06(日) 21:32:48.56
今年の卒業研究は諦めたのか

958 :デフォルトの名無しさん:2011/11/06(日) 21:44:03.77
はやくコンパイルできるソースよこせよ

959 :デフォルトの名無しさん:2011/11/07(月) 17:12:16.48
openGL ESでGL_PROXY_TEXTURE_2D_EXTにあたる機能はないのでしょうか。
ないとしたら、テクスチャが安全に作成できるかを調べたい場合、
テクスチャメモリの最大値にどれくらいの余裕を見れば大丈夫なのでしょうか?
よろしくお願いします。

960 :デフォルトの名無しさん:2011/11/09(水) 22:20:35.42
glGetString(GL_VERSION)したら0000って出たんだけどGLSL出来ないってこと?

961 :デフォルトの名無しさん:2011/11/09(水) 22:28:40.19
>>960
コンテキスト作ってから呼べってこと

962 :デフォルトの名無しさん:2011/11/09(水) 22:34:48.26
実際のところ同じマシン上で、同じライブラリとインクルードファイルを使って、
コンテキストの作り方で glGetString(GL_VERSION) の値が変わることってあるの?

963 :デフォルトの名無しさん:2011/11/09(水) 22:49:40.46
>>961
コンテキストあるときに呼んだら3.0.0って出たわー

964 :デフォルトの名無しさん:2011/11/09(水) 22:50:29.48
glGetIntegerってglutInitだけじゃなくてglutCreateWindowを
やらないと使えないことに気が付かないで30分くらい悩んでた

965 :デフォルトの名無しさん:2011/11/09(水) 23:25:31.33
そりゃ出力先(ウィンドウ)がわからないとOpenGLも困る


966 :デフォルトの名無しさん:2011/11/09(水) 23:46:14.97
困ってもじもじしているOpenGL

967 :デフォルトの名無しさん:2011/11/10(木) 00:19:58.07
ゲームプログラミングだとテクスチャマッピング使わない方がいいって書いてあるの
見かけたがマジか…
バリバリ使ってたわ

968 :デフォルトの名無しさん:2011/11/10(木) 00:21:55.84
何が良いんだよ
健康に良いのかよ

969 :デフォルトの名無しさん:2011/11/10(木) 11:01:42.05
精神的にはいいのかもしれんなあ

970 :デフォルトの名無しさん:2011/11/10(木) 14:51:53.97
1億頂点くらい使って全部頂点カラーで。

971 :デフォルトの名無しさん:2011/11/10(木) 21:53:13.46
テクスチャマッピング使わなかったらゲーム作れなくね

972 :デフォルトの名無しさん:2011/11/10(木) 22:06:20.16
ポリゴンだけのゲームは作れる
バーチャファイター1とかな

973 :デフォルトの名無しさん:2011/11/10(木) 23:09:14.83
ゲームと言う概念に、テクスチャマッピングは必須でない

974 :デフォルトの名無しさん:2011/11/11(金) 01:17:27.69
低コストにディテイル上げる方法なのに使わないとか何事
まさか法線マップ使えとな それか15年前の資料か

975 :デフォルトの名無しさん:2011/11/11(金) 07:22:33.78
ここは2ch

「ゲームが作れない」と言うから反論が来る

「今時のコンシューマ機のゲームが作りにくい」とでも言っておけば、
そうだねという意見しか出てこない

976 :デフォルトの名無しさん:2011/11/11(金) 08:08:54.60
しかしそれでも詭弁を振り回して揚げ足を取りに来るのが2ch

977 :デフォルトの名無しさん:2011/11/11(金) 09:26:28.46
そしていつの間にか全然関係のない話で大盛り上がり

978 :デフォルトの名無しさん:2011/11/11(金) 20:29:13.98
そうだね

979 :デフォルトの名無しさん:2011/11/11(金) 20:58:24.64
glewのライセンス何言ってっかわかんねー

980 :デフォルトの名無しさん:2011/11/13(日) 11:44:06.74
lowp mediump highpのpってなんですか?プロファイル?

981 :デフォルトの名無しさん:2011/11/13(日) 12:08:56.56
そうだねプロファイルだね

と言いたいところだが、たぶん precision だと思うぞ

982 :デフォルトの名無しさん:2011/11/13(日) 19:43:36.48
ありがとうございます^^



983 :デフォルトの名無しさん:2011/11/13(日) 22:23:08.03
すみません。
Perspective行列を作るときに、FOVに45.0fを渡すと正常に描画されるのに、30.0fを渡すと画面が上下反転するのですが何故でしょうか?

984 :デフォルトの名無しさん:2011/11/13(日) 22:58:13.66
>>983
どっか間違ってるからじゃね
44だとどうか43だとどうかって少しずつ変えてみるとか、すこしジタバタしてみたら

985 :デフォルトの名無しさん:2011/11/14(月) 00:06:39.13
>>983
反転するのは上下だけなのか、左右はどうなのか、
Z 値は正しいか、なんかも考えてみた方が良いね

その行列を OpenGL に設定(カレント行列に乗算)した時、
カレント行列はちゃんと意図通りの種類のものか、
カレント行列は単位行列だったのか、別の行列だったりしないか
という辺りも一緒に

986 :デフォルトの名無しさん:2011/11/14(月) 12:44:21.89
スクリーン座標の二次元の点を描画する方法を教えてください

987 :デフォルトの名無しさん:2011/11/14(月) 13:12:09.84
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20060227

988 :デフォルトの名無しさん:2011/11/14(月) 14:49:06.19
ありがとうございます

989 :デフォルトの名無しさん:2011/11/14(月) 17:27:07.29
どういたしまして


990 :デフォルトの名無しさん:2011/11/15(火) 10:16:05.21
次スレのテンプレ考えようぜ


991 :デフォルトの名無しさん:2011/11/15(火) 13:00:39.56
じゃあ、お前から

992 :デフォルトの名無しさん:2011/11/15(火) 13:10:44.27
やだ

993 :デフォルトの名無しさん:2011/11/15(火) 16:21:13.12
じゃあ俺が

994 :デフォルトの名無しさん:2011/11/15(火) 18:21:11.29
だめ

995 :デフォルトの名無しさん:2011/11/15(火) 18:46:56.09

OpenGLスレ Part17
http://hibari.2ch.net/test/read.cgi/tech/1321350331/

996 :デフォルトの名無しさん:2011/11/15(火) 20:15:13.34
うめ

997 :デフォルトの名無しさん:2011/11/15(火) 20:55:59.04
そろそろサメの話しようぜ↓

998 :デフォルトの名無しさん:2011/11/15(火) 22:04:17.37
ダメ

999 :デフォルトの名無しさん:2011/11/15(火) 22:36:08.92
そろそろサーニャの話しようぜ

1000 :デフォルトの名無しさん:2011/11/15(火) 22:55:44.11
1000取ってやんよ!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

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

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)