くだすれOpenGL(超初心者用)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
OpenGL使いが優しくコメントを返しますが、
お礼はOpenGLの布教と初心者の救済をお願いします。

OpenGL Home Page
http://www.opengl.org/
2デフォルトの名無しさん:2005/11/06(日) 01:35:32
とりあえず2
3デフォルトの名無しさん:2005/11/06(日) 01:36:32
カスどもがwww
4デフォルトの名無しさん:2005/11/07(月) 14:29:40
光源の設定方法がわかりません
5 ◆sa5pVA/EH6 :2005/11/07(月) 21:20:22
>>4
具体的にどこがどうわからんのか書かないと、答えようが無いよ。
物体が真っ黒なのか、色はつくけど光のあたり方がおかしいのか。
6デフォルトの名無しさん:2005/11/09(水) 15:17:23
OpenGLは終了が確定したから、今から3Dやるなら素直にDirectXにしとけ。
7デフォルトの名無しさん:2005/11/12(土) 03:50:56
>>6
嘘付くなボケ
8デフォルトの名無しさん:2005/11/12(土) 12:22:40
このスレでは回答者は全員ツンデレという設定。
9デフォルトの名無しさん:2005/11/13(日) 23:16:20
>>4
フン、どうせ法線を設定し忘れたか
glEnable(GL_LIGHT*)書き忘れてるんでしょ!
図星でしょ?それくらい分かるわよ!いつもあなたの事見てるから…
>>6
べ、べつにOpenGLなんかどうなってもいいんだから!
10デフォルトの名無しさん:2005/11/20(日) 15:17:44
OpenGLとDirectX共用できるコードの書き方はありませんか?
11デフォルトの名無しさん:2005/11/20(日) 15:23:47
何を聞きたいのか意味不明。
12デフォルトの名無しさん:2005/11/20(日) 15:42:08
これの意味が分からないってのはなんだな

もっとも説明しようもないが
それ系のいまいちなライブラリ漁るか、高いエンジン買うか、
自分でAdaptorパターンあたりで実装するしか無いんじゃね
13デフォルトの名無しさん:2005/11/20(日) 21:52:24
そこでエレファントですよ
14デフォルトの名無しさん:2005/11/22(火) 15:20:32
一定時間ごとに更新してアニメーションさせたいのですが
一定時間ごとに関数を呼ぶような命令か時間を計る命令はないでしょうか?
15デフォルトの名無しさん:2005/11/22(火) 23:50:39
>>14
glutTimerFuncという関数を使って、一定時間ごとに呼びたい関数を
指定すればよいと思います。
16デフォルトの名無しさん:2005/11/23(水) 07:34:50
>>15
使い方を調べているとglutTimerFuncのほかにglutIdleFuncも見つけました
比べてみてglutTimerFuncが最適でした
ありがとうございます
17デフォルトの名無しさん:2005/11/24(木) 20:40:17
光源に対してスペキュラとかディフューズとかアンビエントとかを設定するのがキモスです。
どうにかして下さい。
概念的に正しいの?歴史的な理由でもあるの?
18デフォルトの名無しさん:2005/11/25(金) 00:46:57
スペキュラとかディフューズとかアンビエントとかっていうのは、
別に物理的に光がそういう振る舞いをするわけではなく
それっぽく見えるような計算式で近似しているだけ。
近似の仕方には色々あるのだから
出来るだけ色々な設定が出来るAPIが良いと考えたんだろう。
同じ値で使いたければ同じ値を設定すればいい。
19デフォルトの名無しさん:2005/11/25(金) 00:51:04
GL_AMBIENT_AND_DIFFUSEもあるしな。
20デフォルトの名無しさん:2005/12/02(金) 09:29:47
教えてください。
立方体とそのエッジを書いたとき、エッジのところどころが面に
隠れてしまって、点線に見えてしまいます。

陰面処理は行い、データ上同じ座標になるエッジを面より前に
表示するにはどのような処理をすればいいのでしょうか。
21デフォルトの名無しさん:2005/12/02(金) 20:45:55
glPolygonOffset
2220:2005/12/05(月) 10:03:35
>>21
ありがとうございました。できました。
glPolygonOffsetというのは、ポリゴンとポリゴンが重なるとき初めて影響が
出てくるものであって、ポリゴンと線分(GL_LINES)ではダメなのかと思っていました。
アドバイスを頂き、ダメモトでやってみたところ、あっさりと実現できました。
本当にありがとうございました。
23714:2005/12/10(土) 01:31:32
DirectXでXfileを読み込むように、3DCGソフトでモデリングしたデータをopenGLで読み込むような関数ってありますか?
やはりみなさん自分で作っていたりするんでしょうか。
24デフォルトの名無しさん:2005/12/10(土) 13:17:55
>>23
DFXとVRMLならライブラリがあるぞ。
25デフォルトの名無しさん:2005/12/11(日) 00:25:53
>>23
OpenGLには備わってナイYO
自作するか、他人の作ったライブラリーかな
2623:2005/12/11(日) 03:27:59
なるほどー、ありがとうございます
ライブラリ探してみます
27デフォルトの名無しさん:2005/12/17(土) 15:52:27
D言語でOpenGLを使いたいんですが
何処かに解説してるサイトはないですか?
28デフォルトの名無しさん:2005/12/25(日) 23:49:59
>>27
うーん。ここぐらいしか・・・
http://www.4dm.org/D/dprog2.htm

つーか、ヘッダーさえあれば、C言語とかのページ参考にしていけるんじゃね?
29デフォルトの名無しさん:2005/12/25(日) 23:50:42
あとは、ABAさんのゲームのソースとかか?
30デフォルトの名無しさん:2005/12/25(日) 23:52:27
今見たら、NeHeにもDのサンプルあるね・・・
http://nehe.gamedev.net/
31デフォルトの名無しさん:2005/12/25(日) 23:58:23
質問です。
openGL+GLUTで効果音使おうと思ったのですが、使えない・・のですよね?
クロスプラットフォームならSDL等。
依存ならWIN32APIとかdirectXとかになるのでしょうか?
32デフォルトの名無しさん:2005/12/26(月) 00:09:40
だね。
OpenALって手もあるけど、なにぶん資料が少ない
33デフォルトの名無しさん:2005/12/26(月) 00:20:55
>>32
OpenALって知らなかったです。
しかし、SDLはかなり昔ちょこっと使ってた事があるので、SDLにします。
ありがとうございました。
34デフォルトの名無しさん:2005/12/27(火) 10:54:48
pilotviewを使った、キーボードによる3D空間の移動を行いたいんだけど
どうしてもうまくいかないのです・・・

カメラの回転がどうしても原点中心におこなわれてしまうのですが、どうすればいいのでしょうか?

35デフォルトの名無しさん:2005/12/27(火) 13:58:38
gluLookAtを使えばいいと思います
3634:2005/12/27(火) 14:06:30
gluLookAtは最初使ってみたんだけどダメで、pilotviewの方がいけそうな気がしていたんですけど・・・

LookAtにもう一回チャレンジしてみます
3734:2005/12/27(火) 15:52:54
結局、pilotviewを使って完成しました。ありがとうございました。
38デフォルトの名無しさん:2005/12/27(火) 23:39:09
OPENglの画面表示ってレイトレーシングで行われているんですか?
39デフォルトの名無しさん:2005/12/28(水) 02:26:38
>>38
ちょwwww
それ初耳だが凄いw
マジだったらあの速度で動くGLは神だww
40デフォルトの名無しさん:2005/12/28(水) 21:30:52
OpenGLで表示したものを画像として保存したいのですが
方法があるのでしたら教えていただけないでしょうか?
41デフォルトの名無しさん:2005/12/29(木) 02:26:34
一つのオブジェクトの、とある部分にはテクスチャを張って、とある部分には張らない、ということを
行ないたいのですが、どうもうまくいきません。
張りたい部分のところで glBindTexture, glEnable(GL_TEXTURE_2D) を行なって、張りたくないところで
glDisable(GL_TEXTURE_2D)しているのですが、これって間違ってますでしょうか?
もしかして EnableDisable は全体に影響してしまう?
42デフォルトの名無しさん:2005/12/29(木) 11:47:25
>>40
PrintScreen KeyもしくはglReadPixels()
>>41
それで良いが、glBegin() glEnd()の間でやっちゃダメ。
43デフォルトの名無しさん:2005/12/29(木) 17:52:23
glutSolidSphereで球を表示されると一つ目に表示させた球だけ
Z軸に沿う方向に変な黒い丸が表示されてしまうのですが回避できないのでしょうか?
4441:2005/12/29(木) 23:22:48
>42
glBeginとglEndの間でやっちゃってました…。
修正したら動きました。どうもでした。
45デフォルトの名無しさん:2005/12/29(木) 23:26:02
点光源を沢山並べて麺光源として扱いたいのですが、OpenGLでは8個以上並べることは出来ないのでしょうか?
46デフォルトの名無しさん:2005/12/30(金) 00:47:20
面光源を使いたければ、自分でライティングの計算をしなさい。
シェーダでやってもいいし、事前に計算して頂点カラーなどに入れても良い。
処理速度に気を使うなら、点光源を大量に使うことは、たとえ出来たとしてもお勧めしない。
47デフォルトの名無しさん:2005/12/30(金) 02:24:25
48デフォルトの名無しさん:2006/01/02(月) 02:48:00
http://gamdev.org/w/?QuaternionPowers
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040321

ここ見てやっとクォータニオンの使い方が分かった気がする。
いや、数学的な事とかはチンプンカンプンだけど、俺にはこれで十分。
49デフォルトの名無しさん:2006/01/03(火) 05:03:47
三角ポリゴンをワイヤ表示しようと思って
GL_LINE_LOOPでglArrayElement3回ずつ呼ぶより
GL_TRIANGLESでglDrawElementsをglPolygonMode(GL_FRONT,GL_LINE)で
呼んだ方が早いじゃないですか><
こんなテクもっと教えて^^
50デフォルトの名無しさん:2006/01/07(土) 18:33:57
51デフォルトの名無しさん:2006/01/14(土) 03:25:13
gluLookAtで指定した視点とかのパラメータを
後からglGetDoublev(GL_MODELVIEW_MATRIX)で取得した値から
取り出せないでしょうか
52デフォルトの名無しさん:2006/01/14(土) 07:21:13
上方向ベクトル(up)は必ずしも取得できる訳ではありませんが、
視点(eye)と参照点(center)への逆方向ベクトルは取得できます。

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( 0,0,0, 0,0,-1, 0,1,0 );
float matView[16];
glGetFloatv( GL_MODELVIEW_MATRIX, matView );
MatrixInverse( matView ); // 逆行列を算出

としたときに、
mat[12]〜mat[14]が視点の座標、
mat[8]〜mat[10]が参照点への逆方向ベクトルになります。

一応mat[4]〜mat[6]は上方向ベクトルなのですが、
gluLookAtで指定したupx,y,zを正規化した値と
同じになるとは限りません。
5352:2006/01/14(土) 07:23:24
すいません、mat=matViewです。
54デフォルトの名無しさん:2006/01/14(土) 11:48:31
>>52-53
逆行列で視点の位置等でてきました
ありがとうございます
55デフォルトの名無しさん:2006/01/14(土) 18:41:25
openglには円を描く関数がないんですか?
56デフォルトの名無しさん:2006/01/20(金) 11:03:19
HDRIみたいな背景画像をやってみようと、法泉を内側にした球に貼って
内側からlookatでグリグリして見たんですけど
redqeen2で同じ座標でレンダリングしたと比べたら、球の半径を数万とかにしないと
同じような画像にならないんですけど、でもまだ微妙にずれがあって迷ってます。

こういうのって半径を無限として考えて見える範囲だけ切り出して
平面に貼り付けたほうがいいんでしょうか?
計算方法が思いつきません・・・
57デフォルトの名無しさん:2006/01/20(金) 22:36:50
>>55
球ならあるが円はない。

>>56
HDRIって何?
58デフォルトの名無しさん:2006/01/21(土) 00:25:00
>>56
High Dynamic Range Imagingのこと?
だったら、背景画像は本質とは関係無いじゃない。

でも背景は6枚のテクスチャにして立方体に貼るようにするわね。
Image Based LightingでCubeMapを使うのにも
そのまま使えるから、そうした方がいいんじゃないかしら…

って、べ、別に私だったらそうするってだけで、
あんたなんかにアドバイスしてるわけじゃないんだからねっ!
5956:2006/01/21(土) 02:19:33
うまく説明できてなかたごめんなさい><
redqueen2とかでHDRI画像使った時みたいに背景が写って
マウスでグリグリさせて見たかったんです
HDRIで環境マッピングさせたかった訳じゃなかったんですけど
CubeMapでググッたらなんか方向性見えてきました^^
60デフォルトの名無しさん:2006/01/22(日) 00:22:48
    / ̄ ̄ ̄ ̄\   
   (  人_____,,) ブツブツ・・・ヤマト・・・
    |ミ/  ー◎-◎-)         
   (6     (_ _) )    カタカタカタ
   | ∴ ノ  3 .ノ  ______
    ヽ、,,     __,ノ   |  | ̄ ̄\ \
   /   粘着 \.____|  |    | ̄ ̄|
  /  \_         |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕 
61デフォルトの名無しさん:2006/01/22(日) 14:10:13
1,あ、突いて、突いて
  ○    ○    ○    ○    ○
  /-l---  /-l---  /-l---  /-l---  /-l---
 /┐   /┐   /┐    /┐   /┐


2,あ、押して、押して
  ○/   ○/    ○/     ○/  ○/
  /X    /X    /X      /X   /X
 /┐   /┐   /┐     /┐  /┐


3,あ、払って、払って
  ○./"   ○./"   ○./"    ○./" ○./"
  /メ    /メ    /メ      /メ  /メ
 /┐   /┐   /┐     /┐  ./┐


4,最後に斬る              w パーン
  ○ /   ○ /   ○ /     ○ /○ /
  /×    /×    /×       /× /×
 /┐   /┐   /┐      /┐ /┐


5,志村ー!
  ○    ○   ○    ○"゚・ =  \○# =
 /|ヽ  /Φヽ  /|ヽ  /⌒/⌒ =    X\ =
 | 人  | ∧   /人   ⌒└  =     ノ└ =

これをopenglでやりたいのですが
62デフォルトの名無しさん:2006/01/23(月) 09:23:43
例えば立方体の角のひとつをつまんでひっぱると、
みょーんって伸びるような弾性体をつくりたいのですが
どういった方法があるのでしょうか?
63デフォルトの名無しさん:2006/01/23(月) 11:27:17
NURBS
64デフォルトの名無しさん:2006/01/23(月) 18:01:56
>>63
サンクス
65デフォルトの名無しさん:2006/01/24(火) 21:57:40
おまえら本当の馬鹿だな
氏ねよwwwww
氏んじやったほうがいいよwwwwwww
66デフォルトの名無しさん:2006/02/06(月) 07:14:22
>>24-25
自分は23ではないですが、例えばどこにありますか?

ttp://www.ccfactory.com/index.html
こんなんなら見つけられたんですが、Cのソースコードに変換とかじゃなくて
動的に読み込むものが欲しいです
67デフォルトの名無しさん:2006/02/06(月) 14:54:00
>>66
STL形式ならここにあった。
http://www.sofix.co.jp/weblog/archives/cat8/opengl/index.html
試してはいません。
68デフォルトの名無しさん:2006/02/06(月) 15:11:25
>>55
遅レスだが、円はある。gluDisk 参照。

69デフォルトの名無しさん:2006/02/06(月) 23:16:56
>>67
STLのがあるのか
7066:2006/02/07(火) 01:38:35
>>67
どもです
DXFやVRMLのものはどこかな
71デフォルトの名無しさん:2006/02/07(火) 11:00:09
>>70
ググレカレー
72デフォルトの名無しさん:2006/02/07(火) 21:44:38
OpenGLにはデバイスロストありますか?
73デフォルトの名無しさん:2006/02/07(火) 23:56:47
ありません。
74デフォルトの名無しさん:2006/02/08(水) 00:39:30
>>73
ありがとうございます
75デフォルトの名無しさん:2006/02/14(火) 20:57:11
C/C++は猫でも分かるで勉強したのですが、
OpenGLはどこのサイトがオススメでしょうか?
76デフォルトの名無しさん:2006/02/15(水) 01:23:05
77デフォルトの名無しさん:2006/02/27(月) 01:54:21
3Dモデルデータのファイルフォーマットや読み書きライブラリに関するリンク集
ttp://www.nbrains.net/php/pukiwiki/index.php?link%BD%B8%2F3D%20Model%20Data
78デフォルトの名無しさん:2006/02/28(火) 17:58:59
教えてください。
WindowsXPで、MFC+OpenGLでプログラムを作成しています。

SDIのViewにOpenGLで描画しています。

ウィンドウをディスプレイの右端に持って行き、ウィンドウの半分が外側に
はみ出す形にします。

その後、ウィンドウの左側の境界線をつかみ、左側に移動させます。
つまり、ウィンドウサイズを大きくします。

ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
が再描画されていません。

ウィンドウが全部見えている状態でのサイズ変更ではきちんと描画されます。

パソコンによってきちんと描画できたり、できなかったりします。
というより、ディスプレイドライバーの違い、能力の違い?のようにも思われます。

OSの画面プロパティ - 設定タブ - 詳細設定ボタン - トラブルシューティングタブ
の、ハードウェアアクセラレータのスライダーを最大にすると、描画されないパソコン
でも表示されるようになります。
しかし、今度はマウスカーソルの軌跡を残すように設定している場合に、
マウスカーソル位置の再描画がうまく行われません。
マウスカーソルを囲む矩形範囲で再描画されなかったり、ズレたりします。

他のOpenGLを利用しているアプリを使ってもこのような現象は起きません。
自作したプログラムのみで起きるようなので、なにか回避策があるように
思います。

どなたかご存知ありませんか?
79デフォルトの名無しさん:2006/02/28(火) 22:36:15
WM_MOVEでフルリペイント
80デフォルトの名無しさん:2006/03/01(水) 17:14:08
>SDIのViewにOpenGLで描画しています。
OnDraw()で描画するようにしていれば
>ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
>が再描画されていません。
このときに画面が無効化されてOnDraw()が呼ばれて再描画されるはず。
8178:2006/03/02(木) 13:16:23
>>79,80, レスありがとうございます。

書いてなかったのですが、きちんとOnDrawには飛んできています。
ビューポート、視体積、その他描画に関連することは、通常通りのパスを通過しています。
ウィンドウサイズも、画面外の領域を含んだサイズが取得でき、それをビューポートに設定しています。

それでもなお表示されない領域が出てきます。

追加調査で、だいたいどのパソコンでも自作のプログラムだと黒い部分が出ることが分かりました。

設定は >>78 の通りで、ディスプレイの設定を触るとそうなります。

念のためCView(の派生ですが)のOnSizeで、OpenGLの再表示を行っていますが、結果は変わりません。
この場合も、サイズ変更時にOnSizeに飛んできて、再表示まで行っているのは確認しています。

長くなりますが、もう少しだけ補足させてください。
ウィンドウをすべて見える位置まで、黒くなった部分をひきずり出してから、ほんの少しサイズ変更をして
やると、黒い部分の大きさに関わらず、再表示はクライアント領域すべてに広がります。
黒い部分は、描画時のデバイスコンテキスト領域が削られているような感じを受けます。
OnSize時にInvalidateを呼んでもダメでした。

現在、OnDrawが飛んできたとき、引数のDCを利用せず、OpenGL関係の描画を行う関数内にて
目的のCViewからGetDCしたものを利用しています。
一度、OnDraw時のものを利用するように修正しましたが、そのときは状況は改善されませんでした。

ディスプレイの設定で結果が変わってくるので、ウィンドウが画面外に出たときに、再描画の領域を
小さくして、表示速度を上げるような処理が入っているように思います。
そのような処理が入っていたとしても、クライアント領域全体を再描画するようなデバイスコンテキスト
を強制的に取得するような手段はありませんか。
82デフォルトの名無しさん:2006/03/02(木) 16:48:57
教えてください。

glutCreateWindow(argv[0]);で画像を描画する為のウィンドウを作りますが、
新たにウィンドウを作るのではなくて、既存のウィンドウに描画部分を
埋め込むことは出来るのでしょうか?

よろしくお願いいたします。
8380:2006/03/02(木) 18:18:53
ハードウェアアクセラレータのスライダーを最小に設定して
>ウィンドウをディスプレイの右端に持って行き、ウィンドウの半分が外側に
>はみ出す形にします。
>その後、ウィンドウの左側の境界線をつかみ、左側に移動させます。
>つまり、ウィンドウサイズを大きくします。
>ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
>が再描画されていません。
こちらでも確認しました。
>しかし、今度はマウスカーソルの軌跡を残すように設定している場合に、
>マウスカーソル位置の再描画がうまく行われません。
これも確認しました。

20世紀に納品したもので確認したのですが、このようなバグが存在していたとは驚きです。
この点についてのクレームはきませんでしたので私はとても運がいいです。
つぎにOpenGLにかかわる仕事があるとしたら、上記2点は既知のバグとしておき、
回避不能ということでお客様には納得してもらった上で仕事を請けることにします。
本当にありがとうございました。
84デフォルトの名無しさん:2006/03/02(木) 19:27:53
うろ覚えだけど、そういえばMFCはInvalidateがdcに設定された状態でイベントに飛んでくるから
独自にDCを作ってglMake....だっけをやるとかなんとかちらっとどっかで見た気がする
CreateCompatibleDCでやってみたら?
8578:2006/03/09(木) 10:23:48
>>84
返答が遅くなりましたが、教えてもらった方法でビットマップ作って貼り付けることにしました。
ありがとうございました。
86デフォルトの名無しさん:2006/03/10(金) 16:15:32
ビューポートを2つ

 | ̄ ̄ ̄ ̄ ̄ ̄|
 |  | ̄ ̄|   |
 |  |__|   |
 |______|

こんなかんじで作って、
内側、外側両方にDrawPixelで画像の表示をしたいのですが、
ビューポートを重ねる?みたいなことはできないのでしょうか。

外側ビューポート作成
外側に画像描画
内側ビューポート作成
内側に画像描画

の順で処理しているのですが、
外側の画像が表示されるだけになってしまいます。
87デフォルトの名無しさん:2006/03/14(火) 08:56:07
>>86
返答つかないですね。
初心者なんでDrawPixelが良くわかりませんが、通常の描画でビューポートの重ね合わせ
はできていますので、できるんじゃないでしょうか。
88デフォルトの名無しさん:2006/03/16(木) 20:38:01
FMV C4/665 ・Intel(R) Pentium(R)III プロセッサ-667 ・Intel社製 810E Chipset+ディスプレイキャッシュ4MB を使用してましてOpenGLが必要なゲームをやりたいのですがダウンロードすれば搭載した事になりますか?
89デフォルトの名無しさん:2006/03/16(木) 22:34:55

   エ  ス  パ  ー  登  場
  ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
9088:2006/03/16(木) 23:09:25
逆にOpenGLを着けるにはどうすれば良いですか?ご教示の程宜しくお願いします。
91デフォルトの名無しさん:2006/03/17(金) 02:07:55
>88
そのゲームを作った奴に聞けよ。
市販のゲームならマニュアルに書いてあるだろ。
92デフォルトの名無しさん:2006/03/17(金) 02:28:29
ハァ?超初心者スレだから聞いてんだろ?解らないなら解らないとハッキリ言えよ!w
93デフォルトの名無しさん:2006/03/17(金) 08:18:16
>92
ああ、わからないよ。
OpenGLを使ったゲームがどの環境で動くかなんてそのゲームを作った奴にしかわからないよ。
94デフォルトの名無しさん:2006/03/18(土) 11:04:28
>>92
ハッキリ言ってやる。
スレどころか板違い、ゲームの名前を出してPCげーか同人げーで訊け
95デフォルトの名無しさん:2006/03/18(土) 12:06:00
しまった!>>8の設定を忘れてた。
64bitに対応したトリップ検索プログラムありますか?

TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
97デフォルトの名無しさん:2006/03/32(土) 22:55:55
OpenGLでテクスチャの読み込みを別スレッド化すると、テクスチャが描画されなくなるのですが、
対処法をご存知の方、いらっしゃいませんか?

WinXP-VC++2003の環境で、処理としては、
プライマリスレッド
 ウィンドウ、OpenGL初期化>データ読み込みスレッド起動>メインループ
データ読み込みスレッド
 PNGをロードして展開>OpenGLのテクスチャ生成>データ読み込み完了を通知するbool値をtrueに
メインループ
 データ読み込み完了を通知するbool値がtrueなら描画処理を呼び出す

という感じになっています。
データ読み込みが完了するまでメインループに突入しないように変更してもダメで、シングルスレッドに戻すと正常に描画されます。
OpenGLのテクスチャはスレッド間で共有されない、ということでしょうか?
98デフォルトの名無しさん:2006/04/12(水) 04:28:06
OpenGLはクライアントサーバでサーバは1つしか動いてないので今の操作がどの
アプリケーションによるものかを区別してるはず
スレッドが違えば当然インスタンスが違うので別のアプリケーション操作として認識してるのでしょ
回避策は良く知らない
99デフォルトの名無しさん:2006/04/12(水) 04:30:26
と思ったがテクスチャ作成なんてほんの一瞬だから
スレッドで読み込みとテクスチャ用の加工をして
そのデータを引き受けてメインスレッドで描画する前にテクスチャ作ればいいだけじゃないか?
100デフォルトの名無しさん:2006/04/12(水) 23:52:00
>>98
スレッドが違えばインスタンスが違うかどうかは実装依存では?
シリアライズする限りは大丈夫だというのを読んだ時がある気はするが、
どこで見たか忘れた。

OpenGLのコマンド呼び出し自体はシングルスレッドで処理するのが安全だろうな。
101デフォルトの名無しさん:2006/04/13(木) 00:00:55
>>97
wglShareLists()について調べてみるが吉
102デフォルトの名無しさん:2006/04/17(月) 21:46:00
>>98-101
回答ありがとうございます。
OpenGLはスレッドごとに動作を管理しているから、
wglShareList()を使ってスレッド間でデータを共有してやれ、という事ですね。
103デフォルトの名無しさん:2006/05/02(火) 03:38:07
OpenGLで家の壁と窓みたいなの作ってるんだけど、
窓から中を覗けるようにしたいんで、壁に任意形状の窓の穴を開けた様にしたいんだけど
プログラム的にはどうするのか、教えて下さい。
オフスクリーンレンダリングとか使ったりすんのかな?
三角形や四角形にメッシュ切ればなんとかなるかなと思って、幾何学の本やら
ドローネ三角の分割方法とか読んではいるんだけど......。
みんなは、自前で穴あけたりメッシュ作成するときはどんな方法使ってるん??
104デフォルトの名無しさん:2006/05/02(火) 05:27:45
>>103
超初心者なのに頭が硬いなあ。
発想の転換をしてみれば?
105デフォルトの名無しさん:2006/05/02(火) 16:03:45
>>104
すいません。色々考えてみたんですが、今いち解決策が浮かばないです。
一枚の灰色の壁に、三角形や四角形または菱形や台形の窓が数個配置してあって、
その窓部分を全部くり抜きたいんですが、OpenGLの命令で重ね合わせると透明になっちゃう
みたいな命令があるんでしょうか?
106デフォルトの名無しさん:2006/05/02(火) 17:29:39
>>105
つ glEnable(GL_ALPHA_TEST)
107デフォルトの名無しさん:2006/05/02(火) 18:10:09
>>104
>>106
ありがとうございました。
GL_ALPHA_TESTでググったところ、そのものずばりなものがありました。
http://marina.sys.wakayama-u.ac.jp/〜tokoi/?date=20040916
本当にありがとうございました。精進致します。
108デフォルトの名無しさん:2006/05/12(金) 14:42:27
OpenGLではDirectXのxファイルのようなものはないのでしょうか?
109デフォルトの名無しさん:2006/05/12(金) 19:25:40
ない
110デフォルトの名無しさん:2006/05/12(金) 23:36:00
>>108
OpenGL って訳ではないけど Collada はどう?
111デフォルトの名無しさん:2006/05/15(月) 02:53:10



http://www.sgi.com/company_info/newsroom/press_releases/2006/may/sgi_reorg.html

  SGIが破産

  どうなっちゃう OpenGL ??

  Vistaでの問題 と これで八方ふさがりだ




112デフォルトの名無しさん:2006/05/15(月) 03:34:48

SGIはニューヨークのマンハッタン破産裁判所に、米連邦破産法第11条の適用を申請した。
申請書類によると、負債額は6億6430万ドル(約742億円)。 

http://cnn.co.jp/business/CNN200605090013.html
113デフォルトの名無しさん:2006/05/15(月) 03:38:23
PS3も売れないし、
Vistaでもひどいもんだし、
OpenGLを使う企業は、もう無いだろうなw
114デフォルトの名無しさん:2006/05/15(月) 21:03:10
>>113
pcしか知らない田舎モノw

>>111
1週間遅れのド低脳w

オマイらにはDirectXがお似合い
115デフォルトの名無しさん:2006/05/16(火) 16:11:06
3D用のAPIを使うメリットは、第一にスピードである。
だが、VistaになればDirectXのラッパーでしかないOpenGLは描画スピードが大幅に落ちてしまう。

Vistaになれば、Windows上ではOpenGLは使われなくなるだろう。
116デフォルトの名無しさん:2006/05/16(火) 16:19:10







   Vistaでは、OpenGLは低速APIになる





117デフォルトの名無しさん:2006/05/16(火) 17:27:53
完全に枯れた技術だなwwwwwwwwwwwwwww
118デフォルトの名無しさん:2006/05/16(火) 18:42:35
>>117
枯れた技術の意味解って言ってる?
119デフォルトの名無しさん:2006/05/16(火) 22:13:36
>>115
>>DirectXのラッパー
それうそだから。

DirectX厨必死だなw
120デフォルトの名無しさん:2006/05/21(日) 01:50:02
 VistaからOpenGLは 低速API である
121デフォルトの名無しさん:2006/05/21(日) 03:04:53
学んでないな...
122デフォルトの名無しさん:2006/05/21(日) 14:44:34
http://tako.s165.xrea.com/upload/src/up0041.cpp
http://tako.s165.xrea.com/upload/trans.cgi?up0041.cpp

SDL + OpenGLを使ってみようとしているのですが、
ポリゴンを描画しようとしても何も表示されません。
どこかおかしいところがあるでしょうか?

言語はVC7.1
環境はXP、RADEON9800PROです
123122:2006/05/22(月) 12:20:46
すみません解決しました。
ポリゴン自体は描画されていたようで、色が黒だったので背景に隠れてしまっていました。
で、色が出なかったのはbyte引数なのにunsigned byteで指定してた・・・
スレ汚しすみませんでした
124デフォルトの名無しさん:2006/05/23(火) 01:39:24
超初心者質問でアレなのですが
glEnable(GL.GL_LIGHTING)
ってのをつけると
glColor3f(r,g,b,)
で設定したテクスチャが無効化(?)されてしまうと思うんですが
テクスチャとシェーディングを同時に実現することはできないでしょうか?
125デフォルトの名無しさん:2006/05/23(火) 03:06:12
超初心者なのは分かったからもうちょっと落ち着け。言ってることが意味不明だぞ。
とりあえず「テクスチャ」「シェーディング」「ライティング(LIGHTING)」「頂点カラー」の意味ぐらい調べとけ。
126124:2006/05/23(火) 05:47:44
ぐあ、なんかめちゃくちゃですんません。

サーフェスを作成し法線を設定→glEnable(GL.GL_LIGHTING)
で、ライティングによる影が表現されますよね。

そのあと、サーフェスに画像を貼り付けたいと思い、
glColor3f(r,g,b,)でサーフェス頂点に色をマッピングしてみたんです。

そうすると、ライティングの効果が消えて(?)、
ベタッと画像を貼っただけの立体感0のものになってしまったのですが
glEnable(GL.GL_LIGHTING)だと、色情報が無視されてしまうのでしょうか?
127デフォルトの名無しさん:2006/05/23(火) 08:24:15
素直にテクスチャを貼ればいい気がするが…

基本的にはライティングしないときはglColorの色、
ライティングするときはglMaterialの色が使われる。
だが、
glEnable(GL_COLOR_MATERIAL);
として、たとえば
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
とかしておくとglMaterialで設定するAMBIENTとDIFFUSEの代わりに
glColorで設定した色が使われる。
glMaterialはポリゴン単位でしか変更できないがglColorは頂点ごとに変更できる。
128124:2006/05/25(木) 22:34:37
>>127
遅くなりましたがありがとうございました。
おかげさまで解決いたしました
129デフォルトの名無しさん:2006/05/31(水) 03:12:42
Vistaでは低速API
130デフォルトの名無しさん:2006/05/31(水) 03:14:07
   OpenGLプログラマー達の悲鳴  海外版 

