1read 100read
2012年5月プログラム163: OpenGLスレ Part18 (126)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
【Java】Wicket【HTML】 (574)
くだすれDelphi(超初心者用)その54 (709)
【】configure大嫌い【RMS】 (491)
Win32API質問箱 Build107 (934)
【】configure大嫌い【RMS】 (491)
Visual Studio 11 Part1 (678)
OpenGLスレ Part18
1 :12/04/14 〜 最終レス :12/05/30 クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。 現在のバージョンは4.1 http://www.opengl.org/ http://www.opengl.org/wiki/Main_Page == OpenGLと一緒に使われるツール&ライブラリ == 苦労したくなかったらとりあえず入れとけ。 ・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない ・glut: クロスプラットフォームなツールキット。でもさすがに古くさい ・glew: これを入れないと拡張機能が使えないor使いにくい ・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで ・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。 ・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。 ・OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ ・OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ == チュートリアルサイト == 床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/ NeHe: http://nehe.gamedev.net/ == 前スレ == OpenGLスレ Part17 http://toro.2ch.net/test/read.cgi/tech/1321350331/
2 : == 過去スレ == Part17: http://toro.2ch.net/test/read.cgi/tech/1321350331/ Part16: http://hibari.2ch.net/test/read.cgi/tech/1309182662/ Part15: http://hibari.2ch.net/test/read.cgi/tech/1289992928/ Part14: http://hibari.2ch.net/test/read.cgi/tech/1263901596/ Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/ Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/ Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/ Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/ Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/ Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/ Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/ Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/ Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/ Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/ Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/ Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/ Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
3 : == 必読書 == -- CG入門 -- OpenGL以前の普遍的なCGの概念。 CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。 ・コンピュータグラフィックス (CG-ARTS協会) ・ビジュアル情報処理 (CG-ARTS協会) ・ディジタル映像表現 (CG-ARTS協会) ・ゲーム制作者になるための3Dグラフィックス技術 ・ビジュアルコンピューティング 3次元CGによる画像生成 -- 初心者用 -- ・GLUTによるOpenGL入門 ・GLUTによるOpenGL入門2 テクスチャマッピング ・OpenGL ES 2.0 プログラミングガイド -- 上級者用 -- ・OpenGL Shading Language (橙本) ・Shader Xシリーズ ・GPU Gemsシリーズ ・GPU Proシリーズ
4 : == 必読書2 == -- モダンなOpenGL -- シェーダーベースの最新のOpenGLの学習 ・OpenGL 4.0 Shading Language Cookbook ・OpenGL SuperBible: Comprehensive Tutorial and Reference ・OpenGL 4.0 グラフィックシステム -- 数学 -- ・ゲームプログラミングのための3Dグラフィックス数学 ・実例で学ぶゲーム3D数学 ・ゲーム開発のための数学・物理学入門 -- 過去の書籍 -- 有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ 通常は買う必要はない ・OpenGLプログラミングガイド 原著第5版 (赤本) ・OpenGL Reference Manual (青本)
5 : == チュートリアルサイト2 == OpenGL Step By Step: http://ogldev.atspace.co.uk/ OpenGL Samples Pack: http://ogl-samples.g-truc.net/ == C/C++以外から使うには == Rubyから --> ruby-opengl Pythonから --> PyOpenGL Javaから --> JOGL JavaScriptから --> ??? Haskellから --> ??? C#等、.NET系 --> OpenTK == Quick Reference Card == OpenGL 4.1 API Quick Reference Card http://www.khronos.org/files/opengl41-quick-reference-card.pdf OpenGL 3.2 API Quick Reference Card http://www.khronos.org/files/opengl-quick-reference-card.pdf OpenGL ES 2.0 API Quick Reference Card http://www.khronos.org/opengles/sdk/docs/reference_cards/OpenGL-ES-2_0-Reference-card.pdf WebGL 1.0 API Quick Reference Card http://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf
6 : 以上テンプレでした。 チュートリアルサイト、増えたことに気づかず まとめ損ないました。 すみません。
7 : おつおつ
8 : >>1 おつです 3次元の立方体を線画で描こうと思って入力したら 「error c2099:初期化子が定数ではない」 と下の点情報が引っかかってしまいました(点G以外すべて) 何を直せばいいのかわからないので指摘お願いします GLdouble vertex[][3]= { (0.0,0.0,0.0),//A (1.0,0.0,0.0),//B (1.0,1.0,0.0),//C (0.0,1.0,0.0),//D (0.0,0.0,1.0),//E (1.0,0.0,1.0),//F (1.0,1.0,1.0),//G (0.0,1.0,1.0)//H };
9 : >>1 おつ 質問です CAD や モデラーなどを OpenGL を使って作る場合も、 頂点データは VBO を使って VRAM 側に持たせて、 頂点の位置や法線などのパラメータを変更する度に バッファのマッピング系やコピー系の関数を使って書き換えるのが普通ですか それとも、元の頂点のパラメータが変化しないゲームなどと違って、 モデラーなどではメインメモリ側に持たせる方がいいのでしょうか
10 : >>8 丸括弧を中括弧にしてみてはどうでしょうか
11 : >>10 あっさり解決 低レベルな質問で申し訳ないです、ありがとうございました
12 : OpenGLコンテキストを作らずにシェーダーで使われているUniform変数とAttribute変数の名前を表示したいのですが、 どうすれば可能でしょうか? 自前でGLSLを全部パースするしか無い? (すごく大変。。。。)
13 : >>8 の初期化子って定数だよね? 数が足りないから警告ならあってもいいけど C/C++的にはエラー出るのはおかしくない?
14 : >>13 VisualCのC言語ファイル(.c)だと変数の初期化にカンマ演算子を使うとこのエラーになるっぽい
15 : >>13 (0.0,0.0,0.0)なんて定数ありません
16 : >>14 VSもgccもいけるやん! って思ってたらVC++か。。。
17 : たんに{と(を間違ってるだけじゃ?
18 : >>14 へへ。確かに初期化でカンマ演算子を使うことはないから、 その仕様はいいかも。
19 : >>12 OpenGLでは出来ないのでパーサを作るしかないんだが、既製の物がいくらかあるので使えるよ ANGLE Project http://code.google.com/p/angleproject/ Mesa3D http://mesa3d.org/ どちらもGLSLコンパイラだけ取り出して使うことができる。 ANGLEの方が簡単そうかな。
20 : やはりそれしかないですか.... C#から使いたいのでAngleのGLSLパーサーをC#から使えるようにして。。。。 まあ自前でGLSLパーサーを作るよりは簡単でしょう どうしたものか、むむむむ
21 : 頂点インデックスを使いたいのですが たとえば立方体を描画する場合、頂点情報は8つですみますが それにテクスチャを貼り付けたい場合は、UV情報は最大だと48個必要になると思います この場合どのように描画すればいいのでしょうか? UVの個数に合わせなければなりませんか?
22 : UVにあわせるしかない。 法線も必要な場合は48個まるまる必要になる。 立方体は不連続な子だから仕方ない。
23 : 48個じゃねえ、24個だorz UVも変な張り方しないなら24個で収まる。 が、UVの個数にあわせるしか方法は無い。 とりあえず俺は算数からやり直してきます…。
24 : >>22-23 UVに合わせてやってみます ありがとうございました
25 : 3Dモデルの平均曲率の計算の実装の方法を教えてください!
26 : それはOpenGLのAPI使わないと出来ないことか?
27 : >>25 3Dモデルの曲率を平均すればいい
28 : >>27 25です. wikiやベクトル解析の教科書などで曲率を調べて数式的定義は見たんですが, 実際の3Dモデルに対する実装の方法が良く分かりません・・・ よろしければ教えてください。
29 : >>28 だからそれはOpenGLなのか? 曲率考える前に 質問する板考えろ。 頭くさってんじゃねぇのか?
30 : もしかするとGLSLでという?いや、まさかね
31 : 質問です VC2008(C++)で、最初から入ってるopengl32.lib/glu32.libを使って、テクスチャをポリゴンに貼って表示する所まで出来るようになりました。 そこで、テクスチャとレンダーターゲットを16bit or 32bitの浮動小数点にしたいんですが、最初から付いてる奴はヘッダもlibも古いみたいで、 そういうテクスチャが作れないように思えます。 何か新しいライブラリを入れる必要があると思うのですが、何を使えばいいのでしょうか? テクスチャフォーマットをfloatにして精度を上げたいだけで、それ以上の凝った機能は無くても大丈夫です。 商用に使いますので、できるだけライセンスの緩い奴だと助かります。 よろしくお願いします。
32 : >>31 glext.h / glxext.h とか wglGetProcAddress()とか ttp://www.opengl.org/registry/#headers めんどくさいなら>>1 にあるglew使えば便利。
33 : >>32 ありがとうございます、これです!glext.h / glxext.h ってヘッダしか無いんですね。 ライセンスについて書かれてないっぽいですが、勝手に使って良いんでしょうか? glewも色々便利っぽいですね〜!こっちはglew使ってますっていう表記をしないといけないヤツですね。
34 : 表記する必要あんのか?
35 : glewはBSDライセンスだし(他の物も混ざってるようだが)少なくとも添付のドキュメントか何かには表記が必要だろ しかし素のgl.hもSGI Free Software License B, Version 1.0とやらに従って表記が必要なようなんだけど、これ書いてあるの全く見たことないな
36 : glew使ってます!って表記してんの見たことない
37 : ちょっと前ダイレクトXにダイレクト2Dって奴の2D機能あったじゃないですか? オープンGLに2D機能って無いんですか? 3DにしてCPU使いすぎる程のものではないので・・・
38 : ない
39 : 今はなんでもかんでも3Dとして描画するのが流行り
40 : >>37 > オープンGLに2D機能って無いんですか? あるよ。というか、特に3Dと区別していない。
41 : 有難うございます。 ではz軸を固定して線を描いたりすればいいんですね。 そうやってみます。
42 : openGL32ライブラリーじゃなくてopenGL64ってあるんですか? 64ビット対応CPUなんで使ってみたいんですけど windows7です。どうやったら出来るか教えてください。
43 : ライティングやモーションの有無等によって処理を切り替えたいのですが GLSLは動的な条件分岐に弱く、速度が極端に落ちると聞いたのですが 処理毎にプログラムを分けると条件分岐の数の二乗分だけプログラムが必要になり色々効率的ではなさそうですが 動的な条件分岐に弱いなら、一回のdraw中に条件判定に要する値が変わらない静的な分岐なら速度はそれほど落ちないのでしょうか?
44 : >>43 OpenGL4で関数ポインタみたいのが導入されて、 それつかえば関数の呼び出し先を必要に応じて変えられるらしい。 使った事は無いのでよくわかんないけど。
45 : 最近のGPUだと条件分岐も昔よりだいぶ改善されてんじゃないかな 静的な分岐というか、なるべく多くのプロセッサが同じ動作をするように分岐を書くと効率はいいはず
46 : >>43 頭でっかちにならないで実際にシェーダーを書いてみなよ、 動的な条件分岐でさ。案外問題ないと思うよ。 それで速度が遅いなら#ifdefとかで分ければ無駄にならないし、勉強にもなるよ。
47 : projectionMatrixで正規化した座標に変換するのって w座標が1のにできないの? 逆行列で戻すとき困るんだけど
48 : 質問は日本語で
49 : SSAOってもう過ぎた技術なの?
50 : >>48 projectionMatrixで変換した座標がwに馬鹿でかい数値入ってくる。 wに1が来るようなprojectionMatrixの作り方教えろ
51 : http://rudora7.blog81.fc2.com/blog-entry-415.html ここにいい例がある。 http://blog-imgs-30.fc2.com/r/u/d/rudora7/20100228235936195.jpg この行列の計算で求められるのは[480 240 2 3]だ。 wで割れば[160 80 0.6 1]になって確かに、スクリーン座標になるのだが。 [160 80 0.6 1]からは逆行列をかけても元のワールド座標に戻せない。 クリックした画面のワールド座標を求めたいのだが スクリーン座標は[160 80 0 1]しか得られないのだが どうすりゃいいんだ。
52 : スクリーン座標からワールド座標は一意に決まらないことからわからないのか? まずそこはどうなのよ
53 : >>51 >クリックした画面のワールド座標を求めたいのだが glReadPixelsでデプス取ってきてUnProjectすればいいだけじゃないのか?
54 : >>51 その[160 80 0.66666 1.0] を逆行列で変換すると[-0.6666 0.6666 0.0 0.33333]になるから またwの0.3333で割ってやれば[-2 2 0 1]に戻る クリックした画面のワールド座標は、スクリーン座標[160 80 0 1]の(x,y)だけではダメで glReadPixelsのGL_DEPTH_COMPONENTでzも拾ってこないと OpenGLならgluUnProjectを使うのが楽
55 : RBOをコピー等のオーバヘッドなしでテクスチャオブジェクトとして振舞わせることは可能ですか?
56 : 不可能です 最初からテクスチャに描けよ
57 : GLSLについて質問があります。 fragmentシェーダ内でアクティブであるテクスチャの横幅、縦幅を取得する方法はありますか? 現在はuniform float pixel_size_x;等の変数を作成しセットして利用しています。 これが自動的に求められる(シェーダ内で関数を用いる等で)と、 例えばポストプロセスでガウスをかける時に非常に簡単になるのですが このような関数はありますでしょうか。 もし存在しており、ご存知の方がいればご教示のほうお願いします。
58 : textureSize()
59 : >>56 ありがとうございます。デプステクスチャが使えないandroidなもんで...
60 : GLUTでの視点の操作について質問させていただいてもよろしいでしょうか。 平面を移動する物体があります。 物体の向き(進む方向)の真後ろから物体を見たいのですが、 視点の位置がうまく導き出せません。 物体の操作方法は http://www.wakayama-u.ac.jp/~tokoi/opengl/ex-a.html のページを参考に r-=(マウスのX座標)/10.0; (物体のX座標)+=(マウスのY座標)*sin(r*π/180.0)/100.0; (物体のZ座標)-=-(マウスのY座標)*cos(r*π/180.0)/100.0; で導出しています。 まだまだわからないことばかりで大変恐縮ですが 何卒ご教示のほうお願いします。
61 : 何が分からないのか意味不明 何をやりたのかも意味不明
62 : 申し訳ありません。 物体が平面の上を自由に動くプログラムを作りたいのですが、 その際に視点を物体の真後ろに固定したいのです。 物体を自由に動かすことは自分でできたのですが、 視点が物体の真後ろに固定する方法がうまく見つからず、アドバイスをいただきたい という内容です。
63 : 物体の位置からのオフセットを決めて視点の位置に物体の位置+オフセット値を入れれば 取り敢えずケツにくっついて動くよね。 物体が回転したら視点の位置ベクトルに物体の回転量を掛ければいい。
64 : 物体の場所が判っていて物体の向きも判っているなら、視点も視線も判るべさ。
65 : >>62 物体の前方を意味する方向ベクトルを v とし、 物体の中心位置の位置ベクトルを p とする。 カメラの位置ベクトルを p - l * v とする(l は物体とカメラの間の距離)。 カメラの視線の方向ベクトルを v とする(あるいはカメラの注視点の位置ベクトルを p とする)。 カメラの天頂方向の方向ベクトルは適当に設定する(普通は物体の天頂方向と同じにする)。 カメラの3つのベクトルをこのように設定すれば、 基本的にはとりあえずこれで望みのことは出来るはず。 ただ、これだと物体がほんの少しでも向きを変えれば、その瞬間に カメラは注視している物体の周りを「大きく」回ることになるので、 たいていは非常に見難いことになる。 カメラの移動を遅らせたり、慣性を付けたりして工夫する必要がある。
66 : >>63 様 >>64 様 >>65 様 おかげさまで無事に動くことができました。 わかりやすいアドバイスをありがとうございました。
67 : >>58 57です。レスありがとうございます。 また、返信が遅れてしまい申し訳ありませんでした。 そのままの名前だったのですね・・・。 バージョン1.3から使えることを先ほど確認しました。 おかげでGL側のコードが非常にスマートに書けそうです。ものすごい嬉しいです。 本当にありがとうございました。
68 : ※ OpenTKです GL.BindBuffer (BufferTarget.ElementArrayBuffer, glResources[ibuf]); GL.BindVertexArray (id); GL.BindBuffer (BufferTarget.ArrayBuffer, glResources[positions]); GL.DrawElements (省略) みたいに (1) ElementArrayBufferをバインドして (2) バーテックスアトリビュートをバインド (3) DrawElements するとメモリアクセス違反で落ちます。 (1)と(2)を入れ替えると正常に動作します。 DrawElementsの直前でElementArrayBufferをバインドしなければならない という制約はありますか? もしくは何かすごい勘違いをしてますか?
69 : わかりました glBindVertexArray()の前にglBindBuffer(GL_ELEMENT_ARRAY_BUFFER)を呼ぶと落ちます 本にはVAOのバインドはカレントのバッファーポイントを変更しないと書かれていますが、 ATIだと思いっきり変更してくれるようです。 やれやれ
70 : 解決乙 いろいろあるよね(´・ω・`)
71 : しつこくてすみません。OpenGL4.2の仕様書にはVAOの保存されるステートに ELEMENT_ARRAY_BUFFERが明記されていて初期値0で初期化されると書いてあります。 というわけでATIの動作は正しいです。 本(OpenGL Super Bible)の記述が間違えています あとIntelドライバーだと保存してくれないみたいです。 http://stackoverflow.com/questions/8973690/vao-and-element-array-buffer-state
72 : 固定シェーダーとまったく同じ機能のGLSLコードどこかに落ちてませんか?
73 : 固定シェーダーではマルチテクスチャだったり、合成方法だったり関数で指定するだけだが、 シェーダーは使う機能ごとに異なる記述しないといけないから、何をもってして固定と同じと呼ぶかがそもそも不明。
74 : 質問は日本語で
75 : OpenGL ES の本とか参考になるかも。
76 : Mac+GeforceでGLSL描写がすこぶる遅いって話を聞いたんだけど これはOSとGPUの相性だったりしますの?
77 : いやシェーダーにFogColorとかあって それをセットすれば固定シェーダーと同じ画像が得られるというだけですよ? 探せばありそうですが意外と無いです
78 : お前は何を言っているんだ・・・・
79 : >>78 OpenGL2まではFogは固定機能であったんだよ。 それともシェーダー=プログラマブルシェーダーっていう最近の子なのかい? >>72 適当にググったのだとこの辺とか?ES2.0向けっぽいけど、このくらいなら違いはないっしょ。 http://code.google.com/p/gles2-bc/source/browse/trunk/Sources/OpenGLES/OpenGLES20/shaders/?r=4 まぁこの手のオープンソースプロジェクト漁るのが王道かな。
80 : 自分で使ったことはないけど似たようなものがShaderGenで作れると思う http://3dshaders.com/home/index.php?option=com_weblinks&catid=14&Itemid=34
81 : 微妙にスレ違いかもしれないけどGL関係なので・・・。 C++でglew.hを複数回includeしてしまうとエラーを吐く仕様なのは理解しています。 現在、 クラスのメンバ関数のデフォルト引数にGLenum型の定数を、 クラスのメンバ変数の型にGLenum型を利用したいと思っています。 例) classA.h ←glew.hをinclude classB.h ←glew.hをinclude これらのヘッダを相互にincludeすると先程のエラーを吐くとおもいます。 現在はこの問題に対してglew.hの中から使用する型や定数の部分を抜き出して ヘッダ上部で前方宣言することで解決しています。 よりスマートな解決法をご存知の方がいましたら教えて頂けないでしょうか。
82 : インクルードガードが付いてるのに複数回 include でエラー吐くとは思えんが。
83 : #ifdef ヘッダーで検索してみろ
84 : classA.hとかclassB.hにインクルードガードが付いてないとかが原因だったりして…。
85 : >>82 >>83 >>84 レスありがとうございます。 申し訳ありません、自己解決しました。 エラー内容は下のようなモノだったのですが C1189: #error : gl.h included before glew.h どうやら、自作のGLヘッダの前にOpenCLのc++ラッパ用ヘッダcl.hppを includeしたのが問題だったようです。(内部を確認しにいったところgl.hが・・・。) スレを汚してしまい申し訳ありません。
86 : 知らんがな
87 : すいません。 openglのポリンゴンのオブジェクトを作った後、バインドしなきゃ 有効なならないとか解説されてますが。 バインドっていったいなにをやっているんですか?なぜ必要なのでしょうか?
88 : 質問は日本語でおねがいします 一体どこでそんな解説を見てきたんですか OpenGLにポリゴンのオブジェクトなんて物は存在しません
89 : ポ、ポリゴンじゃねえよ!
90 : ぬ〜ぶすだ、ぬ〜ぶす!
91 : glBindBufferじゃね?
92 : >>88 お前は本当に頭が悪いな。どこにポリゴンなんて書いてある? ちゃんと「ポリンゴン」と書いてあるだろう。 恥かく前にゴミは消えろ
93 : >>92 ポリンゴンって、スタートレックみたいだなーと思ったぉ。
94 : それクリンゴンや
95 : 某MMOのMobの名前か?
96 : 三角形の秘密を教えてくれないいけずな奴だろ
97 : は?なに?
98 : それはポリンキリー
99 : >>98 自演だろ (ノД`)
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
強いAI(人工知能)ver0.0.1 (807)
ふらっとVisual C#,C♯,C#(初心者用) Part94 (197)
理系しねよ (200)
FeliCa でソフトを作りまくるスレ 2ブロック目 (371)
初心者の俺が初めて覚えるプログラム言語 (459)
C++相談室 part95 (482)
--log9.info------------------
★サウス★SOUTH★南★pt.9 (754)
PSG Part.3 (230)
神門 Part.2 (653)
物凄い勢いで誰かが質問に答える Part.46 (467)
童子-T Part.13 (641)
真実は闇の中★大阪アングラ・ローカル裏情報★Pt3 (796)
今聴いている曲 Part.8 (270)
うげー 日本人のヒップホップ板だった (204)
TIMBALAND (189)
【フカシNCC】フクちょんマンPart7【哀れな35歳】 (291)
Bach Logic Part.4 (636)
BEASTIE BOYS Part.5 (553)
Romancrew Part.3 (355)
日本人ラッパー格付け (867)
晋平太-SHINPEITA- (580)
D-BLOCK周辺 (592)
--log55.com------------------
【ATP】テニス総合実況スレ2019 Part459【WTA】
【ATP】テニス総合実況スレ2019 Part460【WTA】
地方競馬実況6222
●2019 MotoGP 第6戦 イターリアGP Lap1
地方競馬実況6223
【NJPW】新日本プロレスワールド part.523
【ATP】テニス総合実況スレ2019 Part461【WTA】
【ATP】テニス総合実況スレ2019 Part461【WTA】