1 名前:デフォルトの名無しさん [2007/04/26(木) 02:43:38 ] クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。 禁止事項 ・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可) ・学歴・理系か文系かに関連する差別発言 ・その他の荒らし全て これらは付き合うだけ無駄なので無視しましょう。 - 前スレ - OpenGLスレ Part10 pc11.2ch.net/test/read.cgi/tech/1141034983/ - 関連サイト - www.opengl.org/ www.mesa3d.org/ developer.nvidia.com/ www.ati.com/developer/ developer.3dlabs.com/ - 過去スレ - Part 9: pc8.2ch.net/test/read.cgi/tech/1132403929/ Part 8: pc8.2ch.net/test/read.cgi/tech/1126267690/ Part 7: pc8.2ch.net/test/read.cgi/tech/1118151979/ Part 6: pc8.2ch.net/test/read.cgi/tech/1105612993/ Part 5: pc5.2ch.net/test/read.cgi/tech/1100085657/ Part 4: pc5.2ch.net/test/read.cgi/tech/1091724463/ Part 3: pc5.2ch.net/test/read.cgi/tech/1067529308/ Part 2: pc2.2ch.net/test/read.cgi/tech/1039984523/ Part 1: pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
82 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:04:52 ] 本当に究極までドライバの最適化を極めれば仕様上GLのドライバのほうが早くなる 何故なら全てのカードごとに最適化されたドライバを書くことすら出来るからだ 実際に固定機能時代のnVIDIAのカードのパフォーマンスはD3Dを上回った これはQuakeエンジン等のGLベースエンジンの活躍が大きな要因だろう しかしその後のAPI仕様の肥大化、プラットフォームの多様化等のせいで 個別の最適化どころかそこそこの速度と信頼性を維持するのがやっとというのが現状
83 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:30:24 ] 結論をいうと、本格的にやるならOpenGL。 お遊び程度ならD3D。
84 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:33:57 ] 本格的なら両方やっとけ
85 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:49:18 ] 2Dならソフトウェアのほうが軽いのか?
86 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:55:01 ] んなわけない ハードウェアに依存しないから昔のマシンでもそこそこの速度で安定して動くんで使いやすいという程度
87 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:03:55 ] 実際OGLやD3Dに比べりゃソフトウェアの方が軽い。
88 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:05:38 ] そうですね^^
89 名前:53 mailto:sage [2007/06/09(土) 02:18:37 ] >>63 なるほど、1次元テクスチャですかー その辺あまり詳しくないので調べてみようと思います どうもありがとうございます
90 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:39:21 ] >>85 Mac のデスクトップは 2D も OpenGL で描画してるよ
91 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:46:53 ] ここで言うソフトウェアってのは画像描画、ブレンド、ラスタライズその他諸々をCPUでやるってこと MacでもGLの出番はクライアント領域への描画だけ
92 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:48:41 ] そりゃ描画処理切り替えやハード依存を無くす為だろ
93 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:55:58 ] 90=92? 何が言いたいのかわかんないんだけど MacでデスクトップがソフトウェアでもGLで描画していようとも ソフトウェアレンダリングするなら速度に影響しないからどうでもいいでしょ?
94 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:58:34 ] ここでソフトウェアレンダリングって言うと紛らわしいな ○ソフトウェアでラスタライズ
95 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:03:21 ] ああ、わかった >90はデスクトップ描画に使うくらいGLは軽いって言いたかったのかな? もしそうならすまんかった
96 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:10:38 ] OGLはスペック要求されるから重くなるのは必然
97 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:15:25 ] >>89 わかってるかもしれませんが、1次元テクスチャによる色変換は いわゆる依存(従属)テクスチャ処理になるからシェーダが必須ですよ〜。
98 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:23:39 ] >>91-95 何がしたいんだ?
99 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:32:43 ] (´・ω・`)知らんがな
100 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:07:42 ] >>81 glBlendFunc(GL_ONE ,GL_ONE_MINUS_SRC_COLOR); で上手く黒が消えて、白いところだけ出てきました! ありがとうございました。。。なんか涙出てきた
101 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:09:18 ] OpenGLは最後に塗るとき以外、使い物にならないといいたいんだろう。
102 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:26:19 ] さすがにブレンドはGPU上じゃろう
103 名前:デフォルトの名無しさん [2007/06/09(土) 12:19:06 ] >>85 2Dなら、むしろ、画質向上のためアルファ付きテクスチャーを多く描画することになると 想定すると、Zバッファが使えなくなって、重くなることもある。 まさか、いまどき、2Dで、ジャギジャギのドット絵スプライトの描画なんて、そうそうねーし。 まあ、場合によりけるだが・・・
104 名前:デフォルトの名無しさん [2007/06/09(土) 12:20:54 ] >>82 懐かしいなー。 前世紀は、Quake3時代だよな メーカーが、こぞって、OpenGL対応をうたってて、OpenGLの方ががメチャ速い(気のせいかも)時代だった
105 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:02:18 ] 大量のテクスチャを大量に貼り付けるとき for(i =0; i < 枚数(512〜); i++) { glBindTexture(GL_TEXTURE_2D, texture[i]); } のように、番号を保管するtexture[]配列を作らないとだめでしょうか? forの中で、順次貼り付けるテクスチャを更新していって 貼り付けて描画→次のを貼り付けて描画→…終わりまで で texture 変数を更新するだけでやるのは可能でしょうか。
106 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:06:20 ] 出来るけどかなり遅いよ
107 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:14:53 ] >>106 配列でやるよりも遅くなるのですか。。。 枚数がたくさんになりそうなので(512×3 や 1024×3)あまりメモリを使いたくなくて… for(i =0; i < 枚数(512〜); i++) { SetTexture(i);//テクスチャを連番で取得する関数 glBindTexture(GL_TEXTURE_2D, texture[i]); //i枚目テクスチャを貼り付け } というやり方を考えていました。
108 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:18:05 ] ごめん、テクスチャの中身を更新するのと勘違いした そのやり方が普通だよ
109 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:36:06 ] ありがとうございます! これで迷い無く組めそうです。 あと、上のは少し違っていました glBindTexture(GL_TEXTURE_2D, texture); こうやっていくつもりでした。 テクスチャの中身を更新、というのは具体的にどういうことなのでしょうか 私のは中身を更新、していないのですか? すみません…何回も何回も
110 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:44:04 ] 最初glBindTextureの代わりに毎回glTexImage2Dで画像をロードするのかと思ったんだよ これだと劇的に遅くなる代わりにメモリはテクスチャ1枚分しか使わないから
111 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:06:13 ] ] 授業単元:プログラミング実習 2] 問題文(含コード&リンク): 2教科のテストの点数を入力し、その2つの点数に 任意の点数を加算する関数を、ポインタを使って定義し、以下のように出力するコー ドを提出しなさい。 例)2教科分の点数を入力してください。 78 65 加算する点数を入力してください。 12 12点加算したので 科目1は90点になりました。 科目2は77点になりました。 [3] 環境 [3.1] OSLinux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:6月11日17時まで [5] その他の制限: 配列を関数までならいました。ポインタは初めてです とにかく初心者です。 よろしくお願いします(><)
112 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:06:30 ] おそらく私がやろうとしているのは、そうなっています SetTextureのところで、毎回違う画像(BMP)を拾ってきて、それをテクスチャにして ポリゴンに貼り付けていくので…
113 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:12:51 ] >112 それだとglBindTextureはいらないよ glBindTextureは時間のかかるglTexImage2Dなどのテクスチャロード処理を事前にやっておき 描画を高速にするためのものだから
114 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 15:44:51 ] OpenGLの勉強を始めたい大学生ですがCygwinでも大丈夫でしょか? それともVisual studioを買って勉強したほうがいいでしょうか? 自分のパソコンにはCygwinが入っていて大学だとVisual studioなのですが。 何か違いが出てきますか?
115 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:05:14 ] Cygwinだとどうなるのかは知らないけど、 今はVisualC++2005 ExpressEditionという無料のバージョンがあるよ OpenGL用のSDKが追加で入るのかは知らないけど
116 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:32:15 ] ExpressEditionだったら、プラットフォームSDKをいっしょに入れればOpenGLのSDKもついてくるよ。 ダウンロードするページにプラットフォームSDKを一緒に使いましょうみたいなお知らせがあるし、 でないとwindows.hもつかえないんじゃなかったっけ?
117 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:04:20 ] ttp://plaza.rakuten.co.jp/kojimatch/diary/200606290000/ ここに導入方法が
118 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:56:00 ] Cygwinでも大丈夫だし、そっちのほうが後々Linux等で動かしたくなったときに 楽かもしれないよ。大変かもしれないけど。
119 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 12:34:18 ] > 楽かもしれないよ。大変かもしれないけど。 どっちだよ
120 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:14:25 ] だってwin32API使ってたら互換性ないしさ
121 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:29:45 ] すいません109で聞いたものなのですが テクスチャを大量に貼り付けるのに、このようにしたのですが、何も貼られなくて進めなくなっています… 床井先生のところをみながら、手探りでやっています。 static void SetTexture(int i){ /* テクスチャの読み込みに使う配列 */ GLubyte texture[TEXHEIGHT][TEXWIDTH][3]; FILE *fp; sprintf(texture1,"texture%04d",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_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } ディスプレイ関数側ではこのように呼び出しています for(i=1;i<=SLICE_NUM;i++){ glBegin(GL_QUADS); SetTexture((int)i); /* テクスチャマッピング開始 */ glEnable(GL_TEXTURE_2D); glTexCoord2d(0.0, 1.0); glVertex3d(-1.0, -1.0, i/SLICE_NUM);glTexCoord2d(1.0, 1.0); glVertex3d( 1.0, -1.0, i/SLICE_NUM);lTexCoord2d(1.0, 0.0); glVertex3d( 1.0, 1.0, i/SLICE_NUM);glTexCoord2d(0.0, 0.0); glVertex3d(-1.0, 1.0, i/SLICE_NUM); glEnd();}
122 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:22:34 ] 121ですが、色々みて initやmain関数で先にテクスチャを確保しないとダメっぽいということがわかりました… 動的にディスプレイ関数の中で確保する方法とかないでしょうか
123 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:48:19 ] glBindTextureってどこでやってんの?
124 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:02:36 ] glBindTextureは使っていません テクスチャに関係している部分はココだけです。 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXWIDTH, TEXHEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, texture); ここで、開いたテクスチャが割り当てられると思ってやっていたのですが…
125 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:44:27 ] glEnableはglBeginとglEndの中に書いちゃダメだよ というか設定系はglBeginの前に全部終わらせといて Begin〜Endの中にはglVertexとかglTexCoordとかだけにしよう
126 名前:デフォルトの名無しさん [2007/06/10(日) 21:58:30 ] >>111 オメエ、mixiで手当たり次第に、マイミク登録して、聞いていただろう >>125 え!それ知らなかった。 それってどこかに書いてある?
127 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:58:50 ] >>125さん できました。 本当に、ただ、そこだけだったんですね SetTextureをBeginから出しただけで、思ったとおりに出来ました これだけのことなのに、ずっと悶々ググッていました すみません、ほんと助かりました これでようやく帰れます。。。ありがとうございました・゚・(ノД`)・゚・。
128 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 00:40:12 ] >>126 OpenGL SDKのリファレンス、glEnableのErrorsの欄にあった たぶん青本でも書いてあると思うよ
129 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 01:01:03 ] >>126 常識だぜ
130 名前:デフォルトの名無しさん [2007/06/11(月) 17:59:31 ] >>128 青本もってねーや。webで探してみる >>129 マジ?
131 名前:≠129 mailto:sage [2007/06/11(月) 19:14:30 ] >>130 マジ glBegin〜glEndの中では、glEnableが使えないというよりはむしろ ごく少数の限られたGLコマンド以外のほとんどがエラーになるんだでよ
132 名前:デフォルトの名無しさん [2007/06/12(火) 15:55:36 ] というのはガセ
133 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:23:04 ] 青本より引用 Only a subset of GL commands can be used between glBegin and glEnd. The commands are glVertex, glColor, glIndex, glNormal, glTexCoord, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, and glEdgeFlag. Also, it is acceptable to use glCallList or glCallLists to execute display lists that include only the preceding commands. If any other GL command is executed between glBegin and glEnd, the error flag is set and the command is ignored.
134 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 05:00:11 ] カーマックktkr ttp://www.4gamer.net/news/history/2007.06/20070612202046detail.html
135 名前:デフォルトの名無しさん [2007/06/13(水) 06:16:56 ] > マップ全体が,20GBもある一つのテクスチャ画像で覆われており, > 例えば,マップ内にある山の頂上付近の色だけを変えたり, > 岩に名前を掘り込んだりといった具合に,マップの表面を自在に > 変更することが可能。さらに,パフォーマンスや安定性には一切影響を与えないという。 すげえな。 どうやってんだ? 20Gって、VRAM足りんよな? 動的に読み込んだりして、あとはどうするんだろ・・・
136 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 21:33:09 ] カーマックのDirectX嫌いも直ったみたいだしもうWinではGL使わないかもね
137 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 20:48:42 ] OpenGLの勉強を始めたいのですがおすすめの書籍・サイトはありますか? ちなみに大学生でVisual Studioは持っていないのでUNIX環境で作るつもりです。
138 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 21:38:30 ] GLUTによる「手抜き」OpenGL入門
139 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 21:58:18 ] リファレンスなんかはOpenGL SDKをどうぞ www.opengl.org/sdk/
140 名前:デフォルトの名無しさん [2007/06/16(土) 00:32:38 ] 驚愕の事実。 GLUIはLGPLのくせにスタティックリンクしかねぇ! ソース後悔はいやづら
141 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:07:26 ] せっかくgluiのソースがあるんだから、 gluiを *.dll とか *.so にコンパイルすればいいんでは。
142 名前:デフォルトの名無しさん [2007/06/16(土) 01:21:51 ] >>141 おっしゃる通りなんですが、ほとんどの機能がクラスで提供されているので、事実上無理ではないでしょうか
143 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:23:33 ] >>140 LGPL はスタティックリンクしてもソースは公開しなくて良いんだぜ。 他人が再リンク可能なようにする必要があるだけだから、リンク前の オブジェクトファイルを同梱しておけばオーケー。ソースは隠しておけ。
144 名前:デフォルトの名無しさん [2007/06/16(土) 01:28:53 ] >>143 おおっ、トリッキーな情報さんきゅです。 確かにそんなこと書いてあった気がする。 これで恥ずかしい自コードを隠しておけそうですヽ(´▽`)/
145 名前:デフォルトの名無しさん [2007/06/16(土) 18:19:21 ] > LGPL はスタティックリンクしてもソースは公開しなくて良いんだぜ。 嘘はいけないよ、嘘は・・・
146 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:28:43 ] >>145 釣りするつもりならもう少し工夫したらどうなんだ? 最近少し頑張りが足りないぞ。
147 名前:デフォルトの名無しさん [2007/06/16(土) 18:56:46 ] おいおい、LGPLは動的リンクでないとLGPLになるよ。 だから、みんな、DLLにしてるのに・・・
148 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:09:54 ] >>147 gnu.org 逝って来い 思い込みだけで書き散らしてないで、原文をきちんと読め
149 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:10:06 ] というかLGPLなのにソース公開されてないの?
150 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:49:54 ] つうか、2007 年にもなって LGPL にソース公開義務があると 思っている人間がいたのが驚きだ…
151 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:12:49 ] lgplを採用するプログラム(ライブラリ)自体にはソースの公開義務はあるだろうよ… ソースの公開義務が無けりゃ、BSDとかわらんではないか… 俺は勝手にwikipediaのttp://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_Licenseが正しいとか思ってるんだが、どうだろうか?
152 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:41:18 ] for(i=0;i<WIDTH;i++){ for(j=0;j<HEIGHT;j++){ /* test source */ glGetDoublev(GL_MODELVIEW_MATRIX, model); glGetDoublev(GL_PROJECTION_MATRIX, proj); glGetIntegerv(GL_VIEWPORT, view); glReadPixels(i, j, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z1); gluUnProject(i, j, 0, model, proj, view, &x1, &y1, &z1); //スクリーン上の座標をワールド座標で取得 /* test source */ } printf(" at (%d, %d) --> ", i, j); printf(" at unproject (%lf, %lf, %lf)\n", x1, y1, z1); } スクリーン上の各ピクセルが、ワールド座標上でどうなっているのか知りたくて 上のようなソースを書いたのですが、変な値が入ってきます。 視点を<10 10 -20>において、<10 10 0>を見ているときに 左端のX〜右端のXを表示しても at (0, 256) --> at unproject (10.552285, 10.465990, -19.000000) at (255, 256) --> at unproject (9.672081, 10.465990, -19.000000) 画面の幅が縦横256なのに、こんな小さな差しか出てきません。 これだとスクリーンは左端〜右端までワールド座標中で約-0.5〜0.5の差でしかないということでしょうか gluPerspective(45.0, (double)w / (double)h, 1.0, 1000.0);はこのようにしております。 スクリーンの点から空間の点を知る方法を教えてください
153 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:54:22 ] スクリーン上の点を空間で表すと直線になるけどな。
154 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:06:50 ] すみません。仰ってることがわからないです 上のことは、私の勘違いだったかもしれません 画角を90度にして、画面も正方形で作ってみました そうすると距離が1離れているスクリーンは 左端が-1 右端が+1になりますねよね。 それで正しい値だと認識できました。
155 名前:デフォルトの名無しさん [2007/06/17(日) 17:02:30 ] >>152 とりあえず gluUnProject(i, j, 0, model, proj, view, &x1, &y1, &z1); ↓ gluUnProject(i, j, z1, model, proj, view, &x1, &y1, &z1); じゃねぇかね?
156 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:41:26 ] ワールド座標中でのスクリーンが欲しいときは0にすると以前教えていただきまして z1だとこの場合スクリーンより奥の値になりますよね? ここまでやって、スクリーンに向かって光線を打てると思ったのですが詰まりました…はぁ…
157 名前:デフォルトの名無しさん [2007/06/17(日) 19:42:18 ] >>156 >ワールド座標中でのスクリーンが欲しいときは0にすると以前教えていただきまして はっきりいって間違ってるよ
158 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:43:06 ] >>152 >これだとスクリーンは左端〜右端までワールド座標中で約-0.5〜0.5の差でしかないということでしょうか そーゆーコトです。(gluPerspectiveに与えたwとhの比にもよりますが) >gluPerspective(45.0, (double)w / (double)h, 1.0, 1000.0);はこのようにしております。 とのことなので、これはglFrustumでいえば const double t = tan(22.5 / 180 * M_PI); glFrustum( -1.0 * t * w / h, 1.0 * t * w / h, -1.0 * t, 1.0 * t, 1.0 1000.0 ); に相当しますから、nearクリック面の横幅はw/h*2tan22.5度、となります。 >スクリーンの点から空間の点を知る方法を教えてください 求められているように思えますが・・・。
159 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:54:32 ] 多分152さんは、前スレの915〜あたりの人ですよね。 もしいまだにnearクリップ面のことを「スクリーン」と呼んでるのなら、早く直した方がいいですよ。 独自の用語を使われると、意志の疎通以前に混乱を招きますので。 >>157 字面だけみると完全に間違ってる(笑)んですけど、 その辺の事情は前スレを見ないと分からないかと・・・。
160 名前:140 [2007/06/17(日) 20:18:51 ] ライセンススレ化してすんません。原文読んできました。 スタリンクするものはLGPLの派生物となるが、例外として、 リバエン/改変などの告知をし、完全かつ機械読み取り可能なオブジェクトコードあるいはソースコー ド(どちらかでも可) と一緒にする。 この「オブジェクトコード」がglui.libを指すのであれば大丈夫ですな
161 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:37:56 ] >>159 さん その節はありがとうございました。 一度他のことで時間を割かれてしまって、もう一度着手しているところです。 ご指摘もありがとうございます。手探りでやっている状態で、、、 上記の方法で、視点位置と、nearクリップ面とを結ぶ直線(レイ)を出そうとして レイを単位ベクトルにしていざ使おうと思ったのですが 今度はそれと、立方体の面との交点の算出に苦戦しています。 ここはOPEN-GLじゃない、数学のレベルの問題なので、どうにかして頑張ります。 今日は帰れそうになさそうです(´;ω;`)
162 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:00:36 ] >>160 >この「オブジェクトコード」がglui.libを指すのであれば大丈夫ですな 違う、アプリケーションを構成する.oファイル全てなので、 公開しないコードの部分も.oは公開しないといけない。 つまり、コードは無くても良いけどLGPLの部分が置き換え可能な状態で無ければいけない。
163 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:28:27 ] >>161 交差判定は面倒ですね〜。 こことか参考になるかもですよ。 ttp://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%B8%F2%BA%B9%C8%BD%C4%EA_3DCG 日曜なのに大変そうですね。 がんばれ〜。・ω・`)ノシ
164 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:30:40 ] >>162 が正解 LGPL 部分を自分で改変したバイナリで置き換えられる様に、.o を入手可能にする 必要がある。派生物の所持者が入手可能であれば良いから、世界に向けて公開する 必要は無いよ。
165 名前:140 [2007/06/17(日) 22:45:24 ] >>162 ,164 両氏ともありがとうございました。 オブジェクトコード=.oだったんですね(;゚Д゚) なるほど、派生物所持者が再びリンクできるようにってことですね。 >世界に向けて公開する 必要は無い バイナリといえど、ちょっと抵抗があったので安心しました。 重ね重ね感謝ですヽ(´▽`)/
166 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 20:36:52 ] >>163 どうにか無事にレイと面の交差判定、できました! あとはそれの効率化で頑張ります。 本当にありがとうございました!
167 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:15:38 ] c++でもextern"C"で頑張って、 dllやらsoを使うのが簡単な気がする。
168 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 04:46:17 ] 光源の明るさを0にして描画しても真っ暗になりません。 具合的には、 GLfloat lightAmb[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat lightDif[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat lightSpe[4] = {0.0f, 0.0f, 0.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDif); glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpe); GLfloat mateAmb[4] = {1.0f, 1.0f, 1.0f, 0.0f}; GLfloat mateDif[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat mateSpe[4] = {0.0f, 0.0f, 0.0f, 0.0f}; glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mateAmb); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mateDif); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mateSpe); にして描画すると、薄暗く (RGB=0.1, 0.1, 0.1 ぐらいの暗さ) 描画されてしまいます。 原因がわかる人おりますでしょうか? 環境は、GeForce 7900 GS です。
169 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 10:16:44 ] GL_LIGHT_MODEL_AMBIENT
170 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 11:42:49 ] >>169 ありがとうございます。原因わかりました。 デフォルトで環境光 0.2 が加わるなんて、知りませんでした。
171 名前:yd [2007/06/25(月) 19:05:50 ] だれかいますか?
172 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:09:03 ] (@u@ .:;)ノシ
173 名前:yd [2007/06/25(月) 19:20:10 ] こんち
174 名前:yd [2007/06/25(月) 19:21:49 ] (x, y) = (0 + 0.557 * cos( 90 ), 0 + 0.557 * sin(90)); をFor文で回したいんですけどうまく逝きません;;
175 名前:yd [2007/06/25(月) 19:31:25 ] 円上にポイントを64個、均等に置きたいんですm(__)m
176 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:13:16 ] これはひどいマルチ
177 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:16:28 ] >>175 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();
178 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:55:22 ] 足し算は駄目だろ…
179 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:13:33 ] >>178 はあ?
180 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:31:45 ] >>179 誤差が蓄積するからって言う意味だろ。
181 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:45:55 ] >>180 でも差は、6.283185-6.283182=0.000003だけどな。
182 名前:yd [2007/06/26(火) 04:01:08 ] ありがとうございます。早速試してみますm(__)m