Vistaでは
OpenGL performance will be significantly reduced - perhaps as much as 50%
OpenGL on Windows will be fixed at a vanilla version of OpenGL 1.4
No extensions will be possible to expose future hardware innovations
131デフォルトの名無しさん:2006/05/31(水) 03:16:34
  VistaでOpenGLは 

OpenGL performance will be significantly reduced - perhaps as much as 50%
OpenGL on Windows will be fixed at a vanilla version of OpenGL 1.4
No extensions will be possible to expose future hardware innovations

http://www.opengl.org/discussion_boards/ubb/ultimatebb.php?ubb=get_topic;f=3;t=013663#000000
132デフォルトの名無しさん:2006/05/31(水) 08:45:37
日付も読めず最新情報も手に入らないデジタルデバイド乙
133デフォルトの名無しさん:2006/05/31(水) 23:26:03
しかたないよバカなんだから
134デフォルトの名無しさん:2006/06/04(日) 19:07:22
OpenGLの印刷について教えて下さい。
今現在、印刷プレビューや印刷を行う際に、OnDrawの中で、印刷解像度(6000x4000)等の大きさの
BITMAPを用意し、そのBITMAPに描画してStrectBITitsで印刷用のDCに渡して印刷しています。
ですが、BITMAPにレンダリングする際はGPUの恩恵を受けることができなく、CPU依存の描画に
なっているため、印刷プレビューの画面を出力するだけでも5〜10分のレンダリング時間を要して
しまいます。
GPUでレンダリングしたデータをそのまま取ってくればいいのかと思って、glReadPixel命令を
使用しているんですが、glReadPixel命令は、フレームバッファの大きさに依存するらしく、
クライアント画面の大きさ(例えば800x600)のレンダリング領域のデータしか取得できません。
で、結局やりたいことは、GPUでレンダリングした6000x4000等の大きさのレンダリングデータを
全て取ってきたいんですが、方法はないんでしょうか?
よろしくお願いします。
135デフォルトの名無しさん:2006/06/05(月) 23:29:00
>>134
同じようなことをやっていた人に話を聞いてみたところ、
Game Programing Gems 2 と 4 にやり方が書いてあったらしい。
片方は、小さいブロックに分けて別々にレンダリングした後、絵をつなげて1枚にする手法。
もう片方は、低解像度の絵をちょっとずつ(1ピクセル未満の幅で)ずらしながら何回もレンダリングして、
それをうまく合成することで高解像度の絵を得る手法。
後者の手法ならアンチエリアシングをかけたような絵になるらしい。
ちなみに、そのGemsを書いた人はNintendo Americaの人で、GAMECUBEで実装したとか。
136デフォルトの名無しさん:2006/06/06(火) 00:19:31
>>134ではないがGemsを大学の図書館から借りていたので見てみた


思いっきり3だったorz
137デフォルトの名無しさん:2006/06/06(火) 00:48:39
>>135
134です。
何となくそういった手法しかないのかなと考えていたんですが、そういった本があったんですね。
調べてみようと思います。
大変参考になりました。ありがとうございます。
138デフォルトの名無しさん:2006/06/06(火) 07:55:47
良い本なんだが、Game Programingだと校費で買いづらいw
139デフォルトの名無しさん:2006/06/06(火) 20:09:07
Gemsが大学にあるなんてうらやますぃ
140デフォルトの名無しさん:2006/06/11(日) 01:43:24
初歩的な質問なんですが、glPushMatrix()・glPopMatrix()は、
多用しすぎると処理が遅くなるとかってありますか?

別に、気にしない方がいいのでしょうか?
141デフォルトの名無しさん:2006/06/11(日) 12:01:46
>>140
遅くなるかどうかは知らんけど、
スタックが32段しか使えないのは問題になるんじゃないか?
用途にもよるけど。
142デフォルトの名無しさん:2006/06/11(日) 12:27:48
>>140
初歩的な質問に対する答えなら、「気にしなくて良い」
それでも気になるなら自分で計測してみる
143デフォルトの名無しさん:2006/06/11(日) 12:47:57
>>141-142
レストンクス
32段しか使えないんですか・・・それは知らなかったです。
まだ、始めたばかりで複雑なプログラムは書けないのでとりあえず気にしないで、
慣れてきたら自分で測定してみようと思いますm(_ _)m
144デフォルトの名無しさん:2006/06/12(月) 16:49:17
MacとWindows両方で動かす場合、OpenGLで書いておいた方が移植はしやすいですか?
それともDirectXでも対してかわらない?
145デフォルトの名無しさん:2006/06/12(月) 21:10:33
>>144
Win -> Macと軽くエスパーしつつ答えると
DirectXを直接使うのならMac(最近はMacOSといった方が正確か)への移植は厳しい。
DirectXも他のAPIも利用してWindowsにもMacにも対応しているライブラリを使うのならば簡単。
OpenGLを直接使うのなら描写そのものは書き換えずに済むけど
OpenGLを使えるようにするところ(wglMakeCurrentとか)は書き換える必要がある。
GLUTを使えば他でWin32APIを使っていない限り書き換える必要はない。
146デフォルトの名無しさん:2006/06/14(水) 16:10:17
もうBootCampあるから初心者はDirectXでいい希ガス
147デフォルトの名無しさん:2006/06/14(水) 20:53:04
>>146
Windowsと対比する文脈で「Macで動かす」という表現が出てるから
>>144は多分ハードとしてのMacではなくMacOSの話でしょ。
マカーが全員XP買いに走ってるんならDirectXでもいいだろうけどそうでもないし。
148デフォルトの名無しさん:2006/06/18(日) 19:15:01
質問させて下さい。
スイッチ文でGLUT_KEY_UPで↑、GLUT_KEY_RIGHTで→にはキャラを動かせる事は出来るのですが、
右斜め上になると、方向キーの↑と→を押した時後におした方のアクションを起こしてしまうのですが、
なんとかならないのでしょうか?
キーボードで作る場合は無理なのでしょうか?
149デフォルトの名無しさん:2006/06/19(月) 15:10:03
>>148
if(上){ 上を押したとき; }
if(右){ 右を押したとき; }

switchだと

if(上){ 〜 }
else if(右){ 〜 }

という意味になる。
150デフォルトの名無しさん:2006/06/19(月) 16:49:45
上と右を同時に押しても、順番にコールバックが呼ばれるからじゃないのかな。やりたいことを想像するに、

glutSpecialFuncでどこ押されたか、
glutSpecialUpFuncでどこ離されたか、を覚えて、
状態によってglutIdleなどの適当なとこでアクションをすればいいんじゃないの。
151デフォルトの名無しさん:2006/06/19(月) 22:07:53
glutSpecialFuncだけだとOSのキーリピート頼みになるから面倒なんだよな。
2つ同時押しで両方交互に送ってくれるOSってあるのかね。
152デフォルトの名無しさん:2006/06/20(火) 00:49:35
くたばれOpenGLに見えた
153デフォルトの名無しさん:2006/06/20(火) 00:53:43
>>152
妙にツボった。
154デフォルトの名無しさん:2006/06/20(火) 11:14:02
glMatrixMode( GL_PROJECTION );
glLoadIndetity();
glOrtho( 0, 100, 100, 0, -1, 1 );
glMatrixMode( GL_MODELVIEW );
glLoadIndetity();
glBegin( GL_LINE_STRIP );
glColor3f( 1, 0, 0 );
glVertex2i( 1, 1 );
glVertex2i( 3, 1 );
glVertex2i( 3, 3 );
glVertex2i( 1, 3 );
glVertex2i( 1, 1 );
glEnd();
のようにして四角の枠を描画しようとしているのですが、
下のようになぜか左上のドットが欠けてしまいます。
  ■■
■  ■
■■■
これは何が原因でしょうか?
155デフォルトの名無しさん:2006/06/20(火) 15:35:08
もしウィンドウの大きさが100x100ならglOrtho()は0,99にしたらうまくいくんじゃまいか
156デフォルトの名無しさん:2006/06/21(水) 02:41:50
glutを使ってmacでopenglのプログラミングをしているのですが、
いろんなサンプルを見るとglutCreateWindow(char *name)で
ウインドウをつくっていますが、このウインドウをつくらずに、
macのapiでつくったウインドウにデータを描画するといったことは出来ますか
(つまり他のソフトに組み込みたいのです)?出来るなら方法を教えてもら
いたいのですが。よろしくお願いします。
157デフォルトの名無しさん:2006/06/21(水) 04:30:47
>>156
勿論出来る。Mac の API で作ったウィンドウに OpenGL の絵を描画出来なかったら
Glut を実装出来ないでしょ。

方法は知らんけど、これとかはどう?

ttp://son-son.sakura.ne.jp/mt/blog/2006/04/opengl_cocoa.html

Cocoa 以外でも基本的には一緒だ。
158デフォルトの名無しさん:2006/06/21(水) 11:07:20
>>158

ってことは同様に Windows でもコンソールアプリじゃなく、自作の Windowアプリの
なかに描画することはできるのでしょうか?
キーメッセージなどはどうやってくるのでしょうか?
159154:2006/06/21(水) 11:41:10
>>155
レスありがとうございます。
自分のウィンドウの大きさは適当な大きさで、
ビューポートの大きさを
glViewport( 0, 0, 100, 100 );
としていました。
それで glOrtho や glViewport の値を
色々いじってみたのですがやはり駄目でした。

ただ座標値を
glVertex2i( 1, 1 );
glVertex2i( 4, 2 );
glVertex2i( 4, 4 );
glVertex2i( 2, 4 );
glVertex2i( 1, 1 );
のようにしてみたら
一応欠けることなく描画されました。
とりあえず当面はこの方法で対処したいと思います。
160156:2006/06/21(水) 14:20:56
>>157
返答ありがとうございました。まだよくわかっていませんが、
この返答を糧にがんばってみます。
161デフォルトの名無しさん:2006/06/21(水) 21:35:57
3Dのアクションゲームを作ろうと思っているのですが、キャラがマップ上を動くとき、
マップの座標を動かせばいいのですか?それともキャラ+カメラの座標wp動かすのですか?
HPの表示とかするつもりなのでどちらが向いてるか教えてください。
162デフォルトの名無しさん:2006/06/21(水) 21:47:25
>>161
そゆ質問が出る状況では、まだ無理>3Dのアクションゲーム
163161:2006/06/22(木) 17:59:08
(´・ω・`)
諦めます
164デフォルトの名無しさん :2006/06/23(金) 02:55:55
winのVisual C++2005 ExpressEdition でGLUTをつかったOPENGLのプログラミングを始めたいのですが、
公式で落としてきたdll,lib,headerをwebなどを参考にしながらインストールし、
プログラムをコンパイルしてみたところ、
"LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。"
表示されて、コンパイルできません。
C:\Program Files\Microsoft Visual Studio 8\VC\libに'winmm.lib'が存在せず、
WEB上で探してみたのですが、見つかりません。WEBの情報をもとに、
DLLから変換しようともしてみたのですが、うまくいきません。
どうすればいいでしょうか?
非常に初歩的な質問で申し訳ありません。
どなたかわかる方いらっしゃいましたら、教えていただけたらと思います。
どうかよろしくお願いします。
165デフォルトの名無しさん:2006/06/23(金) 03:08:01
>>164
スレ違いだな。
ヒント:Platform SDK
166164:2006/06/23(金) 19:17:47
スレ違いの質問、失礼しました。
「Platform SDK」について調べてみたところ問題は解決いたしました。
スレ違いの質問に対して、親切にもヒントを与えてくださり誠に感謝します。
本当にありがとうございました。
167デフォルトの名無しさん:2006/06/29(木) 10:22:45
0penGLは終わったって友人に言われたんですけど、んなことないですよね?
これから勉強始めようと思ってるのですが。
168デフォルトの名無しさん:2006/06/29(木) 15:58:01
OpenGLは、PS/PS2/PS3の標準APIだよ。正確には独自拡張部分があるけど
UNIX系やMac系でも標準API

ただし、Windowsだけに限れば終わったも同然
VistaからはDirectXに命令が変換されて実行されるので6割程度しか速度出ない。
ま、WindowsしかターゲットにしないならDirectXいっときな。
ただWindowsでしか動かせないけどw
169デフォルトの名無しさん:2006/06/29(木) 23:00:14
>>167
VistaからOpenGLが遅くなるというのは半分以上嘘。
WDMを切れば今まで通りだし、ベンダが新しいICDを使うドライバを
書いてくれればWDMと共存が可能。

OpenGLスレ Part10
ttp://pc8.2ch.net/test/read.cgi/tech/1141034983/185

ttp://blogs.msdn.com/kamvedbrat/archive/2006/02/22/537624.aspx
170167:2006/06/30(金) 00:43:29
べつにMicrosoft信者じゃないんでWindowsにはこだわりません。
光通信専門なんでWDMと言われると波長分割多重しか思いつきませんが、やっぱ違う・・・な?w
ありがとうございました―。
171デフォルトの名無しさん:2006/06/30(金) 20:37:50
OpenGLが終了なのではない。

お前が終了なのだ。
172デフォルトの名無しさん:2006/07/01(土) 01:00:22
glut32.dllは再配布可能なのでしょうか?

調べたところ国内サイトで再配布可能と言うところが2つほどあったのですが、
公式には確認できませんでした。
173デフォルトの名無しさん:2006/07/01(土) 01:14:57
>>172
glut32.dll の添付ドキュメントにちゃんと書いてあるよ?
曰く、パブリックドメインではないが、ライセンス料無しで配布して構わない。

原文
COPYRIGHT:

The OpenGL Utility Toolkit distribution for Win32 (Windows NT &
Windows 95) contains source code modified from the original source
code for GLUT version 3.3 which was developed by Mark J. Kilgard. The
original source code for GLUT is Copyright 1997 by Mark J. Kilgard.
GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the
public domain, but it is freely distributable without licensing fees.
It is provided without guarantee or warrantee expressed or implied.
It was ported with the permission of Mark J. Kilgard by Nate Robins.

THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

OpenGL (R) is a registered trademark of Silicon Graphics, Inc.
174デフォルトの名無しさん:2006/07/01(土) 08:50:11
winのVisual C++2005 ExpressEdition を無料でダウンロードして
glut.hやglut.lib,glut.dilなども所定のファイルに置いたのですが
プログラムをビルドしたら、
d:\c3-2\c3-2.c(4) : fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or directory
というエラーがでてきてしまいました。
何がいけなかったのでしょうか?超初心者ですいません
175デフォルトの名無しさん:2006/07/01(土) 10:41:31
>>174
No such file or directory
176デフォルトの名無しさん:2006/07/01(土) 10:53:39
>>174
よく見てみればOpenGLによる3次元CGプログラミングのサンプルコードか。
俺も最初にOpenGL触った時の本はこれだったな。

エラーが出てるって事は所定のフォルダにないってことだからよくチェックしろ。
ExpressEditionとはちょっと違うかもしれないが、具体的には標準のパスでインストールすると
C:\Program Files\Microsoft Visual Studio 8\VC\include\
ここの中にGLってフォルダを作ってその中に放り込む。
あとPlatformSDKはインストールしたか?ExpressEditionでは別途必要になるぞ。
177172:2006/07/01(土) 11:22:53
>>173
ありがとうございます。
見落としてました・・すいません・・・
178デフォルトの名無しさん:2006/07/01(土) 11:37:37
openGLで3次元グラフ書くことになったんですが、参考になるサイトとか本ってありますか?
openGLで検索するとアニメーションとかはあるんだけどグラフとかはなくて、
openGL グラフで検索すると商品紹介ばっかりで、目当てのものHITしにくい・・・
179デフォルトの名無しさん:2006/07/01(土) 12:14:07
>>178
OpenGLには「グラフを描画する」といった、特定の目的用の機能はついてない。
つまり、OpenGLとグラフは直に結び付いてない。
なので、分けて考えることが出来ると思うよ。
1) OpenGLで何が出来て、何が出来ないのか
2) 「OpenGLで出来ること」を利用してグラフを描くにはどうすればいいか
こんな事を調べたり、考えてみれば良いと思う。
180デフォルトの名無しさん:2006/07/01(土) 14:02:07
>>176
ありがとうございます
でも今度は
LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。
ってのが出てきちゃったんですが・・・・
181デフォルトの名無しさん:2006/07/01(土) 15:14:08
182デフォルトの名無しさん:2006/07/01(土) 17:18:13
>>181
PlatformSDKはインストールするだけで良いんですよね?
それでもエラーが消えなくて
183デフォルトの名無しさん:2006/07/01(土) 17:46:52
>>179
なかなかネット検索で見つからないのはそれが原因ですか・・・
GL_TRIANGLEとか使いまくってなんとか形には出来ました
恐ろしく不恰好ですがorz

また問題発生したらよろしくお願いします 
184デフォルトの名無しさん:2006/07/01(土) 17:48:22
>>183
Tesselatorに丸投げしちまえばいいじゃん。
185デフォルトの名無しさん:2006/07/01(土) 18:24:58
『OpenGLによる3次元CGプログラミング』を半分くらい読みました。
分かりやすく初心者にとって良い本だとは思いますが、重要な所をかなり端折って書かれてるような気がします。
一通り読み終えたら別の本に移ろうと思いますが、程良いステップアップになるオススメの本あったら教えて下さい。
186デフォルトの名無しさん:2006/07/01(土) 18:57:29
>>185
端折ってるなんて前書き読めばわかるだろうに。
もし網羅的にやるんなら赤本でもどうぞ。
187デフォルトの名無しさん:2006/07/01(土) 21:59:46
誰も網羅的なんぞ言ってない。
つか性質が全く異なる本勧めてどうする。
188デフォルトの名無しさん:2006/07/01(土) 22:52:13
>>187
別の本に移るっていってるでしょ?
むしろ同じような代物勧めてどうするの?
189デフォルトの名無しさん:2006/07/02(日) 09:08:19
m9(^Д^)
190デフォルトの名無しさん :2006/07/02(日) 18:16:59
>>182
164ですが、VC++expressの方の設定もいじらないといけないみたいですよ。
自分の場合、ツール>オプション>プロジェクトおよびソリューションの左の+ボタンを押す>
VC++ディレクトリ
で、実行可能ファイルにC:\Program Files\Microsoft Platform SDK\Bin
インクルードファイルにC:\Program Files\Microsoft Platform SDK\Include
ライブラリファイルにC:\Program Files\Microsoft Platform SDK\Lib
を入れたらできました。

この前の恩返しがしたくて…
スレ汚しすみません。

OpenGLってたのしいですね!!
191デフォルトの名無しさん:2006/07/06(木) 09:16:13
そうでもない。
192デフォルトの名無しさん:2006/07/06(木) 11:25:34
ククク、楽しーうちが華なのヨ(笑)
今を目一杯満喫するがいいサ
193デフォルトの名無しさん:2006/07/11(火) 18:17:56
あの、塗りつぶされた枠付きの(例えば)三角形を描くときって、
塗りつぶされた三角形をかいてから線描の三角形を描くのでしょうか?
一発でできませんよね?
194デフォルトの名無しさん:2006/07/11(火) 23:10:43
「塗りつぶされた三角形をかいてから線描の三角形を描く」関数を呼び出せば一発だじぇ
そして、その関数をどうするかって話だじぇ
195デフォルトの名無しさん:2006/07/12(水) 00:26:24
openglのx,yの座標って(-1.〜1. , -1〜1. )ですよね。
それを(0〜n1, 0〜n2)にする方法はどのようにすればよろいしいの。
196デフォルトの名無しさん:2006/07/12(水) 00:28:17
ポカーン
197デフォルトの名無しさん:2006/07/12(水) 00:28:35
またおまゑか
198デフォルトの名無しさん:2006/07/12(水) 13:20:14
>>195

好き勝手な (x0,y0)-(x1,y1) で使っていますけど。。。
あほな例題が多いのが欠点ですね。。日本語のHPは; (-1,-1)-(1,1) だと思いこんでいる。。
199デフォルトの名無しさん:2006/07/12(水) 18:23:24
>>195
glOrtho() あたりを調べてみる
200デフォルトの名無しさん:2006/07/13(木) 14:35:55
>>199
ありがとう、できました。
windowのサイズで(例えば、640x480)とかで座標を指定するのは
一般的でないのですかね?
あと、z軸っていうのはこう言ったときどう指定しているのでしょうか
(よくわからなかったのでそのまま-1〜1にしましたが)?
201デフォルトの名無しさん:2006/07/13(木) 16:22:19
OpenGL上でMPEGを再生するライブラリは存在しますか?
202デフォルトの名無しさん:2006/07/13(木) 20:38:19
テクスチャが複数あったとき、
glTexSubImage2Dって
対象のテクスチャをどうやって指定するの?
203デフォルトの名無しさん:2006/07/13(木) 20:52:20
>>201
昔見たようなレスだがOpenGLにそんなもんない。

>>202
現在バインドされているテクスチャが対象。
204202:2006/07/13(木) 21:02:21
>>203
サンクス
205デフォルトの名無しさん:2006/07/14(金) 05:44:09
glBegin( GL_LINE_LOOP );
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glVertex2f(x3, y3);
glVertex2f(x4, y4);
glEnd();
で囲まれた部分を塗りつぶすにはどうしたらいいんですか?
206デフォルトの名無しさん:2006/07/14(金) 19:31:59
ポリゴン作れ
207デフォルトの名無しさん:2006/07/15(土) 01:22:14
>>206
そうでなくて、GL_LINE_LOOPだと最初と最後が繋がりますよね。
そうしたら、値によっては四角形ではなくて蝶々だったりリボンのような三角形を
二つ向かい合っているような図形になるんですよ。
GL_POLYGONで塗りつぶしすと違う形になるのです。
つまり上の図形を枠に内面を塗り潰したいです。
だれか教えて下さい。よろしくお願いします。
208デフォルトの名無しさん:2006/07/15(土) 08:11:14
>>207
GL_POLYGONは凸状のねじれの無いポリゴンのみ正確に描ける。(3角形に分割している)
大体リボンの形は4角形では無い。(一枚の紙(4角形)をどうねじってもリボンにはならない)
ねじれる可能性があるなら、自分で2つの領域に分けてください(交点を求める)
4点を順にa,b,c,dとするとdot( cross( ab, ac) , corss( ac, ad ) )が負ならねじれてるのかな。(嘘かも)
そんな感じでがんばってください。
209デフォルトの名無しさん:2006/07/15(土) 12:14:24
0.全領域を0で埋める。
1.三角形abdの領域を1で埋める。
2.三角形bcdの領域を反転する。
3.1で埋められている領域に色を塗る。
とかやればできるかな?
ステンシルってそんなふうに使えるのかな?よく知らんけど。
210デフォルトの名無しさん:2006/07/17(月) 00:56:08
>>209
面白いけどちょっと境界が怪しそうだね
と思ったら赤本に似たようなの載ってた
211デフォルトの名無しさん:2006/07/17(月) 08:50:46
面倒だから全部Tesselatorでやっちゃえばいいじゃない
212デフォルトの名無しさん:2006/07/22(土) 10:19:41
雲っぽいエフェクトをGLで作りたいんですが
どこから調べればいいか分かりません。
何か糸口になるようなヒントをいただければありがたいです。
213デフォルトの名無しさん:2006/07/22(土) 14:54:37
雲のポリゴンを沢山置く
214デフォルトの名無しさん:2006/07/22(土) 20:41:52
ビルボード
215デフォルトの名無しさん:2006/07/25(火) 06:33:06
ttp://www.nullterminator.net/opengl32.html
ここの一番下にあるサンプル動かしたらCPU使用率がずっと100%になるんですが
何処が原因なんでしょうか
216デフォルトの名無しさん:2006/07/25(火) 18:47:39
原因も何も、そういうプログラムを作ってるからだろ。
217デフォルトの名無しさん:2006/07/25(火) 23:16:37
GLのライブラリがリンクされません。
開発環境はXP-VC++2003です。
vcのlibフォルダにopengl32.libなどは入っています。

以下のようなエラーが出ます。
test error LNK2019: 未解決の外部シンボル __imp__glClear@4 が関数 "void __stdcall display(void)" (?display@@YGXXZ) で参照されました。
test fatal error LNK1120: 外部参照 16 が未解決です。
218デフォルトの名無しさん:2006/07/25(火) 23:23:50
#pragma comment(lib,"opengl32.lib")
219デフォルトの名無しさん:2006/07/25(火) 23:25:58
>>218
それも試しました
220デフォルトの名無しさん:2006/07/26(水) 10:06:33
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA)を使用して球を半透明にしたのですが、なぜか球の側面に2つ穴が開いてしまいます。
その球の後ろに何もない状態なら普通に表示されるのですが、後ろに物を置くと穴が開いてしまいます。
原因分かる方、ご教授お願いしますm(_ _)m
221デフォルトの名無しさん:2006/07/26(水) 16:11:58
つ google "Zソート Zバッファ"

だけだと可哀想なのでもうちょっとヒント
Zバッファによる陰面消去は、透明ありだといろいろ問題が発生する
対象物をZソートしてみ
222デフォルトの名無しさん:2006/07/27(木) 08:47:25
>>221 ありがとうございます。
調べてみたのですが、Zソートは陰面消去の一つの方法という事みたいですが、
これをどうopenglで表現するのか・・・もう少し調べてみます。。
223デフォルトの名無しさん:2006/07/27(木) 12:15:47
やりたいことにもよるけど、ソートせずに、
非透明を全部描いてからデプスバッファを書き込み禁止にして半透明を描けばokになる場合もあるかと
224デフォルトの名無しさん:2006/07/27(木) 13:50:17
>>223 ありがとうございます。
glDepthMask(GL_FALSE)で無効化してから不透明を書いても、やはりダメでした。。
やりたいことは、不透明な物の周りに不透明な球をいくつか置きたいです。
225223:2006/07/27(木) 15:31:01
その穴ってのがどういうのか判らんけど、
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
でうまくいくとかいう話ではない?あとは球の裏向きポリゴンのカリングとかかな...

でも不透明な周りに不透明で重なりあうなら、正確にはZソートしないとダメかもね。
が、glDepthMask(GL_FALSE)で穴が開くのはそれはそれで変だけど。
226デフォルトの名無しさん:2006/07/27(木) 15:46:21
>>225 ありがとうございます!
球の裏向きをカリングするようにしたら、正確に表示されるようになりました。
以前ポリゴンを両面化したものを表示しようとしたら筋が入ったので、
それも関係しているのでしょうかね。。
みなさん、親切にご回答いただきありがとうございましたm(_ _)m
227デフォルトの名無しさん:2006/08/01(火) 16:38:30
-1.~1.の範囲で描画した図形は回転できますが、
glViewport(0, 0, 100, 100);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0. , 100. , 0. , 100. , -1. , 1.);
gluPerspective(45, (double)w / (double)h, 1.0, 100.0);
みたいに設定した0~100の図形だと上手く回転できません。
いろいろ調べたけれどわかりません。
回転のときは-1.~1.の範囲で描画しないとダメなのでしょうか?
228デフォルトの名無しさん:2006/08/02(水) 00:48:05
赤本読み直せ。
マトリクスによる座標変換の意味が分かってないだろ。
229デフォルトの名無しさん:2006/08/02(水) 20:26:00
赤本って12000円の奴?
あれいいの?

OpenGL関連の書籍って数少ないからどれ買うか迷う・・
230デフォルトの名無しさん:2006/08/02(水) 21:15:27
使えない本が氾濫してるDirectXよりはましじゃね?
いうなればDCソフトみたいなもんだ。
231デフォルトの名無しさん:2006/08/25(金) 07:14:50
GTK+ と OpenGLで2Dの画像処理をしたり,アニメーションさせたりする場合,
どっちが描画早いですか?
あほっぽい質問ですいません...
232デフォルトの名無しさん:2006/08/25(金) 13:41:08
OpenGLでスクリーンキャプチャ機能を付けたいんですが、
プライマリバッファへのポインタはどうやって取得できますか?
DirectXだとプライマリサーフェイスをLockすればいいんですが…
233デフォルトの名無しさん:2006/08/25(金) 13:48:14
glReadPixels
234デフォルトの名無しさん:2006/08/25(金) 18:17:56
すみません、232の方とは別の人間なのですが、

GLubyte * bits;
GLint width,height;

width = 513;
height = 407;

bits = (GLubyte *) malloc( (width * height)*3 );

::glReadPixels( 0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, bits);

このように指定した際に、glReadPixelsのところで必ずエラーがでます。
いろいろ調べたところ、widthとheightの値がこの数値の組み合わせのときのみ起こるようです。(513,407)

実際にはこのコードは別の3Dツールのプラグインのために書いているのですが、
その3Dツールが原因以外になにか原因になりそうなことありますでしょうか?
235デフォルトの名無しさん:2006/08/25(金) 18:47:05
>>234
ReadPixelする前にコレ

glPixelStorei(GL_PACK_ALIGNMENT,1);
236234:2006/08/25(金) 19:06:12
>>235
ありがとうございます!できました〜。

glPixelStoreiでどういうふうにデータが格納されてるのかOpenGLに伝えないといけなかったんですね。
どうもありがとうございました。
237デフォルトの名無しさん:2006/08/26(土) 11:49:58
>>236
デフォルトではwidthは4バイトの倍数と勝手に仮定されちゃうわけ。
その方が処理が速いから。
だから513って設定しても、内部では516として扱われちゃう。
そうなるとmallocで割り当てたサイズじゃ足りないからエラーが出ちゃうの。
だからglPixelStoreiで「widthは1バイトの倍数でお願い」ってやれば解決するの。
238234:2006/08/26(土) 15:13:57
>>237
解説ありがとうございます。よりくわしく理解できました。
…というか、glPixcelStoreiをちょっと違う風に誤解してました。
重ね重ねありがとうございます。
239デフォルトの名無しさん:2006/08/29(火) 01:22:44
OpenGLで被写界深度をやりたいと思っています。

glCopyTexImageでフレームバッファをテクスチャー化して、gluBuild2DMipmapsでミップマップを作ってみたり、
glReadPixcelでフレームバッファを読み取って、gluScaleImageをつかって拡縮をしてみたりして、
ぼかしたテクスチャーをつくっているんですが、いずれもとても重たくて使い物になりません。

他になにかいい方法はありますか?
240デフォルトの名無しさん:2006/08/29(火) 01:33:32
シェーダー使え。
241239:2006/08/29(火) 15:53:28
GLSLとかCgとかですか?>シェーダー
実はまだ使ったことないんですが、がんばってみます。
242デフォルトの名無しさん:2006/08/31(木) 14:09:47
OpenGLでvsync同期を取るにはどうすればいいんですか?
横スクロールでティアリングしまくって困ってます。
243デフォルトの名無しさん:2006/08/31(木) 15:04:54
つwglSwapIntervalEXT
244242:2006/09/06(水) 12:48:13
>>243
レスサンスコ

でもwglGetProcAddress("wglSwapIntervalEXT")でNULLを返されちゃう
ウチの環境ではvsync同期は不可能なのかしらん。
245243:2006/09/06(水) 16:33:00
環境がわからないのでなんとも言えないが、
とりあえずドライバを新しくしてみるとか。
wglSwapIntervalEXTはWGL_EXT_swap_controlなので
それが使えるかどうかglinfoとかで調べてみるとか
246デフォルトの名無しさん:2006/09/07(木) 19:59:39
GLの座標系から画面座標系に変換するにはどうしたらいいですか?
247デフォルトの名無しさん:2006/09/07(木) 20:54:31
射影変換のこと聞いてるの?
248デフォルトの名無しさん:2006/09/07(木) 21:09:55
glRasterPos と ARB_window_pos のことだろ。
249デフォルトの名無しさん:2006/09/07(木) 21:22:28
ええと、OpenGLの中心を原点とした座標からglutでマウスを押したときとかにわたってくる座標の形式にしたいんです。
250デフォルトの名無しさん:2006/09/07(木) 22:04:45
gluProject() ?
251デフォルトの名無しさん:2006/09/08(金) 05:02:56
GLの質問とちょっと違うんだけど、スムージング角度を指定して面の法線から
綺麗にみえる頂点の法線を求めるにはどうすればいいの?

ぐぐったら、面法線と面法線を合成して出した頂点法線との内積を
スムーズジング角度のradのcosと比較して
面法線を使うか頂点法線を使うか切り替えてる例があったけど、
やってみたらメタセコの表示とだいぶ違うし・・・

上を参考に頂点ごとに面法線を使うか頂点法線を使うかのフラグ配列作って
フラグを見ながら頂点法線を使うのだけ面法線を合成した頂点法線作って見たけど
うまく行かなくてもうわけわかめです
252デフォルトの名無しさん:2006/09/08(金) 08:57:15
>>251
プラグインSDKにそれのコードあるよ。
253デフォルトの名無しさん:2006/09/08(金) 10:02:03
>>251
>>252のを見ずに言うけど、面法線の合成方法が違うんじゃないか?
単純な加算じゃなくて頂点の角度の割合みたいなもので重み付けしているはず。
254デフォルトの名無しさん:2006/09/08(金) 20:34:34
>>252
>>253
そのものずばりの関数が用意してあったんですね
試してみます。ありがとうございます
255デフォルトの名無しさん:2006/09/09(土) 00:48:18
CADの作り方を教えてください。
256デフォルトの名無しさん:2006/09/09(土) 02:15:15
断る
257255:2006/09/09(土) 03:01:41
>>256
そこをなんとかお願いします。
VC++ MFC MDIでと考えています。
頂点の情報とかどうやって保持するのがいいですか?
258251:2006/09/09(土) 16:50:41
スムージングできたヽ(・∀・)ノ
259デフォルトの名無しさん:2006/09/10(日) 08:43:17
260デフォルトの名無しさん:2006/09/10(日) 12:35:51
>>257

struct Vertex
{
 float x;
 float y;
 float z;
};
261デフォルトの名無しさん:2006/09/10(日) 12:53:54
float(笑)
262デフォルトの名無しさん:2006/09/12(火) 12:36:04
OpenGLで簡単にモデル(メッシュ?)を読み込む方法はないですか?
263デフォルトの名無しさん:2006/09/12(火) 13:16:25
sscanf(笑)
264デフォルトの名無しさん:2006/09/12(火) 13:36:49
>>262
適当にライブラリを引っ張ってくる
265デフォルトの名無しさん:2006/09/12(火) 13:57:34
その適当なのが初心者には分からんのだよ
266デフォルトの名無しさん:2006/09/12(火) 15:07:06
初心者ならneheとかのゲーム系覗いて来ればいいと思うお^^
267デフォルトの名無しさん:2006/09/12(火) 16:51:34
うん、neheはいい。
268デフォルトの名無しさん:2006/09/12(火) 18:14:56
どれどれ
269デフォルトの名無しさん:2006/09/12(火) 20:59:30
もっとわかりやすいのないですか?
270デフォルトの名無しさん:2006/09/12(火) 23:32:35
キューブマッピング用の画像とかどっかに落ちてない?
271デフォルトの名無しさん:2006/09/13(水) 02:46:15
500万の点群のすべてにそれぞれ名前つけるのって無謀ですか?
やりたいことは点の選択です。
272デフォルトの名無しさん:2006/09/13(水) 10:45:08
nameは一応メモリのある限り名前振ってくれるとは思うけど
一気に500万から探すのはどうだろ
オブジェクトごとに分かれてるなら一度オブジェクトを調べて
それから絞り込むとかどうよ
273デフォルトの名無しさん:2006/09/13(水) 13:03:07
274デフォルトの名無しさん:2006/09/13(水) 17:48:46
>>273
おおー凄い
ありがとう

やっぱ海外のサイトにしか落ちてないのかな
275デフォルトの名無しさん:2006/09/15(金) 12:08:46
クリックして選択した頂点をマウス移動でぐりぐり動かせないお><
逆行列とか使うの?
276デフォルトの名無しさん:2006/09/15(金) 19:46:37
そういえば、OpenGLって逆行列を作成する関数無いよね
どこかにないかな〜
277デフォルトの名無しさん:2006/09/15(金) 23:00:00
自作
278デフォルトの名無しさん:2006/09/15(金) 23:01:56
4×4ってきつくね?w
279デフォルトの名無しさん:2006/09/16(土) 01:41:36
こっそりD3DXMatrixInverse使ってます...
280デフォルトの名無しさん:2006/09/16(土) 09:39:21
紙に随伴行列書き出して頑張るのですよ。
281デフォルトの名無しさん:2006/09/16(土) 10:28:26
gluUnProjectのZの深さを勘違いしてただけだったおヽ(´ー`)ノ
282デフォルトの名無しさん:2006/09/16(土) 14:24:31
>276
そもそもCPUで純粋に行列計算だけをする関数が無い。それはOpeGLの担当ではない。
283デフォルトの名無しさん:2006/09/16(土) 17:20:28
馬鹿の肥溜め

