OpenGLスレ Part14
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/01/19(火) 20:46:36現在のバージョンは3.2
http://www.opengl.org/
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
== 必読書 ==
・OpenGLプログラミングガイド 原著第5版 (通称赤本)
・OpenGL(R) Reference Manual (通称青本)
・OpenGL Shading Language (通称だいだい本)
・OpenGL(R) SuperBible: Comprehensive Tutorial and Reference
・OpenGL ES 2.0 プログラミングガイド
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
あると便利。
・ゲームプログラミングのための3Dグラフィックス数学
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
NeHe: http://nehe.gamedev.net/
== 前スレ ==
Part13: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
0002デフォルトの名無しさん
2010/01/19(火) 20:57:05Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
== C/C++以外から使うには ==
Rubyから --> ruby-opengl
Pythonから --> PyOpenGL
Javaから --> JOGL
JavaScriptから --> ???
Haskellから --> ???
0003デフォルトの名無しさん
2010/01/19(火) 20:57:59== モデルデータ ==
三角形を表示するのに飽きたらこれ。スタンフォードバニーが表示できたらレンダラー童貞卒業だ。
・Stanford大学: http://graphics.stanford.edu/data/3Dscanrep/
一番有名なうさぎのモデルほか。PLY形式。
== パーサー ==
OpenGL自体は3Dのファイルフォーマットを何も規定していないが、
何らかのフォーマットを読めないと面白くないので以下は一例。
(他に使いやすいライブラリがあったらスレで紹介してください)
・TriMesh2: http://www.cs.princeton.edu/gfx/proj/trimesh2/
PLY,OBJほか
・GLMetaseq: http://kougaku-navi.net/
メタセコイア、だと思うのだが使った事がないので知らない
== その他 ==
・Mesa: http://www.mesa3d.org/
フリーのOpenGLのソフトウェア実装。どうしても実装のソースが見たい人用。
ただしお世辞にもわかりやすいとは言えない
0004デフォルトの名無しさん
2010/01/19(火) 21:01:27テンプレは追々改良していくという事で。
Web上でもまとまったOpenGLの情報が全然無くて(床井先生の所ぐらい?)、
正直何とかならんものかと思ってます。
0005デフォルトの名無しさん
2010/01/19(火) 21:09:420006デフォルトの名無しさん
2010/01/19(火) 21:10:31赤本読めば入門書必読ってことはないだろ。
0007デフォルトの名無しさん
2010/01/19(火) 21:13:38早速質問申し訳ないのですが、OpenGL3.0以降ではセレクションモードが非推奨になっており、代替手段を探していたところOcculusion Queryを使うといいようなことが書いてありましたが、
Occulusion Queryをセレクションに使ったサンプルが見つからなかったため、どのように使用すればいいのかや、もしサンプルが載ったサイトがあれば教えて頂けると幸いです。
0008デフォルトの名無しさん
2010/01/19(火) 21:15:12nvidiaとamdのサイトは外さないほうがよかったんじゃないかな。
NVのサンプルコードなんかは床井先生のとこほど切りつめてないけど、
その分クラスにまとめてあって若干ライブラリライクだから
改造してなんか作ってみるとっかかりとして丁度良いと思うし。
0009デフォルトの名無しさん
2010/01/19(火) 21:16:320010デフォルトの名無しさん
2010/01/20(水) 16:59:27ウインドウとビットマップのそれぞれのレンダリングコンテキストを
引数にwglShareListsを呼ぶと失敗します。
ウインドウとビットマップのディスプレイリストは共有することはできないんでしょうか?
0011デフォルトの名無しさん
2010/01/20(水) 19:41:26大体考え方は同じだし、情報量の多い方で先に基礎的な考え方をみにつけたほうがいい。
0012デフォルトの名無しさん
2010/01/20(水) 22:49:53http://www.opengl.org/registry/specs/ARB/wgl_create_context.txt
read spec, grep fail.
0013デフォルトの名無しさん
2010/01/21(木) 15:27:35目次を見る限り入門用には良いかなと思うのですが感想教えてください。
OpenGL+GLSLによる3D‐CGアニメーション (I・O BOOKS) (単行本)
酒井 幸市 (著)
0014デフォルトの名無しさん
2010/01/21(木) 15:59:260015デフォルトの名無しさん
2010/01/21(木) 18:25:43ttp://glprogramming.com/blue/ch05.html#id40261
0016デフォルトの名無しさん
2010/01/21(木) 19:03:270017デフォルトの名無しさん
2010/01/21(木) 19:43:03http://www.google.com/search?q=%67%75%67%75%72%65%6B%61%73%75
0018デフォルトの名無しさん
2010/01/21(木) 19:50:05glLightfv (GL_LIGHT0+index, GL_POSITION, (GLfloat*)xyzw);
glLightfv (GL_LIGHT0+index, GL_AMBIENT, (GLfloat*)black);
glLightfv (GL_LIGHT0+index, GL_DIFFUSE, (GLfloat*)argb);
glLightfv (GL_LIGHT0+index, GL_SPECULAR, (GLfloat*)argb);
glLightf (GL_LIGHT0+index, GL_SPOT_CUTOFF, 180.0f);
最後のGL_SPOT_CUTOFFはあってもなくても一緒です。
30度ぐらいにすると細いビーム状になります。
どうすれば点光源に戻りますか
0019デフォルトの名無しさん
2010/01/21(木) 20:21:33逆向きにもう1個180度分のライト置けばいいんじゃね
002018
2010/01/21(木) 20:54:06ああ、それで解決です……んなわけあるか。
いや本当に困っています。まじ助けてください。
点光源にするには
glLightf (GL_LIGHT0, GL_SPOT_CUTOFF, 180.0f);
で良いんですよね????
なぜか半分しかライトが当たりません。
SPOT_DIRECTIONで方向も制御できるし……
0021デフォルトの名無しさん
2010/01/21(木) 22:07:36固定機能のライティングの関数をあれこれ調べるよりvertex or fragment shaderで
ライティングの計算したほうが楽じゃね?
0022デフォルトの名無しさん
2010/01/21(木) 22:08:470023デフォルトの名無しさん
2010/01/21(木) 22:21:390024デフォルトの名無しさん
2010/01/21(木) 22:38:05マジでで困ってるならソースアップすれば
そこだけ切りだせば小さいでしょ。
値もわからないその5行で原因はなにか聞かれてもわからんて
0025デフォルトの名無しさん
2010/01/21(木) 22:53:00ライトの種類を指定しているコードを何故最初に貼らないのか、って言うと
多分意味もわからずコピペで作ったから。
しかし今日の1時間ほど前から OpenGL を追いかけ始めたばかりの俺でも、
"OpenGL 光源種類 指定" 辺りでググったらそれっぽい情報いくつも見つかるんだが、
きっとしばらくしたら正解も見えてくるだろうと思いつつ、もうすぐ寝る
0026デフォルトの名無しさん
2010/01/22(金) 01:26:29つ 法線ベクトル
002718
2010/01/22(金) 09:05:102chを頼った俺が馬鹿だった。二度と聞かねーよ馬鹿
こんなクソスレ何の役にも立たない。
0028デフォルトの名無しさん
2010/01/22(金) 14:22:54ゆとり世代の印象がまた一つ悪くなる訳ですね
0029デフォルトの名無しさん
2010/01/22(金) 14:39:530030デフォルトの名無しさん
2010/01/22(金) 23:43:51http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
3D初心者ならいきなりOpenGLとか触らないで
↑のスレに載ってるようなライブラリをまず試したほうが良いんじゃね?
それで不満が出てきたら直接OpenGL使ったりすればいい。
0031デフォルトの名無しさん
2010/01/23(土) 09:04:21OpenGLはサイコロ以上を表示しようとすると全部自分で書かなければならなくなるのが何とも
0032デフォルトの名無しさん
2010/01/23(土) 09:22:10なんて学ぶ時間があったら、むしろその時間をコアな方に割いた方がいいんじゃね?っていう
入門チュート以上の事をしようとしたら急に大変になるってのは、結局何をやっても同じ。
むしろそれぞれのライブラリにはまた別の思惑や仕様や概念がある訳で、
果たして初心者がついてこれるだろうかって言う懸念が
0033デフォルトの名無しさん
2010/01/23(土) 11:21:560034デフォルトの名無しさん
2010/01/23(土) 11:24:080035デフォルトの名無しさん
2010/01/23(土) 14:00:27グラフィックソフトみたいにサイコロを二つ重ねておいて、
減算処理等をする便利関数みたいのはありますでしょうか?
とりあえず頂点データだけで、UV等は考慮しなくても
構わないのですが。
0036デフォルトの名無しさん
2010/01/23(土) 14:20:260037デフォルトの名無しさん
2010/01/23(土) 14:41:03四角形以上のポリゴンを三角形分割できる関数とかがあったので、
加減算できる便利関数もありそうかなと思ったのですが、
妄想過ぎました。アルゴリズムがないか探してみます。
0038デフォルトの名無しさん
2010/01/23(土) 15:00:15>減算処理等をする
フラグメントシェーダ的な意味合いなのかとも思ったが、
多分エスパーすると Boolean 合成の事を言っているのでは無いかと想像
0039デフォルトの名無しさん
2010/01/23(土) 15:25:36ブーリンアン合成です。ソフトのメニューにも書いてありました。
ttp://sylphys.ddo.jp/upld2nd/pc3/src/1264227819348.png
こんな感じの処理がしたいと思っていました。
0040デフォルトの名無しさん
2010/01/23(土) 16:05:41ttp://www.opencsg.org/
0041デフォルトの名無しさん
2010/01/23(土) 16:12:06共通の仕様を持った、割りと低レベル寄りのライブラリ、っていう位置づけであって、
別に何でも出来る高級言語みたいな物じゃないからそういう、
何かのソフトウェアが実現するべき(=自分で実装するべき)高級な機能なんて
ある訳ないような気もする。
てか、例えば大きな四角面4枚(三角面8枚)のサイコロに対して、そこにそれより小さなサイコロを
当てて XOR しようとしたとき、頂点数は合計されるだけじゃすまないよな?
勝手に頂点数増えられても困る
0042デフォルトの名無しさん
2010/01/23(土) 16:22:04自分のやってることができそうです!
用語を知らないと全然見つけられませんね。
ありがとうございました!!
0043デフォルトの名無しさん
2010/01/23(土) 16:41:05君がOpenGLの仕様策定や技術のコントリビューターならそういう主張もいいだろう。
しかし、日常で君がやっていることといったら、OpenGLのその低レベルAPIとやらを使ったコーディングじゃないのか?
つまり君はGLの有用なライブラリを作っているわけでもコントリビュートしてるわけでもないんだから、各種ライブラリに依存しまくってコーディングしている初心者とあまり差はない。
0044デフォルトの名無しさん
2010/01/23(土) 17:05:290045デフォルトの名無しさん
2010/01/23(土) 17:13:320046デフォルトの名無しさん
2010/01/23(土) 17:25:57ニートとかゆとりとはまた違う種族のようだ(ある意味DQNとも言う)。
0047デフォルトの名無しさん
2010/01/23(土) 18:10:07超人的技能で桶と洗濯板でゴシゴシ洗濯できる人間がすごいとは思わないけどな。
確かに電気代もかからないしきれいに洗えるけど、今の時代には無駄なテクノロジーだよね。
江戸自体ならスーパースターだけど今の時代なら無能な趣味人。
0048デフォルトの名無しさん
2010/01/23(土) 18:14:05>>41 の内容は、「ソフト側の都合で変わるような高級な処理はライブラリに含まれていないよ」
って主旨の発言なだけ。 なんか勘違いしてないか?頭悪いのか?
0049デフォルトの名無しさん
2010/01/23(土) 18:20:48あと、洗濯機で洗えないものも扱えるか、扱えないか。
0050デフォルトの名無しさん
2010/01/23(土) 18:29:49Cのみで頑張ってアプリを作ろうとしても、javaなら1/10の時間でWEBアプリなら1/100の時間で同じアプリが作れる。
つまりライブラリとしてモジュール化してjava,rubyなどでもAPIへのアクセスを容易にすることまでがOpenGLとかCG関係者の仕事。
そうじゃないといくら仕様が良くても使ってくれないし、いくら待っても人は増えずGLアプリも増えず、結局microsoftに行ってしまうだろう。
0051デフォルトの名無しさん
2010/01/23(土) 18:29:560052デフォルトの名無しさん
2010/01/23(土) 18:35:08そんな事より、普段GLSL書くときどこまでシェーダに任せるべきだろう。
もちろん内容によるが、例えばラスタライザ的な処理をGPU側にするか、あるいは場合によっては
CPU側でテクスチャとして起こしてしまうかで時々迷う。
0053デフォルトの名無しさん
2010/01/23(土) 18:37:43Vertex Shader 上の情報が無いと激しく非効率だったり実現がしんどい場合は迷う必要ないから。
0054デフォルトの名無しさん
2010/01/23(土) 20:40:11Java や ruby から簡単に使えるようにしてくれー
ボク馬鹿だからC++使えないしアルゴリズムもわかんないの
って言う人が世の中には大勢いるんだよね。
確かに需要はある。
>>52
GPUに渡すデータ量が少なくなるように選ぶな、俺だったら。
GPUメモリの上限がいまだに2GBなのはなんとかならんのか。足りん。
0055デフォルトの名無しさん
2010/01/23(土) 20:51:320056デフォルトの名無しさん
2010/01/23(土) 20:53:52「新しいテクノロジーを勉強するのは嫌だ〜」っていつの時代にもいる頭固いオッサンなんだろう。
0057デフォルトの名無しさん
2010/01/23(土) 21:01:29openGLをラップしたりサポートしたりする便利ライブラリやフレームワークもあるんだし
openGLはそれらから呼ばれる描画限定ライブラリで十分
0058デフォルトの名無しさん
2010/01/23(土) 21:25:52そういうことじゃないと思うよ。
openGLの低レベル関数を使った高レベルライブラリでアプリ開発ユーザーのこと考えた使いやすいのは今になってもまったく出ないよねってことだと思う。
0059デフォルトの名無しさん
2010/01/23(土) 22:48:34ぼんやりとした設計があるならばご説明願います。
実在するライブラリとの比較でも構いません。
DXのライブラリでも構いません。
洗濯機みたいな変な喩えは要りません。
痛い業界論みたいなのも要りません。
0060デフォルトの名無しさん
2010/01/23(土) 22:52:490061デフォルトの名無しさん
2010/01/23(土) 23:18:48巨大ライブラリの設計論すらもそっちの世界では既に完成されてるから。
opengl1.2のころから使ってますっていう干からびたオッちゃんじゃ石頭だから多分理解できないだろうけど。
0062デフォルトの名無しさん
2010/01/23(土) 23:24:03逃げ出したクチで、そんな中、アプリケーション寄りのお手軽便利な何でも機能みたいな物は無いよ、
というレスを どういう訳だか 曲 解 し て、自分の正当性を訴えなければ収まらない気分になり、
(自意識過剰)
ここはム板のスレなのに大上段に構えて的の外れた業界論とか語りだしちゃって、
(技術は無いがプライドは高い、というオッサンに多い傾向)
「俺はお前よりも上の存在だ」 という空気を醸し出そうとするも、周りをポカーンとさせてしまい、
もう元には戻れず、しかし元々自己中でKYでもある為か、一人で満足行くまで
勝手に話しだし、頭の悪い長文書いても読まれずスルーされるだけなのにそれにも
気づけない低脳中学二年生が、
二度とやってこないようなスレを作るにはどうしたらいいでしょうか。 これが要件になります
0063デフォルトの名無しさん
2010/01/23(土) 23:31:45と本気で思う。
0064デフォルトの名無しさん
2010/01/23(土) 23:32:17例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか、少なくとも低レベルAPIをIDEのサポートもなく(それもCで)ゴニョゴニョするのはただの禿げたマゾか露出狂の変態だろうね。
別にCでシコシコできなくはないが、よく考えてみればコーディングの大半の時間は、IDEの自動ジェネレーションで十分なことにほとんど費やされていると思うよ。
よっぽどの理由がない限り、大昔のwin32apiなんかを直接使ってる人はほとんどいないだろうけどそれと同じ。
今はopenglじゃないほうをやってるからこれといった要望はないけど、開発スタイルが未だに猿の惑星レベルなのは驚いた。
0065デフォルトの名無しさん
2010/01/23(土) 23:34:19顔真っ赤にして何いってんの?このオッサンは(笑)
0066デフォルトの名無しさん
2010/01/23(土) 23:34:43openGLが必要なら使えばいいし、いらないなら使わなきゃいいだけだろ
0067デフォルトの名無しさん
2010/01/23(土) 23:39:470068デフォルトの名無しさん
2010/01/23(土) 23:40:14昔、他人のライブラリを使っていて、自分のバグかライブラリのバグか判別困難で苦労したから、
出来る限り自前で作るようにしてる。
0069デフォルトの名無しさん
2010/01/23(土) 23:55:23お前 >>43 だろ。文意が読めない辺りよく似ている
0070デフォルトの名無しさん
2010/01/24(日) 00:09:10「自分はDirectXに慣れているから、誰かOpenGLをDirectX風にしてくれ。俺の為にそうしてくれ」
って言っているように見えた。 いやむしろ …なになに風、と言うよりもっと直球に、
「ソースレベルで DirectXと相互入れ替え出来るようにしてくれ。」 と言っているかのようにも見える。
もしもそうなら、Windows限定だとでも思ってるのか、あるいはMSに言え。
またDirectXでシュガー巻いたOpenGLなんかあったとしても、そもそも意味無いだろwww と気づけ
あと、もしも趣味でなく、仕事で使う用がある環境の場合には、少なくとも自社ライブラリくらい作ったり増えたりしてるから
一から全部なんて書かないだろうし、趣味でいじる分にはそれが楽しいってだけの人もいる。
世間は広いんだぜ
0071デフォルトの名無しさん
2010/01/24(日) 00:13:01レイヤーアーキテクチャに対する意識も低そうだな
0072デフォルトの名無しさん
2010/01/24(日) 01:09:42> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか
要はこれだけか。
イライラするほど内容の無い文章だな。
0073デフォルトの名無しさん
2010/01/24(日) 03:35:56ばれたか(笑)
0074デフォルトの名無しさん
2010/01/24(日) 09:57:58アンカーをたどって読んでみたが、俺には
> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装する……のはただの禿げたマゾか露出狂の変態だろうね。
と読めた。
結論はD&Dとかでどうにかなるコードジェネレータくれくれと読んだ。
0075デフォルトの名無しさん
2010/01/24(日) 10:15:350076デフォルトの名無しさん
2010/01/24(日) 15:34:590077デフォルトの名無しさん
2010/01/24(日) 18:27:530078デフォルトの名無しさん
2010/01/24(日) 18:48:310079デフォルトの名無しさん
2010/01/25(月) 14:38:19やっぱobjじゃないスか。
見りゃ分かる。自分で書ける。
0080デフォルトの名無しさん
2010/01/25(月) 14:42:03お試しで表示させてみる時の定番は Wave fron OBJ 形式な予感
※ただし俺の定番
0081デフォルトの名無しさん
2010/01/25(月) 14:43:01Wavefront OBJ形式=OBJな
0082デフォルトの名無しさん
2010/01/25(月) 15:46:360083デフォルトの名無しさん
2010/01/25(月) 16:08:59ある訳無いだろ。
含まれてるのは頂点とその結合、マテリアルや法線ベクトルなどの
もっともローレベルの基礎の情報だよ
アニメーションとかそんな別立ての情報は含まれて居ない
0084デフォルトの名無しさん
2010/01/25(月) 16:15:06モデルデータとモーションデータは、それぞれ話の軸が違う
かたやモデル情報は "形状の" データで、かたやモーションは時間軸での "変化の" 記録。
DirectX や COLLADA はこれらの味が違う情報を1ファイルにパックしてるが、
Wavefront OBJ はそんなパックを持っていないので、パースも楽だって話。データもASCIIだし
008582
2010/01/25(月) 16:19:210086デフォルトの名無しさん
2010/01/25(月) 17:54:470087デフォルトの名無しさん
2010/01/25(月) 19:13:450088デフォルトの名無しさん
2010/01/25(月) 23:59:010089デフォルトの名無しさん
2010/01/26(火) 00:17:230090デフォルトの名無しさん
2010/01/26(火) 00:51:23次いってみよう
0091デフォルトの名無しさん
2010/01/26(火) 22:13:02球体にデクスチャを貼り付けたいのですが、どうもうまくいきません。
もしよかったら回答ソースコード添付で教えていただけるとすごく助かります><;
球体のソースコード:http://www.dotup.org/uploda/www.dotup.org595592.c.html
球体の画像データ:http://www.dotup.org/uploda/www.dotup.org596182.zip.html
0092デフォルトの名無しさん
2010/01/26(火) 22:49:23どこが上手くいかないのかわからないともなんとも助けようがない。
なんでもいいから解答をソースでくれって話なら質問スレでもお断わりだろう。
0093デフォルトの名無しさん
2010/01/26(火) 23:15:31ご返事が送れて申し訳ないです。
現在のソースコード:http://www.dotup.org/uploda/www.dotup.org596400.c.html
どうもmyDisplay関数内のglutSolidCubeを球体glutSolidSphereに変えたら表示されなくなってしまいます。
予想では、setupTextures関数が怪しいとおもってるんですが、
setupTextures関数が理解できません・・・
0094デフォルトの名無しさん
2010/01/26(火) 23:36:24>>92
mainはコピーミスで途中で消えていましたorz
すみません><
0095デフォルトの名無しさん
2010/01/27(水) 00:34:570096デフォルトの名無しさん
2010/01/27(水) 00:43:00どこだろう;
0097デフォルトの名無しさん
2010/01/27(水) 01:05:04球にも立方体にもテクスチャ張られてたよ。
0098デフォルトの名無しさん
2010/01/27(水) 01:17:320099デフォルトの名無しさん
2010/01/27(水) 01:18:510100デフォルトの名無しさん
2010/01/27(水) 04:42:54実はC/C++ 自体全然わからなくて、でもどうしてもなんかテクスチャ貼ったキャラ動かしてみたくて
説明読んでも理解出来ないから他人にソース書いてもらいたいって、
そういう話だよね?
010191
2010/01/27(水) 06:58:18>>97
球体と立方体にテクスチャは晴れるのですが、どちらも球体にしたいのです。
そこで、キューブ体glutSolidCubeを球体glutSolidSphereに変えたいのですが、
変えてしまうとキューブから球体に変えたオブジェクトが消えてしまいます。
質問の意味としては、球体2つにテクスチャを貼り付けたいという意味です。
>>98
sun_oldは、テスト用なので、気にせず>>91の画像を使っていただいてほしいです。
>>100
このプログラムは、「図解 OpenGLによる3次元CGアニメーション」と
http://sports.oit.ac.jp/~whashimo/server/~whashimo/Article/OpenGL/index.html
↑のサイトを元に作りましたが、全部コピペしたわけではありません。
ちなみに、現在のソースは、立方体と球体の画像取り込みからではない
テクスチャマッピングのソースを画像読み込みにし、オブジェクトが動くように
しただけです。すると立方体を球体にしようとしてもできないので、
質問させていただきましたorz
みなさんレスありがとうございます。説明不足でもうしわけなかったです。
0102デフォルトの名無しさん
2010/01/27(水) 08:32:29あと、能力による話だとは思うのですが
数学関係のクラスをどこまで自力で実装してますか?
0103デフォルトの名無しさん
2010/01/27(水) 13:51:490104デフォルトの名無しさん
2010/01/27(水) 13:52:1297だけど結果から言うと立方体でも球体でも動いた
>>91の画像は2つ入ってるけど使うのはtitan.tga?
sun_oldじゃなくても気にするなって言うが、全部解像度が違うんだから気にする
質問プログラムはsun_oldを使い、glutSolidSphereで動かないというなら、動かないプログラムと画像をupしないと意味が無い
glutSolidCubeをglutSolidSphereに変えて動かないなら変え方が間違ってるんだろうし
glutSolidSphere(1.0, 1, 1); とかに変えてんじゃないの?
0105デフォルトの名無しさん
2010/01/27(水) 14:34:11中身が詰まってようが空だろうが外からは見えないから表面だけ定義すれば同じこと、
というのが面グラフィックの基本コンセプトだと思うが。
「中身が詰まった」ことでどのような違いを生みたいのか書かんと答えが出ないな。
0106デフォルトの名無しさん
2010/01/27(水) 15:10:420107デフォルトの名無しさん
2010/01/27(水) 16:02:04ttp://www.sgi.com/products/software/opengl/examples/more_samples/
のsimplecapみたいな。もしそうなら
ステンシルテストのキャッピング(赤本5版日本語だと456頁)って手法かな
0108デフォルトの名無しさん
2010/01/28(木) 00:40:36ttp://artis.imag.fr/Membres/Cyril.Crassin/
のサイトを参考にしてvoxelレンダリングに挑戦してみたら?
OpenSceneGraphのvolume rendering機能の方が簡単かもしれんが
レンダリング可能なサイズが小さいかも。
0109デフォルトの名無しさん
2010/01/28(木) 11:03:460110デフォルトの名無しさん
2010/01/28(木) 11:14:560111デフォルトの名無しさん
2010/01/28(木) 17:59:07// ステンシル値格納用配列
buf_stencil = new int[xsize*ysize];
for(int i=0; i<xsize*ysize; i++){
buf_stencil[i] = 0;
}
glReadPixels(0, 0, xsize, ysize, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf_stencil);
//もしステンシル値1のときは・・・
if( buf_stencil[xsize*(ysize-y-1) + x]==1){ /*ステンシル値をチェック*/
011291
2010/01/28(木) 20:31:27できました!ありがとうございます!
あと、画像2枚うpしてますが、2枚の画像を2つの球体に
別々に表示する方法がわかりません・・・
分かる方おられないでしょうか><;
0113デフォルトの名無しさん
2010/01/28(木) 20:56:19よくわからんけどUNSIGNED_BYTEなのにint[ ] でいいの?
あとステンシルをCPUに持ってくるって、どういうことする場合なのか興味ある
0114デフォルトの名無しさん
2010/01/28(木) 22:55:14UNSIGNED_INTで値が読み込めました。
なぜこのような処理をするかというと、ステンシル値1の部分で、CVの関数を使って画像処理を行い、
またGL(ARToolKit)に座標変換させるためです。
0115デフォルトの名無しさん
2010/01/28(木) 23:08:020116デフォルトの名無しさん
2010/01/28(木) 23:52:50まぁ8ビットだろうけどw
0117デフォルトの名無しさん
2010/01/29(金) 00:06:210118デフォルトの名無しさん
2010/01/29(金) 16:55:400119デフォルトの名無しさん
2010/01/30(土) 06:56:05GUIツールキットはありますか?
GLUIはすでに使用していますが、少し物足りませんでした。
0120デフォルトの名無しさん
2010/02/02(火) 06:25:34久夛良木 Cellとは違う発想でコンテンツサーバとして存在できるようなアーキテクチャを、他社が開発したとして、
そのプロセッサとCellのプロセッサの中でいろんなプロトコルスタックができますから、レイヤをビシッと決めてやればつながる。
ですから、最終的には国際規格にもっていく話になると思いますよ。
―― どういうレイヤで入ってくる企業があっても問題はない?
久夛良木 最終的にはJavaということになるでしょう。
超レガシーで、携帯電話でも全部溶けてしまうような話になるかもしれない。DirectXみたいなのは最悪なんですね。
―― どこらへんがですか?
久夛良木 もともとレガシーなものを垂直にたたいたら早いというものでしょ。あれは。
―― 当たり前の話ですよね。
久夛良木 論外ですね。互換性もないし。
http://ascii.jp/elem/000/000/031/31681/index-6.html
0121デフォルトの名無しさん
2010/02/04(木) 00:20:44メモリ上に用意したビットマップから、動的にテクスチャを生成しようと
考えてます。そこでglDrawPixelsとglCopyTexSubImage2Dを使ってみました。
その際、ビットマップの大きさがウインドウの大きさ以上になる部分が、
テクスチャに読み込まれないという問題があるのですが、どのように解決
できますか。
以下に、ソースを簡単に。余計なコードも多そうですが。
GLubyte map[WIDTH * HEIGHT * 3];
void display(void)
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport); // Viewポートの保存
glViewport(0, 0, WIDTH, HEIGHT); // Viewポートをテクスチャにあわせる
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glDisable(GL_TEXTURE_2D); // テクスチャOFF
glDrawPixels(WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, map);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); // Viewポートの復元
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glEnable(GL_TEXTURE_2D); // テクスチャON
glBegin(GL_QUADS); { テクスチャの書き込み } glEnd();
glutSwapBuffers();
0122デフォルトの名無しさん
2010/02/04(木) 00:24:230123デフォルトの名無しさん
2010/02/04(木) 00:44:58glTexImage2Dを使っちゃっても、普通に速いんですね。
0124デフォルトの名無しさん
2010/02/04(木) 05:28:580125デフォルトの名無しさん
2010/02/04(木) 22:27:511.C1,D1,Sxのバッファ状態から、
2.ステンシルマスクを作成し(カラーバッファ未使用)→Cx、D2、S2
3.C1,D1,S2のバッファ状態にもっていく
これを繰り返し行いたく、
A案
1後:FBOへ切り替え
2後:S2をglReadPixels()でCPUメモリへ退避
FBOからデフォルトへ戻す
S2をglDrawPixels()で復帰
B案
1後:D1をglReadPixels()でCPUメモリへ退避
2後:D1をglDrawPixels()で復帰
を試しましたが、どちらもglReadPixels()で遅いです。
(A案の方が、サイズが小さい分少しだけ速いようですが)
※PBOでglReadPixels(),glDrawPixels()してもほとんど変わらず
デプスバッファかステンシルバッファを高速に退避&復帰させる
にはどうすべきでしょうか?
#赤本には、
#glCopyPixels()をXORで使用するとGPU内で画像交換できる
#とか描かれていますが、どうしていいのかのか、また、
#上記のケースで使用できるのかもわかりませんでした。
もしくは、デプスバッファだけを一時的に切り替えて、2が行えるといいのですが
よろしくお願いします。
0126デフォルトの名無しさん
2010/02/05(金) 05:40:11ttp://ja.wikipedia.org/wiki/XOR交換アルゴリズム
glCopyPixelsでやったことはないですが
0127デフォルトの名無しさん
2010/02/07(日) 00:54:39printf("%d\r\n",js.lX);
で一応、初期値の -8 とプリントされているのですが、
動かしても変動がありません。どうも倒しながらキーボードを入力すると数値が変動するようです。
現在はキーボード入力で入力したときだけOpenGLが再描画されるのですが
これをJoystickを倒した時に再描画されるようにするにはどうすればよいのでしょうか?
switch (key) {
case 'd':
{
Point NextPos( PosX+0.2, PosY );
if( !ColCheck( NextPos ) )PosX +=0.2;
glutPostRedisplay();
}
ソースはこんな感じになっています。キーボード入力時のみの再描画ではなく、常に?描画するにはどうすればよいのですか?
初心者ですみません。書き込んでいて何を言ってるのかわからなくなってきました。
0128デフォルトの名無しさん
2010/02/07(日) 01:04:22これをswitchの外に置くだけじゃないのか
0129デフォルトの名無しさん
2010/02/07(日) 01:11:15ものすごい速度で再描画されています。
どうしたものでしょう、
0130デフォルトの名無しさん
2010/02/07(日) 01:33:05Joystick extern DIJOYSTATE2 js;を外部変数としていて
if( FAILED( hr = g_pJoystick->GetDeviceState( sizeof(DIJOYSTATE2),&js) ) )。
return hr; // The device should have been acquired during the Poll()
//ここで実際にゲームコントローラの状態を取得してjsに代入する
とあるのですが
if(js.lX>300){
printf("右");
}
で実行すると
error LNK2001: 外部シンボル ""struct DIJOYSTATE2 js" (?js@@3UDIJOYSTATE2@@A)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。
とエラーが出てしまいます。これはどういう意味なのでしょうか??
0131デフォルトの名無しさん
2010/02/07(日) 01:53:010132デフォルトの名無しさん
2010/02/08(月) 09:13:160133デフォルトの名無しさん
2010/02/08(月) 09:58:390134デフォルトの名無しさん
2010/02/08(月) 13:43:56glutって使われてるの?
0135デフォルトの名無しさん
2010/02/08(月) 15:26:310136デフォルトの名無しさん
2010/02/08(月) 22:05:10GLUTで勉強してればいいのかなとか心配なら、そんなこと気にする必要ない。
どんなライブラリでも使えるようになればいい。
0137デフォルトの名無しさん
2010/02/12(金) 01:16:02教授にglutやっとけば問題ないといわれたんだが、
その人がちょっと古すぎる人なので今でも通用するか不安だったんだ
0138デフォルトの名無しさん
2010/02/12(金) 01:29:120139デフォルトの名無しさん
2010/02/12(金) 01:54:590140デフォルトの名無しさん
2010/02/12(金) 02:57:04めんどいな
0141デフォルトの名無しさん
2010/02/12(金) 03:21:100142デフォルトの名無しさん
2010/02/12(金) 03:24:090143デフォルトの名無しさん
2010/02/12(金) 15:03:15床井先生・・・(:ω:)
0144デフォルトの名無しさん
2010/02/12(金) 17:35:480145デフォルトの名無しさん
2010/02/12(金) 18:30:420146デフォルトの名無しさん
2010/02/12(金) 19:52:31glutはさすがに時代遅れだろう。
0147デフォルトの名無しさん
2010/02/12(金) 19:53:59そもそも、gl_ModelViewMatrixとかの組み込み変数は廃止予定なんだからダメだろ。
0148デフォルトの名無しさん
2010/02/12(金) 20:16:50glutSolidTeapot使いたいしw
0149デフォルトの名無しさん
2010/02/12(金) 20:33:11でもこれだけのためにQtランタイム要求するのはちょっと。
0150デフォルトの名無しさん
2010/02/12(金) 23:23:140151デフォルトの名無しさん
2010/02/12(金) 23:33:01wxpython + pyopengl 入れるだけ pydev eclipse でも動かせる
マック環境でインスコ簡単すぎて泣ける
gttkglext 入れるの難しすぎる・・・orz
0152デフォルトの名無しさん
2010/02/13(土) 02:30:53現在は wxWidgets
未来は Qt
0153デフォルトの名無しさん
2010/02/13(土) 03:10:510154デフォルトの名無しさん
2010/02/13(土) 11:17:03gui ライブラリの取捨選択に正解なんてないと
思う結局何かしらの長所もあれば短所もあるし
どれが一番良いかは platform 次第の部分も大きいし・・・
いまから eclise, netbeans みたいなかんじに
普及させるとかは難しいだろうし
マルチプラットフォームは java 系統はよくできてると
思う。日本語入力とか難があるとかそういうのもあるし
ノルウェーのOpera Software ASAは11日、独自エンジンを搭載したWebブラウザー「Opera」v10.50のベータ版を公開した。
http://www.forest.impress.co.jp/docs/news/20100212_348671.html
0155デフォルトの名無しさん
2010/02/14(日) 00:58:51デフォルトでは、表示される範囲ってx,y,z=[-1,1],[-1,1],[-1,1]だけど、そこに[0,100],[0,100],[0,100]の範囲にある図形を描きたい。
方法はいくつか思いついたけど、どれが可読性(よく見かける、ややこしくない)/利便性(めんどくさくない、タイピングや考える手間が少ない)/速度(無駄な計算が少ない)などの面でバランスがとれているのはどれだろうか?
1. 図形の各々の座標をx=x/50 - 1, y=y/50 - 1, z=z/50 - 1とし、[-1,1]の範囲に収める
2. GL_MODELVIEWマトリックスをいじる。glScaled(1.0/50, 1.0/50, 1.0/50);glTranslated(-50, -50, -50);
3. GL_PROJECTIONマトリックスをいじる。glOrtho(0, 100, 0, 100, 0, 100);
なんとなく、3がベストな気がするが、例えばそれに拡大・縮小機能を付けるとき、2でやっていればglScaledで楽に変えられる。
GL_PROJECTIONにglScaledかけても結果は同じかもしれないけど、それをやってるサンプルを見たことがないけどなんでかなぁ。
0156デフォルトの名無しさん
2010/02/14(日) 01:02:540157デフォルトの名無しさん
2010/02/14(日) 02:24:25概念的な違いはあっても、表示のされ方は同じようなので、どう考えればいいのか分からんのです。
実際にものの大きさを変えたり動かしたりならモデル変換で、
見た目の上での問題で、ズームなり移動なりしてるなら投射と考えていいのかしら。
例えばGoogle mapみたいにマウスでつかんで引っ張って動かすみたいなインタフェースの場合、
あれは地図を動かしてると考えるのか、視点が変わってると考えるのかどっちなんだ?
あと、glRotateやglTranslateを投射に使うのはやめた方がいいのかなぁ?
0158デフォルトの名無しさん
2010/02/14(日) 03:13:05だからその単位に合わせたカメラを作ればいいんじゃない。
現実と同じように考えればわかりやすい。
数個の図形を表示するだけなら、好きにすればいいと思う。
0159デフォルトの名無しさん
2010/02/14(日) 05:55:223。投影方法はGL_PROJECTIONへ
結果が変わらないからどっちでもいい場合もあるが、結果が変わる時に困る。
法線/ライト関係や、頂点シェーダー使う場合とか
>>157
地図(MODEL)を動かすのとカメラ(VIEW)を動かすのは、ライトがあると結果が変わってくる
どちらも投影ではないのでMODELVIEWマトリックスを弄ることになる
0160デフォルトの名無しさん
2010/02/14(日) 12:11:48ありがとうございます。
なんとなく分かったような分からないような……
MODELVIEW行列でカメラを、元データの座標系のまんま描いたときに全体像が写る位置に移動させて、
投影する範囲をPROJECTION行列で設定するのがいいっぽいですね。
拡大・縮小は、MODELVIEWのスケールをいじっても、PROJECTIONの視野の範囲をいじってもどっちでもできそうです。
できればPROJECTIONでやってしまいたい感はあるのですが、回転動作も実装しないといけないかもしれないのです。
カメラ位置固定でカメラの首を振れば対応できる範囲じゃなくて、裏側も見られるくらいに回したいのですが、それは投射じゃないのでMODELVIEWになるのですね。
そして、そういうことするなら、いっそのことMODELVIEWで固めてしまいたい感じがします。
0161デフォルトの名無しさん
2010/02/14(日) 13:12:28拡大縮小がカメラのズームならPROJECTION
普通はGL_PROJECTIONは(glLoadIdentityしたあと)gluPerspective/(glFrustum)/glOrthoのどれか1行書くだけでいい
0162デフォルトの名無しさん
2010/02/14(日) 17:59:160163デフォルトの名無しさん
2010/02/14(日) 20:28:15>>カメラの位置、カメラの向く方向、カメラの傾き(ロール)これらはVIEWマトリックスなのでMODELVIEW
gluLookAt は PROJECTION で設定するのがいいと思うのだが、どうなんでしょう?
0164デフォルトの名無しさん
2010/02/14(日) 20:33:140165デフォルトの名無しさん
2010/02/18(木) 07:12:010166デフォルトの名無しさん
2010/02/18(木) 10:44:530167デフォルトの名無しさん
2010/02/18(木) 11:34:530168デフォルトの名無しさん
2010/02/18(木) 12:12:190169デフォルトの名無しさん
2010/02/18(木) 22:32:150170デフォルトの名無しさん
2010/02/18(木) 22:40:33シェーダのソースは丸見えになるということなんですね。
0171デフォルトの名無しさん
2010/02/18(木) 23:57:210172デフォルトの名無しさん
2010/02/19(金) 02:30:350173デフォルトの名無しさん
2010/02/19(金) 11:09:590174デフォルトの名無しさん
2010/02/20(土) 15:27:16事前にシェーダーバイナリを使えたとしても、
それはドライバ会社のシェーダーコンパイラ依存があるからって事じゃね?
(GLって確かシェーダーバイナリの仕様まで決めてないかと)
つまり自分の環境しか意識しないのであれば、事前にシェーダーバイナリ作って
プログラムに埋め込むなり、別バイナリとしておくなりしておけば良い
(これが、言葉的に実行時コンパイルしかできない訳ない、になる?)
0175デフォルトの名無しさん
2010/02/20(土) 20:38:220176デフォルトの名無しさん
2010/02/25(木) 00:27:30UNSIGNED_SHORT_5_6_5だとアホみたいに早いのに・・・。
透過色の処理はRGB5551, RGB565のどちらの場合でも切ってるのに、
何が効いてるんだよ
0177デフォルトの名無しさん
2010/02/25(木) 08:16:53ドライバやグラボ依存だと思われる
0178デフォルトの名無しさん
2010/02/26(金) 22:01:56バッファをフラッシュした際に落ちるのはどういった原因が考えられますでしょうか?
ウィンドウのサイズを変更した時、バッファをフラッシュするところで落ちてしまいます。
0179デフォルトの名無しさん
2010/02/27(土) 10:35:520180デフォルトの名無しさん
2010/02/27(土) 12:00:15ありがとうございます。早速今晩にでも試してみます。
0181デフォルトの名無しさん
2010/02/28(日) 18:52:15(拡張でHALF_FLOATがサポートされてるのは確認)
質問があるんですけど、(通常のGLでも意味が同じならOKです)
頂点配列でVBOを作って、それで頂点属性を指定する場合、
当然頂点配列もHalfFloat部分は、16bitにしなければならないと思いますが
通常のC++では16btiの浮動少数点型は有りませんよね?
つまり、通常の単精度floatを、半精度に変換するルーチンをかませながら
float -> HalfFloat と代入しながら頂点配列を操作する感じなんですかね?
で更にシェーダー側の質問ですが、
単精度のHalfFlaotで受け取る頂点属性は何か特別な宣言がいりますか?
例えば
attribute lowp vec2 TexCoord;
とか、精度修飾子も低い指定が必須ですか?それとも無関係?
それからシェーダー内のHalfFloat属性の変数は、計算に注意点は何かありますか?
色々と細かい質問ですがよろしくお願いします。
0182デフォルトの名無しさん
2010/02/28(日) 20:23:19シェーダプログラムを複数作成するプログラムを組んでいるのですが、
現在使用しているシェーダプログラムの識別子を返すような関数はありますでしょうか?
例えば、
glUseProgram(1);
がどこかで呼ばれた後、他の場所で"1"の値を取得したいのですが・・・。
glIsProgramは識別子が分かってないとダメみたいですし・・・。
もしかすると、プログラムを複数作成してる時点でおかしいのかもしれないのですが、
どなたかご教示お願いします。
0183デフォルトの名無しさん
2010/02/28(日) 20:35:34考え方が逆
glCreateProgram() の戻り値がシェーダーもアタッチされてる識別子で、自分で制御しなきゃいけないでしょ
つまり
GLuint programID;
programID = glCreateProgram();
glUseProgram( programID );
てな感じで、変数(構造体なりクラスなりのメンバとか)として
今セットしてるプログラムを制御しなきゃ駄目
0184デフォルトの名無しさん
2010/02/28(日) 20:48:21レスありがとうございます。
シェーダプログラムの作成とシェーダを用いて行う処理を
一つのクラスにまとめてしまおうと考えています。(楽に再利用できるように)
別のクラスか何かで既にシェーダプログラムを使用していた場合、
使用中のシェーダプログラムが変わってしまうので、
上記の処理を終えた後に元のシェーダプログラムに戻しておきたいと思ったので・・・。
例)
Aクラス処理開始(ProgramID:1)
↓
↓→Bクラス処理開始(ProgramID:2)
↓
↓→Bクラス処理終了(ProgramID:2)
↓
Aクラス処理終了(ProgramID:1)
分かりにくくてすいません。
0185デフォルトの名無しさん
2010/02/28(日) 20:57:52普通は、描画前に自分が必要なセットをして終ったらリセットじゃないかな?
描画A
glUseProgram(ID_A);
glDraw***();
glUseProgram( 0 ); // リセット(以降に意図しない描画をさせない為)
描画B
glUseProgram(ID_B);
glDraw***();
glUseProgram( 0 );
これなら、どんな描画を呼ばれても平気じゃん
こう言う作りにしてにないのは、設計の問題な気がする
(GLの仕様にマッチしない設計)
0186デフォルトの名無しさん
2010/02/28(日) 21:01:38自分でglUseProgramをコールしてるんだから
今セットしている値をカレント値として取っておいて
PUSHとPOPの仕組みを作れば良いじゃん
0187デフォルトの名無しさん
2010/02/28(日) 21:21:26>>185
やはりその方法しかないですよね・・・。
>>186
そうしてしまうと、別クラスでシェーダを変えた時に
Push,Popの値とズレが生じてしまうので、
AもBも包含し、Push,Popを管理するクラスCが
必要になってきたりとむしろ煩雑になる気がして・・・。
バックバッファの描画結果をFBOに移し変えてフィルタ処理を行い、
再びバックバッファに書き込む、という処理をクラス化しようとして
glIntegerv()の
GL_TEXTURE_BINDING,
GL_RENDERBUFFER_BINDING_EXT,
GL_FRAMEBUFFER_BINDING_EXT,
の3つを使って以前のクラスの各設定値は全部取得できたので
シェーダの識別子も取得出来るだろう、と考えたのですが甘かったですねorz
ちょっと仕様変える必要がありそうです。お騒がせしました。
そしてこんなにも早くレスをくださった皆様、ありがとうごさいました。
0188デフォルトの名無しさん
2010/02/28(日) 23:30:34つglGetIntegerv( GL_CURRENT_PROGRAM, &id );
0189デフォルトの名無しさん
2010/03/01(月) 00:50:59VBOでHALF_FLOAT使ったことないので他からの推測だが、C++側をfloatで用意しておけば、
あとは勝手にGL側が内部でHALF_FLOATに変換するような気がする。
0190デフォルトの名無しさん
2010/03/01(月) 11:52:18携帯ゲームで頂点のデータ(法線とか色とか)をcharやshortで持っているアプリを
デスクトップに移植する場合floatで置き換えてしまって良いですか。
何が何でもメモリ使用量を減らしたいからだと思うけどデスクトップなら4バイト使っても問題ないよね?
0191デフォルトの名無しさん
2010/03/01(月) 12:43:190192デフォルトの名無しさん
2010/03/01(月) 13:56:00ゲームとか作った経験がないのでで実際に使われる頂点数とかどの程度影響があるのかよくわからんのです。
0193デフォルトの名無しさん
2010/03/01(月) 16:07:38182で質問をした者です。
ありがとうございます。無事に解決できました。
GL_CURRENT_PROGRAM,こんな直球な名前の定義があったんですね・・・申し訳ありません;
おかげさまで仕様変更することなくプログラムを進めて行けそうです。
本当にありがとうございました。
0194デフォルトの名無しさん
2010/03/03(水) 23:48:17OpenEXRのソースコードの中にhalf floatを扱うクラスか関数があって
それ使ってfloatからhalf floatに変換してGLへ渡していたような気がする。
0195デフォルトの名無しさん
2010/03/11(木) 15:16:03マウスで周りみれて移動もできるようにしたんだけど
マウス動かすから、ウィンドウ外にマウスがでちゃうんだ。
ウィンドウ外にマウスがでると、制御できなくなるんだ。
あれってGLUTの設定かもしれないんだけど
誰かわかんないかな?
0196デフォルトの名無しさん
2010/03/11(木) 15:53:43画面から出さないようにしちゃうとか ClipCursor()
端っこにくっついても動くようにしたいなら、毎回マウスを画面の中央に移動させたりとか SetCursorPos()
じゃだめかな
0197デフォルトの名無しさん
2010/03/11(木) 18:27:52thx
windows上で動けばいいけど、glutで生成したウィンドウ関係なしなのかな
関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
WINAPIでやるべきなのかな?関係ないかな。
もうスレ違いかぬ。
0198デフォルトの名無しさん
2010/03/11(木) 22:27:300199デフォルトの名無しさん
2010/03/11(木) 22:48:11>関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
どこにどの関数をどんな引数で入れたのかとかないとさすがにわからん
>>196の関数もWIN32APIだからググればきっとわかるよ
0200デフォルトの名無しさん
2010/03/12(金) 01:14:35ペースあがってきたなOpenGL。OpenCLとの連携強化とかテッセレーターとかDX11相当色々。
0201デフォルトの名無しさん
2010/03/12(金) 02:22:24あんまりペースあげられてもなー。
MesaがOpenGL 2.x相当になったかと思えばOpenGL 3.xで破壊的なことされるし
レガシーフリーで足並みそろったかと言えば全然だし。
iPhoneみたいに具体的な製品と結びついてないと標準化は名ばかり。
0202デフォルトの名無しさん
2010/03/12(金) 09:37:08番号が上がってるのは分かるが内実が伴ってないというか、
それで何が変わるの、実際に使われるのというと疑問がある。
いきおい勉強するきも沸いてこない
0203デフォルトの名無しさん
2010/03/12(金) 12:33:58個人的な意見としてもOpenGLには完全な業界標準としての位置を築いて欲しい。
0204デフォルトの名無しさん
2010/03/12(金) 20:50:150205デフォルトの名無しさん
2010/03/12(金) 20:52:140206デフォルトの名無しさん
2010/03/12(金) 20:55:110207デフォルトの名無しさん
2010/03/12(金) 20:58:440208デフォルトの名無しさん
2010/03/12(金) 21:20:43相当面倒くさくて、ARBとか細々としたものに対応するのも面倒くさくて、結局
もっと上位のミドルウェアを使わなきゃやってられないなぁと思った頃には、
なんでOpenGL使おうと思ってたんだっけ?とかいうことになってたり
0209デフォルトの名無しさん
2010/03/12(金) 22:56:29そんなの含めなくていい。
もっと勉強しろ。
0210デフォルトの名無しさん
2010/03/12(金) 23:31:510211デフォルトの名無しさん
2010/03/13(土) 06:46:58なんかマイナーなフォーマットでも使うのか?
0212デフォルトの名無しさん
2010/03/13(土) 12:49:13そういえばOpenGL 4.0ならXPでもSM5.0機能が使えるんだな。
0213デフォルトの名無しさん
2010/03/13(土) 15:24:15GLSLを用いて畳込み等のフィルタ処理を行う時、
depth bufferやstencil bufferを利用しない場合は
renderbufferの関連付け(attach)はしなくても良いのでしょうか?
どなたかご教示お願いします。
0214デフォルトの名無しさん
2010/03/13(土) 15:36:31もしかするとデプステストしないんなら、いらなかったかもしれない。まぁ聞くより試してみるのが一番早いよ。
0215デフォルトの名無しさん
2010/03/13(土) 15:45:34レスありがとうございます。
試してみるしかないですか・・・。
家にATIとNvidiaと二つのビデオカードがあるんですが、
片方では動いて片方では動かなかったりすることがたまに起きるので、
公式な解答があるとそれに従った方がいいかなと思い・・・。
スレ汚し申し訳ありません。試してきます。
0216デフォルトの名無しさん
2010/03/13(土) 15:55:52今試した見たらいらなかったわ。しかもDepthTest有効にしてもエラー出なかったw
http://firestorage.jp/download/c3c28c3aeec2b2db09e49dfbd3b62e4094cfb6b6
↑は参考までに。C#で書いてあるのはご愛嬌。
0217デフォルトの名無しさん
2010/03/13(土) 16:07:230218デフォルトの名無しさん
2010/03/13(土) 16:45:15>>217
レスありがとうございます。
テストもしていただけたみたいで、本当にありがとうございます。
これで画像処理する時にVRAMを圧迫するような領域を確保しなくてすみます。
カードが少し古いOpenGL2.0までの対応なので、
こちらでも試してきます。色々とお世話になりました。
0219デフォルトの名無しさん
2010/03/13(土) 17:39:28NVIDIAのドライバは柔軟と言うか、GLの仕様を外れても動くイメージ
ATIのドライバは、GLの仕様に厳格と言うか、仕様に外れるとスグにハングするイメージ
よくATIのGLドライバがクソって言われてるのは、この辺だと思う
0220デフォルトの名無しさん
2010/03/13(土) 17:43:01このスレではOpenGL specificationを読んでる人は少数派かな?
0221デフォルトの名無しさん
2010/03/13(土) 18:03:550222デフォルトの名無しさん
2010/03/13(土) 22:19:060223デフォルトの名無しさん
2010/03/14(日) 11:32:440224デフォルトの名無しさん
2010/03/14(日) 12:29:310225デフォルトの名無しさん
2010/03/14(日) 12:52:36また一昔のDXとGLの構図見たくなるんじゃね
一般人は、IE以外使わない気がするw
0226デフォルトの名無しさん
2010/03/14(日) 13:47:25でも最近はIEのシェア下がってきてるし、ヨーロッパの方ではOSインストール時にブラウザ選択画面が出たりするようになってきてるからな。
0227デフォルトの名無しさん
2010/03/14(日) 16:56:07標準を名乗るならモデルは実装非依存にしてバックエンドをDXにしてもよい形態にするだろうし、
あとはシェーダを書かせるかどうかだろうな。
silverlight陣営は標準化とか考えずにすむので先に実装を投入するだろうが、さてどうなるかな。
プロプライエタリなコードを使い、かつゲームを書くのにJSはつらかろう。
0228デフォルトの名無しさん
2010/03/14(日) 18:26:23>標準を名乗るならモデルは実装非依存にしてバックエンドをDXにしてもよい形態にするだろうし
しないからw
それはもう、Web"GL"じゃねーし
>silverlight陣営は標準化とか考えずにすむので先に実装を投入するだろうが
だから、それってMSだろ
WebGLにはのってくるわけない
どうしてMSがWebGLに興味を示さないかを理解してないんだね
そう言うユーザーのご都合主義(例えユーザーの為にそれがベストでもw)で物事は進まない
0229デフォルトの名無しさん
2010/03/14(日) 18:45:10で、どうしてMSは興味を示さないの?
0230デフォルトの名無しさん
2010/03/14(日) 19:41:30Silverlightがあるからだろ。WebGLとは随分性質の違うもののようにも思えるが、どちらもRIAを作成する上で使用されるからな。
0231デフォルトの名無しさん
2010/03/14(日) 22:01:11OSビルダーであるMicrosoft見たらナンセンスなんだろう
世の中のスーパーハカーの人たちにとって、絶好のカモ
(今年のGDCでも問題点とはしていたらしいが…)
まあ結局、情勢見て世間に浸透するようなら
WebGLの協賛にNVIDIAとかいるしMicrosoftもWebDXみたない事をしだして
OpenGLの専売じゃなくなるんでしょ
0232デフォルトの名無しさん
2010/03/14(日) 22:53:57今回ハードウェアが使えるとはいえ普及する気がしない。
0233デフォルトの名無しさん
2010/03/14(日) 23:11:50しかしモデル指向ではなくプログラム指向っぽいんだよな
そもそもCanvasタグのときも、プログラム指向的だったのが謎。
SVGを操作するという簡単かつ汎用性の高い実装を目指さなかったのか疑問なくらいだ。
SVGをちょこまか拡張してXMLベースのモデルフォーマットを作ってくれれば、
OpenGL界隈の人間も喜ぶと思うんだがなあ。
0234こども社長
2010/03/19(金) 21:03:05http://pc12.2ch.net/test/read.cgi/tech/1268999608/
0235デフォルトの名無しさん
2010/03/19(金) 21:12:110236デフォルトの名無しさん
2010/03/20(土) 01:16:10もうすこし軽ければな…それは sl にも flash にもいえるけど…
0237デフォルトの名無しさん
2010/03/20(土) 19:45:040238デフォルトの名無しさん
2010/03/21(日) 15:32:380239デフォルトの名無しさん
2010/03/21(日) 18:19:15l | /
⊂(#・∀・)
/ ノ∪
し―-J |l| |
人ペシッ!!
(_)
)(__)(_
⌒) (⌒
⌒Y⌒
0240デフォルトの名無しさん
2010/03/22(月) 21:46:080241デフォルトの名無しさん
2010/03/22(月) 21:52:330242デフォルトの名無しさん
2010/03/22(月) 22:07:270243デフォルトの名無しさん
2010/03/22(月) 22:14:040244デフォルトの名無しさん
2010/03/22(月) 22:28:230245デフォルトの名無しさん
2010/03/23(火) 13:40:56「まばたき opengl」等でググったのですがそれらしいHPが見つけられませんでした。
なにか参考になりそうなサイト等あったら教えていただけませんか?
0246デフォルトの名無しさん
2010/03/23(火) 14:03:550247デフォルトの名無しさん
2010/03/23(火) 14:07:45間の段階とばしすぎ。3Dモデル作るだけ作っていきなりOpenGLでアニメーションさせるなんて無理無理。
基礎から学べ。
0248245
2010/03/23(火) 15:12:513Dでゲームを作って見たいと思い立って上のような事を考えました。
>>247
色々と段階があるのですね。
基礎と言うとまずどのような事から始めればいいのでしょうか?
openGLの入門書で大丈夫でしょうか?
0249デフォルトの名無しさん
2010/03/23(火) 15:28:04まぁ単なるアニメーションだけならシェーダーも要らないかもな。以下俺が参考にしたサイト。
http://wisdom.sakura.ne.jp/system/opengl/index.html
http://www.is.oit.ac.jp/~whashimo/server/~whashimo/Article/OpenGL/index.html
http://www.komoto.org/opengl/
http://www.ccad.sist.chukyo-u.ac.jp/~mito/ss/program/C/DialogBase/openGL/
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
http://wiki.livedoor.jp/mikk_ni3_92/
http://www.arakin.dyndns.org/index.php
http://asura.iaigiri.com/top.html
http://wlog.flatlib.jp/category/6/blogid/1/archive/2009-9-5
http://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/OpenGL
http://www.lighthouse3d.com/opengl/glsl/
http://www.opengl.org/
http://www.opentk.com/
サクサク開発進められると覚えも早くなるから一番したのURLにあるOpenTK使ってC#で開発するのもオススメ。
0250デフォルトの名無しさん
2010/03/23(火) 20:25:59上から掘下げていくなら、Vertex Skinningとかmorphingあたりからいけばできんじゃないかな。
0251デフォルトの名無しさん
2010/03/23(火) 20:31:380252デフォルトの名無しさん
2010/03/23(火) 21:18:02OpenGLでっていうか、スキニングとかボーン(などの代替物)によって頂点が回転する固有のロジックは
そもそも数学の世界の話になるから、OpenGLだろうとDirectXだろうと手計算GDI描画だろうと同じなので、
数学方面から当たればサイトなんていくつも見つかるよ。
OpenGLって言う前提はそもそもそのやりたい事と、あんまり関係無い
0253デフォルトの名無しさん
2010/03/23(火) 21:19:30描画系ライブラリの話じゃなくて、座標移動の計算の話だから、って事ね
0254デフォルトの名無しさん
2010/03/24(水) 00:21:39日本語のは知らないけど、英語サイトならDrDobbos Journalに寄稿してた人のサイトが良くできてた
URLは失念したので自力でヨロ
0255デフォルトの名無しさん
2010/03/24(水) 01:14:57「砂浜に宝の地図が埋まってるから探せ」的な情報だな
0256デフォルトの名無しさん
2010/03/24(水) 01:41:570257デフォルトの名無しさん
2010/03/24(水) 15:21:44glColor4fv()で色を指定するときは
GLfloat color[4] = {r, g, b, a};
の順番で良いのでしょうか?
赤本にも書いてないのですが……
0258デフォルトの名無しさん
2010/03/24(水) 16:21:290259デフォルトの名無しさん
2010/03/24(水) 21:03:510260デフォルトの名無しさん
2010/03/24(水) 21:11:040261デフォルトの名無しさん
2010/03/24(水) 21:27:53回転と移動とその他だけど、あれは単に 「有名な仕掛け」 であって、
やってる内容は頂点位置の計算だよ、と一応追記しておく。
で、OpenGL だとか DirectX (特にDirect3D) だとかは、あくまで描画処理をするライブラリであって、
一応、それに付随するベクトルとか行列の計算ルーチンは含まれてるけど、
別にボーンなんて曖昧なものはそもそも無い。
あれはあくまで、「とあるルールで計算して、頂点動かしてる」 ってだけ。
ボーンによるデフォームは各種3Dソフトでよく見るから、たまに勘違いする人いるけど、
ここはム板だからせめてその辺切り分けときたい気持ち
0262デフォルトの名無しさん
2010/03/24(水) 21:35:56最低限、高校数学B以上は普通に理解出来てて、その先がわからないと無理。
四元数とかの便利な道具も多分今は必須?オイラー角との変換とかも場合によってはいると思う
(ジンバルロックがあるから多分四元数使うのが普通かもしれない)
0263デフォルトの名無しさん
2010/03/24(水) 22:57:310264デフォルトの名無しさん
2010/03/27(土) 16:11:51Ready, Willing and Able ? AMD Supports OpenGL 3.3 and OpenGL 4.0
ttp://blogs.amd.com/developer/2010/03/25/ready-willing-and-able-%E2%80%93-amd-supports-opengl-3-3-and-opengl-4-0/
ATI Catalyst OpenGL 4.0 preview driver
ttp://support.amd.com/us/kbarticles/Pages/Catalyst-OpenGL-preview-driver.aspx
Last Updated:
3/25/2010
New Features:
Fully supports the OpenGL 4.0 specification on the ATI Radeon HD 5000 Series.
Fully supports the OpenGL 3.3 specification on the ATI Radeon HD Series & ATI FirePro Graphics Adapters.
0265デフォルトの名無しさん
2010/03/28(日) 19:30:250266245
2010/03/29(月) 14:13:40お礼が遅れてすみません!
忙しくて見にこれてませんでした。
サイト参考にさせてもらいます。
ご親切に教えて頂きありがとうございました!
0267デフォルトの名無しさん
2010/03/29(月) 21:19:48あり得るでしょうか。
forループ使ってglDrawElementsを繰り返し呼んでる部分が遅いことまでは
突き止めたんですが・・・・
そのプログラムはGLSLでいろいろ処理させてて、GLSLを使わないとF5も
CTRL+F5も遅くはならないです。
0268デフォルトの名無しさん
2010/03/29(月) 23:26:13Ctrl+F5の通常実行だとエラーに気づかずにずっと走ってしばらくしてから落ちる
とか?
0269デフォルトの名無しさん
2010/03/29(月) 23:35:09回答ありがとうございます。
そういうエラーを調べる方法ってあるんでしょうか?
デバッグする方法が無くて非常に困ってるんですが・・・・
0270デフォルトの名無しさん
2010/03/29(月) 23:58:27何分かなり昔のことなんで違うかも、違ったらごめんね
0271デフォルトの名無しさん
2010/03/31(水) 23:15:51うちは.NETしか分からんからOpenTKちょっと触れたけど
まじでOpenGLは勉強し辛い、情報が英語だけだからってのもあるんだけど
本格的に使うなら自作メッシュクラス作らないといけない
0272デフォルトの名無しさん
2010/03/31(水) 23:54:54ましてや勉強するつもりならそれくらい作れるようにならないと。
本格的にやってるとこは、画像とかモデルのライブラリは
独自に持ってるからライブラリはシンプルな方がいいんだよ。
0273デフォルトの名無しさん
2010/04/01(木) 10:40:27そして量産された車輪の再生産がアメリカ様の統一規格に駆逐されるわけですね、分かります。
0274デフォルトの名無しさん
2010/04/01(木) 12:44:29XNAのModelMeshが使い勝手悪すぎる、SlimDXは良いけど
OpenGL系、XNAとか様々なライブラリとの互換考えて作ることにした
0275デフォルトの名無しさん
2010/04/01(木) 20:55:53いいや、ゲームなんかはモデルデータを勝手に使われたら困るから
統一規格されたフォーマットがいいとは限らない。
だからcolladaは中間フォーマットなんだよ。
0276代行
2010/04/06(火) 22:42:04マウス位置によって視点がぐりぐり動くコードをかこうと
以下のようなコードを書いたのですがなかなかうまくいきませぬ
このコードなのですが、どうすればよいのかヒントを貰えませんか(答えならなお可 (・∀・))
(#elseのほうもダメでした)
http://codepad.org/5wvS4khb
0277デフォルトの名無しさん
2010/04/06(火) 22:45:310278代行
2010/04/06(火) 23:17:25processingでは上でやりたいコードはすぐにかけましたが
OpenGLでは何も設定しない時のgluPerspective/gluLookAtのデフォルト値は
調べてもよくわからんし
なんかこう、暗黙の前提みたいな部分が多くてよくわからんのです
上のは一応自分なりに考えて最小のコードを作ったんですけど・・
ちゃんと教えてくれるなら
今日作成したwavefrontのobjデータ読み込みクラスをうpします
0279デフォルトの名無しさん
2010/04/06(火) 23:48:03GL_MODELVIEW と GL_PROJECTION について学んでみると良い。
あと glutPostRedisplay()
0280デフォルトの名無しさん
2010/04/07(水) 04:48:16視点ってカメラとかプロジェクションとかの設定のこと?
VB/OpenTKのソースだけど一応参考程度に、C言語わからないから勘弁してくれ
'マトリクス作成
Dim mxproj As Matrix4 = Matrix4.CreatePerspectiveFieldOfView(CSng(vang * c_rad), CSng(vwd / vht), vnear, vfar)
'登録前処理(プロジェクション)
GL.MatrixMode(MatrixMode.Projection)
'マトリクス登録
GL.LoadMatrix(mxproj)
カメラも同様にする
Dim mcam As Matrix4 = Matrix4.LookAt(camE, camT, New Vector3(0, 1, 0))
GL.MatrixMode(MatrixMode.Modelview)
GL.LoadMatrix(mcam)
やっとカスタムメッシュクラス出来た、XNA,DirectX互換ファイルフォーマットも作ったし
OpenGLでDirectXと同じMesh.DrawSubsetを使えるようにしてしまった
0281代行
2010/04/07(水) 06:33:160282デフォルトの名無しさん
2010/04/07(水) 09:19:20ちょっと煽られたからってそんな事書くなよ
0283デフォルトの名無しさん
2010/04/09(金) 10:40:36libbulletmath.lib ってどこにあるんだYO!
0284デフォルトの名無しさん
2010/04/09(金) 11:09:500285デフォルトの名無しさん
2010/04/09(金) 11:29:43OpenGL + Bullet でテストしようとして、とりあえず Bullet2.76 落としてきて、msvc/2008 にある
BULLET_PHYSICS.sln を開いてビルドした所、そのライブラリが生まれなかったのだ
最新だと何かと統合されたんだろうか。 ググっても情報が出てこなくてハマった
0286デフォルトの名無しさん
2010/04/09(金) 12:27:47あら、2.75ではあったけど、2.76で変わったのかもね
デモプロジェクトとかがリンクしてるの見ればわかるかも
0287デフォルトの名無しさん
2010/04/10(土) 03:10:340288デフォルトの名無しさん
2010/04/10(土) 04:05:020289デフォルトの名無しさん
2010/04/10(土) 08:26:14あるいはDirectXのxファイルをデータ変換してOpenGLに
読み込めるフリーのソフトがあったら教えて下さい.
0290デフォルトの名無しさん
2010/04/10(土) 08:42:52ttp://support.amd.com/us/kbarticles/Pages/Catalyst-OpenGL-preview-driver.aspx
0291デフォルトの名無しさん
2010/04/10(土) 11:40:33>>289
「メタセコイア」「OpenGL」「ローダー」でぐぐるとこんなの出てきましたがどうでしょうか?
http://kougaku.blog28.fc2.com/blog-entry-283.html
私自身は使った事がないのですが……
0292デフォルトの名無しさん
2010/04/10(土) 12:12:43メタセコイアそれ自体がopenGLにデータを読み込めるフリーのソフトなんじゃないのか
0293デフォルトの名無しさん
2010/04/10(土) 14:34:38OpenGLってDirectXのようなMeshやTextureクラスとか無いから、
読み込むって言っても色々あってこれといった答えが無いような
頂点バッファ登録までするのか、頂点配列のデータを取得するだけなのか
いすれにしても、形状データをOpenGLなら形状データを受けるクラスや構造体とか作らないと駄目だと思うが
0294デフォルトの名無しさん
2010/04/10(土) 15:33:10ありがとうございます.こちらでも下記のようなサイトを
さぐりあてましたが,まだ詳しく読んでいません.
http://sssiii.seesaa.net/category/4430714-1.html
また,メタセコイアではXファイルの他にもいくつかの
データファイル形式をサポートしていいるのを見た記憶
があるのでその中にOpenGLが読み込めるファイル形式が
ないか調べてみます.
0295デフォルトの名無しさん
2010/04/10(土) 15:47:46「OpenGLが読み込めるファイル形式」なんてものはないから!
君が今よく調べるべきはファイル形式以前にOpenGLで何が出来るかだよ
0296デフォルトの名無しさん
2010/04/10(土) 16:02:08仕様通りに実装すると非常に大変なので、
1頂点あたり2ボーン、ウェイトは-128〜127という制限を付けたいのですが、
そう言う仕様で問題ないでしょうか?
0297デフォルトの名無しさん
2010/04/10(土) 16:24:030298デフォルトの名無しさん
2010/04/10(土) 17:00:580299296
2010/04/10(土) 20:30:041頂点当たりボーン2つというのは平気でしょうか???
0300デフォルトの名無しさん
2010/04/10(土) 20:40:42mqoやobjファイルを読み込むことは出来るが、基本はテキスト形式のファイルだから
頂点の座標・法線・テクスチャ座標とかを取得するには自分のプログラムでテキストデータを解析する記述をしないといけない
そういうサブルーチンやライブラリがネットにあれば落として使ってみるのも良い
うちはXファイルをコンバートしたり、Direct3D/OpenGLと互換できるファイルフォーマット作ったけどね
0301デフォルトの名無しさん
2010/04/10(土) 21:13:52どんなに大変でも仕様どおりに実装してください。それが仕様というものです
0302デフォルトの名無しさん
2010/04/11(日) 00:02:42以前はOpenGLをやってたさ。だが、3Dモデルをいちいちプログラムで
いちいち作成していられるか!という不満から多くの3Dモデリングソフト
が対応しているdirectXに乗り換えた経緯がある。
しかし、マイクロソフトが作ったDirectX、癖がありすぎて修得する
のが難しい.MFCと組み合わせたプログラムを一応、作ったがね。
物理シミュレーションソフトを作っているが、サウンド関係はいら
ないし,OpenGLが右手系対応だし,ODE(Open Dynamic Engine)も
OpenGL対応ということからやはりOpenGLを使いたい。しかし、
ネックになるのが3Dモデルをいちいちプログラムで作成しなければ
ならない点。
それで,OpenGLでも簡単に読み込めるフォーマットを出力できる
3Dモデリングソフトがないか聞いているんだ。
それを偉そうに上から目線で言うな、この32768年前のタコが、死ね!
0303デフォルトの名無しさん
2010/04/11(日) 00:04:160304デフォルトの名無しさん
2010/04/11(日) 00:06:090305デフォルトの名無しさん
2010/04/11(日) 00:20:35以前やってたんなら、OpenGL がどんなライブラリか知ってるんじゃないの?
DirectX における x ファイルのような、ベンダが用意した なんちゃら.opengl みたいな
専用ファイル形式なんて存在しないよ? というかそういうライブラリじゃないよ?
で、とりあえずどんなバカでもローダ書けそうな一番簡単なファイル形式っていうと・・・
wavefront の obj とか? 本当に頂点と面と簡単なマテリアルくらいしか情報無いけど、
テキストだし糞シンプル。 適当なモデラでテストモデル作って保存したファイルを眺めてみれば
他に資料なくても簡単に書けるぜ。
0306デフォルトの名無しさん
2010/04/11(日) 00:39:34OpenGLでも簡単に読み込めるってのが意味不明だが、>>291が書いてくれてるGLMetaseq
ttp://kougaku-navi.net/
>メタセコイアで作成したモデルデータ(*.mqo)をOpenGL上で表示するためのライブラリ
ってがそのものズバリなんじゃないのか?
0307デフォルトの名無しさん
2010/04/11(日) 00:45:48しなければならない点が面倒で、多くの3Dモデラーが対応してい
るDirectXに乗り換えたけど、OpenGLの現状は昔と変わっていない
ですね。
やはりDirectXでいきます。
0308デフォルトの名無しさん
2010/04/11(日) 00:47:390309デフォルトの名無しさん
2010/04/11(日) 01:04:27ありがとうございます。「やはりDirectXでいきます。」とは言った
ものの、もう少し、3DモデリングソフトとOpenGLの関係を調べて
みます。
DirectXの方がOpenGLよりも機能的に優れていますが、ころころ
仕様が変更されるのにウンザリしているので
0310デフォルトの名無しさん
2010/04/11(日) 01:14:020311デフォルトの名無しさん
2010/04/11(日) 01:25:000312デフォルトの名無しさん
2010/04/11(日) 01:32:20できない人の典型。
0313デフォルトの名無しさん
2010/04/11(日) 01:36:50OpenGLってライブラリだったのか?
そりゃ名前にライブラリって入っているけどさ
0314デフォルトの名無しさん
2010/04/11(日) 01:37:17このページにあるOpenGLの仕様書を全部じゃなくていいから
1章と2章の前半と興味ある部分だけでも読めばこのスレに書き込まれる疑問の9割ぐらいは解決するんじゃないかと思う。
固定機能大好きっ子は3.0以前の仕様書かCompatibility Profile Specificationを読めばいいかと思う。
よくわからん数式がでてきたらReal time renderingっていう本でも読んだらいいかな。
0315デフォルトの名無しさん
2010/04/11(日) 02:13:570317デフォルトの名無しさん
2010/04/11(日) 09:01:330318デフォルトの名無しさん
2010/04/11(日) 11:28:34お前は何を言っているのだ
0319296
2010/04/11(日) 12:39:57実用的にOKでしょうか?
0320デフォルトの名無しさん
2010/04/11(日) 12:58:010321296
2010/04/11(日) 14:52:50携帯電話やWeb向けに3Dゲームorアプリを作るのに、
1頂点当たり2ボーンまでという制限は妥当でしょうか?
それ以上は実装がかなり大変になります。
デザイナーではないのでキャラクターとか作るのに、
この実装で良いのかどうかさっぱりわからんのです。
M3Gの仕様上はミニマム2つなので大丈夫です。
実用的に2つで良いのかどうか?
0322デフォルトの名無しさん
2010/04/11(日) 15:11:17ああ、なんか妙な違和感がある質問だと思ったら、そういうことか。
それ、質問する先違う。 ここはプログラム板のOpenGLスレであって、
CG板じゃない。 ここにいるのはお前さんと同じく、コーディングする側の人間であって、
デザイナーさんとかモデル製作者側の人間じゃない。 質問する先が違う。
中には両方してる器用な人もいるだろうけど、多分求める答えは、
「そのプログラムを利用する側の人間」 に聞かないとわからないんじゃないかな
ここにいるのは 「プログラムを作る側の人間」 だ。
0323デフォルトの名無しさん
2010/04/11(日) 15:58:36俺はモデリングもやってるけど、頂点辺りボーン1本でやれっていわれたらそれでやるし。
1本だとウェイトが要らないから携帯とか容量厳しい環境の事を考えると理解できる。
でも2本くらいウェイト入れれると自由度はだいぶ高くなるな。
0324デフォルトの名無しさん
2010/04/11(日) 16:10:12悪いが、言ってる内容が真実なら
お前のヘッポコ理屈であり、妥当も何もヘタレの言い訳にしかならない
ウエイトが2つ以上になると、
処理負荷が高くなり実用的じゃないなら2つと言う制約は妥当だが
お前が大変なだけで、その仕様にするじゃ、お前がヘタレだって事にしかならないぞ?
大変でも実用化出来るなら、2つ以上にするべき
”かなり大変”ってのもお前の尺度だろ?
世の中に、それが大変じゃない奴が実装してるアプリがあったら
お前の所為でショボくなるんだぞ?
0325296
2010/04/11(日) 17:15:36うーん、2ボーン以上も実装可能なのは確かです。
詳細は略ですが、ものすごくやりたくないのです。
恐らく10人中9.8人は同じ意見なはずです。
2ボーンで可能なら2ボーンまでにしたいのです。
で、2ボーンまでしか対応しないライブラリってどうよ?
って話です。
0326デフォルトの名無しさん
2010/04/11(日) 17:26:080327デフォルトの名無しさん
2010/04/11(日) 18:52:02俺も携帯とかのメモリ帯域とか厳しい環境でシェーダー込みのライブラリとか作った事あるけど…
>恐らく10人中9.8人は同じ意見
これ、完全にお前さんのレベルでの主観だよね?
>で、2ボーンまでしか対応しないライブラリってどうよ?
世の中に、同じ環境で4ボーンとかに対応したライブラリが出てるなら
まさに、お前さんがショボイくて言い訳だらけだから、ダメダメでしょw
としか言いようが無い
そんな事を質問するより
ディレクターやデザイン担当に確認するほうが先
デザイン担当がボーン1つで良いと言えば、ダメダメライブラリでも
それで行けば良いだけ
なんかさ…、頭悪いよ…
0328デフォルトの名無しさん
2010/04/11(日) 18:57:54さらに言うなら、大変なのはハードの中の人
CPUやGPUやメモリコントローラーやDMAであって
プログラマはコードさえ組んでしまえば、大変でも何でもない
>それ以上は実装がかなり大変になります。
>うーん、2ボーン以上も実装可能なのは確かです。
>詳細は略ですが、ものすごくやりたくないのです。
>恐らく10人中9.8人は同じ意見なはずです。
普通によく居る、出来ないプログラマの発想丸出しなんだけど…
0329296
2010/04/11(日) 18:58:31モデルデータは新規ではないです。
既存のモデルデータをそのまま使うので。
3つ以上ボーンを使った場合、ウェイトの大きい方から2つ使う事になります。
首から肩の辺りが心配で。
0330デフォルトの名無しさん
2010/04/11(日) 19:02:312つ以上のボーンに対応出来るのに
>既存のモデルデータをそのまま使うので。
>3つ以上ボーンを使った場合、ウェイトの大きい方から2つ使う事になります。
2つ以上のボーンがるモデルを使う前提で、2ウェイト以上はカットするって事?
死んだ方が良いよw
それ違う動きになるじゃん
そともコンバーターでも作って、ウェイトを再計算でもするの?
ヘタレ全開じゃん
0331296
2010/04/11(日) 19:25:57実装は1頂点辺り2ボーンで確定。
0332デフォルトの名無しさん
2010/04/11(日) 19:30:26・2ボーン以上の仕様には、負荷問題ではなく、大変だからやらない(出来ないではない)
・使うモデルは、2ボーン以上の仕様が分っている
これで、どうして2ボーン限定のライブラリが良いの悪いのの発想になるんだか…
仕様を満たしてないじゃんw
2ボーン以上のモデルを使うが、2ボーンしか対応しない、そのモーション挙動は変わってしまう
それをプロジェクトで承認取るのが先
発想が、仕事人としてもヘタレだと思うぞ
0333デフォルトの名無しさん
2010/04/11(日) 19:34:410334デフォルトの名無しさん
2010/04/11(日) 19:37:12さも自分は間違ってないと言わんばかりのスタンスの奴で溢れているからw
因みに、このスレに限った事じゃない
他の技術系スレでも、BBXとかもでも同じ
0335デフォルトの名無しさん
2010/04/11(日) 19:57:430336デフォルトの名無しさん
2010/04/11(日) 20:17:37>この流れだとまともな意見も得られそうにないので、この辺でお開きと言う事で
だからおひらきも何も、最初から >>322 と言ってる訳で。頭悪すぎるよ本当に
自分が何かを間違えている、って事、ここに書かなくてもいいけど自分の中で認めな
じゃないと、ただの童貞だぞ♪
0337デフォルトの名無しさん
2010/04/11(日) 20:29:110338デフォルトの名無しさん
2010/04/11(日) 20:55:16プロジェクトやデザイナからの要求仕様と、実機での再生負荷等とで話し合いで決めればいい事
デザイナが2つも良いと言えば2つが妥当
デザイナが4つと言ってが、自分の2つという意見を妥当としたいなら、
その根拠や比べるデータを提示させてデザイナを納得させる
という、単にプログラム以前の社会人としての行動の問題
0339デフォルトの名無しさん
2010/04/11(日) 20:58:18プロジェクトやデザイナに聞くわけでもなく、他人に2ボーンまでのライブラリが妥当ですか?
とか質問するような頓珍漢は別の問題だねw
0340デフォルトの名無しさん
2010/04/11(日) 21:02:140341デフォルトの名無しさん
2010/04/12(月) 01:02:15「2ボーンのときとそれ以外の時の
メリット、デメリットをリスト化して持ってきなさい。」
仕様をどっちかに決めるのは
プログラマの仕事じゃないでござる。
0342デフォルトの名無しさん
2010/04/12(月) 01:39:540343デフォルトの名無しさん
2010/04/12(月) 07:34:57>>341は仕様を決める権限を持たない雑魚
0344デフォルトの名無しさん
2010/04/12(月) 12:00:380345デフォルトの名無しさん
2010/04/12(月) 15:28:460346デフォルトの名無しさん
2010/04/12(月) 18:29:50こんな事で揉めるなよ
0347デフォルトの名無しさん
2010/04/12(月) 22:33:29Clutterかっこいいよね
でも、Clutterをメインで使ってたmoblinはノキアのMeamoと統合して
MeeGo見たいな新しいのになり、GUIライブラリはQtになるみたいだから、
どちらかと言ったら衰退していくんじゃね?
ここまでくるとスレちだな
0348デフォルトの名無しさん
2010/04/14(水) 21:25:01こっち↓に書いたのですが1年以上前のスレで誰も見てない可能性が高いので。
http://pc11.2ch.net/test/read.cgi/gamedev/1109472943/89n-
関節部分がきれいに表示されないのでお願いします。
0349デフォルトの名無しさん
2010/04/15(木) 01:04:40曲がり方はウェイトの設定が滑らかでないように見えるけど、
もっと情報がないと適当な解答しか帰ってこないと思うよ
0350348
2010/04/15(木) 09:17:30画像は関節部分が上下のボーンに0.5づつ線形補間。
詳しい情報はソース見ます?
0351デフォルトの名無しさん
2010/04/15(木) 13:37:23たぶんバグではない。
0352デフォルトの名無しさん
2010/04/20(火) 03:01:520353デフォルトの名無しさん
2010/04/21(水) 18:02:28> GeForce 8000 series or higher; Geforce G100, GT120, 130, 220, GTS 150, GTS 250, GT310, 320, 330, 340, GeForce GTX 260 and higher, any ION based products.
OpenGL3.3 対応する GPU から GT240 が外されている件について
0354デフォルトの名無しさん
2010/04/21(水) 22:53:00比較的最近のGPUだと何枚まで使えますか?
※ シェーダーは使わずで固定パイプラインだけでいいです
0355デフォルトの名無しさん
2010/04/21(水) 23:13:26で取得したら8600M GTは4と出た。
ちなみに
GL.GetInteger(GetPName.MaxTextureImageUnits, out num);
だと32。
4は無いと思うけど32枚もいけるのなぁ。まぁそもそも32枚も使わないけどw
0356デフォルトの名無しさん
2010/04/22(木) 00:24:00まあ更新停止してた気がするから最近のはないだろうけど
0357デフォルトの名無しさん
2010/04/23(金) 00:45:49glGetIntegerv( GL_MAX_TEXTURE_UNITS, );
が4
glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_NV, );
が32
でした。
0358デフォルトの名無しさん
2010/04/24(土) 13:53:14質問をさせてください。
OpenGLを用いて3Dゲームを作成する場合、みなさんは3D描画以外の部分、
例えば音楽再生やコントローラの入力等は何を用いているのでしょうか?
現在はSDLを使おうと考えているのですが、もし他に有用なライブラリが
あればご教示ください。宜しくお願いします。
0359デフォルトの名無しさん
2010/04/24(土) 14:02:220360デフォルトの名無しさん
2010/04/26(月) 09:06:500361デフォルトの名無しさん
2010/04/26(月) 17:44:030362デフォルトの名無しさん
2010/04/27(火) 12:05:34例えば、
gluLookAt( 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
でオブジェクトが見えていたのに、二回続けて呼ぶと
gluLookAt( 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
gluLookAt( 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
オブジェクトが見えなくなる。
0363デフォルトの名無しさん
2010/04/27(火) 12:13:41http://msdn.microsoft.com/en-us/library/dd368663(VS.85).aspx
http://www.opengl.org/wiki/GluLookAt_code
ここらへんのページにヒントが書いてるよ。
0364デフォルトの名無しさん
2010/04/27(火) 12:22:270366デフォルトの名無しさん
2010/04/27(火) 13:36:08glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 30.0, (GLfloat)width/(GLfloat)height, 1.0, 100.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( 0.0, 0.0, -8.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
}
カメラの位置をマイナス方向からに設定して原点にあるオブジェクトをみようとすると見れない。
プラス方向(8.0)からに設定すると正常に動作します。glMatrixModeの関係でしょうか?
0367デフォルトの名無しさん
2010/04/27(火) 13:55:23どこかで glEnable (GL_CULL_FACE) してませんか?
あるいはモデルの描画直前で glDisable (GL_CULL_FACE) すると表示されませんか?
0368デフォルトの名無しさん
2010/04/27(火) 14:07:56ありがとうございます!解決しました!
0369デフォルトの名無しさん
2010/04/28(水) 02:54:11Lua as an Effect File Format for OpenGL
ttp://prideout.net/blog/?p=1
ていうのを見つけたんだが、これはよさそうなので今度試して見ようと思う。
ちょっとしたシェーダとかを開発するときに
FXComposerだとglsl使えないしFeedback transformとかrender to vertex bufferとか使えないようだけど
Luaならプログラム側の関数を呼べるからいろいろできそう。
こういうのを試した事がある人いる?
Luaの代わりにpython使うのはどうだろうか。
0370デフォルトの名無しさん
2010/04/29(木) 02:46:320371デフォルトの名無しさん
2010/04/29(木) 11:34:210372デフォルトの名無しさん
2010/04/29(木) 22:53:500373デフォルトの名無しさん
2010/04/29(木) 22:57:180374デフォルトの名無しさん
2010/04/30(金) 01:07:470375デフォルトの名無しさん
2010/04/30(金) 01:13:030376デフォルトの名無しさん
2010/04/30(金) 01:16:00もう出てる。というかOpenGLはGPUメーカーがドライバーに含めてリリースするから4.0対応ドライバーが出た時点。
nVIDIAも最近4.0対応ドライバー出したね。
0377デフォルトの名無しさん
2010/04/30(金) 01:26:23/ (※) |
|  ̄ |
ヽ /_____ヽ /
ヽ_|0l二二二二l0|_ノ
|vヽ___ノv|
(d| ・=ゝ ・=ゝ|b) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Z/ ( _ ) ヽフ < 死刑!!
/ @ @ ヽ \________
(ー――〜〜 ―――)
\ ______/
てヽ_/ lo//
/( て二/l__
(┃ ⌒ 二 )_O―┴┐
|┐ー┤ | |\O O|
| |_n_)┘  ̄ ̄
0378デフォルトの名無しさん
2010/05/01(土) 02:16:080379デフォルトの名無しさん
2010/05/01(土) 13:20:240380デフォルトの名無しさん
2010/05/02(日) 09:46:080381デフォルトの名無しさん
2010/05/02(日) 09:58:150382デフォルトの名無しさん
2010/05/02(日) 10:02:53カタログ上の文言じゃなくて、実際に自分で何を作りたくて、具体的に何が不十分なんだ
0383デフォルトの名無しさん
2010/05/02(日) 11:13:070384デフォルトの名無しさん
2010/05/02(日) 11:25:51だからそれはカタログ上の文言・・・ というか、DX10以降で採用された物であって、
実際に何を作ろうとして、具体的に何が不十分なんだ?って話。
ジオメトリシェーダとハルシェーダを使いたい 場合には不十分だろうけど、それは何かをしたい時の手段だろって話
0385デフォルトの名無しさん
2010/05/02(日) 11:39:13月を見た男の身体がリアルにモーフィングするゲームを作りたいんだよ。
毛をうじゃうじゃ生やしたいんだよ。臨場感を出したいんだよ。
だから、ジオメトリシェーダは必須なんだよ、文句あっか、ハゲ!
0386デフォルトの名無しさん
2010/05/02(日) 11:40:280387デフォルトの名無しさん
2010/05/02(日) 11:45:15他の手段でやれよ
>>386
なんの学習?
0388デフォルトの名無しさん
2010/05/02(日) 11:51:14リファレンスは有料・サンプルが英語ばかりじゃさすがに比較対象にならん
本書くなら今ならスマートフォンとかいいんじゃないの。Androidの本にさわりだけ載ってた。
0389デフォルトの名無しさん
2010/05/02(日) 12:06:38他の手段って、例えばどんな?
速度も質も損なわずにだぞ。
0390デフォルトの名無しさん
2010/05/02(日) 12:20:45月を見た男の身体から毛をうじゃうじゃ生えてくるリアルなモーフィング、
で、速度も質も損なわずに、としか書いてないから
どうとでも他の手段や方法で表現出来るだろ?って話
そしてジオメトリシェーダじゃないと絶対に絶対に絶対に不可能だと言うなら、それ使えばいいじゃない
>ジオメトリシェーダとハルシェーダを使いたい 場合には不十分だろうけど
と書いたのは、それが絶対に他の手段では(色んな意味で)不可能で、本当に必須ならば
DX9 では不十分だけどって話だ
0391デフォルトの名無しさん
2010/05/02(日) 12:28:070392デフォルトの名無しさん
2010/05/02(日) 12:40:12そんなに必死になって否定する必要もないだろ
0393デフォルトの名無しさん
2010/05/02(日) 12:47:50別に否定なんてしてないじゃん
0394デフォルトの名無しさん
2010/05/02(日) 15:12:260395デフォルトの名無しさん
2010/05/02(日) 15:28:140396デフォルトの名無しさん
2010/05/02(日) 16:23:22GL_ARB_geometry_shader4だとか
GL_ARB_draw_instancedだとか
GL_ARB_texture_buffer_objectだとか
そういうOpenGL用語を使って議論すべきじゃね?
Direct3D9の代わりにOpenGL2.x
Direct3D10の代わりにOpenGL3.x
と言えばええんでない?
0397デフォルトの名無しさん
2010/05/07(金) 21:20:17パーティクルを発生させるような、サンプルご存知ないですか?
openglでのマウスイベント系の情報が少なくて…参考にしたく
0398デフォルトの名無しさん
2010/05/07(金) 21:25:230399デフォルトの名無しさん
2010/05/07(金) 21:32:340400デフォルトの名無しさん
2010/05/07(金) 21:34:50目の前のテクノロジやライブラリはどこまでの何なのかが整理も出来ていない状態に見える。
OpenGLって グラフィクス・ライブラリだって知ってるんだろうか。
あと、関連ライブラリに GLUTとかあるのは知ってるんだろうか。 ※ここまでがマウスイベントの話
あと、パーティクルって具体的にどういう作業で実現する物か知ってるんだろうか
0401デフォルトの名無しさん
2010/05/07(金) 21:36:35大抵コピペで済ませようとしてるだけなので、多分意味なんてわかってない
0402デフォルトの名無しさん
2010/05/08(土) 00:14:15>>397
マウスだけ、
パーティクルだけ、ならいくらでも
サンプル転がっているよ。
そこからは自習の時間だ!
0403デフォルトの名無しさん
2010/05/08(土) 06:36:53「均一に」明るくしようとしたらどういう方法があるかな?
イメージとしては舞台をスポットライト2個で照らすんだけど、
1個だけが照らしてる部分も2個重なってる部分も同じ明るさにしたい感じ。
0404デフォルトの名無しさん
2010/05/08(土) 07:07:56ステンシルバッファにスポットライトのイメージ焼くんじゃダメなの?
0405デフォルトの名無しさん
2010/05/08(土) 07:31:57そうか、ステンシルバッファってこういう時に使うんだね。使ったことなかったよ。
使ってみる。サンキュー。
0406デフォルトの名無しさん
2010/05/16(日) 22:29:43パッケージを入れたはいいのですが
サンプルを動かした所
本来赤から青へのグラデーションパターンが生成されるはずが
黄緑から赤へのグラデーションパターンが生成されてしまいます。
更にウインドウも生成されません。
解決方法を教えていただけないでしょうか?
バージョンは9.04で
入れたパッケージは
freeglut3 freeglut3-dbg freeglut3-dev
libglut3-dev libglew1.5-dev libgtkglext1-dev
です
0407デフォルトの名無しさん
2010/05/17(月) 00:40:210408デフォルトの名無しさん
2010/05/17(月) 08:50:47俺はUbuntu9.04でも10.04でもOpenGLを使っている。
で、その情報だけではまったくわからないのでプログラムをどこかにアップしてくれ。
もしくは自分のやったことを正確に一般に使われる用語で説明してくれ。
0409デフォルトの名無しさん
2010/05/18(火) 15:33:44のページのGLUTをつかいたいのですが、どれをダウンロードしたらいいかわかりません。
教えてください。
0410デフォルトの名無しさん
2010/05/18(火) 15:42:02OSすら書かないアホに付ける薬の方が先だ。
0411デフォルトの名無しさん
2010/05/18(火) 15:44:22urlにwindowsが入っているのでわかると思い込んでしまいました。
0412デフォルトの名無しさん
2010/05/18(火) 15:51:290413デフォルトの名無しさん
2010/05/18(火) 15:54:540414デフォルトの名無しさん
2010/05/18(火) 15:57:39みつけました。
ありがとうございました。
0415デフォルトの名無しさん
2010/05/18(火) 16:44:23windowsは知らんがLinuxだとこちらの方が主流。
http://freeglut.sourceforge.net/
0416デフォルトの名無しさん
2010/05/18(火) 17:13:040417デフォルトの名無しさん
2010/05/18(火) 17:25:140418デフォルトの名無しさん
2010/05/18(火) 17:25:590419406
2010/05/19(水) 00:40:25すいません。
サンプルをまず上げるべきでした。
サンプルはこれです。
ttp://www1.axfc.net/uploader/File/so/43947
0420デフォルトの名無しさん
2010/05/19(水) 02:03:34setcolorってのがなんだかわからんけど、普通RGB順だろうから赤から緑のグラデーションで合ってるんじゃ?
赤青にしたいなら0.0を2番目にしてみたらー
つか学校の授業のサンプル?ずいぶん荒っぽいなぁ
0421デフォルトの名無しさん
2010/05/19(水) 08:45:47http://www.mlab.im.dendai.ac.jp/~05ki103/cgmreport.htm
setcolor(r,g,b)の説明を読むと、"r, g, bは赤緑青の値を格納するdouble型変数である。"
と書いてあってr,g,bは0〜255ではなく0〜1.0な。
x=0で setcolor(1,0,0)
x=511で setcolor(0,0,1)
0422デフォルトの名無しさん
2010/05/19(水) 08:48:030423デフォルトの名無しさん
2010/05/19(水) 14:43:540424406
2010/05/19(水) 22:04:24弄ってみたらどうやらサンプルが間違えているようです。
ですがなぜか赤から青へのパターンが生成できませんでした。
青から緑は出来たのですが。
ウインドウの方も生成されませんし。
>>421
その課題じゃありません。
しかも試しに動かしてみたらエラーでました・・・
0425デフォルトの名無しさん
2010/05/19(水) 22:13:40まず
1. 画面全部をR1色で塗りつぶす
2. 画面全部をG1色で塗りつぶす
3. 画面全部をB1色で塗りつぶす
をやってみ。お前はまず基本的な所がまったくわかっていない。
だから他人にも説明できない。
ウィンドウが生成されないならお前はどうやって色を確認してるんだ。
0426デフォルトの名無しさん
2010/05/19(水) 22:33:06ウィンドウの生成ができないのに赤から青はどこに出てるんだよw
あとなんでどこをどう変えたら青から緑になったとか書かないの?
こと細かく書けば物好きが答えてくれるのにw
(setcolorとかincmc.hとかいう中にあんだろうけど、それがわかんないとなんともだろうが)
つか課題なら講師に聞けばいいじゃん。授業料払ってんでしょ?
0427406
2010/05/19(水) 22:39:35setcolor(x/2, 0.0, 0.0);で黒から赤
setcolor(0.0, x/2, 0.0);で黒から青
setcolor(0.0, 0.0, x/2);で黒
でした。
ウインドウが生成されないでプログラムが動いてるって意味です。
外観の設定で視聴効果を切ればウインドウが生成されます。
パッケージが何かしら足りてないのでしょうか
0428406
2010/05/19(水) 22:46:17勉強ですがとりわけ何かの課題ってわけじゃないです。
そもそもプログラム自体の質問がしたかったわけではなく
正常に動作しないのはUbuntuに問題があるのではないかと
(パッケージが足りない等で)考えたんですが、
Ubuntuのスレで聞いたら、プログラム板行けって言われたんで
こっちで質問したわけです。
0429デフォルトの名無しさん
2010/05/19(水) 22:46:470430425
2010/05/19(水) 22:51:18お前は何も分かっていない。他人に聞かれていることをことごとく外している。
いいからグラデーションとか考えないで画面全体を1色で塗りつぶしてみろ。
お前以外の人間はsetcolor(r,g,b)、引数は(0-255 or 0-1)だと推測しているが、
お前の説明はそれと矛盾する。通常のOpenGLではお前の言う通りには「絶対に」ならない。
一番考えられるのはお前の説明が間違えている。
お前の説明は意味不明だからソースを出せといわれている。
だからウィンドウが生成されないならお前はどうやって色を確認しているのか。
0431デフォルトの名無しさん
2010/05/19(水) 22:52:52426だけど
linux環境ないんで想像だけどさ、(421のページから上いって課題臭いとこいってダウンロードしてincmc.h拾ってきたが)
void setcolor(r,g,b)
int r,g,b;
{
glColor3d(((double)r)/255,((double)g)/255,((double)b)/255);
}
なってんだよね。そうなってる?
最近C++ばっかで忘れちゃったんだけど、Cって引数の型チェックってしないんだっけ
だとsetcolorの引数に0.0とか渡すとスタックがずれるか?(ここが興味あったのでレスしてみた)
setcolorに渡してる 0.0 を 0 に変えてみたらどうだろうか
0432406
2010/05/19(水) 23:09:42すいません。
もう消しちゃいました。
>>430
不精しました。すいません。
for(x=0;x<512;x++)
{
setcolor((511-x)/2, 0, x/2);
for (y=0;y<512;y++)
{
setpixel(x,y);
}
}
これ出せば分かってもらえますかね?
>だからウィンドウが生成されないならお前はどうやって色を確認しているのか。
ウインドウだけ生成されないんです。
メモ帳を開いたら外枠なくて文字打つ白地の部分だけ表示されてる見たいな感じです。
>>431
0にしてみたらちゃんとグラデーション出来ました。
0433デフォルトの名無しさん
2010/05/19(水) 23:19:18もう知らん
0434425
2010/05/19(水) 23:29:46何で0にして「ちゃんとグラデーション出来ました」と言うのだお前は。
0なら黒だろ。
いいからまず画面全体を1色で塗りつぶせ。
r,g,bの3回やれば全部推定できるから。
お前の説明は何をやったら何が起きたのか、さっぱりわからん。
0435デフォルトの名無しさん
2010/05/19(水) 23:42:04こりゃエスパーも大変だな。
0436406
2010/05/19(水) 23:49:443回塗りつぶししましたけど
setcolor(255, 0.0, 0.0)で赤
setcolor(0.0, 255, 0.0)で青
setcolor(0.0, 0.0, 255)で黒になりました。
0.0を0で
setcolor(255, 0, 0)で赤
setcolor(0, 255, 0)で(黄)緑
setcolor(0, 0, 255)で青
と正常?に動きました。
>>435
枠をウインドウって呼ぶもんだと勝手に思い込んでました。
0437425
2010/05/19(水) 23:49:53#include <stdio.h>
void setcolor (r,g,b)
int r, g, b;
{
printf ("r = %f\n", ((double)r)/255);
printf ("g = %f\n", ((double)g)/255);
printf ("b = %f\n", ((double)b)/255);
}
int main (int argc, char** argv)
{
setcolor (0, 0, 0.0);
return 0;
}
を表示すると、
r = 0.000000
g = 0.000000
b = 6788705.349020
bの値は毎回違う。
0438425
2010/05/19(水) 23:57:18setcolor (0.0, 0.0, 0.0);
のときは
r = 0.003922
g = 4240451.482353
b = 4240451.545098
原因がこれだとしてもきれいなグラデーションにはならないと思うのだが……
まあいいや、俺もこれ以上は知らん。
0439デフォルトの名無しさん
2010/05/22(土) 02:11:33頂点法線をスムース化したいのですが
高速な方法(GLでの)・アルゴリズムというのはあったりするのでしょうか?
基本的なやり方だと頂点を共有する面法線を調べて
平均化して頂点法線とする、という方法だと思います。
ただあまりにも計算量が多いと思うのですが
これしかやり方は無いのでしょうか?
よろしくお願いします。
0440デフォルトの名無しさん
2010/05/22(土) 02:27:020441デフォルトの名無しさん
2010/05/22(土) 02:32:59ttp://ci.nii.ac.jp/naid/110002867404/
とりあえずメモとして貼り付け
0442デフォルトの名無しさん
2010/05/22(土) 02:33:16ただマイフレ動的に生成したいので
そこの部分がひっかかるのです。
0443デフォルトの名無しさん
2010/05/22(土) 02:43:05有り難うございます。
ざっと目を通してみましたが
球面に近似することで正確な法線がとれる理由がイマイチ理解が追いつきませんw
まだ実装はしていないので速度の点は何とも言えませんが
凸面形状に限っての論文のようで
不定形モデルである自分の場合では上手く使えないかも知れません。
とりあえず簡単に試してみようかと思います。
>>442
自己レス
10^7ですね。
8は限界テスト中にで出そうとしたデータでした。
メモリ消費が半端ない。
0444デフォルトの名無しさん
2010/05/22(土) 14:00:32最終的にはどれくらいの速度を目指してるの?
0445デフォルトの名無しさん
2010/05/22(土) 14:15:350446デフォルトの名無しさん
2010/05/22(土) 15:04:130448デフォルトの名無しさん
2010/05/24(月) 12:48:160449デフォルトの名無しさん
2010/05/24(月) 13:05:360450デフォルトの名無しさん
2010/05/24(月) 13:44:48そのなかのどれなのかなあと思ってます。
0451デフォルトの名無しさん
2010/05/24(月) 13:51:140452デフォルトの名無しさん
2010/05/24(月) 13:51:340453デフォルトの名無しさん
2010/05/24(月) 13:57:020454デフォルトの名無しさん
2010/05/24(月) 14:02:01よろしくお願いします。本当に困ってます。
0455デフォルトの名無しさん
2010/05/24(月) 14:34:290456デフォルトの名無しさん
2010/05/24(月) 16:10:59ユークリッド幾何学
射影幾何学
微分幾何学
解析幾何学
計算幾何学
これくらい押さえておけばOK
0457デフォルトの名無しさん
2010/05/24(月) 16:18:53とりあえず解析幾何学を勉強しようと思います。
ユークリッド幾何学はその次に勉強します。
有難うございました。
0458デフォルトの名無しさん
2010/05/24(月) 16:28:04何やりたいのかで変わるんじゃね。じゃなかったらざっくり >>456 みたいな返事しか出来ないんじゃね
OpenGLはただのグラフィクスライブラリで、それ使って何をやるかなんて
自分が何やるか次第っていう基本、ド基礎はどこいった
0459デフォルトの名無しさん
2010/05/24(月) 16:33:38OpenGLを作るために必要な幾何学といいうことでもあります。
0460デフォルトの名無しさん
2010/05/24(月) 16:38:400461デフォルトの名無しさん
2010/05/24(月) 16:41:25ライブラリってそもそも、それぞれ関連する処理を都合で集めた関数群なんだぞ
座標空間での捉え方って話で言えば>>456も書いてるがユークリッド幾何学とかそういう大きな返事しか出来ないし、
そもそも中で使われているって、単機能ソフトウェアとかじゃないから、普通に答えづらくね
単に座標空間って言葉でもハミルトン数の空間もあるし、元の質問自体前提が適当すぎ
0462デフォルトの名無しさん
2010/05/24(月) 16:44:52偉そうな態度の人に何を言っても無駄でしょう。
この書き込みの跡に私を罵倒する書き込みがあるとおもいますが、一切無視します。
さようなら。
0463デフォルトの名無しさん
2010/05/24(月) 16:49:000464デフォルトの名無しさん
2010/05/24(月) 16:49:36もういいですじゃねぇよ。 悪いのはお前。
無知な中学生二年生は言葉の響きで満足なんかしてないで、
真面目に意味を勉強して、実践して理解しろ
0465デフォルトの名無しさん
2010/05/24(月) 16:53:11多分何もわからないけどプライドだけ高くて、言葉で知的な気分味わって勝ち誇りたかったのに、
マジレスされて傷ついたから何も返事しないで 偉そうとか言って逃げたんだろうなw
0466デフォルトの名無しさん
2010/05/24(月) 16:58:28プライドはあるし、自分の中の妄想で期待する答えがあるから相手の話をあまり聞いていない
0467デフォルトの名無しさん
2010/05/24(月) 17:16:460468デフォルトの名無しさん
2010/05/24(月) 17:19:36さようなら。
0469デフォルトの名無しさん
2010/05/24(月) 17:24:04そこは丁寧かつ遠まわしにチクリとやり返しておく場面だ。
0470デフォルトの名無しさん
2010/05/24(月) 17:33:570471デフォルトの名無しさん
2010/05/24(月) 17:56:22もっとOpenGLの話をしようぜ
0472デフォルトの名無しさん
2010/05/24(月) 18:23:52まじめに答えて損しちゃったよ
0473デフォルトの名無しさん
2010/05/25(火) 00:26:390474デフォルトの名無しさん
2010/05/25(火) 19:16:46gl_line_strip/loopで線を引く時と、ポリゴンを描画するときで1ピクセルずれますよね?
これを一致させる方法はありますか?
ない場合、全体の座標系は、どっちに都合がいいように合わせるのが一般的でしょうか。
0475デフォルトの名無しさん
2010/05/25(火) 19:44:150476デフォルトの名無しさん
2010/05/25(火) 20:01:50GL_LINE_STRIPで線を引こうとすると、(ピクセルと一致する座標系にしている場合は)
+0.5しないと正確に目的のピクセルを通らない。
で、ちょうど境界上の座標を指定した場合の切り詰め方が負方向なので
例えば画面左端ギリギリに1ピクセル幅の線を引こうとした場合、1ピクセル右を指定することになる。
(ポリゴンを描くときは画面左端の座標をそのまま指定すれば当然思い通りに塗られる)
このずれをなんとかしたいのです。
GL_LINE_STRIPでの境界上の点の扱いを正方向に倒すような機能があるかどうか?
そういう機能が無いとして、このずれを補正する目的でglTranslatedするのは一般的なのか?
0477デフォルトの名無しさん
2010/05/25(火) 20:04:210478デフォルトの名無しさん
2010/05/25(火) 20:10:080479デフォルトの名無しさん
2010/05/25(火) 20:30:34これか。サンキュー。
0480デフォルトの名無しさん
2010/05/25(火) 21:12:050481デフォルトの名無しさん
2010/05/25(火) 21:33:26ついでにGL_FLAT必須だね。SMOOTHと併用するとテクスチャとか色々ぼける。
0482デフォルトの名無しさん
2010/05/26(水) 20:18:030483デフォルトの名無しさん
2010/05/26(水) 20:57:080484デフォルトの名無しさん
2010/05/26(水) 23:48:360485デフォルトの名無しさん
2010/05/27(木) 00:15:340486デフォルトの名無しさん
2010/05/27(木) 00:22:560487デフォルトの名無しさん
2010/05/27(木) 00:34:490488デフォルトの名無しさん
2010/05/27(木) 00:54:100489デフォルトの名無しさん
2010/05/27(木) 20:58:150490デフォルトの名無しさん
2010/05/27(木) 21:17:59300万くらいでいいか?
0491デフォルトの名無しさん
2010/05/27(木) 21:20:49動画とかでアップしてみてくれる?
0492デフォルトの名無しさん
2010/05/27(木) 23:29:060493デフォルトの名無しさん
2010/05/28(金) 00:20:280494デフォルトの名無しさん
2010/05/28(金) 12:20:47commit
0495デフォルトの名無しさん
2010/05/28(金) 12:33:060496デフォルトの名無しさん
2010/05/28(金) 23:15:04ポストフィルタの作成をしています。
描画プロセスの途中、ある立体のみの深度値が必要だったので、
Frame Buffer objectに描画対象を切り替えて物体を描画しました。
当然この物体の描画以前の深度値とこの物体の深度値は二つに
分かれているのですが、これらを統合することは可能でしょうか?
テクスチャに深度値は格納しているので、デフォルトのフレームバッファに対して
深度値を書き込むことが出来れば実現出来ると考えているのですが、
どなたかご教示していただけないでしょうか?
0497デフォルトの名無しさん
2010/05/29(土) 01:12:260498デフォルトの名無しさん
2010/05/30(日) 15:34:46GL_COLOR_ATTACHMENT1_EXT にある立体用のフレームバッファ
にして同時に描画
0499デフォルトの名無しさん
2010/05/31(月) 20:14:51>>497
レスありがとうございます。
レスをいただいてからgl_FragDepthを試してみたのですが、
あまり上手く行かずorz (gl_FragDepthに出力してもなぜか反映されない)
gl_FragDepthは以前にも一度試したことがあるのですが、
その時もあまり上手く行かず、投げ出してしまったことがあります。
深度バッファをレンダーバッファではなく、テクスチャを用いて
作成しているのが問題なのでしょうか。
もう少し色々と試してみます。
>>498
レスありがとうございます。
そういえばMRTという手がありましたね・・・。
でも、深度バッファは同時に複数アタッチ出来なかったと思うのですが、
可能なのでしょうか・・・?調べてきます。
MRTは今回書き込んだ箇所以外に適用することで
問題解決の糸口が見いだせそうな気がします。こちらのほうも模索してみます。
レス本当にありがとうございました。
最後に、返信が遅れてしまったことをお詫びします。
0500439
2010/05/31(月) 23:49:560501デフォルトの名無しさん
2010/05/31(月) 23:52:180503デフォルトの名無しさん
2010/06/02(水) 22:33:140504デフォルトの名無しさん
2010/06/02(水) 22:34:390505デフォルトの名無しさん
2010/06/03(木) 09:16:260506デフォルトの名無しさん
2010/06/03(木) 14:19:320507デフォルトの名無しさん
2010/06/03(木) 15:01:010508デフォルトの名無しさん
2010/06/03(木) 16:34:47うしろ指さされ組とか今の子は本当に知らない
てかもういい加減スレチだww
0509デフォルトの名無しさん
2010/06/03(木) 23:43:54スレ違いのような気がしてきたのでここで再度質問させてください。
Ruby/GtkGlExtで3Dの描画をしたいと思っているのですが、
(Open GLやGtkGlExtを使うのは初めてです、RubyやGtkを使って個人用の小物を作ったことは何度かあります)
その際スクリーンに表示し、かつ必要に応じて保存したいと思っているので、Gdk::Pixmap(GdkPixmap)の使用を考えています。
ところが、断片的な資料を色々当たりながら組んでみたところ、
Gdk::GLContext(GdkGlContext)の設定の仕方が悪いのか、ライト等の設定が全く効きません。
問題を再現する(たぶん)最小のソースコードが以下なのですが、(1)をコメントアウトして代わりに(2)を実行させると正常な挙動を示します。
(1)はどこがまずいのでしょうか?
require 'gtk2'
require 'gtkglext'
def draw
GL.Clear(GL::COLOR_BUFFER_BIT)
Gdk::GL.draw_sphere(true,0.2,20,20)
GL.Viewport(0,0,200,200)
GL.Light(GL::LIGHT0, GL::DIFFUSE, [1,0,0,1])
GL.Light(GL::LIGHT0, GL::POSITION, [0.5,0.5,-1,0])
GL.Enable(GL::LIGHTING)
GL.Enable(GL::LIGHT0)
GL.ClearColor(1,1,1,1)
GL.Flush
end
Gtk::GL.init
glconfig = Gdk::GLConfig.new(Gdk::GLConfig::MODE_RGB)
window = Gtk::Window.new
window.set_size_request(200,200)
window.realize
0510509
2010/06/03(木) 23:44:50wingc = Gdk::GC.new(window.window)
pixmap = Gdk::Pixmap.new(window.window,200,200,-1)
glpixmap = pixmap.set_gl_capability(glconfig)
glcontext = Gdk::GLContext.new(glpixmap,nil,true,Gdk::GL::RGBA_TYPE)
glpixmap.make_current(glcontext)
draw
window.signal_connect("expose_event") do
window.window.draw_drawable(wingc, pixmap, 0, 0, 0, 0, -1, -1)
end
#=end
=begin (2)
drawing = Gtk::DrawingArea.new
drawing.set_size_request(200,200)
drawing.set_gl_capability(glconfig)
window.add(drawing)
glcontext = drawing.gl_context
gldrawable = drawing.gl_drawable
gldrawable.make_current(glcontext)
drawing.signal_connect("expose_event"){draw}
=end
window.signal_connect("delete_event"){Gtk.main_quit}
window.show_all
Gtk.main
0511デフォルトの名無しさん
2010/06/04(金) 05:39:34GL.Viewport(0,0,200,200)
GL.ClearColor(1,1,1,1)
GL.Clear(GL::COLOR_BUFFER_BIT)
GL.Enable(GL::LIGHTING)
GL.Enable(GL::LIGHT0)
GL.Light(GL::LIGHT0, GL::DIFFUSE, [1,0,0,1])
GL.Light(GL::LIGHT0, GL::POSITION, [0.5,0.5,-1,0])
Gdk::GL.draw_sphere(true,0.2,20,20)
GL.Flush
end
だとおもう。
0512デフォルトの名無しさん
2010/06/04(金) 08:14:39基本3Dで描画してるビューのスクリーン上の座標を指定して線とかを書きたいんですが
方法がわからんから教えてくれないか。
( 0, 0 ) ( 100, 100 ) を結ぶ線分を描く、みたいな感じで
0513デフォルトの名無しさん
2010/06/04(金) 08:27:03ビューと同じサイズの正射影と入れ替えればいいんじゃね?
0514512
2010/06/04(金) 08:56:37ありがと、でも初心者だからよくわからないお
↓↓こんな感じ?でもその肝心の「なんか」のところがピンときません
glPushMatrix();
glMatrixMode( GL_PROJECTION );
// なんか
glBegin( GL_LINES );
glVertex2d( 0, 0 );
glVertex2d( 100, 100 );
glEnd();
glPopMatrix();
0515デフォルトの名無しさん
2010/06/04(金) 09:18:46glPushMatrixは行列モードを変えてからやらないと
ビューのサイズが(0,0,800,600)なら
glMatrixMode( GL_PROJECTION );
glPushMatrix();
glLoadIdentity();
glOrtho(0 , 800, 600 , 0 , -1.0 , 1.0);// ニアとファーのプレーンは適当
glBegin( GL_LINES );
glVertex2d( 0, 0 );
glVertex2d( 100, 100 );
glEnd();
glPopMatrix();
必要ならあらかじめ
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
しておく事
0518デフォルトの名無しさん
2010/06/04(金) 20:46:110519デフォルトの名無しさん
2010/06/04(金) 23:04:440520デフォルトの名無しさん
2010/06/05(土) 08:24:530521デフォルトの名無しさん
2010/06/05(土) 09:15:310522デフォルトの名無しさん
2010/06/05(土) 09:28:190523デフォルトの名無しさん
2010/06/07(月) 00:50:220524デフォルトの名無しさん
2010/06/07(月) 01:31:260525デフォルトの名無しさん
2010/06/07(月) 03:19:16まぁ現実的ではないので基本は3角。
0526デフォルトの名無しさん
2010/06/07(月) 05:55:30x8以下で設定した場合やnvidiaコントロールパネルで設定した場合は発現しません
VistaとGF9600GTで最新ドライバを使用しています
0527デフォルトの名無しさん
2010/06/07(月) 06:03:14具体的な現象としてはサンプリング誤差が出てスプライト用途の画像がぼやけたり
ClampToEdgeを使用しているのに逆サイドのピクセルを読んだりします
0528デフォルトの名無しさん
2010/06/07(月) 06:47:110529デフォルトの名無しさん
2010/06/07(月) 08:22:15遅くなりましたが、ありがとうございます。
順番が効いてくるのですね。
もう一度勉強し直します。
0530デフォルトの名無しさん
2010/06/07(月) 10:09:47インデックスバッファが使えない環境だと、
とにかく頂点数を減らすためにクアッドストリップ使ったりした。
ただクアッドは意図しないカリングが起きたりもした。
PCならインデックスバッファ使ったトライアングルリストが効率良いし使いやすいよ。
0531デフォルトの名無しさん
2010/06/07(月) 18:50:530532デフォルトの名無しさん
2010/06/07(月) 19:36:08出来ればPCで開発したい。
0533デフォルトの名無しさん
2010/06/09(水) 19:53:160534デフォルトの名無しさん
2010/06/10(木) 02:54:36ttp://wisdom.sakura.ne.jp/system/opengl/gl6.html
このサイト様を見て、破線を表示するプログラムを作成したのですが、
破線が期待される通りに表示されません。
サイト様の説明では↓のように破線の三角形が表示されることが期待されるのですが、
ttp://wisdom.sakura.ne.jp/system/opengl/gl/00.006.jpg
↓のように斜めの破線が複数本表示されてしまいます。
ttp://fx.104ban.com/up/src/up20418.png
ソースは次のレスで示させていただきますが、
元のサイト様のものとほぼ同一で、
#include <windows.h> の行だけ削除してあります。
OSはUbuntu 9.10です。
openGLはfreeglut3の2.4.0-6.1ubuntu1をインストールしました。
コンパイル時のコマンドは
gcc -lglut source.c
です。
破線が複数本表示されてしまう原因を知りたいのですが、
何かお分かりになる方が居られましたらご教示いただけると嬉しいです。
よろしくお願いします。
0535534
2010/06/10(木) 02:57:06#include <GL/gl.h>
#include <GL/glut.h>
void disp(void) {
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_LINE_STIPPLE);
glLineStipple(1, 0xF0F0);
glBegin(GL_LINE_LOOP);
glVertex2f(0, -0.9);
glVertex2f(-0.9, 0.9);
glVertex2f(0.9, 0.9);
glEnd();
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitWindowPosition(100, 50);
glutInitWindowSize(400, 300);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glutMainLoop();
return 0;
}
0536534
2010/06/10(木) 02:59:50glEnable(GL_LINE_STIPPLE)
の行を削除すると破線ではなく実線が表示されますが、
この時は複数本ではなく期待通り1本だけが表示されます。
0537デフォルトの名無しさん
2010/06/10(木) 03:29:24そのソースを丸々コピって動かしても別に普通だけどなぁ
ちょっと別のPCで動かしてみるとかビデオカードのドライバを新しくするとかしてみれば
0538デフォルトの名無しさん
2010/06/10(木) 03:34:38とりあえず今は次の項目に進んでも問題無いかも。
STIPPLEなんて使わんしな・・・。
0539デフォルトの名無しさん
2010/06/10(木) 03:36:08GLUTやその他のGUIツールキットを使わずにOpenGLを使えないものでしょうか?
glutCreateWindow(name);
をやらずにいきなり描画すると、どうしてもsegmentation faultが出てしまって困っています。
0540デフォルトの名無しさん
2010/06/10(木) 03:46:47シェーダーに計算させようとかそういう話?
0541デフォルトの名無しさん
2010/06/10(木) 06:39:08具体的には、データを読み込んでそれをもとに「描画」し、
(ポリゴンを3次元に配置して光を当てて射影するという操作です)
それをglReadPixelsで読み取るという操作をOpenGLでやろうと思っています。
それで、ウェブサイトを参考に、GLUTを用いて何とか作れたのですが、使わずに何とかできないかなと。
「シェーダー」というのがそれを実行してくれるのですか?
0542デフォルトの名無しさん
2010/06/10(木) 08:21:58シェーバー使ってピクセルを刈り取るんだよ
0543デフォルトの名無しさん
2010/06/10(木) 08:26:27シェーダーは関係ない。
GLUTを使わない方法を解説しているページは沢山ある(たとえば>>1のNeHeのLesson1)
だが、今のままGLUT使っといたほうがいいよ
0544デフォルトの名無しさん
2010/06/10(木) 08:52:34ありがとうございます。
なぜGLUTやその他のGUIツールを使いたくないかというと、ウィンドウに描画する作業が律速ではないかと非常に強く疑われるからなのです。
特に、リモートのサーバ上で動かすことを想定しているので、その転送の時間が。
glutHideWindowをやっても、大して効き目がないですね。
(ちなみに、そういうわけで環境はLinuxです、明示してなくてすみません)
0545デフォルトの名無しさん
2010/06/10(木) 09:23:30とりあえず簡単なプログラムをGLUTと比較して、遅さの原因がGLUTにあることを確認したらいいとは思うが
GLUTをやめても速度は上がらないと思うよ。
glReadPixelsのデーターを転送してるのが遅いんでしょ?。それはglut関係ないし。
0546デフォルトの名無しさん
2010/06/10(木) 09:27:24glReadPixelsのデータも転送しないまま、サーバ上でjpegに変換しています。
サーバからこっちに転送が発生するのは、Xのディスプレイだけですし、
実際ローカルでテスト実行したら、サーバから実行するより早いので、
どう考えてもディスプレイの転送がボトルネックかと。
0547デフォルトの名無しさん
2010/06/10(木) 09:35:13GLUT使いたくないなら使わないで素のOpenGLでやればいいだけジャン?
0548デフォルトの名無しさん
2010/06/10(木) 09:36:52それをどうやるかというのが、そもそもの>>539の質問です……。
0549デフォルトの名無しさん
2010/06/10(木) 09:47:12表示するのが前提なのにウィンドウに書きたく無いってどこに表示するつもりなんだよ
0550デフォルトの名無しさん
2010/06/10(木) 09:52:03ウィンドウに表示するかどうかはどうでもよく、
glReadPixels(あるいは別の手段でも構いませんが)でビットマップデータを読み取れさえすればよいのですが。
「表示するのが前提」とはどういうことですか?
0551デフォルトの名無しさん
2010/06/10(木) 09:56:17linuxはよく知らないけどこれとかどうよ
ttp://www.codesampler.com/linuxsrc.htm
0552デフォルトの名無しさん
2010/06/10(木) 09:56:22最近のOpenGLならFBO使って要求満たせんかね?これならウインドウは非表示でいいだろ
0553デフォルトの名無しさん
2010/06/10(木) 10:05:580554デフォルトの名無しさん
2010/06/10(木) 10:33:16「転送」がかみ合ってない気がする・・・
0555デフォルトの名無しさん
2010/06/10(木) 11:45:490556デフォルトの名無しさん
2010/06/10(木) 11:49:560557デフォルトの名無しさん
2010/06/10(木) 16:11:16そこに context 割り当ててやればいいのかねぇ?
0558デフォルトの名無しさん
2010/06/10(木) 20:30:00ビルドしたのですが
太陽の周りを回っている地球が太陽の後ろに行っているはずなのに
太陽に隠されることがないまま動いています。
Zバッファが無効になっているのですか?
ちなみに環境はmac OSXです。
よろしくお願いします。
0559デフォルトの名無しさん
2010/06/10(木) 20:40:260560558
2010/06/10(木) 21:57:29一応報告します。デプステストをオンにしたらちゃんと
前後関係正しく描画してくれました。
赤本のコードには書いてなかったのですが、環境によっては
オートでオンの状態になってるということですかね
0561534
2010/06/10(木) 22:57:32ありがとうございます。
ソースに間違いが無いということなのでしたら、
とりあえず気にしないで先に進んでみようと思います。
後々どうしても破線を描きたいような状況になったら、
改めて解決策を考えてみます。
どうもありがとうございました。
0562デフォルトの名無しさん
2010/06/11(金) 03:44:430563デフォルトの名無しさん
2010/06/11(金) 04:07:31256x512みたいなのは有りってこと
0564デフォルトの名無しさん
2010/06/11(金) 05:26:321. OSmesa を使う
2. サーバのローカルディスプレイに表示する
3. GLX 有りで FBO を使う
4. GLX 無しで FBO を使う (生 Mesa を使うとか)
5. あきらめて CUDA に移行する
1,5 は ウィンドウシステム内に GL の context を作らなくて良い。
2,5 は リモートの GPU によるアクセラレーションが効く (有れば)。
3 は 手元の GPU によるアクセラレーションが効く。
1,2,4,5 は ディスプレイ間でのデータ転送が発生しない。
2,3,4 は ウィンドウシステム内に GL の context を作らなくてはならない。
1,4 は ハードウェアアクセラレーションが効かない (多分)。
3 は ディスプレイ間でのデータ転送が発生する。
おすすめは:
アクセラレーション不要なら 1
アクセラレーション必要で権限の問題が無ければ 2
問題が CUDA 向きなら 5
0565デフォルトの名無しさん
2010/06/12(土) 02:07:59OpenGL2.0から2の累乗の制限は無くなった。
2.0以前でもrectange_textureっていう拡張機能が使えれば2の累乗じゃないテクスチャを使えるよ。
0566デフォルトの名無しさん
2010/06/12(土) 02:19:04プログラムでよく使うコードをまとめた物やプログラムの部品となる物を意味していると思う。
OpenGLはリアルタイム3Dを使うプログラムを作るときのライブラリだと思っている人がいるかもしれない。
だからOpenGLにファイル読み込み機能やベクトルクラスが無い事などからDirectXより劣ったライブラリだと思われているかもしれない。
けどOpenGLはライブラリではないのだ。interfaceなのだ。
OpenGLの仕様書のChapter1 Introductionから引用させてもらうと
1.1 What is the OpenGL Graphics System?
OpenGL (for “Open Graphics Library”) is a software interface to graphics hardware.
The interface consists of a set of several hundred procedures and functions
that allow a programmer to specify the objects and operations involved in producing
high-quality graphical images, specifically color images of three-dimensional
objects.
0567デフォルトの名無しさん
2010/06/12(土) 04:33:33あれはパッケージ。だからDirectX SDK。
0568デフォルトの名無しさん
2010/06/12(土) 09:50:150569デフォルトの名無しさん
2010/06/12(土) 15:15:45どうでもいいが、「グラフィックスハードウェアの」インターフェースで
あることを強調しなければ、機能限定の理由にはならんだろう。
0570デフォルトの名無しさん
2010/06/12(土) 16:14:50DirectXっていうライブラリは無くて、Direct3DやDirectInputなどのコンポーネントの集合体だって意味では
openGLに相当するのはDirect3Dで、ファイル読み込みやベクトルクラスなどはDirect3DXだから
使いたければDirec3DXはopenGLからでも使えるかも
0571デフォルトの名無しさん
2010/06/12(土) 16:23:360572デフォルトの名無しさん
2010/06/13(日) 00:27:17頂点データと面のインデックスデータを読み込んでglDrawElementsで表示する事はできました
しかしUVデータはインデックスではなく三角と四角のポリゴン単位になっているのでそのままでは適用できませんでした
表示用にデータを作成し直したりしないといけないんですか?
0573デフォルトの名無しさん
2010/06/13(日) 03:23:000574デフォルトの名無しさん
2010/06/14(月) 03:48:02同一座標の頂点で違うUVがある場合の描画は
通常は重複(duplicate)頂点と言って、頂点を増やす
(座標は同じでUV値だけ違う)
当然glDrawElements単位でのインデックスも増やす
だからと言って、エクスポートや出力データも
まんま馬鹿正直に同じ座標を出してインデックスを変える必要はない、
それがキミが詰まってる原因なんだろう
0575デフォルトの名無しさん
2010/06/14(月) 03:58:070576デフォルトの名無しさん
2010/06/14(月) 20:31:18それってかなり複雑にならないかな?
重複頂点をインデックスに追加する度にインデックスがずれる事になるが…
0577576
2010/06/14(月) 21:23:55OK、やってみる。
結局、.mqoのインデックスは作り直さないといけないんだな。
0578デフォルトの名無しさん
2010/06/14(月) 22:03:54VBOに持たせることを考えると一番楽なんだけどどう?
0579デフォルトの名無しさん
2010/06/16(水) 13:02:15同じ現象にあった人いますか?
・ドライバは最新(257.21)
・ベンダーが別の2枚のGTX 480で確認
・VBO ありでもなしでも遅い
・Cg shader や他の描画には特に問題なし
・OSは WindowsXP 64bit
・Geforce 8800 よりはるかに遅い
です。
0580デフォルトの名無しさん
2010/06/16(水) 15:40:58原因はglDrawElementsではなく
glLightModelf(GL_LIGHT_MODEL_TWO_SIDE,
でした。
glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
から
glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
にすると
GTX 480
では速度が大幅(1/10以下)に低下しました。
Geforce 8800GT, 9600GS, GTX280, GTX285M
ではほとんど速度が低下していなかったので、盲点でした。
0581デフォルトの名無しさん
2010/06/16(水) 21:55:15すごい初歩的な質問だけどこれってどうやって使うの?
ttp://www.jpct.net/jpct-ae/
Eclipseとa-sdkははいってるんだけどそこからわからん
教えてエロい人><
0582デフォルトの名無しさん
2010/06/16(水) 22:08:03やり方がよく分かりません。
とりあえずサンプルだけでも動かしてみようと思いましたが、Direct3Dを使うものを含めても
今のところ1つも動くのがありません。
どうにか動かす方法は無いでしょうか?
ビデオカードはMobility RADEON HD 4330です。
OpenGL Extensions Viewerによると、OpenGLのバージョンは3.1で、
NV_explicit_multisample拡張は使えるようです。
●OpenGL3.1で動くかもしれないサンプル
(半透明ソートではなく、explicit_multisampleのサンプルっぽい)
OpenGL 3.1 explicit_multisample VS OpenGL 3.2 multisample textures
http://dabroz.scythe.pl/2009/09/23/opengl-3.2-multisample-textures
●Direct3D使うやつ
Order Independent Translucency
http://www.humus.name/index.php?page=3D&ID=76
Stencil Routed K-Buffer
http://developer.download.nvidia.com/SDK/10.5/direct3d/samples.html
●必要なハードウェア要件を満たしていない
Fast and Accurate Single-Pass A-Buffer using OpenGL 4.0+
http://blog.icare3d.org/2010/06/fast-and-accurate-single-pass-buffer.html
OIT11サンプル
http://msdn.microsoft.com/ja-jp/library/ee416572(VS.85).aspx
0583デフォルトの名無しさん
2010/06/17(木) 01:50:18参考になったトンクス
今世代のNVはもう駄目だなぁ・・・。
0584デフォルトの名無しさん
2010/06/17(木) 01:51:100585デフォルトの名無しさん
2010/06/17(木) 02:01:51ドライバ更新して駄目ならゲフォを買うってところじゃないかな
とりあえずうちの9600GTでd3d使うやつ2つは動いた
0586582
2010/06/17(木) 12:19:39Mobility RADEONだと新しいドライバを入手するのも難しそうです・・
まずDirect3Dで動かすのを頑張って、それからOpenGLへの移植を考えようと思います
0587デフォルトの名無しさん
2010/06/17(木) 22:12:38ATIのサイトから落とせるShaderMonkey(要登録、無料)の中にOITのサンプルあったよ。
Direct3DだったかOpenGLだったかは忘れたけど、OpenGL2.1あたりの世代だったから4330ならいけるはず。
0589デフォルトの名無しさん
2010/06/17(木) 22:51:290590デフォルトの名無しさん
2010/06/20(日) 22:29:22テクスチャマッピングが簡単にできるライブラリとかありますか?
芸術工学関係でオススメサイトとかあったらヨロシクオネガイシマス。
0591デフォルトの名無しさん
2010/06/20(日) 22:30:490592デフォルトの名無しさん
2010/06/20(日) 22:37:23大学の課題なら自分でやれよ
0593582
2010/06/21(月) 21:48:20Irrlichtエンジンを使っているのですが、OpenGL3.1のコンテキストが作成出来ていないです。
glGetString(GL_VERSION)でバージョンを取得すると
2.1.8918が返ります。作成出来るなら、GL3.1のコンテキストを作成するコードが有るみたいです。
しかし、wglGetProcAddress("wglCreateContextAttribsARB");でこの関数のアドレスを取得しようとしていますが、
0が却って失敗しているようです。そのせいか、glTexRenderBufferNVのアドレス取得も失敗します。
OpenGL Extensions Viewerで3.1のコンテキストを作成するテストは成功しているのに、
なぜ動かないのでしょうか
int iAttribs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 1,
0
};
hrc=wglCreateContextAttribs_ARB(HDc, 0, iAttribs);
0594デフォルトの名無しさん
2010/06/23(水) 13:12:34だんだん嫌になってきたのでOpenGLデビューすることにした。
Direct3Dでも最近はコアな部分しか使ってなくて高度な部分は自前で制御してきたからたぶんそんなにOpenGL習得は大変じゃないよね。
たのしいGLライフがはじまるよー!
0595デフォルトの名無しさん
2010/06/23(水) 18:44:190596デフォルトの名無しさん
2010/06/23(水) 19:30:250597デフォルトの名無しさん
2010/06/23(水) 21:16:56そんなとこよりglEnable/glDisable減らした方がよっぽどFPS改善された……。
それでも頂点配列が云々されているということは、
プロのコードは限界まで状態切り替えをまとめているんだろうなあ……。
0598デフォルトの名無しさん
2010/06/23(水) 23:18:24大多数のIntelのIGP使用者も対象にしたら
OpenGL1.4までしか使えないけどな…
0599デフォルトの名無しさん
2010/06/23(水) 23:48:290600デフォルトの名無しさん
2010/06/24(木) 09:05:150601デフォルトの名無しさん
2010/06/28(月) 16:22:00っglPushAttrib(MASK);
3D矩形テクスチャをボリュームデータとして内部も表示したいんだが、
頂点が8点の立方体に貼付けるだけじゃ無理だっけ?
0602デフォルトの名無しさん
2010/06/28(月) 19:30:14GLEW使ってるけど、それとは違う話なの?
0603デフォルトの名無しさん
2010/07/01(木) 20:36:14とりあえず osg か VTK。
自前でやるなら、
- 四角ポリゴン * 3(最大) を表示して fragment shader で視線方向に
辿って適当な方法で積算するか、
- 亡き OpenGL Volumizer のように視線に垂直なスライス多数 (最大6
角形 * 256枚とか) (枚数は求める分解能次第) を積み重ねる。
shader 内で辿る方法の方は、(試したことはないけど)メモリアクセスが
少ない分描画が(多分)速いし、スライスしなくて良い分プログラムが(多分)簡単。
スライスする方は、他の通常のオブジェクトと重なるような表示ができる、
プログラマブルシェーダ無しでもレイキャストや MIP くらいはできる。
スライス生成はホスト側プログラムかジオメトリシェーダで。
0604デフォルトの名無しさん
2010/07/05(月) 10:37:49α情報を持ったテクスチャを面に貼り付けた際に、
α部分に面の色を表示させたいのですが、どうすればよいのでしょうか?
GL_MODULATE だと、テクスチャの色合いも含めて全体が転調されてしまうし、
GL_DECAL/GL_REPLACEだと面の陰影がなくなるような。
かといって、GL_BLENDを有効にすると、奥の面も見えてきてしまいます。
どなたか知りませんか?
0605デフォルトの名無しさん
2010/07/05(月) 17:46:00何をやりたいのか説明できてない。
普通はライティングしてテクスチャーをGL_MODULATEだ。
0606デフォルトの名無しさん
2010/07/05(月) 18:45:19ありがとうございます。
赤色の面に、例えば市松模様でα値0のテクスチャを貼り付けたときに、
α値が0の所だけ赤くなって欲しいと言うことです。
glMaterialfで赤色を設定した所、BLENDを有効にしなくても表示されました。
ただ、元のテクスチャの色が白の部分を透過として扱うためか、
乗算されて元の色よりかなり明るくなってしまいました。
今回はこれで良いと言うことにします。
0607デフォルトの名無しさん
2010/07/05(月) 19:04:170608デフォルトの名無しさん
2010/07/05(月) 19:09:11テクスチャ関連は固定機能だけでもいろいろやれそうだけど、かゆいところに手が届かないのが多い。
その点シェーダー使えば自由にやれるけど、OpenGLをどの程度できるかによるな。
0609デフォルトの名無しさん
2010/07/10(土) 01:39:45gluLookAtの第3引数までは変数にし、キーボードで調整できるようにしていますが、いくらタイプしても上手く表示されません。
またテクスチャの視点の位置を把握するために、同じ場所にオブジェクトを表示させようと思いましたが、その方法もわからず仕舞いです。
gluLookAtを挿入して上手くいかない理由と、テクスチャの視点の位置にオブジェクトを表示させる方法をどなたか教えてください。
void resharpFunc(int window_width, int window_height) { //glutResharpFuncのコールバック関数
glViewport(0, 0, window_width, window_height);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScaled( 0.7, 0.7, 1.0 );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0, (double)window_width / (double)window_height, 1.0, 100.0);
//gluLookAt( right_t - left_t , up_t - down_t, in_t - out_t, 0, 0, 0, 0, 0, 1 );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
0610デフォルトの名無しさん
2010/07/10(土) 02:11:11gluLookAtはカメラの位置の設定として使いたいの?
それともテクスチャの投影方向の設定として使いたいの?
0611デフォルトの名無しさん
2010/07/10(土) 02:29:58glScaledの直後にこのgluLookAtを挿入してもうまく行きませんでした
0612デフォルトの名無しさん
2010/07/10(土) 02:41:46どう上手くいかないのか詳しく
0613名無しさん@そうだ選挙に行こう
2010/07/10(土) 12:28:21gluLookAtなしだと、投影出来ています。
直行投影にみえます。
gluLookAtを入れると、オブジェクト全体が単色で染まってしまいます。
実際のカメラの動画をテクスチャしているのですが、実際のカメラを向ける方向によって色や明度は変わりますが、像は見られずいずれもオブジェクト全体が単色で埋められてしまいます。
gluLookAtの第3引数までをキーボードで調整しても変わりません。
0614名無しさん@そうだ選挙に行こう
2010/07/10(土) 18:54:10projective texture opengl example
あたりでググるとopenGL.orgやsgiの97年ごろのデモがヒットするみたいよ
でも、もうそういうのもシェーダーでやる時代だと思うけど
0615名無しさん@そうだ選挙に行こう
2010/07/11(日) 12:25:290616名無しさん@そうだ選挙に行こう
2010/07/11(日) 13:56:06色が変わってる=テクスチャの1部だけが引き伸ばされて投影されてる
だろうから多分お前のパラメーターミス
どんなモデルに投影してるのかもわからないし答えようがない
デバックして欲しいっていうなら全ソース出せよ
0617デフォルトの名無しさん
2010/07/12(月) 00:25:31ttp://www.dotup.org/uploda/www.dotup.org1022196.cpp.html
動かすにはUSBカメラとOpenCVが必要
投影するモデルは右クリックで変えれる
0618デフォルトの名無しさん
2010/07/12(月) 03:00:54変数操作した後ちょっとウィンドウサイズ変えたら出てきたりして
0619デフォルトの名無しさん
2010/07/12(月) 14:37:19うまくいかなかったのは、テクスチャ座標が (0, 1) 範囲なのを忘れている気がする。
0620デフォルトの名無しさん
2010/07/13(火) 00:28:36本当にその通りだ
ウィンドウサイズ変えたら反映された
じゃあ呼び出され続けるupdateTexture関数内に
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
gluLookAt( right_t - left_t , up_t - down_t, in_t - out_t, 0, 0, 0, 0, 0, 1 );
glMatrixMode(GL_MODELVIEW);
入れたら投影の方向も変えれるようになったよ
ところでこのプログラムすごい重いんだけど、悪いコードに気がついてたら教えてください
0621デフォルトの名無しさん
2010/07/13(火) 00:32:10>>609のglScaledの後ってことだよね
最初はそれにしてたけど、うまくいかないから試行錯誤してたときのを貼ってしまった
すまない
その時の挙動は>>613
0622デフォルトの名無しさん
2010/07/13(火) 20:29:36そのためにはカレントラスタ位置を画面隅に設定すればいい。
ということで、画面隅にあたる座標を求めたいのですが、
これは視錐台の頂点の座標を求める、
ということとほぼ同じですよね。
どういう手順で求めたらいいでしょう?
glGetでGL_PROJECTION_MATRIXを取得して
連立方程式を解く感じでやればいいんでしょうか。
てゆうか、もっと簡単な方法はないでしょうか、、、
0623デフォルトの名無しさん
2010/07/13(火) 22:04:13>>620
デバッグビルドしてんじゃね。
コードはtmp_imgのあたりとか釣りかなと思うほど無駄みたいだけど、どうなのか。
他もいろいろありそうだがopenCVはスレ違いかな
>>622
MATRIXの影響を受けたくないならglPushMatrixしてglLoadIdentityすればいいが、
画面の隅に出したいだけならglRasterPos*の代わりにglWindowPos*を使えば簡単
0624デフォルトの名無しさん
2010/07/14(水) 17:21:23載せて(?)、描画することは可能でしょうか?
例えば、上下2分割の画像があるとして、テクスチャに先に上部の画像を
載せて、次いで下部の画像を載せ、最終的にDrawするようなイメージです。
2枚のテクスチャを利用すれば、いいのでしょうが、1枚で済むので
あれば、1枚で処理したく思いまして・・・。
glTexImage2D()と、glTexSubImage2D()をうまく使えばできるので
しょうか・・・。
0625デフォルトの名無しさん
2010/07/14(水) 19:04:420626デフォルトの名無しさん
2010/07/14(水) 19:07:13無駄な努力するより正しい手順で単純な方法を使うべきだぞ
0627デフォルトの名無しさん
2010/07/14(水) 20:12:10glTexSubImage2D()をうまく使えばできるよ
0628デフォルトの名無しさん
2010/07/14(水) 21:05:53GLSLで配列を宣言する場合、組み込み型の場合は
float array[3] = float[3](1.0, 2.0, 3.0);
のように書くと初期化出来ますが、構造体の場合、
TestStruct array[3] = TestStruct[3](TestStruct(...), ...);
としてもcast not allowedとエラーが出てしまいます。
構造体配列では、上のような初期化の仕方は出来ないのでしょうか?
0629デフォルトの名無しさん
2010/07/14(水) 22:03:490630デフォルトの名無しさん
2010/07/15(木) 03:23:57遅レスだけどtmp_imgはモルフォロジー演算のブラックハットとかを試したときの消し忘れ
スレチスマソ
0631デフォルトの名無しさん
2010/07/15(木) 06:00:38でけた〜!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。
0632622
2010/07/15(木) 06:21:06でけた〜!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。
0633デフォルトの名無しさん
2010/07/15(木) 06:29:110634デフォルトの名無しさん
2010/07/15(木) 08:16:10やっぱり出来ないですか orz
構造体は
TestStruct test = TestStruct(...);
で初期化できるので、これ使えば構造体配列の各要素も初期化できるのかなと思ったのですが…
地道にmainで初期化することにします。
ありがとうございました。
0635622
2010/07/15(木) 08:24:180636デフォルトの名無しさん
2010/07/16(金) 22:39:38例えば、
http://www.koders.com/c/fid33411A52D69CE7446BD56E959F1FDA00D9FA68A8.aspx?s=matrix#L61
のサンプルコードだと290行目、
#include <stdio.h>
#include "GL/osmesa.h"
int main()
{
GLubyte* buf = new GLubyte[4];
OSMesaContext ctx = OSMesaCreateContext( GL_RGBA, NULL );
OSMesaMakeCurrent( ctx, buf, GL_UNSIGNED_BYTE, 1, 1 );
glClearColor(1.0, 1.0, 1.0, 1.0);
OSMesaDestroyContext(ctx);
}
を実行してみるとglClearColorのところでsegmentation faultとなります。
これは根本的なところでどこか使い方を勘違いしているのでしょうか?
0637636
2010/07/17(土) 00:17:28libOSMesaだけで十分なのにlibGLをリンクしてしまっていたのが原因でした。
0638デフォルトの名無しさん
2010/07/17(土) 14:16:230639デフォルトの名無しさん
2010/07/17(土) 15:44:32とかできなかった?
0640デフォルトの名無しさん
2010/07/17(土) 19:21:35int(mod(float(14), 3.0)) は確かに 2 を返すのに、
int a = 14;
int(mod(float(a), 3.0)) は 1 を返す。
環境のせいかとも思ったが、
GL_VERSION = 2.0 ATI-1.6.16
GL_RENDERER = ATI Radeon X1600 OpenGL Engine
でも
GL_VERSION = 2.1 NVIDIA-1.6.10
GL_RENDERER = NVIDIA GeForce 9400M OpenGL Engine
でも同じ結果。訳が分からん。
0641デフォルトの名無しさん
2010/07/19(月) 22:40:30糞が
0642デフォルトの名無しさん
2010/07/19(月) 22:54:310643デフォルトの名無しさん
2010/07/20(火) 15:42:24Quadroで儲け出してると思ってたけど。
0644デフォルトの名無しさん
2010/07/21(水) 20:17:18テクスチャ描画直前にコールバックされるなど
0645デフォルトの名無しさん
2010/07/22(木) 01:06:320646デフォルトの名無しさん
2010/07/22(木) 04:03:09644です。
ありがとー、早速使わせて頂きます。
0647デフォルトの名無しさん
2010/07/22(木) 08:07:52OpenGL雛形を利用してテクスチャ描画しようとしているのですが
テクスチャ作成も成功していて
TEXTURE_COOD_ARRAYも指定しているのですが
白いまま、テクスチャの柄が表示されません。
テクスチャ表示に
他に何か設定することありますか?
0648デフォルトの名無しさん
2010/07/22(木) 09:22:58iphoneって
テクスチャの幅が2のべき乗じゃないとだめでした
0649デフォルトの名無しさん
2010/07/25(日) 02:34:31ここのサンプルなんですが
なんでBの値が~rでいいんですか?
255-rと同じ結果になると思うんですが
どういうことなんですか?
0650デフォルトの名無しさん
2010/07/25(日) 02:53:32GLubyteでキャストしたらなんか意味わかった
0651デフォルトの名無しさん
2010/07/25(日) 10:57:55天球の中心にカメラを置いて、注視点をぐりぐり移動させる所でつまずいています。
今やっているのはglRotateで±1°ずつ回転させて(角度変数も用意して増減させる)
実装しています。この場合だとぐりぐり移動はできるのですが現在どの角度を向いているか
が正しく取得できません。(斜め移動すると表示と値がずれる)
プラネタリウム(というよりは星座早見盤)をつくるのに今見ている角度を正しく
取得しなければならないのですが、いい方法はありますか?
0652デフォルトの名無しさん
2010/07/25(日) 11:03:56mCamera->rotate(Vector3::UNIT_Y, Radian(mTheta));
mCamera->pitch(Radian(mPhi));
0653デフォルトの名無しさん
2010/07/25(日) 16:03:070654デフォルトの名無しさん
2010/07/25(日) 17:28:280655デフォルトの名無しさん
2010/07/25(日) 22:06:55DirectXのライブラリみたいにSIMD使った最適化までしてくれたら嬉しいです。
0656デフォルトの名無しさん
2010/07/25(日) 22:38:240657デフォルトの名無しさん
2010/07/25(日) 23:15:50Cで書いていて、かつかじったばっかりなので何をやってるのか理解できませんでした。
すみません。
>>653
検索したら参考ページが出てきたので頑張ってみます。
ありがとうございました。
0658デフォルトの名無しさん
2010/07/26(月) 00:37:24http://marina.sys.wakayama-u.ac.jp/~tokoi/
のサンプルで、クォータニオン使ったのがあったはず。
0659デフォルトの名無しさん
2010/07/26(月) 00:56:20単に回転する順番とかが間違ってるだけなんじゃないのかな
クォータニオンとか導入しないとならない問題じゃないと思うんだが
0660デフォルトの名無しさん
2010/07/26(月) 02:55:330661651
2010/07/31(土) 12:34:43ありがとうございます。参考にさせてもらいます。
>>659
そうなんですか。詰まったらまた質問するかもしれません。
>>660
授業の成果物作成で3Dグラフィックなんてやったことないのに作ることなってしまいました。
極座標でやろうと思ったんですけど意図した方向に回転しなくて別の方法に移りました。
0662デフォルトの名無しさん
2010/07/31(土) 19:14:17先は長そうだな。やめとけ
0663651
2010/07/31(土) 20:58:38例えばワイヤードームがあって、その縦横線と水平な方向に移動させる場合
プログラム開始時の視点位置だと出来るのですが、
まず横に30゜動かしたあと上に視点を動かそうとすると斜めに移動してしまいます。
ワイヤードームの縦横線に水平に動かすにはどうすればいいですか?
>>662
できないと卒業できないのでやめられません・・・
0664デフォルトの名無しさん
2010/07/31(土) 21:01:52glLoadIdentityするだけで解決しそうな予感
0665デフォルトの名無しさん
2010/07/31(土) 21:10:45いまいちよくわからないけど、移動と回転の順番を逆にしてみたら?
0666デフォルトの名無しさん
2010/07/31(土) 22:22:05移動・回転・拡縮をかけると、変換をかけたオブジェクトの座標軸も動くからな?
絶対座標で考えてはならない。
0667651
2010/07/31(土) 22:45:44今作っているプログラムとソースです。
Theta_RouteとPhi_Routeがカメラ動かしている関数です。
FPSの標準みたいに線に沿って動かしたいのですが、横にずらしながら
縦に動かすと線からずれます。
>>664
glMatrixMode(GL_PROJECTION);
の後にglLoadIdentityをやるとワイヤードームが消えてしまいます。
>>665
移動?はしてないと思います。クォータニオンで回転をかけているだけです。
>>666
やっぱりカメラも軸がずれるんですかね?
0668デフォルトの名無しさん
2010/07/31(土) 23:12:46gluLookAtやオブジェクトの回転をPROJECTION_MATRIXでやるとかどこで習ったの
天文が専門でプログラミングは専門外なのかもしれないけど
最初はopenGLの回転やカメラ指定のサンプルプログラムを参考にしたほうがいいよ
0669デフォルトの名無しさん
2010/08/01(日) 00:17:32こんなのgluLookAtのlookを変えればいいんじゃないか?
0670デフォルトの名無しさん
2010/08/01(日) 00:42:06modelviewで回転(glRotate)を行っても視点が移動しなくてprojectionだと移動したので
projectionで実行していました。どこかのサイトのソースでそうあったので。
>>669
lookでやったらあらぬ方向に飛んでそのままワイヤードームがフェードアウト
する現象にあって諦めてしまいました。もう一度挑戦してみます。
もう一度入門サイトあさってみます。
0671デフォルトの名無しさん
2010/08/01(日) 00:50:35本屋で立ち読み祭りも悪くないよ
0672デフォルトの名無しさん
2010/08/01(日) 01:11:48そりゃDisplayListのなかで描画直前にglLoadIdentityしてりゃMODELVIEWをいじっても動かないよ
0673デフォルトの名無しさん
2010/08/01(日) 10:49:43動くようになりました。LookAtもちゃんと動くようになりました。
これなら極座標でLookAtのLookいじる方法で行けるかもしれません。
ありがとうございます。
0674デフォルトの名無しさん
2010/08/02(月) 19:20:35中心(0,0,0), 辺が軸に平行で一辺の長さ2の立方体を描画して、
それを
gluLookAt(0,0,5, 0,0,0, 0,1,0)
で見たら、Z軸正方向から原点を見てるわけだから
( -1, -1, 1 )
( 1, -1, 1 )
( 1, 1, 1 )
( -1, 1, 1 )
で作られる面が見えるはずですよね?
でも実行してみると
( -1, -1, -1 )
( 1, -1, -1 )
( 1, 1, -1 )
( -1, 1, -1 )
で作られる面が見えます。
私は何か勘違いをしているのでしょうか?
0675デフォルトの名無しさん
2010/08/02(月) 19:27:280676デフォルトの名無しさん
2010/08/02(月) 19:31:490678674
2010/08/02(月) 22:23:08near>farになっていたのが原因でしたorz
こういう指定の仕方も出来るんですね。。。
本当に助かりました
お二方ありがとうございました
0679デフォルトの名無しさん
2010/08/02(月) 22:57:02ライト当てたときどうなるの?
0680デフォルトの名無しさん
2010/08/03(火) 02:23:02一度も呼んでない場合は初期値 (0, 0, 1)
0681デフォルトの名無しさん
2010/08/03(火) 03:36:010682デフォルトの名無しさん
2010/08/03(火) 12:15:560683デフォルトの名無しさん
2010/08/03(火) 13:49:560684デフォルトの名無しさん
2010/08/03(火) 14:21:29あまりシェーダとかの話題もないし
0685デフォルトの名無しさん
2010/08/03(火) 14:21:53まぁそのためには補助ライブラリの整備が大切だが。
0686デフォルトの名無しさん
2010/08/03(火) 17:13:300687デフォルトの名無しさん
2010/08/03(火) 17:43:40凝ったことするなら2.0スレでやる
0688デフォルトの名無しさん
2010/08/03(火) 17:44:26DirectGL作ってくれないかな
0689デフォルトの名無しさん
2010/08/03(火) 17:49:040690デフォルトの名無しさん
2010/08/03(火) 23:12:210691デフォルトの名無しさん
2010/08/04(水) 00:14:16ファーレンハイトとか言うのがその昔あってだな
0692デフォルトの名無しさん
2010/08/04(水) 00:30:210693デフォルトの名無しさん
2010/08/04(水) 00:42:040694デフォルトの名無しさん
2010/08/04(水) 02:07:45GF100でshaderからテクスチャへランダムライトとかatomicアクセスできる拡張機能
NV_shader_buffer_store
が追加されたけど
これが標準機能になるのは4.2か4.3ぐらい?
0695デフォルトの名無しさん
2010/08/04(水) 19:31:57callocで動的確保してるポインタだと上手くいかん。
なんか変えなきゃいかんとことかある?
0696デフォルトの名無しさん
2010/08/04(水) 19:47:14double x,y,z;
をglRotatefで座標変換したいんですが、
どうすればいいでしょうか?
0697デフォルトの名無しさん
2010/08/05(木) 01:42:060698デフォルトの名無しさん
2010/08/05(木) 07:18:09ないよ
0699デフォルトの名無しさん
2010/08/05(木) 07:20:56glRotatefのことは忘れて自分で回転行列作って掛ける
0700デフォルトの名無しさん
2010/08/05(木) 19:49:39callocで確保した領域を与えたからといって問題が起こることは無いです。
うまくいかない原因は別にあります。
>696
多分OpenGLの座標変換の役割と仕組みが理解できていません。
赤本とか読むと良いと思います。
0701デフォルトの名無しさん
2010/08/05(木) 21:00:50eyeとlookのyが同じなら
xz平面に引いたグリッドが 横線に見えるはずなのに
上から見た視点になってる
0702デフォルトの名無しさん
2010/08/05(木) 21:39:080703デフォルトの名無しさん
2010/08/05(木) 23:37:12eye.y = 2;
look.y = 2;
画像
http://www.uproda.net/down/uproda122512.jpg
ソース
http://www.uproda.net/down/uproda122513.zip
です。
描画手順は、下な感じです。
glMatrixMode(GL_PROJECTION);
glViewport(0, 0, width, height);
glLoadIdentity();
gluPerspective( 60, width / height , 1, 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( eye[0] , eye[1] , eye[2] ,cent[0] , cent[1] , cent[2] , up[0] ,up[1], up[2] );
// for(...)
{
glPushMatrix();
drawGrid();
glPopMatrix();
}
0704デフォルトの名無しさん
2010/08/05(木) 23:55:49質問者が腑に落ちる回答を期待
0705デフォルトの名無しさん
2010/08/05(木) 23:58:35ファーストヒント:遠くの物は小さく見える。
ファイナルヒント:透視変換
OpenGL3.x, 4.x時代においてgluは使いたいけどそのまま使えない・・・もどかしい物になってしまった。
*但し非推奨機能を使わない場合に限る。
0706デフォルトの名無しさん
2010/08/06(金) 00:00:28故に、視線の水平面 y = 2 より下にあるグリッド平面 y = 0を見下ろすよう、かのように描写されるのは自明。
0707701
2010/08/06(金) 00:08:07そうかパースかかってるのか
これであってるのか
アホでした。
ありがとうございます><。
0708デフォルトの名無しさん
2010/08/07(土) 07:17:50GLU3
ttp://dri.freedesktop.org/glu3/
もはや別物だけどな
0709デフォルトの名無しさん
2010/08/10(火) 21:04:29褒めてやろう
0710デフォルトの名無しさん
2010/08/11(水) 15:14:09別に呼ばなくても問題なく表示できた。
というか、glGenTexturesでテクスチャオブジェクトを生成するには個数しか指定できないし
それでどうやって関連付けられてるのかさっぱりわからん。
0711デフォルトの名無しさん
2010/08/11(水) 16:58:18テクスチャ周りの設定も現在有効な番号のテクスチャに対して行われる。
呼ばなくても反映されるとかは考えないほうがいいぞ。
0712デフォルトの名無しさん
2010/08/12(木) 06:32:23呼んでない状態はglBindTexture(GL_TEXTURE_2D, 0)が呼んであるのと同じ
複数のテクスチャを同時に扱うときにglBindTextureは必須
0713デフォルトの名無しさん
2010/08/15(日) 14:38:15:
:
glDisableClientState(GL_VERTEX_ARRAY);
というサンプルコードをよく見ますが、Enableしたままだと何か不都合があるのでしょうか?
0714デフォルトの名無しさん
2010/08/15(日) 15:00:130715デフォルトの名無しさん
2010/08/15(日) 21:54:27リファレンス実装があればいいんだけど
0716デフォルトの名無しさん
2010/08/15(日) 22:41:12class Enabler : private boost::noncopyable
{
public:
explicit Enabler(GLenum cap) : cap_(cap)
{
glEnable(cap_);
}
~Enabler()
{
glDisable(cap_);
}
private:
GLenum cap_;
};
0717デフォルトの名無しさん
2010/08/21(土) 08:45:50頂点とインデックスをクラスのユニークなメンバ変数にしてる時なんかは、ポリゴンごとにインスタンス作らなきゃいけないよね
多数のポリゴンをディスプレイリストでまとめようとすると、ものすごく膨れあがる
みんなどういう風に構造化してるんだろう
0718デフォルトの名無しさん
2010/08/21(土) 10:42:430719デフォルトの名無しさん
2010/08/21(土) 11:12:300720デフォルトの名無しさん
2010/08/21(土) 11:44:21インスタンスを作らずとも、頂点とインデックスのポインタをオブジェクトの数作ればいい。
つか、glVertexPointerはオブジェクトの数だけポインタが必要。
ポリゴンが100個あるなら、それぞれ100個のポインタ。
0721デフォルトの名無しさん
2010/08/21(土) 12:27:31VBO使うか、素直にループで回しとけ
0722デフォルトの名無しさん
2010/08/21(土) 12:36:030723デフォルトの名無しさん
2010/08/21(土) 14:30:270724デフォルトの名無しさん
2010/08/21(土) 14:33:300725デフォルトの名無しさん
2010/08/22(日) 09:54:24やはり作らないといけませんか
一括で読み込めることを売りにしているのに、結局はオブジェクト分のポインタが必要になるなんて実に中途半端な設計の関数ですね・・・
まあ速度は改善されるのでしょうけど・・・せめてglDrawElementsのように読込み範囲を指定できるようにしてほしかった
可読性に欠ける気持ちの悪いソースになりそうです・・・
ありがとうございました
0726デフォルトの名無しさん
2010/08/22(日) 12:16:29やっぱり何言ってるのかわからん
0727デフォルトの名無しさん
2010/08/23(月) 01:11:41APIとして非常に見通しが悪い。
だれかOpenGL Lite作ってくれ。
わりとマジだ。
0728デフォルトの名無しさん
2010/08/23(月) 18:02:550729デフォルトの名無しさん
2010/08/23(月) 18:38:560730デフォルトの名無しさん
2010/08/27(金) 20:48:15指定領域だけ色クリアするにはどうしたらいい?
0731デフォルトの名無しさん
2010/08/27(金) 21:22:58決める関数を格納し、あるキーを押すとline_switchがトグルして再描画するようなプログラムを作っています。
作ってみると、line_switchはしっかりトグルしているのですが、線が描画されたり、消えたりしません。
あらかじめ、ソース内でline_switchを書き換えていると描画されたり消えたりします。
プログラム実行中だと変わりません。なぜでしょうか?
glNewList(・・・・・・);
if( line_switch ){
glBegin(GL_LINE);
・
・
}
glBegin(GL_POINT);
・
・
glutPostRedisplay();
glEndList();
0732731
2010/08/27(金) 21:24:30glutPostRedisplay();
はキーを押して、line_switchをトグルした後記述しています。
ディスプレイリストには記述していません。
0733デフォルトの名無しさん
2010/08/27(金) 21:29:04DEPTH_TESTをdisableしてクリアしたい色のポリゴンを描く
DEPTHBUFFERはglClearする
もしくはglClear()+glScissor() やったことないけど
0734デフォルトの名無しさん
2010/08/27(金) 21:46:24ディスプレイリストはOpenGLの命令のみを保存する。
命令リストの中にif文入れるとか、そこまでおいしい話はないよ。
0735デフォルトの名無しさん
2010/08/27(金) 21:57:25あ、そうなんですか。解決できそうです。ありがとうございます。
0736デフォルトの名無しさん
2010/08/28(土) 01:04:330737デフォルトの名無しさん
2010/08/28(土) 01:06:050738デフォルトの名無しさん
2010/08/28(土) 09:09:15巷に出回っているものも、バージョン表記すらない翻訳ソフトにかけただけのようなカタコトマニュアルばかりだしな
翌日には汎用的な命令がこっそりと大幅変更をされていて、混乱を招くだけのゴミ知識と化してたりすることが多いから
常に言語の最前線を追えるような奴じゃないとまず使えないな
学生さんには厳しい
0739デフォルトの名無しさん
2010/08/28(土) 09:35:220740デフォルトの名無しさん
2010/08/28(土) 09:56:200741デフォルトの名無しさん
2010/08/28(土) 13:44:07じゃあお前はこれから9割ぐらいの質問に対しては、
ちゃんと仕様書の ver 番号と章番号だけで答えてくれよ
0742デフォルトの名無しさん
2010/08/31(火) 22:08:54gluiのサブウィンドウにあるチェックボックスをクリックすると、
メインウィンドウの画面の線が表示したり消えたりする動作をします。
チェックボックスをクリックすると、フォーカスがglui側のサブウィンドウに移ってしまい、矢印キーで画面が動きません。
メインウィンドウ画面を一度クリックするとフォーカスが元に戻って再度動くようになります。
この"メインウィンドウ画面をクリックする"という手順が面倒なので、
チェックボックスをクリックしてもフォーカスがメインウィンドウから移らないようにしたいのですが
いい方法はありますか?
0743デフォルトの名無しさん
2010/08/31(火) 22:35:140744デフォルトの名無しさん
2010/09/01(水) 02:42:100745デフォルトの名無しさん
2010/09/02(木) 21:40:08>>743
ありがとうございます。試してみます。
0746デフォルトの名無しさん
2010/09/05(日) 12:46:32実行するとエラーで落ちてしまいます。なぜでしょうか。
void func()
{
char buffer1[32] = "test", buffer2[64];
strcpy(buffer2, "_test ");
strcat(buffer2, buffer1);
text->set_text( buffer2 ) //text は main()で生成したgluiのstatic_textのポインタです。
}
アプリケーションエラー
0x・・・・・の命令が0x・・・・・のメモリを参照しました。メモリがreadになることはできませんでした。
環境はVC++2008, OpenGL + gluiです。
0747デフォルトの名無しさん
2010/09/05(日) 14:01:31× OpenGL + glui
○ glut + glui
でした。すみません。
0748デフォルトの名無しさん
2010/09/05(日) 14:13:520749デフォルトの名無しさん
2010/09/05(日) 16:06:05ありがとうございます。
buffer1,2 ともにグローバルスコープでやってみました。
出来ませんでした。すみません。
あと、引数の部分を "test" みたいに定数でやってもエラーがでます。関係がありますか?
gluiの配布サンプルプログラムは動くんですが、なぜか作っているプログラムだと動きません。
0750デフォルトの名無しさん
2010/09/05(日) 16:15:27main()も見ないとなんとも言えないよ
0751746
2010/09/05(日) 16:26:23int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初期化
:
main_window = glutCreateWindow("test"); //ウィンドウを生成
:
/*glui UI設定 */
glui = GLUI_Master.create_glui_subwindow(main_window, GLUI_SUBWINDOW_RIGHT); //gluiサブウィンドウ生成
glui -> set_main_gfx_window( main_window ); //メインウィンドウに結合
GLUI_Panel *star_search_panel = glui->add_panel("Search"); //探索系パネル
GLUI_Listbox *star_list_ = glui->add_listbox_to_panel(star_search_panel, "Select Star", &star_list_number, -1, DummyCB);
glui->add_button_to_panel(star_search_panel, "Search", -1, Star_Search);
glui->add_button_to_panel(star_search_panel, "Look Up", -1, Star_Look_Up);
:
theta_text = glui->add_statictext(look_pos[0]);
phi_text = glui->add_statictext(look_pos[1]);
:
init();
object();
Init_Look();
glutMainLoop(); //無限ループで待受
return 0;
}
つづく
0752デフォルトの名無しさん
2010/09/05(日) 16:29:34{
/* 角度のテキストを更新する */
sprintf(buffer1, "%5.1lf", now_houi);
strcpy(buffer2, "houi = ");
strcat(buffer2, buffer1);
//look_pos[0] = buffer2;
theta_text->set_text(buffer2);
sprintf(buffer1, "%5.1lf", now_keisha);
strcpy(buffer2, "keisha = ");
strcat(buffer2, buffer1);
//look_pos[1] = buffer2;
phi_text->set_text(buffer2);
}
この関数を、display()で呼んで現在の角度をテキストで表示しています。
look_pos[]がコメントになっているのは、ポインタで試したけど駄目だったということです。
0753デフォルトの名無しさん
2010/09/05(日) 17:01:570754デフォルトの名無しさん
2010/09/05(日) 17:27:45GLUI_StaticTextのset_textの話だと思うけど。
set_textは内部でバッファ確保してないからな、ポインタ格納してるだけだから。
phi_text->set_text実行した時点でtheta_textの内容も変わるからな。
それと肝心なbuffer1とbuffer2の定義がないのはわざとか?
0755デフォルトの名無しさん
2010/09/05(日) 17:34:47>>746
0756デフォルトの名無しさん
2010/09/05(日) 17:35:410757デフォルトの名無しさん
2010/09/05(日) 17:57:050758デフォルトの名無しさん
2010/09/05(日) 18:12:25ということは、theta_textと,phi_textの文字列を格納しておくchar配列を
グローバルスコープに置いてそのポインタを渡せば通るのかな?と思い
試してみました。
char theta_value[32], phi_value[32]; //新しくchar配列を追加。テキストの文字列を代入
void Refresh_Text(void)
{
char buffer[16];
/* 角度のテキストを更新する */
sprintf(buffer, "%5.1lf", now_houi);
strcpy(theta_value, "houi = ");
strcat(theta_value, buffer);
look_pos[0] = theta_value;
theta_text->set_text(look_pos[0]);
}
これに変更して実行してみましたが、やはり落ちてしまいました。
0759デフォルトの名無しさん
2010/09/05(日) 19:30:58したら?
0760デフォルトの名無しさん
2010/09/05(日) 19:44:07c60da482
とでました。ポインタはしっかり設定されていると思います。
0761デフォルトの名無しさん
2010/09/05(日) 19:46:44部分的なコードだけでは推測しかできない
0762デフォルトの名無しさん
2010/09/06(月) 02:24:32ソースのアップが遅れてしまいました。すみません。
付属のヘッダーはセンサー用のファイルです。
0763デフォルトの名無しさん
2010/09/06(月) 03:34:130764デフォルトの名無しさん
2010/09/06(月) 03:46:22いろいろ試したら
glui
がpasswdみたい
0765デフォルトの名無しさん
2010/09/06(月) 03:47:51データ読んだりCOMポート開けたりSheelExecute(こえー)とかgetchar()とか外したらエラーが出ずに動いたけど?
0766デフォルトの名無しさん
2010/09/06(月) 04:20:34こええよw
0767デフォルトの名無しさん
2010/09/06(月) 04:45:31すっかり忘れてました。すみません。passは"gl"です。
>>765
その部分ですか。とりあえず要件を満たすような動作を調べながら書いたので
その部分にエラーがあると直しようがないかもしれませんorz
特にセンサー部分はさっぱりですので。
0768デフォルトの名無しさん
2010/09/06(月) 05:03:490769デフォルトの名無しさん
2010/09/06(月) 13:41:460770デフォルトの名無しさん
2010/09/06(月) 22:26:310771デフォルトの名無しさん
2010/09/06(月) 23:29:330772デフォルトの名無しさん
2010/09/07(火) 12:42:210773デフォルトの名無しさん
2010/09/07(火) 19:22:090774デフォルトの名無しさん
2010/09/08(水) 22:31:52法線を自動的に生成する命令として
glEnable(GL_AUTO_NORMAL);
ってのが良く紹介されてるんですが、これってGL_QUADSなどで
自分で図形を表示するときには使えないんですか?
というか上記の命令で自動的に法線が生成され、照明が適用されるようになったことが
一度もなくて、毎回自分で面の法線を頂点ごとにいちいち計算してglNormal3dとかで
設定してるんですけど、皆さんのところではちゃんと法線が自動で生成されるんですか?
0775デフォルトの名無しさん
2010/09/08(水) 22:34:490776デフォルトの名無しさん
2010/09/08(水) 22:59:53レス見てはっと気づいて赤本(原著第五版日本語版第2刷)を確認したら
GL_AUTO_NORMALなんていう命令は載ってない・・・
まさかデマなの!!?
とりあえず法線計算はいつも通り自前ですることにします
でも法線のスムージングとか超めんどくさいんだよな・・・
Java3DのNormalGeneratorみたいなのが欲しいところです
0777デフォルトの名無しさん
2010/09/08(水) 23:18:110778デフォルトの名無しさん
2010/09/08(水) 23:33:112. 全ての三角形について
2.a. 三角形の法線を外積で求める tn = (v1-v0)x(v2-v0)
2.b. 三角形の三つの頂点の法線に tn を加算
3. 全部の法線を正規化する
ほら簡単♪
2.の段階で正規化とか余計なこと考えなきゃ早いのよ〜。
0779デフォルトの名無しさん
2010/09/09(木) 00:42:57Graphics System:
A Specification
(Version 2.1 - July 30, 2006)
でAUTO_NORMALを検索してもヒットしないからそんなん使わないほうがいいんじゃない?
>>778
2の段階で法線ベクトルを正規化しないことによって
三角形の面積比が入った頂点法線ベクトルが得られるんだよね。
これをあるサイトで初めて知ったときはこいつ天才かと思ったよ。
俺がバカなだけかもしれんが。
でも頂点法線ベクトルをGPUで計算しようとするとちょっと面倒じゃない?
頂点毎に隣接する頂点のインデックスを保持々するとかしないといけないし。
将来ベクトルの足し算がatomicにできれば楽になるかも
0780デフォルトの名無しさん
2010/09/09(木) 07:55:24ベジェパッチ作成する
glEvalMesh2とかに適用される奴だよ
0781デフォルトの名無しさん
2010/09/09(木) 14:26:30glEnable(GL_LIGHTx)でどの光源が有効になっているかを知る方法があれば
教えていただけないでしょうか?
0782デフォルトの名無しさん
2010/09/09(木) 14:50:15uniformでライトの色、場所とかをMat4なりで渡すといい。
有効になってる光源も適当な変数で知らせてやればいいんじゃないか。
0783デフォルトの名無しさん
2010/09/09(木) 22:21:39の7.5 Built-In Uniform State
を読みなさい。
それとver3以降の仕様書のThe Deprecation Modelの章も読みなさい。
これからはDeffered shadingの時代かもしれない。
0784デフォルトの名無しさん
2010/09/09(木) 23:25:300785デフォルトの名無しさん
2010/09/10(金) 13:19:05立方体をOpenGL ES(iPhone)で描画するプログラムを作っています。
行列で変換(回転)後,ライティング用の法線の値を取り出すことはできるでしょうか?
立方体の手前に見えている面を判別するのに,法線の情報を使いたいのです。
0786デフォルトの名無しさん
2010/09/10(金) 13:51:19逆に視線をモデルのローカル座標に変換すればモデルの法線情報をそのまま使えると思います
0787デフォルトの名無しさん
2010/09/10(金) 13:57:30ありがとうございました。
できる/できないの切り分けができただけでも,調べる時間が省けて助かります。
自前でがんばってみます!
0788デフォルトの名無しさん
2010/09/10(金) 17:59:41>>782
レスありがとうございます。
確かに、固定パイプラインの関数の多くが廃止予定になっているので、
そういう意味では全て移行してしまったほうがいいのかもしれません。
しかし、今回の自分の場合、既存のグーローをフォンに変更したいだけなので、
出来るだけソースコードの変わらない方法を模索したいと思っています。
>>783
レス、ありがとうございます。
uniform variableのほうは見てみたのですが、有効無効を調べる箇所は
見つかりませんでした。無効になっていれば、
ambient、diffuse、specularのいずれかの値が0.0になる、などであれば
良かったのですが、そういうこともありませんでした。
もう一度自力で調べてみます。レス、ありがとうございました。
0789デフォルトの名無しさん
2010/09/15(水) 01:52:46遅レスだが、解決に行き着いていなかったようなので
自分はシェーダーで固定パイプライン機能を使用しないのだが、
glEnable()で指定する各ステートはシェーダーから参照できなかったような
もともとのProgramable shaderの生い立ちから、LIGHT0のみなら、LIGHT0のパラメータのみ参照するシェーダーをロード。
LIGHT0とLIGHT1を使用するなら、LIGHT0とLIGHT1を参照するシェーダーをロードっていう流儀なんだろうね
どうしても1つのコードで処理させたいなら、uniformでenable相当の値を渡して、分岐させればよいかと
0790デフォルトの名無しさん
2010/09/21(火) 02:22:22無効化するにはどうしたらいいのでしょうか?
使用以後POINT系のパラメータが
のっとられたままになってしまいます。(pointSizeとか)
0791デフォルトの名無しさん
2010/09/21(火) 11:54:58面倒なら glPushAttrib 〜 glPopAttrib で
0792デフォルトの名無しさん
2010/09/21(火) 16:35:06joglのopenglなんですがGLCanvasとJscrollpaneの組み合わせて
スクロールしたところ、スクロールされて出てくるはずのキャンバス
部分が表示されず、またスクロールで見えなくなるはずの上部が
フレームの枠を超えて飛び出します。
組み合わせて使えないのでしょうか?
0793デフォルトの名無しさん
2010/09/21(火) 17:05:32Frame, Button, ScrollPane, GLCanvas ・・・ AWT
JFrame, JButton, JScrollPane, GLJPanel ・・・ Swing
実際には混ぜて使える状況もあるけどまだ理解できてないならやめた方が無難
0794デフォルトの名無しさん
2010/09/21(火) 20:14:050795デフォルトの名無しさん
2010/09/21(火) 23:14:01どーにもこーにもTIPSが無く
0796デフォルトの名無しさん
2010/09/21(火) 23:38:06http://developer.download.nvidia.com/SDK/10/opengl/samples.html
これのTransformFeedback使ったやつなんかは、ハイトマップが主題ではないがハイトマップ参照してるんじゃないの。
0797デフォルトの名無しさん
2010/09/22(水) 01:51:20このサイトは参考になるとおもう。
0798デフォルトの名無しさん
2010/09/23(木) 16:28:26ここも参考になりそう
http://nehe.gamedev.net/
ここの [OpenGL Tutorials] の Lessons 34 に
2D テクスチャから滑らかなハイトフィールドを作るコードが
解説付きである。
0799デフォルトの名無しさん
2010/09/24(金) 13:47:580800デフォルトの名無しさん
2010/09/24(金) 15:06:280801デフォルトの名無しさん
2010/09/24(金) 20:52:32ありがとうございます
早速勉強してみます
0802デフォルトの名無しさん
2010/09/24(金) 23:32:01遅くなりましてすいません。
まさかぁ〜と思ってやってみたら
上手くいきました!
ありがとうございました!
0803デフォルトの名無しさん
2010/09/25(土) 00:42:460804デフォルトの名無しさん
2010/09/25(土) 01:03:12自分もOggTheoraを立方体に貼り付けてみたことならある
0805デフォルトの名無しさん
2010/09/25(土) 02:14:16OpenGLでの描画に対応してたはずだから調べれば情報が出てくるかもね
0806デフォルトの名無しさん
2010/09/29(水) 18:09:52それを平行移動、回転して
(i,j,k)と(i+x,j+y,k+z)を結ぶ線にしたいのですが
どうもうまくいきません
どなたか教えて下さい
0807デフォルトの名無しさん
2010/09/29(水) 18:11:17日本語大丈夫?
0808デフォルトの名無しさん
2010/09/29(水) 18:34:120809デフォルトの名無しさん
2010/09/29(水) 18:39:55ヒント:移動、回転(角度は逆三角関数と、3平方の定理使ったらわかるよね)、拡大(これもベクトルの長さからわかる)
0810デフォルトの名無しさん
2010/09/29(水) 18:44:520811デフォルトの名無しさん
2010/09/29(水) 21:50:36線だけじゃないので
平行移動、回転を使った方が楽なんです
>>809
回転ってやっぱり一発じゃ無理ですよね
0812デフォルトの名無しさん
2010/09/29(水) 23:00:340813デフォルトの名無しさん
2010/09/30(木) 00:04:34矢印の頭の方向がおかしくなってしまいます
glPushMatrix();
{
glTranslated( i, j, k );
//棒部分
glBegin( GL_LINES );
glVertex3d( -x/4, -y/4, -z/4 );
glVertex3d( x/4, y/4, z/4 );
glEnd();
norm=sqrt(x*x+y*y+z*z);
theta1 = acos(x/norm);
theta1 *= 180/PI;
if(y==0) glRotated( theta1, 0, 1, 0 );
else if(z==0) glRotated( theta1, 0, 0, 1 );
else glRotated( theta1, 0, 1/y, -1/z );
//頭部分
glBegin( GL_TRIANGLE_FAN );
glVertex3d( norm/4, 0.0, 0.0 );
glVertex3d( norm/4-0.2, 0.05, 0.0 );
glVertex3d( norm/4-0.2, 0.0, -0.05 );
glVertex3d( norm/4-0.2, -0.05, 0.0 );
glVertex3d( norm/4-0.2, 0.0, 0.05 );
glVertex3d( norm/4-0.2, 0.05, 0.0 );
glEnd();
}
glPopMatrix();
0814デフォルトの名無しさん
2010/09/30(木) 01:57:20自己解決しました
acosの返り値の範囲を考慮してませんでした
0815デフォルトの名無しさん
2010/10/01(金) 23:02:26実装したいと思っています。
ただ、デプスバッファ、法線バッファとして単精度浮動小数点バッファを
作成するところで上手く出来ていないようで、レンダリングが正常に行えません。
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA16F,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,0);
以下の構成でレンダリングに失敗しました。
CPU:C2D E6600
GPU:Radeon X1950XTX
もう一つの開発環境(以下)では正常にレンダリングが行えました。
CPU:C2D T9600
GPU:Nvidia QuadroFX 2700M
X1950XTXが少し古いのに起因しているのかと思ったのですが、
ハードウェア的には浮動小数点バッファを扱えるという記述をいくつか見つけたので、
もしRadeonでOpenGLを浮動小数点バッファを作成している、という方がいましたら
教えていただけないでしょうか?
0816デフォルトの名無しさん
2010/10/01(金) 23:11:14RadeonのCatalystドライバのバージョンは2010.0210.2339.42455です。
0817デフォルトの名無しさん
2010/10/02(土) 01:58:09FBOが不完全なんてこともないんだよね?
0818デフォルトの名無しさん
2010/10/02(土) 05:45:17揚げ足とるわけじゃないが、記述を見かけたなんて言ってないで
glGetString()で自身の環境で機能を確認すれば言いだけの話
その方法を知っていてやらないのは駄目だろ
あとは旧ATIのGLドライバは、GLの規格に厳密すぎる所がある
ちゃんとリファレンス読んで、その通りに実装しないとエラーになる
同じコードで、NVIDIAでは動いて、ATIで動かないなんてザラ
でネット拾ったり、本なんかに載ってるコードを
リファレンス通りに修正するとATIでも動くようになるw
ATIボードの機能が有効なのにNVIDIAでしか動かないなら、この辺りじゃね
0819デフォルトの名無しさん
2010/10/02(土) 09:33:48レス、ありがとうございます。
glGetErrorではエラーは吐きませんでした。
FBOはCOLOR_ATTACHMENT0_EXT、DEPTH_ATTACHMENT_EXTは設定していますが(共にテクスチャ使用)、
ステンシルに対しては使用しないので設定していません。
一応レンダーバッファのほうで設定してみます。
>>818
レスありがとうございます。
使用可能かどうかはglGetStringは使用していないのですが、
OpenGL Extensions Viewer 3.32のほうで確認を行いました。
(GL_RGBA16,GL_RGBA_FLOAT16に使用可能のチェック有)
確かにATIのドライバは仕様に厳格なところがありますね。
GLSLコードを書くときもよく弾かれてました。
Nvidiaは逆に良くも悪くも柔軟+最適化されていて判断に困ることがw;
厳格なATIで動けばNvidiaはまず動く、というのが自分の考えなので
ATIで動かないコードは書きたくないなぁと思って・・・。なかなか難しいですね。
0820デフォルトの名無しさん
2010/10/02(土) 13:51:15いや、不完全ってのはglCheckFramebufferStatusで
ちゃんとGL_FRAMEBUFFER_COMPLETEが返ってくるか確かめろってことだろ。
0821デフォルトの名無しさん
2010/10/02(土) 15:20:19glBegin()〜glEnd()の間に行列操作を入れたいのですが、glBegin()〜glEnd()間の
関数制限で実装出来ずに困っています。
そういう事ってOpenGLではどうやっても出来ないのですか?
宜しくお願いします。
0822デフォルトの名無しさん
2010/10/02(土) 15:47:15キミがアホなだけ。
0823821
2010/10/02(土) 16:29:04座標変換を外でやって実装する方法はやりました。
(それでコードやデータに問題が無いのを確かめたので…)
今やりたいのは、GL_TRIANGLE_STRIP 等の途中で行列演算が
挟みたい状態ですので、途中でEnd()〜Beginも挟めずに困っています。
0824デフォルトの名無しさん
2010/10/02(土) 17:46:05自分で (C言語の + 演 算子や * 演算子や sin 関数、cos 関数等を使って) 行列の計算をするのにEndもBeginも要らない
0825デフォルトの名無しさん
2010/10/02(土) 17:47:220826デフォルトの名無しさん
2010/10/02(土) 21:13:45glBegin()〜glEnd()の間に実行できるGL命令の種類は極めて限られています。
基本的には、頂点アトリビュートの変更しかできないと思ってください。
行列の変更も無理。
同じ事をやりたいなら、行列を変更したい部分でストリップを切って、
別の行列の元で別のストリップとして描画するしかありません。
(切ったストリップ間は適当なTRIANGLEなりなんなりでつなぐ)
頂点シェーダが使えるなら、頂点ごとに別の行列を参照することで
821さんのやりたいことができますけどね。
0827デフォルトの名無しさん
2010/10/03(日) 00:06:500828821
2010/10/03(日) 01:11:35基本的にはOpenGLの機能としてはシェーダを使わないと無理という感じなのですね…。
大変参考になりました。有難うございました。m(_ _)m
0829デフォルトの名無しさん
2010/10/03(日) 01:26:080830デフォルトの名無しさん
2010/10/03(日) 01:56:470831デフォルトの名無しさん
2010/10/03(日) 01:59:530832デフォルトの名無しさん
2010/10/03(日) 02:04:090833デフォルトの名無しさん
2010/10/03(日) 02:38:290834デフォルトの名無しさん
2010/10/03(日) 02:57:24・・・・・・・えーーーーと・・・・????
0835デフォルトの名無しさん
2010/10/03(日) 07:31:500836デフォルトの名無しさん
2010/10/03(日) 10:31:56通常はglBeginを始めた時点で全てのデータは既知(固定)だ。
glBegin~glEndの中でこねくりまわす必要は普通はない。
0837デフォルトの名無しさん
2010/10/03(日) 11:26:26なら頂点シェーダーか行列パレットであってるでしょ。
0838821
2010/10/03(日) 11:52:24すみません。
「行列パレット」という機能がシェーダの機能の一部なのだと
勘違いしてしまいました。
「行列パレット」を使えば出来そうなのですか!?
>833
>826さんにも同様のアドバイスを頂きましたが、TRIANGLE_STRPI中の
プリミティブを分割するとなると、結局プリミティブを分割する時点で
一番最後の関連する頂点座標を個別計算しておく必要が出てきてしまい、
処理がとても煩雑になってしまうので…。
0839デフォルトの名無しさん
2010/10/03(日) 13:08:20行列パレットでできます。というかまさに821さんのやりたいことを実現するための機能です。
もっとも、821さんがお使いの環境で行列パレットが使用可能かどうかは分かりませんが・・・。
0840821
2010/10/03(日) 13:38:42有難うございます!
行列パレット関係でググってみたところ、「ボーンの数だけ行列をあらかじめ計算して
保存しておいて(マトリックスパレット)、あとはこれとデータをGPUにおくってやればOK」
という感じの、自分がやりたい方向性の記事が見つかりました!
ですが、>839さんのいうように、普通に使える機能ではなさそうな感じで、しかも
導入ページみたいなものも無さそうで難しそうですね…。
0841デフォルトの名無しさん
2010/10/03(日) 13:47:39もしかして拡張機能の取得の仕方が分からないですか?
環境(OS)と、グラフィックスカードは何をお使いで?
0842デフォルトの名無しさん
2010/10/03(日) 14:08:34なぜポリゴン描画中に行列の操作が必要だと思ったのかわからないし、
具体的にどんなモデルを描画しようとして困ってるとかも言った方が答えやすいよ。
0843821
2010/10/03(日) 14:14:03はい、拡張機能関連が正直言って良く分かっていない状態です。
------------------------------------------------------
OS:Windows7
ビデオチップ:(GeForce9400/PCI/SSE2)
OpenGL:Version3.0( OpenGL Extensions Viewer3.32より )
------------------------------------------------------
ここにfreegltとglew-1.5.6-win32.zipを入れた状態です。
ですが、glewは上手く入っていない感じで、
glewInit()が「Missing GL version」で失敗してしまったり、
glewIsSupported("GL_VERSION_1_2")がfalseを返したりしています。
>>842
一般的ではないモデルデータで情報共有できないのですが、そのモデルデータのデータ構造が
そうなっているのです。
(プリミティブの頂点リストの中に行列の差し替えがコマンドとして入っていて、それらにはノードの
計算結果を入れておく構造)
0844デフォルトの名無しさん
2010/10/03(日) 15:22:11環境的には、行列パレット使えそうですけどね。
僕はGLEWじゃなくてGLeeばっか使ってるので、エラーはよく分からんw
もしできるなら、GLeeの方で試してみるとか?(「glee opengl」でぐぐれ)
ARB_matrix_paletteに関しては、さすがに説明面倒臭いんでリファレンス見てください。
しっかし気持ち悪いモデルデータ使ってますねw
僕が知らないだけで、そういうデータ構造って割と一般的だったりするのかなぁ。
0846デフォルトの名無しさん
2010/10/03(日) 15:49:59DirectXも昔はそういう感じだったんだけどね
821がなんかの移植をやってるならできれば両方に詳しいような人を捕まえたほうがいいと思う
0847デフォルトの名無しさん
2010/10/03(日) 16:16:440848デフォルトの名無しさん
2010/10/03(日) 16:27:10んー、いや、バッチの中に色々なコマンドが入ってるのは分かるんですよ。
ただ、821さんの話だと、一つのストリップを構成する頂点リストの中に、
行列操作コマンドが入っているような感じを受けたので。(合ってるのかなぁ?)
さすがに、DirectXやコンシューマ機でも、そういう形ではデータ保持しないですよね。多分。
いや、メモリ上でのデータ構造としてはナシとしても、ファイルフォーマットとしてはアリなのかな??
0849デフォルトの名無しさん
2010/10/03(日) 16:53:020850デフォルトの名無しさん
2010/10/03(日) 22:20:49最近のビデオカードでは GL_ARB_matrix_palette や GL_ARB_vertex_blend って本当にサポートされているんでしょうか。
手元の Radeon HD 4850 を OpenGL Extension Viewer で調べてみても
Extensions には GL_ARB_matrix_palette も GL_ARB_vertex_blend の文字がありません。
このサイトで表示されるビデオカードは全部 false (未サポート)ですね…。
http://www.kludx.com/capability.php?capability=463
http://www.kludx.com/capability.php?capability=440
サポートしている PC 用ビデオカードって本当にあったんだろうか…という気がしてきました。
0851デフォルトの名無しさん
2010/10/03(日) 22:45:130852821
2010/10/03(日) 23:05:12自分の環境では OpenGL Extention Viwer でチェックがついていたので
運よく使えるみたいです。
折角みなさんに ARB_matrix_palette を教えていただいたのですが、
リファレンスを見てもサッパリ使い方が分かりません。
(↓リファレンスはこれで合っていますか?)
ttp://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt
glCurrentPaletteMatrixARB (GLint index);
glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, GLvoid *pointer);
glMatrixIndexubvARB (GLint size, GLubyte *indices);
glMatrixIndexuivARB (GLint size, GLuint *indices);
glMatrixIndexusvARB (GLint size, GLushort *indices);
これらの概要というか使い方を知っている方がおられたらご教授ねがえませんでしょうか?
お願いばかりで本当にすみません…。
0853デフォルトの名無しさん
2010/10/03(日) 23:25:28Extension Viewerのデータベースには一個もないよね
0854デフォルトの名無しさん
2010/10/03(日) 23:42:03有効化は glEnable(GL_MATRIX_PALETTE_ARB);
行列パレットは glMatrixMode(GL_MATRIX_PALETTE_ARB); と glCurrentPaletteMatrixARB(i); で選択して glLoadIdentity 他で設定する
各頂点に glWeight{b,s,i,f,d,ub,us,ui}vARB で1つ以上のウェイト値を指定する (w_0〜w_n)
各頂点に glMatrixIndex{ub,ui,us}vARB で1つ以上のインデックス番号を指定することによって、さっき設定した行列から使うものを選択する (M_0〜M_n)
座標変換は (xe,ye,ze,we) = sum(w_i * M_i * (xo, yo, wo, zo)) のように計算される (i=0〜n)
およそこんな感じじゃないでしょうか? そのリファレンス読む限り
正確なところはもう一度自分で読み直してみてください、必要なことは一通り書いてあるように思います
0855821
2010/10/04(月) 01:57:41有難うございます。さっそく少しいじってみたところ、
glEnable(GL_MATRIX_PALETTE_ARB);
glMatrixMode(GL_MATRIX_PALETTE_ARB);
glCurrentPaletteMatrixARB(0);
と順番に呼んだ時点でアプリケーションエラーで停止してしまいました。
明日、英語をじっくり解読して原因を調べます。
本当にご親切に有難うございました。
0856デフォルトの名無しさん
2010/10/04(月) 09:29:35glCurrentPaletteMatrixARB()の関数ポインタがNULLになってないかな。
デバッガで(printfでもいいけど)要確認。
0857デフォルトの名無しさん
2010/10/04(月) 15:37:19組込でよければ PowerVR MBX (OpenGL ES 1.1) にはある模様。
Part2 の339以降を読むと2003年の頃の状況がわかってとても参考になる…。
ttp://pc5.2ch.net/tech/kako/1039/10399/1039984523.html
…読めば読むほど勉強する気が失せてきた ('A`)
0858デフォルトの名無しさん
2010/10/04(月) 18:28:06シェーダー使わないスキニングの需要はあると思うんだけどね……
何というかOpenGLにもいろいろ残念な仕様がある。
0859デフォルトの名無しさん
2010/10/04(月) 22:12:14画面に表示したい場合はどのようにすればいいのでしょうか?
(三角形をglVertex2fみたいにウィンドウの座標で表示したい、ということです。)
方法を検索しようにも用語がわからず困っています。
0860デフォルトの名無しさん
2010/10/04(月) 22:40:260861デフォルトの名無しさん
2010/10/05(火) 03:15:430862デフォルトの名無しさん
2010/10/05(火) 03:44:02ただこの場合気をつけなければいけないのはz値の処理がPerspectiveとOrthogonalで違うこと。
0863デフォルトの名無しさん
2010/10/05(火) 07:55:44ありがとうございます。検索してみます。
0864デフォルトの名無しさん
2010/10/05(火) 18:05:35画像を表示するプログラムを作ったのですが、
ウインドウの拡大縮小に合わせて
画像の大きさも変わるようにできますか?
0865デフォルトの名無しさん
2010/10/05(火) 18:08:330866デフォルトの名無しさん
2010/10/05(火) 18:09:040867デフォルトの名無しさん
2010/10/05(火) 18:18:48ありがとん
0868デフォルトの名無しさん
2010/10/05(火) 19:39:310869デフォルトの名無しさん
2010/10/06(水) 00:05:44フラグメントシェーダで全ピクセル毎に計算やるのが主流だ。
glDrawPixels、glPixelZoomのようなCore profileに含まれていない関数を使うのはやめて
ポリゴンとテクスチャで2D処理したほうがいいんじゃないかな。
0870デフォルトの名無しさん
2010/10/06(水) 11:12:33glRectf()で描くのが俺のジャスティス!
0871821
2010/10/06(水) 13:28:27printf("func = %x\n", glCurrentPaletteMatrixARB );
でのテスト結果はご指摘の通り0でした。
これってOpenGLが拡張機能に対応していないっていう認識で良いのしょうか?
自分のPC環境ですが、Extention Viewer で全ての機能がチェックになっているのも
何かおかしいのでしょうね…。OSがWindows7だからでしょうか、Extention Viewer自体
何回か起動すると時々アプリケーションエラーで起動できないことがあります。
いずれにしろ、トライがちょっと難航し過ぎているのでFbx等の一般的なフォーマットに
一旦変換してから「普通の」表示方法で出すように方針転換する事にしました。
実機と扱うデータが異なってしまう時点でかなりデメリットは大きいのですが止むをえません。
結局は、シェーダを自分でコントロールできるようになったら改めて実現できるとのことなので、
いずれそちらで対応しようと思います。
MatrixPallete周りで具体的なアドバイスを頂いた方々には本当に感謝しています。
本当にご親切な対応をして頂いて有難うございました。(成果につなげられず済みませんでした…)
0872デフォルトの名無しさん
2010/10/06(水) 17:30:26画面全体を覆う矩形(くけい)とは、つまりビルボードの事。
ビルボードをレンダリングした後、テクスチャにエフェクトかけてビルボードのポリゴンさんに貼り付ける仕事をするのがシェーダー言語。
エフェクトとは拡大・縮小に限らず様々な事がGPU様にお願いできる。
>>869の認識としてはこれでおk?
0873デフォルトの名無しさん
2010/10/06(水) 19:13:15ソースデータはシェーダのuniformあたりに入れておいて、
画面全体を1ピクセルごとに舐めるように計算しろって話だと思う
gl1.4以前の関数をほぼ使わずシェーダのみで解決という邪道計算は
やったことがある人でないと勘所がつかみづらいと思われ
0874デフォルトの名無しさん
2010/10/06(水) 19:49:080875デフォルトの名無しさん
2010/10/06(水) 22:13:18そもそもglBitmapなんて使うか?
0876デフォルトの名無しさん
2010/10/06(水) 23:45:29GPUメーカーはよく使われる機能をチューニングしてマイナーな
機能は徐々に廃止していく。その結果、曲面・四角形・ピクセルやビットマップの
直接描画など三角形の描画以外の仕事はハードウェアでネイティブに処理されず
ドライバエミュレーションで処理される等の理由で遅い可能性が高いので
なんでも三角形(とテクスチャ)でやるのが最速、というあたりを
説明しないといきなりレイトレとか出しても混乱させるだけじゃないかと思った
0877デフォルトの名無しさん
2010/10/07(木) 00:06:39glRectf()はcore profileに入ってないから使うのはヤメタマエ(`・д・´)
でもVBOとか使って矩形レンダリングするよりはglRectを使ったほうが楽なんだよね。
>>872
OpenGL 2.0以降の仕様書を読みなさい。
ピクセルシェーダというのはDirect3Dでの用語
フラグメントシェーダというのはOpenGLでの用語
画面全体を覆う矩形はビルボードとは別物。
ビルボードをレンダリングするときはちゃんとカメラの設定に合わせてレンダリングする必要があるけど
矩形の方はカメラとか無視して, 単に画面を覆うように四角形か三角形2枚をレンダリングするだけ.
このときvertex shaderでは座標変換とかする必要はない.
このサイトを見れば具体的な内容がわかると思う.
ttp://kioku.sys-k.net/4kgfxmon/
>>872
テクスチャはGPUレイトレみないな事をやるときでも役に立つよ。
uniform変数はテクスチャの置き換えになるものではないんだよ。
>>876
deprecatedな機能は遅かったり, 将来使えなくなるんかなと思ったけど
NVIDIAはOpenGLの古い機能もちゃんとチューニングするらしい。
参考サイト
ttp://www.slideshare.net/Mark_Kilgard/gtc-2010-opengl
0878デフォルトの名無しさん
2010/10/07(木) 00:12:36つーかなんでみんな三角形2枚で画面を覆うの?
三角形1枚で画面を覆う方がcoolじゃね?
0879デフォルトの名無しさん
2010/10/07(木) 00:50:00テクスチャ座標の計算が面倒になるだろ。
以前CPUとGPUの差を見るために画像処理プログラム書いたら800x600くらいの画像に5x5のガウシアンフィルタかけた場合には
CPU(1 thread) : 16[s]に対し、GPUは0.07[s]とかそんなんだったわwCPU側のはまだ最適化の余地はあるけどそれでも数十倍の違いはあった。
最近はOpenCLとか出てきてるからある程度整備されたらGPUレイトレとか画像処理とかはそれにやらせるべきなんだろうけどね。
0880デフォルトの名無しさん
2010/10/07(木) 00:53:41> deprecatedな機能は遅かったり, 将来使えなくなるんかなと思ったけど
> NVIDIAはOpenGLの古い機能もちゃんとチューニングするらしい。
限りあるトランジスタをどの機能にどれだけ配分するかの問題だから全部の機能が
時代相応に速くなりますってことはないんじゃないかな
仮にNVIDIAはMarkさんが頑として譲らなかったとしてもIntelとAMDはどうだろうねぇ
0881>>872
2010/10/07(木) 09:41:09>>876
>>877
うぉー、皆様懇切丁寧にありがとうございました。
何だか意図せず昔やりたかった事柄を勉強しないといけなくなりそうでwktkです。
てか4kGfxMon落としたらトロイ検出された/(^o^)\
0882デフォルトの名無しさん
2010/10/07(木) 12:19:04↓
プログラマブルなGPUが主流になる
↓
古いOpenGLの機能は今時のGPUにあわなくなる。
同じ事をするのに何通りもの方法があると混乱する。
↓
新しいGPUにあった機能だけが使えるOpenGLをCore profilesを制定
古い機能が必要なときはCompatibility profilesという拡張機能を使おう
↓
俺ら「よし, これからはCore profilesの機能だけを使って新しいGPU時代を謳歌しようぜ!」
「仕様が雑多なCompatibility profilesはわすれようぜ」
↓
ドイツ人・フランス人「Core profilesだけを使った現代的なOpenGLのチュートリアルを書いたぜ!」
↓
nvidia「うちは古い機能も全力でサポートするよ!」
>>881
4kGfxMonはCrinklerっていうプログラム圧縮プログラムが使われている。
そういうプログラムは解凍しないとウィルスかどうか判断できないとかいう理由で
頻繁に誤検出されちゃう。
たぶん実行しても大丈夫だろうけど心配なら4kGfxMonを自作すればいいんでない?
0883デフォルトの名無しさん
2010/10/07(木) 12:52:13冗談抜きに複雑になりすぎて自己崩壊しつつある。
0884デフォルトの名無しさん
2010/10/07(木) 13:08:31今の複雑な仕様じゃ作る気にならねー
0886デフォルトの名無しさん
2010/10/08(金) 03:10:41OpenGL3.0になってから
ライティング, 座標変換, ディスプレイリスト等の固定機能はdeprecatedになって
結構シンプルになった。
その代わり自分でライティング, 座標変換しないといけなくなったけど
アルゴリズムさえ理解していればそんなに大変なことではない。
それでも複雑でいやならOpenSceneGraphとかのライブラリを使えばいいと思う。
>>884
今の仕様だとGLSLコンパイラを作らないといけないのがちょっと大変そう。
日本語のOpenGLのサイトでCore profilesの機能だけに絞った解説ページが無いっぽいけど
そういうサイトの需要はある?
うまくいけば広告で稼げるか?!稼げるわけないか・・・
0887デフォルトの名無しさん
2010/10/08(金) 03:56:220888デフォルトの名無しさん
2010/10/08(金) 10:11:470889デフォルトの名無しさん
2010/10/08(金) 11:12:40単なるボランティア?
0890デフォルトの名無しさん
2010/10/09(土) 01:34:09現在 300x800の画面で作ったアプリを
300x400のサイズのウィンドウに左右分割したいと思っています。
glPerspectiveの値をいじってたりしましたが、左右キッチリと分割できませでした。
もし解決法などをご存知の方がいらっしゃいましたらご回答よろしくおねがいします。
0891デフォルトの名無しさん
2010/10/09(土) 01:59:44つglViewport()
0892デフォルトの名無しさん
2010/10/09(土) 06:00:16つかれたー
0893デフォルトの名無しさん
2010/10/09(土) 07:54:17glFrustum()は左右非対称の錐台も設定できる
0894デフォルトの名無しさん
2010/10/13(水) 10:27:08下地の色と特定のカラーをテクスチャーの色で分配(ブレンド)する(?)、
どう見えるのでしょうか?
0895デフォルトの名無しさん
2010/10/13(水) 11:58:45OpenGL入れてみた。
DirectXは画面の初期化からして全然理解できなった。
OpenGLの方で趣味として実用化できそうなので
テンプレの参考書求めて本屋さん行ってきます。
0896デフォルトの名無しさん
2010/10/13(水) 12:08:500897デフォルトの名無しさん
2010/10/13(水) 12:25:350898デフォルトの名無しさん
2010/10/13(水) 12:33:170899デフォルトの名無しさん
2010/10/13(水) 13:26:46頭の中がコピー&ペーストで成り立っているということだけはわかった。
自律的発想に乏しく、文章構成能力が低いのな。
IT業界にはコミュニケーション能力が必要らしいから、
ちゃんと日本語で物事が考えることができるように努力するんだな。
流行り言葉の反復ばっかりしているんじゃねえ。笑わせんな。噛みつきワニ。
0900デフォルトの名無しさん
2010/10/13(水) 13:35:150901デフォルトの名無しさん
2010/10/13(水) 13:45:34とても汚いです。
0902デフォルトの名無しさん
2010/10/13(水) 13:57:05どこにもあるようなコピペで噛みつくは、人の言葉反復して返してきやがるし。
脳みそが入力情報に決まった値返すだけの単純サブルーチンかなんかなんだろう。
言語の雑談しに来ただけなのによー。
0903デフォルトの名無しさん
2010/10/13(水) 14:03:26ttp://wisdom.sakura.ne.jp/system/opengl/gl17.html
これ見て色々試してみたら
0904デフォルトの名無しさん
2010/10/13(水) 14:07:34>>896は、下らないどうでもいいお前の独り言書くなよカスって言いたいんだろ、言わせんな恥ずかしい。
0905デフォルトの名無しさん
2010/10/13(水) 14:41:15透視変換をかけた後のクリッピング空間での視体積はz,y,z軸ともに-1〜+1ですよね
にも関わらずglClearDepthで指定するzバッファーは0~1なのですが、これおかしくないですか
zテストするときはz軸をさらに変換しないといけないのがおかしいと思います。
どうでしょうか。
0906デフォルトの名無しさん
2010/10/13(水) 14:54:190907905
2010/10/13(水) 15:14:39まずウインドウ座標が2次元なのか3次元なのかが明確でない。
デプステストがウインドウ座標で行われるのか明確でない。
もうちょっとわかりやすく書いて欲しい。。。。
0908デフォルトの名無しさん
2010/10/14(木) 00:37:48正確なところを知りたければ仕様書を読まねばなるまい
わかりやすくはないけど
0909デフォルトの名無しさん
2010/10/14(木) 00:54:150910デフォルトの名無しさん
2010/10/14(木) 01:00:280911デフォルトの名無しさん
2010/10/14(木) 01:37:46テクスチャUVに回転行列を使って回転させる方法について質問なんですが、
Y軸で回転させたあとにX軸で回転させて持ち上げるような感じにしたいのですが、
まず「Λ」をY軸に90度回転させると「>」になりますが、このあとに
X軸回転させようとすると、最初の回転でX軸まで回転させた感じになって、
|> ←が持ち上がる感じになってしまいます。
x軸
これを
>
 ̄x軸
として回転させるためにはどうようにしたらよろしいのでしょうか?
うまく説明できなくて申し訳ありません。
0912デフォルトの名無しさん
2010/10/14(木) 02:35:390913デフォルトの名無しさん
2010/10/14(木) 04:57:380914デフォルトの名無しさん
2010/10/15(金) 01:06:000915デフォルトの名無しさん
2010/10/16(土) 02:41:23その辺、赤本にちゃんと書いてなかったっけ?
僕は赤本読めばすっきり理解できたけど。
0916デフォルトの名無しさん
2010/10/16(土) 19:21:08フラグメントシェーダのtexture2Dの引数に gl_PointCoordを指定するとアルファ値が0になる。
0917895
2010/10/16(土) 21:27:02GLとC++組み合わせて簡単なの組み始めているけどオモロイ。
趣味日曜プログラマ、俺の日記帳じみた書き込みだけどオモロイ。
0918デフォルトの名無しさん
2010/10/16(土) 21:44:340919デフォルトの名無しさん
2010/10/16(土) 21:47:580920895
2010/10/16(土) 23:08:20プログラミング技術がどうかも関係ないのぜ。
プロから見ればヘタヘタでもいいのぜ。
でも諸氏がんがるのぜ。
プロの技術は尊敬に値するのぜ。
0921デフォルトの名無しさん
2010/10/16(土) 23:16:47奴隷社会です
0922デフォルトの名無しさん
2010/10/16(土) 23:29:42既存のコピペ
独自クラス・独自関数の使い方だけを覚えていって
管理になると
書類や調整ばかり
そんなもんです、このクソ業界
0923デフォルトの名無しさん
2010/10/16(土) 23:47:490924デフォルトの名無しさん
2010/10/17(日) 02:06:48895さんのOpenGL経験に幸の多からんことを。
0925デフォルトの名無しさん
2010/10/17(日) 06:42:11OpenGLのglPointSizeって何が違うん?
0926デフォルトの名無しさん
2010/10/17(日) 08:49:280927895
2010/10/22(金) 23:34:52テンプレ本のソースを使ったり、sin・cosなどして
基本的なモノを作ってます。
0928デフォルトの名無しさん
2010/10/23(土) 00:22:39指示する隣り合う2点ABの延長線上に、別の指示する点Cがあった(A−B C)
場合、
ACXを結ぶ三角形(エッジABと内部BCを繋ぐエッジフラグfalseの辺ACを持つ)
が求まり、ワイヤフレーム描画でエッジABを描くことができません。
2つの三角形ABXとBCXが求まるといいのですが。。
どうすればいいでしょうか?
因みに、GLU_TESS_COMBINEコールバック関数を登録しても、
こちらには入ってきませんでした。
0929デフォルトの名無しさん
2010/10/23(土) 00:33:150930デフォルトの名無しさん
2010/10/23(土) 01:08:29gluLookAt
なのですが
物体に対して見る位置をだんだん遠ざけていくと物体が消えてしまします。
物体自体を合わせて大きくしていってもやはり何も表示されなくなります。
そこでふと、JOGL自体にスケールが存在するのかと思い投稿させていただきました。
詳しいかたよろしくお願いいたします。
0931デフォルトの名無しさん
2010/10/23(土) 01:17:070932デフォルトの名無しさん
2010/10/23(土) 01:54:21面倒なコールバックとかもなくてラク。
0933デフォルトの名無しさん
2010/10/23(土) 22:20:00最新のOpenGLでこそ、まともにテッセレーションが使えるんじゃん
ジオメトリシェーダーでGPUでテッセレーション出来るのが最新たる所以でしょ
(対応してないグラフィックボードの時点で最新とか論外)
そもそもGLUとか言ってる時点でCPU処理だし、
ソフトウェア上でテッセレーションするならポリゴン描画出来る時点で
OpenGL1.x でも自前でポリゴン分割するだけで出来るだろ
結局、GLUにテッセレーションの機能を作れたぜ!ってだけでしょ
ジオメトリシェーダーでやるなら当たり前の処理になるから良かったなw
0934デフォルトの名無しさん
2010/10/23(土) 22:30:47(´A`)…。
0935デフォルトの名無しさん
2010/10/23(土) 22:33:59?
OpenGL 4.0でハードウェアのテッセレーターがついたのは知ってるよ。
そもそも最新のHWテッセレーションはジオメトリシェーダーじゃなくて制御シェーダー、評価シェーダーの2つのプログラマブルシェーダー
と固定機能のテッセレーターで実現されるものなんだが。
名前こそ同じテッセレーションだけど性格が違うだろGLUのテッセレーターとは。
4.0でついたモノは主にLOD制御用だしGLUのは閉じたパスの集合から凸ポリゴン形成するものだろ。
0936デフォルトの名無しさん
2010/10/23(土) 22:35:15KFbxMesh.GetNode() で取れるKFbxNodeはどうも違うみたいだし…。
宜しくお願いします!
0937デフォルトの名無しさん
2010/10/23(土) 22:54:220938デフォルトの名無しさん
2010/10/23(土) 23:01:28性格が違うってさ…
用途を変えてるだけで同じ物を使ってるだけでしょ
結局、テッセレーションとか語れる奴はこのスレにはいねーんだね
0939デフォルトの名無しさん
2010/10/24(日) 00:10:53(´A`)…。
0940デフォルトの名無しさん
2010/10/24(日) 01:29:16('A`)…
0941デフォルトの名無しさん
2010/10/24(日) 02:24:14あの・・・GLUのテッセレータは、GPUのテッセレータとは用途も仕組みも何もかもが違うんです・・・。
同じテッセレーションと呼ばれてますが、名前が同じだけで、関連する技術ではありません。
(関連くらいはあるかな・・・?思いつかないけど。)
GLUのテッセレータの目的とか使い方は、
http://glprogramming.com/red/chapter11.html
この辺を見て頂ければ分かるかと。
0942デフォルトの名無しさん
2010/10/24(日) 02:41:00テッセレーションってのは、簡単に言うとポリゴン分割
GLUで提供された用途が、根底でテッセレーション処理を行っているのに
>名前が同じだけで、関連する技術ではありません。
って、モロに表面しか理解出来てないかと…
シェーダーを使って影だしてる描画メソッドがあって
それを使うだけの人間が、そのメソッドについて
影を出すんであってシェーダーとは用途も仕組みも何もかもが違うんです・・・。
とか言い出してるようなモン
0943デフォルトの名無しさん
2010/10/24(日) 02:44:20('A`)…
0944デフォルトの名無しさん
2010/10/24(日) 02:44:21コールバック無しで作ると、汎用性が無くなっちゃいません?
別の機会でも使えるように作ると、結局コールバックとかクロージャ渡しとかまぁとにかくそんな感じの
仕組みになるような気がします。
あと、テッセレートする前に与えられた頂点を平面に投影すると思うんですけど、その平面って
どうやって決めるんでしょう。その辺の知識が無いので、もし良かったらどんな感じで作ったのか
教えてぷりぃず。
0945デフォルトの名無しさん
2010/10/24(日) 02:49:38いや、あの・・・941のURLは見て頂けました・・・???
932さんが言ってるテッセレーションてのは、そのページのPolygon Tessellationのことなのです。
GPUではまだ実装されてないし、効率良くやるのはちょっと難しいんじゃないでしょうかね・・・。
0946デフォルトの名無しさん
2010/10/24(日) 02:54:28このスレには、gluTessBeginPolygonをシェーダーで実装できるレベルの人間がいない事は分かった…
0947デフォルトの名無しさん
2010/10/24(日) 02:55:54(´A`)…。
0948デフォルトの名無しさん
2010/10/24(日) 02:58:09***さんの言ってるシェーダーてのは、そのページのノーマルマップのことなのです
って、シェーダーってのは、ノーマルマップ”だけ”するモンじゃないだろ
テッセレーションも一緒だ
テッセレーションとは、ポリゴンを再分割することで
GLUで提供してる機能を指すんじゃないだろ
0949デフォルトの名無しさん
2010/10/24(日) 03:02:12もう!どうしたらいいの!?コレ!?
0950デフォルトの名無しさん
2010/10/24(日) 03:05:34あのさ OpenGL 4.0 の機能紹介とかで余裕でデモされてるでしょ
さらに言えば、DirextX11では、普通にSDKサンプルで中級でシェーダーテッセレーションがあるし
DirectXでは始まってるが、GLもこれからプログラマブルシェーダーが全盛になれば
技術を理解せずに、自分で実装出来ないライブラリが無ければ分かりませんってレベルは淘汰される
0951デフォルトの名無しさん
2010/10/24(日) 03:08:15もともとGLUの話してるのに、勝手に最近のHWのLOD用途のテッセレーターと勘違いして何騒いでるの?
933 = 938 = 942 = 946 = 948
0952デフォルトの名無しさん
2010/10/24(日) 03:11:09これってモロgluTessBeginPolygonの説明じゃんw
gluTessBeginPolygonの処理はテッセレーション処理を行って凸面のプリミティブを作るのであって
凸面のプリミティブを作ることをテッセレーションとは言わない
0953デフォルトの名無しさん
2010/10/24(日) 03:11:41( ´A`)…
0954デフォルトの名無しさん
2010/10/24(日) 03:15:15無知もここに極まれりw
別にシェーダーのテッセレーションでgluTessBeginPolygonと同等の機能も実装出来る
テッセレーションにより、低ポリゴンモデルのエッジを分割して
輪郭を綺麗にして低ポリゴンなのを気づかれにくくする等
当然、凸面のプリミティブに分割する事も有り
テッセレートの用途ってか、理解が無いのがモロバレ
0955デフォルトの名無しさん
2010/10/24(日) 03:17:51速度とか精度とかがどんなもんか知りたいです。
0956デフォルトの名無しさん
2010/10/24(日) 03:20:19その最新のフィーチャーのテッセレーターは自己交差ポリゴンの再分割とか、複数の閉じたパスによって作られた図形から描画するべき部分の三角形の算出とかできるわけ?
理解があるならそこらへんの実装例を見せてもらいたいね。
0957デフォルトの名無しさん
2010/10/24(日) 03:22:13最新のOpenGLではシェーダーで行う方向なのに、頓珍漢な発言してるのを突っ込んでるだろw
さらに、GLUのテッセレーションだろうが、シェーダーのだろうが
テッセレーションの処理の意味は同じ
gluTess***関数のテッセレーションと、シェーダーのは違うとかw
プログラマブルシェーダーって意味わかる?
自分で組むんだよ?
gluTess***関数相当の処理だって組めるに決まってるじゃん
0958デフォルトの名無しさん
2010/10/24(日) 03:26:57ふざけるなよw
自分で判断出来ないくせに、えらそうに書き込んでたのかよwww
ちゃんと OpenGL 4.0 のシェーダーのテッセレーションを調べて
出来ないと判断してから書き込めよ
0959デフォルトの名無しさん
2010/10/24(日) 03:31:12お前プログラマブルシェーダーでなんでも完全に自由に作れると思ってるのかw
>>944
頂点群が2次元的に分布している前提で話すけど、適当な3点とってそれらを含む平面を計算→法線ベクトル算出、法線ベクトルを例えばZ軸に重ねる。
Z座標は無視して三角形だけで描画できるようなインデックスを求める→インデックスが持つ意味は元の頂点の座標でも一緒だからそれを用いて描画でいいんじゃないか?
3次元的に分布しているGLUテッセのサンプルは見たことがないな。
0960デフォルトの名無しさん
2010/10/24(日) 03:37:020961デフォルトの名無しさん
2010/10/24(日) 03:41:05( ゚д゚ )
0962デフォルトの名無しさん
2010/10/24(日) 03:43:48三点の選び方によっては精度が落ちそうなので、できるだけ外周に近い三点を選ぶとかするのかなー
とか思ったんですけど、実用的にはそこまでこだわる必要は無いってことでしょうかね。
3次元的に分布してる場合は、GLUでも平面の法線を明示してやればおっけーでしたよ。
サンプルは確かに見たことないですね。
0963デフォルトの名無しさん
2010/10/24(日) 03:56:52まぁ誤差のせいで投影時にある2頂点が一緒になってしまうとかならあると思うけど、もともとそこまで近い頂点なら片方消しても良さそうだ。
法線を精度よく求めるなら離れたところにある3頂点のセットを何サンプルかとればまず問題はないだろう。
0964デフォルトの名無しさん
2010/10/31(日) 22:10:15書いてあるサイトありますか?
C++/CLI OpenGL 勉強し始めたばかりですけど,
一緒にマスターしたいと思っています.
Win32 API, C++は結構バッチリだとおもいます
0965デフォルトの名無しさん
2010/10/31(日) 22:55:280966デフォルトの名無しさん
2010/11/01(月) 01:09:16Formアプリで作りたいんですけど
0967デフォルトの名無しさん
2010/11/01(月) 08:39:04GLControlのPaintイベント内で普通にOpenGLで描画
描画の最後にGLControlのSwapBuffesを呼び出す
これだけ
0968デフォルトの名無しさん
2010/11/01(月) 09:18:37指摘したいことがあれこれあるけどスレ違いな部分だな
0969デフォルトの名無しさん
2010/11/01(月) 12:09:450970デフォルトの名無しさん
2010/11/02(火) 00:40:33GLControlのアイコン(?)が出てこない
Visual Studio 2005です
助けてください ToT
0971デフォルトの名無しさん
2010/11/02(火) 08:43:56プロジェクトの参照設定でOpenTK.GLControl.dllを参照するば
ツールウィンドウに出てくる筈だよ。
0972デフォルトの名無しさん
2010/11/02(火) 22:13:03ありがとうございます.うまくいきました
OpenTKって日本語ドキュメント誰か書いてほしい.
0973デフォルトの名無しさん
2010/11/02(火) 23:35:13よく言った!
・・・あとは、分かってるな?
0974デフォルトの名無しさん
2010/11/02(火) 23:36:480975デフォルトの名無しさん
2010/11/02(火) 23:42:040976デフォルトの名無しさん
2010/11/03(水) 09:29:170977デフォルトの名無しさん
2010/11/03(水) 10:05:36ソースは味覚音痴御用達です
0978デフォルトの名無しさん
2010/11/03(水) 20:40:14僕は,あとは自分で調べろってことかと,
鈍くてすいません
0979デフォルトの名無しさん
2010/11/05(金) 10:55:35こんな感じのアプリを作りたいのですが
右下のメニュー用のフォームとかってどうやって作るのですかねぇ
0980デフォルトの名無しさん
2010/11/05(金) 11:29:04どうやってつくるんでちゅかね?
たいへんでちゅね〜?
おちゅかいのおーえすはなんでちゅか?うぇwww
0981デフォルトの名無しさん
2010/11/05(金) 11:30:42死ね糞
0982デフォルトの名無しさん
2010/11/05(金) 11:33:27くそもらしちゃったんでちゅか?おむつはそのままにしておきまちょうねwww
0983デフォルトの名無しさん
2010/11/05(金) 11:43:01質問するスレが違うですよ。
ttp://www.codeproject.com/KB/openGL/glenabledview.aspx が元記事ですね。
このサイトはユーザー登録するとソースをDLできます(ライセンス注意)。
ソースを覗くとGUI部分はMFCで作成されてますね。
GUIは基本的に色々な言語で実装できます。
何で作るのかは知りませんが、該当のスレで質問して下さいな。
例えば、cやc++ならwinapiで実装するならwinapiスレで。
c#ならc#スレでって感じよろしく。
まぁ、基本的にはMDIで実現できますよ。
c#ならフォームの中にフォームを表示すれば可能です。
0984デフォルトの名無しさん
2010/11/05(金) 11:48:09ありがとうございます。
フォームの中にフォームとか
MDIとか情報が少なすぎて。
レス数が950を超えています。1000を超えると書き込みができなくなります。