くだすれOpenGL(超初心者用)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/11/06(日) 01:29:26もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
OpenGL使いが優しくコメントを返しますが、
お礼はOpenGLの布教と初心者の救済をお願いします。
OpenGL Home Page
http://www.opengl.org/
0002デフォルトの名無しさん
2005/11/06(日) 01:35:320003デフォルトの名無しさん
2005/11/06(日) 01:36:320004デフォルトの名無しさん
2005/11/07(月) 14:29:40具体的にどこがどうわからんのか書かないと、答えようが無いよ。
物体が真っ黒なのか、色はつくけど光のあたり方がおかしいのか。
0006デフォルトの名無しさん
2005/11/09(水) 15:17:230007デフォルトの名無しさん
2005/11/12(土) 03:50:56嘘付くなボケ
0008デフォルトの名無しさん
2005/11/12(土) 12:22:400009デフォルトの名無しさん
2005/11/13(日) 23:16:20フン、どうせ法線を設定し忘れたか
glEnable(GL_LIGHT*)書き忘れてるんでしょ!
図星でしょ?それくらい分かるわよ!いつもあなたの事見てるから…
>>6
べ、べつにOpenGLなんかどうなってもいいんだから!
0010デフォルトの名無しさん
2005/11/20(日) 15:17:440011デフォルトの名無しさん
2005/11/20(日) 15:23:470012デフォルトの名無しさん
2005/11/20(日) 15:42:08もっとも説明しようもないが
それ系のいまいちなライブラリ漁るか、高いエンジン買うか、
自分でAdaptorパターンあたりで実装するしか無いんじゃね
0013デフォルトの名無しさん
2005/11/20(日) 21:52:240014デフォルトの名無しさん
2005/11/22(火) 15:20:32一定時間ごとに関数を呼ぶような命令か時間を計る命令はないでしょうか?
0015デフォルトの名無しさん
2005/11/22(火) 23:50:39glutTimerFuncという関数を使って、一定時間ごとに呼びたい関数を
指定すればよいと思います。
0016デフォルトの名無しさん
2005/11/23(水) 07:34:50使い方を調べているとglutTimerFuncのほかにglutIdleFuncも見つけました
比べてみてglutTimerFuncが最適でした
ありがとうございます
0017デフォルトの名無しさん
2005/11/24(木) 20:40:17どうにかして下さい。
概念的に正しいの?歴史的な理由でもあるの?
0018デフォルトの名無しさん
2005/11/25(金) 00:46:57別に物理的に光がそういう振る舞いをするわけではなく
それっぽく見えるような計算式で近似しているだけ。
近似の仕方には色々あるのだから
出来るだけ色々な設定が出来るAPIが良いと考えたんだろう。
同じ値で使いたければ同じ値を設定すればいい。
0019デフォルトの名無しさん
2005/11/25(金) 00:51:040020デフォルトの名無しさん
2005/12/02(金) 09:29:47立方体とそのエッジを書いたとき、エッジのところどころが面に
隠れてしまって、点線に見えてしまいます。
陰面処理は行い、データ上同じ座標になるエッジを面より前に
表示するにはどのような処理をすればいいのでしょうか。
0021デフォルトの名無しさん
2005/12/02(金) 20:45:55002220
2005/12/05(月) 10:03:35ありがとうございました。できました。
glPolygonOffsetというのは、ポリゴンとポリゴンが重なるとき初めて影響が
出てくるものであって、ポリゴンと線分(GL_LINES)ではダメなのかと思っていました。
アドバイスを頂き、ダメモトでやってみたところ、あっさりと実現できました。
本当にありがとうございました。
0023714
2005/12/10(土) 01:31:32やはりみなさん自分で作っていたりするんでしょうか。
0024デフォルトの名無しさん
2005/12/10(土) 13:17:55DFXとVRMLならライブラリがあるぞ。
0025デフォルトの名無しさん
2005/12/11(日) 00:25:53OpenGLには備わってナイYO
自作するか、他人の作ったライブラリーかな
002623
2005/12/11(日) 03:27:59ライブラリ探してみます
0027デフォルトの名無しさん
2005/12/17(土) 15:52:27何処かに解説してるサイトはないですか?
0028デフォルトの名無しさん
2005/12/25(日) 23:49:59うーん。ここぐらいしか・・・
http://www.4dm.org/D/dprog2.htm
つーか、ヘッダーさえあれば、C言語とかのページ参考にしていけるんじゃね?
0029デフォルトの名無しさん
2005/12/25(日) 23:50:420030デフォルトの名無しさん
2005/12/25(日) 23:52:27http://nehe.gamedev.net/
0031デフォルトの名無しさん
2005/12/25(日) 23:58:23openGL+GLUTで効果音使おうと思ったのですが、使えない・・のですよね?
クロスプラットフォームならSDL等。
依存ならWIN32APIとかdirectXとかになるのでしょうか?
0032デフォルトの名無しさん
2005/12/26(月) 00:09:40OpenALって手もあるけど、なにぶん資料が少ない
0033デフォルトの名無しさん
2005/12/26(月) 00:20:55OpenALって知らなかったです。
しかし、SDLはかなり昔ちょこっと使ってた事があるので、SDLにします。
ありがとうございました。
0034デフォルトの名無しさん
2005/12/27(火) 10:54:48どうしてもうまくいかないのです・・・
カメラの回転がどうしても原点中心におこなわれてしまうのですが、どうすればいいのでしょうか?
0035デフォルトの名無しさん
2005/12/27(火) 13:58:38003634
2005/12/27(火) 14:06:30LookAtにもう一回チャレンジしてみます
003734
2005/12/27(火) 15:52:540038デフォルトの名無しさん
2005/12/27(火) 23:39:090039デフォルトの名無しさん
2005/12/28(水) 02:26:38ちょwwww
それ初耳だが凄いw
マジだったらあの速度で動くGLは神だww
0040デフォルトの名無しさん
2005/12/28(水) 21:30:52方法があるのでしたら教えていただけないでしょうか?
0041デフォルトの名無しさん
2005/12/29(木) 02:26:34行ないたいのですが、どうもうまくいきません。
張りたい部分のところで glBindTexture, glEnable(GL_TEXTURE_2D) を行なって、張りたくないところで
glDisable(GL_TEXTURE_2D)しているのですが、これって間違ってますでしょうか?
もしかして EnableDisable は全体に影響してしまう?
0042デフォルトの名無しさん
2005/12/29(木) 11:47:25PrintScreen KeyもしくはglReadPixels()
>>41
それで良いが、glBegin() glEnd()の間でやっちゃダメ。
0043デフォルトの名無しさん
2005/12/29(木) 17:52:23Z軸に沿う方向に変な黒い丸が表示されてしまうのですが回避できないのでしょうか?
004441
2005/12/29(木) 23:22:48glBeginとglEndの間でやっちゃってました…。
修正したら動きました。どうもでした。
0045デフォルトの名無しさん
2005/12/29(木) 23:26:020046デフォルトの名無しさん
2005/12/30(金) 00:47:20シェーダでやってもいいし、事前に計算して頂点カラーなどに入れても良い。
処理速度に気を使うなら、点光源を大量に使うことは、たとえ出来たとしてもお勧めしない。
0047デフォルトの名無しさん
2005/12/30(金) 02:24:25http://mailsrv.nara-edu.ac.jp/~asait/open_gl/opengl.htm
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
0048デフォルトの名無しさん
2006/01/02(月) 02:48:00ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040321
ここ見てやっとクォータニオンの使い方が分かった気がする。
いや、数学的な事とかはチンプンカンプンだけど、俺にはこれで十分。
0049デフォルトの名無しさん
2006/01/03(火) 05:03:47GL_LINE_LOOPでglArrayElement3回ずつ呼ぶより
GL_TRIANGLESでglDrawElementsをglPolygonMode(GL_FRONT,GL_LINE)で
呼んだ方が早いじゃないですか><
こんなテクもっと教えて^^
0050デフォルトの名無しさん
2006/01/07(土) 18:33:57ttp://www.is.oit.ac.jp/~whashimo/server/~whashimo/Article/OpenGL/
0051デフォルトの名無しさん
2006/01/14(土) 03:25:13後からglGetDoublev(GL_MODELVIEW_MATRIX)で取得した値から
取り出せないでしょうか
0052デフォルトの名無しさん
2006/01/14(土) 07:21:13視点(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を正規化した値と
同じになるとは限りません。
005352
2006/01/14(土) 07:23:240054デフォルトの名無しさん
2006/01/14(土) 11:48:31逆行列で視点の位置等でてきました
ありがとうございます
0055デフォルトの名無しさん
2006/01/14(土) 18:41:250056デフォルトの名無しさん
2006/01/20(金) 11:03:19内側からlookatでグリグリして見たんですけど
redqeen2で同じ座標でレンダリングしたと比べたら、球の半径を数万とかにしないと
同じような画像にならないんですけど、でもまだ微妙にずれがあって迷ってます。
こういうのって半径を無限として考えて見える範囲だけ切り出して
平面に貼り付けたほうがいいんでしょうか?
計算方法が思いつきません・・・
0058デフォルトの名無しさん
2006/01/21(土) 00:25:00High Dynamic Range Imagingのこと?
だったら、背景画像は本質とは関係無いじゃない。
でも背景は6枚のテクスチャにして立方体に貼るようにするわね。
Image Based LightingでCubeMapを使うのにも
そのまま使えるから、そうした方がいいんじゃないかしら…
って、べ、別に私だったらそうするってだけで、
あんたなんかにアドバイスしてるわけじゃないんだからねっ!
005956
2006/01/21(土) 02:19:33redqueen2とかでHDRI画像使った時みたいに背景が写って
マウスでグリグリさせて見たかったんです
HDRIで環境マッピングさせたかった訳じゃなかったんですけど
CubeMapでググッたらなんか方向性見えてきました^^
0060デフォルトの名無しさん
2006/01/22(日) 00:22:48( 人_____,,) ブツブツ・・・ヤマト・・・
|ミ/ ー◎-◎-)
(6 (_ _) ) カタカタカタ
| ∴ ノ 3 .ノ ______
ヽ、,, __,ノ | | ̄ ̄\ \
/ 粘着 \.____| | | ̄ ̄|
/ \_ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
0061デフォルトの名無しさん
2006/01/22(日) 14:10:13○ ○ ○ ○ ○
/-l--- /-l--- /-l--- /-l--- /-l---
/┐ /┐ /┐ /┐ /┐
2,あ、押して、押して
○/ ○/ ○/ ○/ ○/
/X /X /X /X /X
/┐ /┐ /┐ /┐ /┐
3,あ、払って、払って
○./" ○./" ○./" ○./" ○./"
/メ /メ /メ /メ /メ
/┐ /┐ /┐ /┐ ./┐
4,最後に斬る w パーン
○ / ○ / ○ / ○ /○ /
/× /× /× /× /×
/┐ /┐ /┐ /┐ /┐
5,志村ー!
○ ○ ○ ○"゚・ = \○# =
/|ヽ /Φヽ /|ヽ /⌒/⌒ = X\ =
| 人 | ∧ /人 ⌒└ = ノ└ =
これをopenglでやりたいのですが
0062デフォルトの名無しさん
2006/01/23(月) 09:23:43みょーんって伸びるような弾性体をつくりたいのですが
どういった方法があるのでしょうか?
0063デフォルトの名無しさん
2006/01/23(月) 11:27:170064デフォルトの名無しさん
2006/01/23(月) 18:01:56サンクス
0065デフォルトの名無しさん
2006/01/24(火) 21:57:40氏ねよwwwww
氏んじやったほうがいいよwwwwwww
0066デフォルトの名無しさん
2006/02/06(月) 07:14:22自分は23ではないですが、例えばどこにありますか?
ttp://www.ccfactory.com/index.html
こんなんなら見つけられたんですが、Cのソースコードに変換とかじゃなくて
動的に読み込むものが欲しいです
0067デフォルトの名無しさん
2006/02/06(月) 14:54:00STL形式ならここにあった。
http://www.sofix.co.jp/weblog/archives/cat8/opengl/index.html
試してはいません。
0068デフォルトの名無しさん
2006/02/06(月) 15:11:25遅レスだが、円はある。gluDisk 参照。
0069デフォルトの名無しさん
2006/02/06(月) 23:16:56STLのがあるのか
0071デフォルトの名無しさん
2006/02/07(火) 11:00:09ググレカレー
0072デフォルトの名無しさん
2006/02/07(火) 21:44:380073デフォルトの名無しさん
2006/02/07(火) 23:56:470074デフォルトの名無しさん
2006/02/08(水) 00:39:30ありがとうございます
0075デフォルトの名無しさん
2006/02/14(火) 20:57:11OpenGLはどこのサイトがオススメでしょうか?
0076デフォルトの名無しさん
2006/02/15(水) 01:23:05http://wisdom.sakura.ne.jp/system/opengl/
GLUTによる「手抜き」OpenGL入門
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
MFCでやりたいなら、
OpenGL
http://www.katolab.ee.kagu.sut.ac.jp/programing/opengl.htm
0077デフォルトの名無しさん
2006/02/27(月) 01:54:21ttp://www.nbrains.net/php/pukiwiki/index.php?link%BD%B8%2F3D%20Model%20Data
0078デフォルトの名無しさん
2006/02/28(火) 17:58:59WindowsXPで、MFC+OpenGLでプログラムを作成しています。
SDIのViewにOpenGLで描画しています。
ウィンドウをディスプレイの右端に持って行き、ウィンドウの半分が外側に
はみ出す形にします。
その後、ウィンドウの左側の境界線をつかみ、左側に移動させます。
つまり、ウィンドウサイズを大きくします。
ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
が再描画されていません。
ウィンドウが全部見えている状態でのサイズ変更ではきちんと描画されます。
パソコンによってきちんと描画できたり、できなかったりします。
というより、ディスプレイドライバーの違い、能力の違い?のようにも思われます。
OSの画面プロパティ - 設定タブ - 詳細設定ボタン - トラブルシューティングタブ
の、ハードウェアアクセラレータのスライダーを最大にすると、描画されないパソコン
でも表示されるようになります。
しかし、今度はマウスカーソルの軌跡を残すように設定している場合に、
マウスカーソル位置の再描画がうまく行われません。
マウスカーソルを囲む矩形範囲で再描画されなかったり、ズレたりします。
他のOpenGLを利用しているアプリを使ってもこのような現象は起きません。
自作したプログラムのみで起きるようなので、なにか回避策があるように
思います。
どなたかご存知ありませんか?
0079デフォルトの名無しさん
2006/02/28(火) 22:36:150080デフォルトの名無しさん
2006/03/01(水) 17:14:08OnDraw()で描画するようにしていれば
>ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
>が再描画されていません。
このときに画面が無効化されてOnDraw()が呼ばれて再描画されるはず。
008178
2006/03/02(木) 13:16:23書いてなかったのですが、きちんとOnDrawには飛んできています。
ビューポート、視体積、その他描画に関連することは、通常通りのパスを通過しています。
ウィンドウサイズも、画面外の領域を含んだサイズが取得でき、それをビューポートに設定しています。
それでもなお表示されない領域が出てきます。
追加調査で、だいたいどのパソコンでも自作のプログラムだと黒い部分が出ることが分かりました。
設定は >>78 の通りで、ディスプレイの設定を触るとそうなります。
念のためCView(の派生ですが)のOnSizeで、OpenGLの再表示を行っていますが、結果は変わりません。
この場合も、サイズ変更時にOnSizeに飛んできて、再表示まで行っているのは確認しています。
長くなりますが、もう少しだけ補足させてください。
ウィンドウをすべて見える位置まで、黒くなった部分をひきずり出してから、ほんの少しサイズ変更をして
やると、黒い部分の大きさに関わらず、再表示はクライアント領域すべてに広がります。
黒い部分は、描画時のデバイスコンテキスト領域が削られているような感じを受けます。
OnSize時にInvalidateを呼んでもダメでした。
現在、OnDrawが飛んできたとき、引数のDCを利用せず、OpenGL関係の描画を行う関数内にて
目的のCViewからGetDCしたものを利用しています。
一度、OnDraw時のものを利用するように修正しましたが、そのときは状況は改善されませんでした。
ディスプレイの設定で結果が変わってくるので、ウィンドウが画面外に出たときに、再描画の領域を
小さくして、表示速度を上げるような処理が入っているように思います。
そのような処理が入っていたとしても、クライアント領域全体を再描画するようなデバイスコンテキスト
を強制的に取得するような手段はありませんか。
0082デフォルトの名無しさん
2006/03/02(木) 16:48:57glutCreateWindow(argv[0]);で画像を描画する為のウィンドウを作りますが、
新たにウィンドウを作るのではなくて、既存のウィンドウに描画部分を
埋め込むことは出来るのでしょうか?
よろしくお願いいたします。
008380
2006/03/02(木) 18:18:53>ウィンドウをディスプレイの右端に持って行き、ウィンドウの半分が外側に
>はみ出す形にします。
>その後、ウィンドウの左側の境界線をつかみ、左側に移動させます。
>つまり、ウィンドウサイズを大きくします。
>ウィンドウを中央に持ってくると、画面の外側にあったクライアント領域
>が再描画されていません。
こちらでも確認しました。
>しかし、今度はマウスカーソルの軌跡を残すように設定している場合に、
>マウスカーソル位置の再描画がうまく行われません。
これも確認しました。
20世紀に納品したもので確認したのですが、このようなバグが存在していたとは驚きです。
この点についてのクレームはきませんでしたので私はとても運がいいです。
つぎにOpenGLにかかわる仕事があるとしたら、上記2点は既知のバグとしておき、
回避不能ということでお客様には納得してもらった上で仕事を請けることにします。
本当にありがとうございました。
0084デフォルトの名無しさん
2006/03/02(木) 19:27:53独自にDCを作ってglMake....だっけをやるとかなんとかちらっとどっかで見た気がする
CreateCompatibleDCでやってみたら?
0086デフォルトの名無しさん
2006/03/10(金) 16:15:32| ̄ ̄ ̄ ̄ ̄ ̄|
| | ̄ ̄| |
| |__| |
|______|
こんなかんじで作って、
内側、外側両方にDrawPixelで画像の表示をしたいのですが、
ビューポートを重ねる?みたいなことはできないのでしょうか。
外側ビューポート作成
外側に画像描画
内側ビューポート作成
内側に画像描画
の順で処理しているのですが、
外側の画像が表示されるだけになってしまいます。
0087デフォルトの名無しさん
2006/03/14(火) 08:56:07返答つかないですね。
初心者なんでDrawPixelが良くわかりませんが、通常の描画でビューポートの重ね合わせ
はできていますので、できるんじゃないでしょうか。
0088デフォルトの名無しさん
2006/03/16(木) 20:38:010089デフォルトの名無しさん
2006/03/16(木) 22:34:55エ ス パ ー 登 場
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
009088
2006/03/16(木) 23:09:250091デフォルトの名無しさん
2006/03/17(金) 02:07:55そのゲームを作った奴に聞けよ。
市販のゲームならマニュアルに書いてあるだろ。
0092デフォルトの名無しさん
2006/03/17(金) 02:28:290093デフォルトの名無しさん
2006/03/17(金) 08:18:16ああ、わからないよ。
OpenGLを使ったゲームがどの環境で動くかなんてそのゲームを作った奴にしかわからないよ。
0094デフォルトの名無しさん
2006/03/18(土) 11:04:28ハッキリ言ってやる。
スレどころか板違い、ゲームの名前を出してPCげーか同人げーで訊け
0095デフォルトの名無しさん
2006/03/18(土) 12:06:000096http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:32:59TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0097デフォルトの名無しさん
2006/03/32(土) 22:55:55対処法をご存知の方、いらっしゃいませんか?
WinXP-VC++2003の環境で、処理としては、
プライマリスレッド
ウィンドウ、OpenGL初期化>データ読み込みスレッド起動>メインループ
データ読み込みスレッド
PNGをロードして展開>OpenGLのテクスチャ生成>データ読み込み完了を通知するbool値をtrueに
メインループ
データ読み込み完了を通知するbool値がtrueなら描画処理を呼び出す
という感じになっています。
データ読み込みが完了するまでメインループに突入しないように変更してもダメで、シングルスレッドに戻すと正常に描画されます。
OpenGLのテクスチャはスレッド間で共有されない、ということでしょうか?
0098デフォルトの名無しさん
2006/04/12(水) 04:28:06アプリケーションによるものかを区別してるはず
スレッドが違えば当然インスタンスが違うので別のアプリケーション操作として認識してるのでしょ
回避策は良く知らない
0099デフォルトの名無しさん
2006/04/12(水) 04:30:26スレッドで読み込みとテクスチャ用の加工をして
そのデータを引き受けてメインスレッドで描画する前にテクスチャ作ればいいだけじゃないか?
0100デフォルトの名無しさん
2006/04/12(水) 23:52:00スレッドが違えばインスタンスが違うかどうかは実装依存では?
シリアライズする限りは大丈夫だというのを読んだ時がある気はするが、
どこで見たか忘れた。
OpenGLのコマンド呼び出し自体はシングルスレッドで処理するのが安全だろうな。
0101デフォルトの名無しさん
2006/04/13(木) 00:00:55wglShareLists()について調べてみるが吉
0102デフォルトの名無しさん
2006/04/17(月) 21:46:00回答ありがとうございます。
OpenGLはスレッドごとに動作を管理しているから、
wglShareList()を使ってスレッド間でデータを共有してやれ、という事ですね。
0103デフォルトの名無しさん
2006/05/02(火) 03:38:07窓から中を覗けるようにしたいんで、壁に任意形状の窓の穴を開けた様にしたいんだけど
プログラム的にはどうするのか、教えて下さい。
オフスクリーンレンダリングとか使ったりすんのかな?
三角形や四角形にメッシュ切ればなんとかなるかなと思って、幾何学の本やら
ドローネ三角の分割方法とか読んではいるんだけど......。
みんなは、自前で穴あけたりメッシュ作成するときはどんな方法使ってるん??
0104デフォルトの名無しさん
2006/05/02(火) 05:27:45超初心者なのに頭が硬いなあ。
発想の転換をしてみれば?
0105デフォルトの名無しさん
2006/05/02(火) 16:03:45すいません。色々考えてみたんですが、今いち解決策が浮かばないです。
一枚の灰色の壁に、三角形や四角形または菱形や台形の窓が数個配置してあって、
その窓部分を全部くり抜きたいんですが、OpenGLの命令で重ね合わせると透明になっちゃう
みたいな命令があるんでしょうか?
0106デフォルトの名無しさん
2006/05/02(火) 17:29:39つ glEnable(GL_ALPHA_TEST)
0107デフォルトの名無しさん
2006/05/02(火) 18:10:09>>106
ありがとうございました。
GL_ALPHA_TESTでググったところ、そのものずばりなものがありました。
http://marina.sys.wakayama-u.ac.jp/〜tokoi/?date=20040916
本当にありがとうございました。精進致します。
0108デフォルトの名無しさん
2006/05/12(金) 14:42:270109デフォルトの名無しさん
2006/05/12(金) 19:25:400110デフォルトの名無しさん
2006/05/12(金) 23:36:00OpenGL って訳ではないけど Collada はどう?
0111デフォルトの名無しさん
2006/05/15(月) 02:53:10http://www.sgi.com/company_info/newsroom/press_releases/2006/may/sgi_reorg.html
SGIが破産
どうなっちゃう OpenGL ??
Vistaでの問題 と これで八方ふさがりだ
0112デフォルトの名無しさん
2006/05/15(月) 03:34:48SGIはニューヨークのマンハッタン破産裁判所に、米連邦破産法第11条の適用を申請した。
申請書類によると、負債額は6億6430万ドル(約742億円)。
http://cnn.co.jp/business/CNN200605090013.html
0113デフォルトの名無しさん
2006/05/15(月) 03:38:23Vistaでもひどいもんだし、
OpenGLを使う企業は、もう無いだろうなw
0114デフォルトの名無しさん
2006/05/15(月) 21:03:10pcしか知らない田舎モノw
>>111
1週間遅れのド低脳w
オマイらにはDirectXがお似合い
0115デフォルトの名無しさん
2006/05/16(火) 16:11:06だが、VistaになればDirectXのラッパーでしかないOpenGLは描画スピードが大幅に落ちてしまう。
Vistaになれば、Windows上ではOpenGLは使われなくなるだろう。
0116デフォルトの名無しさん
2006/05/16(火) 16:19:10Vistaでは、OpenGLは低速APIになる
0117デフォルトの名無しさん
2006/05/16(火) 17:27:530118デフォルトの名無しさん
2006/05/16(火) 18:42:35枯れた技術の意味解って言ってる?
0119デフォルトの名無しさん
2006/05/16(火) 22:13:36>>DirectXのラッパー
それうそだから。
DirectX厨必死だなw
0120デフォルトの名無しさん
2006/05/21(日) 01:50:020121デフォルトの名無しさん
2006/05/21(日) 03:04:530122デフォルトの名無しさん
2006/05/21(日) 14:44:34http://tako.s165.xrea.com/upload/trans.cgi?up0041.cpp
SDL + OpenGLを使ってみようとしているのですが、
ポリゴンを描画しようとしても何も表示されません。
どこかおかしいところがあるでしょうか?
言語はVC7.1
環境はXP、RADEON9800PROです
0123122
2006/05/22(月) 12:20:46ポリゴン自体は描画されていたようで、色が黒だったので背景に隠れてしまっていました。
で、色が出なかったのはbyte引数なのにunsigned byteで指定してた・・・
スレ汚しすみませんでした
0124デフォルトの名無しさん
2006/05/23(火) 01:39:24glEnable(GL.GL_LIGHTING)
ってのをつけると
glColor3f(r,g,b,)
で設定したテクスチャが無効化(?)されてしまうと思うんですが
テクスチャとシェーディングを同時に実現することはできないでしょうか?
0125デフォルトの名無しさん
2006/05/23(火) 03:06:12とりあえず「テクスチャ」「シェーディング」「ライティング(LIGHTING)」「頂点カラー」の意味ぐらい調べとけ。
0126124
2006/05/23(火) 05:47:44サーフェスを作成し法線を設定→glEnable(GL.GL_LIGHTING)
で、ライティングによる影が表現されますよね。
そのあと、サーフェスに画像を貼り付けたいと思い、
glColor3f(r,g,b,)でサーフェス頂点に色をマッピングしてみたんです。
そうすると、ライティングの効果が消えて(?)、
ベタッと画像を貼っただけの立体感0のものになってしまったのですが
glEnable(GL.GL_LIGHTING)だと、色情報が無視されてしまうのでしょうか?
0127デフォルトの名無しさん
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は頂点ごとに変更できる。
0129デフォルトの名無しさん
2006/05/31(水) 03:12:420130デフォルトの名無しさん
2006/05/31(水) 03:14:07Vistaでは
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
0131デフォルトの名無しさん
2006/05/31(水) 03:16:34OpenGL 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
0132デフォルトの名無しさん
2006/05/31(水) 08:45:370133デフォルトの名無しさん
2006/05/31(水) 23:26:030134デフォルトの名無しさん
2006/06/04(日) 19:07:22今現在、印刷プレビューや印刷を行う際に、OnDrawの中で、印刷解像度(6000x4000)等の大きさの
BITMAPを用意し、そのBITMAPに描画してStrectBITitsで印刷用のDCに渡して印刷しています。
ですが、BITMAPにレンダリングする際はGPUの恩恵を受けることができなく、CPU依存の描画に
なっているため、印刷プレビューの画面を出力するだけでも5〜10分のレンダリング時間を要して
しまいます。
GPUでレンダリングしたデータをそのまま取ってくればいいのかと思って、glReadPixel命令を
使用しているんですが、glReadPixel命令は、フレームバッファの大きさに依存するらしく、
クライアント画面の大きさ(例えば800x600)のレンダリング領域のデータしか取得できません。
で、結局やりたいことは、GPUでレンダリングした6000x4000等の大きさのレンダリングデータを
全て取ってきたいんですが、方法はないんでしょうか?
よろしくお願いします。
0135デフォルトの名無しさん
2006/06/05(月) 23:29:00同じようなことをやっていた人に話を聞いてみたところ、
Game Programing Gems 2 と 4 にやり方が書いてあったらしい。
片方は、小さいブロックに分けて別々にレンダリングした後、絵をつなげて1枚にする手法。
もう片方は、低解像度の絵をちょっとずつ(1ピクセル未満の幅で)ずらしながら何回もレンダリングして、
それをうまく合成することで高解像度の絵を得る手法。
後者の手法ならアンチエリアシングをかけたような絵になるらしい。
ちなみに、そのGemsを書いた人はNintendo Americaの人で、GAMECUBEで実装したとか。
0136デフォルトの名無しさん
2006/06/06(火) 00:19:31思いっきり3だったorz
0137デフォルトの名無しさん
2006/06/06(火) 00:48:39134です。
何となくそういった手法しかないのかなと考えていたんですが、そういった本があったんですね。
調べてみようと思います。
大変参考になりました。ありがとうございます。
0138デフォルトの名無しさん
2006/06/06(火) 07:55:470139デフォルトの名無しさん
2006/06/06(火) 20:09:070140デフォルトの名無しさん
2006/06/11(日) 01:43:24多用しすぎると処理が遅くなるとかってありますか?
別に、気にしない方がいいのでしょうか?
0141デフォルトの名無しさん
2006/06/11(日) 12:01:46遅くなるかどうかは知らんけど、
スタックが32段しか使えないのは問題になるんじゃないか?
用途にもよるけど。
0142デフォルトの名無しさん
2006/06/11(日) 12:27:48初歩的な質問に対する答えなら、「気にしなくて良い」
それでも気になるなら自分で計測してみる
0143デフォルトの名無しさん
2006/06/11(日) 12:47:57レストンクス
32段しか使えないんですか・・・それは知らなかったです。
まだ、始めたばかりで複雑なプログラムは書けないのでとりあえず気にしないで、
慣れてきたら自分で測定してみようと思いますm(_ _)m
0144デフォルトの名無しさん
2006/06/12(月) 16:49:17それともDirectXでも対してかわらない?
0145デフォルトの名無しさん
2006/06/12(月) 21:10:33Win -> Macと軽くエスパーしつつ答えると
DirectXを直接使うのならMac(最近はMacOSといった方が正確か)への移植は厳しい。
DirectXも他のAPIも利用してWindowsにもMacにも対応しているライブラリを使うのならば簡単。
OpenGLを直接使うのなら描写そのものは書き換えずに済むけど
OpenGLを使えるようにするところ(wglMakeCurrentとか)は書き換える必要がある。
GLUTを使えば他でWin32APIを使っていない限り書き換える必要はない。
0146デフォルトの名無しさん
2006/06/14(水) 16:10:170147デフォルトの名無しさん
2006/06/14(水) 20:53:04Windowsと対比する文脈で「Macで動かす」という表現が出てるから
>>144は多分ハードとしてのMacではなくMacOSの話でしょ。
マカーが全員XP買いに走ってるんならDirectXでもいいだろうけどそうでもないし。
0148デフォルトの名無しさん
2006/06/18(日) 19:15:01スイッチ文でGLUT_KEY_UPで↑、GLUT_KEY_RIGHTで→にはキャラを動かせる事は出来るのですが、
右斜め上になると、方向キーの↑と→を押した時後におした方のアクションを起こしてしまうのですが、
なんとかならないのでしょうか?
キーボードで作る場合は無理なのでしょうか?
0149デフォルトの名無しさん
2006/06/19(月) 15:10:03if(上){ 上を押したとき; }
if(右){ 右を押したとき; }
switchだと
if(上){ 〜 }
else if(右){ 〜 }
という意味になる。
0150デフォルトの名無しさん
2006/06/19(月) 16:49:45glutSpecialFuncでどこ押されたか、
glutSpecialUpFuncでどこ離されたか、を覚えて、
状態によってglutIdleなどの適当なとこでアクションをすればいいんじゃないの。
0151デフォルトの名無しさん
2006/06/19(月) 22:07:532つ同時押しで両方交互に送ってくれるOSってあるのかね。
0152デフォルトの名無しさん
2006/06/20(火) 00:49:350153デフォルトの名無しさん
2006/06/20(火) 00:53:43妙にツボった。
0154デフォルトの名無しさん
2006/06/20(火) 11:14:02glLoadIndetity();
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();
のようにして四角の枠を描画しようとしているのですが、
下のようになぜか左上のドットが欠けてしまいます。
■■
■ ■
■■■
これは何が原因でしょうか?
0155デフォルトの名無しさん
2006/06/20(火) 15:35:080156デフォルトの名無しさん
2006/06/21(水) 02:41:50いろんなサンプルを見るとglutCreateWindow(char *name)で
ウインドウをつくっていますが、このウインドウをつくらずに、
macのapiでつくったウインドウにデータを描画するといったことは出来ますか
(つまり他のソフトに組み込みたいのです)?出来るなら方法を教えてもら
いたいのですが。よろしくお願いします。
0157デフォルトの名無しさん
2006/06/21(水) 04:30:47勿論出来る。Mac の API で作ったウィンドウに OpenGL の絵を描画出来なかったら
Glut を実装出来ないでしょ。
方法は知らんけど、これとかはどう?
ttp://son-son.sakura.ne.jp/mt/blog/2006/04/opengl_cocoa.html
Cocoa 以外でも基本的には一緒だ。
0158デフォルトの名無しさん
2006/06/21(水) 11:07:20ってことは同様に Windows でもコンソールアプリじゃなく、自作の Windowアプリの
なかに描画することはできるのでしょうか?
キーメッセージなどはどうやってくるのでしょうか?
0159154
2006/06/21(水) 11:41:10レスありがとうございます。
自分のウィンドウの大きさは適当な大きさで、
ビューポートの大きさを
glViewport( 0, 0, 100, 100 );
としていました。
それで glOrtho や glViewport の値を
色々いじってみたのですがやはり駄目でした。
ただ座標値を
glVertex2i( 1, 1 );
glVertex2i( 4, 2 );
glVertex2i( 4, 4 );
glVertex2i( 2, 4 );
glVertex2i( 1, 1 );
のようにしてみたら
一応欠けることなく描画されました。
とりあえず当面はこの方法で対処したいと思います。
0160156
2006/06/21(水) 14:20:56返答ありがとうございました。まだよくわかっていませんが、
この返答を糧にがんばってみます。
0161デフォルトの名無しさん
2006/06/21(水) 21:35:57マップの座標を動かせばいいのですか?それともキャラ+カメラの座標wp動かすのですか?
HPの表示とかするつもりなのでどちらが向いてるか教えてください。
0162デフォルトの名無しさん
2006/06/21(水) 21:47:25そゆ質問が出る状況では、まだ無理>3Dのアクションゲーム
0163161
2006/06/22(木) 17:59:08諦めます
0164デフォルトの名無しさん
2006/06/23(金) 02:55:55公式で落としてきたdll,lib,headerをwebなどを参考にしながらインストールし、
プログラムをコンパイルしてみたところ、
"LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。"
表示されて、コンパイルできません。
C:\Program Files\Microsoft Visual Studio 8\VC\libに'winmm.lib'が存在せず、
WEB上で探してみたのですが、見つかりません。WEBの情報をもとに、
DLLから変換しようともしてみたのですが、うまくいきません。
どうすればいいでしょうか?
非常に初歩的な質問で申し訳ありません。
どなたかわかる方いらっしゃいましたら、教えていただけたらと思います。
どうかよろしくお願いします。
0165デフォルトの名無しさん
2006/06/23(金) 03:08:01スレ違いだな。
ヒント:Platform SDK
0166164
2006/06/23(金) 19:17:47「Platform SDK」について調べてみたところ問題は解決いたしました。
スレ違いの質問に対して、親切にもヒントを与えてくださり誠に感謝します。
本当にありがとうございました。
0167デフォルトの名無しさん
2006/06/29(木) 10:22:45これから勉強始めようと思ってるのですが。
0168デフォルトの名無しさん
2006/06/29(木) 15:58:01UNIX系やMac系でも標準API
ただし、Windowsだけに限れば終わったも同然
VistaからはDirectXに命令が変換されて実行されるので6割程度しか速度出ない。
ま、WindowsしかターゲットにしないならDirectXいっときな。
ただWindowsでしか動かせないけどw
0169デフォルトの名無しさん
2006/06/29(木) 23:00:14Vistaから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
0170167
2006/06/30(金) 00:43:29光通信専門なんでWDMと言われると波長分割多重しか思いつきませんが、やっぱ違う・・・な?w
ありがとうございました―。
0171デフォルトの名無しさん
2006/06/30(金) 20:37:50お前が終了なのだ。
0172デフォルトの名無しさん
2006/07/01(土) 01:00:22調べたところ国内サイトで再配布可能と言うところが2つほどあったのですが、
公式には確認できませんでした。
0173デフォルトの名無しさん
2006/07/01(土) 01:14:57glut32.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.
0174デフォルトの名無しさん
2006/07/01(土) 08:50:11glut.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
というエラーがでてきてしまいました。
何がいけなかったのでしょうか?超初心者ですいません
0175デフォルトの名無しさん
2006/07/01(土) 10:41:31No such file or directory
0176デフォルトの名無しさん
2006/07/01(土) 10:53:39よく見てみればOpenGLによる3次元CGプログラミングのサンプルコードか。
俺も最初にOpenGL触った時の本はこれだったな。
エラーが出てるって事は所定のフォルダにないってことだからよくチェックしろ。
ExpressEditionとはちょっと違うかもしれないが、具体的には標準のパスでインストールすると
C:\Program Files\Microsoft Visual Studio 8\VC\include\
ここの中にGLってフォルダを作ってその中に放り込む。
あとPlatformSDKはインストールしたか?ExpressEditionでは別途必要になるぞ。
0177172
2006/07/01(土) 11:22:53ありがとうございます。
見落としてました・・すいません・・・
0178デフォルトの名無しさん
2006/07/01(土) 11:37:37openGLで検索するとアニメーションとかはあるんだけどグラフとかはなくて、
openGL グラフで検索すると商品紹介ばっかりで、目当てのものHITしにくい・・・
0179デフォルトの名無しさん
2006/07/01(土) 12:14:07OpenGLには「グラフを描画する」といった、特定の目的用の機能はついてない。
つまり、OpenGLとグラフは直に結び付いてない。
なので、分けて考えることが出来ると思うよ。
1) OpenGLで何が出来て、何が出来ないのか
2) 「OpenGLで出来ること」を利用してグラフを描くにはどうすればいいか
こんな事を調べたり、考えてみれば良いと思う。
0180デフォルトの名無しさん
2006/07/01(土) 14:02:07ありがとうございます
でも今度は
LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。
ってのが出てきちゃったんですが・・・・
0181デフォルトの名無しさん
2006/07/01(土) 15:14:080182デフォルトの名無しさん
2006/07/01(土) 17:18:13PlatformSDKはインストールするだけで良いんですよね?
それでもエラーが消えなくて
0183デフォルトの名無しさん
2006/07/01(土) 17:46:52なかなかネット検索で見つからないのはそれが原因ですか・・・
GL_TRIANGLEとか使いまくってなんとか形には出来ました
恐ろしく不恰好ですがorz
また問題発生したらよろしくお願いします
0184デフォルトの名無しさん
2006/07/01(土) 17:48:22Tesselatorに丸投げしちまえばいいじゃん。
0185デフォルトの名無しさん
2006/07/01(土) 18:24:58分かりやすく初心者にとって良い本だとは思いますが、重要な所をかなり端折って書かれてるような気がします。
一通り読み終えたら別の本に移ろうと思いますが、程良いステップアップになるオススメの本あったら教えて下さい。
0186デフォルトの名無しさん
2006/07/01(土) 18:57:29端折ってるなんて前書き読めばわかるだろうに。
もし網羅的にやるんなら赤本でもどうぞ。
0187デフォルトの名無しさん
2006/07/01(土) 21:59:46つか性質が全く異なる本勧めてどうする。
0188デフォルトの名無しさん
2006/07/01(土) 22:52:13別の本に移るっていってるでしょ?
むしろ同じような代物勧めてどうするの?
0189デフォルトの名無しさん
2006/07/02(日) 09:08:190190デフォルトの名無しさん
2006/07/02(日) 18:16:59164ですが、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ってたのしいですね!!
0191デフォルトの名無しさん
2006/07/06(木) 09:16:130192デフォルトの名無しさん
2006/07/06(木) 11:25:34今を目一杯満喫するがいいサ
0193デフォルトの名無しさん
2006/07/11(火) 18:17:56塗りつぶされた三角形をかいてから線描の三角形を描くのでしょうか?
一発でできませんよね?
0194デフォルトの名無しさん
2006/07/11(火) 23:10:43そして、その関数をどうするかって話だじぇ
0195デフォルトの名無しさん
2006/07/12(水) 00:26:24それを(0〜n1, 0〜n2)にする方法はどのようにすればよろいしいの。
0196デフォルトの名無しさん
2006/07/12(水) 00:28:170197デフォルトの名無しさん
2006/07/12(水) 00:28:350198デフォルトの名無しさん
2006/07/12(水) 13:20:14好き勝手な (x0,y0)-(x1,y1) で使っていますけど。。。
あほな例題が多いのが欠点ですね。。日本語のHPは; (-1,-1)-(1,1) だと思いこんでいる。。
0199デフォルトの名無しさん
2006/07/12(水) 18:23:24glOrtho() あたりを調べてみる
0200デフォルトの名無しさん
2006/07/13(木) 14:35:55ありがとう、できました。
windowのサイズで(例えば、640x480)とかで座標を指定するのは
一般的でないのですかね?
あと、z軸っていうのはこう言ったときどう指定しているのでしょうか
(よくわからなかったのでそのまま-1〜1にしましたが)?
0201デフォルトの名無しさん
2006/07/13(木) 16:22:190202デフォルトの名無しさん
2006/07/13(木) 20:38:19glTexSubImage2Dって
対象のテクスチャをどうやって指定するの?
0203デフォルトの名無しさん
2006/07/13(木) 20:52:20昔見たようなレスだがOpenGLにそんなもんない。
>>202
現在バインドされているテクスチャが対象。
0204202
2006/07/13(木) 21:02:21サンクス
0205デフォルトの名無しさん
2006/07/14(金) 05:44:09glVertex2f(x1, y1);
glVertex2f(x2, y2);
glVertex2f(x3, y3);
glVertex2f(x4, y4);
glEnd();
で囲まれた部分を塗りつぶすにはどうしたらいいんですか?
0206デフォルトの名無しさん
2006/07/14(金) 19:31:590207デフォルトの名無しさん
2006/07/15(土) 01:22:14そうでなくて、GL_LINE_LOOPだと最初と最後が繋がりますよね。
そうしたら、値によっては四角形ではなくて蝶々だったりリボンのような三角形を
二つ向かい合っているような図形になるんですよ。
GL_POLYGONで塗りつぶしすと違う形になるのです。
つまり上の図形を枠に内面を塗り潰したいです。
だれか教えて下さい。よろしくお願いします。
0208デフォルトの名無しさん
2006/07/15(土) 08:11:14GL_POLYGONは凸状のねじれの無いポリゴンのみ正確に描ける。(3角形に分割している)
大体リボンの形は4角形では無い。(一枚の紙(4角形)をどうねじってもリボンにはならない)
ねじれる可能性があるなら、自分で2つの領域に分けてください(交点を求める)
4点を順にa,b,c,dとするとdot( cross( ab, ac) , corss( ac, ad ) )が負ならねじれてるのかな。(嘘かも)
そんな感じでがんばってください。
0209デフォルトの名無しさん
2006/07/15(土) 12:14:241.三角形abdの領域を1で埋める。
2.三角形bcdの領域を反転する。
3.1で埋められている領域に色を塗る。
とかやればできるかな?
ステンシルってそんなふうに使えるのかな?よく知らんけど。
0210デフォルトの名無しさん
2006/07/17(月) 00:56:08面白いけどちょっと境界が怪しそうだね
と思ったら赤本に似たようなの載ってた
0211デフォルトの名無しさん
2006/07/17(月) 08:50:460212デフォルトの名無しさん
2006/07/22(土) 10:19:41どこから調べればいいか分かりません。
何か糸口になるようなヒントをいただければありがたいです。
0213デフォルトの名無しさん
2006/07/22(土) 14:54:370214デフォルトの名無しさん
2006/07/22(土) 20:41:520215デフォルトの名無しさん
2006/07/25(火) 06:33:06ここの一番下にあるサンプル動かしたらCPU使用率がずっと100%になるんですが
何処が原因なんでしょうか
0216デフォルトの名無しさん
2006/07/25(火) 18:47:390217デフォルトの名無しさん
2006/07/25(火) 23:16:37開発環境はXP-VC++2003です。
vcのlibフォルダにopengl32.libなどは入っています。
以下のようなエラーが出ます。
test error LNK2019: 未解決の外部シンボル __imp__glClear@4 が関数 "void __stdcall display(void)" (?display@@YGXXZ) で参照されました。
test fatal error LNK1120: 外部参照 16 が未解決です。
0218デフォルトの名無しさん
2006/07/25(火) 23:23:500219デフォルトの名無しさん
2006/07/25(火) 23:25:58それも試しました
0220デフォルトの名無しさん
2006/07/26(水) 10:06:33その球の後ろに何もない状態なら普通に表示されるのですが、後ろに物を置くと穴が開いてしまいます。
原因分かる方、ご教授お願いしますm(_ _)m
0221デフォルトの名無しさん
2006/07/26(水) 16:11:58だけだと可哀想なのでもうちょっとヒント
Zバッファによる陰面消去は、透明ありだといろいろ問題が発生する
対象物をZソートしてみ
0222デフォルトの名無しさん
2006/07/27(木) 08:47:25調べてみたのですが、Zソートは陰面消去の一つの方法という事みたいですが、
これをどうopenglで表現するのか・・・もう少し調べてみます。。
0223デフォルトの名無しさん
2006/07/27(木) 12:15:47非透明を全部描いてからデプスバッファを書き込み禁止にして半透明を描けばokになる場合もあるかと
0224デフォルトの名無しさん
2006/07/27(木) 13:50:17glDepthMask(GL_FALSE)で無効化してから不透明を書いても、やはりダメでした。。
やりたいことは、不透明な物の周りに不透明な球をいくつか置きたいです。
0225223
2006/07/27(木) 15:31:01glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
でうまくいくとかいう話ではない?あとは球の裏向きポリゴンのカリングとかかな...
でも不透明な周りに不透明で重なりあうなら、正確にはZソートしないとダメかもね。
が、glDepthMask(GL_FALSE)で穴が開くのはそれはそれで変だけど。
0226デフォルトの名無しさん
2006/07/27(木) 15:46:21球の裏向きをカリングするようにしたら、正確に表示されるようになりました。
以前ポリゴンを両面化したものを表示しようとしたら筋が入ったので、
それも関係しているのでしょうかね。。
みなさん、親切にご回答いただきありがとうございましたm(_ _)m
0227デフォルトの名無しさん
2006/08/01(火) 16:38:30glViewport(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.の範囲で描画しないとダメなのでしょうか?
0228デフォルトの名無しさん
2006/08/02(水) 00:48:05マトリクスによる座標変換の意味が分かってないだろ。
0229デフォルトの名無しさん
2006/08/02(水) 20:26:00あれいいの?
OpenGL関連の書籍って数少ないからどれ買うか迷う・・
0230デフォルトの名無しさん
2006/08/02(水) 21:15:27いうなればDCソフトみたいなもんだ。
0231デフォルトの名無しさん
2006/08/25(金) 07:14:50どっちが描画早いですか?
あほっぽい質問ですいません...
0232デフォルトの名無しさん
2006/08/25(金) 13:41:08プライマリバッファへのポインタはどうやって取得できますか?
DirectXだとプライマリサーフェイスをLockすればいいんですが…
0233デフォルトの名無しさん
2006/08/25(金) 13:48:140234デフォルトの名無しさん
2006/08/25(金) 18:17:56GLubyte * 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ツールが原因以外になにか原因になりそうなことありますでしょうか?
0235デフォルトの名無しさん
2006/08/25(金) 18:47:05ReadPixelする前にコレ
↓
glPixelStorei(GL_PACK_ALIGNMENT,1);
0236234
2006/08/25(金) 19:06:12ありがとうございます!できました〜。
glPixelStoreiでどういうふうにデータが格納されてるのかOpenGLに伝えないといけなかったんですね。
どうもありがとうございました。
0237デフォルトの名無しさん
2006/08/26(土) 11:49:58デフォルトではwidthは4バイトの倍数と勝手に仮定されちゃうわけ。
その方が処理が速いから。
だから513って設定しても、内部では516として扱われちゃう。
そうなるとmallocで割り当てたサイズじゃ足りないからエラーが出ちゃうの。
だからglPixelStoreiで「widthは1バイトの倍数でお願い」ってやれば解決するの。
0238234
2006/08/26(土) 15:13:57解説ありがとうございます。よりくわしく理解できました。
…というか、glPixcelStoreiをちょっと違う風に誤解してました。
重ね重ねありがとうございます。
0239デフォルトの名無しさん
2006/08/29(火) 01:22:44glCopyTexImageでフレームバッファをテクスチャー化して、gluBuild2DMipmapsでミップマップを作ってみたり、
glReadPixcelでフレームバッファを読み取って、gluScaleImageをつかって拡縮をしてみたりして、
ぼかしたテクスチャーをつくっているんですが、いずれもとても重たくて使い物になりません。
他になにかいい方法はありますか?
0240デフォルトの名無しさん
2006/08/29(火) 01:33:320241239
2006/08/29(火) 15:53:28実はまだ使ったことないんですが、がんばってみます。
0242デフォルトの名無しさん
2006/08/31(木) 14:09:47横スクロールでティアリングしまくって困ってます。
0243デフォルトの名無しさん
2006/08/31(木) 15:04:540244242
2006/09/06(水) 12:48:13レスサンスコ
でもwglGetProcAddress("wglSwapIntervalEXT")でNULLを返されちゃう
ウチの環境ではvsync同期は不可能なのかしらん。
0245243
2006/09/06(水) 16:33:00とりあえずドライバを新しくしてみるとか。
wglSwapIntervalEXTはWGL_EXT_swap_controlなので
それが使えるかどうかglinfoとかで調べてみるとか
0246デフォルトの名無しさん
2006/09/07(木) 19:59:390247デフォルトの名無しさん
2006/09/07(木) 20:54:310248デフォルトの名無しさん
2006/09/07(木) 21:09:550249デフォルトの名無しさん
2006/09/07(木) 21:22:280250デフォルトの名無しさん
2006/09/07(木) 22:04:450251デフォルトの名無しさん
2006/09/08(金) 05:02:56綺麗にみえる頂点の法線を求めるにはどうすればいいの?
ぐぐったら、面法線と面法線を合成して出した頂点法線との内積を
スムーズジング角度のradのcosと比較して
面法線を使うか頂点法線を使うか切り替えてる例があったけど、
やってみたらメタセコの表示とだいぶ違うし・・・
上を参考に頂点ごとに面法線を使うか頂点法線を使うかのフラグ配列作って
フラグを見ながら頂点法線を使うのだけ面法線を合成した頂点法線作って見たけど
うまく行かなくてもうわけわかめです
0252デフォルトの名無しさん
2006/09/08(金) 08:57:15プラグインSDKにそれのコードあるよ。
0253デフォルトの名無しさん
2006/09/08(金) 10:02:03>>252のを見ずに言うけど、面法線の合成方法が違うんじゃないか?
単純な加算じゃなくて頂点の角度の割合みたいなもので重み付けしているはず。
0254デフォルトの名無しさん
2006/09/08(金) 20:34:34>>253
そのものずばりの関数が用意してあったんですね
試してみます。ありがとうございます
0255デフォルトの名無しさん
2006/09/09(土) 00:48:180256デフォルトの名無しさん
2006/09/09(土) 02:15:150258251
2006/09/09(土) 16:50:410259デフォルトの名無しさん
2006/09/10(日) 08:43:17ttp://www.google.co.jp/search?hl=ja&q=%22CAD%E3%82%92%E4%BD%9C%E3%82%8B%22&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2
0260デフォルトの名無しさん
2006/09/10(日) 12:35:51struct Vertex
{
float x;
float y;
float z;
};
0261デフォルトの名無しさん
2006/09/10(日) 12:53:540262デフォルトの名無しさん
2006/09/12(火) 12:36:040263デフォルトの名無しさん
2006/09/12(火) 13:16:250264デフォルトの名無しさん
2006/09/12(火) 13:36:49適当にライブラリを引っ張ってくる
0265デフォルトの名無しさん
2006/09/12(火) 13:57:340266デフォルトの名無しさん
2006/09/12(火) 15:07:060267デフォルトの名無しさん
2006/09/12(火) 16:51:340268デフォルトの名無しさん
2006/09/12(火) 18:14:560269デフォルトの名無しさん
2006/09/12(火) 20:59:300270デフォルトの名無しさん
2006/09/12(火) 23:32:350271デフォルトの名無しさん
2006/09/13(水) 02:46:15やりたいことは点の選択です。
0272デフォルトの名無しさん
2006/09/13(水) 10:45:08一気に500万から探すのはどうだろ
オブジェクトごとに分かれてるなら一度オブジェクトを調べて
それから絞り込むとかどうよ
0273デフォルトの名無しさん
2006/09/13(水) 13:03:07つttp://athens.ict.usc.edu/Probes/
0274デフォルトの名無しさん
2006/09/13(水) 17:48:46おおー凄い
ありがとう
やっぱ海外のサイトにしか落ちてないのかな
0275デフォルトの名無しさん
2006/09/15(金) 12:08:46逆行列とか使うの?
0276デフォルトの名無しさん
2006/09/15(金) 19:46:37どこかにないかな〜
0277デフォルトの名無しさん
2006/09/15(金) 23:00:000278デフォルトの名無しさん
2006/09/15(金) 23:01:560279デフォルトの名無しさん
2006/09/16(土) 01:41:360280デフォルトの名無しさん
2006/09/16(土) 09:39:210281デフォルトの名無しさん
2006/09/16(土) 10:28:260282デフォルトの名無しさん
2006/09/16(土) 14:24:31そもそもCPUで純粋に行列計算だけをする関数が無い。それはOpeGLの担当ではない。
0283デフォルトの名無しさん
2006/09/16(土) 17:20:28ああ 哀れ
0284デフォルトの名無しさん
2006/09/20(水) 23:07:13G200のOpenGLドライバのLineサイズが0.5〜1.0ってwwwww
なんか変だと思ったwwwどうしようwwwww
orz
0285デフォルトの名無しさん
2006/09/22(金) 00:35:260286俺
2006/09/24(日) 08:23:25頼む
0287りえ子
2006/09/24(日) 13:15:280288デフォルトの名無しさん
2006/09/26(火) 20:24:30OpenGLが主に3D描画を行うライブラリだということは分かるのですが、
僕がやりたいのは2D描画で、例えばBMP画像やPNG画像を読み込んで
回転or拡大縮小させて表示するようなことがやりたいです。
特に「PNG画像を読み込む」が激しく車輪の再発明くさいので、
コードを書きたくありません。
何かライブラリがありましたら教えてください。
0289デフォルトの名無しさん
2006/09/26(火) 20:28:19PNGならlibpng
0290デフォルトの名無しさん
2006/09/26(火) 20:32:29Window上でOpenGLを使ったときにちゃんと描画されるのは何故なんだろう・・・
0291デフォルトの名無しさん
2006/09/26(火) 21:21:13ありがとうございます。試してみます。
0292デフォルトの名無しさん
2006/09/27(水) 00:14:53ttp://www.dodgson.org/omo/t/?date=20060922
0293デフォルトの名無しさん
2006/09/27(水) 07:32:14マウス座標を取るにはどうしたらよいのでしょうか?
(例えばマウスを追い掛けるアクセサリのようなものを作りたい)
0294デフォルトの名無しさん
2006/09/27(水) 15:28:34使った事が無いのですが、説明通りだとするとこれが使えそうですね。
void glutPassiveMotionFunc(void (*func)(int x, int y));
http://opengl.jp/glut/section07-06.html
0295デフォルトの名無しさん
2006/09/27(水) 19:58:23そんな関数があったとは……。感謝です。
0296デフォルトの名無しさん
2006/09/28(木) 22:01:01VBOとかはググれば出るんですがCVAの説明って無いんですよね。
0297デフォルトの名無しさん
2006/09/28(木) 22:29:250298デフォルトの名無しさん
2006/09/29(金) 22:34:140299デフォルトの名無しさん
2006/09/29(金) 23:23:160300りえこ
2006/09/30(土) 08:50:540301デフォルトの名無しさん
2006/10/12(木) 09:53:20ワールド座標でピッキングしたいときはどうしたらよいでしょうか?
0302デフォルトの名無しさん
2006/10/12(木) 10:37:500303301
2006/10/12(木) 12:05:29自己解決したので見なかったことにしてください
0304デフォルトの名無しさん
2006/10/16(月) 08:39:25四角ポリゴンにテクスチャを貼ってスプライトの様に表示しています。
glColor4fを使うことでアルファを変更したり色彩を落としたり
できますが、逆に白っぽくするにはどうしたら良いでしょうか?
glColor4f(1,1,1,1)が「テクスチャをそのまま表示する」という
状態ですので、数値を減らして暗くすることは出来ても、
数値を上げて明るくすることはできないですよね?
他に方法はありますか?
0305デフォルトの名無しさん
2006/10/16(月) 09:27:470306デフォルトの名無しさん
2006/10/16(月) 13:08:480307デフォルトの名無しさん
2006/10/16(月) 19:08:11GL_BLEND使った方が早くね?
0308デフォルトの名無しさん
2006/10/16(月) 20:09:00角度によって影っぽいのがつき色が変化すると思いますが、
そのポリゴンにテクスチャを貼ると角度によっての変化がなくなってしまいます。
どうすればいいのでしょうか?
0309308
2006/10/16(月) 21:22:22ご迷惑おかけしました。
0310デフォルトの名無しさん
2006/10/17(火) 03:43:31fltk2でfltk::GlWindowを使ってマウスイベントに反応するOpenGLプログラムを書こうとしているのですが、思うようにいきません。
toplevelにfltk::GlWindow派生クラスウィジェットを使うと、handle()メンバでfltk::MOVEイベントが拾えるのですが、
fltk::Windowなどをtoplevelにしてfltk::GlWindow派生ウィジェットを子ウィジェットとすると子ウィジェット側のhandle()メンバで
fltk::MOVEイベントが拾えません。ただし、fltk::PUSHなどのイベントはちゃんと拾えてます。
子ウィジェットへのイベントの伝達がフィルタリングされてるのかな?と思うのですが、対応方法を教えて下さい
0311デフォルトの名無しさん
2006/10/19(木) 09:11:20ピックアップするのはどうやるん?
0312デフォルトの名無しさん
2006/10/19(木) 11:09:352次元座標とマウスの範囲を比較
0313310
2006/10/20(金) 02:21:11…問題はどっちが正しい動作なのだろう… orz
0314デフォルトの名無しさん
2006/10/20(金) 08:46:26ありがと、やってみる
0315デフォルトの名無しさん
2006/10/22(日) 20:21:26template ベースの画像処理ライブラリーをベースに改造したらいいんじゃね?
vigraとか使えそう
0316デフォルトの名無しさん
2006/10/25(水) 18:28:06テクスチャ作りたいんだけど・・・。
0317デフォルトの名無しさん
2006/10/25(水) 19:11:47文字列をwchar_tの配列にしておけば多バイトの問題もないっしょ。
0318デフォルトの名無しさん
2006/10/26(木) 02:12:27freetype2 を使ったライブラリがあったと思ったけど。
0319デフォルトの名無しさん
2006/10/26(木) 14:55:04ビットマップを作る方法から探さないとな。
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
0320デフォルトの名無しさん
2006/10/26(木) 17:11:32http://i-saint.skr.jp/pg/
0321デフォルトの名無しさん
2006/10/26(木) 18:54:27拡大縮小するのと3Dフォントを使うのではどちらが良いでしょうか?
0322デフォルトの名無しさん
2006/10/30(月) 20:20:54どうするか教えて下さい。
ぐぐって見たけど、ようわからんですた。
行列とか、三角関数とかは一応分かります。
よろしくお願いします。
0323デフォルトの名無しさん
2006/10/31(火) 08:18:50↓クオータニオンについて直感的かつ世界で一番分かり易い説明。
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040321
まぁ、プログラマに取ってはという話だが…
数式オナニー系の説明が見たかったら、他を紹介するから言ってくれ。
0324デフォルトの名無しさん
2006/10/31(火) 21:21:06ありがとうございます。
これ見ても、さっぱりわかりませんが「金谷先生の本」ってのを読んで見ます。
0325デフォルトの名無しさん
2006/10/31(火) 23:16:21ここら辺は見た?
ttp://gamdev.org/w/?QuaternionPowers
ttp://staff.aist.go.jp/toru-nakata/quaternion.html
ttp://tpot.jpn.ph/t-pot/program/35_quaternion/quaternion.html
ttp://homepage1.nifty.com/seagull/math3d.html
0326デフォルトの名無しさん
2006/11/02(木) 03:47:06openglアニメーションを作成したいのですがどうすればいいですか?
background.cを実行します。ファイルは↓においてあるのでお願いします。
http://www.fileup.org/fup116601.zip.html
0328デフォルトの名無しさん
2006/11/03(金) 23:08:52http://delfin.klte.hu/aixdocs/normal/usr/share/man/info/en_US/a_doc_lib/libs/openglrf/gluPerspective.htm#B5C8872587rree
ここに書いてある透視変換行列の中身についてなのですが
クリッピングする部分の要素がどうしてこのような式になるかが解りません。(数学的に)
どなたか解る方がいましたら解説お願いします。
0329デフォルトの名無しさん
2006/11/03(金) 23:15:24結婚してくれよ
0330デフォルトの名無しさん
2006/11/06(月) 16:42:36OpenALはOpenGLの親戚という話も聞くのでOpenGLのスレで聞くのもいいかなと思いましたが・・・
0331デフォルトの名無しさん
2006/11/06(月) 17:09:070332デフォルトの名無しさん
2006/11/06(月) 17:11:29http://pc8.2ch.net/test/read.cgi/tech/1145573675/
0333デフォルトの名無しさん
2006/11/06(月) 17:22:21( ´∀`)ノシ
0334デフォルトの名無しさん
2006/11/07(火) 22:29:29GL_TRUEとGL_FALSEで、
動作がどのように変わるのでしょうか
どなたか教えてください
おながいします
0335デフォルトの名無しさん
2006/11/07(火) 22:43:22TRUE,FALSEがいいお( ^ω^)
0336デフォルトの名無しさん
2006/11/15(水) 14:51:47ウィンドウ内に適当なオブジェクトを表示した際に、ウインドウ外にはみ出し
た部分(ウィンドウイング変換の時点で矩形領域からはみ出した部分?)を表示
させたいのですが、どうしたらいいのでしょうか?単にウィンドウサイズを変
えたり視点を変えるだけでは表示されてくれないので・・・
0337デフォルトの名無しさん
2006/11/15(水) 19:28:30何言ってるのかいまいちわからんけど
glViewportのパラメータををウィンドウサイズに一致させるといいかも
0338デフォルトの名無しさん
2006/11/15(水) 22:14:31x[]とy[]に対し、
y[]=y[]+ax[]
という演算を行いたい場合、glMultiTexCoord2fを使うといいようですが、
同様な方法で
Y[]=X[]*Y[]
つまり
Yreal=Xreal*Yreal-Ximg*Yimg
Yimg=Xreal*Yimg+Ximg*Yreal
を行いたい場合は、何を使うのが効率的なんでしょうか
0339デフォルトの名無しさん
2006/11/15(水) 23:14:560340デフォルトの名無しさん
2006/11/16(木) 10:17:55glutIdleFuncで画面を更新させているんですがちらつきが酷いです
何か解決法があると思うのですが教えていただけないでしょうか?
0341デフォルトの名無しさん
2006/11/16(木) 17:23:250342336
2006/11/16(木) 17:50:20早速のレスどうも。
具体的に言うと、ウィンドウ全体にポリゴンを表示してそれにテクスチャを
貼り付ける→MODELVIEW行列に1/2かけたポリゴンと1/2かけて平行移動した複数
のポリゴンを表示させるということをしているのですが、平行移動させた際に
いくつかウィンドウ外にはみ出してしまったポリゴンを、どうにかして全部表示
させたいのですが・・・ウィンドウサイズを変えただけだとポリゴンもそれに
合わせて変わるし、glViewportで視点を変えてもはみ出した部分は切り取られ
たままなんですよね;
ちなみにリサイズ関数の中のglViewportのことですか?考える限りパラメータを
いじってみたんだけど変わらないす><;
0343デフォルトの名無しさん
2006/11/16(木) 20:14:25ウィンドウサイズ変えてもオブジェクトサイズは変わらない
関数自分で調べて勝手に作れ。
自分でやろうとしろ低脳のくずが。
0344336
2006/11/16(木) 21:52:29ネットでも調べたし赤本読んでもよくわかんないからここ来たんだけどね。
自分が低脳なのは十分わかってるよ、こーゆー言われ方するの怖かったから
書き込むの迷ったんだけど、このスレ超初心者用ってってあったからさ・・・
でもこれで闘志に火がついたよ、低脳なりに自力でなんとか頑張る。ありがと。
0345デフォルトの名無しさん
2006/11/16(木) 21:56:09たぶん透視変換について理解すると自然に解決すると思うよ
0346336
2006/11/16(木) 22:07:43ありがとう!調べてみる、感謝です。
0347デフォルトの名無しさん
2006/11/17(金) 00:52:51一応親切心で言うんだが、ネットでの調べ方は身に付けたほうがいいよ。
プログラム関連は、ほとんどがネットだけで解決できる。
質問しなくてもいいくらい、情報はあるんだよね。
それを、いかにうまく検索するか、絞り込むか。
0349デフォルトの名無しさん
2006/11/17(金) 03:25:22openglもそこで基礎学んでわからんとこは自分でやってみるってこと
してないとさ、これから何か作らないといけない時とか人に聞きまわる
ダメダメ君になっちゃうわけ。基本くらいは自分で調べないと後で痛い目に
あうってのはわかって欲しいもんだねぇ。
0350デフォルトの名無しさん
2006/11/17(金) 19:09:31ちょっとトラブリまして、質問させていただきます。
OpenGL1.2 + DirectDrawで全画面表示を実現しています。
デスクトップPC(AT互換機) + Geforce6800 で開発しています。
この環境では、ウインドウモード、フルスクリーンモードともに正しく動作します。
しかし、ワイド液晶のノートPCで動かした場合に、
ウインドウモードでは上手く表示されるのですが、
フルスクリーンでは、画面が真っ暗になり、正しく描画されません。
音はなりますし、ゲーム自体は、動きますし、
ウインドウモードに戻すと、また正しく描画されます。
どういったことが考えられますでしょうか?
0351デフォルトの名無しさん
2006/11/17(金) 23:08:47せめて、どうやってフルスクリーンにしてるのか書かないとなんとも。
そのDirectDrawってやつが気になるが
0353デフォルトの名無しさん
2006/11/22(水) 23:36:46Windows環境でのコンパイルがうまくいきません
VC6.0とBoalandで試しましたが手順などに詳しい方教えてくださいませんか
0354デフォルトの名無しさん
2006/11/23(木) 12:56:08どううまくいかないの?
自分が何をやって、どこで躓いてるのかをはっきりさせたほうがいい
0355デフォルトの名無しさん
2006/11/24(金) 17:16:49そこからEye, LookAt, Upに変換するにはどうすればよいですか?
0356355
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行目
みたいな感じなんですけど,どうも旨くいかないんすよ.
0357355
2006/11/24(金) 17:41:18(といってもxトランスレーションと,yローテーションとzローテーションにマイナス掛けるだけなんですが)
↓
トランスレーションに関してはz軸位置にマイナスを掛ける
ローテーションに関してはx軸回転とy軸回転にそれぞれマイナスを掛ける
スマソ
0358デフォルトの名無しさん
2006/11/24(金) 19:45:450359デフォルトの名無しさん
2006/11/25(土) 09:30:11自分の場合はDirectXのXファイルをOpenGLで表示してるけど、
モデルのZにマイナスかけて面を裏がえしてよ。
0360デフォルトの名無しさん
2006/11/26(日) 11:56:46ちょっと教えて下さい。調べたのですがつまってしまって。。。
テクスチャを球にマッピングして任意の軸に対して球を回すのはどうすればいいですか?
0361デフォルトの名無しさん
2006/11/26(日) 18:17:080362デフォルトの名無しさん
2006/11/26(日) 19:28:160363デフォルトの名無しさん
2006/11/27(月) 00:28:14せめてどこで詰まったんだかもうちょっと具体的に言ってくれ
0364デフォルトの名無しさん
2006/12/03(日) 01:09:26VC++自体初心者、猫でもの本を一通り読んで打ってwin32apiはさらっと
勉強した程度の者が、このOpenGLってのを使うには早すぎますかね。早すぎますよね。
mfcでダイアログボックスメインでピクチャボックスに表示させる方法をCodeguruの
ソースみながら打って、表示させたは良いけど、何をどうすればいいのかわからずで・・・
いったいどこで勉強してんの、みんなって感じでね・・・ orz
0365デフォルトの名無しさん
2006/12/04(月) 04:44:56そんなことを言っていたら、いつまでたっても始らない。
>いったいどこで勉強してんの
私の場合、このへんから。
http://wisdom.sakura.ne.jp/system/opengl/
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
0366デフォルトの名無しさん
2006/12/04(月) 09:37:30ゴリゴリ書いて覚えれば基本的なことは2週間で出来るようになる。
ようはプログラミング全般のセンスと努力。
0367デフォルトの名無しさん
2006/12/04(月) 14:00:32プログラムは書けるでしょうか。初心者ですがお願いします。
0368デフォルトの名無しさん
2006/12/04(月) 15:46:09適当なこと語るだけの奴ってキモイな
0369デフォルトの名無しさん
2006/12/05(火) 10:57:04接する、ってのがどういう状態なのかわからないんだけど……
ポリゴンの重なりを表現したいだけなら、
アルファブレンド(例えば加算合成)とか?
0370デフォルトの名無しさん
2006/12/05(火) 12:57:54接する、ってのがどういう状態なのかわからないんだけど……
ポリゴンの重なりを表現したいだけなら、
ステンシルバッファをうまく使用すれば、任意の色で描画できます。
0371デフォルトの名無しさん
2006/12/15(金) 04:40:15十字キーが押したら押しっぱなしの状態になってしまいます。。。
どなたか分かる方いますか???
0372デフォルトの名無しさん
2006/12/15(金) 14:15:260373デフォルトの名無しさん
2006/12/16(土) 15:07:040374デフォルトの名無しさん
2006/12/20(水) 20:57:31あれってどうにもならないの?
0375デフォルトの名無しさん
2006/12/20(水) 21:16:130376デフォルトの名無しさん
2006/12/20(水) 21:26:37プログラム辞めた方が良いよ。
センス無い
0377デフォルトの名無しさん
2006/12/20(水) 21:28:23glut使ってんなら、glutIgnoreKeyRepeatだかでキーリピート止めて、
glutKeyboardFuncとglutKeyboardUpFuncを使って押されてるか離されてるか自分で管理
0378デフォルトの名無しさん
2006/12/21(木) 01:49:37投影マッピングしているサンプルがGAME PROGRAMMING GEMS2にありまして、
それに載っていたサンプルは指向性のない点光源への適用例で、テクスチャ行列変換は
glScalef()とglTranslatef()のみでやっていたのですが、
これを指向性有りのスポットライト(ワールド座標系での光源位置と向き、カットオフ角をパラメータに使う)
として実装する場合のテクスチャ行列変換がよく分かりません。
できれば小難しいことは考えずにgluLookAt()などを使って行列変換したいのですが、
いいサンプルが見つからず困っています。
こんなサンプルがあるよとか自分ならこう書くとかあったら教えてもらえないでしょうか。
0379デフォルトの名無しさん
2006/12/21(木) 02:44:17というか、そんな古い方法つかわないで、ピクセルシェーダー使うことを考えましょうよ。
0380openGL初心者
2006/12/31(日) 06:47:44OpenGLを使って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
ご指導のほどよろしくお願いします。
0381デフォルトの名無しさん
2006/12/31(日) 11:36:010382380
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
0383デフォルトの名無しさん
2006/12/31(日) 18:30:21なんかよくわからんコメントアウトがあるけれどもなんだ?
>>382で考えていいのか?
答えは簡単。ディスプレイリスト更新せずに位置が変わるわけないでしょ。
変なところでglTranslate呼んでるから偶然全部が動いているだけ。
0384382
2006/12/31(日) 19:44:10初歩的な質問でごめんなさい。ディスプレイリストの更新ってどうすればいいんでしょうか(T-T) ウルウル
0385デフォルトの名無しさん
2006/12/31(日) 22:53:09意味ワカラン。死ね。
0386デフォルトの名無しさん
2006/12/31(日) 23:24:30そもそもディスプレイリストって何だ!?
0387デフォルトの名無しさん
2006/12/31(日) 23:37:48検索の一つもせずに全て人に聞こうというのは、ゆとりクオリティか?
0388デフォルトの名無しさん
2006/12/31(日) 23:53:58ゆとり教育の事じゃね?
0389デフォルトの名無しさん
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です。
まぁあとは頑張ってください。
0390デフォルトの名無しさん
2007/01/01(月) 06:40:36とあるアプリを起動した時
nVidia OenGL driver
Driver compnent sizes mis-match. Rtry to keep going. Cancel to exit.
というメッセージが出て起動しないのですが
原因と解決方法をご教授お願いします。
0391デフォルトの名無しさん
2007/01/01(月) 11:01:240392デフォルトの名無しさん
2007/01/05(金) 18:22:26ウィンドウを閉じたときの処理はどうやればいいんですか?
glutReshapeFuncとかglutKeyboardFuncみたいなのないんですかね?
0393デフォルトの名無しさん
2007/01/05(金) 18:44:15そういうときのためのCの標準関数を使いましょう。
0394デフォルトの名無しさん
2007/01/05(金) 18:59:38閉じるだとatexit関数が呼ばれないようなのですが。
0395394
2007/01/05(金) 19:02:460396デフォルトの名無しさん
2007/01/05(金) 19:37:050397デフォルトの名無しさん
2007/01/07(日) 18:38:07OpenGLの入門書には「大体の鳥にはあらかじめ入ってます」って書いてあるけど
KNOPPIX5.0.1には入ってますか?
apt-get install glut
やっても「パッケージglutが見つかりません」と出ます.
0398デフォルトの名無しさん
2007/01/07(日) 22:04:590399397
2007/01/07(日) 22:54:29perl: 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すると何も起こらず,新しいプロンプトが出てきます.
0400384
2007/01/08(月) 00:00:14コメントありがとうございます。上手くオブジェクトをマウスで選択して移動できるようになりました。
ところで
複数選択やリサイズには対応してないけど、強引に幅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です。
ですが、幅をもう少し大きくしたいのですがここの計算方法がよくわかりません↓どうすれば幅をもう少し大きくできるでしょうか?
よろしくお願いします。
0401389
2007/01/08(月) 01:25:28tan15度は、カメラの画角が30度(gluPerspective)で距離が10(gluLookAt)だから
0〜300を-tan(15度)*10〜tan(15度)*10に変えてる。
x が 0〜300 なら
(x-150)/150 は -1 〜 +1
マウスをクリックしたときの値がどうなってるかとか、オブジェクトをどの座標に動かすとどう見えるかを調べれば
おのずとわかると思うよ。
0402デフォルトの名無しさん
2007/01/08(月) 20:34:24openGLでキーボード操作によってポリゴンを平行移動させたいのですが
その関数はどう指定すればよいか教えてほしいです。
ちなみにVisual Studio 2005を使用しています。
0403デフォルトの名無しさん
2007/01/08(月) 23:36:020404デフォルトの名無しさん
2007/01/09(火) 00:59:27ここじゃスレ違いだからlinux板のくだスレにでも行きなさい
0405デフォルトの名無しさん
2007/01/11(木) 05:24:13クライアントに転送して表示させたいのですが、FBOを使っていても
frame.setVisible(false);
にしているとサーバがレンダリング処理をしてくれません。
フレーム非表示のままレンダリングを行う方法はないのでしょうか?
ご教示よろしくお願いします。
0406デフォルトの名無しさん
2007/01/11(木) 12:33:13平行移動や、回転では問題ないので原因が良く分からないのですが、何か考えられる点はないでしょうか?
どなたかご教授お願いします。
0407389
2007/01/11(木) 16:25:56つ glEnable(GL_NORMALIZE)
0408406
2007/01/11(木) 17:31:55解決しました〜。
ありがとうございます。
スケーリングすると法線も変えなきゃいけないんですね
0409デフォルトの名無しさん
2007/01/12(金) 01:07:20お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にすると怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな糞田舎で悲惨な生活するためにはよぉ
駄目のものを駄目と言ってはなんねえだめさ
0410デフォルトの名無しさん
2007/01/12(金) 11:47:26具体的にいうとリモートデスクトップの時は光沢がしっかり出ているのに対して、ローカルで実行すると全く光沢が出ずにつやのない感じです。
リモートでちゃんと光沢が出るので、ソフトウェアシミュレーションのおかげかなと思い、NVIDIA GeForce 7900GS, NVIDIA GeForce 7950GT, NVIDIA Quadro FX 3400/4400の環境で試しましたが全て同様の結果でした。
何かオプションを設定する必要、もしくはドライバのインストールなど必要なのでしょうか?
0411デフォルトの名無しさん
2007/01/13(土) 16:43:08frame.setVisible(false);
が何だかわからんと何も言えん
0412デフォルトの名無しさん
2007/01/15(月) 01:32:36OPEN-GLでソースをかけば、自動でGPUで計算してくれるってことですか?
0413デフォルトの名無しさん
2007/01/15(月) 01:48:063つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異や問題を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
0414デフォルトの名無しさん
2007/01/15(月) 01:58:11こういう奴って横で見てて人間として恥ずかしい。
最初は違法常駐を続けたいから賛成しているのだろうけど、
だんだん麻痺してきて特定の人の意見には常にマンセーになっていくんだよな
ああはなりたくないな、と思う。
0415デフォルトの名無しさん
2007/01/15(月) 02:59:49それにアルファ値を持つテクスチャを張り
その後,xy平面と平行に,さきほど作ったポリゴンを貫通するように
ポリゴンを作って,同じようにアルファ値を持つテクスチャを張りました.
それぞれのポリゴンの透明な部分の向こうに,もう一方の面が見えるように
したかったのですが(網と網を交差させる風にしたい)
後から描いた方の面が一部表示できません.
透明な部分を描く時にも,デプスバッファの値が更新されるのが
原因だと思うのですが,これを回避する方法はないのでしょうか?
0416デフォルトの名無しさん
2007/01/15(月) 09:46:590417415
2007/01/15(月) 13:36:30お返事ありがとうございます.
2度書きは交差する場所が分からないと,上手くいかないですよね?
Zソートでは駄目な気がします.
深度マスクを試してみますね
0418デフォルトの名無しさん
2007/01/15(月) 15:45:28つ アルファテスト
0419415
2007/01/15(月) 17:21:01お返事ありがとうございます
希望通りの動作をしました,ありがとうございます
0420デフォルトの名無しさん
2007/01/16(火) 01:02:50物体を回転した際に、ある方向からは陰影というよりも真っ暗になってしまいます。
どの方向から見てもある程度は陰影がついたようにしたいのですが
どなたか解決方法をご存じの方いませんでしょうか。
0421デフォルトの名無しさん
2007/01/16(火) 01:50:260422デフォルトの名無しさん
2007/01/16(火) 08:23:24ttp://www.vpython.org/win_download25.html
exampleにあるプログラムを作動してみたら、変なエラーが出てしまいます。
で、そのサイトの下にOpenGLが必要だと書いてあるんですが、具体的に
何をすれば良いのですか?
0423デフォルトの名無しさん
2007/01/16(火) 22:24:15勘だけど
つ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, hoge);
つ glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
>>412
質問の意図がよくわからない。
GPUが付いててそのopenGLのコマンドが対応してれば、普通は自動で処理してくれる。
ハードウェアアクセラレータが最大ならね。
0424デフォルトの名無しさん
2007/01/16(火) 22:52:09エラーについてちゃんと書こう
変なエラーとだけ言われてもわからない
0425デフォルトの名無しさん
2007/01/17(水) 00:41:53ありがとうございました。
0427デフォルトの名無しさん
2007/01/17(水) 12:27:26マルチしたならこっちにも解決した結果書いといてくれよ。
3Dグラフィックスプログラミング
http://pc10.2ch.net/test/read.cgi/tech/1155153009/
68 デフォルトの名無しさん 2007/01/17(水) 06:10:07
>>66-67
親切にありがとう。でも仕事の関係でVPythonでなきゃだめなんです。
どうも、自分のパソコンのビデオカードが古すぎたようです。
もうちょっと新しいパソコンでは問題なしでした。
0428デフォルトの名無しさん
2007/01/18(木) 10:21:02プログラミングと関係無いので激しくスレ違いなのだとは思いますが
お答え頂ければ有難いです
Win用の、とあるゲームをインストールしたら毎回起動する度に
このゲームは OpenGL 1.2 以上対応だというメッセージが出てきます
つまりは OpenGL のランタイムか何かがあって私のPCには
それの1.1以下が入っているんだろうと思うのですが、最新の物は
どこで配布されているんでしょうか?
OpenGL Home Page を見に行っても OpenGL を使ってるアプリらしい物の
紹介しか私には見つけられませんでした
0429デフォルトの名無しさん
2007/01/18(木) 11:03:24グラフィックカードが対応してない。もしくは付いてない。
新しいPC買ってください。
0430デフォルトの名無しさん
2007/01/18(木) 11:22:23・・・ハードの方が問題でしたか
ノートなのでPC買い替えしか手が無いですね
ご回答ありがとうございました
0431デフォルトの名無しさん
2007/01/18(木) 22:54:14ノートだと難しいかもしれないけど
まずグラフィックのドライバ更新も忘れずにね
0432デフォルトの名無しさん
2007/01/19(金) 00:37:090433デフォルトの名無しさん
2007/01/24(水) 19:10:18ttp://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
0434デフォルトの名無しさん
2007/01/24(水) 19:32:58デプスバッファもクリアするとごみが取れたことがある。
0435433
2007/01/24(水) 22:30:56その発想はなかったわ
明日試してみます
0436デフォルトの名無しさん
2007/01/25(木) 00:07:55この方法でダブルバッファにするとむしろゴミが残るのが正しい
この線の消し方とダブルバッファについてちゃんと理解すれば分かるはず
ATIやNVIDIAのカードでゴミが残らないのは、
Swapした時のバックバッファの内容が保証されてないから、でいいのかな?
0437デフォルトの名無しさん
2007/01/25(木) 00:12:500438434
2007/01/25(木) 08:46:37まあ本当にあったことだからこういう糞実装もあるということで覚えておいてくれ。
0439433
2007/01/25(木) 17:40:32display()の中では、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.」って書いてある。
0440デフォルトの名無しさん
2007/01/31(水) 03:06:03カーネル 2.4.31-0vl1.8
NVIDIA GeForce 2 GTS
以上のような環境で
OpenGLでVsync同期をとるためにはどうしたら良いでしょうか?
0441デフォルトの名無しさん
2007/01/31(水) 19:07:030442デフォルトの名無しさん
2007/02/01(木) 12:13:48>>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のソース見た方が早いかも。
0443デフォルトの名無しさん
2007/02/01(木) 13:46:06>>442
ありがとうございます
ドライバの設定でどうも、OpenGLはVsync同期をすることができました…
>>442さんの言うとうり環境変数を変えればよかったみたいです。
プログラムで何とかしなきゃと思っていました
拡張関数については、環境が変わった際に、GLのVsync同期を強制させるのに使えるかも
0444デフォルトの名無しさん
2007/02/01(木) 14:12:460445デフォルトの名無しさん
2007/02/01(木) 15:16:290446デフォルトの名無しさん
2007/02/02(金) 01:38:59VSync取ればティアリング回避できるよ
0447デフォルトの名無しさん
2007/02/02(金) 16:41:18画面に情報を載せた場合に、
上部と下部で食い違ってしまうのを防ぎたかったのです。
0448デフォルトの名無しさん
2007/02/02(金) 23:36:290449デフォルトの名無しさん
2007/02/08(木) 02:46:470450デフォルトの名無しさん
2007/02/08(木) 03:48:560451デフォルトの名無しさん
2007/02/11(日) 01:53:41次に一般ユーザに戻ってソースファイルをコンパイルしました。
んでもって、実行しようとするとdisplay(0.0)への接続に失敗しました。
見たいな事を言われます。スーぱユーザにてログインしなおして、
実行するとうまく実行できます。
これは、何らかの設定がうまく一般ユーザにないためだと思われる
のですが、解決方法が皆目検討がつきません。
どなたか手助けをいただけないでしょうか?
0452デフォルトの名無しさん
2007/02/11(日) 11:42:030453デフォルトの名無しさん
2007/02/11(日) 12:10:100454デフォルトの名無しさん
2007/02/11(日) 21:58:09座標系はfloat型のままで指定して、正方形の大きさはピクセル単位で指定したいのですが
よい方法が分かりません。
どうしたらよいのでしょうか?それともそもそもOpenGLでは私が書いた事はできないのでしょうか?
0455454
2007/02/11(日) 22:37:290456454
2007/02/11(日) 22:56:01使えばよかったんですね。自己解決しました。
失礼しました。
0457デフォルトの名無しさん
2007/02/11(日) 23:46:49は関数名の通り点のサイズを変更するだけだけど、それでいいのかな?
0458454
2007/02/11(日) 23:57:05まだなにかあったりするのですか?
0459デフォルトの名無しさん
2007/02/12(月) 00:09:01glPointSize();で点の大きさを大きくして正方形を表示させたの?
それだと、点であってポリゴンではないから疑問に思った次第です。
0460454
2007/02/12(月) 00:23:050461デフォルトの名無しさん
2007/02/12(月) 01:30:23素直に GL_QUADS 使った方がいいと思う。
0462454
2007/02/12(月) 03:15:340463デフォルトの名無しさん
2007/02/12(月) 03:46:130464デフォルトの名無しさん
2007/02/12(月) 09:51:100465デフォルトの名無しさん
2007/02/12(月) 10:04:20こいつはよほどのバカか、でなければ恐ろしいほど頭のいいヤツだ
0466デフォルトの名無しさん
2007/02/12(月) 10:15:28454は、「画面上で」ちょうど一辺が100ピクセルになるような
正方形が描きたいのだと、電波が届いた。
0467454
2007/02/12(月) 13:00:14って感じで座標を指定しますよね?
で、dx, dyを正方形の左上の頂点として縦横10ピクセルの正方形が
書きたいんですが、glVertex2d()では、指定するのは画面上の比率じゃないですか?
それだと嫌なんですよ。
0468デフォルトの名無しさん
2007/02/12(月) 13:12:440469デフォルトの名無しさん
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・百円ショップで買った毛玉取り器
0470デフォルトの名無しさん
2007/02/13(火) 23:18:130471デフォルトの名無しさん
2007/02/14(水) 22:09:21のはどんなのがありますか?
0472デフォルトの名無しさん
2007/02/17(土) 03:04:24Win32APIで生成したウィンドウの描画領域に、OpenGLで描画することは可能でしょうか?
もし可能ならば、参考図書か参考HPを教えていただけると助かります。
0473デフォルトの名無しさん
2007/02/17(土) 12:31:11.NET での例で良いなら、
酒井幸市, 「OpenGLで作る力学アニメーション入門」
という本に例は載っているよん。
0474デフォルトの名無しさん
2007/02/17(土) 13:58:28参考図書の情報、ありがとうございました。。。
早速、図書館に行って該当する本を探してみたいと思います。
0475デフォルトの名無しさん
2007/02/19(月) 13:43:430476475
2007/02/19(月) 15:09:010477デフォルトの名無しさん
2007/02/19(月) 15:11:12おめでとう
だよな?
0478デフォルトの名無しさん
2007/02/20(火) 12:08:48マルチディスプレイもしくはマルチビデオカードで描画対象のディスプレイを指定するにはどうするのが良いのでしょうか?
一応wgl+MFCでやっているのですがWindowsのglutで出来るなら乗り換えもありです.
0479デフォルトの名無しさん
2007/02/22(木) 03:16:58MinGW(カレントバージョン)
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 テクスチャ」で
ヒットした上位数件です。
0480デフォルトの名無しさん
2007/02/22(木) 05:13:46デバイスコンテキスト関係を何とかする、と思う。けどよくわかんね。
>>479
コードがないとなんとも言えない。
ノートだとダメ、ってことはない。
テクスチャのサイズが2のn乗になってないとか、そんなのじゃないか?
0481デフォルトの名無しさん
2007/02/22(木) 20:49:010482デフォルトの名無しさん
2007/02/22(木) 20:55:190483デフォルトの名無しさん
2007/02/22(木) 21:39:200484デフォルトの名無しさん
2007/02/22(木) 21:51:410485デフォルトの名無しさん
2007/02/22(木) 21:54:590486デフォルトの名無しさん
2007/02/22(木) 22:21:530487デフォルトの名無しさん
2007/02/22(木) 22:47:041レス読むだけで嫌気が差してしまった
このやまたくんは間違いなくはぶられる
0488デフォルトの名無しさん
2007/02/22(木) 23:18:090489デフォルトの名無しさん
2007/02/23(金) 00:33:54笑
0490デフォルトの名無しさん
2007/02/23(金) 01:32:00はじめて“マルチ”の意味を知りました。みんなありがとうッ!
0491デフォルトの名無しさん
2007/02/23(金) 02:19:550492479
2007/02/23(金) 07:06:33例えば、これ↓なんですが…
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html
こちら↓のソースは動いたんで、ちょっと違いを考えてきます。
ttp://www.uri.sakura.ne.jp/~cosmic/yuno/lab/gl_text.html
0493479
2007/02/23(金) 08:02:53ってわけで、事故解決しました。本当にくだすれでした。
ちゃんと書籍買ってきます。
0494デフォルトの名無しさん
2007/02/23(金) 10:06:340495デフォルトの名無しさん
2007/02/23(金) 10:12:41指摘されたら(される前が本当だが)元スレで移動したと断ってくればいいだけ
0496デフォルトの名無しさん
2007/02/23(金) 10:50:340497デフォルトの名無しさん
2007/02/23(金) 11:10:17http://www.opengl.org/ にはなさそうなのですが。
0498デフォルトの名無しさん
2007/02/23(金) 11:53:450499デフォルトの名無しさん
2007/02/23(金) 11:56:41自分が解答者になって、詳しく説明して、
後で別のスレでとっくに別の人が解答して解決してたときの気分を味わってこい
0500デフォルトの名無しさん
2007/02/23(金) 12:06:14割と田舎なので、空気はうまい。
近くに川もあるな。
駅からは結構遠い。バスも本数が少ないので、駅に出るには車が要る。
0502デフォルトの名無しさん
2007/02/23(金) 12:20:18背伸びする暇があったら開発環境の名前くらい調べろ。
0503497
2007/02/23(金) 13:00:480504デフォルトの名無しさん
2007/02/23(金) 20:03:47windows2k visual C++6でリンクエラーが出てしまいます
include libなどにファイルを移したのですが、それだとダメなのでしょうか?
visualC++6とかだと使えないとかあるのですか?
どなたかお願いします
0505デフォルトの名無しさん
2007/02/23(金) 20:47:57しかるべき場所に移したはずなのに。。。なぜ
0506デフォルトの名無しさん
2007/02/26(月) 03:03:12自分で配置しなきゃだめ?
0507デフォルトの名無しさん
2007/03/02(金) 00:28:15glEnable( GL_DEPTH_TEST )を使うと表示がおかしくなる…。
ソースコードは
ttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
から持ってきました。
なぜなんだろう。
0508デフォルトの名無しさん
2007/03/02(金) 01:12:55どうおかしくなるんだ?
おなじグラボ使ってるけど、問題ないぞ。
0509デフォルトの名無しさん
2007/03/02(金) 08:33:190510デフォルトの名無しさん
2007/03/02(金) 09:07:240511デフォルトの名無しさん
2007/03/03(土) 00:25:25言葉では説明しにくいのだけれど、面がうまく描画されない。
Zバッファを用いなければ、正常に描画されるんだけど。
ほんとサイトのソースまんまで描画されないから、
いろいろいじってみたんだけど効果なし。
0512デフォルトの名無しさん
2007/03/03(土) 01:10:27ソースうpキボン
0513デフォルトの名無しさん
2007/03/03(土) 01:15:080514デフォルトの名無しさん
2007/03/04(日) 17:38:18ある3Dモデルにテクスチャを貼りたいのですが、
勝手にテクスチャ座標を計算してくれる関数ってありますか?
御願いします。
0515デフォルトの名無しさん
2007/03/04(日) 18:26:32ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20060623
コードがあるので読むといいよ。
0516デフォルトの名無しさん
2007/03/16(金) 10:56:23ではgluNewQuadric()で作成したオブジェクトを一度もgluDeleteQuadric()で解放してないように見えるんですが、
それで問題ないっちゅうかリークしないんですか?
赤本に載ってるコード
http://www.opengl.org/resources/code/samples/redbook/quadric.c
0517デフォルトの名無しさん
2007/03/16(金) 11:24:290518デフォルトの名無しさん
2007/03/16(金) 11:46:46ttp://wisdom.sakura.ne.jp/system/opengl/gl6.html
glEnable(GL_LINE_STIPPLE)ってやってから、
void glLineStipple(GLint factor, GLushort pattern)
で破線のパターンを設定して、その後はいつも通りに描けばいい。
変更前の破線パターンはglGetIntegervでGL_LINE_STIPPLE_PATTERNの値を調べればわかる。
0519517
2007/03/16(金) 15:44:420520デフォルトの名無しさん
2007/03/20(火) 17:51:191個1個の点には名前がついています(1,2,...,N)。
openGLのpickingの処理を行うと hitした名前が配列で返ってきます。
例えば、buffer[] = 1,3,12,12319 というように。
これをもとに、hitした点全ての点の色を変えようと思いました。
一番簡単なのはbool selected[N]という配列に、hitしたかどうかの
情報を全部格納して、drawするときに1個1個見ていくという方法ですが、
どうもselected[N]のメモリが無駄に感じますし、もっとエレガントな
方法があるような気がします。
いったん全部もとの色で書いておいて、buffer[]に対してその名前を持つ
点の色を変更できればいいのですが・・。
なにかよい方法はないでしょうか?
0521520
2007/03/20(火) 18:05:45「それら全ての点をxy座標の2次元平面に同じ色でdrawしました。」
がウッカリぬけました。すみませんです・・。
0522デフォルトの名無しさん
2007/03/20(火) 19:58:24ピッキングは使った事ないので、外してたらごめん。
> いったん全部もとの色で書いておいて、buffer[]に対してその名前を持つ
> 点の色を変更できればいいのですが・・。
そのまま実装できるような気がするんだけど、どうよ。buffer[]の中身と点の名前が一致してないってことかな?
単純な配列ならインデクスで参照できるだろうし、文字列だとしてもハッシュにすれば検索速度は速そうだけど。
まあ、それは置いておいて、
案1. 予め「座標の点を格納した大きな..配列」に色情報を持たせるってのは?
buffer[]に値が入ったとき、buffer[]に含まれてる要素の分だけ、元の配列の色情報を変える。
全部の点を描画する時はそれぞれの色情報から色を決める。
案2. 全体を同じ色に塗った直後に、buffer[]の中身にある点だけ色を変えて再描画。
恐らく容量としてはbuffer[?] <<<< selected[100万]だからメモリ効率はよさそう。
0523デフォルトの名無しさん
2007/03/20(火) 20:15:31100万個のオブジェクトから一つを選択するという、
ユーザーインターフェースを見直したほうがいいと思うが。
0524520
2007/03/20(火) 22:25:47返信ありがとうございます!
>>522
案2.よさげ!!
元の点(glRect)はそのままにして、色を変えたglRectで上書きするということですか??
それとも、元の点は消せたりできるんでしょうか??
>>523
なんか、DNAの情報の散布図か何かでどうしても100万(実際には10万くらい
なんですが・・)一気に見れたほうが都合がよくて・・。苦しいところです。
0525デフォルトの名無しさん
2007/03/20(火) 22:31:200526522
2007/03/21(水) 00:49:46上書きだけど、glRectならそのままできそう(未検証)。
心配なのは視点からの奥行きだな。同じ奥行きの場所に上書きするって
ビデオカード、ドライバの種類で動作が変わる可能性がある。
上書きする点の手前に上書きしない点がある場合も考えられるので
そこら辺はソートするとかしないとダメかも。
アルゴリズム的なアイデアなので実装はがんばってみてww
0527520
2007/03/22(木) 19:07:140528デフォルトの名無しさん
2007/03/25(日) 15:01:39出来たらソース見せて
0529デフォルトの名無しさん
2007/04/01(日) 00:04:56GLでスクリーンの画素の位置ってどうやって見つけたらいいのでしょうか
視点はgluLookatで初期値を指定してやるのですが
ググってもいまいちわからず。どなたかお教えください
0530デフォルトの名無しさん
2007/04/01(日) 10:39:21「gluUnProject」でぐぐればいい感じのサンプル出てきます。
0531デフォルトの名無しさん
2007/04/01(日) 17:58:24gluUnProjectでググってみたところ、マウスでクリックしてその3次元空間の座標を取得というのが出てきました
それもやりたいのですが、目的のとは少し違っていて
視点からスクリーンの左上→右→次の列に行って右下までレイを投下して終了 というのをやりたいのです。
スキャンラインに近いのですが、視点からレイを自分で放つ練習というイメージで。
gluUnProjectでもう少し検索してみます。
しかし、レイを投下するTIPというのがほとんど無いですね…ネット上に
0532デフォルトの名無しさん
2007/04/01(日) 22:06:27と言ったからには、この問題が解決した暁にはきちんとTIPとしてネット上にまとめるように。w
それはともかく、gluUnProjectで3次元空間上の点を求められるということは、その点と
視点を結べば、レイのベクトルになるでしょ?(違うの?)
winZには、0.0〜1.0の間の適当な値を放り込んでおけば良し。方向には影響を与えないから。
ちなみに↑の方法は早いけど速くはないから、多数のベクトルを生成するのには不向き。
普通は、フラスタムの形とビューポートの大きさとモデルビュー行列から適当に計算すると
思うけど・・・ちょっと、「gluLookatで初期値を指定してやる」だけじゃ情報が足りないな〜。
0533デフォルトの名無しさん
2007/04/01(日) 22:29:22ボリューム関係のがぜんぜん無いので、理解できたら作ります。
ほんとOpenGL初めて間もなくて、床井先生の手抜きglutところをヒィヒィいいながらなので…
目→|スクリーン|
目からレイをボリューム(雲のような)に打って当たった表面のボリュームだけ表示、ということをしたくて。
他の方法もあるのでしょうが、レイを打って表示、ということをやっておきたくて。
>>普通は、フラスタムの形とビューポートの大きさとモデルビュー行列から適当に計算する
その普通のやり方がわかりませんでした。
ビューポート・モデルビュー行列が理解できていないで、コピペ→動いた→ある程度読んで満足を繰り返していたせいですね…
0534デフォルトの名無しさん
2007/04/01(日) 22:31:45目→|スクリーン|→ボリューム群 (色決定)
です。
0535デフォルトの名無しさん
2007/04/02(月) 12:07:13そうか了解・・・。
まずはモデルビュー変換、投影変換、ビューポート変換の仕組みを知る事が必要っぽい感じだね。
とりあえず、視点とかの設定が以下のようになってる場合
---
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を使う //
}
---
0536続き
2007/04/02(月) 12:08:24crossとnormalizeはそれぞれ外積と正規化ね。
実際にはなんか適当なベクトル演算ライブラリを使うか、要素ごとの演算に書き下すか、
あるいは上のコードが通るようなvec3クラスを自分で実装しちゃうか。w (←実は一番オススメ)
ちなみにテストとか全然してないんで、間違ってたらごみんなさい。
一応分かりやすく書いたつもりだけど、意味不明なところがあったら質問ちょーだい。
あと、一言加えるなら・・・
「初心者は、gluPerspective()とかgluLookAt()とか使うな!」
って感じかなぁ。
ま、がんばって。ノシ
0537504
2007/04/02(月) 12:10:570538デフォルトの名無しさん
2007/04/02(月) 18:28:29試しにやってみます。ホントに色々ありがとうございます。
for (int y = 0; y < vh; ++y) for (int x = 0; x < vw; ++x) 以降がスクリーンの画素にレイを投下しているところですよね
スクリーンの走査ってこれだけで出来るのですね。
0539デフォルトの名無しさん
2007/04/03(火) 01:22:56現在、開発環境にMFCを使用して、SwapBuffersと視点の変更のみの実行速度を計測するプログラムを作っています。
時間の計測にはQueryPerformanceCounter関数を使用しており、ミリ秒単位で計測しています。
しかし、次の二つの方法では、SwapBuffersの実行速度に大きな違いがでてしまいます。
�@視点距離一定、 視点角度を変更してSwapBuffers
(実行時間) ≒ 14msec
�A視点距離を変更、視点角度一定でSwapBuffers
(実行時間)≒ 0.5ms
このような時間差はでるのはなぜなのでしょうか。また、�@の状態を高速化することは可能でしょうか?
どなたかよろしくお願いしますm(_ _)m
0540539
2007/04/03(火) 01:58:30視点の変更をマウス操作で行っています。�@と�Aでは、
イベントの呼び出し頻度が�@の方がはるかに多く、
�@ではSqpBuffersのところで渋滞を起こしてるみたいです。
0541デフォルトの名無しさん
2007/04/03(火) 02:00:36グラフィックカードの種類とかがわからないと、なんともいえない。
0542デフォルトの名無しさん
2007/04/04(水) 00:48:19描画はしていません。視点距離・視点角度はglLookupで指定してます。
↓の記述を参照にするのがよさげみたいです。
http://developer.apple.com/jp/technotes/tn2093.html#TNTAG7
以下抜粋
##グラフィックパイプラインをオーバードライブしない##
これは通常、短い間隔で立て続けに作動するタイマを使用し、
作動のたびに描画ループを呼び出すことで行われます。
しかし、その効果はしばしば、期待とは正反対です。CPU 時間は通常の 2 倍または 3 倍
(時にはそれ以上)消費され、アプリケーションのパフォーマンスが大幅に低下します。
このような場合は、システムに描画の制御を任せるか(たとえば、Cocoa では -setNeedsDisplay: を使用)、
タイマ間隔を大幅に延長するのが最善です。
0543デフォルトの名無しさん
2007/04/04(水) 00:50:30glLookup −> gluLookAt
0544デフォルトの名無しさん
2007/04/04(水) 17:00:03glMatrixMode(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);
にしましたけど、画面真っ白で何も描画されなくなりました。
できないならできないでいいですけど、可能かどうかを知りたいです。
0545デフォルトの名無しさん
2007/04/04(水) 17:00:38> 3Dっぽい表現がしたくなり、
> これをそのまま、透視法射影にすることって、できますか?
3Dっぽい表現がしたくなってのですが、
これをそのまま、透視法射影にすることって、できますか?
0546デフォルトの名無しさん
2007/04/04(水) 18:18:43glFrustumは 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
0547デフォルトの名無しさん
2007/04/05(木) 12:01:39返信サンクスです。
私は、基本的なことがわかってないみたいですね。
うはー、z=0って、入らないのか!
フラストラムゆがむのは、確かにそうかもですね・・・
試してみます。
glPushMatrixは、実は、参考にしたコードが、
普段はglFrustumしていて、その上で、2Dしたい時だけ glOrtho して、
3Dに戻りたくなったら、Popするっていうコードだったんです。
その名残です。気にしないで。
0548デフォルトの名無しさん
2007/04/05(木) 12:48:22どこで学べるのですか。
0549デフォルトの名無しさん
2007/04/05(木) 13:07:330550デフォルトの名無しさん
2007/04/05(木) 15:43:330551デフォルトの名無しさん
2007/04/05(木) 16:10:20独習しかないんじゃないかな・・・
0552デフォルトの名無しさん
2007/04/05(木) 16:24:10それともGLやD3DみたいなAPIの使い方やテクニックの事を言ってるの?
0553デフォルトの名無しさん
2007/04/05(木) 17:54:230554デフォルトの名無しさん
2007/04/05(木) 18:37:58兵隊でも別にいいんだけど
東大に代数幾何の研究室に所属してる知り合いがいるが、
どうやら東大ではあんましいい研究・教育をしてる雰囲気じゃないな。
京大も似たような感じ。
まともにやれてる所って多分日本には無いでしょ。
0555デフォルトの名無しさん
2007/04/05(木) 19:08:010556デフォルトの名無しさん
2007/04/05(木) 19:24:430557デフォルトの名無しさん
2007/04/05(木) 21:33:430558デフォルトの名無しさん
2007/04/06(金) 13:12:480559デフォルトの名無しさん
2007/04/06(金) 20:19:45なんだこりゃ??(´ω`)
0560デフォルトの名無しさん
2007/04/11(水) 01:41:24webから拾ってきたサンプルコードもバラバラだし動かないのと動くのがあるし
サンプルコードどおりに書いてみても全然動かねーし
これは赤本を買えということなのか
0561デフォルトの名無しさん
2007/04/11(水) 01:58:03どのへんがわからんの?
0562デフォルトの名無しさん
2007/04/11(水) 13:52:36赤本買わなくてもできるとは思うけど
買うのと買わないのとでは理解の早さが何倍も変わってくる
0563デフォルトの名無しさん
2007/04/11(水) 16:49:58オプソのゲームのソースばかり読んでる。
>>560
どう動かないという状態をはっきりわかれば、助言できるかも。
あとは、
・テクスチャマッピング以前に、普通のポリゴンが表示されるか?
・貧弱なグラフィックカードを使っていないか?
・ポリゴンの描画順によっては、表示されないこともある(右回り、左回り)
など
0564デフォルトの名無しさん
2007/04/11(水) 20:12:00テクスチャマップされてないポリゴンは、まず表示されているとして・・・
ありがちなのは、
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
してなかったためにテクスチャが映らない、とかかな〜。
なんでGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなのか、いまだ理解できません・・・。
誰か合理的な説明を教えてぷりーず。
0565デフォルトの名無しさん
2007/04/12(木) 01:24:04いつもネットのサンプルそのままで、初期値なんか気にしたことなかったけど、
初期値だと、MIPMAP生成してないと写らんってこと?
0566デフォルトの名無しさん
2007/04/12(木) 02:18:16でも、MAGフィルタが適用されるような大きなポリゴンならテクスチャ貼られる。
MINフィルタが適用されるようだと貼られない。
奥行き方向に斜めなポリゴンだと部分的に貼られたり、要するに運次第ってこと。w
(プログラムは同じでも、ウィンドウサイズによって貼られたり貼られなかったり・・・)
これって初心者にとってはかなり大きな罠だと思う。
てか初心者じゃなくても、わざわざミップマップなんか作りたくない場合だって
多いと思うんだけどなぁ〜。
0567デフォルトの名無しさん
2007/04/12(木) 10:04:06最新のWindows用のグラフィックカードのほうが早いですか?
それとソースコードはgccでコンパイルできますか?
0568デフォルトの名無しさん
2007/04/12(木) 10:16:1610年以上前の代物でなければわざわざGPUを更新する必要もないでしょ。
0569デフォルトの名無しさん
2007/04/14(土) 18:04:25実現方法を教えてください。
0570デフォルトの名無しさん
2007/04/15(日) 05:44:21Javaで携帯向けコンテンツを作成したいと考えていて、MascotCapsule、M3G(JSR-184)であればBlenderを使用すればよいことはわかったのですが、OpenGLは調べ切れませんでした。
0571デフォルトの名無しさん
2007/04/15(日) 15:05:21OpenGLにはスプライトというものは無いので、アルファ付きのテクスチャを貼った
ポリゴンを描画するか、glDrawPixelsを使うかですかね。
>>570
そのようなツールは存在しません。
というか、OpenGL自体に、モデルやモーションという概念がありません。
0572デフォルトの名無しさん
2007/04/15(日) 15:09:490573デフォルトの名無しさん
2007/04/15(日) 15:34:59ああ、ポイントスプライトはあります。忘れてました。w
えっと・・・ポイントスプライトが標準になったのは2.0以降だったかな。
標準でないバージョンでポイントスプライトを使いたい場合は、
拡張関数を呼ぶ必要がありますね。
0574デフォルトの名無しさん
2007/04/15(日) 15:46:28ポイントスプライトはアルファテストと並んで最も頻繁に使う固定機能だったのに
D3D10から廃止ときた
0575570
2007/04/15(日) 16:06:48ありがとうございます。
OpenGLのデモムービーで、戦闘機が飛んでいたり車が走っていたりするものを見かけるのですが、あれらはコーディングでゴリゴリモデリングとモーショニングされているのですか。
敷居が高いなぁ、と感じました。
0576デフォルトの名無しさん
2007/04/15(日) 17:01:04なんらかのミドルウェアを使ってるんじゃないでしょうかね。
OpenGLてのは、良くも悪くも低レベル(ハードウェアに近い層)のライブラリなんですよ。
モデルだのモーションだのってのは、もっと上のレイヤで扱うべき仕事なのでOpenGLには含まれません。
もちろん、OpenGLを使用して、モデルやモーションを提供するようなミドルウェア(ゲームエンジンとか)は
いくつか存在します。各種モデリング&モーションツールとの連携はそのミドルウェアごとに対応が違うので、
まずはミドルウェアの仕様を調べてみるのが早いんじゃないでしょうか。
標準でそういう仕組みが用意されていない、という意味では確かに敷居が高いかもですね・・・。
0577デフォルトの名無しさん
2007/04/15(日) 17:07:26>コーディングでゴリゴリモデリングとモーショニングされているのですか。
んなわけないがな。好きなツールでモデルとスキンアニメーションを作って、
好きなフォーマットで保存したのを自分でロードされているのです。
最近では Collada が標準に一番近いのかな。Blender でも Collada で
エクスポート出来るでしょ。
0578デフォルトの名無しさん
2007/04/15(日) 17:13:550579570
2007/04/15(日) 18:11:02展示会で見たデモムービーはこれです(重いので注意)。
ftp://www.arm.com/mali/skyrage/skyrage17_xvid.avi
これはたぶんOpenGL ES 2.0です。
>>577
情報ありがとうございます。
Blenderは1週間ぐらい調査して使ってもみているのですが、かなり難しいです。
3Dプログラミング未経験なので、APIよりもまずはツールを先に覚えたほうがよいと思っているのですが、Blenderだとツールの段階で挫折しそうです。
いろいろ調べた結果、六角大王Superがもっとも簡単そうなので、値段も手頃だしこれを使いたいと考えていますが、致命的な問題などありますか?
とりあえずは六角大王(フリー)でモデルを作ってみたりしています。
>>578
ありがとうございます。
Irrlichtは興味深いですね。
六角大王(フリー)形式を独自でバインドすることになった場合に参考になりそうです。
0580デフォルトの名無しさん
2007/04/15(日) 19:33:110581デフォルトの名無しさん
2007/04/15(日) 21:49:44の引数factorとunitってなんですか?
googlで引っかかったサイトに同じ質問がのってたのですが、
英文・訳文とも、読んでもよくわからんです。
0582デフォルトの名無しさん
2007/04/15(日) 22:01:070583デフォルトの名無しさん
2007/04/16(月) 00:45:13とりあえず、デカけりゃおっけーってこと?
0584581=583=584
2007/04/16(月) 00:48:03>
>m * factor + r * units
>
>です。
>また、r は、与えられた実装の方の分析できるオフセットを作ることを保証される、最も小さな値です。
これ見ても、変な日本語だなあ、としか思えないのですよ。
0585デフォルトの名無しさん
2007/04/16(月) 01:08:04rはオフセットの実装依存な最小値って意味じゃね?
0586デフォルトの名無しさん
2007/04/16(月) 01:11:050587デフォルトの名無しさん
2007/04/16(月) 01:14:37らしい
0588デフォルトの名無しさん
2007/04/16(月) 01:29:02factorは不要ってことですかね。
とりあえず、factor固定、units可変にして試して見ます。
0589デフォルトの名無しさん
2007/04/16(月) 01:41:500590デフォルトの名無しさん
2007/04/16(月) 01:51:10ふむふむ。
解像度が小さいほどピクセル数は少なくなる。
限られたピクセルには重要度の高いポリゴンを描画したい。
ポリゴンを射影する平面の法線に対し、てポリゴンの法線がなす角の大きいポリゴン
のほうが重要度が高いので、ポリゴンの傾きを優先度の判断に加えてやるってことなのですね
…たぶん。
なぜ傾きの大きいポリゴンが重要なのかは謎ですが、シャドウマッピングを
使わないので気にしないことにします。ありがとうございました。
0591デフォルトの名無しさん
2007/04/16(月) 08:30:390592デフォルトの名無しさん
2007/04/17(火) 01:50:30>584にあるオフセット値m * factor + r * unitsは、いったいどこに加算されているのでしょうか?
射影する平面と、射影する平面との距離にオフセット値が加えられているとしたら、
r*unitsが大きければポリゴンは重ならない気がするのだけど、どうもそうではなさげ。
factor, unitをいじってみた感じでは、z軸の正方向とポリゴンの法線のなす角度が大きくなると、
factorの値が効いてくるようだけど、うーんわからんとです。
0593デフォルトの名無しさん
2007/04/19(木) 00:32:18しかも、1000とか2000とかオフセットしてもまるで平気。スケールでかすぎ。
やっとうまく行きいました。
0594デフォルトの名無しさん
2007/04/27(金) 01:14:280595デフォルトの名無しさん
2007/04/28(土) 11:38:24glOrthoのleft, right, bottom, topに0〜ウィンドウサイズ指定すればいいよ
0596デフォルトの名無しさん
2007/05/03(木) 23:38:190597デフォルトの名無しさん
2007/05/04(金) 00:43:070598デフォルトの名無しさん
2007/05/04(金) 16:08:12Shaderは無しの方向性で・・・
PhotoShop上で、検証してみたところ、
dest = (src+dest) - (src*dest)
のようなのですが、可能ですかね?
0599デフォルトの名無しさん
2007/05/04(金) 16:09:01http://d.hatena.ne.jp/keim_at_Si/20060210
ここのページを見たら
> 【追追記】
> //スクリーン合成
> glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE);
ってあったんですが、なんか違うような・・・
0600デフォルトの名無しさん
2007/05/04(金) 16:53:03すいませんが誰か教えてください。
0601デフォルトの名無しさん
2007/05/04(金) 16:53:56src + dest - src * dest
src * (1 - dest) + dest
SRC * GL_ONE_MINUS_DST_COLOR + DEST
ちゃんと、>>599の式でできますね。
解決!ありがとうございました。
0602デフォルトの名無しさん
2007/05/07(月) 20:11:07GL_DEPTH_COMPONENTなテクスチャをシェーダを使わずに
目で確認できるようにポリゴンにテクスチャマップする方法はありますか?
0603デフォルトの名無しさん
2007/05/12(土) 17:54:44どこでDLできるのか教えてください
0604デフォルトの名無しさん
2007/05/12(土) 18:07:45http://www.opengl.org/documentation/specs/
0605603
2007/05/12(土) 19:01:29どうやってDLするんでしょうか?
0606デフォルトの名無しさん
2007/05/12(土) 19:04:54その質問をした時点でもうお前には無理
たとえ、DL出来たとしても使えない
諦めろ
0607デフォルトの名無しさん
2007/05/12(土) 19:12:140608デフォルトの名無しさん
2007/05/12(土) 20:32:22ネトゲやろうとしたらopenGLがどうこうってエラーメッセージがでたんで
とりあえずopenGLがいるのかと思っただけなんで使うことは考えてなかったんですが
これをダウンロードすることによって出来るようになるゲームってあります?
0609デフォルトの名無しさん
2007/05/12(土) 21:20:40どなたかお答え願えませんか。
ttp://mumei24.run.buttobi.net/cgi-bin/upload.cgi?mode=dl&file=971
DLパス:gpu
トーラスをランバートのシェーディング(cg)で表示するだけのプログラムなのですが
どうも動かないです。OPENGLです。
誰か助けてください。
0610デフォルトの名無しさん
2007/05/12(土) 22:06:48わからんけど、ビデオドライバとかじゃね?
0611デフォルトの名無しさん
2007/05/13(日) 07:18:22>>603
OpenGLのゲームとかプログラムを動かしたいだけなら、すでにドライバなりなんなりが
マシンに入っているはずなので、OpenGLは、そのまま動きます。
OpenGLで、プログラムを組みたいならば、言語に合わせたヘッダーファイルが必要になります。
OpenGLのプログラムの組み方は、入門サイトを読んでください。
NeHe Productions: Main Page
http://nehe.gamedev.net/
>>606
スレたいミロ
0612デフォルトの名無しさん
2007/05/13(日) 15:55:53テクスチャのフォーマットを GL_LUMINANCE なり GL_INTENSITY なりに
してやれば良いんでないのカナ?
0613デフォルトの名無しさん
2007/05/13(日) 16:28:10確かハードウェアシャドウマップに対応してないラデ9500とかを使えばグレースケールで描画できたと思うよ
今手元に無いから検証はできないけど
多分ドライバ内部でDEPTH_COMPONENTをRGB16とかで擬似的にやってるんじゃないのかな
0614デフォルトの名無しさん
2007/05/13(日) 17:02:210615デフォルトの名無しさん
2007/05/14(月) 09:09:580616デフォルトの名無しさん
2007/05/16(水) 17:17:290617デフォルトの名無しさん
2007/05/16(水) 17:30:15つーか、どう動かないのか?わからんことには答えられないのでは?
あと、バイナリもup。
0618デフォルトの名無しさん
2007/05/16(水) 17:31:130619デフォルトの名無しさん
2007/05/16(水) 17:51:52バイナリは609からDLできます
CとCgのが二つで
GL側にエラーは無くて、実行すると「Cg error」とだけ出て動かないのです
ランバートのシェーディング(Cg部分)をするトーラスを画面に表示するだけのプログラムです
0620デフォルトの名無しさん
2007/05/16(水) 17:59:140621デフォルトの名無しさん
2007/05/16(水) 18:02:27別PCに入っていて。。。すみません
0622デフォルトの名無しさん
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
0623デフォルトの名無しさん
2007/05/17(木) 19:17:08ttp://mumei24.run.buttobi.net/cgi-bin/upload.cgi?mode=dl&file=1079
DL:gpu 解答:gpu
実行ファイルです
ひとつはGLでトーラスを表示するだけ(トーラスが表示されるもの)
ひとつはCgでそれをランバートシェーディングさせるものです。(Cgエラーと出るもの)
ソースは609です
0624デフォルトの名無しさん
2007/05/17(木) 19:39:08DisplayListとCVAとFBOの速度比較やってるサイトってなかったっけ?
昔どこかで見たんだが忘れてしまった。
0625デフォルトの名無しさん
2007/05/17(木) 19:52:290626デフォルトの名無しさん
2007/05/18(金) 13:59:47崩壊日誌
http://alb.hp.infoseek.co.jp/
ここ。結構ためになった。
0627デフォルトの名無しさん
2007/05/18(金) 15:32:49おお、参考になる
0628デフォルトの名無しさん
2007/05/18(金) 15:36:39ワロタ
そんなに早かったのか・・・VBOより早いじゃん
0629デフォルトの名無しさん
2007/05/18(金) 18:22:37そうそう、ここだ。THX
今度こそブックマークしておこう。
0630デフォルトの名無しさん
2007/05/18(金) 20:44:51それを回転させたら
他のオブジェクトと同じように回転する?
0631デフォルトの名無しさん
2007/05/19(土) 03:17:06普通の直線なら、回転する。
0632デフォルトの名無しさん
2007/05/19(土) 17:09:48もしかしてかなり手間かかります?
0633デフォルトの名無しさん
2007/05/19(土) 18:37:00材料調達から、トラックで出荷するまでが仕事
材料調達とは命令の入力
出荷はデータの出力
工場だから、当然中で働いている人がいる
調達から出荷まで一瞬で終わるなら、レイテンシ(待ち時間)なし。
で、スループットは、出荷数。100000の入力があったら100000
レイテンシがないので、次の作業に即座に移ることができる。
調達から出荷まで、半日かかるとしよう
この場合、レイテンシは半日。
スループットに目を向けると、100000の入力をしようとしていたのに出荷が遅いので
スループットは2とか3とかになるだろ
レイテンシが大きいと出荷(計算完了)までの時間が長くなるので
次の作業にすら移れず、性能の悪い工場であると。
0634デフォルトの名無しさん
2007/05/19(土) 18:52:27この手の話を見るといつも思うんだけど、FreeType を直に扱えば良いじゃん。
0635デフォルトの名無しさん
2007/05/19(土) 21:55:070636デフォルトの名無しさん
2007/05/19(土) 22:17:44>>633は何を言っているの?
0637デフォルトの名無しさん
2007/05/20(日) 00:02:560638デフォルトの名無しさん
2007/05/20(日) 00:23:35何か問題あるのけ?
0639デフォルトの名無しさん
2007/05/20(日) 02:15:440640デフォルトの名無しさん
2007/05/20(日) 02:41:230641デフォルトの名無しさん
2007/05/20(日) 03:09:21neheの43とリファレンスを見れば足りるかと
0642デフォルトの名無しさん
2007/05/20(日) 12:42:42・各人が対象の細かい仕様を知る労力
・車輪の再発明
を回避するためのものだろ・・・」
って,FTGLのコンパイルに失敗して資料を読んだ俺がそう言ってたよ
0643デフォルトの名無しさん
2007/05/20(日) 18:37:29もっと高速に回転描画させる方法はないでしょうか?
初心者ですが、よろしくお願いいたします。
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)
0644デフォルトの名無しさん
2007/05/20(日) 20:20:460645デフォルトの名無しさん
2007/05/21(月) 00:06:12基本的にはその通り。毎回、一から全部描かないといけません。
そのため、要は100万本の直線をどうやって速く描くか?という問題になります。
もうちょっと具体的には、glVertexを100万回呼ぶ代わりに
glDrawArraysやglDrawElementsを1回呼んで済ましたり、
DisplayListやVertexBufferObjectといったものを利用するわけです。
丁度>>626で良いサイトが紹介されてるので、一度覗いてみると宜しいかと。
>>644
首を回転させた方が早いよ?
0646デフォルトの名無しさん
2007/05/21(月) 00:08:36基本的には、繰り返しが必要。
実装方法で、高速化を図る。
もしくは、アルゴリズムをみなおす(100万本をきちんと描画する必要があるのか?とか)。
ただ、VBで高速化を目指そうというのが、そもそもの間違い。
0647デフォルトの名無しさん
2007/05/21(月) 02:15:07大量の頂点群をリアルタイムでこねくりまわしたりするならともかく、
643みたいな単純な例ならVBでも問題なっしん。
OpenGLの高速化って、「いかにコマンドのsubmitを減らすか」「いかにステート変更を減らすか」
「いかにデータの転送を減らすか」が焦点だから、言語の速い/遅いに関係無く応用できるよ。
それよりVBって知らない(N88-BASICなら使ったことあるw)んだけど、
ポインタどうするのかな。頂点配列とか使えんのかいな??
0648デフォルトの名無しさん
2007/05/21(月) 08:15:520649643
2007/05/22(火) 00:16:45いろいろ高速化の方法がありそうですので、これからじっくり勉強したいと思います。
0650デフォルトの名無しさん
2007/05/22(火) 14:27:080651デフォルトの名無しさん
2007/05/22(火) 14:29:19それが一番早い。
0652デフォルトの名無しさん
2007/05/22(火) 14:33:430653デフォルトの名無しさん
2007/05/22(火) 15:31:470654643
2007/05/23(水) 16:43:00Dim 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)
0655643
2007/05/23(水) 16:50:28なにか間違っているのか、もしくはVB6では頂点配列はサポートされていないのでしょうか??
もしご存知のかたがおられましたらご教示ください!
0656デフォルトの名無しさん
2007/05/23(水) 18:19:43取りあえず、なんで3次元直線100本引きたいのに
Vert(100)、bmLineStripなのかと質問したい。
0657643
2007/05/23(水) 20:39:16連続した100万本の直線で形状を表現をしたくてbmLineStripなのです。
とりあえずテストで100本と思ったのですが、よく考えたらvert(100)だと32本?しか引かれませんね・・
ボケてました。。
0658デフォルトの名無しさん
2007/05/23(水) 21:14:53VBで見るOpenGLってすげー新鮮。w
BASICの配列のインデクスって1ベースじゃなかったっけ。Forループおかしくない?
・・・と思って調べてみたら、VBは0ベースだったのね。へー。
1.3次元の頂点を100個送るんだから、Doubleの配列は300個必要だと思うんだけど。
2.1本しか見えないのに、「すべて重なっている」と判断した理由は??
3.何故か知らないけど、glDisableClientState(GL_VERTEX_ARRAY)しないと正常に描画されない
ことがあったよ。SwapBuffersの前にCall glDisableClientState(caVertexArray)を加えてみては?
0659654
2007/05/23(水) 22:38:13有難う御座います。
1.ですよね・・300個用意してみました。
2.視点をいろいろ変えて描画させてみたのですが、どこから見てもほぼ1本しか見えませんでした。
しかし回転角度によってはちらっと2本見えたり、意味不明な状態です。
3.Call glDisableClientState(caVertexArray)加えてみましたが、ダメでした。
ネット検索してもVBで頂点配列使った例はないようで・・困りました。
0660デフォルトの名無しさん
2007/05/24(木) 20:12:51定数が、caVertexArray/ipnDouble/bmLineStripと命名規則がバラバラなのが気になる。
CだとGL_VERTEX_ARRAY/GL_DOUBLE/GL_LINE_STRIPなんだけど、VBの定数ってどうなってるの??
ipnDoubleあたりが怪しい気がするんだけど、ちゃんと合ってる??
てか、このあたりの知識はどう調べれば良いのかな。"ipnDouble"でぐぐっても一件も出てこないし。(゚д゚)
0661デフォルトの名無しさん
2007/05/24(木) 21:39:020662654
2007/05/26(土) 01:27:44試してみたところ、VBでも「GL_」で始まる定数を使えるようです。
実際にGL_DOUBLEとipnDoubleの定数の値を表示させてみたら同じ値でしたので、他に原因がありそうです。
頂点配列は諦めるしかないですかね・・皆様アドバイス有難う御座いました。
0663デフォルトの名無しさん
2007/05/26(土) 10:16:200664デフォルトの名無しさん
2007/05/26(土) 10:21:170665デフォルトの名無しさん
2007/05/28(月) 19:54:330666デフォルトの名無しさん
2007/05/28(月) 20:02:47fedora coreだからAIGLX。。なんかのテストかい?
0667デフォルトの名無しさん
2007/05/28(月) 20:28:10Xglと勘違いしてませんか?
てか、俺もglxの使い方を知りたい
どこか、参考になりそうなサイトはありませんか?
0668デフォルトの名無しさん
2007/05/28(月) 22:30:220669デフォルトの名無しさん
2007/05/28(月) 23:21:040670デフォルトの名無しさん
2007/05/30(水) 08:13:32terragenスレ行け
0671デフォルトの名無しさん
2007/05/31(木) 09:43:20ときたから、プロフィールも見ずにことわってしまったよ。
ここみてたら、ごめんよ。
0672デフォルトの名無しさん
2007/05/31(木) 11:49:050673デフォルトの名無しさん
2007/06/01(金) 16:47:30本当に簡単なサンプルソースがあるところ教えてください
0674デフォルトの名無しさん
2007/06/01(金) 20:33:17これって標準で、D3DでいうところのPixelShader2.0ができるということでわ?????
D3DだとPS2.0からはFixedPoint精度シェーダを使用できないが
OpenGLだと明示すればhalfもFixedも使用できる点がゴイスー
0675デフォルトの名無しさん
2007/06/01(金) 23:51:00GLUTに限定しないでぐぐれば、すぐ見つかるっしょ
>>674
そのコピペはどの辺が面白いの?
0676おしえてちゃん
2007/06/03(日) 11:48:24点を二つ作り、その点の大きさをgl_PointSizeを使って
大きくしたら、点が重なりました。その重なった部分の処理は
どのように処理されるのですか?
1,(vertex + fragment を一単位と考えて)
二度シェーダプログラムを呼んで色の混合を作る。
2,(上と同じ考えで)一度で処理する。
3,そのほか
よくわかりませーん
どれですか?
0677デフォルトの名無しさん
2007/06/03(日) 16:14:25マルチしすぎ
0678デフォルトの名無しさん
2007/06/03(日) 19:09:04いくらなんでもマルチしすぎワロタ
0679デフォルトの名無しさん
2007/06/03(日) 20:25:33貼り付けるものが、[x y 輝度値]といったファイルで格納していて
たとえば x=1 y=1 (255 255 0)見たいな値が書き込まれているファイルがあります
それをポリゴンに書き込んで行きたいのですが
透明なポリゴンの作り方と
そのポリゴンに色を落としていく方法を教えてもらえないでしょうか
x y 輝度値 を読み込んでというとこまでは出来たのですが
ポリゴンに書き込んでいくのが出来なくて…
0680デフォルトの名無しさん
2007/06/03(日) 20:27:58x 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
という風になっています
0681デフォルトの名無しさん
2007/06/04(月) 00:06:17読み込んだ画素値をそのままテクスチャーにすれば、いいんでないかい?
0682デフォルトの名無しさん
2007/06/04(月) 10:50:53・テクスチャーに、データをもとに、3Dでレンダリングして点を打つ
・データをもとに、テクスチャーを生成したい
後者なら、そもそも、普通のBITMAPやらの画像をテクスチャーにするのと変わらんから、
やぱり前者だろうか
0683デフォルトの名無しさん
2007/06/04(月) 12:02:45配列に格納したデータをもとに
その大きさ分(64×64)の透明なテクスチャを作って
その透明なテクスチャにRGB値の色を落としこんでいくということです
後者であれば、値を元にPPMとかで画像を生成すればいいと思うのですが
それではなくて…
と、書いてるうちに混乱してきました
0684デフォルトの名無しさん
2007/06/04(月) 14:53:31NeHe Productions: OpenGL Lesson #36
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=36
いやでも、textureにレンダリングはOpenGLだと拡張機能使わないとできなかった気がするのだが
0685デフォルトの名無しさん
2007/06/04(月) 15:02:34他に一般的な方法あったら教えてくれ。
拡張機能の 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」で検索するといっぱい出てくる
0686デフォルトの名無しさん
2007/06/04(月) 15:26:43ありがとうございます。探し方まで教えていただいてすみません
なかなか難しそうですね。
同じようなことをやるには画像を作って、貼り付けるのが簡単なんでしょうか。
透明なポリゴン、というところで
ある色を透明化して張らなくてはならなくて
しかもそれが沢山積み重なっているのです
透過PNGを大量に重ね合わせるイメージを
数値をもとにやっていくにはどうしたらいいのかと思って…
0687デフォルトの名無しさん
2007/06/04(月) 15:28:13一旦テクスチャーに書く画像を画面にかいて、
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
0688デフォルトの名無しさん
2007/06/04(月) 17:22:17http://pc11.2ch.net/test/read.cgi/tech/1141034983/
で話題が出ていたが、
・pbuffer
・FramebufferObject
・CopyTexImage2D
のいずれかという結論のようだ
前者二つは、場合によっては対応していない
0689デフォルトの名無しさん
2007/06/04(月) 17:34:17http://www.delphi3d.net/hardware/extsupport.php?extension=WGL_ARB_pbuffer
・framebuffer対応状況
http://www.delphi3d.net/hardware/extsupport.php?extension=GL_EXT_framebuffer_object
圧倒的に、pbufferの方が対応状況がよいな・・・
0690デフォルトの名無しさん
2007/06/04(月) 19:51:060691デフォルトの名無しさん
2007/06/04(月) 21:24:220692デフォルトの名無しさん
2007/06/04(月) 21:36:31ありがとうございます。
教えていただいたものを参考に色々やってみたのですが
どうもまだレベルが高いようで…よく分かりませんでした…
ttp://wisdom.sakura.ne.jp/system/opengl/gl22.html
こちらにあるようなやり方で
イメージを書き出してテクスチャにする、ということをやってみました
これでファイルから読み込んで、その値を書き出して、ポリゴンに貼り付けるループが組めればなんとかいけそうです
みなさん色々とすみませんでした
0693デフォルトの名無しさん
2007/06/04(月) 23:46:58手っとり早いと思うんだけど・・・。
0694デフォルトの名無しさん
2007/06/08(金) 21:03:52ttp://sugarpot.sakura.ne.jp/yuno/?GLX
0695デフォルトの名無しさん
2007/06/10(日) 07:46:48参考になるサンプルやサイトはあるでしょうか?
0696デフォルトの名無しさん
2007/06/10(日) 12:55:39無限平面って光の反射がうまくいってないとか?
0697デフォルトの名無しさん
2007/06/10(日) 13:42:490698デフォルトの名無しさん
2007/06/10(日) 16:19:120699デフォルトの名無しさん
2007/06/10(日) 19:53:57でっかいポリゴン表示するの?
0700デフォルトの名無しさん
2007/06/10(日) 20:08:360701デフォルトの名無しさん
2007/06/10(日) 20:08:490702デフォルトの名無しさん
2007/06/10(日) 20:11:54無限平面なんて無理じゃね?
0703デフォルトの名無しさん
2007/06/10(日) 20:12:540704デフォルトの名無しさん
2007/06/10(日) 20:13:030705デフォルトの名無しさん
2007/06/10(日) 20:14:04このポリゴンのこの範囲を、どこに行っても表示するようにループさせればよい。
表示範囲、たとえば512x512としてだ
513まで来たらループでまた同じポリゴンを表示。
変えたいなら、この座標に来たらこれ、というように別のポリゴンを指定。
0706デフォルトの名無しさん
2007/06/10(日) 20:15:48glBegin(GL_TRIANGLE);
glVertex4f(-1, 1, 0, 0);
glVertex4f(1, 0, 0, 0);
glVertex4f(0, 1, 0, 0);
glEnd();
これは一応無限平面じゃ?
0707デフォルトの名無しさん
2007/06/10(日) 20:28:42こんな感じで表示したいときは無限にループさせんの?
ttp://mps.q.t.u-tokyo.ac.jp/~tanaka/POV-Ray/plane.jpg
0708デフォルトの名無しさん
2007/06/10(日) 22:01:060709デフォルトの名無しさん
2007/06/10(日) 22:04:10ああ、それだそれ
0710デフォルトの名無しさん
2007/06/10(日) 23:02:04有限な大きさのポリゴンを敷き詰めるやり方で
それを描くためには無限回ループさせる必要がある。
実際にはCRTの解像度が有限なので、
有限な回数で打ち切っても地平線を近似できる筈。
ただしこのやり方は非常に効率が悪いと思う。
0711デフォルトの名無しさん
2007/06/10(日) 23:06:400712デフォルトの名無しさん
2007/06/10(日) 23:49:390713デフォルトの名無しさん
2007/06/11(月) 00:28:420714デフォルトの名無しさん
2007/06/11(月) 00:32:300715デフォルトの名無しさん
2007/06/11(月) 00:38:52本来なら>>706で正しく表示できて欲しいけど・・・
0716デフォルトの名無しさん
2007/06/11(月) 00:54:300717デフォルトの名無しさん
2007/06/11(月) 00:57:330718デフォルトの名無しさん
2007/06/11(月) 00:59:210719デフォルトの名無しさん
2007/06/12(火) 17:43:521. 自前で射影/モデリング行列を設定
2 セレクションで対象ポリゴン特定
3. 視点(0,0,0) > クリック座標(x,y,near) のレイを生成
4. 射影逆行列でレイをワールド座標に変換
5. モデリング逆行列で 4. を変換
6. 対象ポリゴン(ローカル座標)へ、レイキャストして交点を求める
というのを考えてみたんだけど、他にいい方法ない?
0720デフォルトの名無しさん
2007/06/13(水) 00:35:12マルチバッファにしようと思って設定を変更したらglBegin(GL_POINTS);賀向こうになってしまいました。
点の大きさとして4.0を指定しても、1pixelの点としか描画されません。
誰か解決方法をお願いします。
0721デフォルトの名無しさん
2007/06/13(水) 01:02:54何も表示されないように思えていました。
事故解決しましたので、失礼します。
0722デフォルトの名無しさん
2007/06/13(水) 01:39:42私はこんな感じでやってます。
1.視点(0,0,0) > クリック座標(x,y,near) のレイを「ワールド座標で」生成
(視点の向きやビューポートの大きさは分かってることが多いので、
わざわざ射影逆行列使わなくてもすぐ計算できます。)
2.モデリング変換の逆変換でレイを変形させながらシーンをトラバース
(セレクションとか使わないで直接、視点に一番近いオブジェクト/
トライアングルを求めます。)
2-1.もちろん、それまでに見つかった交点より明らかに遠いオブジェクトはカリング
2-2.あとは普通に三角形とレイの交差判定
んー、発想としては、結局同じかな。
最終的には、「適当なシーングラフを使う」というのが一番いい方法な気もします。w
0723デフォルトの名無しさん
2007/06/13(水) 03:14:37>「適当なシーングラフを使う」
kwsk
0724デフォルトの名無しさん
2007/06/13(水) 03:16:23サーフェスロスト?ってないはずですよね?
全画面にしたら、環境によっては画面うつらなくて・・・
0725デフォルトの名無しさん
2007/06/14(木) 00:27:49んぇーと、何を詳しく?? もうちょっと具体的に質問plz
「シーングラフ OpenGL」でぐぐれば、いくらでも情報は出てくるです。
大抵のシーングラフAPIは、交差判定くらいサポートしてるので
719みたいな事例では楽できますよっと。
0726デフォルトの名無しさん
2007/06/15(金) 19:39:28まさに今、レイキャスをやりたいと思っていて
レイを飛ばすところから教えてください。
ソース見せていただけると一番ありがたいです
0727デフォルトの名無しさん
2007/06/16(土) 00:25:24視点が<0 0 0>にあって、物体を回転させたいときとか
わざわざモデルに行列をかけて、平行移動(原点へ)→回転行列→平行移動
という風な処理をしているのでしょうか?
始めたばかりでこんがらがっているのですが
教えていただけませんか?
0728デフォルトの名無しさん
2007/06/16(土) 00:44:47回転は常に原点中心だぞ。
0729デフォルトの名無しさん
2007/06/16(土) 00:53:27depthbuffer から座標を求めればいいと思うけど、そういうことではないのか?
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);
こんな感じ。
0730デフォルトの名無しさん
2007/06/16(土) 01:30:13言いたかったのは、原点に無いモデルを回転すると
その場で回転しないで、軸を中心に回転しますよね
<0 0 1>にある□をその場でクルクル回したいときは
いったん<0 0 -1>をして原点に戻してからクルクルまわして、また元の場所に戻しますよね
<0 0 1>にあるときにy軸中心に30度まわしたりすると、移動しちゃいますよね
0731デフォルトの名無しさん
2007/06/16(土) 01:38:55理解した。
その通りです。
0732デフォルトの名無しさん
2007/06/16(土) 01:58:38それだと、ローカル座標が求まってないとおもー。
そこからローカル座標を求めるためにはオブジェクトの座標系が必要だけど、
拾ってきたピクセルがどのオブジェクトに属していたのか分からないっしょ。
(アルファやステンシルにタグを載せておく手も無いではないケド・・・)
あと、場合によっては精度が結構落ちるのも問題かもですよ。
>>730
普通は原点中心にモデルを作って、それを回転→移動させますね。
原点から外れてるモデルは、仕方が無いので仰る通り、移動させて回転させて移動させます。
ちなみに視点が(0, 0, 0)にある云々は関係無いです。
0733デフォルトの名無しさん
2007/06/16(土) 02:00:14物体が大量にあって、それに対して回転やら拡大したいと思ってて
最終的にはレイを打って、ピッキングしたいと思ってるのですが
わざわざ、移動・回転・移動や
レイを打つ計算量を考えたら、、、きついなぁと思って
物体を原点において、視点を下げればいいとも思ったのですが
それだとレイを打つのが大変そうで…というか、レイの打ち方もよくわからなくて
かなり先行き困難な状態で、今も「レイキャスティング OPENGL」でググってました
正直しんどいです
0734デフォルトの名無しさん
2007/06/16(土) 02:06:39物体の回転・拡大ではないです
視点自体を回転・拡大(接近)しようとも思っているのですが
それだと今度はレイを打つのがどうなんだろう、、、と悶々と
レイキャス・ピッキングのお手本になるもの、何かあれば教えてください
0735デフォルトの名無しさん
2007/06/16(土) 02:52:51レイキャスティングやピッキングってのは、「幾何計算」の問題であって、
ぶっちゃけて言えばOpenGLはほとんど関係無い領域の話なんですよねぇ・・・。
OpenGLがやってくれるのは、最終的な「表示」だけですから。
物体が大量にあっても、適切な空間分割をしてあれば計算量はそんな簡単には
爆発しないです。この辺は、「データ構造」に関わる話題ですかね。
手本になるものは残念ながら示してあげられませんが、ぐぐるなら「OpenGL」は
含めない方がよろしいかと。希望を打ち砕くかもしれませんが、ピッキングは
OpenGLを利用することを考えるより、自分で交差判定を実装するべきじゃないでしょうか。
(「交差判定」「空間分割」くらいでぐぐると、その辺の話題があるかな?)
>正直しんどいです
この辺の話は、かなり経験を積んでたとしても、大抵の人にとってはしんどいです。(笑)
0736デフォルトの名無しさん
2007/06/16(土) 03:04:31しばらく考えてようやくわかった(と思う)。
オブジェクトによって、ローカル→ワールドの変換マトリックスが違うのを想定しているのね。
それなら、とりあえずオブジェクトを特定した後に、719で求めたワールド座標からそのオブジェクトに
応じた変換をすればいんじゃない?
レイキャストしたことないので、なんかよくわからん。
depthbuffer で精度が落ちるのというのには同意。
0737736
2007/06/16(土) 03:05:51719で求めた→729で求めた
0738デフォルトの名無しさん
2007/06/16(土) 10:23:33ttp://tpot.jpn.ph/t-pot/program/92_RayTraceSphere/index.html
私もレイトレしてみたくて、t-potさんとこのDXソースを眺めていたのですが
// 視点を射影空間からワールド座標に変換する で既に煮詰まりました・・('A`)
OpenGLで似たような基本的なサンプルはありませんか?
海外のソースだとあるにはあるが、、シンプルでないのでサッパリ・・
それと、おそらく上に出てた座標変換関連があまり分かってないので
その辺りの、ワールド、ローカル、モデルビュー変換、射影変換、透視変換、ビューポート変換等々・・
が、丁寧に解説されているサイトはないでしょうか?
質問ばっかですみません。お願いします。
0739デフォルトの名無しさん
2007/06/16(土) 10:54:06ナカーマ…だよ
同じようなことやって詰まってる人だよね
0740デフォルトの名無しさん
2007/06/16(土) 11:41:51http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/coordinates/disp_content
0741738
2007/06/16(土) 12:33:28ありがとうございます。
ただ、そういう日本語での解説なら所々にあるのですが
実際に、ローカル座標からワールド座標に変換するコードを書けと言われると出来ないのです。。
また、>>740のサイトにもあるように、
> クリップ座標系は眼点座標系に射影行列を適用して得られる座標系である
と、言われても、、、急に射影行列が出てきたり、適用=乗算なのかとかサッパリ分からんのです・・('A`)
クリップ座標からワールド座標に変換したり、
眼点座標系とローカル座標は、どういう繋がりがあるのか?等々、どうやって皆さんは理解していったのでしょうか?
0742デフォルトの名無しさん
2007/06/16(土) 13:22:11おまいは俺か…やってること同じなのかも
グローバルイルミネーション入門のところでレイの飛ばし方とかの解説が書いてあったよ
glutではじめるOPENGL入門みたいに書いてくれてるページ無いのか
レイキャスに限らず色んなもので「簡単なアルゴリズムで云々」と書かれてるが
アルゴリズムが簡単でも、それを実装するにはどうしたらいいんだよ!てところが無い
ひでぇよちくしょお
0743デフォルトの名無しさん
2007/06/16(土) 13:26:530744デフォルトの名無しさん
2007/06/16(土) 16:07:42>// 視点を射影空間からワールド座標に変換する で既に煮詰まりました・・('A`)
レイトレやピッキングをやるのなら、必ずしも射影空間を扱う必要は無いです。
ワールド座標系の中での、ローカル座標同士の変換ができれば十分かと。
>>741
>実際に、ローカル座標からワールド座標に変換するコードを書けと言われると出来ないのです。。
どのレベルで出来ないのれすか?
1. ローカル座標、ワールド座標の意味が分からない
2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない
3. ベクトルと行列の掛け算のやり方を知らない
4. C言語での実装ができない
>と、言われても、、、急に射影行列が出てきたり、適用=乗算なのかとかサッパリ分からんのです・・('A`)
あー、そういう細かいことでつまずいちゃうのは辛いかもね〜かもね〜。
ちなみにこの文脈では 適用=乗算 ですが。
>眼点座標系とローカル座標は、どういう繋がりがあるのか?等々、どうやって皆さんは理解していったのでしょうか?
そう言われてみると、どうやって理解していったんだったっけな・・・。もう忘れちゃった。
今誰かに教えるなら、以下の順番かな。
1.基本(デフォルト)は眼点座標。頂点座標は全部、眼点座標で指定しる。とりあえず絵は出るし。
視点やオブジェクトを移動したいなら、座標データを全部書き換えればいいでしょ。
2.でもそうやっていちいちデータ書き換えるのは大変だし遅くなるから、OpenGLでは
座標変換機構を用意してくれてるんですよ。これでローカル座標が扱える。ほら便利。
3.実は3Dハードウェア内部では、クリップ座標以下こんな座標変換を通して描画されてますよ。
でもまぁこれ以降を詳しく知る必要が出てくるのはもっと先の話かな。シェーダでは必須だけど。
>>742
>アルゴリズムが簡単でも、それを実装するにはどうしたらいいんだよ!てところが無い
アルゴリズムが分かれば、実装できるのが普通だから・・・。
実装の経験が足りてないんじゃないでしょうか。
0745デフォルトの名無しさん
2007/06/16(土) 16:30:02「2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない」
ここがよくわからないです。glOrthoやgluPerspectiveあたりでゴニョゴニョしてるのか
34についてはとりあえず出来ます。
例えば<0 0 0>にあるオブジェクトは、どういう行列を掛けると、○○座標のどこに来るか、とか言ってくれるとわかりやすいです
何か、イメージが出来ないままで、先に進められてる感じがして
0746738
2007/06/16(土) 16:43:12ありがとうございます。
> 1. ローカル座標、ワールド座標の意味が分からない
おおよそ分かっていると思いますが、充分でない理解かもしれないです。
> 2. ローカル座標⇔ワールド座標は 行列/逆行列 を通して変換できることを知らない
理解が充分でないと自分で感じている箇所です。
> 3. ベクトルと行列の掛け算のやり方を知らない
ソース公開してる所などでよくある関数群なので理解しています。
> 4. C言語での実装ができない
2が理解できていないのでレイトレが実装出来ないのだと思います。
> 座標変換機構を用意してくれてるんですよ。これでローカル座標が扱える。
この場合の座標変換機構とは、glMatrixMode(GL_MODELVIEW);の事なんでしょうか・・?
なんだかよく分からなくなってきました。。orz
環境マッピングとかのコードを見よう見真似で書いて、
それなりにOpenGLが使えるような気がしていたのですが、、どうにも根本的なとこが。。
0747デフォルトの名無しさん
2007/06/16(土) 22:57:373つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。
□派遣先正社員の作った糞開発ツールはたとえバグだらけでも苦労して使うべきだ
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□昼食は必ず派遣先の社員と行くべきだ
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、かわいがってもらうことが大切だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ
0748デフォルトの名無しさん
2007/06/20(水) 03:16:28現在、glDrawPixels/GL_LUMINANCE/GL_UNSIGNED_BYTE
で、モノクロ8bitグレースケールのVGAサイズのカメラ入力画像を描画しています。
カメラのシャッタを開けている時間、ゲインを制御しても
カメラからの入力画像が暗い場合があり、
描画時にゲタを履かせる事を考えています。(描画を明るくしたい)
glDrawPixels で転送するピクセルデータを、事前にソフトで
直接加算処理をしても良いのですが、
なるべくCPUに負荷をかけたくないので、何か良い方法があれば教えてください。
仮にOpenGLで同種の処理を行う場合、glTexImage2Dでテクスチャにビットイメージを関連づけて
glBlendFuncで加算合成をすれば良いのでしょうか?
0749デフォルトの名無しさん
2007/06/20(水) 05:20:05いいような気もするけどね・・・
0750デフォルトの名無しさん
2007/06/20(水) 09:59:180751748
2007/06/20(水) 23:09:59やはりそうですかね...。
>>750
別スレッドで画像処理をしていて、表示にはできるだけ負荷を
かけたくありません。糞重い?のは、今回の用途の場合、
事前にテクスチャをGPU VRAM上へ常駐させる事も
できない(カメラからの画像を60fpsで取得しています。)ので、
glDrawPixelsを使うしかないのかな...と思っていますが、
他に何か方法があるのでしょうか?
640×480 なので、1024 × 512 のテクスチャサイズに
変更して貼り付けるのも、1秒間に60回となると馬鹿になりません。
0752デフォルトの名無しさん
2007/06/22(金) 08:36:00glPixelTransfer[iv] というのがある。
GL_○○_BIAS で下駄を履かせられる。
GL_○○_SCALE や
GL_MAP_COLOR でもいいかも。
glPixelTransferを使ったことなかったので、試しに
glPixelTransferf(GL_ALPHA_BIAS, );
を使用してみたら、すげー遅かった。
何度も描画するなら、先にCPUで計算しといた方がいいと思う。
0753デフォルトの名無しさん
2007/06/22(金) 08:38:16TextureRECTかNPT使えば1024x512にしなくてもいいぜ
あとはクリアカラーでバイアス分指定してBlendで加算すりゃいいんじゃね?
シェーダー使えば単純にバイアスかけるんじゃなくて
もっと凝ったことできるけどそこまで必要ないならBlendでいいな
0754デフォルトの名無しさん
2007/06/22(金) 14:33:31視点からレイを打って云々というの出来たお
0755738
2007/06/22(金) 18:58:48最初にレイを飛ばす所のコードを貼って(or うpして)頂けると有難いです。
交差判定はある程度、分かってきたと思ってるのですが。。
0756デフォルトの名無しさん
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クリップ面の座標は、賢いやり方が他にあると思うのですが…
これで画面の点と、視点とを結ぶ直線を順番に打っていけます
わかりにくいと思いますので、分からないところは言ってください。
交差判定について教えていただけると嬉しいです。
0757738
2007/06/23(土) 10:12:58おぉ、ありがとう!
gluUnProjectを使えば良かったのか・・
マウスでプリミティブを作成する時なんかに普段から使ってたよ・・orz
0758デフォルトの名無しさん
2007/06/23(土) 15:31:38確かにビューポートからnear clip面の位置は算出できるはずなのですが
どうにも文系の頭のため、、、私には難しいみたいです。
交差判定でどのようなところで調べました?
0759yd
2007/06/25(月) 19:33:060760デフォルトの名無しさん
2007/06/25(月) 20:05:04int 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();
0761デフォルトの名無しさん
2007/06/25(月) 20:07:15GLUTベースの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をビルドするよい方法などがあれば教えて下さい。
0762デフォルトの名無しさん
2007/06/25(月) 20:21:34そのエラーコードでググったら、2005 年に CVS バージョンでは直ってるという
ログがあったけど、最新のバージョン使ってる?
0763デフォルトの名無しさん
2007/06/25(月) 20:30:26ありがとうございます!
ぼくもこのエラーでググって見たんですが…
どうも探し方が甘かったようです。
とりあえず今からチェックしてみます。
0764デフォルトの名無しさん
2007/06/25(月) 20:54:17当方MacOS X 10.4.10 MBP
http://glui.sourceforge.net/#download
の
glui-2.35.zip
を
cd ~/Desktop/glui-2.35/src/
make
で簡単にlibglui.aを作れましたが?
0765デフォルトの名無しさん
2007/06/25(月) 21:21:42うわ、本当だ、すぐに出来ちゃいました。
どうも本当にありがとうございます。
皆さんどうもありがとうございました。
0766や
2007/06/28(木) 01:32:13御教授お願いします。
0767デフォルトの名無しさん
2007/06/28(木) 09:38:440768デフォルトの名無しさん
2007/06/30(土) 18:57:240769デフォルトの名無しさん
2007/07/01(日) 18:06:28「ソースコード中のここからここまで」という意味ではないよ。
なんにもしないループに突入、と思え。
0770デフォルトの名無しさん
2007/07/01(日) 21:10:58と聞いて俺までわからなくなった
0771デフォルトの名無しさん
2007/07/01(日) 22:43:25その説明はイイねw >なんにもしないループ
でも分からない人にはワケワカランよw
>>768
glutMainLoop()を呼ぶと、GLUT内部の永久ループに突入して、二度と帰って来ない。
この永久ループは基本的に何もしないループ。
・・・なんだけど、ひとつ役割があって、「ウィンドウのサイズが変更された」とか
「ウィンドウを再描画することが必要になった」とか「マウスが動いた」とか・・・その他、
色々な「イベント」が発生したときに、そのイベントに応じて関数を(事前に登録して
あればだけど)呼び出してくれる。
その関数を登録するのが、 glutなんちゃらFunc() って名前の付いてる関数なのね。
これでお分かり??
0772デフォルトの名無しさん
2007/07/01(日) 22:50:18ループは GLUT のライブラリの中にある。
それは回転寿しの廻るベルトみたいなモンで、基本的にずっとループし続けている。
寿司職人のあなたは、そのベルト上に自分の売りたい寿司を握って置いてあげる
必要がある。客が良く注文するような寿司ネタも廻しておかないといけない。
あなたはお店のオーナーじゃないので、ベルト自体は基本的に弄れない。
0773デフォルトの名無しさん
2007/07/01(日) 23:18:11ということはglut〜Func()の中に重たい処理なんかを入れた場合…
たとえば、左クリックしたら、10000×10000×10000のループをする、なんてもので、
それが命令ごとに呼び出されるわけですね。
ありがとうございました。頭がスッキリしました
0774デフォルトの名無しさん
2007/07/21(土) 04:14:35テクスチャを貼り付けて表示させてみるとどうも上下逆になってしまう…
外部から読み込んだ画像はきちんと表示できるのでテクスチャ座標の指定は間違ってないと思うのですが
0775デフォルトの名無しさん
2007/07/21(土) 11:11:14コピーする基点はウインドウの左下ってことは分かってる?
0776デフォルトの名無しさん
2007/07/21(土) 11:30:13OpenGLは画面座標もテクスチャ座標も左下が原点だよ
0777774
2007/07/21(土) 18:31:03解決しました。ありがとうございます
0778デフォルトの名無しさん
2007/07/22(日) 01:46:43そうだろ。bmpなんか逆に格納されてたりするからな
0779デフォルトの名無しさん
2007/07/22(日) 20:09:10自分はOpenCVだけど他の人たちはどんなの使ってるんだろ
0780デフォルトの名無しさん
2007/07/22(日) 20:53:390781デフォルトの名無しさん
2007/07/22(日) 23:02:33>>779
自分はFreeImageのお世話になってマス
0782デフォルトの名無しさん
2007/07/23(月) 01:49:01上からってあるのですか? ヘッダ高さ情報をマイナスで書くとか言うアレですか?
0783デフォルトの名無しさん
2007/07/26(木) 19:37:40そういった単語の読み方の乗っているサイトってありませんか?
0784デフォルトの名無しさん
2007/07/27(金) 09:28:33作成しているのですが、回転させるときに
軸に対して反時計周りに回転させるときは普通に回転するのですが、
時計回りに回転させようとするとなぜか回転方向が反転してしまいます。
最初の角度を0とすると+15、+30・・・には動くのに
0から-15、-30・・・と回転させようとするとなぜか+15、+30・・・
になってしまい、キーボードからの入力への反応も逆になります。
(さきに+90まで動かせば0までは回転できる、それ以上マイナスに
回転しようとすると何故かプラス方向に回転を始めてしまう)
マイナス方向には回転できないものなのでしょうか?
0785デフォルトの名無しさん
2007/07/27(金) 09:48:27できるよ、としか言えない
どういう計算で回転させようとしてるのか分からんとなんとも
ちゃんと角度が負の値になってるかどうか確認してみ
0786デフォルトの名無しさん
2007/07/27(金) 11:51:19回転角度がマイナスになるときにベクトルもマイナスになってたせいでした。
ありがとうございました。
0787デフォルトの名無しさん
2007/08/02(木) 06:29:33glPointSizeを使って点の大きさを変更しようとしたところ、
数値を変えても全く反応がありません。
GL_POINT_SIZE_RANGEの数値を調べて、その範囲になるようにしたのですが、
点が大きくならないのはグラフィックカードが駄目なせいでしょうか?
0788デフォルトの名無しさん
2007/08/02(木) 11:15:490789デフォルトの名無しさん
2007/08/02(木) 20:50:43ってなんでいつもやらないといけないの?
0790デフォルトの名無しさん
2007/08/02(木) 22:32:520791デフォルトの名無しさん
2007/08/02(木) 22:41:00自分でも探してみたのですがなかなかいいサイトが見つかりませんでした。
0792デフォルトの名無しさん
2007/08/02(木) 23:04:320793デフォルトの名無しさん
2007/08/03(金) 00:21:280794デフォルトの名無しさん
2007/08/04(土) 01:06:370795デフォルトの名無しさん
2007/08/04(土) 01:36:54あと、使うなら GLUT とか GLEW とかお好みで
0796デフォルトの名無しさん
2007/08/04(土) 23:36:30その関数を使うことによってどういう効果が得られるのかという「関数の効果」、
そうした情報がないとどうしようもないだろ
0797デフォルトの名無しさん
2007/08/05(日) 00:24:23ttp://son-son.sakura.ne.jp/programming/opengl/
のWindowsSDK, MFCあたりとか
0798デフォルトの名無しさん
2007/08/05(日) 05:36:49たのむ
0799デフォルトの名無しさん
2007/08/05(日) 17:02:120800デフォルトの名無しさん
2007/08/05(日) 17:06:21DirectSoundやDirectInput使ってもいいし、OpenALでもいいし。
SDLという手もあるし。
0801デフォルトの名無しさん
2007/08/05(日) 17:34:200802デフォルトの名無しさん
2007/08/05(日) 19:30:110803デフォルトの名無しさん
2007/08/05(日) 20:00:440804デフォルトの名無しさん
2007/08/05(日) 20:22:110805デフォルトの名無しさん
2007/08/08(水) 16:47:39ttp://www.xmission.com/~nate/glut.html
ここから落としたdll,lib,hファイルを各対応フォルダにコピーして
<GL/glut.h>をインクルードしているのですが
error C3861: 'glvertex2f': 識別子が見つかりませんでした
などのエラーメッセージが出てしまい困ってます。
0806デフォルトの名無しさん
2007/08/08(水) 16:53:46#include <GL/gl.h>
0807デフォルトの名無しさん
2007/08/08(水) 16:57:01× glvertex2f
○ glVertex2f
0808デフォルトの名無しさん
2007/08/08(水) 17:27:14bmpからテクスチャを作るときは
目的のbmpは何処に置いておけばいいのですか?
0809デフォルトの名無しさん
2007/08/08(水) 17:30:14ものすごい初歩的なミスでしたorz
ありがとうございます
0810デフォルトの名無しさん
2007/08/08(水) 17:57:51お好きなところにどうぞ。
0811デフォルトの名無しさん
2007/08/08(水) 18:10:55何処に置いても
faild to open DIB file と言われてしまうのですが
如何すればいいのでしょうか
0812デフォルトの名無しさん
2007/08/08(水) 18:13:42ファイルが壊れてるなんてオチはないよね?
0813デフォルトの名無しさん
2007/08/08(水) 18:21:41GLuint 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;
}
0814デフォルトの名無しさん
2007/08/08(水) 18:24:18テクスチャの付いていない状態で動きます
bmpファイルは置ける場所全部においています
壊れてはいないようでした
0815デフォルトの名無しさん
2007/08/08(水) 19:24:55"c:\\なんちゃら\\かんちゃら\\particle.bmp"
・Visual C++ を使っているのなら、Debug とか Release とかいうフォルダが
勝手に出来てるので、その中に bmp を置いてみる。
0816デフォルトの名無しさん
2007/08/08(水) 22:17:05その一個上のプロジェクトファイルと同じディレクトリが
デフォルトの作業ディレクトリだよ
0817デフォルトの名無しさん
2007/08/08(水) 22:50:490818デフォルトの名無しさん
2007/08/08(水) 23:02:46お手本ファイルの方はちゃんと出来ているので
何か設定を間違えてるのかもしれません
もう少し、自分でやってみます
有難う御座いました
0819デフォルトの名無しさん
2007/08/12(日) 16:45:330820デフォルトの名無しさん
2007/08/12(日) 20:59:200821デフォルトの名無しさん
2007/08/12(日) 22:42:150822デフォルトの名無しさん
2007/08/12(日) 22:44:360823819
2007/08/13(月) 01:37:12なんか気持ち悪いけど、いっか。
どうもありがと。
0824デフォルトの名無しさん
2007/08/14(火) 14:22:58ポップし過ぎるとエラーフラグがセットされちゃうよ。
GL_MODELVIEW_STACK_DEPTHをglGetIntegerv()して、
返った値-1だけポップすればよいかと〜。
0825デフォルトの名無しさん
2007/08/16(木) 16:34:35glMatrixMode(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
0826デフォルトの名無しさん
2007/08/16(木) 18:01:55>Z軸が0だと投影行列操作で指定した
のは、6〜−2では?
gluLookAtで視点(0,0,8)で原点方向を向いている訳だし。
0827デフォルトの名無しさん
2007/08/16(木) 18:20:50ありがとうございましたorz
0828デフォルトの名無しさん
2007/08/22(水) 17:24:04glui32.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 が未解決です。
解決策がわかる方お願いします。
0829デフォルトの名無しさん
2007/08/22(水) 17:29:460830デフォルトの名無しさん
2007/08/22(水) 18:54:48として更にプロパティページから追加依存ファイル
に加えているのですが…
何か足りないですか??
0831デフォルトの名無しさん
2007/08/23(木) 13:33:19プロジェクトのプロパティを開くと、「C/C+」の中に「コード生成」って項目があって
「シングルスレッド」やら「マルチスレッドデバッグDLL」やら6種類ほど選べるように
なってるんで、色々試してみるといいかも。
0832デフォルトの名無しさん
2007/08/23(木) 15:58:45エラーは消えなかったですが、解決の糸口が見つかるかも
しれません。
もうすこしがんばってみます。
0833デフォルトの名無しさん
2007/08/26(日) 17:27:42頂点シェーダで
varying vec4 v = vec4(1.0,2.0,3.0,4.0);
としたとき、
フラグメントシェーダで、
vec4 v1 = v;
とすれば、v1の中身はそのまま(1.0,2.0,3.0,4.0)
になっているってことでしょうか?
0834デフォルトの名無しさん
2007/08/26(日) 20:52:39多角形の凹型ポリゴンを描写するときはどのようにすればよろしいのでしょうか?
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の役割がよく見えません。どのように使うのでしょうか。
また、上記コーディングのようなイメージで凹型ポリゴンを描画
することはできるのでしょうか。
よろしくお願いします。
0835デフォルトの名無しさん
2007/08/26(日) 21:09:43ぶっちゃけ、そのサイトの説明は間違い。
OpenGL は凹型ポリゴンを描画できないので、複数の凸型ポリゴン (というか三角形) に分解して描くのが普通。
どうしても凹型ポリゴンを描きたければ GLU にテッセレータがあるけど・・・ 重いよ
0836835
2007/08/26(日) 21:13:200837デフォルトの名無しさん
2007/08/26(日) 21:22:45そうするとglEdgeFlag関数の役割ってどのようなものなのでしょうか。
よろしくお願いします。
0838デフォルトの名無しさん
2007/08/26(日) 21:25:280839デフォルトの名無しさん
2007/08/26(日) 21:34:170840デフォルトの名無しさん
2007/08/28(火) 18:19:24GLSLで、全てのフラグメントに対して頂点シェーダでの処理を取り入れたいのですが、
通常どおり、DisplayListsにして頂点をそれぞれ入力していくと、
とんでもない大きさになってしまい、使えませんでした。
何かよい方法はないでしょうか?
0841デフォルトの名無しさん
2007/08/28(火) 19:11:000842デフォルトの名無しさん
2007/08/28(火) 19:27:17(gl_Positionやらgl_PointSizeやら・・・)
そもそもフラグメントシェーダだけでは色しか扱えません。
>841
0843デフォルトの名無しさん
2007/08/28(火) 19:32:550844デフォルトの名無しさん
2007/08/28(火) 19:48:130845デフォルトの名無しさん
2007/08/28(火) 19:51:560846デフォルトの名無しさん
2007/08/28(火) 20:55:00から設定できないんじゃないですか?
あれは頂点シェーダ固有だったようにおもいます
>844
varying変数でただ値を送りたいというわけではありません。
"出力先を設定したいのです。"
そのためには頂点シェーダが必要です。
フラグメントシェーダから頂点シェーダを次の回の頂点シェーダを起動させられる仕組みとかあれば、
かなり喜ばしいことなんですが。そういうのはないんでしょうか?教えてください。
845 = 844 ?
0847846
2007/08/28(火) 21:18:58↓
フラグメントシェーダから頂点シェーダを次の回の頂点シェーダを起動させられる仕組みとかあれば、
かなり喜ばしいことなんですが。そういうのはないんでしょうか?教えてください。
こっちに変えてください
↓
すべてのピクセルについて頂点シェーダで処理する機能があれば・・・・以下同文
0848デフォルトの名無しさん
2007/08/28(火) 22:20:03それを頂点(頂点シェーダ)として入力したいとかそんなんだったら
ピクセルバッファオブジェクト使えばいいんじゃないかな。
直接的にテクスチャ→頂点は無いようなぁ。というか知らん。
0849デフォルトの名無しさん
2007/08/28(火) 22:29:09出力先って、そのすべてのピクセルそれぞれじゃないの・・・?
理解が及ばん
0850デフォルトの名無しさん
2007/08/29(水) 00:57:54トライアングルセットアップ前の処理であるバーテックスシェーダと
ラスタライズ後の処理であるフラグメントシェーダでは
「やるべき事/できる事」が全く違うんだけど、
グラフィクスパイプラインのことは理解してるのかな?
840と842を合わせて読むと、まるで各フラグメントごとにPointSizeを
設定したいみたいに読めるけど、それだとまったくもって意味不明だし・・・。
あと「出力先を設定したい」なんて独自用語を使われても皆困ると思います。
用語は正確に使いましょう。
ついでにOpenGLよりもっと抽象的なレベルで、「こうなって欲しい」「こういう絵を描きたい」
というのを説明した方が、返答したり代案出したりしやすいかも。
0851デフォルトの名無しさん
2007/08/30(木) 17:31:26床井さんのところでも、ちょっと難しくて
簡単に紹介しているところとかありませんか?
やりたいのは
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html
こちらのように適当な色を決めてポリゴンに3次元テクスチャとして貼り付けるといった感じです。
よろしくお願いします
0852デフォルトの名無しさん
2007/08/30(木) 17:51:07GL_TEXTURE_2D → GL_TEXTURE_3D_EXT
glTexCoord2f → glTexCoord3f
glTexImage2D → glTexImage3DEXT
あとピクセル配列が三次元分必要なくらい
0853デフォルトの名無しさん
2007/08/30(木) 18:45:01ただ、エラーが出てしまってうまく実行できません。ソースの一部を見ていただいてもよろしいでしょうか
ttp://www.uploda.org/uporg992912.txt
glTexImage3DEXTのところでメモリエラーが出てしまっているようで。
それとは別になってしまうのですが
3次元テクスチャをポリゴンに貼り付ける、というイメージがいまいちできてなくて
3次元テクスチャが空間にある、というのならイメージができるのですが…
すみません、よくわからなくなってきました
0854デフォルトの名無しさん
2007/08/30(木) 19:28:56OpenGLをベースにしたライブラリで
Fox-toolkit
GLUT,GLUI
のニ系統に注目しています。
これらを両立させてコーディングすることは可能でしょうか?
それぞれのパッケージ毎にイベントループが用意されているので
難しいのかな?と思っていますが…
0855デフォルトの名無しさん
2007/08/30(木) 19:34:10混合は難しいと思うよ。やればできるかもしれないけど。
イベントループの機構が違う仕組みを混合させて使うコードを
想像すると、、俺ならやらない。
0856デフォルトの名無しさん
2007/08/30(木) 19:59:45わかりました。俺もやらないことにします。
0857デフォルトの名無しさん
2007/08/30(木) 21:42:35//#include <GL/glext.h>
これが原因ではないかい?
0858デフォルトの名無しさん
2007/08/30(木) 21:47:49GPUがAtiなのでglAti.hを読み込んでいます
EXTを使うのに、Atiの場合はこちらだとあったので
これをglextに変えても同じ状況になります。
0859デフォルトの名無しさん
2007/08/30(木) 21:54:29::glPixelStorei(GL_UNPACK_ALIGNMENT,1);
0860デフォルトの名無しさん
2007/08/30(木) 22:03:02加えてみてもダメでした
エラーは
glTexImage3DEXT(
GL_TEXTURE_3D_EXT , 0 , GL_RGB , TEXSIZE , TEXSIZE , TEXSIZE,
0 , GL_RGB , GL_UNSIGNED_BYTE , bits
);
のところを指して
0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。
と出ます。
床井さんのところのサンプルは動くのに…
0861デフォルトの名無しさん
2007/08/30(木) 22:20:14>//if (glTexImage3DEXT != NULL)
床井先生のやつが動くならここの変更だけで動きそう
>PFNGLTEXIMAGE3DPROC glTexImage3D;
>glTexImage3D =(PFNGLTEXIMAGE3DPROC)wglGetProcAddress("glTexImage3D");
0862デフォルトの名無しさん
2007/08/30(木) 22:24:17俺は、3Dテクスチャー扱うときは、
bits[TEXSIZE * TEXSIZE * TEXSIZE * 3];
の様にしているんだが、
GLubyte bits[TEXSIZE][TEXSIZE][TEXSIZE][3];
でも動くの?
0863デフォルトの名無しさん
2007/08/30(木) 22:44:47>関数のアドレス取得に失敗
そのとおりだと思います…
書いていただいたとおり変更したら、今度はコンパイルができなかったです。
>>862
二次元テクスチャのときGLubyte bits[TEXSIZE][TEXSIZE][3]と取って、ijのループでアクセスしていました。
もしもよければ、3Dテクスチャのソース見せていただいたりとかできませんか
一日こればかりに追われてしまって…頭がもう熱もってしまって具合悪くなってきました
0864デフォルトの名無しさん
2007/08/30(木) 22:52:350865デフォルトの名無しさん
2007/08/30(木) 22:58:40GL_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でこうあったので大丈夫だと思うのですが
0866デフォルトの名無しさん
2007/08/30(木) 23:16:45まだ GL 初期化されてないでしょ
glutCreateWindow の後にしてみ
0867デフォルトの名無しさん
2007/08/30(木) 23:23:58。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。。゜。゜(ノД`)゜。゜。
なんで、こんなことで
原因がなんでわかったんですか
何で俺、一日こんなに悩んでたんだよ
ありがとうございます
ほんとにほんとに
。゜。゜(ノД`)゜。゜。
0868デフォルトの名無しさん
2007/08/30(木) 23:36:36>glTexImage3DEXT(
>のところを指して
>0x00000000 でハンドルされていない例外
から、たぶん glTexImage3DEXT が NULL になってる可能性が高い。
wglGetProcAddress の戻り値が NULL ってことは取得に失敗してるわけだから、
ビデオカードが 3D テクスチャに対応してないか、
あるいは wglGetProcAddress のリファレンス見りゃ現在のGLコンテキスト云々って書いてあるので初期化前には使えなさそうだと思われた
ってところ。
というかね、wglGetProcAddress の戻り値がちゃんと取れてるかくらい、最初から確認しなさいよ。
0869デフォルトの名無しさん
2007/08/30(木) 23:43:36すべてにおいて修行不足でした。。。
戻り値がNULLなのが、なんでなのか、そこばかり見て
答えをぐぐって、リファレンスを見るということしてませんでした
自分の至らなさに凹むばかりです。。。
0870デフォルトの名無しさん
2007/08/31(金) 00:21:42てのは誰でも一度はやる失敗ジャマイカ? というか俺はやった。
そうやって経験を積んでいくんだよ、うん。気を落とさないでガンバレ。
ついでに
>>862
どっちも確保されるメモリの量は同じだから動くよ。
ただ、型に関しては前者のbitsはGLubyte*型、後者のbitsはGLubyte(*)[TEXSIZE][TEXSIZE][3]型
になることだけ注意。(glTexImage3Dはどっちもconst void *型で受けるから関係無いけど)
0871デフォルトの名無しさん
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で扱うような「テクスチャ」ってこれとはどう違うのでしょうか
違いというのが何なのかを教えてください
0872デフォルトの名無しさん
2007/08/31(金) 20:35:30ビデオカード上には同時に1枚しかテクスチャがなくて、毎回入れ替えることになる。
glGenTextures というか glBindTexture を使う場合、
ビデオカード上に同時に2枚以上のテクスチャを置いておける。
描くたびにいちいち画像データをロードする必要はなくて、ロード済みのテクスチャを単に切り替えるだけで済む。
0873デフォルトの名無しさん
2007/08/31(金) 21:00:59ということは実体は同じ、ということですか?
上の場合は1枚読み込んで、貼り付けて
1枚読み込んで、貼り付けて
…以下繰り返し
それだと1番目の貼り付けた画像は、ビデオカード上に無い、ということですか?
表示は全部表示されてはいるのですが…
0874デフォルトの名無しさん
2007/08/31(金) 23:54:05画面に描いた結果は画面には残るけど、
テクスチャとしてのデータは、新しいのをロードした時点でビデオカード上から消え去る。
もう一度同じテクスチャで、今度は別の位置に描画したければ、またロードし直すしかない。
0875デフォルトの名無しさん
2007/09/01(土) 17:18:38変数を画面に表示させることってできるんですか?
0876デフォルトの名無しさん
2007/09/01(土) 17:19:550877デフォルトの名無しさん
2007/09/02(日) 14:27:17遅くなりましたが、ありがとうございます!納得ができました
0878デフォルトの名無しさん
2007/09/03(月) 13:42:16生成した3次元テクスチャをglutSolidCubeなどに貼り付けようとしているのですがうまくいっていません
イメージは
ttp://www.unregardless.net/images/cocoa.png
こちらの左の三角形のようなもので、これをスライスしても中身に模様が詰まっている、ということをしようとしています。
3次元テクスチャの生成で、いけると思ったのですが
Solidの物体に貼り付けるところでもつまってしまいました
参考になるところとかありましたら教えていただけないでしょうか
0879デフォルトの名無しさん
2007/09/03(月) 15:11:10具体的にはどんな関数があるんですか?
0880デフォルトの名無しさん
2007/09/03(月) 15:43:31まず、OpenGLで扱えるのはサーフェイス(+ライン、ポイント)のみであり
ソリッドな物体を表現するには断面をサーフェイスで描くか、
サーフェイスを死ぬほど重ね描きして擬似的にソリッドぽく見せるしかないんですが、
その点はOKですか??
そしたら後は、頂点ごとに、対応するテクスチャ座標を3次元で与えてやるだけです。
>>879
printf()
0881デフォルトの名無しさん
2007/09/03(月) 16:04:08OpenGLやDirectXなどのリアリタイムレンダリング向けの3Dライブラリは、
サーフェスモデルを採用していますので、普通のやり方ではできません。
CADなどでつかわれる、ソリッドモデルが使えるライブラリが使えれば可能だと思いますが・・・
0882デフォルトの名無しさん
2007/09/03(月) 16:04:48o リアルタイムレンダリング
0883デフォルトの名無しさん
2007/09/03(月) 16:36:23http://www.pouet.net/prod.php?which=2059
0884デフォルトの名無しさん
2007/09/03(月) 16:50:57>サーフェイスを死ぬほど重ね描きして擬似的にソリッドぽく見せるしかないんですが、
はい、こちらの方はできました。
ただ2Dテクスチャをポリゴンに貼り付けて重ねていたので、それを3Dテクスチャにしようと思ったのです
>>881さん
なるほど。もともとサーフェイスがメインということですか…
0885デフォルトの名無しさん
2007/09/03(月) 17:13:26ttp://www.uploda.org/uporg1000038.txt
現状こういった形になっています。ソースは弄くりながらで汚くてすみません。
>>880さんの仰ってくださったやり方を3Dテクスチャでやってみます。
2Dでやったときはポリゴンが重なるとものすごく重たくなったり、ポリゴンの水平方向から見ると消えたりしたので
ソリッドに直接マッピングしたくてやっていました。
0886デフォルトの名無しさん
2007/09/03(月) 17:15:01ポリゴンにあるようなグラデーションのテクスチャを
ソリッドに直接張り合わせようとしたものです…
0887デフォルトの名無しさん
2007/09/03(月) 20:08:30やりたいことが分かるような分からないようなw
ええと、glTexGenを使う方向性は間違ってないと思うんですが、
なぜGL_TEXTURE_GEN_MODEがGL_SPHERE_MAPなのん??
こういう用途ではGL_OBJECT_LINEARを使うのが普通だと思うのですが。
0888デフォルトの名無しさん
2007/09/03(月) 23:28:52ttp://www.uploda.org/uporg1000803.jpg
とりあえずできました。glTexGenのところをいじくっていたらなんとか。
なぜか自動でテクスチャが、-1〜1の範囲でないと全部適応されないのが気になるのですが
角の部分は視野台を越えてしまっているのですが、切り取られるとSolidCubeでもサーフェイスもでるなのですね
この後は床井先生のところで勉強します
ありがとうございました。
0889デフォルトの名無しさん
2007/09/03(月) 23:59:26んな?テクスチャ座標は-1〜1じゃなくて、0〜1ですよ?
あとglutSolidCubeの "Solid" てのは、 "Wireじゃない" という意味であって、
ソリッドモデルを描いてくれるワケではないのです。残念ながら。
0890デフォルトの名無しさん
2007/09/04(火) 16:08:02なぜか-1.0〜1.0のポリゴンを基準にテクスチャが生成されてしまいました。。。原因を調べています。
SolidCubeの件もありがとうございます。
中身がカラッポだったので、床井先生のところでされているような
切り取った面に再度テクスチャを張るといったところをよく見てみます。
0891デフォルトの名無しさん
2007/09/06(木) 17:09:44読み込もうとしているのですが、全然やり方が解りません。
.xのテキスト形式に書かれている内容をどうやってパースすればいいのか
どなたかヒントを下さい!
0892デフォルトの名無しさん
2007/09/06(木) 17:11:10OpenGL作ってるのではなくて、OpenGLを使用しています
0893デフォルトの名無しさん
2007/09/06(木) 17:56:59自力でパーサを書くのは相当大変だが、やりたければ lex とか yacc とか再帰下降とかでぐぐってみたら
0894デフォルトの名無しさん
2007/09/06(木) 18:27:38OpenGL上に表示できる、定番のライブラリはあるでしょうか。
フリーだと嬉しいす。
0895デフォルトの名無しさん
2007/09/06(木) 19:15:19動かすとかって可能ですか?
誰か知ってる人いたら教えてください!!
0896デフォルトの名無しさん
2007/09/06(木) 19:25:25情報サンクス 参考に考え直してみます!
>> 895
shadeから汎用のファイル形式に書き出して、OpenGLで読み込めば出来るよ!
0897デフォルトの名無しさん
2007/09/06(木) 19:29:59あーりがとうございます!
0898デフォルトの名無しさん
2007/09/07(金) 00:19:39.obj とか mqoに変換すれば
そういうことやってる人いっぱいいるから、ソース出てくるよ
0899デフォルトの名無しさん
2007/09/07(金) 00:49:21いまいちどのmqoローダがいいのかよくわからない
なにか、おすすめありませんか?
0900デフォルトの名無しさん
2007/09/07(金) 01:18:07何がいいのかはわからない
ググってくれ
0901デフォルトの名無しさん
2007/09/07(金) 09:23:40了解
自分で探してみます
0902デフォルトの名無しさん
2007/09/07(金) 17:22:510903デフォルトの名無しさん
2007/09/08(土) 16:50:070904デフォルトの名無しさん
2007/09/08(土) 23:04:31あ、>901俺だ
0905デフォルトの名無しさん
2007/09/10(月) 16:06:50shadeでつくったモデルをOpenGLで
動かしたことがある方は
どんな資料を参考にしてらっしゃいますか??
0906デフォルトの名無しさん
2007/09/10(月) 18:02:410907デフォルトの名無しさん
2007/09/10(月) 19:02:37ん?そんな難しいの?
0908デフォルトの名無しさん
2007/09/10(月) 20:17:59openglにはモデルを読み込んだりする機能がないから、自分でどうにかしないといけない
ちなみに、俺はやったことないw
0909デフォルトの名無しさん
2007/09/10(月) 20:45:220910デフォルトの名無しさん
2007/09/11(火) 00:11:560911デフォルトの名無しさん
2007/09/11(火) 11:55:07shadeだとwavefront obj形式かdxf形式とかmqo形式で吐き出したものを読み込む事が多いと思う。
objなら"wavefront obj フォーマット"とかでググればmtlファイル含めてフォーマット形式が結構出て来るし、
dxfもMSDNにファイルフォーマットが記載されてる。
あとは自力でこれらのASCIIデータを読み込んで、頂点情報等に分解して描画すればOKにょ。
俺はmqo使った事無いからそっちはシラネ。
0912デフォルトの名無しさん
2007/09/11(火) 14:54:01メタセコってモデリング兼、変換ツールみたいなもんだろ
つーか3Dモデルっていくらでも変換できるんだから
obj mqoあたりに変換すればいいだろうに
0913デフォルトの名無しさん
2007/09/11(火) 15:22:41自分が必要とするモデル情報を格納してる形式について調べるのが一番良さげ
0914デフォルトの名無しさん
2007/09/11(火) 17:39:19関数とかパラメータとか多すぎて覚えたそばから忘れてしまうぅ
0915デフォルトの名無しさん
2007/09/11(火) 18:03:35http://www.amazon.co.jp/dp/4894717239
http://www.amazon.co.jp/dp/4894711370
それより英語に慣れた方がいいんじゃないかと。
0916デフォルトの名無しさん
2007/09/11(火) 18:17:380917デフォルトの名無しさん
2007/09/12(水) 02:01:27どなたかインストできるサイト教えてください。
0918デフォルトの名無しさん
2007/09/12(水) 02:59:22ビデオカードが対応してなければ無理。
あと、板違い。
0919デフォルトの名無しさん
2007/09/12(水) 03:25:380920デフォルトの名無しさん
2007/09/12(水) 04:43:27OpenGL1.2非対応ってどんだけ前のマシンなんだよ・・・
919 デフォルトの名無しさん 2007/09/12(水) 03:25:38
OpenGL1.2非対応って、どんなビデオカードだw
歴史は繰り返す。
0921デフォルトの名無しさん
2007/09/12(水) 05:36:46付属のドライバインストしたら無事できました。
わざわざすいません。ありがとでした。
0923デフォルトの名無しさん
2007/09/12(水) 13:08:50ドライバは入れような
0924デフォルトの名無しさん
2007/09/13(木) 05:45:55俺ここで質問する側の人間だけど
glutありでいいなら
「GLUTによるOpenGL入門」て本に3Dグラフィックの描画の仕方があるから
後はモデルデータをワードパットなりなんなりで開いて打ち込みでいけるんじゃないんかな・・・
見当違いの事かいてたらごめん
0925デフォルトの名無しさん
2007/09/13(木) 12:54:44初期化時に光源の配置
display関数内で glMultMatrixd(トラックボール移動関数());
みたいな事をしていて、これだと光源の位置がトラックボールと一緒に回転している状態なのですが
トラックボールしつつ光源の位置を固定する事って出来ますか?
何かを間違えているのだろうか…
0926デフォルトの名無しさん
2007/09/13(木) 14:11:53モデルビュー行列をリセットした状態で (あるいは glMultMatrixd の前に) 光源の位置を設定してみ
0927デフォルトの名無しさん
2007/09/13(木) 21:13:53\include\stdlib.h(406) : error C2381: 'exit' : 再定義 ; __declspec(noreturn) が異なります。
\platformsdk\include\gl\glut.h(146) : 'exit' の宣言を確認してください。
とexitにエラーが起きるんですが
これってglutのファイルがおかしいんですかね・・?
0928デフォルトの名無しさん
2007/09/13(木) 21:24:380929デフォルトの名無しさん
2007/09/13(木) 21:27:32有難うございました
0930デフォルトの名無しさん
2007/09/15(土) 08:34:42自分はコメントアウトしてた気が…
0931デフォルトの名無しさん
2007/09/15(土) 08:43:50皆さんもグローバルに変数を定義しているのでしょうか。
0932デフォルトの名無しさん
2007/09/15(土) 11:36:20GLUTの性質上、大域変数が多くなっちゃうのはしょうがないかも。
僕も簡単な描画テストとか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
0933デフォルトの名無しさん
2007/09/15(土) 13:20:17>皆さんもグローバルに変数を定義しているのでしょうか。
グローバルな構造体のメンバ変数にすると、ちょっとは見通し良くなるかも…
0934デフォルトの名無しさん
2007/09/15(土) 17:35:12なるほど、参考になります。
クラスや構造体を使って少し整理してみようと思います。
0935デフォルトの名無しさん
2007/09/17(月) 00:07:01描画以外にはぜんぜん使えないんで、
よいNurbsライブラリを教えてたもれ。
0936デフォルトの名無しさん
2007/09/17(月) 21:07:26glutてあんまり使わないほうなんです?
本なんかだと使ってるのしか見ないからなぁ・・
赤本青本は手が出せない・・
0937デフォルトの名無しさん
2007/09/17(月) 21:38:57GLUTは、単にOpenGLで描画したいだけなら簡単で早くてとてもイイカンジですよ。
ただ実用アプリとしての体裁を整えようと思うと、急に辛くなるっていうか、色々とムリっていうか。
C++BuilderとかWIN32API直書きとかgtkとか色々やったけど、今はwxWidgets(+wxFormBuilder)がお気に入り。
GLUTと比べると色々と面倒臭いですけど、雛形を作ってしまえばかなり使えます。
あ、繰り返しますけど、簡易的な用途(テスト、デモ、小規模なゲームとか)なら
GLUTは全然悪くないです。あんまり使わないどころか、僕もよく利用してますよ〜。
0938デフォルトの名無しさん
2007/09/18(火) 06:56:09なるほど納得です
説明ありがとうでした
0939デフォルトの名無しさん
2007/09/18(火) 08:08:58glutを使うか使わないかの分かれ目な気がするw
0940デフォルトの名無しさん
2007/09/18(火) 11:07:35937さんの言うようにテスト・小規模アプリ用って印象があるにゃー。
0941デフォルトの名無しさん
2007/09/18(火) 11:20:250942デフォルトの名無しさん
2007/09/18(火) 11:21:590943デフォルトの名無しさん
2007/09/18(火) 13:01:32ずっとwindows sdkやxlib使ってたからか、最初はglutの入門書見てもイミフというか、
勝手に色々作られるのが気持ち悪くて、window制御させろやモルァとか思いながら調べてたら
wglやglxに辿り着いたっけなあ
0944デフォルトの名無しさん
2007/09/18(火) 17:44:15どうやってあれで、ゲームとか作れというんだ・・・
>>942
Win32API、VCL、SDL、その他OpenGLを利用した3Dライブラリ(Irrlicht、OGRE3D、g3d)など
お好きなのをどうぞ
0945デフォルトの名無しさん
2007/09/18(火) 17:59:060946デフォルトの名無しさん
2007/09/18(火) 18:41:13リアルタイム入力が必要なゲームには向いてない。
クリックイベントベースのゲームとかフラグとタイマーループを組み合わせた程度のゲームならglutでもいける。
ただし音を扱うとなると厳しいかも->glut
>>943
確か過去スレにウィンドウハンドルとglut内のなんとかidを紐づける方法が質問&回答されてたような気ガス。
0947デフォルトの名無しさん
2007/09/18(火) 19:37:440948デフォルトの名無しさん
2007/09/19(水) 00:01:42自分もGLUT使わずにやってみたいんですけど、
そうするとDirectXと比べて手軽にできるってメリットが消えちゃったりしますかね?
0949デフォルトの名無しさん
2007/09/19(水) 00:19:11SDLはそれなりに手軽
0950デフォルトの名無しさん
2007/09/19(水) 02:51:140951デフォルトの名無しさん
2007/09/19(水) 08:24:30kwsk
0952デフォルトの名無しさん
2007/09/19(水) 09:10:040953デフォルトの名無しさん
2007/09/19(水) 10:43:46初期化に関してはD3Dより微妙に楽…かも
0954デフォルトの名無しさん
2007/09/19(水) 16:04:15常に視線方向に向いたポリゴン(ビルボード)を積み重ねて描きたいのですが
回転は視点が動くことで実装しようと思っています。
それで気になったのですが
1 視点が動くたびに、積み重なったポリゴンを再描画するのと
2 視点の回転に合わせて、積み重なったポリゴンも一緒にこっち側を向いたまま回転してついてくるの
どちらの方が高速なのでしょうか
後者の方が行列を掛け合わせるだけだと思うので速いと思うのですが
ビルボードなので、テクスチャもそれにあわせて動いてくれるかが少し気になります。
0955デフォルトの名無しさん
2007/09/19(水) 16:49:15いずれにしろ毎フレーム画面全体を再描画してるはずでは?
>2 視点の回転に合わせて、積み重なったポリゴンも一緒にこっち側を向いたまま回転してついてくるの
そもそも、常に視点方向を向くポリゴンのことをビルボードっていうはずだよね
>どちらの方が高速なのでしょうか
どちらっていうか、1と2はどのへんが対立するので?
>ビルボードなので、テクスチャもそれにあわせて動いてくれるかが少し気になります。
それに合わせて動くってどういう動き方?
全体的に意味がわからん
0957デフォルトの名無しさん
2007/09/19(水) 17:12:13わかりにくくてすみません
ポリゴン再描画→ vertex(dx, dy, dz)のように視点が動くたびに頂点位置を指定して
再度ポリゴンを描くということです。
2以降は仰るとおりです。わけわからなくてすみません。
0958デフォルトの名無しさん
2007/09/19(水) 17:26:220959デフォルトの名無しさん
2007/09/19(水) 21:54:21http://pc11.2ch.net/test/read.cgi/tech/1184807424/
の>>719です。 こちらで勧められたので書き込みます。
D言語において、
OpenGLのフルスクリーン画面上で、日本語入力と変換を使いたいのですが、
それをサポートしてくれるライブラリなどはありますか?
OpenGLを直接使用して、GUIのメインウィンドウが無かったりする場合、
キー入力の制御は簡単にできますか?
たしかOpenGLはDirectXとは違って、画面関係だけのライブラリですよね。
0960デフォルトの名無しさん
2007/09/20(木) 04:10:48そもそも、OpenGL そのものにはキーとかマウスとかいった概念自体がない。
フルスクリーンとかウィンドウ表示とかいったことも範囲外。
単純に描画の部分しか扱わないので、それ以外はすべて OS 依存になる。
具体的には、Windows ならウィンドウメッセージを処理して IMM を叩く、
Mac なら NSTextInput プロトコルを実装する、Linux なら XIM を触る、
・・・といった感じになるかと。
個人的な経験で言うと、IME の制御は環境差が結構あって、
その差異を吸収しようとすると、わりと面倒かった記憶がある。
OS に依存したくなければ、Anthy みたいなフリーの IME を拾ってきて
自分のプログラム内に組み込むっていう方法もあるけど、どうだろうかね。
0961デフォルトの名無しさん
2007/09/20(木) 04:45:27そっちにまかせた
0962デフォルトの名無しさん
2007/09/20(木) 11:36:42Mac のマウスはワンボタンだという衝撃の事実を忘れずに UI 設計してもらいたい。
よろしく。
0963デフォルトの名無しさん
2007/09/20(木) 12:07:44オレは1ボタンのマウス使ってるけどなー
0964デフォルトの名無しさん
2007/09/20(木) 13:27:420965デフォルトの名無しさん
2007/09/20(木) 19:16:04「SGのワークステーションは3ボタンマウスしかありませんが何か?」
くらいの勢いで設計して欲しい
0966デフォルトの名無しさん
2007/09/20(木) 19:51:34参考になるサイトとかってありますか?
0967デフォルトの名無しさん
2007/09/20(木) 20:13:04OpenGL WGL で検索するといろいろ見つかると思う
0968デフォルトの名無しさん
2007/09/20(木) 20:41:35WG・・・L・・?
いろいろ調べてみます
ありがとうございました!
0969デフォルトの名無しさん
2007/09/20(木) 20:55:32カーソルキーが無かったり、マウスボタンが一つだったりホイールが無かったりする環境を考慮して、
どんな環境でも操作できるようにしておくといいよね。
0970デフォルトの名無しさん
2007/09/20(木) 20:57:050972デフォルトの名無しさん
2007/09/21(金) 10:17:35ふむ
0973デフォルトの名無しさん
2007/09/21(金) 10:38:030974デフォルトの名無しさん
2007/09/21(金) 12:07:490975デフォルトの名無しさん
2007/09/21(金) 12:22:280976デフォルトの名無しさん
2007/09/21(金) 12:56:250977デフォルトの名無しさん
2007/09/22(土) 21:42:01OpenGLスレ Part11
http://pc11.2ch.net/test/read.cgi/tech/1177523018/
0978デフォルトの名無しさん
2007/09/22(土) 21:46:040979デフォルトの名無しさん
2007/09/22(土) 22:04:350980デフォルトの名無しさん
2007/09/23(日) 03:45:160982デフォルトの名無しさん
2007/09/24(月) 13:57:26【超初心者】くだすれOpenGL2.0【質問用】
http://pc11.2ch.net/test/read.cgi/tech/1190579207/
0983デフォルトの名無しさん
2007/09/24(月) 13:59:470984デフォルトの名無しさん
2007/09/24(月) 16:29:540985デフォルトの名無しさん
2007/09/24(月) 17:17:510986デフォルトの名無しさん
2007/09/24(月) 17:32:360987デフォルトの名無しさん
2007/09/24(月) 17:54:540988デフォルトの名無しさん
2007/09/25(火) 23:44:25GLUTはすぐに見つかるのに
0989デフォルトの名無しさん
2007/09/25(火) 23:58:17http://www.opengl.org/sdk/docs/man/
0990デフォルトの名無しさん
2007/09/26(水) 18:39:30画面に最終的に表示するときに、座標をそれぞれ、加算するという方法が、
まずうかびますが、どうもスマートではありません。
0991デフォルトの名無しさん
2007/09/26(水) 18:50:17↓
glCopyTexSubImage2Dでバックバッファイメージをテクスチャにコピー
↓
テクスチャをスプライトとして表示して動かしまくりんぐ
↓
完
0992990
2007/09/26(水) 18:58:22glPushMatrix;
glTranslatef(x, y, 0);
:
//描画処理
:
glPopMatrix;
これができたのは、たぶん、2Dスプライトしかないせい・・・。
>>991
3Dの場合、そっちの方が定番なのかな?
0993デフォルトの名無しさん
2007/09/26(水) 19:25:400994990
2007/09/26(水) 20:17:18後学のために、カメラ操作の方法をしりたい・・・
gluLookAt の 特定の引数の座標だけを変えるようなことってできるんだろうか
0995デフォルトの名無しさん
2007/09/26(水) 20:23:51できるだろそりゃ
0996デフォルトの名無しさん
2007/09/26(水) 20:23:510997990
2007/09/26(水) 20:35:15そのとおりです
調べましたが、
結局、gluLookAt は、パラメータに応じて、計算して、行列を設定しているだけですから、
適当に、glTranslatefなりなんなりで、ずらすのと変わらないんですね。
ありがとうございました。
0998デフォルトの名無しさん
2007/09/26(水) 21:12:560999デフォルトの名無しさん
2007/09/26(水) 21:27:001000デフォルトの名無しさん
2007/09/26(水) 21:28:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。