ああ 哀れ
284デフォルトの名無しさん:2006/09/20(水) 23:07:13
ちょwwwwwwwwww
G200のOpenGLドライバのLineサイズが0.5〜1.0ってwwwww
なんか変だと思ったwwwどうしようwwwww
orz
285デフォルトの名無しさん:2006/09/22(金) 00:35:26
法線方向に膨らませてなんとかなったwwwwwwwwwうぇwwwww
286:2006/09/24(日) 08:23:25
りえ子、結婚してくれ

頼む
287りえ子:2006/09/24(日) 13:15:28
288デフォルトの名無しさん:2006/09/26(火) 20:24:30
「GLUTによるOpenGL入門」を読んだくらいの初心者です。

OpenGLが主に3D描画を行うライブラリだということは分かるのですが、
僕がやりたいのは2D描画で、例えばBMP画像やPNG画像を読み込んで
回転or拡大縮小させて表示するようなことがやりたいです。

特に「PNG画像を読み込む」が激しく車輪の再発明くさいので、
コードを書きたくありません。

何かライブラリがありましたら教えてください。
289デフォルトの名無しさん:2006/09/26(火) 20:28:19
BMPならPSDK入れて#include <windows.h>
PNGならlibpng
290デフォルトの名無しさん:2006/09/26(火) 20:32:29
最近のOSはWindowSystemの下の層にOpenGLを使ってるそうだけど、
Window上でOpenGLを使ったときにちゃんと描画されるのは何故なんだろう・・・
291デフォルトの名無しさん:2006/09/26(火) 21:21:13
>>289
ありがとうございます。試してみます。
292デフォルトの名無しさん:2006/09/27(水) 00:14:53
293デフォルトの名無しさん:2006/09/27(水) 07:32:14
GLUTで、クリックした時のマウス座標は取れたのですが、クリックしていない時の
マウス座標を取るにはどうしたらよいのでしょうか?
(例えばマウスを追い掛けるアクセサリのようなものを作りたい)
294デフォルトの名無しさん:2006/09/27(水) 15:28:34
>>293
使った事が無いのですが、説明通りだとするとこれが使えそうですね。

void glutPassiveMotionFunc(void (*func)(int x, int y));

http://opengl.jp/glut/section07-06.html
295デフォルトの名無しさん:2006/09/27(水) 19:58:23
>>294
そんな関数があったとは……。感謝です。
296デフォルトの名無しさん:2006/09/28(木) 22:01:01
拡張機能のCVAは内部で何をやってるのでしょうか?

VBOとかはググれば出るんですがCVAの説明って無いんですよね。
297デフォルトの名無しさん:2006/09/28(木) 22:29:25
何もしなくなるのがCVAだと思うんだが
298デフォルトの名無しさん:2006/09/29(金) 22:34:14
何をしなくなるんでしょうか?
299デフォルトの名無しさん:2006/09/29(金) 23:23:16
りえこお〜
300りえこ:2006/09/30(土) 08:50:54
あなたなんか知らないわっ
301デフォルトの名無しさん:2006/10/12(木) 09:53:20
gluPickMatrixはウィンドウ座標でピッキングする時に使いますが、
ワールド座標でピッキングしたいときはどうしたらよいでしょうか?
302デフォルトの名無しさん:2006/10/12(木) 10:37:50
日本語でおk
303301:2006/10/12(木) 12:05:29
書き方が悪くてすみません
自己解決したので見なかったことにしてください
304デフォルトの名無しさん:2006/10/16(月) 08:39:25
質問です。
四角ポリゴンにテクスチャを貼ってスプライトの様に表示しています。
glColor4fを使うことでアルファを変更したり色彩を落としたり
できますが、逆に白っぽくするにはどうしたら良いでしょうか?
glColor4f(1,1,1,1)が「テクスチャをそのまま表示する」という
状態ですので、数値を減らして暗くすることは出来ても、
数値を上げて明るくすることはできないですよね?
他に方法はありますか?
305デフォルトの名無しさん:2006/10/16(月) 09:27:47
テクスチャを明るくして普段はGL_MODULATEでglColor4f(0.5,0.5,0.5,1.0);
306デフォルトの名無しさん:2006/10/16(月) 13:08:48
りえ子、一緒にラーメン食いに行かない?
307デフォルトの名無しさん:2006/10/16(月) 19:08:11
>>305
GL_BLEND使った方が早くね?
308デフォルトの名無しさん:2006/10/16(月) 20:09:00
GL_LIGHTINGをセットしポリゴン描画時に法線ベクトルを設定すると、
角度によって影っぽいのがつき色が変化すると思いますが、
そのポリゴンにテクスチャを貼ると角度によっての変化がなくなってしまいます。
どうすればいいのでしょうか?
309308:2006/10/16(月) 21:22:22
自己破産しました。
ご迷惑おかけしました。
310デフォルトの名無しさん:2006/10/17(火) 03:43:31
OpenGLとは直接は関係ないのですが

fltk2でfltk::GlWindowを使ってマウスイベントに反応するOpenGLプログラムを書こうとしているのですが、思うようにいきません。
toplevelにfltk::GlWindow派生クラスウィジェットを使うと、handle()メンバでfltk::MOVEイベントが拾えるのですが、
fltk::Windowなどをtoplevelにしてfltk::GlWindow派生ウィジェットを子ウィジェットとすると子ウィジェット側のhandle()メンバで
fltk::MOVEイベントが拾えません。ただし、fltk::PUSHなどのイベントはちゃんと拾えてます。

子ウィジェットへのイベントの伝達がフィルタリングされてるのかな?と思うのですが、対応方法を教えて下さい
311デフォルトの名無しさん:2006/10/19(木) 09:11:20
メタセコとかみたいに矩形の枠を描いて範囲指定して
ピックアップするのはどうやるん?
312デフォルトの名無しさん:2006/10/19(木) 11:09:35
3次元座標→2次元座標
2次元座標とマウスの範囲を比較
313310:2006/10/20(金) 02:21:11
Linuxで弄っていてうまく逝かなかったのですが、今MinGW32で試して見た所fltk::MOVEイベントを拾うことが出来ました…システム&実装依存の問題だったか… orz

…問題はどっちが正しい動作なのだろう… orz
314デフォルトの名無しさん:2006/10/20(金) 08:46:26
>>312
ありがと、やってみる
315デフォルトの名無しさん:2006/10/22(日) 20:21:26
>>10
template ベースの画像処理ライブラリーをベースに改造したらいいんじゃね?
vigraとか使えそう
316デフォルトの名無しさん:2006/10/25(水) 18:28:06
日本語描きたいんだけど、ビットマップデータ読み込んで、glBitmap使うしかないかしら?
テクスチャ作りたいんだけど・・・。
317デフォルトの名無しさん:2006/10/25(水) 19:11:47
テクスチャ作ってポリゴンに張るのをディスプレイリストに入れておけばいいじゃないか。
文字列をwchar_tの配列にしておけば多バイトの問題もないっしょ。
318デフォルトの名無しさん:2006/10/26(木) 02:12:27
>>316
freetype2 を使ったライブラリがあったと思ったけど。
319デフォルトの名無しさん:2006/10/26(木) 14:55:04
テクスチャを作るにしろglBitmapにしろ、フォントの
ビットマップを作る方法から探さないとな。

3D文字列でいいならwglUseFontOutlinesを使えばいいんじゃね
ttp://www.asahi-net.or.jp/~yw3t-trns/opengl/samples/kanji1/index.htm

ショボイけどOpenGL Meshってやつで16x16ドットの日本語は使える
ttp://zzt-kuruma.hp.infoseek.co.jp/opengl.htm
320デフォルトの名無しさん:2006/10/26(木) 17:11:32
321デフォルトの名無しさん:2006/10/26(木) 18:54:27
フォントサイズを自由に変えるとしたら2Dフォントをテクスチャマップして
拡大縮小するのと3Dフォントを使うのではどちらが良いでしょうか?
322デフォルトの名無しさん:2006/10/30(月) 20:20:54
クオータニオンをX座標中心に10度回転させるとかって、
どうするか教えて下さい。
ぐぐって見たけど、ようわからんですた。
行列とか、三角関数とかは一応分かります。

よろしくお願いします。

323デフォルトの名無しさん:2006/10/31(火) 08:18:50
>>322
↓クオータニオンについて直感的かつ世界で一番分かり易い説明。

ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040321

まぁ、プログラマに取ってはという話だが…
数式オナニー系の説明が見たかったら、他を紹介するから言ってくれ。
324デフォルトの名無しさん:2006/10/31(火) 21:21:06
>>323
ありがとうございます。
これ見ても、さっぱりわかりませんが「金谷先生の本」ってのを読んで見ます。
325デフォルトの名無しさん:2006/10/31(火) 23:16:21
326デフォルトの名無しさん:2006/11/02(木) 03:47:06
申し訳ありませんがプログラム実行時の現在左下から動き出す1個の四角形を犬の口から3個発射できるようにして、4回目の発射から四角形が四方八方に花火のように破裂する
openglアニメーションを作成したいのですがどうすればいいですか?
background.cを実行します。ファイルは↓においてあるのでお願いします。
http://www.fileup.org/fup116601.zip.html
327322:2006/11/03(金) 00:55:02
>>325
ありがとうございます。
何となく分かってきた気がします。

後、2,3回質問すると思うけど、よろしく御願いします。
ALL
328デフォルトの名無しさん:2006/11/03(金) 23:08:52
すみません
http://delfin.klte.hu/aixdocs/normal/usr/share/man/info/en_US/a_doc_lib/libs/openglrf/gluPerspective.htm#B5C8872587rree
ここに書いてある透視変換行列の中身についてなのですが
クリッピングする部分の要素がどうしてこのような式になるかが解りません。(数学的に)
どなたか解る方がいましたら解説お願いします。
329デフォルトの名無しさん:2006/11/03(金) 23:15:24
りえ子、

結婚してくれよ
330デフォルトの名無しさん:2006/11/06(月) 16:42:36
OpenALに関する初心者的な質問をしたいのですが、どのスレでするのが効果的でしょうか?
OpenALはOpenGLの親戚という話も聞くのでOpenGLのスレで聞くのもいいかなと思いましたが・・・
331デフォルトの名無しさん:2006/11/06(月) 17:09:07
だれだよそんな与太話したのは。
332デフォルトの名無しさん:2006/11/06(月) 17:11:29
333デフォルトの名無しさん:2006/11/06(月) 17:22:21
>>332
( ´∀`)ノシ
334デフォルトの名無しさん:2006/11/07(火) 22:29:29
glUniformMatrix〜の第3引数のことなんですが
GL_TRUEとGL_FALSEで、
動作がどのように変わるのでしょうか
どなたか教えてください
おながいします
335デフォルトの名無しさん:2006/11/07(火) 22:43:22
GL_TRUE,GL_FALSE嫌いだお( ^ω^)
TRUE,FALSEがいいお( ^ω^)
336デフォルトの名無しさん:2006/11/15(水) 14:51:47
もの凄い初歩的な質問で恥ずかしいのですが・・・

ウィンドウ内に適当なオブジェクトを表示した際に、ウインドウ外にはみ出し
た部分(ウィンドウイング変換の時点で矩形領域からはみ出した部分?)を表示
させたいのですが、どうしたらいいのでしょうか?単にウィンドウサイズを変
えたり視点を変えるだけでは表示されてくれないので・・・
337デフォルトの名無しさん:2006/11/15(水) 19:28:30
>336
何言ってるのかいまいちわからんけど
glViewportのパラメータををウィンドウサイズに一致させるといいかも
338デフォルトの名無しさん:2006/11/15(水) 22:14:31
複素数の一括大量処理で
x[]とy[]に対し、

y[]=y[]+ax[]
という演算を行いたい場合、glMultiTexCoord2fを使うといいようですが、

同様な方法で
Y[]=X[]*Y[]
つまり
Yreal=Xreal*Yreal-Ximg*Yimg
Yimg=Xreal*Yimg+Ximg*Yreal
を行いたい場合は、何を使うのが効率的なんでしょうか
339デフォルトの名無しさん:2006/11/15(水) 23:14:56
GL_TRUEよりTRUEの方が効率的だお( ^ω^)
340デフォルトの名無しさん:2006/11/16(木) 10:17:55
OpenGLでグラフィックスを始めてまだ二週間ほどの者です

glutIdleFuncで画面を更新させているんですがちらつきが酷いです

何か解決法があると思うのですが教えていただけないでしょうか?
341デフォルトの名無しさん:2006/11/16(木) 17:23:25
後1ヶ月勉強してから来ましょう
342336:2006/11/16(木) 17:50:20
>337
早速のレスどうも。
具体的に言うと、ウィンドウ全体にポリゴンを表示してそれにテクスチャを
貼り付ける→MODELVIEW行列に1/2かけたポリゴンと1/2かけて平行移動した複数
のポリゴンを表示させるということをしているのですが、平行移動させた際に
いくつかウィンドウ外にはみ出してしまったポリゴンを、どうにかして全部表示
させたいのですが・・・ウィンドウサイズを変えただけだとポリゴンもそれに
合わせて変わるし、glViewportで視点を変えてもはみ出した部分は切り取られ
たままなんですよね;
ちなみにリサイズ関数の中のglViewportのことですか?考える限りパラメータを
いじってみたんだけど変わらないす><;
343デフォルトの名無しさん:2006/11/16(木) 20:14:25
あほすぎる、ネットですら調べてないな。
ウィンドウサイズ変えてもオブジェクトサイズは変わらない
関数自分で調べて勝手に作れ。
自分でやろうとしろ低脳のくずが。
344336:2006/11/16(木) 21:52:29
>343
ネットでも調べたし赤本読んでもよくわかんないからここ来たんだけどね。
自分が低脳なのは十分わかってるよ、こーゆー言われ方するの怖かったから
書き込むの迷ったんだけど、このスレ超初心者用ってってあったからさ・・・

でもこれで闘志に火がついたよ、低脳なりに自力でなんとか頑張る。ありがと。
345デフォルトの名無しさん:2006/11/16(木) 21:56:09
>344
たぶん透視変換について理解すると自然に解決すると思うよ
346336:2006/11/16(木) 22:07:43
>345
ありがとう!調べてみる、感謝です。
347デフォルトの名無しさん:2006/11/17(金) 00:52:51
>>344
一応親切心で言うんだが、ネットでの調べ方は身に付けたほうがいいよ。
プログラム関連は、ほとんどがネットだけで解決できる。

質問しなくてもいいくらい、情報はあるんだよね。
それを、いかにうまく検索するか、絞り込むか。
348344:2006/11/17(金) 02:59:40
>>347
とても参考になったよ。やっぱり努力が足りなかったのかな・・・地道に頑張ってみます、親切にありがとう。
349デフォルトの名無しさん:2006/11/17(金) 03:25:22
大学のサイトで講義資料を公開してるとことかたくさんあってさ
openglもそこで基礎学んでわからんとこは自分でやってみるってこと
してないとさ、これから何か作らないといけない時とか人に聞きまわる
ダメダメ君になっちゃうわけ。基本くらいは自分で調べないと後で痛い目に
あうってのはわかって欲しいもんだねぇ。
350デフォルトの名無しさん:2006/11/17(金) 19:09:31
OpenGLをゲームに使っているんですが、
ちょっとトラブリまして、質問させていただきます。

OpenGL1.2 + DirectDrawで全画面表示を実現しています。

デスクトップPC(AT互換機) + Geforce6800 で開発しています。
この環境では、ウインドウモード、フルスクリーンモードともに正しく動作します。

しかし、ワイド液晶のノートPCで動かした場合に、
ウインドウモードでは上手く表示されるのですが、
フルスクリーンでは、画面が真っ暗になり、正しく描画されません。
音はなりますし、ゲーム自体は、動きますし、
ウインドウモードに戻すと、また正しく描画されます。

どういったことが考えられますでしょうか?
351デフォルトの名無しさん:2006/11/17(金) 23:08:47
フルスクリーンにするところが間違ってると考えられます。
せめて、どうやってフルスクリーンにしてるのか書かないとなんとも。
そのDirectDrawってやつが気になるが
352344:2006/11/18(土) 00:01:39
>>349
身に染みるよ…アドバイスども、これから独学で頑張ってみる。

それでは消えます、みんなありがとう。
353デフォルトの名無しさん:2006/11/22(水) 23:36:46
Linux環境で今までプログラムしてきましたが

Windows環境でのコンパイルがうまくいきません
VC6.0とBoalandで試しましたが手順などに詳しい方教えてくださいませんか
354デフォルトの名無しさん:2006/11/23(木) 12:56:08
>>353
どううまくいかないの?
自分が何をやって、どこで躓いてるのかをはっきりさせたほうがいい
355デフォルトの名無しさん:2006/11/24(金) 17:16:49
カメラの各軸周りの回転角度をrotX, rotY, rotZとして,
そこからEye, LookAt, Upに変換するにはどうすればよいですか?
356355:2006/11/24(金) 17:37:47
補足です.
言い忘れました.カメラの座標も分かってる状態です.

何がしたいかというと,lightwave(左手系)のデータを持ってきてOpenGLで表示させたいのです.

ちなみに現状は,
lightwaeからコピペしてきた数値を右手座標系に変換して
(といってもxトランスレーションと,yローテーションとzローテーションにマイナス掛けるだけなんですが)

rotX, rotY, rotZから各軸の回転行列を作成

   | 1   0      1      |
Rx = | 0   cos(rotX) -sin(rotX) |
   | 0   sin(rotX)  cos(rotX) |

   | cos(rotY)  0  sin(rotY)  |
Ry = | 0       1         |
   | -sin(rotY)     cos(rotY) |

   | cos(rotZ)  -sin(rotZ)   0 |
Rz = | sin(rotZ)  cos(rotZ)   0 |
   | 0       0       1 |

こんな感じになったのを
掛け合わせて回転行列R = Rz * Rx * Ryを合成し,

視点ベクトル(Eye) = カメラ座標
注視点ベクトル(lookAt) = 焦点距離 * Rの3行目 + 視点
上方ベクトル(Up) = Rの2行目

みたいな感じなんですけど,どうも旨くいかないんすよ.
357355:2006/11/24(金) 17:41:18
ああ,ミス

(といってもxトランスレーションと,yローテーションとzローテーションにマイナス掛けるだけなんですが)

トランスレーションに関してはz軸位置にマイナスを掛ける
ローテーションに関してはx軸回転とy軸回転にそれぞれマイナスを掛ける

スマソ
358デフォルトの名無しさん:2006/11/24(金) 19:45:45
ま、がんばれ
359デフォルトの名無しさん:2006/11/25(土) 09:30:11
座標じゃなくてモデルを反転するのはダメかな?
自分の場合はDirectXのXファイルをOpenGLで表示してるけど、
モデルのZにマイナスかけて面を裏がえしてよ。
360デフォルトの名無しさん:2006/11/26(日) 11:56:46
すいません!!超初心者です。
ちょっと教えて下さい。調べたのですがつまってしまって。。。
テクスチャを球にマッピングして任意の軸に対して球を回すのはどうすればいいですか?
361デフォルトの名無しさん:2006/11/26(日) 18:17:08
テクスチャの貼り方がわからんのか、任意の軸に対する回転のやり方がわからんのかがわかりません。
362デフォルトの名無しさん:2006/11/26(日) 19:28:16
両方じゃね?
363デフォルトの名無しさん:2006/11/27(月) 00:28:14
よくわからんけど、ちゃんと調べればそのくらい分かりそうなんだが
せめてどこで詰まったんだかもうちょっと具体的に言ってくれ
364デフォルトの名無しさん :2006/12/03(日) 01:09:26
何か作りたいと思いプロッターを作ろうとおもってるんですが
VC++自体初心者、猫でもの本を一通り読んで打ってwin32apiはさらっと
勉強した程度の者が、このOpenGLってのを使うには早すぎますかね。早すぎますよね。
mfcでダイアログボックスメインでピクチャボックスに表示させる方法をCodeguruの
ソースみながら打って、表示させたは良いけど、何をどうすればいいのかわからずで・・・
いったいどこで勉強してんの、みんなって感じでね・・・ orz
365デフォルトの名無しさん:2006/12/04(月) 04:44:56
>早すぎますかね
そんなことを言っていたら、いつまでたっても始らない。

>いったいどこで勉強してんの
私の場合、このへんから。
http://wisdom.sakura.ne.jp/system/opengl/
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
366デフォルトの名無しさん:2006/12/04(月) 09:37:30
ぶっちゃけ大学入ってからプログラミング始めて6ヵ月後に独学でOpenGL触っても
ゴリゴリ書いて覚えれば基本的なことは2週間で出来るようになる。
ようはプログラミング全般のセンスと努力。
367デフォルトの名無しさん:2006/12/04(月) 14:00:32
openGLでポリゴン同士が接するとき、その重なった面を判別し別の色で表示させる
プログラムは書けるでしょうか。初心者ですがお願いします。
368デフォルトの名無しさん:2006/12/04(月) 15:46:09
>>366
適当なこと語るだけの奴ってキモイな
369デフォルトの名無しさん:2006/12/05(火) 10:57:04
>>367
接する、ってのがどういう状態なのかわからないんだけど……
ポリゴンの重なりを表現したいだけなら、
アルファブレンド(例えば加算合成)とか?
370デフォルトの名無しさん:2006/12/05(火) 12:57:54
>>367
接する、ってのがどういう状態なのかわからないんだけど……
ポリゴンの重なりを表現したいだけなら、
ステンシルバッファをうまく使用すれば、任意の色で描画できます。
371デフォルトの名無しさん:2006/12/15(金) 04:40:15
GLUTでジョイスティックをキーボードのかわりにしたいのですが、
十字キーが押したら押しっぱなしの状態になってしまいます。。。

どなたか分かる方いますか???
372デフォルトの名無しさん:2006/12/15(金) 14:15:26
日本語でおk
373デフォルトの名無しさん:2006/12/16(土) 15:07:04
5キーを押せ
374デフォルトの名無しさん:2006/12/20(水) 20:57:31
キーを押しっぱにしても最初一回入力した後にちょっと間が空くけど
あれってどうにもならないの?
375デフォルトの名無しさん:2006/12/20(水) 21:16:13
↑おまえバカすぎ、OpenGLやる能力0
376デフォルトの名無しさん:2006/12/20(水) 21:26:37
>>374
プログラム辞めた方が良いよ。
センス無い
377デフォルトの名無しさん:2006/12/20(水) 21:28:23
openGLあんま関係ないし。まぁくだすれだし。
glut使ってんなら、glutIgnoreKeyRepeatだかでキーリピート止めて、
glutKeyboardFuncとglutKeyboardUpFuncを使って押されてるか離されてるか自分で管理
378デフォルトの名無しさん:2006/12/21(木) 01:49:37
1/8球の3次元減衰マップをGL_MIRROR_CLAMP_TO_EDGE_ATIを使って
投影マッピングしているサンプルがGAME PROGRAMMING GEMS2にありまして、
それに載っていたサンプルは指向性のない点光源への適用例で、テクスチャ行列変換は
glScalef()とglTranslatef()のみでやっていたのですが、
これを指向性有りのスポットライト(ワールド座標系での光源位置と向き、カットオフ角をパラメータに使う)
として実装する場合のテクスチャ行列変換がよく分かりません。

できれば小難しいことは考えずにgluLookAt()などを使って行列変換したいのですが、
いいサンプルが見つからず困っています。

こんなサンプルがあるよとか自分ならこう書くとかあったら教えてもらえないでしょうか。
379デフォルトの名無しさん:2006/12/21(木) 02:44:17
指向性のある3次元減衰マップを作ってそれを使えばよいのでは。
というか、そんな古い方法つかわないで、ピクセルシェーダー使うことを考えましょうよ。
380openGL初心者:2006/12/31(日) 06:47:44
はじめまして。
OpenGLを使ってMac(UNIX)でプログラム開発をしています。

複数あるオブジェクトのうちのひとつをマウスで選択して、選択し終わる(ドラッグし終わる)位置まで平行移動するというプログラムを作りたいです。

http://www.wakayama-u.ac.jp/〜tokoi/opengl/libglut.html
↑こちらのサイトを参考に作成させていただいています。
今のところ
/**画像データの構造体*/
struct polygon{
GLuint* test;
double x;
double y;
double z;
};

struct polygon pol[NOBJECTS];//画像の構造体の配列
このような構造体を使ってオブジェクトごとに座標を記憶させて平行移動させていこうと思っているのですが上手くいきませんorz

ご指導のほどよろしくお願いします。
381デフォルトの名無しさん:2006/12/31(日) 11:36:01
どこがうまくいかないのか説明してくれないと何も言えない。
382380:2006/12/31(日) 17:55:41
レスありがとうございます><
説明が悪くてごめんなさい。

mouse関数で
else{//マウスが離されたら
/* selection[] の内容はマウスの左ボタンをクリックした
時にしか変更されないはずだから,まだ残っているはず */
GLuint *ptr = selection;
int i;
for(i = 0; i < NOBJECTS; i++){
printf("pol[%d].x = %f\n",i, pol[i].x);
printf("pol[%d].y = %f\n",i, pol[i].y);
if(pol[i].test = selection){
pol[i].x = x;
pol[i].y = y;
}
}

for (i = 0; i < hits; i++) {
unsigned int j, n = ptr[0];

ptr += 3;
for (j = 0; j < n; j++) {
color[*(ptr++)] = gray;
glTranslated(pol[i].x, pol[i].y, 0.0);
}
}
}
GLUT_UPになったらなった際のx、yの位置までオブジェクトが移動するように設定したいのですが上記のソースでは上手くいきません(・・;)
どうやら選択したオブジェクトだけの座標を移動するつもりが全てのオブジェクトの座標が移動しているみたいです。どこをどう治せば上手くいくでしょうか?
http://www.uploader.jp/home/sample/
↑こちらに全ソースをうpしました。拡張子がtxtになってますので注意してください。初心者で分かりにくいかもしれませんが、ご指導のほどよろしくお願いしますm(._.)m
383デフォルトの名無しさん:2006/12/31(日) 18:30:21
>>382
なんかよくわからんコメントアウトがあるけれどもなんだ?
>>382で考えていいのか?
答えは簡単。ディスプレイリスト更新せずに位置が変わるわけないでしょ。
変なところでglTranslate呼んでるから偶然全部が動いているだけ。
384382:2006/12/31(日) 19:44:10
レスありがとうございます><
初歩的な質問でごめんなさい。ディスプレイリストの更新ってどうすればいいんでしょうか(T-T) ウルウル
385デフォルトの名無しさん:2006/12/31(日) 22:53:09
>>384
意味ワカラン。死ね。
386デフォルトの名無しさん:2006/12/31(日) 23:24:30
ディスプレイリストの更新ってどうやんだって聞いてんだよボケェ〜〜〜ッ
そもそもディスプレイリストって何だ!?
387デフォルトの名無しさん:2006/12/31(日) 23:37:48
>>386
検索の一つもせずに全て人に聞こうというのは、ゆとりクオリティか?
388デフォルトの名無しさん:2006/12/31(日) 23:53:58
>>386
ゆとり教育の事じゃね?
389デフォルトの名無しさん:2007/01/01(月) 00:41:16
あけましておめでとうございます。大晦日だしなぜか気が向いたから調べたら、年あけました。
ディスプレイリストってなんだ?って自分でソースにコメント書いてるじゃない。

1.位置は変更されるのだから、ディスプレイリストに埋め込まない。scene()の中のglTranslatedをやめる。

2.すると位置はdisplay()の中で移動しないといけないから、
glPushMatrix();
glTranslated();
glCallList();
glPopMatrix();
になる。
mouse()の中でやってるglCallListも同様にする。

3.コメントアウトしてるとこで値を更新してるっぽいけど、testってなんだかわからないし、比較演算子は=ではなく==。
x,yはウィンドウの座標を拾ってくるので、ディフォルトのウィンドウサイズ0->300の範囲になる。
そんなこんなでそのまま代入しちゃだめ。
複数選択やリサイズには対応してないけど、強引に幅300で動くようにするなら
if (hits) {
GLuint index = *(selection+3);
pol[index].x = (x-150)/150.0*2.588;
pol[index].y = -(y-150)/150.0*2.588;
}
ちなみに2.588はtan(15度)*10です。
まぁあとは頑張ってください。
390デフォルトの名無しさん:2007/01/01(月) 06:40:36
本当初歩的な質問ですみません。
とあるアプリを起動した時
nVidia OenGL driver

Driver compnent sizes mis-match. Rtry to keep going. Cancel to exit.

というメッセージが出て起動しないのですが
原因と解決方法をご教授お願いします。
391デフォルトの名無しさん:2007/01/01(月) 11:01:24
さようなら
392デフォルトの名無しさん:2007/01/05(金) 18:22:26
glut使ってウィンドウ作ったときって
ウィンドウを閉じたときの処理はどうやればいいんですか?
glutReshapeFuncとかglutKeyboardFuncみたいなのないんですかね?
393デフォルトの名無しさん:2007/01/05(金) 18:44:15
GLUTにおいてウィンドウを閉じる = アプリケーション終了だから
そういうときのためのCの標準関数を使いましょう。
394デフォルトの名無しさん:2007/01/05(金) 18:59:38
>>393
閉じるだとatexit関数が呼ばれないようなのですが。
395394:2007/01/05(金) 19:02:46
atexitが呼ばれないじゃなくて、atexitで登録した関数が呼ばれないです
396デフォルトの名無しさん:2007/01/05(金) 19:37:05
やってみたらatexitでうまくいったけど。環境は?
397デフォルトの名無しさん:2007/01/07(日) 18:38:07
LinuxへOpenGLをインストールするのはどうしたらいいのですか?

OpenGLの入門書には「大体の鳥にはあらかじめ入ってます」って書いてあるけど
KNOPPIX5.0.1には入ってますか?

  apt-get install glut
やっても「パッケージglutが見つかりません」と出ます.
398デフォルトの名無しさん:2007/01/07(日) 22:04:59
apt-file search glut
399397:2007/01/07(日) 22:54:29
# apt-file search glut
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "ja",
LC_ALL = (unset),
LANG = "ja"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

こうなりました.どういう意味ですか?とりあえず色々なサイトに書いてある
#PERL_BADLANG=0; export PERL_BADLANG
をやってもう一度apt-fileすると何も起こらず,新しいプロンプトが出てきます.
400384:2007/01/08(月) 00:00:14
384です。ちなみに386はボクじゃありません><

コメントありがとうございます。上手くオブジェクトをマウスで選択して移動できるようになりました。
ところで
複数選択やリサイズには対応してないけど、強引に幅300で動くようにするなら
if (hits) {
GLuint index = *(selection+3);
pol[index].x = (x-150)/150.0*2.588;
pol[index].y = -(y-150)/150.0*2.588;
}
ちなみに2.588はtan(15度)*10です。
ですが、幅をもう少し大きくしたいのですがここの計算方法がよくわかりません↓どうすれば幅をもう少し大きくできるでしょうか?

よろしくお願いします。
401389:2007/01/08(月) 01:25:28
ようはウィンドウサイズは0->300なわけでそれをオブジェクトがあるサイズに変更してる。
tan15度は、カメラの画角が30度(gluPerspective)で距離が10(gluLookAt)だから
0〜300を-tan(15度)*10〜tan(15度)*10に変えてる。
x が 0〜300 なら
(x-150)/150 は -1 〜 +1

マウスをクリックしたときの値がどうなってるかとか、オブジェクトをどの座標に動かすとどう見えるかを調べれば
おのずとわかると思うよ。
402デフォルトの名無しさん:2007/01/08(月) 20:34:24
初歩的な質問で申し訳ないのですが。
openGLでキーボード操作によってポリゴンを平行移動させたいのですが
その関数はどう指定すればよいか教えてほしいです。
ちなみにVisual Studio 2005を使用しています。
403デフォルトの名無しさん:2007/01/08(月) 23:36:02
GetAsyncKeyState
404デフォルトの名無しさん:2007/01/09(火) 00:59:27
>>399
ここじゃスレ違いだからlinux板のくだスレにでも行きなさい
405デフォルトの名無しさん:2007/01/11(木) 05:24:13
クライアント-サーバ型のプログラムを作っていて、サーバがオフスクリーンレンダリングして作成した画像を
クライアントに転送して表示させたいのですが、FBOを使っていても
frame.setVisible(false);
にしているとサーバがレンダリング処理をしてくれません。
フレーム非表示のままレンダリングを行う方法はないのでしょうか?

ご教示よろしくお願いします。
406デフォルトの名無しさん:2007/01/11(木) 12:33:13
Webで拾ってきたトラックボール回転(?)のサンプルを見ながらなんとか、動きだけ実装してみたところ、スケーリングするとスペキュラが利かなくなるのか急にのっぺりしたものになってしまいました(環境光は利いている?)。
平行移動や、回転では問題ないので原因が良く分からないのですが、何か考えられる点はないでしょうか?

どなたかご教授お願いします。
407389:2007/01/11(木) 16:25:56
勘だけど
つ glEnable(GL_NORMALIZE)
408406:2007/01/11(木) 17:31:55
>407
解決しました〜。
ありがとうございます。
スケーリングすると法線も変えなきゃいけないんですね
409デフォルトの名無しさん:2007/01/12(金) 01:07:20
若いの オラが村では派遣の問題を口にしちゃなんねーだ
お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にすると怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな糞田舎で悲惨な生活するためにはよぉ
駄目のものを駄目と言ってはなんねえだめさ
410デフォルトの名無しさん:2007/01/12(金) 11:47:26
OpenGLを使い、ちょっとしたビューワを作っているのですが、普通に実行している場合と、リモートデスクトップを介して実行する場合で見た目が全く違ってしまいます。
具体的にいうとリモートデスクトップの時は光沢がしっかり出ているのに対して、ローカルで実行すると全く光沢が出ずにつやのない感じです。
リモートでちゃんと光沢が出るので、ソフトウェアシミュレーションのおかげかなと思い、NVIDIA GeForce 7900GS, NVIDIA GeForce 7950GT, NVIDIA Quadro FX 3400/4400の環境で試しましたが全て同様の結果でした。
何かオプションを設定する必要、もしくはドライバのインストールなど必要なのでしょうか?
411デフォルトの名無しさん:2007/01/13(土) 16:43:08
>>405
frame.setVisible(false);
が何だかわからんと何も言えん
412デフォルトの名無しさん:2007/01/15(月) 01:32:36
OPEN-GLとGPUの関係ってどうなんでしょうか?

OPEN-GLでソースをかけば、自動でGPUで計算してくれるってことですか?
413デフォルトの名無しさん:2007/01/15(月) 01:48:06
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の社員の意見にはたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異や問題を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
414デフォルトの名無しさん:2007/01/15(月) 01:58:11
>□派遣先の社員の意見にはたとえ間違っていてもマンセーする

こういう奴って横で見てて人間として恥ずかしい。
最初は違法常駐を続けたいから賛成しているのだろうけど、
だんだん麻痺してきて特定の人の意見には常にマンセーになっていくんだよな
ああはなりたくないな、と思う。
415デフォルトの名無しさん:2007/01/15(月) 02:59:49
xz平面と平行に四角いポリゴンを作って
それにアルファ値を持つテクスチャを張り
その後,xy平面と平行に,さきほど作ったポリゴンを貫通するように
ポリゴンを作って,同じようにアルファ値を持つテクスチャを張りました.

それぞれのポリゴンの透明な部分の向こうに,もう一方の面が見えるように
したかったのですが(網と網を交差させる風にしたい)
後から描いた方の面が一部表示できません.

透明な部分を描く時にも,デプスバッファの値が更新されるのが
原因だと思うのですが,これを回避する方法はないのでしょうか?
416デフォルトの名無しさん:2007/01/15(月) 09:46:59
2度書き、深度マスク、Zソートその他もろもろ
417415:2007/01/15(月) 13:36:30
>416
お返事ありがとうございます.
2度書きは交差する場所が分からないと,上手くいかないですよね?
Zソートでは駄目な気がします.
深度マスクを試してみますね
418デフォルトの名無しさん:2007/01/15(月) 15:45:28
グラデーション使ってないなら
つ アルファテスト
419415:2007/01/15(月) 17:21:01
>418
お返事ありがとうございます
希望通りの動作をしました,ありがとうございます
420デフォルトの名無しさん:2007/01/16(火) 01:02:50
ポリゴンを表示して光源を当てることで、陰影をつけてみたのですが
物体を回転した際に、ある方向からは陰影というよりも真っ暗になってしまいます。

どの方向から見てもある程度は陰影がついたようにしたいのですが
どなたか解決方法をご存じの方いませんでしょうか。
421デフォルトの名無しさん:2007/01/16(火) 01:50:26
412にも答えてやってください(ノ_・、)
422デフォルトの名無しさん:2007/01/16(火) 08:23:24
すみません。下のサイトからVPythonをダウンロードしたけど、
ttp://www.vpython.org/win_download25.html

exampleにあるプログラムを作動してみたら、変なエラーが出てしまいます。
で、そのサイトの下にOpenGLが必要だと書いてあるんですが、具体的に
何をすれば良いのですか?
423デフォルトの名無しさん:2007/01/16(火) 22:24:15
>>420
勘だけど
つ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, hoge);
つ glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);

>>412
質問の意図がよくわからない。
GPUが付いててそのopenGLのコマンドが対応してれば、普通は自動で処理してくれる。
ハードウェアアクセラレータが最大ならね。
424デフォルトの名無しさん:2007/01/16(火) 22:52:09
>>422
エラーについてちゃんと書こう
変なエラーとだけ言われてもわからない
425デフォルトの名無しさん:2007/01/17(水) 00:41:53
>>423
ありがとうございました。
426423:2007/01/17(水) 01:13:49
>>420
質問をよく読みなおしてみた。
たぶんこっちだと思う。
つ 光源2個以上
427デフォルトの名無しさん:2007/01/17(水) 12:27:26
>>422
マルチしたならこっちにも解決した結果書いといてくれよ。

3Dグラフィックスプログラミング
http://pc10.2ch.net/test/read.cgi/tech/1155153009/

68 デフォルトの名無しさん 2007/01/17(水) 06:10:07
>>66-67
親切にありがとう。でも仕事の関係でVPythonでなきゃだめなんです。
どうも、自分のパソコンのビデオカードが古すぎたようです。
もうちょっと新しいパソコンでは問題なしでした。
428デフォルトの名無しさん:2007/01/18(木) 10:21:02
えーと・・・
プログラミングと関係無いので激しくスレ違いなのだとは思いますが
お答え頂ければ有難いです

Win用の、とあるゲームをインストールしたら毎回起動する度に
このゲームは OpenGL 1.2 以上対応だというメッセージが出てきます

つまりは OpenGL のランタイムか何かがあって私のPCには
それの1.1以下が入っているんだろうと思うのですが、最新の物は
どこで配布されているんでしょうか?

OpenGL Home Page を見に行っても OpenGL を使ってるアプリらしい物の
紹介しか私には見つけられませんでした
429デフォルトの名無しさん:2007/01/18(木) 11:03:24
>>428
グラフィックカードが対応してない。もしくは付いてない。
新しいPC買ってください。
430デフォルトの名無しさん:2007/01/18(木) 11:22:23
>429
・・・ハードの方が問題でしたか
ノートなのでPC買い替えしか手が無いですね

ご回答ありがとうございました
431デフォルトの名無しさん:2007/01/18(木) 22:54:14
>>430
ノートだと難しいかもしれないけど
まずグラフィックのドライバ更新も忘れずにね
432デフォルトの名無しさん:2007/01/19(金) 00:37:09
OpenGL1.2非対応ってどんだけ前のマシンなんだよ・・・
433デフォルトの名無しさん:2007/01/24(水) 19:10:18
WindowsでOpenGLを使ったプログラムをつくってます。
ttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#7.2
↑ここで説明されているラバーバンドを表示する方法で絵を動かそうと思っているのですが
ダブルバッファリングを有効にすると、ATIやNVDIAのGPUを使ってるPCでは
期待通りの動作をしてくれるのに、Intelのグラフィックコントローラ(82865Gとか82855)
を使ったPCではSwapBuffers(HDC)した時、画面にゴミが表示されてしまいます。
GLUTのglutSwapBuffers()でも同じようになりました。
Intelのグラフィックコントローラを使ったPCでもダブルバッファリングを有効にした
状態でゴミを表示しないようにしたいのですが、どうしたらいいですか?

↓実験に使ったプログラムです
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29130
434デフォルトの名無しさん:2007/01/24(水) 19:32:58
ProSavageでダブルバッファリング時にクリアするのがカラーバッファだけだとごみが出て
デプスバッファもクリアするとごみが取れたことがある。
435433:2007/01/24(水) 22:30:56
とんくす
その発想はなかったわ
明日試してみます
436デフォルトの名無しさん:2007/01/25(木) 00:07:55
>>433
この方法でダブルバッファにするとむしろゴミが残るのが正しい
この線の消し方とダブルバッファについてちゃんと理解すれば分かるはず

ATIやNVIDIAのカードでゴミが残らないのは、
Swapした時のバックバッファの内容が保証されてないから、でいいのかな?
437デフォルトの名無しさん:2007/01/25(木) 00:12:50
保証されてるからだろ
438434:2007/01/25(木) 08:46:37
うわ、スマン。ソース見ずに言ってたわ。
まあ本当にあったことだからこういう糞実装もあるということで覚えておいてくれ。
439433:2007/01/25(木) 17:40:32
さらにとん。

display()の中では、glDrawBuffer(GL_FRONT);でフロントバッファに直に描くようにして
(display()を抜ける前にglDrawBuffer(GL_BACK);に戻す)
WM_TIMERのハンドラの中では、SwapBuffersしないようにしたらIntelチップのPCでも
期待通りに動いてくれました。

こういう理解でOKですか?

>>436-437
逆に言えばIntelチップではSwapBuffers後、バックバッファの内容が保証されないって
ことですよね。

ttp://www.opengl.org/resources/libraries/glut/spec3/node21.html
↑に「The contents of the back buffer then become undefined.」って書いてある。
440デフォルトの名無しさん:2007/01/31(水) 03:06:03
Vine Linux
カーネル 2.4.31-0vl1.8
NVIDIA GeForce 2 GTS

以上のような環境で
OpenGLでVsync同期をとるためにはどうしたら良いでしょうか?
441デフォルトの名無しさん:2007/01/31(水) 19:07:03
拡張関数
442デフォルトの名無しさん:2007/02/01(木) 12:13:48
>>440
>>441
気になったので調べてみた。

ttp://tobysoft.net/wiki/index.php?OpenGL%2FVSYNC%C6%B1%B4%FC%A4%F2%BC%E8%A4%EB

「OpenGL vsync」でGoogle先生に聞いたら一発だったぞ。
と思ったら、wgl**()なのでWindowsのみですな。

で、もっと調べてみたらglXGetVideoSyncSGI()ってのがあるけど、これはIRIX用か。
glXGetVideoSyncってのを検索したらヒットする情報があったけど、この関数が
Linux環境(nVidia)で存在するかどうか不明。

この辺とか見ると、どうやら__GL_SYNC_TO_VBLANKっていう環境変数を使って
自前で更新のタイミングを調整してる?
http://www.nvnews.net/vbulletin/showthread.php?t=3816

これを見ると記述が有るね。(1.0-7664ドライバのREADMEかな
http://howto.stephane-huc.net/up/README_1.0-7664

VBLANK SYNCHING

Setting the environment variable __GL_SYNC_TO_VBLANK to a non-zero value will
force glXSwapBuffers to sync to your monitor's vertical refresh rate (perform
a swap only during the vertical blanking period).

気が向いたら突っ込んで調べます。SDLのソース見た方が早いかも。
443デフォルトの名無しさん:2007/02/01(木) 13:46:06
>>441
>>442
ありがとうございます
ドライバの設定でどうも、OpenGLはVsync同期をすることができました…
>>442さんの言うとうり環境変数を変えればよかったみたいです。
プログラムで何とかしなきゃと思っていました

拡張関数については、環境が変わった際に、GLのVsync同期を強制させるのに使えるかも
444デフォルトの名無しさん:2007/02/01(木) 14:12:46
vsyncさせたら何かメリットあんの?
445デフォルトの名無しさん:2007/02/01(木) 15:16:29
描画中を見られたくないのでは
446デフォルトの名無しさん:2007/02/02(金) 01:38:59
今時描画中が見れるほど遅いことは無いと思うが…
VSync取ればティアリング回避できるよ
447デフォルトの名無しさん:2007/02/02(金) 16:41:18
ティアリング回避です。
画面に情報を載せた場合に、
上部と下部で食い違ってしまうのを防ぎたかったのです。
448デフォルトの名無しさん:2007/02/02(金) 23:36:29
ティアリングは、FPS高いと顕著だからねえ
449デフォルトの名無しさん:2007/02/08(木) 02:46:47
openglでmqoファイル読み込む方法を教えてください。
450デフォルトの名無しさん:2007/02/08(木) 03:48:56
451デフォルトの名無しさん:2007/02/11(日) 01:53:41
linuxにてroot権限でyumを使ってopenglをインストールしました。
次に一般ユーザに戻ってソースファイルをコンパイルしました。
んでもって、実行しようとするとdisplay(0.0)への接続に失敗しました。
見たいな事を言われます。スーぱユーザにてログインしなおして、
実行するとうまく実行できます。
これは、何らかの設定がうまく一般ユーザにないためだと思われる
のですが、解決方法が皆目検討がつきません。
どなたか手助けをいただけないでしょうか?
452デフォルトの名無しさん:2007/02/11(日) 11:42:03
その質問はLinux板のFedoraスレ、あるいは、くだスレでやった方が適当だと思うな。
453デフォルトの名無しさん:2007/02/11(日) 12:10:10
わかりました、linuxのほうへ移動します。
454デフォルトの名無しさん:2007/02/11(日) 21:58:09
OpenGLにて正方形を描画したいのですが、現在ちょっと困っています。

座標系はfloat型のままで指定して、正方形の大きさはピクセル単位で指定したいのですが
よい方法が分かりません。

どうしたらよいのでしょうか?それともそもそもOpenGLでは私が書いた事はできないのでしょうか?
455454:2007/02/11(日) 22:37:29
glutを使った方法を教えていただければ嬉しいです。
456454:2007/02/11(日) 22:56:01
glPointSize();
使えばよかったんですね。自己解決しました。
失礼しました。
457デフォルトの名無しさん:2007/02/11(日) 23:46:49
glPointSize();
は関数名の通り点のサイズを変更するだけだけど、それでいいのかな?
458454:2007/02/11(日) 23:57:05
それだけでいいのかな?とはどういうことでしょうか?
まだなにかあったりするのですか?
459デフォルトの名無しさん:2007/02/12(月) 00:09:01
いや、質問の内容が良く分からなかったからさ。
glPointSize();で点の大きさを大きくして正方形を表示させたの?
それだと、点であってポリゴンではないから疑問に思った次第です。
460454:2007/02/12(月) 00:23:05
2dのみを扱ってますので平面上で正方形であればよいのです。
461デフォルトの名無しさん:2007/02/12(月) 01:30:23
point size では設定可能な値が限られるので、
素直に GL_QUADS 使った方がいいと思う。
462454:2007/02/12(月) 03:15:34
そうすると、座標はfloatで、四角の大きさはpixelでってのが難しいじゃないですか
463デフォルトの名無しさん:2007/02/12(月) 03:46:13
( ゚Д゚)ポカーン
464デフォルトの名無しさん:2007/02/12(月) 09:51:10
どの辺がどう難しいのか具体的に書いてくれないか?
465デフォルトの名無しさん:2007/02/12(月) 10:04:20
『眼下の敵』で米駆逐艦の艦長が言ったせりふ
こいつはよほどのバカか、でなければ恐ろしいほど頭のいいヤツだ
466デフォルトの名無しさん:2007/02/12(月) 10:15:28
俺エスパー。
454は、「画面上で」ちょうど一辺が100ピクセルになるような
正方形が描きたいのだと、電波が届いた。
467454:2007/02/12(月) 13:00:14
glVertex2d(dx, dy);
って感じで座標を指定しますよね?
で、dx, dyを正方形の左上の頂点として縦横10ピクセルの正方形が
書きたいんですが、glVertex2d()では、指定するのは画面上の比率じゃないですか?
それだと嫌なんですよ。
468デフォルトの名無しさん:2007/02/12(月) 13:12:44
glOrtho()で正射影に出来るけど如何ですか?
469デフォルトの名無しさん:2007/02/13(火) 23:14:47
       ('(゚∀゚∩_ おいらをどこかのスレに送って!
      /ヽ   〈/\ お別れの時には要らない物を持たせてね!
     /| ̄ ̄ ̄|.\/
       | .モツ煮..|/
        ̄ ̄ ̄
現在の所持品:たばこ・ライター・コーヒー・PlayStation3(60GB)・枕・PlayStation3(60GB)
聖教新聞 ・PlayStation3(20GB)・外付けRIGEL340MHDD・PlayStation3(20GB)・寄生虫キムチ
・PlayStation3(60GB)・PlayStation3(60GB) ・PlayStation3(60GB) ・PlayStation3(60GB)
・PlayStation3(60GB) ・PlayStation3(60GB) ・ワセリン湿布
・実姉がエロゲの声優してた時の特典CD(Sofmap予約特典)・こち亀の3巻・Wii・Wii・Wii
・Wii・Wii・Wii・Wii・Wii・ファブリーズ・Wii・Wii・精神安定剤・Wii・Wii・Wii・Wii・Wii・Wii・Wii
・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii
・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii
・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii・Wii
・AIBO・百円ショップで買った毛玉取り器
470デフォルトの名無しさん:2007/02/13(火) 23:18:13
ロケット墜落したカーマックでも持たせるか。いや、やまたくんでもいいかな。
471デフォルトの名無しさん:2007/02/14(水) 22:09:21
openglの性能評価ソフトで、win, linux両方とも公開されている
のはどんなのがありますか?
472デフォルトの名無しさん:2007/02/17(土) 03:04:24
質問です。
Win32APIで生成したウィンドウの描画領域に、OpenGLで描画することは可能でしょうか?
もし可能ならば、参考図書か参考HPを教えていただけると助かります。
473デフォルトの名無しさん:2007/02/17(土) 12:31:11
>>472
.NET での例で良いなら、
酒井幸市, 「OpenGLで作る力学アニメーション入門」
という本に例は載っているよん。
474デフォルトの名無しさん:2007/02/17(土) 13:58:28
>>473
参考図書の情報、ありがとうございました。。。
早速、図書館に行って該当する本を探してみたいと思います。
475デフォルトの名無しさん:2007/02/19(月) 13:43:43
りえ子、結婚してくれ
476475:2007/02/19(月) 15:09:01
自己解決しました
477デフォルトの名無しさん:2007/02/19(月) 15:11:12
まじか、、、
おめでとう

だよな?
478デフォルトの名無しさん:2007/02/20(火) 12:08:48
WindowsでOpenGLやってます.
マルチディスプレイもしくはマルチビデオカードで描画対象のディスプレイを指定するにはどうするのが良いのでしょうか?

一応wgl+MFCでやっているのですがWindowsのglutで出来るなら乗り換えもありです.
479デフォルトの名無しさん:2007/02/22(木) 03:16:58
WindowsXP pro
MinGW(カレントバージョン)
GLUT 3.7.3(ttp://mywebpage.netscape.com/PtrPck/glut.htmより
TOSHIBA dynabook Satellite J11

上記の環境でC言語からOpenGLやってます。
くだすれなんですが、テクスチャが表示できません。
コンパイルは何ら異常なく済み、実行時にもテクスチャがないことを除けば問題ありません。
GLUTのバージョンを3.6(ttp://www.opengl.org/resources/libraries/glut/glutdlls36.zipより)に
してみたりしましたが、お手上げです。
ノートパソコンだとダメとかありますかね?
サッパリなんで、御教授願います。

参考にしたソースは、Google日本語検索にて「OpenGL」or「OpenGL テクスチャ」で
ヒットした上位数件です。

480デフォルトの名無しさん:2007/02/22(木) 05:13:46
>>478
デバイスコンテキスト関係を何とかする、と思う。けどよくわかんね。

>>479
コードがないとなんとも言えない。
ノートだとダメ、ってことはない。
テクスチャのサイズが2のn乗になってないとか、そんなのじゃないか?
481デフォルトの名無しさん:2007/02/22(木) 20:49:01
青紫にぼわーっと光らせるのってどうやってんの?
482デフォルトの名無しさん:2007/02/22(木) 20:55:19
マルチ氏ね
483デフォルトの名無しさん:2007/02/22(木) 21:39:20
向こうで教えてくれなかった場合はマルチにならないでしょ
484デフォルトの名無しさん:2007/02/22(木) 21:51:41
教えてくれなかったとか禿藁
485デフォルトの名無しさん:2007/02/22(木) 21:54:59
2箇所以上に同じ内容のレスすりゃマルチだろうが
486デフォルトの名無しさん:2007/02/22(木) 22:21:53
向こうで既に回答が終わってから質問してるからマルチじゃないよ。改めての再質問。
487デフォルトの名無しさん:2007/02/22(木) 22:47:04
なんというゆとり世代・・・
1レス読むだけで嫌気が差してしまった
このやまたくんは間違いなくはぶられる
488デフォルトの名無しさん:2007/02/22(木) 23:18:09
〜だからマルチじゃないだとか、マルチじゃなくなるとか、通用しないっつーの。
489デフォルトの名無しさん:2007/02/23(金) 00:33:54
>青紫にぼわーっと光らせるのってどうやってんの?

490デフォルトの名無しさん:2007/02/23(金) 01:32:00
2ch初めて2ヶ月…。
はじめて“マルチ”の意味を知りました。みんなありがとうッ!
491デフォルトの名無しさん:2007/02/23(金) 02:19:55
ネオン管か何かで光らせてるんだろ
492479:2007/02/23(金) 07:06:33
>>480
例えば、これ↓なんですが…
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html

こちら↓のソースは動いたんで、ちょっと違いを考えてきます。
ttp://www.uri.sakura.ne.jp/~cosmic/yuno/lab/gl_text.html
493479:2007/02/23(金) 08:02:53
どうもglTexParameterを設定しないとダメみたいですね。
ってわけで、事故解決しました。本当にくだすれでした。
ちゃんと書籍買ってきます。
494デフォルトの名無しさん:2007/02/23(金) 10:06:34
マルチだとか難癖付けて質問に答えてくれないんなら、超初心者用なんてスレタイやめろよな
495デフォルトの名無しさん:2007/02/23(金) 10:12:41
マルチは初心者とか関係ない
指摘されたら(される前が本当だが)元スレで移動したと断ってくればいいだけ
496デフォルトの名無しさん:2007/02/23(金) 10:50:34
そんなやり取りを延々繰り返してスレ浪費するくらいなら、最初からサッと教えればいいのに
497デフォルトの名無しさん:2007/02/23(金) 11:10:17
ライブラリはどこでダウンロード出来ますか?
http://www.opengl.org/ にはなさそうなのですが。
498デフォルトの名無しさん:2007/02/23(金) 11:53:45
環境を書け。まずはそれからだ。
499デフォルトの名無しさん:2007/02/23(金) 11:56:41
>>496
自分が解答者になって、詳しく説明して、
後で別のスレでとっくに別の人が解答して解決してたときの気分を味わってこい
500デフォルトの名無しさん:2007/02/23(金) 12:06:14
>>498
割と田舎なので、空気はうまい。
近くに川もあるな。
駅からは結構遠い。バスも本数が少ないので、駅に出るには車が要る。
501497:2007/02/23(金) 12:07:14
>>498
とりあえずはWin32です。
502デフォルトの名無しさん:2007/02/23(金) 12:20:18
>>501
背伸びする暇があったら開発環境の名前くらい調べろ。
503497:2007/02/23(金) 13:00:48
wiki見て解決しました
504デフォルトの名無しさん:2007/02/23(金) 20:03:47
glewを使いたいのですが
windows2k visual C++6でリンクエラーが出てしまいます
include libなどにファイルを移したのですが、それだとダメなのでしょうか?

visualC++6とかだと使えないとかあるのですか?
どなたかお願いします
505デフォルトの名無しさん:2007/02/23(金) 20:47:57
glew32.dllがプロジェクトに通っていないためでした。
しかるべき場所に移したはずなのに。。。なぜ
506デフォルトの名無しさん:2007/02/26(月) 03:03:12
OpenGLでは平面グリッドを書く関数は無い?
自分で配置しなきゃだめ?
507デフォルトの名無しさん:2007/03/02(金) 00:28:15
Geforce 7900 GSを使ってるんだけど
glEnable( GL_DEPTH_TEST )を使うと表示がおかしくなる…。

ソースコードは
ttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
から持ってきました。

なぜなんだろう。
508デフォルトの名無しさん:2007/03/02(金) 01:12:55
>>507
どうおかしくなるんだ?
おなじグラボ使ってるけど、問題ないぞ。
509デフォルトの名無しさん:2007/03/02(金) 08:33:19
ポリゴンを描画するときに深度バッファを更新しないようにするにはどうしたらよいですか?
510デフォルトの名無しさん:2007/03/02(金) 09:07:24
glDepthMask(GL_FALSE);
511デフォルトの名無しさん:2007/03/03(土) 00:25:25
>>508
言葉では説明しにくいのだけれど、面がうまく描画されない。
Zバッファを用いなければ、正常に描画されるんだけど。

ほんとサイトのソースまんまで描画されないから、
いろいろいじってみたんだけど効果なし。
512デフォルトの名無しさん:2007/03/03(土) 01:10:27
>>511
ソースうpキボン
513デフォルトの名無しさん:2007/03/03(土) 01:15:08
「うまく描画されない」状態のキャプチャ画像うp
514デフォルトの名無しさん:2007/03/04(日) 17:38:18
質問させてください。
ある3Dモデルにテクスチャを貼りたいのですが、
勝手にテクスチャ座標を計算してくれる関数ってありますか?
御願いします。
515デフォルトの名無しさん:2007/03/04(日) 18:26:32
>>514
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20060623
コードがあるので読むといいよ。
516デフォルトの名無しさん:2007/03/16(金) 10:56:23
赤本で円盤の描き方を調べてたんだけど、原著第5版日本語版のP.499〜P.502に掲載されてるプログラム
ではgluNewQuadric()で作成したオブジェクトを一度もgluDeleteQuadric()で解放してないように見えるんですが、
それで問題ないっちゅうかリークしないんですか?

赤本に載ってるコード
http://www.opengl.org/resources/code/samples/redbook/quadric.c
517デフォルトの名無しさん:2007/03/16(金) 11:24:29
破線を描くにはどうしたらいいですか?
518デフォルトの名無しさん:2007/03/16(金) 11:46:46
聞く前にググらないのか?
ttp://wisdom.sakura.ne.jp/system/opengl/gl6.html

glEnable(GL_LINE_STIPPLE)ってやってから、
void glLineStipple(GLint factor, GLushort pattern)
で破線のパターンを設定して、その後はいつも通りに描けばいい。
変更前の破線パターンはglGetIntegervでGL_LINE_STIPPLE_PATTERNの値を調べればわかる。
519517:2007/03/16(金) 15:44:42
やたーできたよーアリガタマキン ( ´∀`)ノ⌒ω)Д`)ブニュ
520デフォルトの名無しさん:2007/03/20(火) 17:51:19
座標の点を格納した大きな(N:100万個ぐらい)配列があります。
1個1個の点には名前がついています(1,2,...,N)。
openGLのpickingの処理を行うと hitした名前が配列で返ってきます。
例えば、buffer[] = 1,3,12,12319 というように。
これをもとに、hitした点全ての点の色を変えようと思いました。

一番簡単なのはbool selected[N]という配列に、hitしたかどうかの
情報を全部格納して、drawするときに1個1個見ていくという方法ですが、
どうもselected[N]のメモリが無駄に感じますし、もっとエレガントな
方法があるような気がします。

いったん全部もとの色で書いておいて、buffer[]に対してその名前を持つ
点の色を変更できればいいのですが・・。

なにかよい方法はないでしょうか?
521520:2007/03/20(火) 18:05:45
あ・・すみません、2行目と3行目の間に、
「それら全ての点をxy座標の2次元平面に同じ色でdrawしました。」
がウッカリぬけました。すみませんです・・。
522デフォルトの名無しさん:2007/03/20(火) 19:58:24
>>520
ピッキングは使った事ないので、外してたらごめん。

> いったん全部もとの色で書いておいて、buffer[]に対してその名前を持つ
> 点の色を変更できればいいのですが・・。

そのまま実装できるような気がするんだけど、どうよ。buffer[]の中身と点の名前が一致してないってことかな?
単純な配列ならインデクスで参照できるだろうし、文字列だとしてもハッシュにすれば検索速度は速そうだけど。
まあ、それは置いておいて、

案1. 予め「座標の点を格納した大きな..配列」に色情報を持たせるってのは?
buffer[]に値が入ったとき、buffer[]に含まれてる要素の分だけ、元の配列の色情報を変える。
全部の点を描画する時はそれぞれの色情報から色を決める。

案2. 全体を同じ色に塗った直後に、buffer[]の中身にある点だけ色を変えて再描画。
恐らく容量としてはbuffer[?] <<<< selected[100万]だからメモリ効率はよさそう。
523デフォルトの名無しさん:2007/03/20(火) 20:15:31
>>520
100万個のオブジェクトから一つを選択するという、
ユーザーインターフェースを見直したほうがいいと思うが。
524520:2007/03/20(火) 22:25:47
>>522,523
返信ありがとうございます!

>>522
案2.よさげ!!
元の点(glRect)はそのままにして、色を変えたglRectで上書きするということですか??
それとも、元の点は消せたりできるんでしょうか??

>>523
なんか、DNAの情報の散布図か何かでどうしても100万(実際には10万くらい
なんですが・・)一気に見れたほうが都合がよくて・・。苦しいところです。
525デフォルトの名無しさん:2007/03/20(火) 22:31:20
投影テクスチャでマウスのまわりだけ色変えるんじゃダメだろうかw
526522:2007/03/21(水) 00:49:46
>>524
上書きだけど、glRectならそのままできそう(未検証)。
心配なのは視点からの奥行きだな。同じ奥行きの場所に上書きするって
ビデオカード、ドライバの種類で動作が変わる可能性がある。
上書きする点の手前に上書きしない点がある場合も考えられるので
そこら辺はソートするとかしないとダメかも。
アルゴリズム的なアイデアなので実装はがんばってみてww
527520:2007/03/22(木) 19:07:14
はい、頑張ってみます!ありがとうございました!
528デフォルトの名無しさん:2007/03/25(日) 15:01:39
あ、似たようなピッキング俺もやってみたいから
出来たらソース見せて
529デフォルトの名無しさん:2007/04/01(日) 00:04:56
視点からスクリーンに向かってレイを打ちたいんだけど
GLでスクリーンの画素の位置ってどうやって見つけたらいいのでしょうか

視点はgluLookatで初期値を指定してやるのですが
ググってもいまいちわからず。どなたかお教えください
530デフォルトの名無しさん:2007/04/01(日) 10:39:21
gluUnProject()を使うと早いかも。
「gluUnProject」でぐぐればいい感じのサンプル出てきます。
531デフォルトの名無しさん:2007/04/01(日) 17:58:24
レスありがとうございます。またお礼遅くなってしまってすみません。

gluUnProjectでググってみたところ、マウスでクリックしてその3次元空間の座標を取得というのが出てきました
それもやりたいのですが、目的のとは少し違っていて


視点からスクリーンの左上→右→次の列に行って右下までレイを投下して終了 というのをやりたいのです。
スキャンラインに近いのですが、視点からレイを自分で放つ練習というイメージで。

gluUnProjectでもう少し検索してみます。
しかし、レイを投下するTIPというのがほとんど無いですね…ネット上に
532デフォルトの名無しさん:2007/04/01(日) 22:06:27
>しかし、レイを投下するTIPというのがほとんど無いですね…ネット上に
と言ったからには、この問題が解決した暁にはきちんとTIPとしてネット上にまとめるように。w

それはともかく、gluUnProjectで3次元空間上の点を求められるということは、その点と
視点を結べば、レイのベクトルになるでしょ?(違うの?)
winZには、0.0〜1.0の間の適当な値を放り込んでおけば良し。方向には影響を与えないから。

ちなみに↑の方法は早いけど速くはないから、多数のベクトルを生成するのには不向き。
普通は、フラスタムの形とビューポートの大きさとモデルビュー行列から適当に計算すると
思うけど・・・ちょっと、「gluLookatで初期値を指定してやる」だけじゃ情報が足りないな〜。
533デフォルトの名無しさん:2007/04/01(日) 22:29:22
>>532
ボリューム関係のがぜんぜん無いので、理解できたら作ります。
ほんとOpenGL初めて間もなくて、床井先生の手抜きglutところをヒィヒィいいながらなので…

目→|スクリーン|

目からレイをボリューム(雲のような)に打って当たった表面のボリュームだけ表示、ということをしたくて。
他の方法もあるのでしょうが、レイを打って表示、ということをやっておきたくて。

>>普通は、フラスタムの形とビューポートの大きさとモデルビュー行列から適当に計算する
その普通のやり方がわかりませんでした。
ビューポート・モデルビュー行列が理解できていないで、コピペ→動いた→ある程度読んで満足を繰り返していたせいですね…
534デフォルトの名無しさん:2007/04/01(日) 22:31:45
訂正

目→|スクリーン|→ボリューム群 (色決定)

です。
535デフォルトの名無しさん:2007/04/02(月) 12:07:13
>>533
そうか了解・・・。
まずはモデルビュー変換、投影変換、ビューポート変換の仕組みを知る事が必要っぽい感じだね。

とりあえず、視点とかの設定が以下のようになってる場合
---
glViewport(vx, vy, vw, vh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(l, r, b, t, n, f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(ex,ey,ez, cx,cy,cz, ux,uy,uz);
---
の、レイのベクトルを算出する擬似コードを置いとくますよ。

多分こんな感じになると思う・・・。
---
const vec3 vf = normalize(vec3(cx-ex, cy-ey, cz-ez)); // 「視線」ベクトル
const vec3 vr = normalize(cross(vf, vec3(ux,uy,uz))); // 「右」ベクトル
const vec3 vu = cross(vr, vf); // 「上」ベクトル

for (int y = 0; y < vh; ++y) for (int x = 0; x < vw; ++x) {
  const float fx = l / n + (r - l) / n / vw * (x + 0.5f); // 視点より「1.0前方にある平面」
  const float fy = b / n + (t - b) / n / vh * (y + 0.5f); // における、vrとvuの係数
  const vec3 ray = vf + fx * vr + fy * vu; // 「レイ」ベクトル
  // rayを使う //
}
---
536続き:2007/04/02(月) 12:08:24
vec3は、float三要素のベクトルを表すクラスだと思ってくらさい。
crossとnormalizeはそれぞれ外積と正規化ね。
実際にはなんか適当なベクトル演算ライブラリを使うか、要素ごとの演算に書き下すか、
あるいは上のコードが通るようなvec3クラスを自分で実装しちゃうか。w (←実は一番オススメ)
ちなみにテストとか全然してないんで、間違ってたらごみんなさい。
一応分かりやすく書いたつもりだけど、意味不明なところがあったら質問ちょーだい。

あと、一言加えるなら・・・
  「初心者は、gluPerspective()とかgluLookAt()とか使うな!」
って感じかなぁ。

ま、がんばって。ノシ
537504:2007/04/02(月) 12:10:57
そんなこと聞いてないし・・・
538デフォルトの名無しさん:2007/04/02(月) 18:28:29
ありがとうございます。コメントがわかりやすくて助かります。
試しにやってみます。ホントに色々ありがとうございます。

for (int y = 0; y < vh; ++y) for (int x = 0; x < vw; ++x) 以降がスクリーンの画素にレイを投下しているところですよね
スクリーンの走査ってこれだけで出来るのですね。
539デフォルトの名無しさん:2007/04/03(火) 01:22:56
SwapBuffersの実行速度について質問です。
現在、開発環境にMFCを使用して、SwapBuffersと視点の変更のみの実行速度を計測するプログラムを作っています。
時間の計測にはQueryPerformanceCounter関数を使用しており、ミリ秒単位で計測しています。
しかし、次の二つの方法では、SwapBuffersの実行速度に大きな違いがでてしまいます。

@視点距離一定、 視点角度を変更してSwapBuffers
(実行時間) ≒ 14msec

A視点距離を変更、視点角度一定でSwapBuffers
(実行時間)≒ 0.5ms

このような時間差はでるのはなぜなのでしょうか。また、@の状態を高速化することは可能でしょうか?
どなたかよろしくお願いしますm(_ _)m
540539:2007/04/03(火) 01:58:30
>539の問題事故解決しました。すみませんでした。
視点の変更をマウス操作で行っています。@とAでは、
イベントの呼び出し頻度が@の方がはるかに多く、
@ではSqpBuffersのところで渋滞を起こしてるみたいです。
541デフォルトの名無しさん:2007/04/03(火) 02:00:36
視点距離や視点角度の指定方法、何を描画しているか、
グラフィックカードの種類とかがわからないと、なんともいえない。
542デフォルトの名無しさん:2007/04/04(水) 00:48:19
>541
描画はしていません。視点距離・視点角度はglLookupで指定してます。

↓の記述を参照にするのがよさげみたいです。
http://developer.apple.com/jp/technotes/tn2093.html#TNTAG7
以下抜粋

##グラフィックパイプラインをオーバードライブしない##

これは通常、短い間隔で立て続けに作動するタイマを使用し、
作動のたびに描画ループを呼び出すことで行われます。

しかし、その効果はしばしば、期待とは正反対です。CPU 時間は通常の 2 倍または 3 倍
(時にはそれ以上)消費され、アプリケーションのパフォーマンスが大幅に低下します。
このような場合は、システムに描画の制御を任せるか(たとえば、Cocoa では -setNeedsDisplay: を使用)、
タイマ間隔を大幅に延長するのが最善です。
543デフォルトの名無しさん:2007/04/04(水) 00:50:30
まちがえました。
glLookup −> gluLookAt
544デフォルトの名無しさん:2007/04/04(水) 17:00:03
今、2Dのゲームを作っていて、

glMatrixMode(GL_PROJECTION);
glPushMatrix;
glLoadIdentity;
glOrtho(0, FWidth, FHeight, 0, -10000, 10000);

glMatrixMode(GL_MODELVIEW);
glPushMatrix;
glLoadIdentity;

(FWidth = 640, FHeight = 480)
とやって、正射影にして、z座標=0に、図形やテクスチャー書きまくっています。

3Dっぽい表現がしたくなり、
これをそのまま、透視法射影にすることって、できますか?

glFrustum(0, FWidth, FHeight, 0, -10000, 10000);

にしましたけど、画面真っ白で何も描画されなくなりました。
できないならできないでいいですけど、可能かどうかを知りたいです。
545デフォルトの名無しさん:2007/04/04(水) 17:00:38
日本語変ですまそ。

> 3Dっぽい表現がしたくなり、
> これをそのまま、透視法射影にすることって、できますか?
3Dっぽい表現がしたくなってのですが、
これをそのまま、透視法射影にすることって、できますか?
546デフォルトの名無しさん:2007/04/04(水) 18:18:43
>>544
glFrustumは 0 < near < far じゃなきゃダメですよん。
ただ、そうすると当然z=0は視界から外れて見えなくなるので、
モデルビュー行列でzを負の方向にずらしてやる必要あり。
つまり
  glFrustum(0, FWidth, FHeight, 0, -10000, 10000); → glFrustum(0, FWidth, FHeight, 0, 1000, 10000);
そしてモデルビュー行列で
  glTranslatef(0, 0, -1500);
とか。

ただ、↑の状態だとフラスタムがゆがんでる(左右(上下)対称じゃない)ので、変な立体感になるかも。
フラスタムを対称にしたうえでそれをモデルビュー行列で補整すると、結局こんな感じになるかな。

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-FWidth/2, FWidth/2, FHeight/2, -FHeight/2, 1000, 10000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(-FWidth/2, -FHeight/2, -1500);
// 1000とか1500とかの値はテキトーです。
// glPushMatrix()要らなくね?



>>545
まだ日本語おかしいwww
547デフォルトの名無しさん:2007/04/05(木) 12:01:39
>>546
返信サンクスです。
私は、基本的なことがわかってないみたいですね。

うはー、z=0って、入らないのか!

フラストラムゆがむのは、確かにそうかもですね・・・
試してみます。


glPushMatrixは、実は、参考にしたコードが、
普段はglFrustumしていて、その上で、2Dしたい時だけ glOrtho して、
3Dに戻りたくなったら、Popするっていうコードだったんです。
その名残です。気にしないで。
548デフォルトの名無しさん:2007/04/05(木) 12:48:22
OpenGLっていうか3Dというものは、独習以外となると
どこで学べるのですか。
549デフォルトの名無しさん:2007/04/05(木) 13:07:33
だいがく
550デフォルトの名無しさん:2007/04/05(木) 15:43:33
大学でまともに3Dを教えてくれるところがあったら知りたいものだぜ・・・
551デフォルトの名無しさん:2007/04/05(木) 16:10:20
>>548
独習しかないんじゃないかな・・・
552デフォルトの名無しさん:2007/04/05(木) 16:24:10
え、3Dって代数幾何だから中学〜高校数学で基本は教えてくれるでしょ

それともGLやD3DみたいなAPIの使い方やテクニックの事を言ってるの?
553デフォルトの名無しさん:2007/04/05(木) 17:54:23
大久保工科大学は幾何の科目も3Dグラフィックスの科目もあるよ
554デフォルトの名無しさん:2007/04/05(木) 18:37:58
で、早大って兵隊以外育ててるの?
兵隊でも別にいいんだけど

東大に代数幾何の研究室に所属してる知り合いがいるが、
どうやら東大ではあんましいい研究・教育をしてる雰囲気じゃないな。
京大も似たような感じ。

まともにやれてる所って多分日本には無いでしょ。
555デフォルトの名無しさん:2007/04/05(木) 19:08:01
デジタルハリウッド大学院を知らないのか・・
556デフォルトの名無しさん:2007/04/05(木) 19:24:43
それは想定外だった…
557デフォルトの名無しさん:2007/04/05(木) 21:33:43
そこについてはCG板で聞いて来い・・・
558デフォルトの名無しさん:2007/04/06(金) 13:12:48
>>550 dea (^^;
559デフォルトの名無しさん:2007/04/06(金) 20:19:45
>>558 DEA = 麻薬取締局 (Drug Enforcement Administration)
なんだこりゃ??(´ω`)
560デフォルトの名無しさん:2007/04/11(水) 01:41:24
テクスチャマッピングが全く分からん

webから拾ってきたサンプルコードもバラバラだし動かないのと動くのがあるし
サンプルコードどおりに書いてみても全然動かねーし

これは赤本を買えということなのか
561デフォルトの名無しさん:2007/04/11(水) 01:58:03
>560
どのへんがわからんの?
562デフォルトの名無しさん:2007/04/11(水) 13:52:36
>560
赤本買わなくてもできるとは思うけど
買うのと買わないのとでは理解の早さが何倍も変わってくる
563デフォルトの名無しさん:2007/04/11(水) 16:49:58
俺、赤本買ったけど、全然よんでねえーw
オプソのゲームのソースばかり読んでる。

>>560
どう動かないという状態をはっきりわかれば、助言できるかも。

あとは、
・テクスチャマッピング以前に、普通のポリゴンが表示されるか?
・貧弱なグラフィックカードを使っていないか?
・ポリゴンの描画順によっては、表示されないこともある(右回り、左回り)
など
564デフォルトの名無しさん:2007/04/11(水) 20:12:00
563さんが560さんに赤本をプレゼントして一件落着。


テクスチャマップされてないポリゴンは、まず表示されているとして・・・
ありがちなのは、
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
してなかったためにテクスチャが映らない、とかかな〜。

なんでGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなのか、いまだ理解できません・・・。
誰か合理的な説明を教えてぷりーず。
565デフォルトの名無しさん:2007/04/12(木) 01:24:04
> なんでGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなのか、いまだ理解できません・・・。

いつもネットのサンプルそのままで、初期値なんか気にしたことなかったけど、
初期値だと、MIPMAP生成してないと写らんってこと?
566デフォルトの名無しさん:2007/04/12(木) 02:18:16
そうなのよ。

でも、MAGフィルタが適用されるような大きなポリゴンならテクスチャ貼られる。
MINフィルタが適用されるようだと貼られない。
奥行き方向に斜めなポリゴンだと部分的に貼られたり、要するに運次第ってこと。w
(プログラムは同じでも、ウィンドウサイズによって貼られたり貼られなかったり・・・)
これって初心者にとってはかなり大きな罠だと思う。

てか初心者じゃなくても、わざわざミップマップなんか作りたくない場合だって
多いと思うんだけどなぁ〜。
567デフォルトの名無しさん:2007/04/12(木) 10:04:06
Open GL勉強するために中古のSgiマシンを買うのはアリですか?
最新のWindows用のグラフィックカードのほうが早いですか?
それとソースコードはgccでコンパイルできますか?
568デフォルトの名無しさん:2007/04/12(木) 10:16:16
拡張機能を使わないなら適当なWin機で十分
10年以上前の代物でなければわざわざGPUを更新する必要もないでしょ。
569デフォルトの名無しさん:2007/04/14(土) 18:04:25
DirectX9の ID3DXSprite::Draw のようにテクスチャの一部をアルファブレンドを行って描画することを、OpenGLで行いたいのですがやり方がわかりません。
実現方法を教えてください。
570デフォルトの名無しさん:2007/04/15(日) 05:44:21
OpenGL(OpenGL ES)で使用可能なモデルやモーションを作成可能なツールを教えてください。
Javaで携帯向けコンテンツを作成したいと考えていて、MascotCapsule、M3G(JSR-184)であればBlenderを使用すればよいことはわかったのですが、OpenGLは調べ切れませんでした。
571デフォルトの名無しさん:2007/04/15(日) 15:05:21
>>596
OpenGLにはスプライトというものは無いので、アルファ付きのテクスチャを貼った
ポリゴンを描画するか、glDrawPixelsを使うかですかね。

>>570
そのようなツールは存在しません。
というか、OpenGL自体に、モデルやモーションという概念がありません。
572デフォルトの名無しさん:2007/04/15(日) 15:09:49
D3Dでいうポイントスプライトってないのか
573デフォルトの名無しさん:2007/04/15(日) 15:34:59
>>572
ああ、ポイントスプライトはあります。忘れてました。w

えっと・・・ポイントスプライトが標準になったのは2.0以降だったかな。
標準でないバージョンでポイントスプライトを使いたい場合は、
拡張関数を呼ぶ必要がありますね。
574デフォルトの名無しさん:2007/04/15(日) 15:46:28
D3Dだと固定機能なんだがな

ポイントスプライトはアルファテストと並んで最も頻繁に使う固定機能だったのに
D3D10から廃止ときた
575570:2007/04/15(日) 16:06:48
>>571
ありがとうございます。

OpenGLのデモムービーで、戦闘機が飛んでいたり車が走っていたりするものを見かけるのですが、あれらはコーディングでゴリゴリモデリングとモーショニングされているのですか。

敷居が高いなぁ、と感じました。
576デフォルトの名無しさん:2007/04/15(日) 17:01:04
↑そのデモを見てみないと分からないけど、複雑なモーションとかは
なんらかのミドルウェアを使ってるんじゃないでしょうかね。

OpenGLてのは、良くも悪くも低レベル(ハードウェアに近い層)のライブラリなんですよ。
モデルだのモーションだのってのは、もっと上のレイヤで扱うべき仕事なのでOpenGLには含まれません。

もちろん、OpenGLを使用して、モデルやモーションを提供するようなミドルウェア(ゲームエンジンとか)は
いくつか存在します。各種モデリング&モーションツールとの連携はそのミドルウェアごとに対応が違うので、
まずはミドルウェアの仕様を調べてみるのが早いんじゃないでしょうか。

標準でそういう仕組みが用意されていない、という意味では確かに敷居が高いかもですね・・・。
577デフォルトの名無しさん:2007/04/15(日) 17:07:26
>>575
>コーディングでゴリゴリモデリングとモーショニングされているのですか。

んなわけないがな。好きなツールでモデルとスキンアニメーションを作って、
好きなフォーマットで保存したのを自分でロードされているのです。
最近では Collada が標準に一番近いのかな。Blender でも Collada で
エクスポート出来るでしょ。
578デフォルトの名無しさん:2007/04/15(日) 17:13:55
敷居は高いと思うけどQuake3やIrrlichtとかがオープンソースなんで眺めてみるといいかも
579570:2007/04/15(日) 18:11:02
>>576
展示会で見たデモムービーはこれです(重いので注意)。
ftp://www.arm.com/mali/skyrage/skyrage17_xvid.avi

これはたぶんOpenGL ES 2.0です。


>>577
情報ありがとうございます。
Blenderは1週間ぐらい調査して使ってもみているのですが、かなり難しいです。
3Dプログラミング未経験なので、APIよりもまずはツールを先に覚えたほうがよいと思っているのですが、Blenderだとツールの段階で挫折しそうです。
いろいろ調べた結果、六角大王Superがもっとも簡単そうなので、値段も手頃だしこれを使いたいと考えていますが、致命的な問題などありますか?
とりあえずは六角大王(フリー)でモデルを作ってみたりしています。


>>578
ありがとうございます。
Irrlichtは興味深いですね。
六角大王(フリー)形式を独自でバインドすることになった場合に参考になりそうです。
580デフォルトの名無しさん:2007/04/15(日) 19:33:11
メタセコでいいじゃん
581デフォルトの名無しさん:2007/04/15(日) 21:49:44
glPolygonOffset(GLdouble factor, GLfloat unit)

の引数factorとunitってなんですか?
googlで引っかかったサイトに同じ質問がのってたのですが、
英文・訳文とも、読んでもよくわからんです。
582デフォルトの名無しさん:2007/04/15(日) 22:01:07
583デフォルトの名無しさん:2007/04/16(月) 00:45:13
(´・ω・`)?
とりあえず、デカけりゃおっけーってこと?
584581=583=584:2007/04/16(月) 00:48:03
>m がポリゴンの画面領域に関する深度の変化の積である場合、オフセットの値は
>
>m * factor + r * units
>
>です。
>また、r は、与えられた実装の方の分析できるオフセットを作ることを保証される、最も小さな値です。

これ見ても、変な日本語だなあ、としか思えないのですよ。
585デフォルトの名無しさん:2007/04/16(月) 01:08:04
mはスクリーンの平面に対するポリゴンの傾き、
rはオフセットの実装依存な最小値って意味じゃね?
586デフォルトの名無しさん:2007/04/16(月) 01:11:05
m * factor ←これはなんのためにあるのでしょうか?
587デフォルトの名無しさん:2007/04/16(月) 01:14:37
シャドウマップへのレンダリング時にバイアスを掛けるときにシャドウマップの解像度が大きいほど大きくしたりする


らしい
588デフォルトの名無しさん:2007/04/16(月) 01:29:02
シャドウマップが何かはわかりませんが、シャドウマップを使わない場合は、
factorは不要ってことですかね。

とりあえず、factor固定、units可変にして試して見ます。
589デフォルトの名無しさん:2007/04/16(月) 01:41:50
まちがえた、解像度が大きいほど小さくするだた
590デフォルトの名無しさん:2007/04/16(月) 01:51:10
>589
ふむふむ。
解像度が小さいほどピクセル数は少なくなる。
限られたピクセルには重要度の高いポリゴンを描画したい。

ポリゴンを射影する平面の法線に対し、てポリゴンの法線がなす角の大きいポリゴン
のほうが重要度が高いので、ポリゴンの傾きを優先度の判断に加えてやるってことなのですね

…たぶん。

なぜ傾きの大きいポリゴンが重要なのかは謎ですが、シャドウマッピングを
使わないので気にしないことにします。ありがとうございました。
591デフォルトの名無しさん:2007/04/16(月) 08:30:39
シャドウマップ、言ってみりゃジオメトリを考慮して出力する形態をとるテクスチャ
592デフォルトの名無しさん:2007/04/17(火) 01:50:30
factor固定、unit可変でglPolygonOffsetを試してみたけどうまくいかず。
>584にあるオフセット値m * factor + r * unitsは、いったいどこに加算されているのでしょうか?

射影する平面と、射影する平面との距離にオフセット値が加えられているとしたら、
r*unitsが大きければポリゴンは重ならない気がするのだけど、どうもそうではなさげ。

factor, unitをいじってみた感じでは、z軸の正方向とポリゴンの法線のなす角度が大きくなると、
factorの値が効いてくるようだけど、うーんわからんとです。
593デフォルトの名無しさん:2007/04/19(木) 00:32:18
(゚д゚)ポリゴンオフセットって、マイナスが手前なのか!!!!

しかも、1000とか2000とかオフセットしてもまるで平気。スケールでかすぎ。
やっとうまく行きいました。
594デフォルトの名無しさん:2007/04/27(金) 01:14:28
OpenGLの空間内の'1'を画面上の1pxと同等の大きさで描画する場合はどういう風にビューポートやアスペクト、カメラ位置をずらせばよいでしょうか
595デフォルトの名無しさん:2007/04/28(土) 11:38:24
>>594
glOrthoのleft, right, bottom, topに0〜ウィンドウサイズ指定すればいいよ
596デフォルトの名無しさん:2007/05/03(木) 23:38:19
仕事で困らぬくらい3Dを習得するには、最低限何の学問をどこまでやれればいいの
597デフォルトの名無しさん:2007/05/04(金) 00:43:07
そんな事言ってる時点でアウト
598デフォルトの名無しさん:2007/05/04(金) 16:08:12
PhtoShopで言う、スクリーン合成ってOpenGLで可能でしょうか?
Shaderは無しの方向性で・・・


PhotoShop上で、検証してみたところ、

 dest = (src+dest) - (src*dest)

のようなのですが、可能ですかね?
599デフォルトの名無しさん:2007/05/04(金) 16:09:01
Simple Inspiration
http://d.hatena.ne.jp/keim_at_Si/20060210

ここのページを見たら

> 【追追記】
> //スクリーン合成
> glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE);

ってあったんですが、なんか違うような・・・
600デフォルトの名無しさん:2007/05/04(金) 16:53:03
8bitのビットマップのデプス画像を読み込んで、サーフェスモデルを作るにはどうしたらいいんでしょうか。
すいませんが誰か教えてください。
601デフォルトの名無しさん:2007/05/04(金) 16:53:56
>>599
src + dest - src * dest
src * (1 - dest) + dest
SRC * GL_ONE_MINUS_DST_COLOR + DEST

ちゃんと、>>599の式でできますね。
解決!ありがとうございました。
602デフォルトの名無しさん:2007/05/07(月) 20:11:07
質問です。
GL_DEPTH_COMPONENTなテクスチャをシェーダを使わずに
目で確認できるようにポリゴンにテクスチャマップする方法はありますか?
603デフォルトの名無しさん:2007/05/12(土) 17:54:44
OpenGLって無料でDLできるんでしょうか?
どこでDLできるのか教えてください
604デフォルトの名無しさん:2007/05/12(土) 18:07:45
605603:2007/05/12(土) 19:01:29
すみません。わかりませんでした
どうやってDLするんでしょうか?
606デフォルトの名無しさん:2007/05/12(土) 19:04:54
>>605
その質問をした時点でもうお前には無理
たとえ、DL出来たとしても使えない
諦めろ
607デフォルトの名無しさん:2007/05/12(土) 19:12:14
パクリよしはるよりはマシ
608デフォルトの名無しさん:2007/05/12(土) 20:32:22
>>606
ネトゲやろうとしたらopenGLがどうこうってエラーメッセージがでたんで
とりあえずopenGLがいるのかと思っただけなんで使うことは考えてなかったんですが
これをダウンロードすることによって出来るようになるゲームってあります?
609デフォルトの名無しさん:2007/05/12(土) 21:20:40
GPGPUスレで聞いたらスレ違いだとイワレマシタ。
どなたかお答え願えませんか。

ttp://mumei24.run.buttobi.net/cgi-bin/upload.cgi?mode=dl&file=971
DLパス:gpu

トーラスをランバートのシェーディング(cg)で表示するだけのプログラムなのですが
どうも動かないです。OPENGLです。

誰か助けてください。
610デフォルトの名無しさん:2007/05/12(土) 22:06:48
>>608
わからんけど、ビデオドライバとかじゃね?
611デフォルトの名無しさん:2007/05/13(日) 07:18:22
いま思ったけど、テンプレにNeHeとかが入って無いのはどうかと思うんだ・・・

>>603
OpenGLのゲームとかプログラムを動かしたいだけなら、すでにドライバなりなんなりが
マシンに入っているはずなので、OpenGLは、そのまま動きます。

OpenGLで、プログラムを組みたいならば、言語に合わせたヘッダーファイルが必要になります。
OpenGLのプログラムの組み方は、入門サイトを読んでください。

NeHe Productions: Main Page
http://nehe.gamedev.net/

>>606
スレたいミロ
612デフォルトの名無しさん:2007/05/13(日) 15:55:53
>>602
テクスチャのフォーマットを GL_LUMINANCE なり GL_INTENSITY なりに
してやれば良いんでないのカナ?
613デフォルトの名無しさん:2007/05/13(日) 16:28:10
>602
確かハードウェアシャドウマップに対応してないラデ9500とかを使えばグレースケールで描画できたと思うよ
今手元に無いから検証はできないけど

多分ドライバ内部でDEPTH_COMPONENTをRGB16とかで擬似的にやってるんじゃないのかな
614デフォルトの名無しさん:2007/05/13(日) 17:02:21
チートオンは、シャドウマップをR32Fに入れてチートするよ
615デフォルトの名無しさん:2007/05/14(月) 09:09:58
GL_INTENSITYとGL_LUMINANCEの違いが未だによくわからないのだが・・・。
616デフォルトの名無しさん:2007/05/16(水) 17:17:29
>>609ですが、ここでもスルー…
617デフォルトの名無しさん:2007/05/16(水) 17:30:15
>>616
つーか、どう動かないのか?わからんことには答えられないのでは?
あと、バイナリもup。
618デフォルトの名無しさん:2007/05/16(水) 17:31:13
「どうも動かない」だけ言われても動かしてみる気にはならんからなあ
619デフォルトの名無しさん:2007/05/16(水) 17:51:52
>>617
バイナリは609からDLできます

CとCgのが二つで
GL側にエラーは無くて、実行すると「Cg error」とだけ出て動かないのです

ランバートのシェーディング(Cg部分)をするトーラスを画面に表示するだけのプログラムです
620デフォルトの名無しさん:2007/05/16(水) 17:59:14
バイナリ入ってない件
621デフォルトの名無しさん:2007/05/16(水) 18:02:27
ぁ…ソースと勘違いしてました
別PCに入っていて。。。すみません
622デフォルトの名無しさん:2007/05/17(木) 18:12:22
次スレテンプレ候補。
他に入門サイトあったらお願い

NeHe
http://nehe.gamedev.net/

OpenGL入門
http://wisdom.sakura.ne.jp/system/opengl/index.html

高速OpenGL講座
http://verygood.kyushu-id.ac.jp/opengl/index.html
623デフォルトの名無しさん:2007/05/17(木) 19:17:08
>>620
ttp://mumei24.run.buttobi.net/cgi-bin/upload.cgi?mode=dl&file=1079
DL:gpu 解答:gpu

実行ファイルです
ひとつはGLでトーラスを表示するだけ(トーラスが表示されるもの)
ひとつはCgでそれをランバートシェーディングさせるものです。(Cgエラーと出るもの)

ソースは609です
624デフォルトの名無しさん:2007/05/17(木) 19:39:08
>>622
DisplayListとCVAとFBOの速度比較やってるサイトってなかったっけ?
昔どこかで見たんだが忘れてしまった。
625デフォルトの名無しさん:2007/05/17(木) 19:52:29
つーか本スレもここも酷い過疎スレなんだから統合しる
626デフォルトの名無しさん:2007/05/18(金) 13:59:47
>>624
崩壊日誌
http://alb.hp.infoseek.co.jp/
ここ。結構ためになった。
627デフォルトの名無しさん:2007/05/18(金) 15:32:49
>>626
おお、参考になる

628デフォルトの名無しさん:2007/05/18(金) 15:36:39
DisplayListハエエエエエーー
ワロタ
そんなに早かったのか・・・VBOより早いじゃん
629デフォルトの名無しさん:2007/05/18(金) 18:22:37
>>626
そうそう、ここだ。THX
今度こそブックマークしておこう。
630デフォルトの名無しさん:2007/05/18(金) 20:44:51
マウスでウィンドウに線引いて
それを回転させたら

他のオブジェクトと同じように回転する?
631デフォルトの名無しさん:2007/05/19(土) 03:17:06
なにを言ってるのかよくわからないが、
普通の直線なら、回転する。
632デフォルトの名無しさん:2007/05/19(土) 17:09:48
GLTTで日本語を利用するのって
もしかしてかなり手間かかります?
633デフォルトの名無しさん:2007/05/19(土) 18:37:00
工場だよ
材料調達から、トラックで出荷するまでが仕事

材料調達とは命令の入力
出荷はデータの出力

工場だから、当然中で働いている人がいる
調達から出荷まで一瞬で終わるなら、レイテンシ(待ち時間)なし。
で、スループットは、出荷数。100000の入力があったら100000
レイテンシがないので、次の作業に即座に移ることができる。

調達から出荷まで、半日かかるとしよう
この場合、レイテンシは半日。
スループットに目を向けると、100000の入力をしようとしていたのに出荷が遅いので
スループットは2とか3とかになるだろ
レイテンシが大きいと出荷(計算完了)までの時間が長くなるので
次の作業にすら移れず、性能の悪い工場であると。
634デフォルトの名無しさん:2007/05/19(土) 18:52:27
>>632
この手の話を見るといつも思うんだけど、FreeType を直に扱えば良いじゃん。
635デフォルトの名無しさん:2007/05/19(土) 21:55:07
それで済むならならGLTTもFTGLも存在しない
636デフォルトの名無しさん:2007/05/19(土) 22:17:44
ねえパトリシア
>>633は何を言っているの?
637デフォルトの名無しさん:2007/05/20(日) 00:02:56
アセンブラのスレと間違えたんだよ、きっと
638デフォルトの名無しさん:2007/05/20(日) 00:23:35
>>635
何か問題あるのけ?
639デフォルトの名無しさん:2007/05/20(日) 02:15:44
freetype、資料が見つかんねぇ・・・
640デフォルトの名無しさん:2007/05/20(日) 02:41:23
Cairo とか Gtk+ のソースコードを読むナリよ。
641デフォルトの名無しさん:2007/05/20(日) 03:09:21
>639
neheの43とリファレンスを見れば足りるかと
642デフォルトの名無しさん:2007/05/20(日) 12:42:42
「補助ライブラリって、
・各人が対象の細かい仕様を知る労力
・車輪の再発明
を回避するためのものだろ・・・」
って,FTGLのコンパイルに失敗して資料を読んだ俺がそう言ってたよ
643デフォルトの名無しさん:2007/05/20(日) 18:37:29
VB6でOpenGLのプログラムを作っているのですが、100万本の直線群を回転させたい場合、毎回 バッファクリア→角度設定→100万本描画→画面表示 の作業(下記例)を繰り返さなければならないのでしょうか?
もっと高速に回転描画させる方法はないでしょうか?
初心者ですが、よろしくお願いいたします。

Call glClear(clrColorBufferBit Or clrDepthBufferBit)
Call glRotatef(angle, 1, 0, 0)
Call glBegin(bmLineStrip) '中心線の直線群
for i=1 to 1000000
Call glVertex3f(x(i), y(i), z(i))
next i
Call glEnd
Call SwapBuffers(Picture1.hdc)
644デフォルトの名無しさん:2007/05/20(日) 20:20:46
画面を回転させる
645デフォルトの名無しさん:2007/05/21(月) 00:06:12
>>643
基本的にはその通り。毎回、一から全部描かないといけません。
そのため、要は100万本の直線をどうやって速く描くか?という問題になります。
もうちょっと具体的には、glVertexを100万回呼ぶ代わりに
glDrawArraysやglDrawElementsを1回呼んで済ましたり、
DisplayListやVertexBufferObjectといったものを利用するわけです。

丁度>>626で良いサイトが紹介されてるので、一度覗いてみると宜しいかと。


>>644
首を回転させた方が早いよ?
646デフォルトの名無しさん:2007/05/21(月) 00:08:36
>>643
基本的には、繰り返しが必要。

実装方法で、高速化を図る。
もしくは、アルゴリズムをみなおす(100万本をきちんと描画する必要があるのか?とか)。

ただ、VBで高速化を目指そうというのが、そもそもの間違い。
647デフォルトの名無しさん:2007/05/21(月) 02:15:07
>ただ、VBで高速化を目指そうというのが、そもそもの間違い。

大量の頂点群をリアルタイムでこねくりまわしたりするならともかく、
643みたいな単純な例ならVBでも問題なっしん。
OpenGLの高速化って、「いかにコマンドのsubmitを減らすか」「いかにステート変更を減らすか」
「いかにデータの転送を減らすか」が焦点だから、言語の速い/遅いに関係無く応用できるよ。

それよりVBって知らない(N88-BASICなら使ったことあるw)んだけど、
ポインタどうするのかな。頂点配列とか使えんのかいな??
648デフォルトの名無しさん:2007/05/21(月) 08:15:52
VBでDirectX使えるくらいだから、できるっしょ
649643:2007/05/22(火) 00:16:45
皆様方有難う御座います! 大変参考になりました。
いろいろ高速化の方法がありそうですので、これからじっくり勉強したいと思います。
650デフォルトの名無しさん:2007/05/22(火) 14:27:08
8bitのグレースケールの距離画像を表面形状が分かるようにポリゴンで表したいんです!どんなプログラムを組めばいいでしょうか。教えてください!
651デフォルトの名無しさん:2007/05/22(火) 14:29:19
CGソフト買え。
それが一番早い。
652デフォルトの名無しさん:2007/05/22(火) 14:33:43
フリーソフトでお願いします!
653デフォルトの名無しさん:2007/05/22(火) 15:31:47
板違い
654643:2007/05/23(水) 16:43:00
あれから調べてDisplayListを使ってみたらかなり高速になりました。ただ一度登録したリストの頂点を部分的に変えることができないようでしたので、頂点配列を使いたいと思うのですが・・

Dim Vert(100) As Double
For i = 0 To 100
Vert(i) = Rnd
Next i
Call glEnableClientState(caVertexArray)
Call glVertexPointer(3, ipnDouble, 0, VarPtr(Vert(0)))
Call glDrawArrays(bmLineStrip, 0, 100)
Call SwapBuffers(Picture1.hdc)
655643:2007/05/23(水) 16:50:28
上記のコードでランダムに直線が100描かれるはずだと思うのですが、なぜか1本(すべて重なっている)の長〜い直線しか描かれません。
なにか間違っているのか、もしくはVB6では頂点配列はサポートされていないのでしょうか??
もしご存知のかたがおられましたらご教示ください!
656デフォルトの名無しさん:2007/05/23(水) 18:19:43
>>654
取りあえず、なんで3次元直線100本引きたいのに
Vert(100)、bmLineStripなのかと質問したい。
657643:2007/05/23(水) 20:39:16
>>656
連続した100万本の直線で形状を表現をしたくてbmLineStripなのです。
とりあえずテストで100本と思ったのですが、よく考えたらvert(100)だと32本?しか引かれませんね・・
ボケてました。。

658デフォルトの名無しさん:2007/05/23(水) 21:14:53
>>654
VBで見るOpenGLってすげー新鮮。w
BASICの配列のインデクスって1ベースじゃなかったっけ。Forループおかしくない?
・・・と思って調べてみたら、VBは0ベースだったのね。へー。

1.3次元の頂点を100個送るんだから、Doubleの配列は300個必要だと思うんだけど。
2.1本しか見えないのに、「すべて重なっている」と判断した理由は??
3.何故か知らないけど、glDisableClientState(GL_VERTEX_ARRAY)しないと正常に描画されない
  ことがあったよ。SwapBuffersの前にCall glDisableClientState(caVertexArray)を加えてみては?
659654:2007/05/23(水) 22:38:13
>>658
有難う御座います。
1.ですよね・・300個用意してみました。
2.視点をいろいろ変えて描画させてみたのですが、どこから見てもほぼ1本しか見えませんでした。
  しかし回転角度によってはちらっと2本見えたり、意味不明な状態です。
3.Call glDisableClientState(caVertexArray)加えてみましたが、ダメでした。
ネット検索してもVBで頂点配列使った例はないようで・・困りました。
660デフォルトの名無しさん:2007/05/24(木) 20:12:51
あとは・・・そうだなぁ・・・。
定数が、caVertexArray/ipnDouble/bmLineStripと命名規則がバラバラなのが気になる。
CだとGL_VERTEX_ARRAY/GL_DOUBLE/GL_LINE_STRIPなんだけど、VBの定数ってどうなってるの??
ipnDoubleあたりが怪しい気がするんだけど、ちゃんと合ってる??
てか、このあたりの知識はどう調べれば良いのかな。"ipnDouble"でぐぐっても一件も出てこないし。(゚д゚)
661デフォルトの名無しさん:2007/05/24(木) 21:39:02
たまにはGL_LINESのことも思い出してあげてください…
662654:2007/05/26(土) 01:27:44
>>660
試してみたところ、VBでも「GL_」で始まる定数を使えるようです。
実際にGL_DOUBLEとipnDoubleの定数の値を表示させてみたら同じ値でしたので、他に原因がありそうです。
頂点配列は諦めるしかないですかね・・皆様アドバイス有難う御座いました。

663デフォルトの名無しさん:2007/05/26(土) 10:16:20
JOGL以外でJAVA+OpenGLをやることはできる?????
664デフォルトの名無しさん:2007/05/26(土) 10:21:17
「Java OpenGL -JOGL」でググレカス
665デフォルトの名無しさん:2007/05/28(月) 19:54:33
だれかglx使ってる人いる?
666デフォルトの名無しさん:2007/05/28(月) 20:02:47
>>665
fedora coreだからAIGLX。。なんかのテストかい?
667デフォルトの名無しさん:2007/05/28(月) 20:28:10
>666
Xglと勘違いしてませんか?

てか、俺もglxの使い方を知りたい
どこか、参考になりそうなサイトはありませんか?
668デフォルトの名無しさん:2007/05/28(月) 22:30:22
赤本じゃだめ? > glx
669デフォルトの名無しさん:2007/05/28(月) 23:21:04
glxなら緑本じゃなかったっけ?
670デフォルトの名無しさん:2007/05/30(水) 08:13:32
>>652

terragenスレ行け
671デフォルトの名無しさん:2007/05/31(木) 09:43:20
mixiで、いきなり初対面なのに、マイミクについかよろ、OpenGLの大学の宿題といてくれ、
ときたから、プロフィールも見ずにことわってしまったよ。

ここみてたら、ごめんよ。
672デフォルトの名無しさん:2007/05/31(木) 11:49:05
それは断って当然、何も悪くない
673デフォルトの名無しさん:2007/06/01(金) 16:47:30
GLUTでフレームレートを表示する
本当に簡単なサンプルソースがあるところ教えてください
674デフォルトの名無しさん:2007/06/01(金) 20:33:17
ARB_fragment_programって何も明示しないと最低でも24bit浮動小数点精度を要求される
これって標準で、D3DでいうところのPixelShader2.0ができるということでわ?????



D3DだとPS2.0からはFixedPoint精度シェーダを使用できないが
OpenGLだと明示すればhalfもFixedも使用できる点がゴイスー
675デフォルトの名無しさん:2007/06/01(金) 23:51:00
>>673
GLUTに限定しないでぐぐれば、すぐ見つかるっしょ

>>674
そのコピペはどの辺が面白いの?
676おしえてちゃん:2007/06/03(日) 11:48:24
質問です。
点を二つ作り、その点の大きさをgl_PointSizeを使って
大きくしたら、点が重なりました。その重なった部分の処理は
どのように処理されるのですか?

1,(vertex + fragment を一単位と考えて)
二度シェーダプログラムを呼んで色の混合を作る。
2,(上と同じ考えで)一度で処理する。
3,そのほか

よくわかりませーん
どれですか?
677デフォルトの名無しさん:2007/06/03(日) 16:14:25
>>676
マルチしすぎ
678デフォルトの名無しさん:2007/06/03(日) 19:09:04
>>676
いくらなんでもマルチしすぎワロタ
679デフォルトの名無しさん:2007/06/03(日) 20:25:33
透明なテクスチャにビルボードのように像を貼り付けたいのですが
貼り付けるものが、[x y 輝度値]といったファイルで格納していて

たとえば x=1 y=1 (255 255 0)見たいな値が書き込まれているファイルがあります
それをポリゴンに書き込んで行きたいのですが

透明なポリゴンの作り方と
そのポリゴンに色を落としていく方法を教えてもらえないでしょうか

x y 輝度値 を読み込んでというとこまでは出来たのですが
ポリゴンに書き込んでいくのが出来なくて…

680デフォルトの名無しさん:2007/06/03(日) 20:27:58
例えば
x y R G B といった感じで
0 0 255 255 0
0 1 255 255 0
0 2 255 255 0

63 62 255 255 255
63 63 255 255 255

という風になっています
681デフォルトの名無しさん:2007/06/04(月) 00:06:17
???
読み込んだ画素値をそのままテクスチャーにすれば、いいんでないかい?
682デフォルトの名無しさん:2007/06/04(月) 10:50:53
何やりたいのかな?

・テクスチャーに、データをもとに、3Dでレンダリングして点を打つ
・データをもとに、テクスチャーを生成したい

後者なら、そもそも、普通のBITMAPやらの画像をテクスチャーにするのと変わらんから、
やぱり前者だろうか
683デフォルトの名無しさん:2007/06/04(月) 12:02:45
前者の方です

配列に格納したデータをもとに
その大きさ分(64×64)の透明なテクスチャを作って
その透明なテクスチャにRGB値の色を落としこんでいくということです

後者であれば、値を元にPPMとかで画像を生成すればいいと思うのですが
それではなくて…

と、書いてるうちに混乱してきました
684デフォルトの名無しさん:2007/06/04(月) 14:53:31
これかな?

NeHe Productions: OpenGL Lesson #36
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=36

いやでも、textureにレンダリングはOpenGLだと拡張機能使わないとできなかった気がするのだが
685デフォルトの名無しさん:2007/06/04(月) 15:02:34
俺もtexture に レンダリングしてみたいから、探してみた。
他に一般的な方法あったら教えてくれ。

拡張機能の pBuffer を使うようだ。

Paul's Projects - Render To Texture
http://www.paulsprojects.net/opengl/rtotex/rtotex.html

OGL Render To Texture
http://developer.nvidia.com/object/gdc_oglrtt.html

OGL RTT
http://developer.nvidia.com/object/ogl_rtt.html

ちなみに、「OpenGL render to texture」で検索するといっぱい出てくる
686デフォルトの名無しさん:2007/06/04(月) 15:26:43
>>684-685
ありがとうございます。探し方まで教えていただいてすみません

なかなか難しそうですね。
同じようなことをやるには画像を作って、貼り付けるのが簡単なんでしょうか。

透明なポリゴン、というところで
ある色を透明化して張らなくてはならなくて
しかもそれが沢山積み重なっているのです

透過PNGを大量に重ね合わせるイメージを
数値をもとにやっていくにはどうしたらいいのかと思って…
687デフォルトの名無しさん:2007/06/04(月) 15:28:13
pBuffer以外にも、

一旦テクスチャーに書く画像を画面にかいて、
glCopyTexImage して、テクスチャーに張る方法もあるみたい。

Render to textureの項を参照
OpenGL Tutorial/ja - Lazarus-ccr
http://wiki.freepascal.org/OpenGL_Tutorial/ja

Render to textureの項を参照
Yet another OpenGL tutorial
http://zavie.free.fr/opengl/index.html.en
688デフォルトの名無しさん:2007/06/04(月) 17:22:17
OpenGLスレ Part10
http://pc11.2ch.net/test/read.cgi/tech/1141034983/

で話題が出ていたが、
・pbuffer
・FramebufferObject
・CopyTexImage2D
のいずれかという結論のようだ
前者二つは、場合によっては対応していない
689デフォルトの名無しさん:2007/06/04(月) 17:34:17
・pbuffer対応状況
http://www.delphi3d.net/hardware/extsupport.php?extension=WGL_ARB_pbuffer

・framebuffer対応状況
http://www.delphi3d.net/hardware/extsupport.php?extension=GL_EXT_framebuffer_object

圧倒的に、pbufferの方が対応状況がよいな・・・
690デフォルトの名無しさん:2007/06/04(月) 19:51:06
KYROの文字が見えた瞬間、俺の中で何かが弾けた。
691デフォルトの名無しさん:2007/06/04(月) 21:24:22
動脈瘤破裂か?
692デフォルトの名無しさん:2007/06/04(月) 21:36:31
>>687-688
ありがとうございます。
教えていただいたものを参考に色々やってみたのですが
どうもまだレベルが高いようで…よく分かりませんでした…

ttp://wisdom.sakura.ne.jp/system/opengl/gl22.html

こちらにあるようなやり方で
イメージを書き出してテクスチャにする、ということをやってみました
これでファイルから読み込んで、その値を書き出して、ポリゴンに貼り付けるループが組めればなんとかいけそうです

みなさん色々とすみませんでした
693デフォルトの名無しさん:2007/06/04(月) 23:46:58
64x64程度なら、CPUで普通に重ね合わせ処理するのが
手っとり早いと思うんだけど・・・。
694デフォルトの名無しさん:2007/06/08(金) 21:03:52
流れぶった切って悪いが、GLXのサンプル?を見つけた
ttp://sugarpot.sakura.ne.jp/yuno/?GLX
695デフォルトの名無しさん:2007/06/10(日) 07:46:48
無限平面の描画が上手くいきません
参考になるサンプルやサイトはあるでしょうか?
696デフォルトの名無しさん:2007/06/10(日) 12:55:39
>>695
無限平面って光の反射がうまくいってないとか?
697デフォルトの名無しさん:2007/06/10(日) 13:42:49
さあ ひょうしょうしき た゛
698デフォルトの名無しさん:2007/06/10(日) 16:19:12
なにいっ!りゅうか゛いない!
699デフォルトの名無しさん:2007/06/10(日) 19:53:57
無限平面ってどうやるの?
でっかいポリゴン表示するの?
700デフォルトの名無しさん:2007/06/10(日) 20:08:36
700
701デフォルトの名無しさん:2007/06/10(日) 20:08:49
それでは有限だろう


702デフォルトの名無しさん:2007/06/10(日) 20:11:54
じゃあどうすんの?
無限平面なんて無理じゃね?
703デフォルトの名無しさん:2007/06/10(日) 20:12:54
消失点や画面の端があるんだから大丈夫
704デフォルトの名無しさん:2007/06/10(日) 20:13:03
無限と言えば遅延評価
705デフォルトの名無しさん:2007/06/10(日) 20:14:04
一枚ポリゴンをポンと置くのではなく、
このポリゴンのこの範囲を、どこに行っても表示するようにループさせればよい。

表示範囲、たとえば512x512としてだ
513まで来たらループでまた同じポリゴンを表示。

変えたいなら、この座標に来たらこれ、というように別のポリゴンを指定。
706デフォルトの名無しさん:2007/06/10(日) 20:15:48
>>702
glBegin(GL_TRIANGLE);
glVertex4f(-1, 1, 0, 0);
glVertex4f(1, 0, 0, 0);
glVertex4f(0, 1, 0, 0);
glEnd();

これは一応無限平面じゃ?
707デフォルトの名無しさん:2007/06/10(日) 20:28:42
よくわかんらんちん。
こんな感じで表示したいときは無限にループさせんの?
ttp://mps.q.t.u-tokyo.ac.jp/~tanaka/POV-Ray/plane.jpg
708デフォルトの名無しさん:2007/06/10(日) 22:01:06
テクスチャーループさせれば無限平面ぽくなる
709デフォルトの名無しさん:2007/06/10(日) 22:04:10
>>707
ああ、それだそれ
710デフォルトの名無しさん:2007/06/10(日) 23:02:04
無限平面の地平線は無限遠方に存在するわけで、
有限な大きさのポリゴンを敷き詰めるやり方で
それを描くためには無限回ループさせる必要がある。

実際にはCRTの解像度が有限なので、
有限な回数で打ち切っても地平線を近似できる筈。

ただしこのやり方は非常に効率が悪いと思う。
711デフォルトの名無しさん:2007/06/10(日) 23:06:40
つまりスペースハリアーをつくりたいと、そう言っているわけだね。
712デフォルトの名無しさん:2007/06/10(日) 23:49:39
結局どうすればいいのよ?
713デフォルトの名無しさん:2007/06/11(月) 00:28:42
でかい四角形作って、市松模様のテクスチャはっつければいいんじゃね?
714デフォルトの名無しさん:2007/06/11(月) 00:32:30
それでは有限だろう


715デフォルトの名無しさん:2007/06/11(月) 00:38:52
どうせfarまでしか出ないんだから、farまで描けばいいじゃない
本来なら>>706で正しく表示できて欲しいけど・・・
716デフォルトの名無しさん:2007/06/11(月) 00:54:30
スカイボックスも無限遠に存在すると思っている厨房ハケーン
717デフォルトの名無しさん:2007/06/11(月) 00:57:33
つまりOpenGLで無限平面の描画は不可能って事?
718デフォルトの名無しさん:2007/06/11(月) 00:59:21
つうか PC では不可能
719デフォルトの名無しさん:2007/06/12(火) 17:43:52
マウスクリックでポリゴン上の交点(ローカル座標)を取りたいんだけど・・・

1. 自前で射影/モデリング行列を設定
2 セレクションで対象ポリゴン特定
3. 視点(0,0,0) > クリック座標(x,y,near) のレイを生成
4. 射影逆行列でレイをワールド座標に変換
5. モデリング逆行列で 4. を変換
6. 対象ポリゴン(ローカル座標)へ、レイキャストして交点を求める

というのを考えてみたんだけど、他にいい方法ない?

720デフォルトの名無しさん:2007/06/13(水) 00:35:12
今まで、シングルバッファではglBegin(GL_POINTS);で点がかけていたのですが、
マルチバッファにしようと思って設定を変更したらglBegin(GL_POINTS);賀向こうになってしまいました。
点の大きさとして4.0を指定しても、1pixelの点としか描画されません。

誰か解決方法をお願いします。
721デフォルトの名無しさん:2007/06/13(水) 01:02:54
コード自体は正しかったです。ただ点の初期色として白から黒に変更した事を忘れていたため、
何も表示されないように思えていました。

事故解決しましたので、失礼します。
722デフォルトの名無しさん:2007/06/13(水) 01:39:42
>>719
私はこんな感じでやってます。

1.視点(0,0,0) > クリック座標(x,y,near) のレイを「ワールド座標で」生成
 (視点の向きやビューポートの大きさは分かってることが多いので、
  わざわざ射影逆行列使わなくてもすぐ計算できます。)
2.モデリング変換の逆変換でレイを変形させながらシーンをトラバース
 (セレクションとか使わないで直接、視点に一番近いオブジェクト/
  トライアングルを求めます。)
2-1.もちろん、それまでに見つかった交点より明らかに遠いオブジェクトはカリング
2-2.あとは普通に三角形とレイの交差判定

んー、発想としては、結局同じかな。

最終的には、「適当なシーングラフを使う」というのが一番いい方法な気もします。w
723デフォルトの名無しさん:2007/06/13(水) 03:14:37
>>719ではないのですが
>「適当なシーングラフを使う」
kwsk
724デフォルトの名無しさん:2007/06/13(水) 03:16:23
OpenGLって、DirectXにあるような、
サーフェスロスト?ってないはずですよね?

全画面にしたら、環境によっては画面うつらなくて・・・
725デフォルトの名無しさん:2007/06/14(木) 00:27:49
>>723
んぇーと、何を詳しく?? もうちょっと具体的に質問plz
「シーングラフ OpenGL」でぐぐれば、いくらでも情報は出てくるです。
大抵のシーングラフAPIは、交差判定くらいサポートしてるので
719みたいな事例では楽できますよっと。
726デフォルトの名無しさん:2007/06/15(金) 19:39:28
すまそ
まさに今、レイキャスをやりたいと思っていて

レイを飛ばすところから教えてください。
ソース見せていただけると一番ありがたいです
727デフォルトの名無しさん:2007/06/16(土) 00:25:24
>>719>>722を見て思ったのですが

視点が<0 0 0>にあって、物体を回転させたいときとか
わざわざモデルに行列をかけて、平行移動(原点へ)→回転行列→平行移動
という風な処理をしているのでしょうか?

始めたばかりでこんがらがっているのですが
教えていただけませんか?
728デフォルトの名無しさん:2007/06/16(土) 00:44:47
???
回転は常に原点中心だぞ。
729デフォルトの名無しさん:2007/06/16(土) 00:53:27
>>719
depthbuffer から座標を求めればいいと思うけど、そういうことではないのか?

glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_PROJECTION_MATRIX, prMat);
glGetDoublev(GL_MODELVIEW_MATRIX, moMat);
glReadPixels(point.x, viewport[3] - point.y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &pkDepth);
gluUnProject(point.x, viewport[3] - point.y, pkDepth, moMat, prMat, viewport, &wx, &wy, &wz);

こんな感じ。
730デフォルトの名無しさん:2007/06/16(土) 01:30:13
>>728
言いたかったのは、原点に無いモデルを回転すると
その場で回転しないで、軸を中心に回転しますよね

<0 0 1>にある□をその場でクルクル回したいときは
いったん<0 0 -1>をして原点に戻してからクルクルまわして、また元の場所に戻しますよね

<0 0 1>にあるときにy軸中心に30度まわしたりすると、移動しちゃいますよね
731デフォルトの名無しさん:2007/06/16(土) 01:38:55
>>730
理解した。

その通りです。
732デフォルトの名無しさん:2007/06/16(土) 01:58:38
>>729
それだと、ローカル座標が求まってないとおもー。
そこからローカル座標を求めるためにはオブジェクトの座標系が必要だけど、
拾ってきたピクセルがどのオブジェクトに属していたのか分からないっしょ。
(アルファやステンシルにタグを載せておく手も無いではないケド・・・)
あと、場合によっては精度が結構落ちるのも問題かもですよ。

>>730
普通は原点中心にモデルを作って、それを回転→移動させますね。
原点から外れてるモデルは、仕方が無いので仰る通り、移動させて回転させて移動させます。
ちなみに視点が(0, 0, 0)にある云々は関係無いです。
733デフォルトの名無しさん:2007/06/16(土) 02:00:14
ありがとうです。

物体が大量にあって、それに対して回転やら拡大したいと思ってて
最終的にはレイを打って、ピッキングしたいと思ってるのですが

わざわざ、移動・回転・移動や
レイを打つ計算量を考えたら、、、きついなぁと思って

物体を原点において、視点を下げればいいとも思ったのですが
それだとレイを打つのが大変そうで…というか、レイの打ち方もよくわからなくて

かなり先行き困難な状態で、今も「レイキャスティング OPENGL」でググってました


正直しんどいです
734デフォルトの名無しさん:2007/06/16(土) 02:06:39
回転・拡大というのは、見るときの回転・拡大で
物体の回転・拡大ではないです

視点自体を回転・拡大(接近)しようとも思っているのですが
それだと今度はレイを打つのがどうなんだろう、、、と悶々と


レイキャス・ピッキングのお手本になるもの、何かあれば教えてください
735デフォルトの名無しさん:2007/06/16(土) 02:52:51
>>733
レイキャスティングやピッキングってのは、「幾何計算」の問題であって、
ぶっちゃけて言えばOpenGLはほとんど関係無い領域の話なんですよねぇ・・・。
OpenGLがやってくれるのは、最終的な「表示」だけですから。
物体が大量にあっても、適切な空間分割をしてあれば計算量はそんな簡単には
爆発しないです。この辺は、「データ構造」に関わる話題ですかね。

手本になるものは残念ながら示してあげられませんが、ぐぐるなら「OpenGL」は
含めない方がよろしいかと。希望を打ち砕くかもしれませんが、ピッキングは
OpenGLを利用することを考えるより、自分で交差判定を実装するべきじゃないでしょうか。
(「交差判定」「空間分割」くらいでぐぐると、その辺の話題があるかな?)


>正直しんどいです

この辺の話は、かなり経験を積んでたとしても、大抵の人にとってはしんどいです。(笑)
736デフォルトの名無しさん:2007/06/16(土) 03:04:31
>>732
しばらく考えてようやくわかった(と思う)。
オブジェクトによって、ローカル→ワールドの変換マトリックスが違うのを想定しているのね。
それなら、とりあえずオブジェクトを特定した後に、719で求めたワールド座標からそのオブジェクトに
応じた変換をすればいんじゃない?
レイキャストしたことないので、なんかよくわからん。

depthbuffer で精度が落ちるのというのには同意。
737736:2007/06/16(土) 03:05:51
ごめん。ミスった。
719で求めた→729で求めた
738デフォルトの名無しさん:2007/06/16(土) 10:23:33
上で話題になっているようなので。。

ttp://tpot.jpn.ph/t-pot/program/92_RayTraceSphere/index.html
私もレイトレしてみたくて、t-potさんとこのDXソースを眺めていたのですが
// 視点を射影空間からワールド座標に変換する で既に煮詰まりました・・('A`)

OpenGLで似たような基本的なサンプルはありませんか?
海外のソースだとあるにはあるが、、シンプルでないのでサッパリ・・

それと、おそらく上に出てた座標変換関連があまり分かってないので
その辺りの、ワールド、ローカル、モデルビュー変換、射影変換、透視変換、ビューポート変換等々・・
が、丁寧に解説されているサイトはないでしょうか?

質問ばっかですみません。お願いします。
739デフォルトの名無しさん:2007/06/16(土) 10:54:06
>>738
ナカーマ…だよ

同じようなことやって詰まってる人だよね
740デフォルトの名無しさん:2007/06/16(土) 11:41:51
741738:2007/06/16(土) 12:33:28
>>740
ありがとうございます。
ただ、そういう日本語での解説なら所々にあるのですが
実際に、ローカル座標からワールド座標に変換するコードを書けと言われると出来ないのです。。

また、>>740のサイトにもあるように、
> クリップ座標系は眼点座標系に射影行列を適用して得られる座標系である

と、言われても、、、急に射影行列が出てきたり、適用=乗算なのかとかサッパリ分からんのです・・('A`)
クリップ座標からワールド座標に変換したり、
眼点座標系とローカル座標は、どういう繋がりがあるのか?等々、どうやって皆さんは理解していったのでしょうか?
742デフォルトの名無しさん:2007/06/16(土) 13:22:11
>>741
おまいは俺か…やってること同じなのかも

グローバルイルミネーション入門のところでレイの飛ばし方とかの解説が書いてあったよ
glutではじめるOPENGL入門みたいに書いてくれてるページ無いのか

レイキャスに限らず色んなもので「簡単なアルゴリズムで云々」と書かれてるが
アルゴリズムが簡単でも、それを実装するにはどうしたらいいんだよ!てところが無い

ひでぇよちくしょお
743デフォルトの名無しさん:2007/06/16(土) 13:26:53
自分で何が分からないのか分かってる?
744デフォルトの名無しさん:2007/06/16(土) 16:07:42
>>738
>// 視点を射影空間からワールド座標に変換する で既に煮詰まりました・・('A`)
レイトレやピッキングをやるのなら、必ずしも射影空間を扱う必要は無いです。
ワールド座標系の中での、ローカル座標同士の変換ができれば十分かと。

>>741
>実際に、ローカル座標からワールド座標に変換するコードを書けと言われると出来ないのです。。
どのレベルで出来ないのれすか?
1. ローカル座標、ワールド座標の意味が分からない
2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない
3. ベクトルと行列の掛け算のやり方を知らない
4. C言語での実装ができない

>と、言われても、、、急に射影行列が出てきたり、適用=乗算なのかとかサッパリ分からんのです・・('A`)
あー、そういう細かいことでつまずいちゃうのは辛いかもね〜かもね〜。
ちなみにこの文脈では 適用=乗算 ですが。

>眼点座標系とローカル座標は、どういう繋がりがあるのか?等々、どうやって皆さんは理解していったのでしょうか?
そう言われてみると、どうやって理解していったんだったっけな・・・。もう忘れちゃった。
今誰かに教えるなら、以下の順番かな。
1.基本(デフォルト)は眼点座標。頂点座標は全部、眼点座標で指定しる。とりあえず絵は出るし。
 視点やオブジェクトを移動したいなら、座標データを全部書き換えればいいでしょ。
2.でもそうやっていちいちデータ書き換えるのは大変だし遅くなるから、OpenGLでは
 座標変換機構を用意してくれてるんですよ。これでローカル座標が扱える。ほら便利。
3.実は3Dハードウェア内部では、クリップ座標以下こんな座標変換を通して描画されてますよ。
 でもまぁこれ以降を詳しく知る必要が出てくるのはもっと先の話かな。シェーダでは必須だけど。

>>742
>アルゴリズムが簡単でも、それを実装するにはどうしたらいいんだよ!てところが無い
アルゴリズムが分かれば、実装できるのが普通だから・・・。
実装の経験が足りてないんじゃないでしょうか。
745デフォルトの名無しさん:2007/06/16(土) 16:30:02
741では無いですが
「2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない」
ここがよくわからないです。glOrthoやgluPerspectiveあたりでゴニョゴニョしてるのか
34についてはとりあえず出来ます。

例えば<0 0 0>にあるオブジェクトは、どういう行列を掛けると、○○座標のどこに来るか、とか言ってくれるとわかりやすいです
何か、イメージが出来ないままで、先に進められてる感じがして
746738:2007/06/16(土) 16:43:12
>>744
ありがとうございます。

> 1. ローカル座標、ワールド座標の意味が分からない
おおよそ分かっていると思いますが、充分でない理解かもしれないです。

> 2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない
理解が充分でないと自分で感じている箇所です。

> 3. ベクトルと行列の掛け算のやり方を知らない
ソース公開してる所などでよくある関数群なので理解しています。

> 4. C言語での実装ができない
2が理解できていないのでレイトレが実装出来ないのだと思います。


> 座標変換機構を用意してくれてるんですよ。これでローカル座標が扱える。
この場合の座標変換機構とは、glMatrixMode(GL_MODELVIEW);の事なんでしょうか・・?
なんだかよく分からなくなってきました。。orz

環境マッピングとかのコードを見よう見真似で書いて、
それなりにOpenGLが使えるような気がしていたのですが、、どうにも根本的なとこが。。
747デフォルトの名無しさん:2007/06/16(土) 22:57:37
【派遣ネガティブ根性チェック】

3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。

□派遣先正社員の作った糞開発ツールはたとえバグだらけでも苦労して使うべきだ
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□昼食は必ず派遣先の社員と行くべきだ
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、かわいがってもらうことが大切だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ
748デフォルトの名無しさん:2007/06/20(水) 03:16:28
質問があります。

現在、glDrawPixels/GL_LUMINANCE/GL_UNSIGNED_BYTE
で、モノクロ8bitグレースケールのVGAサイズのカメラ入力画像を描画しています。

カメラのシャッタを開けている時間、ゲインを制御しても
カメラからの入力画像が暗い場合があり、
描画時にゲタを履かせる事を考えています。(描画を明るくしたい)

glDrawPixels で転送するピクセルデータを、事前にソフトで
直接加算処理をしても良いのですが、
なるべくCPUに負荷をかけたくないので、何か良い方法があれば教えてください。

仮にOpenGLで同種の処理を行う場合、glTexImage2Dでテクスチャにビットイメージを関連づけて
glBlendFuncで加算合成をすれば良いのでしょうか?
749デフォルトの名無しさん:2007/06/20(水) 05:20:05
8bitグレースケールならテーブル引きでちゃちゃっとCPU処理しちゃっても
いいような気もするけどね・・・
750デフォルトの名無しさん:2007/06/20(水) 09:59:18
そもそもglDrawPixelsが糞重いからCPUの負荷を気にする必要はないでしょ
751748:2007/06/20(水) 23:09:59
>>749

やはりそうですかね...。


>>750

別スレッドで画像処理をしていて、表示にはできるだけ負荷を
かけたくありません。糞重い?のは、今回の用途の場合、
事前にテクスチャをGPU VRAM上へ常駐させる事も
できない(カメラからの画像を60fpsで取得しています。)ので、
glDrawPixelsを使うしかないのかな...と思っていますが、
他に何か方法があるのでしょうか?

640×480 なので、1024 × 512 のテクスチャサイズに
変更して貼り付けるのも、1秒間に60回となると馬鹿になりません。
752デフォルトの名無しさん:2007/06/22(金) 08:36:00
>>751
glPixelTransfer[iv] というのがある。
GL_○○_BIAS で下駄を履かせられる。
GL_○○_SCALE や
GL_MAP_COLOR でもいいかも。

glPixelTransferを使ったことなかったので、試しに
glPixelTransferf(GL_ALPHA_BIAS, );
を使用してみたら、すげー遅かった。
何度も描画するなら、先にCPUで計算しといた方がいいと思う。
753デフォルトの名無しさん:2007/06/22(金) 08:38:16
>>751
TextureRECTかNPT使えば1024x512にしなくてもいいぜ
あとはクリアカラーでバイアス分指定してBlendで加算すりゃいいんじゃね?
シェーダー使えば単純にバイアスかけるんじゃなくて
もっと凝ったことできるけどそこまで必要ないならBlendでいいな
754デフォルトの名無しさん:2007/06/22(金) 14:33:31
>>738さんいる?

視点からレイを打って云々というの出来たお
755738:2007/06/22(金) 18:58:48
>>754
最初にレイを飛ばす所のコードを貼って(or うpして)頂けると有難いです。
交差判定はある程度、分かってきたと思ってるのですが。。
756デフォルトの名無しさん:2007/06/22(金) 22:19:00
なんだか同じようなことをやってそうですね。
他スレにも書き込んだのですが、こうやって何とかできました。
POINT3D ray;
POINT3D scr; // x y zをdouble型で確保している構造体

for(posX=0;posX<WIDTH;posX++)
for(posY=0;posY<HEIGHT;posY++) //nearクリップ面を端っこから走査していく
/* get near clip position 床○先生のところを参考に */
glGetDoublev(GL_MODELVIEW_MATRIX, model);
glGetDoublev(GL_PROJECTION_MATRIX, proj);
glGetIntegerv(GL_VIEWPORT, view);
glReadPixels(posX, posY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &scr.z);
gluUnProject(posX, posY, 0, model, proj, view, &scr.x, &scr.y, &scr.z); //nearクリップ面の座標をワールド座標で取得
/* end get near clip position */
// 視点とnearクリップ面上の点から Ray の算出  
SubVector3D(scr,eye,&ray);
// Ray を単位ベクトルに変換
UnitVector3D(&ray);

Rayのところで使っているベクトル関数はこちらのを、ほぼそのまま入れてます。
ttp://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter01.html

nearクリップ面の座標は、賢いやり方が他にあると思うのですが…
これで画面の点と、視点とを結ぶ直線を順番に打っていけます

わかりにくいと思いますので、分からないところは言ってください。
交差判定について教えていただけると嬉しいです。
757738:2007/06/23(土) 10:12:58
>>756
おぉ、ありがとう!
gluUnProjectを使えば良かったのか・・
マウスでプリミティブを作成する時なんかに普段から使ってたよ・・orz
758デフォルトの名無しさん:2007/06/23(土) 15:31:38
ただ、これでは遅い、らしいです
確かにビューポートからnear clip面の位置は算出できるはずなのですが
どうにも文系の頭のため、、、私には難しいみたいです。

交差判定でどのようなところで調べました?
759yd:2007/06/25(月) 19:33:06
円上に点を64個均等におきたいいですけどどうしたらよいでしょう?
760デフォルトの名無しさん:2007/06/25(月) 20:05:04
>>759
int i;
float a;
const float b = 3.1415926535897932384626433832795028*2/64;

glBegin(GL_POINTS);
for(i = a = 0; i < 64; i++, a += b)
glVertex2f(cosf(a), sinf(a));
glEnd();
761デフォルトの名無しさん:2007/06/25(月) 20:07:15
おしえてもらいたいんですが、
GLUTベースのUI部分をサポートしてくれるGLUIについてなんですが、
MacOSX 10.4.9上でgccを使用しコンパイルしようとすると

glui.h:298: error: a class-key must be used when declaring a friend
glui.h:298: error: friend declaration does not name a class or function

というエラーが沢山でてコンパイルできません。
使用したOpenGLのライブラリはMacOSXに付属のXcode2というもので
#include <GL/glut.h>は、#include<GLUT/glut.h>としてコンパイルしました。
マック上でGLUIをビルドするよい方法などがあれば教えて下さい。
762デフォルトの名無しさん:2007/06/25(月) 20:21:34
>>761
そのエラーコードでググったら、2005 年に CVS バージョンでは直ってるという
ログがあったけど、最新のバージョン使ってる?
763デフォルトの名無しさん:2007/06/25(月) 20:30:26
>>762
ありがとうございます!
ぼくもこのエラーでググって見たんですが…
どうも探し方が甘かったようです。
とりあえず今からチェックしてみます。
764デフォルトの名無しさん:2007/06/25(月) 20:54:17
>>761
当方MacOS X 10.4.10 MBP
http://glui.sourceforge.net/#download

glui-2.35.zip

cd ~/Desktop/glui-2.35/src/
make
で簡単にlibglui.aを作れましたが?
765デフォルトの名無しさん:2007/06/25(月) 21:21:42
>>764
うわ、本当だ、すぐに出来ちゃいました。
どうも本当にありがとうございます。

皆さんどうもありがとうございました。
766:2007/06/28(木) 01:32:13
BAモデルのシュミレーションについてくわしいかたおりませんか_?
御教授お願いします。
767デフォルトの名無しさん:2007/06/28(木) 09:38:44
趣味じゃないなあ
768デフォルトの名無しさん:2007/06/30(土) 18:57:24
glutMainLoopはソースのどこからどこまでをループしているのですか?
769デフォルトの名無しさん:2007/07/01(日) 18:06:28
>>768
「ソースコード中のここからここまで」という意味ではないよ。
なんにもしないループに突入、と思え。
770デフォルトの名無しさん:2007/07/01(日) 21:10:58
なんにもしないループ?

と聞いて俺までわからなくなった
771デフォルトの名無しさん:2007/07/01(日) 22:43:25
>>769
その説明はイイねw >なんにもしないループ
でも分からない人にはワケワカランよw


>>768
glutMainLoop()を呼ぶと、GLUT内部の永久ループに突入して、二度と帰って来ない。
この永久ループは基本的に何もしないループ。
・・・なんだけど、ひとつ役割があって、「ウィンドウのサイズが変更された」とか
「ウィンドウを再描画することが必要になった」とか「マウスが動いた」とか・・・その他、
色々な「イベント」が発生したときに、そのイベントに応じて関数を(事前に登録して
あればだけど)呼び出してくれる。

その関数を登録するのが、 glutなんちゃらFunc() って名前の付いてる関数なのね。

これでお分かり??
772デフォルトの名無しさん:2007/07/01(日) 22:50:18
>>768
ループは GLUT のライブラリの中にある。
それは回転寿しの廻るベルトみたいなモンで、基本的にずっとループし続けている。
寿司職人のあなたは、そのベルト上に自分の売りたい寿司を握って置いてあげる
必要がある。客が良く注文するような寿司ネタも廻しておかないといけない。
あなたはお店のオーナーじゃないので、ベルト自体は基本的に弄れない。
773デフォルトの名無しさん:2007/07/01(日) 23:18:11
なるほど、理解できました!

ということはglut〜Func()の中に重たい処理なんかを入れた場合…
たとえば、左クリックしたら、10000×10000×10000のループをする、なんてもので、
それが命令ごとに呼び出されるわけですね。

ありがとうございました。頭がスッキリしました
774デフォルトの名無しさん:2007/07/21(土) 04:14:35
glCopyTexImage2Dで得たテクスチャって上下逆さまで取得されたりしませんよね…?
テクスチャを貼り付けて表示させてみるとどうも上下逆になってしまう…
外部から読み込んだ画像はきちんと表示できるのでテクスチャ座標の指定は間違ってないと思うのですが
775デフォルトの名無しさん:2007/07/21(土) 11:11:14
>>774
コピーする基点はウインドウの左下ってことは分かってる?
776デフォルトの名無しさん:2007/07/21(土) 11:30:13
>>774
OpenGLは画面座標もテクスチャ座標も左下が原点だよ
777774:2007/07/21(土) 18:31:03
めっちゃ単純な理由でした…w
解決しました。ありがとうございます
778デフォルトの名無しさん:2007/07/22(日) 01:46:43
>>777
そうだろ。bmpなんか逆に格納されてたりするからな
779デフォルトの名無しさん:2007/07/22(日) 20:09:10
大抵の画像関係のライブラリはそんな感じですね。
自分はOpenCVだけど他の人たちはどんなの使ってるんだろ
780デフォルトの名無しさん:2007/07/22(日) 20:53:39
ATL の CImage
781デフォルトの名無しさん:2007/07/22(日) 23:02:33
bmpは上からと下からの両方がアリエール

>>779
自分はFreeImageのお世話になってマス
782デフォルトの名無しさん:2007/07/23(月) 01:49:01
>>781

上からってあるのですか? ヘッダ高さ情報をマイナスで書くとか言うアレですか?
783デフォルトの名無しさん:2007/07/26(木) 19:37:40
AsyncKey や pragma が読みにくいのですが
そういった単語の読み方の乗っているサイトってありませんか?
784デフォルトの名無しさん:2007/07/27(金) 09:28:33
キーボードからの入力で物体を回転・平行移動させるプログラムを
作成しているのですが、回転させるときに
軸に対して反時計周りに回転させるときは普通に回転するのですが、
時計回りに回転させようとするとなぜか回転方向が反転してしまいます。
最初の角度を0とすると+15、+30・・・には動くのに
0から-15、-30・・・と回転させようとするとなぜか+15、+30・・・
になってしまい、キーボードからの入力への反応も逆になります。
(さきに+90まで動かせば0までは回転できる、それ以上マイナスに
回転しようとすると何故かプラス方向に回転を始めてしまう)

マイナス方向には回転できないものなのでしょうか?
785デフォルトの名無しさん:2007/07/27(金) 09:48:27
>>784
できるよ、としか言えない
どういう計算で回転させようとしてるのか分からんとなんとも
ちゃんと角度が負の値になってるかどうか確認してみ
786デフォルトの名無しさん:2007/07/27(金) 11:51:19
解決しました。間違ってただけです。
回転角度がマイナスになるときにベクトルもマイナスになってたせいでした。
ありがとうございました。
787デフォルトの名無しさん:2007/08/02(木) 06:29:33
すいません。昨日からOpenGLをいじり始めた初心者です。

glPointSizeを使って点の大きさを変更しようとしたところ、
数値を変えても全く反応がありません。
GL_POINT_SIZE_RANGEの数値を調べて、その範囲になるようにしたのですが、
点が大きくならないのはグラフィックカードが駄目なせいでしょうか?
788デフォルトの名無しさん:2007/08/02(木) 11:15:49
glPointSize()が、glBegin()とglEnd()の間に入ってたりして。
789デフォルトの名無しさん:2007/08/02(木) 20:50:43
glLoadIdentity()
ってなんでいつもやらないといけないの?
790デフォルトの名無しさん:2007/08/02(木) 22:32:52
別にやりたくなければやらなくていい
791デフォルトの名無しさん:2007/08/02(木) 22:41:00
突然申し訳ありませんが、GLUTを使わずにWindowsAPIを使ってOpenGLでプログラムを組みたいのですが参考になるサイトはありませんんか?
自分でも探してみたのですがなかなかいいサイトが見つかりませんでした。
792デフォルトの名無しさん:2007/08/02(木) 23:04:32
MSDN
793デフォルトの名無しさん:2007/08/03(金) 00:21:28
wglで検索するべし
794デフォルトの名無しさん:2007/08/04(土) 01:06:37
VC++2005EXPRESSでOPENGLを始めるには何をダウンロードしたらいいですか?
795デフォルトの名無しさん:2007/08/04(土) 01:36:54
Platform SDK

あと、使うなら GLUT とか GLEW とかお好みで
796デフォルトの名無しさん:2007/08/04(土) 23:36:30
「プログラミング構文のお約束」
その関数を使うことによってどういう効果が得られるのかという「関数の効果」、

そうした情報がないとどうしようもないだろ
797デフォルトの名無しさん:2007/08/05(日) 00:24:23
>>791
ttp://son-son.sakura.ne.jp/programming/opengl/
のWindowsSDK, MFCあたりとか
798デフォルトの名無しさん:2007/08/05(日) 05:36:49
りえ子、結婚してくれ

たのむ
799デフォルトの名無しさん:2007/08/05(日) 17:02:12
openGL以外音楽やゲームパッドなどのは何を使えばいいですか?
800デフォルトの名無しさん:2007/08/05(日) 17:06:21
なんでもどうぞ。
DirectSoundやDirectInput使ってもいいし、OpenALでもいいし。
SDLという手もあるし。
801デフォルトの名無しさん:2007/08/05(日) 17:34:20
あ、りがとうございます。
802デフォルトの名無しさん:2007/08/05(日) 19:30:11
ど、ういたしまして
803デフォルトの名無しさん:2007/08/05(日) 20:00:44
モデリングツールは何がオススメですか?
804デフォルトの名無しさん:2007/08/05(日) 20:22:11
そこらへんはCG板かゲ製板がお勧め
805デフォルトの名無しさん:2007/08/08(水) 16:47:39
Visual Studio 2005のC++でOpenGLを動かすのに必要な手順を教えていただけませんか?

ttp://www.xmission.com/~nate/glut.html
ここから落としたdll,lib,hファイルを各対応フォルダにコピーして
<GL/glut.h>をインクルードしているのですが
error C3861: 'glvertex2f': 識別子が見つかりませんでした
などのエラーメッセージが出てしまい困ってます。
806デフォルトの名無しさん:2007/08/08(水) 16:53:46
#include <windows.h>
#include <GL/gl.h>
807デフォルトの名無しさん:2007/08/08(水) 16:57:01
大文字小文字を正確に

× glvertex2f
○ glVertex2f
808デフォルトの名無しさん:2007/08/08(水) 17:27:14
すごく初心者で申し訳ないのですが
bmpからテクスチャを作るときは
目的のbmpは何処に置いておけばいいのですか?
809デフォルトの名無しさん:2007/08/08(水) 17:30:14
>>807
ものすごい初歩的なミスでしたorz
ありがとうございます
810デフォルトの名無しさん:2007/08/08(水) 17:57:51
>>808
お好きなところにどうぞ。
811デフォルトの名無しさん:2007/08/08(水) 18:10:55
>>810
何処に置いても
faild to open DIB file と言われてしまうのですが
如何すればいいのでしょうか
812デフォルトの名無しさん:2007/08/08(水) 18:13:42
そのファイルをどこに置いて、どういうふうにファイル名を指定しているのか、くわしく。
ファイルが壊れてるなんてオチはないよね?
813デフォルトの名無しさん:2007/08/08(水) 18:21:41
texture = CreateTexture("particle.bmp"); /*←メインの一部*/

GLuint CreateTexture(const char file_name[])
{
GLuint texname;
AUX_RGBImageRec* aux_image;

if ((aux_image = auxDIBImageLoad( file_name )) == NULL) {return 0;}

glGenTextures( 1, &texname );

glBindTexture( GL_TEXTURE_2D, texname );

glTexImage2D(
GL_TEXTURE_2D,
0,
GL_RGB,
aux_image->sizeX,
aux_image->sizeY,
0,
GL_RGB,
GL_UNSIGNED_BYTE,
aux_image->data
);

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );

free( aux_image->data );
free( aux_image );
return texname;
}
814デフォルトの名無しさん:2007/08/08(水) 18:24:18
faild to open DIB fileと言われた後に
テクスチャの付いていない状態で動きます

bmpファイルは置ける場所全部においています
壊れてはいないようでした
815デフォルトの名無しさん:2007/08/08(水) 19:24:55
・とりあえず動けばいいっていうのなら、フルパスで指定してみる。
"c:\\なんちゃら\\かんちゃら\\particle.bmp"

・Visual C++ を使っているのなら、Debug とか Release とかいうフォルダが
勝手に出来てるので、その中に bmp を置いてみる。
816デフォルトの名無しさん:2007/08/08(水) 22:17:05
DebugやReleaseディレクトリじゃダメだよ
その一個上のプロジェクトファイルと同じディレクトリが
デフォルトの作業ディレクトリだよ
817デフォルトの名無しさん:2007/08/08(水) 22:50:49
そうだっけか・・・すまそ。
818デフォルトの名無しさん:2007/08/08(水) 23:02:46
すみません色々して見たのですが駄目でした
お手本ファイルの方はちゃんと出来ているので
何か設定を間違えてるのかもしれません

もう少し、自分でやってみます
有難う御座いました
819デフォルトの名無しさん:2007/08/12(日) 16:45:33
行列スタックの内容をすべて破棄する関数なんてありませんかね?
820デフォルトの名無しさん:2007/08/12(日) 20:59:20
glPopMatrix()しまくりたいと。
821デフォルトの名無しさん:2007/08/12(日) 22:42:15
glLoadIdentityかな?
822デフォルトの名無しさん:2007/08/12(日) 22:44:36
glPopMatrixを32回繰り返せばいいんじゃない?
823819:2007/08/13(月) 01:37:12
glPopMatrix()しまくればいいんですね。
なんか気持ち悪いけど、いっか。
どうもありがと。
824デフォルトの名無しさん:2007/08/14(火) 14:22:58
32回だと全部ポップできてる保証が無いし、
ポップし過ぎるとエラーフラグがセットされちゃうよ。

GL_MODELVIEW_STACK_DEPTHをglGetIntegerv()して、
返った値-1だけポップすればよいかと〜。
825デフォルトの名無しさん:2007/08/16(木) 16:34:35
//投影行列操作
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-3.0, 3.0, -3.0, 3.0, 2.0, 10.0);

//モデルビュー行列操作
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

この設定で

glBegin(GL_POLYGON);
  glVertex3f(-1.0, 1.0, 0);
  glVertex3f(-1.0,-1.0, 0);
  glVertex3f( 1.0,-1.0, 0);
  glVertex3f( 1.0, 1.0, 0);
glEnd();

これがウィンドウにきちんと表示されるのは何故でしょうか?
Z軸が0だと投影行列操作で指定した2〜10の範囲の外になるため表示されないと思うのですが
実行してみると表示出来ていて悩んでいますorz
826デフォルトの名無しさん:2007/08/16(木) 18:01:55
>>825
>Z軸が0だと投影行列操作で指定した
のは、6〜−2では?
gluLookAtで視点(0,0,8)で原点方向を向いている訳だし。
827デフォルトの名無しさん:2007/08/16(木) 18:20:50
カメラの座標を基準に2〜10なのですね!
ありがとうございましたorz
828デフォルトの名無しさん:2007/08/22(水) 17:24:04
GLUIを使いたいんですが、リンクのエラーがでます。

glui32.lib(glui.obj) : warning LNK4078: 複数の '.CRT' セクションが見つかりました。これらは異なる属性 (40300040) を持っています。
robot3.obj : error LNK2001: 外部シンボル ""public: class GLUI_Button * __thiscall GLUI::add_button(char const *,int,class GLUI_CB)" (?add_button@GLUI@@$$FQAEPAVGLUI_Button@@PBDHVGLUI_CB@@@Z)" は未解決です。
robot3.obj : error LNK2001: 外部シンボル ""public: class GLUI * __thiscall GLUI_Master_Object::create_glui(char const *,long,int,int)" (?create_glui@GLUI_Master_Object@@$$FQAEPAVGLUI@@PBDJHH@Z)" は未解決です。
glui32.lib(glui.obj) : error LNK2019: 未解決の外部シンボル ___CxxFrameHandler3 が関数 __ehhandler$?create_glui@GLUI_Master_Object@@QAEPAVGLUI@@PADJHH@Z で参照されました。
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\myproject\VR\0821-2\Debug\robot3.exe : fatal error LNK1120: 外部参照 3 が未解決です。

解決策がわかる方お願いします。
829デフォルトの名無しさん:2007/08/22(水) 17:29:46
.libファイルにパスを通してないだか、プロジェクトの環境に設定して無い
830デフォルトの名無しさん:2007/08/22(水) 18:54:48
#pragma comment(lib, "glui32.lib")
として更にプロパティページから追加依存ファイル
に加えているのですが…

何か足りないですか??
831デフォルトの名無しさん:2007/08/23(木) 13:33:19
CRT云々ってメッセージが出てるから、ランタイムを変更してみたらどうでしょう。
プロジェクトのプロパティを開くと、「C/C+」の中に「コード生成」って項目があって
「シングルスレッド」やら「マルチスレッドデバッグDLL」やら6種類ほど選べるように
なってるんで、色々試してみるといいかも。
832デフォルトの名無しさん:2007/08/23(木) 15:58:45
なるほど。ありがとうございます。


エラーは消えなかったですが、解決の糸口が見つかるかも
しれません。
もうすこしがんばってみます。
833デフォルトの名無しさん:2007/08/26(日) 17:27:42
GLSLのvarying変数はvertからfragに渡す変数ですが、
頂点シェーダで
varying vec4 v = vec4(1.0,2.0,3.0,4.0);
としたとき、
フラグメントシェーダで、
vec4 v1 = v;
とすれば、v1の中身はそのまま(1.0,2.0,3.0,4.0)
になっているってことでしょうか?
834デフォルトの名無しさん:2007/08/26(日) 20:52:39
OPENGL勉強はじめの初心者です。
多角形の凹型ポリゴンを描写するときはどのようにすればよろしいのでしょうか?
ttp://wisdom.sakura.ne.jp/system/opengl/gl8.html
で見たところ、glEdgeFlagを使えば凹型でも自動的にOPENGLが分割して描写してくれ
そうなイメージをもちました。そこで以下のような感じでコーディングしたのですが、
台形が表示されるだけで、凹型の図形を表示することができませんでした。

glEdgeFlag(GL_TRUE); glVertex2f(-0.85 , 0.9);
glEdgeFlag(GL_FALSE);glVertex2f(0 , 0.3);  ←凹んでいるとこ
glEdgeFlag(GL_TRUE);glVertex2f(0.85 , 0.9);
glEdgeFlag(GL_TRUE);glVertex2f(0.9 , -0.5);
glEdgeFlag(GL_TRUE);glVertex2f(-0.9 , -0.5);

また、上記サイトのサンプルではglEdgeFlagを全部消しても、
凹型図形が正常にできてしまいました。

glEdgeFlagの役割がよく見えません。どのように使うのでしょうか。
また、上記コーディングのようなイメージで凹型ポリゴンを描画
することはできるのでしょうか。
よろしくお願いします。
835デフォルトの名無しさん:2007/08/26(日) 21:09:43
glEdgeFlag は glPolygonMode で GL_LINE を指定したときに線が引かれるかどうかを指定するものであって、384 が思ってるような効果はない。
ぶっちゃけ、そのサイトの説明は間違い。
OpenGL は凹型ポリゴンを描画できないので、複数の凸型ポリゴン (というか三角形) に分解して描くのが普通。

どうしても凹型ポリゴンを描きたければ GLU にテッセレータがあるけど・・・ 重いよ
836835:2007/08/26(日) 21:13:20
384 じゃなかった、834
837デフォルトの名無しさん:2007/08/26(日) 21:22:45
早速のres、ありがとうございます。
そうするとglEdgeFlag関数の役割ってどのようなものなのでしょうか。
よろしくお願いします。
838デフォルトの名無しさん:2007/08/26(日) 21:25:28
志村〜!一行目!一行目!!
839デフォルトの名無しさん:2007/08/26(日) 21:34:17
なる、試してみます。
840デフォルトの名無しさん:2007/08/28(火) 18:19:24
すいません。
GLSLで、全てのフラグメントに対して頂点シェーダでの処理を取り入れたいのですが、
通常どおり、DisplayListsにして頂点をそれぞれ入力していくと、
とんでもない大きさになってしまい、使えませんでした。
何かよい方法はないでしょうか?
841デフォルトの名無しさん:2007/08/28(火) 19:11:00
何したいのかよくわからんけど、なんでフラグメントシェーダにしないの?
842デフォルトの名無しさん:2007/08/28(火) 19:27:17
フラグメントシェーダでは扱えないものがあるからです
(gl_Positionやらgl_PointSizeやら・・・)
そもそもフラグメントシェーダだけでは色しか扱えません。
>841
843デフォルトの名無しさん:2007/08/28(火) 19:32:55
補足ですが、840で書いた意味は、全てのピクセルについて頂点シェーダで処理がしたい、ということです。
844デフォルトの名無しさん:2007/08/28(火) 19:48:13
gl_Position にせよ gl_PointSize にせよ、 varying 変数で頂点シェーダからフラグメントシェーダに渡してやりゃーいいんじゃないの?
845デフォルトの名無しさん:2007/08/28(火) 19:51:56
それよりも840が何をしたいのかが気になる
846デフォルトの名無しさん:2007/08/28(火) 20:55:00
gl_Positionもgl_PointSizeもフラグメントシェーダ
から設定できないんじゃないですか?
あれは頂点シェーダ固有だったようにおもいます
>844

varying変数でただ値を送りたいというわけではありません。
"出力先を設定したいのです。"
そのためには頂点シェーダが必要です。

フラグメントシェーダから頂点シェーダを次の回の頂点シェーダを起動させられる仕組みとかあれば、
かなり喜ばしいことなんですが。そういうのはないんでしょうか?教えてください。

845 = 844 ?
847846:2007/08/28(火) 21:18:58
コレを消してください

フラグメントシェーダから頂点シェーダを次の回の頂点シェーダを起動させられる仕組みとかあれば、
かなり喜ばしいことなんですが。そういうのはないんでしょうか?教えてください。

こっちに変えてください

すべてのピクセルについて頂点シェーダで処理する機能があれば・・・・以下同文
848デフォルトの名無しさん:2007/08/28(火) 22:20:03
パーティクルの座標や速度をテクスチャ(フラグメント)にレンダリングして
それを頂点(頂点シェーダ)として入力したいとかそんなんだったら
ピクセルバッファオブジェクト使えばいいんじゃないかな。
直接的にテクスチャ→頂点は無いようなぁ。というか知らん。
849デフォルトの名無しさん:2007/08/28(火) 22:29:09
すべてのピクセルについて処理するのに、なんで出力先を設定するんだろう
出力先って、そのすべてのピクセルそれぞれじゃないの・・・?
理解が及ばん
850デフォルトの名無しさん:2007/08/29(水) 00:57:54
>>840
トライアングルセットアップ前の処理であるバーテックスシェーダと
ラスタライズ後の処理であるフラグメントシェーダでは
「やるべき事/できる事」が全く違うんだけど、
グラフィクスパイプラインのことは理解してるのかな?

840と842を合わせて読むと、まるで各フラグメントごとにPointSizeを
設定したいみたいに読めるけど、それだとまったくもって意味不明だし・・・。
あと「出力先を設定したい」なんて独自用語を使われても皆困ると思います。
用語は正確に使いましょう。

ついでにOpenGLよりもっと抽象的なレベルで、「こうなって欲しい」「こういう絵を描きたい」
というのを説明した方が、返答したり代案出したりしやすいかも。
851デフォルトの名無しさん:2007/08/30(木) 17:31:26
3Dテクスチャを使いたいのですが
床井さんのところでも、ちょっと難しくて


簡単に紹介しているところとかありませんか?
やりたいのは
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html
こちらのように適当な色を決めてポリゴンに3次元テクスチャとして貼り付けるといった感じです。

よろしくお願いします
852デフォルトの名無しさん:2007/08/30(木) 17:51:07
3Dでも2Dとほとんど一緒

GL_TEXTURE_2D → GL_TEXTURE_3D_EXT
glTexCoord2f → glTexCoord3f
glTexImage2D → glTexImage3DEXT

あとピクセル配列が三次元分必要なくらい
853デフォルトの名無しさん:2007/08/30(木) 18:45:01
>>852さん ありがとうございます。
ただ、エラーが出てしまってうまく実行できません。ソースの一部を見ていただいてもよろしいでしょうか

ttp://www.uploda.org/uporg992912.txt

glTexImage3DEXTのところでメモリエラーが出てしまっているようで。


それとは別になってしまうのですが
3次元テクスチャをポリゴンに貼り付ける、というイメージがいまいちできてなくて
3次元テクスチャが空間にある、というのならイメージができるのですが…
すみません、よくわからなくなってきました
854デフォルトの名無しさん:2007/08/30(木) 19:28:56
質問おねがいします
OpenGLをベースにしたライブラリで
Fox-toolkit
GLUT,GLUI
のニ系統に注目しています。
これらを両立させてコーディングすることは可能でしょうか?
それぞれのパッケージ毎にイベントループが用意されているので
難しいのかな?と思っていますが…
855デフォルトの名無しさん:2007/08/30(木) 19:34:10
>>285
混合は難しいと思うよ。やればできるかもしれないけど。
イベントループの機構が違う仕組みを混合させて使うコードを
想像すると、、俺ならやらない。
856デフォルトの名無しさん:2007/08/30(木) 19:59:45
>>855
わかりました。俺もやらないことにします。
857デフォルトの名無しさん:2007/08/30(木) 21:42:35
>>853
//#include <GL/glext.h>
これが原因ではないかい?
858デフォルトの名無しさん:2007/08/30(木) 21:47:49
>>857
GPUがAtiなのでglAti.hを読み込んでいます
EXTを使うのに、Atiの場合はこちらだとあったので


これをglextに変えても同じ状況になります。
859デフォルトの名無しさん:2007/08/30(木) 21:54:29
3Dテクスチャは触ったこと無いけどこの辺追加したら動かんかな
::glPixelStorei(GL_UNPACK_ALIGNMENT,1);
860デフォルトの名無しさん:2007/08/30(木) 22:03:02
>>859
加えてみてもダメでした

エラーは
glTexImage3DEXT(
GL_TEXTURE_3D_EXT , 0 , GL_RGB , TEXSIZE , TEXSIZE , TEXSIZE,
0 , GL_RGB , GL_UNSIGNED_BYTE , bits
);
のところを指して

0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。

と出ます。
床井さんのところのサンプルは動くのに…
861デフォルトの名無しさん:2007/08/30(木) 22:20:14
これをコメントにしてるってことは関数のアドレス取得に失敗してるだけなんじゃ?
>//if (glTexImage3DEXT != NULL)

床井先生のやつが動くならここの変更だけで動きそう
>PFNGLTEXIMAGE3DPROC glTexImage3D;
>glTexImage3D =(PFNGLTEXIMAGE3DPROC)wglGetProcAddress("glTexImage3D");
862デフォルトの名無しさん:2007/08/30(木) 22:24:17
>>860
俺は、3Dテクスチャー扱うときは、
bits[TEXSIZE * TEXSIZE * TEXSIZE * 3];
の様にしているんだが、
GLubyte bits[TEXSIZE][TEXSIZE][TEXSIZE][3];
でも動くの?
863デフォルトの名無しさん:2007/08/30(木) 22:44:47
>>861
>関数のアドレス取得に失敗
そのとおりだと思います…
書いていただいたとおり変更したら、今度はコンパイルができなかったです。

>>862
二次元テクスチャのときGLubyte bits[TEXSIZE][TEXSIZE][3]と取って、ijのループでアクセスしていました。
もしもよければ、3Dテクスチャのソース見せていただいたりとかできませんか

一日こればかりに追われてしまって…頭がもう熱もってしまって具合悪くなってきました
864デフォルトの名無しさん:2007/08/30(木) 22:52:35
使ってるビデオカードが 3D テクスチャに対応してるかどうかをまず調べたほうがいい
865デフォルトの名無しさん:2007/08/30(木) 22:58:40
GL_VERSION: 2.0.5696 Win2000 Release
GL_RENDERER: RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
GL_VENDOR: ATI Technologies Inc.

EXTENSION: GL_EXT_texture3D
GL_MAX_3D_TEXTURE_SIZE_EXT: 2048

toglinfoでこうあったので大丈夫だと思うのですが
866デフォルトの名無しさん:2007/08/30(木) 23:16:45
じゃあ wglGetProcAddress が早すぎるのかも
まだ GL 初期化されてないでしょ
glutCreateWindow の後にしてみ
867デフォルトの名無しさん:2007/08/30(木) 23:23:58
できました…ほんと、ほんとにありがとうございます
。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。

なんで、こんなことで
原因がなんでわかったんですか
何で俺、一日こんなに悩んでたんだよ

ありがとうございます
ほんとにほんとに

。゜。゜(ノД`)゜。゜。
868デフォルトの名無しさん:2007/08/30(木) 23:36:36
なんでわかったっていうか・・・、最初から心当たりは色々あるっていうのもあるけど

>glTexImage3DEXT(
>のところを指して
>0x00000000 でハンドルされていない例外

から、たぶん glTexImage3DEXT が NULL になってる可能性が高い。
wglGetProcAddress の戻り値が NULL ってことは取得に失敗してるわけだから、
ビデオカードが 3D テクスチャに対応してないか、
あるいは wglGetProcAddress のリファレンス見りゃ現在のGLコンテキスト云々って書いてあるので初期化前には使えなさそうだと思われた

ってところ。
というかね、wglGetProcAddress の戻り値がちゃんと取れてるかくらい、最初から確認しなさいよ。
869デフォルトの名無しさん:2007/08/30(木) 23:43:36
すみません
すべてにおいて修行不足でした。。。

戻り値がNULLなのが、なんでなのか、そこばかり見て
答えをぐぐって、リファレンスを見るということしてませんでした


自分の至らなさに凹むばかりです。。。
870デフォルトの名無しさん:2007/08/31(金) 00:21:42
うーん、でもま、コンテキスト作る前にwglGetProcAddressして関数ポインタが得られない、
てのは誰でも一度はやる失敗ジャマイカ? というか俺はやった。
そうやって経験を積んでいくんだよ、うん。気を落とさないでガンバレ。

ついでに
>>862
どっちも確保されるメモリの量は同じだから動くよ。
ただ、型に関しては前者のbitsはGLubyte*型、後者のbitsはGLubyte(*)[TEXSIZE][TEXSIZE][3]型
になることだけ注意。(glTexImage3Dはどっちもconst void *型で受けるから関係無いけど)
871デフォルトの名無しさん:2007/08/31(金) 20:19:58
すみません、すごいくだらない質問なのですが
複数のテクスチャ、の意味が理解できなくて
for(i=1;i<=SLICE_NUM;i+=4){
SetTexture((int)i);
glBegin(GL_QUADS);
glTexCoord2d(0.0, 1.0); glVertex3d(-1.0, -1.0, i/(SLICE_NUM*0.5)-1.0);
glTexCoord2d(1.0, 1.0); glVertex3d( 1.0, -1.0, i/(SLICE_NUM*0.5)-1.0);
glTexCoord2d(1.0, 0.0); glVertex3d( 1.0, 1.0, i/(SLICE_NUM*0.5)-1.0);
glTexCoord2d(0.0, 0.0); glVertex3d(-1.0, 1.0, i/(SLICE_NUM*0.5)-1.0);
glEnd();
}
たとえばdisplayの部分でSetTexureとして、下のようにRawの画像を連続で読み込んでいるのですが

static void SetTexture(int i){
FILE *fp;
char texture1[256]; /* テクスチャファイル名 */
sprintf(texture1,"hoge_%03d.raw",i);
if ((fp = fopen(texture1, "rb")) != NULL) {
fread(texture, sizeof texture, 1, fp);
fclose(fp);
} else {
perror(texture1);
}
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXWIDTH, TEXHEIGHT, 0,
GL_RGB, GL_UNSIGNED_BYTE, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}

この場合テクスチャ(画像)は複数ですよね。でもglGenTexturesで扱うような「テクスチャ」ってこれとはどう違うのでしょうか
違いというのが何なのかを教えてください
872デフォルトの名無しさん:2007/08/31(金) 20:35:30
その場合は、描くたびに画像データをロードしなきゃいけない。
ビデオカード上には同時に1枚しかテクスチャがなくて、毎回入れ替えることになる。

glGenTextures というか glBindTexture を使う場合、
ビデオカード上に同時に2枚以上のテクスチャを置いておける。
描くたびにいちいち画像データをロードする必要はなくて、ロード済みのテクスチャを単に切り替えるだけで済む。
873デフォルトの名無しさん:2007/08/31(金) 21:00:59
なるほど
ということは実体は同じ、ということですか?

上の場合は1枚読み込んで、貼り付けて
1枚読み込んで、貼り付けて
…以下繰り返し

それだと1番目の貼り付けた画像は、ビデオカード上に無い、ということですか?
表示は全部表示されてはいるのですが…
874デフォルトの名無しさん:2007/08/31(金) 23:54:05
ということです。

画面に描いた結果は画面には残るけど、
テクスチャとしてのデータは、新しいのをロードした時点でビデオカード上から消え去る。
もう一度同じテクスチャで、今度は別の位置に描画したければ、またロードし直すしかない。
875デフォルトの名無しさん:2007/09/01(土) 17:18:38
質問です。

変数を画面に表示させることってできるんですか?
876デフォルトの名無しさん:2007/09/01(土) 17:19:55
できますよ
877デフォルトの名無しさん:2007/09/02(日) 14:27:17
>>874
遅くなりましたが、ありがとうございます!納得ができました
878デフォルトの名無しさん:2007/09/03(月) 13:42:16
>>853ですが
生成した3次元テクスチャをglutSolidCubeなどに貼り付けようとしているのですがうまくいっていません

イメージは
ttp://www.unregardless.net/images/cocoa.png
こちらの左の三角形のようなもので、これをスライスしても中身に模様が詰まっている、ということをしようとしています。

3次元テクスチャの生成で、いけると思ったのですが
Solidの物体に貼り付けるところでもつまってしまいました

参考になるところとかありましたら教えていただけないでしょうか
879デフォルトの名無しさん:2007/09/03(月) 15:11:10
>>876

具体的にはどんな関数があるんですか?
880デフォルトの名無しさん:2007/09/03(月) 15:43:31
>>878
まず、OpenGLで扱えるのはサーフェイス(+ライン、ポイント)のみであり
ソリッドな物体を表現するには断面をサーフェイスで描くか、
サーフェイスを死ぬほど重ね描きして擬似的にソリッドぽく見せるしかないんですが、
その点はOKですか??
そしたら後は、頂点ごとに、対応するテクスチャ座標を3次元で与えてやるだけです。

>>879
printf()
881デフォルトの名無しさん:2007/09/03(月) 16:04:08
>>878
OpenGLやDirectXなどのリアリタイムレンダリング向けの3Dライブラリは、
サーフェスモデルを採用していますので、普通のやり方ではできません。
CADなどでつかわれる、ソリッドモデルが使えるライブラリが使えれば可能だと思いますが・・・
882デフォルトの名無しさん:2007/09/03(月) 16:04:48
x リアリタイムレンダリング
o リアルタイムレンダリング
883デフォルトの名無しさん:2007/09/03(月) 16:36:23
◎ リアルリアリティ
http://www.pouet.net/prod.php?which=2059
884デフォルトの名無しさん:2007/09/03(月) 16:50:57
>>880さん
>サーフェイスを死ぬほど重ね描きして擬似的にソリッドぽく見せるしかないんですが、
はい、こちらの方はできました。
ただ2Dテクスチャをポリゴンに貼り付けて重ねていたので、それを3Dテクスチャにしようと思ったのです

>>881さん
なるほど。もともとサーフェイスがメインということですか…

885デフォルトの名無しさん:2007/09/03(月) 17:13:26
ttp://www.uploda.org/uporg1000037.jpg
ttp://www.uploda.org/uporg1000038.txt

現状こういった形になっています。ソースは弄くりながらで汚くてすみません。

>>880さんの仰ってくださったやり方を3Dテクスチャでやってみます。
2Dでやったときはポリゴンが重なるとものすごく重たくなったり、ポリゴンの水平方向から見ると消えたりしたので
ソリッドに直接マッピングしたくてやっていました。

886デフォルトの名無しさん:2007/09/03(月) 17:15:01
すいません、上のは
ポリゴンにあるようなグラデーションのテクスチャを
ソリッドに直接張り合わせようとしたものです…
887デフォルトの名無しさん:2007/09/03(月) 20:08:30
>>885
やりたいことが分かるような分からないようなw
ええと、glTexGenを使う方向性は間違ってないと思うんですが、
なぜGL_TEXTURE_GEN_MODEがGL_SPHERE_MAPなのん??
こういう用途ではGL_OBJECT_LINEARを使うのが普通だと思うのですが。
888デフォルトの名無しさん:2007/09/03(月) 23:28:52
>>887さん
ttp://www.uploda.org/uporg1000803.jpg

とりあえずできました。glTexGenのところをいじくっていたらなんとか。
なぜか自動でテクスチャが、-1〜1の範囲でないと全部適応されないのが気になるのですが

角の部分は視野台を越えてしまっているのですが、切り取られるとSolidCubeでもサーフェイスもでるなのですね
この後は床井先生のところで勉強します

ありがとうございました。
889デフォルトの名無しさん:2007/09/03(月) 23:59:26
>>888
んな?テクスチャ座標は-1〜1じゃなくて、0〜1ですよ?

あとglutSolidCubeの "Solid" てのは、 "Wireじゃない" という意味であって、
ソリッドモデルを描いてくれるワケではないのです。残念ながら。
890デフォルトの名無しさん:2007/09/04(火) 16:08:02
>>889さん
なぜか-1.0〜1.0のポリゴンを基準にテクスチャが生成されてしまいました。。。原因を調べています。

SolidCubeの件もありがとうございます。
中身がカラッポだったので、床井先生のところでされているような
切り取った面に再度テクスチャを張るといったところをよく見てみます。

891デフォルトの名無しさん:2007/09/06(木) 17:09:44
OpenGL作ってるアプリで.xファイルを
読み込もうとしているのですが、全然やり方が解りません。
.xのテキスト形式に書かれている内容をどうやってパースすればいいのか
どなたかヒントを下さい!
892デフォルトの名無しさん:2007/09/06(木) 17:11:10
↑すみません、間違えました
OpenGL作ってるのではなくて、OpenGLを使用しています
893デフォルトの名無しさん:2007/09/06(木) 17:56:59
D3DX を使うか、X ファイルをやめる、というのがおすすめ

自力でパーサを書くのは相当大変だが、やりたければ lex とか yacc とか再帰下降とかでぐぐってみたら
894デフォルトの名無しさん:2007/09/06(木) 18:27:38
便乗ですまんす、VRML2.0を(あるいは、VRML2.0から変換できる何かを)
OpenGL上に表示できる、定番のライブラリはあるでしょうか。
フリーだと嬉しいす。
895デフォルトの名無しさん:2007/09/06(木) 19:15:19
openGLをつかってshadeで作ったモデルを
動かすとかって可能ですか?

誰か知ってる人いたら教えてください!!
896デフォルトの名無しさん:2007/09/06(木) 19:25:25
>> 893
情報サンクス 参考に考え直してみます!

>> 895
shadeから汎用のファイル形式に書き出して、OpenGLで読み込めば出来るよ!
897デフォルトの名無しさん:2007/09/06(木) 19:29:59
>>896
あーりがとうございます!
898デフォルトの名無しさん:2007/09/07(金) 00:19:39
>>897
.obj とか mqoに変換すれば
そういうことやってる人いっぱいいるから、ソース出てくるよ
899デフォルトの名無しさん:2007/09/07(金) 00:49:21
>898
いまいちどのmqoローダがいいのかよくわからない
なにか、おすすめありませんか?
900デフォルトの名無しさん:2007/09/07(金) 01:18:07
ごめん、俺もそれ自体はやったことないから
何がいいのかはわからない

ググってくれ
901デフォルトの名無しさん:2007/09/07(金) 09:23:40
w
了解
自分で探してみます
902デフォルトの名無しさん:2007/09/07(金) 17:22:51
ww
903デフォルトの名無しさん:2007/09/08(土) 16:50:07
www
904デフォルトの名無しさん:2007/09/08(土) 23:04:31
wwww

あ、>901俺だ
905デフォルトの名無しさん:2007/09/10(月) 16:06:50
895です

shadeでつくったモデルをOpenGLで
動かしたことがある方は
どんな資料を参考にしてらっしゃいますか??
906デフォルトの名無しさん:2007/09/10(月) 18:02:41
そんなことをいちいち聞くレベルで、モデルデータ扱うのはちょっと速いんじゃないか…?
907デフォルトの名無しさん:2007/09/10(月) 19:02:37
>>906

ん?そんな難しいの?
908デフォルトの名無しさん:2007/09/10(月) 20:17:59
難しいというか、めんどくさい?
openglにはモデルを読み込んだりする機能がないから、自分でどうにかしないといけない
ちなみに、俺はやったことないw
909デフォルトの名無しさん:2007/09/10(月) 20:45:22
ww
910デフォルトの名無しさん:2007/09/11(火) 00:11:56
なんでこんな和やかなんだこのスレはw
911デフォルトの名無しさん:2007/09/11(火) 11:55:07
>>905
shadeだとwavefront obj形式かdxf形式とかmqo形式で吐き出したものを読み込む事が多いと思う。
objなら"wavefront obj フォーマット"とかでググればmtlファイル含めてフォーマット形式が結構出て来るし、
dxfもMSDNにファイルフォーマットが記載されてる。
あとは自力でこれらのASCIIデータを読み込んで、頂点情報等に分解して描画すればOKにょ。

俺はmqo使った事無いからそっちはシラネ。
912デフォルトの名無しさん:2007/09/11(火) 14:54:01
シェードならメタセコで読み込めるんじゃないの?
メタセコってモデリング兼、変換ツールみたいなもんだろ

つーか3Dモデルっていくらでも変換できるんだから
obj mqoあたりに変換すればいいだろうに
913デフォルトの名無しさん:2007/09/11(火) 15:22:41
最新のは知らんが数年前だと形式によってemissionやテクスチャ座標が付いてこない奴があったからなあ
自分が必要とするモデル情報を格納してる形式について調べるのが一番良さげ
914デフォルトの名無しさん:2007/09/11(火) 17:39:19
OpenGLって英語のヘルプしかないのでしょうか?
関数とかパラメータとか多すぎて覚えたそばから忘れてしまうぅ
915デフォルトの名無しさん:2007/09/11(火) 18:03:35
このあたりしかないんじゃない?
http://www.amazon.co.jp/dp/4894717239
http://www.amazon.co.jp/dp/4894711370

それより英語に慣れた方がいいんじゃないかと。
916デフォルトの名無しさん:2007/09/11(火) 18:17:38
英語だろうと日本語だろうと多すぎるパラメタは覚えられないと思うがなw
917デフォルトの名無しさん:2007/09/12(水) 02:01:27
OpenGL1.2以上が必要っていわれてできないMMOあるのですが
どなたかインストできるサイト教えてください。
918デフォルトの名無しさん:2007/09/12(水) 02:59:22
ビデオカードがOpenGL1.2以上に対応してれば、ドライバを入れれば使えるようになる。
ビデオカードが対応してなければ無理。
あと、板違い。
919デフォルトの名無しさん:2007/09/12(水) 03:25:38
OpenGL1.2非対応って、どんなビデオカードだw
920デフォルトの名無しさん:2007/09/12(水) 04:43:27
432 デフォルトの名無しさん 2007/01/19(金) 00:37:09
OpenGL1.2非対応ってどんだけ前のマシンなんだよ・・・

919 デフォルトの名無しさん 2007/09/12(水) 03:25:38
OpenGL1.2非対応って、どんなビデオカードだw

歴史は繰り返す。
921デフォルトの名無しさん:2007/09/12(水) 05:36:46
917の者です。板違いすいませんでした;;
付属のドライバインストしたら無事できました。
わざわざすいません。ありがとでした。

922914:2007/09/12(水) 10:03:38
>>915
ありがとうorz
英語もGLも地道に慣れる事にするよorz
923デフォルトの名無しさん:2007/09/12(水) 13:08:50
よかったな
ドライバは入れような
924デフォルトの名無しさん:2007/09/13(木) 05:45:55
>>905
俺ここで質問する側の人間だけど
glutありでいいなら
「GLUTによるOpenGL入門」て本に3Dグラフィックの描画の仕方があるから
後はモデルデータをワードパットなりなんなりで開いて打ち込みでいけるんじゃないんかな・・・
見当違いの事かいてたらごめん
925デフォルトの名無しさん:2007/09/13(木) 12:54:44
ネットの某所からトラックボール処理の関数をDLして

初期化時に光源の配置
display関数内で glMultMatrixd(トラックボール移動関数());
みたいな事をしていて、これだと光源の位置がトラックボールと一緒に回転している状態なのですが
トラックボールしつつ光源の位置を固定する事って出来ますか?
何かを間違えているのだろうか…
926デフォルトの名無しさん:2007/09/13(木) 14:11:53
glLightfv とかで設定する光源の位置は、現在のモデルビュー行列の影響を受ける
モデルビュー行列をリセットした状態で (あるいは glMultMatrixd の前に) 光源の位置を設定してみ
927デフォルトの名無しさん:2007/09/13(木) 21:13:53
ビルドしたところ

\include\stdlib.h(406) : error C2381: 'exit' : 再定義 ; __declspec(noreturn) が異なります。
\platformsdk\include\gl\glut.h(146) : 'exit' の宣言を確認してください。

とexitにエラーが起きるんですが
これってglutのファイルがおかしいんですかね・・?
928デフォルトの名無しさん:2007/09/13(木) 21:24:38
glut.hと標準ライブラリのヘッダーをインクルードする順番を変える
929デフォルトの名無しさん:2007/09/13(木) 21:27:32
なるほどためしてみます
有難うございました
930デフォルトの名無しさん:2007/09/15(土) 08:34:42
順番変えるんだっけ?
自分はコメントアウトしてた気が…
931デフォルトの名無しさん:2007/09/15(土) 08:43:50
glutでプログラムを組んでいるのですが、グローバル変数の多いものとなってしまいます。keyを判断して他の関数に渡すなど。
皆さんもグローバルに変数を定義しているのでしょうか。
932デフォルトの名無しさん:2007/09/15(土) 11:36:20
>>931
GLUTの性質上、大域変数が多くなっちゃうのはしょうがないかも。
僕も簡単な描画テストとかGLUTで書くときは、大域変数使いまくりですよ。

まじめにやりたいなら、

class MyApp *my_app = 0;

void keyboard_func(unsigned char *key, int x, int y) {my_app->keyboard_event(key, x, y);}
void display_func() {my_app->display_event();}

int main() {
  my_app = new MyApp;
  glutInit();
  glutKeyboardFunc(keyboard_func);
  (略)
  glutMainLoop();
}

みたいな感じでイベントを全部スルーパスしてやれば、
あとはMyAppの書き方次第では綺麗になるんじゃないでしょうか。

でもまじめにやりたいなら、そもそもGLUT使わないかもw
933デフォルトの名無しさん:2007/09/15(土) 13:20:17
>>931
>皆さんもグローバルに変数を定義しているのでしょうか。

グローバルな構造体のメンバ変数にすると、ちょっとは見通し良くなるかも…
934デフォルトの名無しさん:2007/09/15(土) 17:35:12
>>932>>933
なるほど、参考になります。
クラスや構造体を使って少し整理してみようと思います。
935デフォルトの名無しさん:2007/09/17(月) 00:07:01
OpenGLでNurbsをつかいたいけど、
描画以外にはぜんぜん使えないんで、
よいNurbsライブラリを教えてたもれ。
936デフォルトの名無しさん:2007/09/17(月) 21:07:26
>>932
glutてあんまり使わないほうなんです?
本なんかだと使ってるのしか見ないからなぁ・・
赤本青本は手が出せない・・
937デフォルトの名無しさん:2007/09/17(月) 21:38:57
>>936
GLUTは、単にOpenGLで描画したいだけなら簡単で早くてとてもイイカンジですよ。
ただ実用アプリとしての体裁を整えようと思うと、急に辛くなるっていうか、色々とムリっていうか。

C++BuilderとかWIN32API直書きとかgtkとか色々やったけど、今はwxWidgets(+wxFormBuilder)がお気に入り。
GLUTと比べると色々と面倒臭いですけど、雛形を作ってしまえばかなり使えます。

あ、繰り返しますけど、簡易的な用途(テスト、デモ、小規模なゲームとか)なら
GLUTは全然悪くないです。あんまり使わないどころか、僕もよく利用してますよ〜。
938デフォルトの名無しさん:2007/09/18(火) 06:56:09
>>937
なるほど納得です
説明ありがとうでした
939デフォルトの名無しさん:2007/09/18(火) 08:08:58
ファイルダイアログを使いたいかどうかあたりが
glutを使うか使わないかの分かれ目な気がするw
940デフォルトの名無しさん:2007/09/18(火) 11:07:35
俺の場合ゲームだけど細かいところ作ってるとglutは厳しいなあと思う。
937さんの言うようにテスト・小規模アプリ用って印象があるにゃー。
941デフォルトの名無しさん:2007/09/18(火) 11:20:25
glut使わないとすると、wglやglXになるのでしょうか。glewなんてのもあるみたいですが。
942デフォルトの名無しさん:2007/09/18(火) 11:21:59
ゲームだと、どんなん使うの?
943デフォルトの名無しさん:2007/09/18(火) 13:01:32
俺は一回もglutを使った事がナス…

ずっとwindows sdkやxlib使ってたからか、最初はglutの入門書見てもイミフというか、
勝手に色々作られるのが気持ち悪くて、window制御させろやモルァとか思いながら調べてたら
wglやglxに辿り着いたっけなあ
944デフォルトの名無しさん:2007/09/18(火) 17:44:15
glutってどうみてもテストアプリ用だろ

どうやってあれで、ゲームとか作れというんだ・・・

>>942
Win32API、VCL、SDL、その他OpenGLを利用した3Dライブラリ(Irrlicht、OGRE3D、g3d)など
お好きなのをどうぞ
945デフォルトの名無しさん:2007/09/18(火) 17:59:06
GLFWのことも忘れないであげてください。
946デフォルトの名無しさん:2007/09/18(火) 18:41:13
>>942
リアルタイム入力が必要なゲームには向いてない。
クリックイベントベースのゲームとかフラグとタイマーループを組み合わせた程度のゲームならglutでもいける。
ただし音を扱うとなると厳しいかも->glut
>>943
確か過去スレにウィンドウハンドルとglut内のなんとかidを紐づける方法が質問&回答されてたような気ガス。
947デフォルトの名無しさん:2007/09/18(火) 19:37:44
TuxRacerも昔のver.はGLUT使われてるんじゃなかったっけ
948デフォルトの名無しさん:2007/09/19(水) 00:01:42
>>943みたいにやるとDirectX使うのと同じくらい煩雑な手続き要ったりします?
自分もGLUT使わずにやってみたいんですけど、
そうするとDirectXと比べて手軽にできるってメリットが消えちゃったりしますかね?
949デフォルトの名無しさん:2007/09/19(水) 00:19:11
>948
SDLはそれなりに手軽
950デフォルトの名無しさん:2007/09/19(水) 02:51:14
Direct3Dもglut相当のものがあるからむしろglより楽だぞ
951デフォルトの名無しさん:2007/09/19(水) 08:24:30
>>950
kwsk
952デフォルトの名無しさん:2007/09/19(水) 09:10:04
DXUTでggr
953デフォルトの名無しさん:2007/09/19(水) 10:43:46
>>948
初期化に関してはD3Dより微妙に楽…かも
954デフォルトの名無しさん:2007/09/19(水) 16:04:15
すいませんおかしな質問なのかもしれないのですが

常に視線方向に向いたポリゴン(ビルボード)を積み重ねて描きたいのですが
回転は視点が動くことで実装しようと思っています。

それで気になったのですが
1 視点が動くたびに、積み重なったポリゴンを再描画するのと
2 視点の回転に合わせて、積み重なったポリゴンも一緒にこっち側を向いたまま回転してついてくるの
どちらの方が高速なのでしょうか

後者の方が行列を掛け合わせるだけだと思うので速いと思うのですが
ビルボードなので、テクスチャもそれにあわせて動いてくれるかが少し気になります。

955デフォルトの名無しさん:2007/09/19(水) 16:49:15
>1 視点が動くたびに、積み重なったポリゴンを再描画するのと
いずれにしろ毎フレーム画面全体を再描画してるはずでは?

>2 視点の回転に合わせて、積み重なったポリゴンも一緒にこっち側を向いたまま回転してついてくるの
そもそも、常に視点方向を向くポリゴンのことをビルボードっていうはずだよね

>どちらの方が高速なのでしょうか
どちらっていうか、1と2はどのへんが対立するので?

>ビルボードなので、テクスチャもそれにあわせて動いてくれるかが少し気になります。
それに合わせて動くってどういう動き方?

全体的に意味がわからん
956925:2007/09/19(水) 16:58:25
今更ですが法線ベクトルの設定に問題がありました
>>926さんありがとうございました
957デフォルトの名無しさん:2007/09/19(水) 17:12:13
>>955
わかりにくくてすみません

ポリゴン再描画→ vertex(dx, dy, dz)のように視点が動くたびに頂点位置を指定して
再度ポリゴンを描くということです。

2以降は仰るとおりです。わけわからなくてすみません。
958デフォルトの名無しさん:2007/09/19(水) 17:26:22
2のときは頂点位置を指定してポリゴン描かないの?(゚_。)?(。_゚)?
959デフォルトの名無しさん:2007/09/19(水) 21:54:21
D言語 Part14
http://pc11.2ch.net/test/read.cgi/tech/1184807424/
>>719です。 こちらで勧められたので書き込みます。

D言語において、
OpenGLのフルスクリーン画面上で、日本語入力と変換を使いたいのですが、
それをサポートしてくれるライブラリなどはありますか?
OpenGLを直接使用して、GUIのメインウィンドウが無かったりする場合、
キー入力の制御は簡単にできますか?
たしかOpenGLはDirectXとは違って、画面関係だけのライブラリですよね。
960デフォルトの名無しさん:2007/09/20(木) 04:10:48
仰る通り OpenGL は描画以外のことは関知しない。
そもそも、OpenGL そのものにはキーとかマウスとかいった概念自体がない。
フルスクリーンとかウィンドウ表示とかいったことも範囲外。
単純に描画の部分しか扱わないので、それ以外はすべて OS 依存になる。

具体的には、Windows ならウィンドウメッセージを処理して IMM を叩く、
Mac なら NSTextInput プロトコルを実装する、Linux なら XIM を触る、
・・・といった感じになるかと。
個人的な経験で言うと、IME の制御は環境差が結構あって、
その差異を吸収しようとすると、わりと面倒かった記憶がある。

OS に依存したくなければ、Anthy みたいなフリーの IME を拾ってきて
自分のプログラム内に組み込むっていう方法もあるけど、どうだろうかね。
961デフォルトの名無しさん:2007/09/20(木) 04:45:27
SDL-IMを使うとゆー手もあるけど、別スレで同じこと答えてる人がいるから
そっちにまかせた
962デフォルトの名無しさん:2007/09/20(木) 11:36:42
IME と関係ないことだが、マルチプラットフォームに展開するつもりなら
Mac のマウスはワンボタンだという衝撃の事実を忘れずに UI 設計してもらいたい。
よろしく。
963デフォルトの名無しさん:2007/09/20(木) 12:07:44
今はMacも右クリックあるんだよな
オレは1ボタンのマウス使ってるけどなー
964デフォルトの名無しさん:2007/09/20(木) 13:27:42
マウスはワンボタン(笑)
965デフォルトの名無しさん:2007/09/20(木) 19:16:04
むしろ
「SGのワークステーションは3ボタンマウスしかありませんが何か?」
くらいの勢いで設計して欲しい
966デフォルトの名無しさん:2007/09/20(木) 19:51:34
Win32アプリケーションでglutを使わずにOpenGLを動かす方法を勉強をしようと思っているのだけど
参考になるサイトとかってありますか?
967デフォルトの名無しさん:2007/09/20(木) 20:13:04
>>966
OpenGL WGL で検索するといろいろ見つかると思う
968デフォルトの名無しさん:2007/09/20(木) 20:41:35
>>967
WG・・・L・・?
いろいろ調べてみます
ありがとうございました!
969デフォルトの名無しさん:2007/09/20(木) 20:55:32
むしろキーボードしかなかったり、マウスしかなかったり、
カーソルキーが無かったり、マウスボタンが一つだったりホイールが無かったりする環境を考慮して、
どんな環境でも操作できるようにしておくといいよね。
970デフォルトの名無しさん:2007/09/20(木) 20:57:05
まあどんな場合でも切り捨てって必要よね
971759:2007/09/20(木) 21:07:18
>>960
体験談参考になります。ありがとうございます。
972デフォルトの名無しさん:2007/09/21(金) 10:17:35
マウスとキーボードが無い環境となると

ふむ
973デフォルトの名無しさん:2007/09/21(金) 10:38:03
パンチカード?
974デフォルトの名無しさん:2007/09/21(金) 12:07:49
きっとタッチパネル
975デフォルトの名無しさん:2007/09/21(金) 12:22:28
コンピュータが無い場合も考慮すべし。
976デフォルトの名無しさん:2007/09/21(金) 12:56:25
脳内レンダリングの出番だな
977デフォルトの名無しさん:2007/09/22(土) 21:42:01
過疎ってるし巡回めんどいから次スレ立てずに合流でよろ

OpenGLスレ Part11
http://pc11.2ch.net/test/read.cgi/tech/1177523018/
978デフォルトの名無しさん:2007/09/22(土) 21:46:04
こっちは超初心者用だから、俺こっち継続して欲しい
979デフォルトの名無しさん:2007/09/22(土) 22:04:35
こっちの方が質問しやすいって人もいるでしょうね
980デフォルトの名無しさん:2007/09/23(日) 03:45:16
俺みたいなへたれさんとかね
981デフォルトの名無しさん:2007/09/23(日) 09:59:06
>>977
すみ分け出来てるし、わけてていいと思うが。

>>990 次スレお願い
982デフォルトの名無しさん:2007/09/24(月) 13:57:26
超次スレ
【超初心者】くだすれOpenGL2.0【質問用】
http://pc11.2ch.net/test/read.cgi/tech/1190579207/
983デフォルトの名無しさん:2007/09/24(月) 13:59:47
死んで
984デフォルトの名無しさん:2007/09/24(月) 16:29:54
お前が死んで
985デフォルトの名無しさん:2007/09/24(月) 17:17:51
はい
986デフォルトの名無しさん:2007/09/24(月) 17:32:36
素直すぎですwww
987デフォルトの名無しさん:2007/09/24(月) 17:54:54
こsで
988デフォルトの名無しさん:2007/09/25(火) 23:44:25
OpenGL APIのリファレンスって何処にあるんですか
GLUTはすぐに見つかるのに
989デフォルトの名無しさん:2007/09/25(火) 23:58:17
990デフォルトの名無しさん:2007/09/26(水) 18:39:30
画面全体を揺らすという効果を実装したいのですが、よい方法をご享受下さい。

画面に最終的に表示するときに、座標をそれぞれ、加算するという方法が、
まずうかびますが、どうもスマートではありません。


991デフォルトの名無しさん:2007/09/26(水) 18:50:17
一度普通にバックバッファにレンダリング

glCopyTexSubImage2Dでバックバッファイメージをテクスチャにコピー

テクスチャをスプライトとして表示して動かしまくりんぐ


992990:2007/09/26(水) 18:58:22
適当にやったらできてしまった。

glPushMatrix;
glTranslatef(x, y, 0);


//描画処理


glPopMatrix;

これができたのは、たぶん、2Dスプライトしかないせい・・・。

>>991
3Dの場合、そっちの方が定番なのかな?
993デフォルトの名無しさん:2007/09/26(水) 19:25:40
カメラ揺らすだけでもおk
994990:2007/09/26(水) 20:17:18
>>993
後学のために、カメラ操作の方法をしりたい・・・

gluLookAt の 特定の引数の座標だけを変えるようなことってできるんだろうか
995デフォルトの名無しさん:2007/09/26(水) 20:23:51
?
できるだろそりゃ
996デフォルトの名無しさん:2007/09/26(水) 20:23:51
単に gluLookAt の centerX〜Z を上下左右前後に揺らすってことではないかな
997990:2007/09/26(水) 20:35:15
>>996
そのとおりです

調べましたが、
結局、gluLookAt は、パラメータに応じて、計算して、行列を設定しているだけですから、
適当に、glTranslatefなりなんなりで、ずらすのと変わらないんですね。
ありがとうございました。
998デフォルトの名無しさん:2007/09/26(水) 21:12:56
 
999デフォルトの名無しさん:2007/09/26(水) 21:27:00
1000デフォルトの名無しさん:2007/09/26(水) 21:28:12
とった
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。