2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

OpenGLスレ Part14

1 :デフォルトの名無しさん:2010/01/19(火) 20:46:36
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在のバージョンは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/

2 :デフォルトの名無しさん:2010/01/19(火) 20:57:05
== 過去スレ ==
Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)

== C/C++以外から使うには ==
Rubyから    --> ruby-opengl
Pythonから   --> PyOpenGL
Javaから    --> JOGL
JavaScriptから --> ???
Haskellから  --> ???


3 :デフォルトの名無しさん: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のソフトウェア実装。どうしても実装のソースが見たい人用。
   ただしお世辞にもわかりやすいとは言えない



4 :デフォルトの名無しさん:2010/01/19(火) 21:01:27
以上です。Part13に比べてかなり勝手に変更してますがご了承ください。
テンプレは追々改良していくという事で。
Web上でもまとまったOpenGLの情報が全然無くて(床井先生の所ぐらい?)、
正直何とかならんものかと思ってます。


5 :デフォルトの名無しさん:2010/01/19(火) 21:09:42
言い出しっぺの法則というものがあってだな

6 :デフォルトの名無しさん:2010/01/19(火) 21:10:31
997でテンプレ変えて床井氏の本が必読って、
赤本読めば入門書必読ってことはないだろ。

7 :デフォルトの名無しさん:2010/01/19(火) 21:13:38
お疲れ様です。

早速質問申し訳ないのですが、OpenGL3.0以降ではセレクションモードが非推奨になっており、代替手段を探していたところOcculusion Queryを使うといいようなことが書いてありましたが、
Occulusion Queryをセレクションに使ったサンプルが見つからなかったため、どのように使用すればいいのかや、もしサンプルが載ったサイトがあれば教えて頂けると幸いです。

8 :デフォルトの名無しさん:2010/01/19(火) 21:15:12
>1乙
nvidiaとamdのサイトは外さないほうがよかったんじゃないかな。
NVのサンプルコードなんかは床井先生のとこほど切りつめてないけど、
その分クラスにまとめてあって若干ライブラリライクだから
改造してなんか作ってみるとっかかりとして丁度良いと思うし。

9 :デフォルトの名無しさん:2010/01/19(火) 21:16:32
C#でモデルデータ表示するならC#、OpenGL対応のゲームエンジン使うのが楽そう。

10 :デフォルトの名無しさん:2010/01/20(水) 16:59:27
質問です。よろしくお願いします。
ウインドウとビットマップのそれぞれのレンダリングコンテキストを
引数にwglShareListsを呼ぶと失敗します。
ウインドウとビットマップのディスプレイリストは共有することはできないんでしょうか?

11 :デフォルトの名無しさん:2010/01/20(水) 19:41:26
ぶっちゃけ、GLSLやる前にDirectXやXNAやれって思う。
大体考え方は同じだし、情報量の多い方で先に基礎的な考え方をみにつけたほうがいい。

12 :デフォルトの名無しさん:2010/01/20(水) 22:49:53
>>10
http://www.opengl.org/registry/specs/ARB/wgl_create_context.txt
read spec, grep fail.

13 :デフォルトの名無しさん:2010/01/21(木) 15:27:35
だれかこの本読んだ?
目次を見る限り入門用には良いかなと思うのですが感想教えてください。

OpenGL+GLSLによる3D‐CGアニメーション (I・O BOOKS) (単行本)
酒井 幸市 (著)


14 :デフォルトの名無しさん:2010/01/21(木) 15:59:26
glreadPixels()の使い方を教えてください。

15 :デフォルトの名無しさん:2010/01/21(木) 18:25:43

ttp://glprogramming.com/blue/ch05.html#id40261

16 :デフォルトの名無しさん:2010/01/21(木) 19:03:27
日本語でおk

17 :デフォルトの名無しさん:2010/01/21(木) 19:43:03

http://www.google.com/search?q=%67%75%67%75%72%65%6B%61%73%75

18 :デフォルトの名無しさん:2010/01/21(木) 19:50:05
助けてください、点光源がスポットライトになって180度分しか明るくならないです。

glLightfv (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度ぐらいにすると細いビーム状になります。
どうすれば点光源に戻りますか

19 :デフォルトの名無しさん:2010/01/21(木) 20:21:33
最近この手のなぞなぞは外してばっか
逆向きにもう1個180度分のライト置けばいいんじゃね

20 :18:2010/01/21(木) 20:54:06
>>19
ああ、それで解決です……んなわけあるか。
いや本当に困っています。まじ助けてください。

点光源にするには

glLightf (GL_LIGHT0, GL_SPOT_CUTOFF, 180.0f);

で良いんですよね????
なぜか半分しかライトが当たりません。
SPOT_DIRECTIONで方向も制御できるし……

21 :デフォルトの名無しさん:2010/01/21(木) 22:07:36
こんな事言うとプログラマぶるシェーダ厨乙!って言われるかもしれんが
固定機能のライティングの関数をあれこれ調べるよりvertex or fragment shaderで
ライティングの計算したほうが楽じゃね?

22 :デフォルトの名無しさん:2010/01/21(木) 22:08:47
プログラマぶるシェーダ厨乙!

23 :デフォルトの名無しさん:2010/01/21(木) 22:21:39
GLSLおいしいです(^p^)

24 :デフォルトの名無しさん:2010/01/21(木) 22:38:05
>>18
マジでで困ってるならソースアップすれば
そこだけ切りだせば小さいでしょ。
値もわからないその5行で原因はなにか聞かれてもわからんて

25 :デフォルトの名無しさん:2010/01/21(木) 22:53:00
最初に貼られた >>18 の内容って、単に色関係の定義しか無い。
ライトの種類を指定しているコードを何故最初に貼らないのか、って言うと
多分意味もわからずコピペで作ったから。

しかし今日の1時間ほど前から OpenGL を追いかけ始めたばかりの俺でも、
"OpenGL 光源種類 指定" 辺りでググったらそれっぽい情報いくつも見つかるんだが、
きっとしばらくしたら正解も見えてくるだろうと思いつつ、もうすぐ寝る



26 :デフォルトの名無しさん:2010/01/22(金) 01:26:29
>>18
つ 法線ベクトル


27 :18:2010/01/22(金) 09:05:10
出来たー \(^o^)/
2chを頼った俺が馬鹿だった。二度と聞かねーよ馬鹿
こんなクソスレ何の役にも立たない。

28 :デフォルトの名無しさん:2010/01/22(金) 14:22:54
要点も出さずに質問して他人に頼って、挙句にこの言い草
ゆとり世代の印象がまた一つ悪くなる訳ですね

29 :デフォルトの名無しさん:2010/01/22(金) 14:39:53
特定の人間がバカなのとゆとり世代は関係ないから

30 :デフォルトの名無しさん:2010/01/22(金) 23:43:51
各種ライブラリ紹介スレ2
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/

3D初心者ならいきなりOpenGLとか触らないで
↑のスレに載ってるようなライブラリをまず試したほうが良いんじゃね?
それで不満が出てきたら直接OpenGL使ったりすればいい。

31 :デフォルトの名無しさん:2010/01/23(土) 09:04:21
Unreal EngineやOrge3Dはそれだけで超重量級だからどうかな
OpenGLはサイコロ以上を表示しようとすると全部自分で書かなければならなくなるのが何とも

32 :デフォルトの名無しさん:2010/01/23(土) 09:22:10
紹介されているようなさらに上層のライブラリやフレームワークの使い方
なんて学ぶ時間があったら、むしろその時間をコアな方に割いた方がいいんじゃね?っていう
入門チュート以上の事をしようとしたら急に大変になるってのは、結局何をやっても同じ。

むしろそれぞれのライブラリにはまた別の思惑や仕様や概念がある訳で、
果たして初心者がついてこれるだろうかって言う懸念が


33 :デフォルトの名無しさん:2010/01/23(土) 11:21:56
まあでもOpenGLエキスパートになったところで仕事無いけどな!

34 :デフォルトの名無しさん:2010/01/23(土) 11:24:08
つ研究職

35 :デフォルトの名無しさん:2010/01/23(土) 14:00:27
最近OpenGLを触り始めたんですが、
グラフィックソフトみたいにサイコロを二つ重ねておいて、
減算処理等をする便利関数みたいのはありますでしょうか?
とりあえず頂点データだけで、UV等は考慮しなくても
構わないのですが。

36 :デフォルトの名無しさん:2010/01/23(土) 14:20:26
意味が全くわからないけど、たぶん無い

37 :デフォルトの名無しさん:2010/01/23(土) 14:41:03
そうですか。残念です。
四角形以上のポリゴンを三角形分割できる関数とかがあったので、
加減算できる便利関数もありそうかなと思ったのですが、
妄想過ぎました。アルゴリズムがないか探してみます。

38 :デフォルトの名無しさん:2010/01/23(土) 15:00:15
>サイコロを二つ重ねておいて、
>減算処理等をする

フラグメントシェーダ的な意味合いなのかとも思ったが、
多分エスパーすると Boolean 合成の事を言っているのでは無いかと想像


39 :デフォルトの名無しさん:2010/01/23(土) 15:25:36
用語がわからず説明不足でした。申し訳ありません。
ブーリンアン合成です。ソフトのメニューにも書いてありました。
ttp://sylphys.ddo.jp/upld2nd/pc3/src/1264227819348.png
こんな感じの処理がしたいと思っていました。

40 :デフォルトの名無しさん:2010/01/23(土) 16:05:41
>>39
ttp://www.opencsg.org/


41 :デフォルトの名無しさん:2010/01/23(土) 16:12:06
>>39 普通に考えて、OpenGL はグラフィクスハードウェアを叩く時に便利な
共通の仕様を持った、割りと低レベル寄りのライブラリ、っていう位置づけであって、

別に何でも出来る高級言語みたいな物じゃないからそういう、
何かのソフトウェアが実現するべき(=自分で実装するべき)高級な機能なんて
ある訳ないような気もする。

てか、例えば大きな四角面4枚(三角面8枚)のサイコロに対して、そこにそれより小さなサイコロを
当てて XOR しようとしたとき、頂点数は合計されるだけじゃすまないよな?
勝手に頂点数増えられても困る


42 :デフォルトの名無しさん:2010/01/23(土) 16:22:04
>>40
自分のやってることができそうです!
用語を知らないと全然見つけられませんね。
ありがとうございました!!

43 :デフォルトの名無しさん:2010/01/23(土) 16:41:05
>>41
君がOpenGLの仕様策定や技術のコントリビューターならそういう主張もいいだろう。
しかし、日常で君がやっていることといったら、OpenGLのその低レベルAPIとやらを使ったコーディングじゃないのか?
つまり君はGLの有用なライブラリを作っているわけでもコントリビュートしてるわけでもないんだから、各種ライブラリに依存しまくってコーディングしている初心者とあまり差はない。

44 :デフォルトの名無しさん:2010/01/23(土) 17:05:29
>>43 は安価ミスだろうか


45 :デフォルトの名無しさん:2010/01/23(土) 17:13:32
ただの文盲じゃねw

46 :デフォルトの名無しさん:2010/01/23(土) 17:25:57
java,dotnetだと、人様がこしらえたライブラリをちょっと使えるようになったからって「自分スゲー」って思い込んじゃう奴が多い。
ニートとかゆとりとはまた違う種族のようだ(ある意味DQNとも言う)。

47 :デフォルトの名無しさん:2010/01/23(土) 18:10:07
だがしかし全自動洗濯機が実用化されてスイッチポンで洗濯できる時代に、
超人的技能で桶と洗濯板でゴシゴシ洗濯できる人間がすごいとは思わないけどな。
確かに電気代もかからないしきれいに洗えるけど、今の時代には無駄なテクノロジーだよね。
江戸自体ならスーパースターだけど今の時代なら無能な趣味人。

48 :デフォルトの名無しさん:2010/01/23(土) 18:14:05
>>47 どういう流れでそんな話をしてるのか全然わかんないんだが
>>41 の内容は、「ソフト側の都合で変わるような高級な処理はライブラリに含まれていないよ」
って主旨の発言なだけ。 なんか勘違いしてないか?頭悪いのか?

49 :デフォルトの名無しさん:2010/01/23(土) 18:20:48
洗濯機こわれたときにどう行動するかってところじゃないの。
あと、洗濯機で洗えないものも扱えるか、扱えないか。


50 :デフォルトの名無しさん:2010/01/23(土) 18:29:49
今の時代C+POSIXのみでプログラムしてる奴もいないし、WEBアプリ程度のクライアントをGTKみたくCだけで頑張っちゃうのもバカらしいって思う人は多い。
Cのみで頑張ってアプリを作ろうとしても、javaなら1/10の時間でWEBアプリなら1/100の時間で同じアプリが作れる。
つまりライブラリとしてモジュール化してjava,rubyなどでもAPIへのアクセスを容易にすることまでがOpenGLとかCG関係者の仕事。
そうじゃないといくら仕様が良くても使ってくれないし、いくら待っても人は増えずGLアプリも増えず、結局microsoftに行ってしまうだろう。

51 :デフォルトの名無しさん:2010/01/23(土) 18:29:56
そもそも洗濯機をスイッチポンで使えるようにして提供する側だって意識ないのか。

52 :デフォルトの名無しさん:2010/01/23(土) 18:35:08
ここは洗濯機の話と独り言を言うスレのようです


そんな事より、普段GLSL書くときどこまでシェーダに任せるべきだろう。
もちろん内容によるが、例えばラスタライザ的な処理をGPU側にするか、あるいは場合によっては
CPU側でテクスチャとして起こしてしまうかで時々迷う。

53 :デフォルトの名無しさん:2010/01/23(土) 18:37:43
あ、>>52 は 「どちらでもいいけど、ライブラリ化する時の話」 ね。

Vertex Shader 上の情報が無いと激しく非効率だったり実現がしんどい場合は迷う必要ないから。

54 :デフォルトの名無しさん:2010/01/23(土) 20:40:11
>>50
Java や ruby から簡単に使えるようにしてくれー
ボク馬鹿だからC++使えないしアルゴリズムもわかんないの

って言う人が世の中には大勢いるんだよね。
確かに需要はある。

>>52
GPUに渡すデータ量が少なくなるように選ぶな、俺だったら。
GPUメモリの上限がいまだに2GBなのはなんとかならんのか。足りん。

55 :デフォルトの名無しさん:2010/01/23(土) 20:51:32
いまどき理由もなくC++(やD)を使ってるような奴はただの基地外だろうな。

56 :デフォルトの名無しさん:2010/01/23(土) 20:53:52
どうせあれだろ。
「新しいテクノロジーを勉強するのは嫌だ〜」っていつの時代にもいる頭固いオッサンなんだろう。

57 :デフォルトの名無しさん:2010/01/23(土) 21:01:29
良く知らんけどjavaやrubyからでもopenGLは使えるんじゃないの
openGLをラップしたりサポートしたりする便利ライブラリやフレームワークもあるんだし
openGLはそれらから呼ばれる描画限定ライブラリで十分

58 :デフォルトの名無しさん:2010/01/23(土) 21:25:52
いや。
そういうことじゃないと思うよ。
openGLの低レベル関数を使った高レベルライブラリでアプリ開発ユーザーのこと考えた使いやすいのは今になってもまったく出ないよねってことだと思う。

59 :デフォルトの名無しさん:2010/01/23(土) 22:48:34
もうちょっと要件を具体的にお願いします。
ぼんやりとした設計があるならばご説明願います。
実在するライブラリとの比較でも構いません。
DXのライブラリでも構いません。
洗濯機みたいな変な喩えは要りません。
痛い業界論みたいなのも要りません。

60 :デフォルトの名無しさん:2010/01/23(土) 22:52:49
つまり、材料いれてボタンを押せば料理ができる電子レンジみたいなのが欲しいってことじゃね?

61 :デフォルトの名無しさん:2010/01/23(土) 23:18:48
javaとかdotnetの世界で、ネイティブアプリの設計論とかWEBアプリのアレとかコレとかを勉強したほうがいいと思うよ。
巨大ライブラリの設計論すらもそっちの世界では既に完成されてるから。
opengl1.2のころから使ってますっていう干からびたオッちゃんじゃ石頭だから多分理解できないだろうけど。

62 :デフォルトの名無しさん:2010/01/23(土) 23:24:03
多分、普段高級言語しか使っていなくて、C/C++みたいなローな言語が理解出来ず
逃げ出したクチで、そんな中、アプリケーション寄りのお手軽便利な何でも機能みたいな物は無いよ、
というレスを どういう訳だか 曲 解 し て、自分の正当性を訴えなければ収まらない気分になり、
(自意識過剰)

ここはム板のスレなのに大上段に構えて的の外れた業界論とか語りだしちゃって、
 (技術は無いがプライドは高い、というオッサンに多い傾向)

「俺はお前よりも上の存在だ」 という空気を醸し出そうとするも、周りをポカーンとさせてしまい、
もう元には戻れず、しかし元々自己中でKYでもある為か、一人で満足行くまで
勝手に話しだし、頭の悪い長文書いても読まれずスルーされるだけなのにそれにも
気づけない低脳中学二年生が、

二度とやってこないようなスレを作るにはどうしたらいいでしょうか。 これが要件になります


63 :デフォルトの名無しさん:2010/01/23(土) 23:31:45
仮にライブラリを作ったとしても、61みたいなクズには使わせたくないな、
と本気で思う。

64 :デフォルトの名無しさん:2010/01/23(土) 23:32:17
GNUみたいに既にあるものを再実装するって言うので十分だと思うよ(大昔だと車輪の再発明は悪だとか言ったりしていた)。
例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか、少なくとも低レベルAPIをIDEのサポートもなく(それもCで)ゴニョゴニョするのはただの禿げたマゾか露出狂の変態だろうね。
別にCでシコシコできなくはないが、よく考えてみればコーディングの大半の時間は、IDEの自動ジェネレーションで十分なことにほとんど費やされていると思うよ。
よっぽどの理由がない限り、大昔のwin32apiなんかを直接使ってる人はほとんどいないだろうけどそれと同じ。
今はopenglじゃないほうをやってるからこれといった要望はないけど、開発スタイルが未だに猿の惑星レベルなのは驚いた。

65 :デフォルトの名無しさん:2010/01/23(土) 23:34:19
>>62
顔真っ赤にして何いってんの?このオッサンは(笑)

66 :デフォルトの名無しさん:2010/01/23(土) 23:34:43
みんな同じ世界にいるわけじゃないんだから、それぞれいいようにしたらいいがな
openGLが必要なら使えばいいし、いらないなら使わなきゃいいだけだろ

67 :デフォルトの名無しさん:2010/01/23(土) 23:39:47
使うとしても低レベル過ぎて使いづらいってのは、opengl関係者のやる気をまったく感じられない。

68 :デフォルトの名無しさん:2010/01/23(土) 23:40:14
結局、開発速度と実行速度のバランスや、バグがどこまで追跡できるか、あたりで決まると思う。

昔、他人のライブラリを使っていて、自分のバグかライブラリのバグか判別困難で苦労したから、
出来る限り自前で作るようにしてる。

69 :デフォルトの名無しさん:2010/01/23(土) 23:55:23
>>65
お前 >>43 だろ。文意が読めない辺りよく似ている


70 :デフォルトの名無しさん:2010/01/24(日) 00:09:10
>>64 最初の2行を読み直して、ん???と思ったんだが、なんかあれか?遠まわしに

「自分はDirectXに慣れているから、誰かOpenGLをDirectX風にしてくれ。俺の為にそうしてくれ」

って言っているように見えた。 いやむしろ …なになに風、と言うよりもっと直球に、
「ソースレベルで DirectXと相互入れ替え出来るようにしてくれ。」 と言っているかのようにも見える。

もしもそうなら、Windows限定だとでも思ってるのか、あるいはMSに言え。
またDirectXでシュガー巻いたOpenGLなんかあったとしても、そもそも意味無いだろwww と気づけ
あと、もしも趣味でなく、仕事で使う用がある環境の場合には、少なくとも自社ライブラリくらい作ったり増えたりしてるから
一から全部なんて書かないだろうし、趣味でいじる分にはそれが楽しいってだけの人もいる。
世間は広いんだぜ

71 :デフォルトの名無しさん:2010/01/24(日) 00:13:01
>64
レイヤーアーキテクチャに対する意識も低そうだな

72 :デフォルトの名無しさん:2010/01/24(日) 01:09:42
>>64
> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか
要はこれだけか。
イライラするほど内容の無い文章だな。

73 :デフォルトの名無しさん:2010/01/24(日) 03:35:56
>>69
ばれたか(笑)

74 :デフォルトの名無しさん:2010/01/24(日) 09:57:58
>>70 >72
アンカーをたどって読んでみたが、俺には
> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装する……のはただの禿げたマゾか露出狂の変態だろうね。
と読めた。
結論はD&Dとかでどうにかなるコードジェネレータくれくれと読んだ。

75 :デフォルトの名無しさん:2010/01/24(日) 10:15:35
そのコードジェネレータ程度でどうにかなるようなことを何で今の時代でもシコシコCで書かなきゃあかんのか?と読めた。

76 :デフォルトの名無しさん:2010/01/24(日) 15:34:59
複数の解釈が可能なのって釣りの典型か。

77 :デフォルトの名無しさん:2010/01/24(日) 18:27:53
パースが簡単な3Dモデルのファイルフォーマットを教えてください

78 :デフォルトの名無しさん:2010/01/24(日) 18:48:31
3DSもしくはOBJ

79 :デフォルトの名無しさん:2010/01/25(月) 14:38:19
"パース"だけならcolladaも楽だけどw
やっぱobjじゃないスか。
見りゃ分かる。自分で書ける。

80 :デフォルトの名無しさん:2010/01/25(月) 14:42:03
とりあえず、何らかのモデリングソフトで作ったモデルを
お試しで表示させてみる時の定番は Wave fron OBJ 形式な予感

※ただし俺の定番



81 :デフォルトの名無しさん:2010/01/25(月) 14:43:01
typo
Wavefront OBJ形式=OBJな

82 :デフォルトの名無しさん:2010/01/25(月) 15:46:36
objってモーションある?

83 :デフォルトの名無しさん:2010/01/25(月) 16:08:59
>>82 モデルデータだって言ってるのに、なんでモーションの話なんか出てくるんだ
ある訳無いだろ。

含まれてるのは頂点とその結合、マテリアルや法線ベクトルなどの
もっともローレベルの基礎の情報だよ
アニメーションとかそんな別立ての情報は含まれて居ない


84 :デフォルトの名無しさん:2010/01/25(月) 16:15:06
MMDとかそういう初心者向けのトイソフトから興味を持った人は勘違いしやすいんだけど、
モデルデータとモーションデータは、それぞれ話の軸が違う
かたやモデル情報は "形状の" データで、かたやモーションは時間軸での "変化の" 記録。

DirectX や COLLADA はこれらの味が違う情報を1ファイルにパックしてるが、
Wavefront OBJ はそんなパックを持っていないので、パースも楽だって話。データもASCIIだし

85 :82:2010/01/25(月) 16:19:21
ごめん(´・ω・`)

86 :デフォルトの名無しさん:2010/01/25(月) 17:54:47
いいのよ

87 :デフォルトの名無しさん:2010/01/25(月) 19:13:45
いいのかよ

88 :デフォルトの名無しさん:2010/01/25(月) 23:59:01
いいのだよ

89 :デフォルトの名無しさん:2010/01/26(火) 00:17:23
イインダヨ

90 :デフォルトの名無しさん:2010/01/26(火) 00:51:23
だみだコリャ

次いってみよう

91 :デフォルトの名無しさん:2010/01/26(火) 22:13:02
質問スレではないのですが、もしやり方がわかる人がいたらお助け願いたいですorz

球体にデクスチャを貼り付けたいのですが、どうもうまくいきません。
もしよかったら回答ソースコード添付で教えていただけるとすごく助かります><;

球体のソースコード:http://www.dotup.org/uploda/www.dotup.org595592.c.html
球体の画像データ:http://www.dotup.org/uploda/www.dotup.org596182.zip.html


92 :デフォルトの名無しさん:2010/01/26(火) 22:49:23
そのソースmainが全くないようなんだけど、実際どこまでできてるの?
どこが上手くいかないのかわからないともなんとも助けようがない。
なんでもいいから解答をソースでくれって話なら質問スレでもお断わりだろう。

93 :デフォルトの名無しさん:2010/01/26(火) 23:15:31
>>92
ご返事が送れて申し訳ないです。

現在のソースコード:http://www.dotup.org/uploda/www.dotup.org596400.c.html

どうもmyDisplay関数内のglutSolidCubeを球体glutSolidSphereに変えたら表示されなくなってしまいます。
予想では、setupTextures関数が怪しいとおもってるんですが、
setupTextures関数が理解できません・・・

94 :デフォルトの名無しさん:2010/01/26(火) 23:36:24
連投すみません。
>>92
mainはコピーミスで途中で消えていましたorz
すみません><

95 :デフォルトの名無しさん:2010/01/27(水) 00:34:57
それはねーよ

96 :デフォルトの名無しさん:2010/01/27(水) 00:43:00
違いましたかorz
どこだろう;

97 :デフォルトの名無しさん:2010/01/27(水) 01:05:04
sun_old.tgaが無いので適当に128x128 32bit/pixelの画像作って動かしたら
球にも立方体にもテクスチャ張られてたよ。

98 :デフォルトの名無しさん:2010/01/27(水) 01:17:32
sun_oldがないぞ。

99 :デフォルトの名無しさん:2010/01/27(水) 01:18:51
先を越されたorz

100 :デフォルトの名無しさん:2010/01/27(水) 04:42:54
これあれだろ?元々のソース自体、どこかにあった物を全部コピペで持ってきてて
実はC/C++ 自体全然わからなくて、でもどうしてもなんかテクスチャ貼ったキャラ動かしてみたくて
説明読んでも理解出来ないから他人にソース書いてもらいたいって、

そういう話だよね? 

101 :91:2010/01/27(水) 06:58:18
いろいろと説明不測で申し訳ないですorz

>>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

みなさんレスありがとうございます。説明不足でもうしわけなかったです。

102 :デフォルトの名無しさん:2010/01/27(水) 08:32:29
みなさん数学ライブラリって何を使ってますか?
あと、能力による話だとは思うのですが
数学関係のクラスをどこまで自力で実装してますか?

103 :デフォルトの名無しさん:2010/01/27(水) 13:51:49
中身の詰まった立方体(高さが非常に低いもの)の書き方を教えてください。

104 :デフォルトの名無しさん:2010/01/27(水) 13:52:12
>>101
97だけど結果から言うと立方体でも球体でも動いた

>>91の画像は2つ入ってるけど使うのはtitan.tga?
sun_oldじゃなくても気にするなって言うが、全部解像度が違うんだから気にする

質問プログラムはsun_oldを使い、glutSolidSphereで動かないというなら、動かないプログラムと画像をupしないと意味が無い
glutSolidCubeをglutSolidSphereに変えて動かないなら変え方が間違ってるんだろうし
glutSolidSphere(1.0, 1, 1); とかに変えてんじゃないの?

105 :デフォルトの名無しさん:2010/01/27(水) 14:34:11
>>103
中身が詰まってようが空だろうが外からは見えないから表面だけ定義すれば同じこと、
というのが面グラフィックの基本コンセプトだと思うが。
「中身が詰まった」ことでどのような違いを生みたいのか書かんと答えが出ないな。

106 :デフォルトの名無しさん:2010/01/27(水) 15:10:42
ステンシル値1の部分に描画した立方体内部に、画像処理を施したいので、面だけで構成された立方体ではなく、中身が詰まったものを描画したいのです。

107 :デフォルトの名無しさん:2010/01/27(水) 16:02:04
中身が詰まった物じゃなくて、断面が描きたいってこと?
ttp://www.sgi.com/products/software/opengl/examples/more_samples/
のsimplecapみたいな。もしそうなら
ステンシルテストのキャッピング(赤本5版日本語だと456頁)って手法かな

108 :デフォルトの名無しさん:2010/01/28(木) 00:40:36
中身が詰まってるって言えばやっぱりvoxelでしょう。
ttp://artis.imag.fr/Membres/Cyril.Crassin/
のサイトを参考にしてvoxelレンダリングに挑戦してみたら?

OpenSceneGraphのvolume rendering機能の方が簡単かもしれんが
レンダリング可能なサイズが小さいかも。

109 :デフォルトの名無しさん:2010/01/28(木) 11:03:46
glslってファイル分割できないの?

110 :デフォルトの名無しさん:2010/01/28(木) 11:14:56
できるよ

111 :デフォルトの名無しさん: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){ /*ステンシル値をチェック*/

112 :91:2010/01/28(木) 20:31:27
>>104
できました!ありがとうございます!

あと、画像2枚うpしてますが、2枚の画像を2つの球体に
別々に表示する方法がわかりません・・・
分かる方おられないでしょうか><;

113 :デフォルトの名無しさん:2010/01/28(木) 20:56:19
>>111
よくわからんけどUNSIGNED_BYTEなのにint[ ] でいいの?
あとステンシルをCPUに持ってくるって、どういうことする場合なのか興味ある

114 :デフォルトの名無しさん:2010/01/28(木) 22:55:14
113番さん、ご指摘ありがとうございます!!
UNSIGNED_INTで値が読み込めました。

なぜこのような処理をするかというと、ステンシル値1の部分で、CVの関数を使って画像処理を行い、
またGL(ARToolKit)に座標変換させるためです。

115 :デフォルトの名無しさん:2010/01/28(木) 23:08:02
読み込みをuintにするよりは配列側をbyteにしたほうがいいと思う。ステンシルは256段階だからね。

116 :デフォルトの名無しさん:2010/01/28(木) 23:52:50
いや、ステンシルが何ビットかは、ピクセルフォーマットによるでしょ・・・。
まぁ8ビットだろうけどw

117 :デフォルトの名無しさん:2010/01/29(金) 00:06:21
ステンシルが8ビットより多いのってあったっけ?

118 :デフォルトの名無しさん:2010/01/29(金) 16:55:40
実質1bitしか使ってない気がする

119 :デフォルトの名無しさん:2010/01/30(土) 06:56:05
C, C++ベースでファイル選択のダイアログやスライダ、プログレスバー程度をGLUTと同時に使える
GUIツールキットはありますか?
GLUIはすでに使用していますが、少し物足りませんでした。

120 :デフォルトの名無しさん:2010/02/02(火) 06:25:34
―― 他社がCellと同コンセプトのもので違うものをつくっても、つながれば問題ない、SCEIさんとしてはOKということですか。

久夛良木 Cellとは違う発想でコンテンツサーバとして存在できるようなアーキテクチャを、他社が開発したとして、
そのプロセッサとCellのプロセッサの中でいろんなプロトコルスタックができますから、レイヤをビシッと決めてやればつながる。
ですから、最終的には国際規格にもっていく話になると思いますよ。

―― どういうレイヤで入ってくる企業があっても問題はない?

久夛良木 最終的にはJavaということになるでしょう。
超レガシーで、携帯電話でも全部溶けてしまうような話になるかもしれない。DirectXみたいなのは最悪なんですね。

―― どこらへんがですか?

久夛良木 もともとレガシーなものを垂直にたたいたら早いというものでしょ。あれは。

―― 当たり前の話ですよね。

久夛良木 論外ですね。互換性もないし。
http://ascii.jp/elem/000/000/031/31681/index-6.html


121 :デフォルトの名無しさん: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();

122 :デフォルトの名無しさん:2010/02/04(木) 00:24:23
DrawせずglTexImage2Dを使えばいいのでは

123 :デフォルトの名無しさん:2010/02/04(木) 00:44:58
できました、ありがとうございます!
glTexImage2Dを使っちゃっても、普通に速いんですね。

124 :デフォルトの名無しさん:2010/02/04(木) 05:28:58
むしろglDrawPixelsの方が遅いよ

125 :デフォルトの名無しさん:2010/02/04(木) 22:27:51
Cn:カラーバッファ、Dn:デプスバッファ、Sn:ステンシルバッファとします。

1.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が行えるといいのですが
よろしくお願いします。

126 :デフォルトの名無しさん:2010/02/05(金) 05:40:11
A,B案ともよくわかりませんが、XORでGPU内で画像交換ってのはよくあるXOR交換のことかと
ttp://ja.wikipedia.org/wiki/XOR交換アルゴリズム
glCopyPixelsでやったことはないですが

127 :デフォルトの名無しさん:2010/02/07(日) 00:54:39
OpenGLでコントローラを使おうとしているのですが、

printf("%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();
}
ソースはこんな感じになっています。キーボード入力時のみの再描画ではなく、常に?描画するにはどうすればよいのですか?
初心者ですみません。書き込んでいて何を言ってるのかわからなくなってきました。


128 :デフォルトの名無しさん:2010/02/07(日) 01:04:22
glutPostRedisplay();
これをswitchの外に置くだけじゃないのか

129 :デフォルトの名無しさん:2010/02/07(日) 01:11:15
外に置いてみました。
ものすごい速度で再描画されています。
どうしたものでしょう、

130 :デフォルトの名無しさん:2010/02/07(日) 01:33:05
sleepしてみました。

Joystick  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 が未解決です。
とエラーが出てしまいます。これはどういう意味なのでしょうか??

131 :デフォルトの名無しさん:2010/02/07(日) 01:53:01
そのメッセージの通りだと思う

132 :デフォルトの名無しさん:2010/02/08(月) 09:13:16
取り合えずOpenGLとジョイスティックは切り離して考えたほうがいい。

133 :デフォルトの名無しさん:2010/02/08(月) 09:58:39
使ったことないけどglutJoystickFunc()でとか

134 :デフォルトの名無しさん:2010/02/08(月) 13:43:56
ゲーム以外の目的で企業がOpenGL使う場合、
glutって使われてるの?


135 :デフォルトの名無しさん:2010/02/08(月) 15:26:31
使ったほうがいいときは使ってる

136 :デフォルトの名無しさん:2010/02/08(月) 22:05:10
使うか使わないかなら、使うこともあるんじゃないの。
GLUTで勉強してればいいのかなとか心配なら、そんなこと気にする必要ない。
どんなライブラリでも使えるようになればいい。

137 :デフォルトの名無しさん:2010/02/12(金) 01:16:02
ありがとう

教授にglutやっとけば問題ないといわれたんだが、
その人がちょっと古すぎる人なので今でも通用するか不安だったんだ


138 :デフォルトの名無しさん:2010/02/12(金) 01:29:12
UIにQt使いたいんだけど、QtでもGLUT使える?

139 :デフォルトの名無しさん:2010/02/12(金) 01:54:59
QtでGLUT使う意味がわからん。普通にQtでOpenGL使えるだろ

140 :デフォルトの名無しさん:2010/02/12(金) 02:57:04
なぜ使いたいのかから説明しないといけないのか
めんどいな

141 :デフォルトの名無しさん:2010/02/12(金) 03:21:10
情弱w

142 :デフォルトの名無しさん:2010/02/12(金) 03:24:09
情強乙

143 :デフォルトの名無しさん:2010/02/12(金) 15:03:15
>>137
床井先生・・・(:ω:)

144 :デフォルトの名無しさん:2010/02/12(金) 17:35:48
GLUT使ってないシェーダの本出してください

145 :デフォルトの名無しさん:2010/02/12(金) 18:30:42
GLUTは単にWindowのラッパだからシェーダは関係ないんじゃね?

146 :デフォルトの名無しさん:2010/02/12(金) 19:52:31
俺QtでOpenGL使ってるけど快適だよ。
glutはさすがに時代遅れだろう。


147 :デフォルトの名無しさん:2010/02/12(金) 19:53:59
Glutの描画関数使っててattribute変数とか使ってなくてクソだと思う。
そもそも、gl_ModelViewMatrixとかの組み込み変数は廃止予定なんだからダメだろ。

148 :デフォルトの名無しさん:2010/02/12(金) 20:16:50
ちょっとした調査プログラムとかを超短時間で作りたいとかの場合は今でもGLUTが便利かな
glutSolidTeapot使いたいしw

149 :デフォルトの名無しさん:2010/02/12(金) 20:33:11
QGL良さげだなぁ。
でもこれだけのためにQtランタイム要求するのはちょっと。

150 :デフォルトの名無しさん:2010/02/12(金) 23:23:14
glutはglutSolidStanfordBunnyも設けるべきだったよね

151 :デフォルトの名無しさん:2010/02/12(金) 23:33:01
import wx.glcanvas でぐぐる
wxpython + pyopengl 入れるだけ pydev eclipse でも動かせる

マック環境でインスコ簡単すぎて泣ける
gttkglext 入れるの難しすぎる・・・orz

152 :デフォルトの名無しさん:2010/02/13(土) 02:30:53
漏れにとって GTK は遠い過去
現在は wxWidgets
未来は Qt

153 :デフォルトの名無しさん:2010/02/13(土) 03:10:51
こっちを向いてよハニー

154 :デフォルトの名無しさん:2010/02/13(土) 11:17:03
http://d.hatena.ne.jp/saiton/20091222/1261469449

gui ライブラリの取捨選択に正解なんてないと
思う結局何かしらの長所もあれば短所もあるし
どれが一番良いかは platform 次第の部分も大きいし・・・

いまから eclise, netbeans みたいなかんじに
普及させるとかは難しいだろうし

マルチプラットフォームは java 系統はよくできてると
思う。日本語入力とか難があるとかそういうのもあるし

ノルウェーのOpera Software ASAは11日、独自エンジンを搭載したWebブラウザー「Opera」v10.50のベータ版を公開した。
http://www.forest.impress.co.jp/docs/news/20100212_348671.html

155 :デフォルトの名無しさん:2010/02/14(日) 00:58:51
glut使用。
デフォルトでは、表示される範囲って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かけても結果は同じかもしれないけど、それをやってるサンプルを見たことがないけどなんでかなぁ。

156 :デフォルトの名無しさん:2010/02/14(日) 01:02:54
投影とモデル変換は区別しとかないと、モデル数が増えた時にこんがらがるよ。

157 :デフォルトの名無しさん:2010/02/14(日) 02:24:25
>>156
概念的な違いはあっても、表示のされ方は同じようなので、どう考えればいいのか分からんのです。

実際にものの大きさを変えたり動かしたりならモデル変換で、
見た目の上での問題で、ズームなり移動なりしてるなら投射と考えていいのかしら。

例えばGoogle mapみたいにマウスでつかんで引っ張って動かすみたいなインタフェースの場合、
あれは地図を動かしてると考えるのか、視点が変わってると考えるのかどっちなんだ?

あと、glRotateやglTranslateを投射に使うのはやめた方がいいのかなぁ?

158 :デフォルトの名無しさん:2010/02/14(日) 03:13:05
モデリングソフトだと座標の単位を設定してモデルを作る。
だからその単位に合わせたカメラを作ればいいんじゃない。
現実と同じように考えればわかりやすい。
数個の図形を表示するだけなら、好きにすればいいと思う。

159 :デフォルトの名無しさん:2010/02/14(日) 05:55:22
>>155
3。投影方法はGL_PROJECTIONへ
結果が変わらないからどっちでもいい場合もあるが、結果が変わる時に困る。
法線/ライト関係や、頂点シェーダー使う場合とか
>>157
地図(MODEL)を動かすのとカメラ(VIEW)を動かすのは、ライトがあると結果が変わってくる
どちらも投影ではないのでMODELVIEWマトリックスを弄ることになる

160 :デフォルトの名無しさん:2010/02/14(日) 12:11:48
>>158-159
ありがとうございます。

なんとなく分かったような分からないような……
MODELVIEW行列でカメラを、元データの座標系のまんま描いたときに全体像が写る位置に移動させて、
投影する範囲をPROJECTION行列で設定するのがいいっぽいですね。

拡大・縮小は、MODELVIEWのスケールをいじっても、PROJECTIONの視野の範囲をいじってもどっちでもできそうです。
できればPROJECTIONでやってしまいたい感はあるのですが、回転動作も実装しないといけないかもしれないのです。

カメラ位置固定でカメラの首を振れば対応できる範囲じゃなくて、裏側も見られるくらいに回したいのですが、それは投射じゃないのでMODELVIEWになるのですね。
そして、そういうことするなら、いっそのことMODELVIEWで固めてしまいたい感じがします。

161 :デフォルトの名無しさん:2010/02/14(日) 13:12:28
カメラの位置、カメラの向く方向、カメラの傾き(ロール)これらはVIEWマトリックスなのでMODELVIEW
拡大縮小がカメラのズームならPROJECTION

普通はGL_PROJECTIONは(glLoadIdentityしたあと)gluPerspective/(glFrustum)/glOrthoのどれか1行書くだけでいい

162 :デフォルトの名無しさん:2010/02/14(日) 17:59:16
なるほど。両方をいっしょに扱うってのはよくないのですね。

163 :デフォルトの名無しさん:2010/02/14(日) 20:28:15
>>161
>>カメラの位置、カメラの向く方向、カメラの傾き(ロール)これらはVIEWマトリックスなのでMODELVIEW

gluLookAt は PROJECTION で設定するのがいいと思うのだが、どうなんでしょう?

164 :デフォルトの名無しさん:2010/02/14(日) 20:33:14
LookAtもModelviewでいいよ。

165 :デフォルトの名無しさん:2010/02/18(木) 07:12:01
GLSLって実行時にコンパイルするしかないの?

166 :デフォルトの名無しさん:2010/02/18(木) 10:44:53
んなわきゃない

167 :デフォルトの名無しさん:2010/02/18(木) 11:34:53
GLSLは実行時コンパイルだろ

168 :デフォルトの名無しさん:2010/02/18(木) 12:12:19
んなわきゃない

169 :デフォルトの名無しさん:2010/02/18(木) 22:32:15
んなわきゃないしか言えないの?

170 :デフォルトの名無しさん:2010/02/18(木) 22:40:33
ってことは
シェーダのソースは丸見えになるということなんですね。

171 :デフォルトの名無しさん:2010/02/18(木) 23:57:21
独自に適当な暗号化でもしておけばいい。

172 :デフォルトの名無しさん:2010/02/19(金) 02:30:35
一応、Cのコード内に埋め込むことはできる。

173 :デフォルトの名無しさん:2010/02/19(金) 11:09:59
glShaderSource() が呼び出されるときにパラメータを覗けばソースを見ることができる。

174 :デフォルトの名無しさん:2010/02/20(土) 15:27:16
GLのシェーダーが実行時にコンパイルと言うのは
事前にシェーダーバイナリを使えたとしても、
それはドライバ会社のシェーダーコンパイラ依存があるからって事じゃね?
(GLって確かシェーダーバイナリの仕様まで決めてないかと)

つまり自分の環境しか意識しないのであれば、事前にシェーダーバイナリ作って
プログラムに埋め込むなり、別バイナリとしておくなりしておけば良い
(これが、言葉的に実行時コンパイルしかできない訳ない、になる?)

175 :デフォルトの名無しさん:2010/02/20(土) 20:38:22
OpenGL ES 2.0 の話だったの?

176 :デフォルトの名無しさん:2010/02/25(木) 00:27:30
glTexSumImageをUNSIGNED_SHORT_5_5_5_1でやるとやたらに遅い。
UNSIGNED_SHORT_5_6_5だとアホみたいに早いのに・・・。
透過色の処理はRGB5551, RGB565のどちらの場合でも切ってるのに、
何が効いてるんだよ

177 :デフォルトの名無しさん:2010/02/25(木) 08:16:53
internalformatを何にしてるか知らんけど、変換が遅いだけじゃない?
ドライバやグラボ依存だと思われる

178 :デフォルトの名無しさん:2010/02/26(金) 22:01:56
すみません、凄く抽象的な質問なのですが
バッファをフラッシュした際に落ちるのはどういった原因が考えられますでしょうか?
ウィンドウのサイズを変更した時、バッファをフラッシュするところで落ちてしまいます。

179 :デフォルトの名無しさん:2010/02/27(土) 10:35:52
落ちる前にglGetErrorとか使ってみたら

180 :デフォルトの名無しさん:2010/02/27(土) 12:00:15
>>179
ありがとうございます。早速今晩にでも試してみます。

181 :デフォルトの名無しさん:2010/02/28(日) 18:52:15
ES2.0の話ですが、誰か頂点属性に半精度浮動少数点を使った事ある人いますか?
(拡張でHALF_FLOATがサポートされてるのは確認)

質問があるんですけど、(通常のGLでも意味が同じならOKです)
頂点配列でVBOを作って、それで頂点属性を指定する場合、
当然頂点配列もHalfFloat部分は、16bitにしなければならないと思いますが
通常のC++では16btiの浮動少数点型は有りませんよね?

つまり、通常の単精度floatを、半精度に変換するルーチンをかませながら
float -> HalfFloat と代入しながら頂点配列を操作する感じなんですかね?

で更にシェーダー側の質問ですが、
単精度のHalfFlaotで受け取る頂点属性は何か特別な宣言がいりますか?

例えば
attribute lowp vec2 TexCoord;
とか、精度修飾子も低い指定が必須ですか?それとも無関係?

それからシェーダー内のHalfFloat属性の変数は、計算に注意点は何かありますか?

色々と細かい質問ですがよろしくお願いします。

182 :デフォルトの名無しさん:2010/02/28(日) 20:23:19
GLSLの質問はこちらでいいのでしょうか?
シェーダプログラムを複数作成するプログラムを組んでいるのですが、
現在使用しているシェーダプログラムの識別子を返すような関数はありますでしょうか?
例えば、

glUseProgram(1);

がどこかで呼ばれた後、他の場所で"1"の値を取得したいのですが・・・。
glIsProgramは識別子が分かってないとダメみたいですし・・・。
もしかすると、プログラムを複数作成してる時点でおかしいのかもしれないのですが、
どなたかご教示お願いします。

183 :デフォルトの名無しさん:2010/02/28(日) 20:35:34
>>182
考え方が逆

glCreateProgram() の戻り値がシェーダーもアタッチされてる識別子で、自分で制御しなきゃいけないでしょ

つまり

GLuint programID;

programID = glCreateProgram();

glUseProgram( programID );

てな感じで、変数(構造体なりクラスなりのメンバとか)として
今セットしてるプログラムを制御しなきゃ駄目

184 :デフォルトの名無しさん:2010/02/28(日) 20:48:21
>>183
レスありがとうございます。
シェーダプログラムの作成とシェーダを用いて行う処理を
一つのクラスにまとめてしまおうと考えています。(楽に再利用できるように)
別のクラスか何かで既にシェーダプログラムを使用していた場合、
使用中のシェーダプログラムが変わってしまうので、
上記の処理を終えた後に元のシェーダプログラムに戻しておきたいと思ったので・・・。
例)
Aクラス処理開始(ProgramID:1)

↓→Bクラス処理開始(ProgramID:2)
  ↓
↓→Bクラス処理終了(ProgramID:2)

Aクラス処理終了(ProgramID:1)

分かりにくくてすいません。

185 :デフォルトの名無しさん:2010/02/28(日) 20:57:52
>>184
普通は、描画前に自分が必要なセットをして終ったらリセットじゃないかな?

描画A
glUseProgram(ID_A);
glDraw***();
glUseProgram( 0 ); // リセット(以降に意図しない描画をさせない為)

描画B
glUseProgram(ID_B);
glDraw***();
glUseProgram( 0 );

これなら、どんな描画を呼ばれても平気じゃん
こう言う作りにしてにないのは、設計の問題な気がする
(GLの仕様にマッチしない設計)

186 :デフォルトの名無しさん:2010/02/28(日) 21:01:38
>>184
自分でglUseProgramをコールしてるんだから
今セットしている値をカレント値として取っておいて
PUSHとPOPの仕組みを作れば良いじゃん

187 :デフォルトの名無しさん: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

ちょっと仕様変える必要がありそうです。お騒がせしました。
そしてこんなにも早くレスをくださった皆様、ありがとうごさいました。

188 :デフォルトの名無しさん:2010/02/28(日) 23:30:34
>>182
つglGetIntegerv( GL_CURRENT_PROGRAM, &id );

189 :デフォルトの名無しさん:2010/03/01(月) 00:50:59
>>181
VBOでHALF_FLOAT使ったことないので他からの推測だが、C++側をfloatで用意しておけば、
あとは勝手にGL側が内部でHALF_FLOATに変換するような気がする。

190 :デフォルトの名無しさん:2010/03/01(月) 11:52:18

携帯ゲームで頂点のデータ(法線とか色とか)をcharやshortで持っているアプリを
デスクトップに移植する場合floatで置き換えてしまって良いですか。
何が何でもメモリ使用量を減らしたいからだと思うけどデスクトップなら4バイト使っても問題ないよね?



191 :デフォルトの名無しさん:2010/03/01(月) 12:43:19
好きにしたらいいと思うが、変えなくてもいいものは変えないほうがいいと思う

192 :デフォルトの名無しさん:2010/03/01(月) 13:56:00
変えないといちいちscaleとbiasをかけてfloatに変換してからGPUに送ったりしないといけないので可能なら変えたい。
ゲームとか作った経験がないのでで実際に使われる頂点数とかどの程度影響があるのかよくわからんのです。


193 :デフォルトの名無しさん:2010/03/01(月) 16:07:38
>>188
182で質問をした者です。
ありがとうございます。無事に解決できました。
GL_CURRENT_PROGRAM,こんな直球な名前の定義があったんですね・・・申し訳ありません;
おかげさまで仕様変更することなくプログラムを進めて行けそうです。
本当にありがとうございました。


194 :デフォルトの名無しさん:2010/03/03(水) 23:48:17
>>181
OpenEXRのソースコードの中にhalf floatを扱うクラスか関数があって
それ使ってfloatからhalf floatに変換してGLへ渡していたような気がする。

195 :デフォルトの名無しさん:2010/03/11(木) 15:16:03
FPS作ってんだけど(銃で撃つほう)
マウスで周りみれて移動もできるようにしたんだけど
マウス動かすから、ウィンドウ外にマウスがでちゃうんだ。
ウィンドウ外にマウスがでると、制御できなくなるんだ。
あれってGLUTの設定かもしれないんだけど
誰かわかんないかな?

196 :デフォルトの名無しさん:2010/03/11(木) 15:53:43
Windows?
画面から出さないようにしちゃうとか ClipCursor()
端っこにくっついても動くようにしたいなら、毎回マウスを画面の中央に移動させたりとか SetCursorPos()
じゃだめかな

197 :デフォルトの名無しさん:2010/03/11(木) 18:27:52
>>196
thx
windows上で動けばいいけど、glutで生成したウィンドウ関係なしなのかな
関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
WINAPIでやるべきなのかな?関係ないかな。
もうスレ違いかぬ。

198 :デフォルトの名無しさん:2010/03/11(木) 22:27:30
ゲームならglutよりはglfwとかSDLとか使った方がいいかもね

199 :デフォルトの名無しさん:2010/03/11(木) 22:48:11
>>197
>関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
どこにどの関数をどんな引数で入れたのかとかないとさすがにわからん
>>196の関数もWIN32APIだからググればきっとわかるよ

200 :デフォルトの名無しさん:2010/03/12(金) 01:14:35
OpenGL 4.0が出た件。

ペースあがってきたなOpenGL。OpenCLとの連携強化とかテッセレーターとかDX11相当色々。

201 :デフォルトの名無しさん:2010/03/12(金) 02:22:24
未だに1.3に毛が生えた程度に縛られている自分としては
あんまりペースあげられてもなー。

MesaがOpenGL 2.x相当になったかと思えばOpenGL 3.xで破壊的なことされるし
レガシーフリーで足並みそろったかと言えば全然だし。
iPhoneみたいに具体的な製品と結びついてないと標準化は名ばかり。

202 :デフォルトの名無しさん:2010/03/12(金) 09:37:08
(DirectXに比べて)アップデート遅いんじゃボケーって言われてたのがウソみたいだな。
番号が上がってるのは分かるが内実が伴ってないというか、
それで何が変わるの、実際に使われるのというと疑問がある。
いきおい勉強するきも沸いてこない

203 :デフォルトの名無しさん:2010/03/12(金) 12:33:58
OpenGL_ARBの目的としては、今回GDCで発表していることもあるし、マルチプラットフォームの強さを活かしてゲームデベロッパーにDirectXじゃなくてOpenGLを採用してもらうことがあるんじゃないかな。
個人的な意見としてもOpenGLには完全な業界標準としての位置を築いて欲しい。

204 :デフォルトの名無しさん:2010/03/12(金) 20:50:15
ゲームで今からOpenGL採用してなんかメリットあるの?

205 :デフォルトの名無しさん:2010/03/12(金) 20:52:14
プラットフォーム非依存ってのは非常に大きいだろう。

206 :デフォルトの名無しさん:2010/03/12(金) 20:55:11
しかしOpenGLだけでは一般的なフォーマットの画像やポリゴンデータを読み書きできないぞ。

207 :デフォルトの名無しさん:2010/03/12(金) 20:58:44
だけで使うバカがどこにいる?

208 :デフォルトの名無しさん:2010/03/12(金) 21:20:43
プラットフォーム非依存といってもコンテキストとか依存部分をしっかり作るのは
相当面倒くさくて、ARBとか細々としたものに対応するのも面倒くさくて、結局
もっと上位のミドルウェアを使わなきゃやってられないなぁと思った頃には、
なんでOpenGL使おうと思ってたんだっけ?とかいうことになってたり

209 :デフォルトの名無しさん:2010/03/12(金) 22:56:29
>>206
そんなの含めなくていい。
もっと勉強しろ。

210 :デフォルトの名無しさん:2010/03/12(金) 23:31:51
具体的に何を?

211 :デフォルトの名無しさん:2010/03/13(土) 06:46:58
画像読み込みライブラリなんていくらでもあるだろうが!
なんかマイナーなフォーマットでも使うのか?

212 :デフォルトの名無しさん:2010/03/13(土) 12:49:13
http://game.watch.impress.co.jp/docs/series/3dcg/20100312_354533.html
そういえばOpenGL 4.0ならXPでもSM5.0機能が使えるんだな。

213 :デフォルトの名無しさん:2010/03/13(土) 15:24:15
framebuffer objectについて質問があります。

GLSLを用いて畳込み等のフィルタ処理を行う時、
depth bufferやstencil bufferを利用しない場合は
renderbufferの関連付け(attach)はしなくても良いのでしょうか?

どなたかご教示お願いします。

214 :デフォルトの名無しさん:2010/03/13(土) 15:36:31
デプスバッファ用のレンダーバッファーなりテクスチャーなりをアタッチしておかないと描画時にエラーが出た気がするが・・・。
もしかするとデプステストしないんなら、いらなかったかもしれない。まぁ聞くより試してみるのが一番早いよ。

215 :デフォルトの名無しさん:2010/03/13(土) 15:45:34
>>214
レスありがとうございます。
試してみるしかないですか・・・。
家にATIとNvidiaと二つのビデオカードがあるんですが、
片方では動いて片方では動かなかったりすることがたまに起きるので、
公式な解答があるとそれに従った方がいいかなと思い・・・。

スレ汚し申し訳ありません。試してきます。


216 :デフォルトの名無しさん:2010/03/13(土) 15:55:52
>>215
今試した見たらいらなかったわ。しかもDepthTest有効にしてもエラー出なかったw

http://firestorage.jp/download/c3c28c3aeec2b2db09e49dfbd3b62e4094cfb6b6

↑は参考までに。C#で書いてあるのはご愛嬌。

217 :デフォルトの名無しさん:2010/03/13(土) 16:07:23
以前デプスバッファ無しのFBO作ったらエラーで弾かれた気がするから、もしかするとコンテキストのバージョンによるのかも。例えばOpenGL2.0のコンテキストならダメで3.2ならOKとかね。

218 :デフォルトの名無しさん:2010/03/13(土) 16:45:15
>>216
>>217
レスありがとうございます。
テストもしていただけたみたいで、本当にありがとうございます。
これで画像処理する時にVRAMを圧迫するような領域を確保しなくてすみます。
カードが少し古いOpenGL2.0までの対応なので、
こちらでも試してきます。色々とお世話になりました。

219 :デフォルトの名無しさん:2010/03/13(土) 17:39:28
それは、ATIとNVIDIAのドライバの違いもあるよ

NVIDIAのドライバは柔軟と言うか、GLの仕様を外れても動くイメージ
ATIのドライバは、GLの仕様に厳格と言うか、仕様に外れるとスグにハングするイメージ

よくATIのGLドライバがクソって言われてるのは、この辺だと思う

220 :デフォルトの名無しさん:2010/03/13(土) 17:43:01
動作確認も大事だけど、OpenGLの仕様書を読んで確認するのも大事だと思うよ。
このスレではOpenGL specificationを読んでる人は少数派かな?

221 :デフォルトの名無しさん:2010/03/13(土) 18:03:55
OpenGLにはもう期待してないけどWebGLには少し期待してる

222 :デフォルトの名無しさん:2010/03/13(土) 22:19:06
Windows血筋のプラットフォーム以外ではOpenGLしか選択肢がない

223 :デフォルトの名無しさん:2010/03/14(日) 11:32:44
でもWebGLってブラウザーからOpenGL ESが使えるってだけでしょ。

224 :デフォルトの名無しさん:2010/03/14(日) 12:29:31
だけと言うが、かなりでかいパイだぜ

225 :デフォルトの名無しさん:2010/03/14(日) 12:52:36
IE/MSとFlash/Adobeが非協力的らしい
また一昔のDXとGLの構図見たくなるんじゃね
一般人は、IE以外使わない気がするw

226 :デフォルトの名無しさん:2010/03/14(日) 13:47:25
>>225
でも最近はIEのシェア下がってきてるし、ヨーロッパの方ではOSインストール時にブラウザ選択画面が出たりするようになってきてるからな。

227 :デフォルトの名無しさん:2010/03/14(日) 16:56:07
要するにモデルをXMLで渡すとGLでレンダしてくれるという話か
標準を名乗るならモデルは実装非依存にしてバックエンドをDXにしてもよい形態にするだろうし、
あとはシェーダを書かせるかどうかだろうな。
silverlight陣営は標準化とか考えずにすむので先に実装を投入するだろうが、さてどうなるかな。
プロプライエタリなコードを使い、かつゲームを書くのにJSはつらかろう。


228 :デフォルトの名無しさん:2010/03/14(日) 18:26:23
意味不明?

>標準を名乗るならモデルは実装非依存にしてバックエンドをDXにしてもよい形態にするだろうし
しないからw
それはもう、Web"GL"じゃねーし

>silverlight陣営は標準化とか考えずにすむので先に実装を投入するだろうが
だから、それってMSだろ
WebGLにはのってくるわけない

どうしてMSがWebGLに興味を示さないかを理解してないんだね
そう言うユーザーのご都合主義(例えユーザーの為にそれがベストでもw)で物事は進まない


229 :デフォルトの名無しさん:2010/03/14(日) 18:45:10
>>228
で、どうしてMSは興味を示さないの?

230 :デフォルトの名無しさん:2010/03/14(日) 19:41:30
>>229
Silverlightがあるからだろ。WebGLとは随分性質の違うもののようにも思えるが、どちらもRIAを作成する上で使用されるからな。

231 :デフォルトの名無しさん:2010/03/14(日) 22:01:11
ブラウザで生のバイナリ(シェーダー)を実行とか言う発想が
OSビルダーであるMicrosoft見たらナンセンスなんだろう
世の中のスーパーハカーの人たちにとって、絶好のカモ
(今年のGDCでも問題点とはしていたらしいが…)

まあ結局、情勢見て世間に浸透するようなら
WebGLの協賛にNVIDIAとかいるしMicrosoftもWebDXみたない事をしだして
OpenGLの専売じゃなくなるんでしょ

232 :デフォルトの名無しさん:2010/03/14(日) 22:53:57
でもなー過去にVRMLとかJava3DとかWebで3Dを使う仕組みはあったけど全然普及しなかったからな。
今回ハードウェアが使えるとはいえ普及する気がしない。

233 :デフォルトの名無しさん:2010/03/14(日) 23:11:50
どうせ砂場で動けばいいんだけどシェーダだけはちょっと面倒だろうなあという感じ
しかしモデル指向ではなくプログラム指向っぽいんだよな
そもそもCanvasタグのときも、プログラム指向的だったのが謎。
SVGを操作するという簡単かつ汎用性の高い実装を目指さなかったのか疑問なくらいだ。
SVGをちょこまか拡張してXMLベースのモデルフォーマットを作ってくれれば、
OpenGL界隈の人間も喜ぶと思うんだがなあ。

234 :こども社長:2010/03/19(金) 21:03:05
OpenGLゲーム作成初心者スレ
http://pc12.2ch.net/test/read.cgi/tech/1268999608/

235 :デフォルトの名無しさん:2010/03/19(金) 21:12:11
糞スレ立てんな

236 :デフォルトの名無しさん:2010/03/20(土) 01:16:10
>ブラウザで生のバイナリ(シェーダー)を実行とか言う発想が

もうすこし軽ければな…それは sl にも flash にもいえるけど…

237 :デフォルトの名無しさん:2010/03/20(土) 19:45:04
小文字でslと書かれると、汽車が走るコマンドの方を思い出す

238 :デフォルトの名無しさん:2010/03/21(日) 15:32:38
ぽっぽー

239 :デフォルトの名無しさん:2010/03/21(日) 18:19:15
  ( ⌒ ) ポッポー
   l | /

⊂(#・∀・)
 /   ノ∪
 し―-J |l| |
         人ペシッ!!
      (_)
     )(__)(_
    ⌒)   (⌒
      ⌒Y⌒

240 :デフォルトの名無しさん:2010/03/22(月) 21:46:08
Glutで日本語文字列を描画する方法を教えてください。

241 :デフォルトの名無しさん:2010/03/22(月) 21:52:33
日本語文字列のフォントを描写したテクスチャを用意してください。

242 :デフォルトの名無しさん:2010/03/22(月) 22:07:27
それ以外でお願いします。

243 :デフォルトの名無しさん:2010/03/22(月) 22:14:04
フォントのアウトライン取得してポリゴン化。

244 :デフォルトの名無しさん:2010/03/22(月) 22:28:23
FTGLでお願いします。

245 :デフォルトの名無しさん:2010/03/23(火) 13:40:56
3Dで作ったキャラクターにまばたきをさせたいのですがOpenGLについて全くの初心者のためどうすればいいかわかりません。
「まばたき opengl」等でググったのですがそれらしいHPが見つけられませんでした。
なにか参考になりそうなサイト等あったら教えていただけませんか?

246 :デフォルトの名無しさん:2010/03/23(火) 14:03:55
OpenGLについて全くの初心者がなんでOpenGLでんなことしようと思うのさ。

247 :デフォルトの名無しさん:2010/03/23(火) 14:07:45
>>245
間の段階とばしすぎ。3Dモデル作るだけ作っていきなりOpenGLでアニメーションさせるなんて無理無理。
基礎から学べ。

248 :245:2010/03/23(火) 15:12:51
>>246
3Dでゲームを作って見たいと思い立って上のような事を考えました。

>>247
色々と段階があるのですね。
基礎と言うとまずどのような事から始めればいいのでしょうか?
openGLの入門書で大丈夫でしょうか?

249 :デフォルトの名無しさん:2010/03/23(火) 15:28:04
入門書は高いから、ネットで適当なページ見つけて、まずは固定パイプライン(固定パイプラインって言ってもわからないかもだけど)でのやりかたを学ぶ。一通り慣れたらシェーダー(GLSLとか)を触ってみる。
まぁ単なるアニメーションだけならシェーダーも要らないかもな。以下俺が参考にしたサイト。

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#で開発するのもオススメ。

250 :デフォルトの名無しさん:2010/03/23(火) 20:25:59
基礎から積上げていく方向は他の人が紹介してるからいいとして、
上から掘下げていくなら、Vertex Skinningとかmorphingあたりからいけばできんじゃないかな。

251 :デフォルトの名無しさん:2010/03/23(火) 20:31:38
スキニングというかボーン変形とかを詳しく解説してるサイトないですか?OpenGLで。


252 :デフォルトの名無しさん:2010/03/23(火) 21:18:02
>>251
OpenGLでっていうか、スキニングとかボーン(などの代替物)によって頂点が回転する固有のロジックは
そもそも数学の世界の話になるから、OpenGLだろうとDirectXだろうと手計算GDI描画だろうと同じなので、
数学方面から当たればサイトなんていくつも見つかるよ。

OpenGLって言う前提はそもそもそのやりたい事と、あんまり関係無い



253 :デフォルトの名無しさん:2010/03/23(火) 21:19:30
>>252 が伝わらないといけないので1つだけ補足しておくと、
描画系ライブラリの話じゃなくて、座標移動の計算の話だから、って事ね


254 :デフォルトの名無しさん:2010/03/24(水) 00:21:39
>>251
日本語のは知らないけど、英語サイトならDrDobbos Journalに寄稿してた人のサイトが良くできてた
URLは失念したので自力でヨロ


255 :デフォルトの名無しさん:2010/03/24(水) 01:14:57
なんというアバウトな・・・
「砂浜に宝の地図が埋まってるから探せ」的な情報だな

256 :デフォルトの名無しさん:2010/03/24(水) 01:41:57
イタリア料理店がそのジェノベーゼソースはどこで売ってますか?って聞かれたような感覚だけどな。

257 :デフォルトの名無しさん:2010/03/24(水) 15:21:44
レベルの低い質問ですいません。
glColor4fv()で色を指定するときは

GLfloat color[4] = {r, g, b, a};

の順番で良いのでしょうか?
赤本にも書いてないのですが……

258 :デフォルトの名無しさん:2010/03/24(水) 16:21:29
それでいいよ

259 :デフォルトの名無しさん:2010/03/24(水) 21:03:51
ボーン変形ってのは特定の空間にある頂点を回転させてるだけなの?

260 :デフォルトの名無しさん:2010/03/24(水) 21:11:04
回転だけとは限らない

261 :デフォルトの名無しさん:2010/03/24(水) 21:27:53
>>259
回転と移動とその他だけど、あれは単に 「有名な仕掛け」 であって、
やってる内容は頂点位置の計算だよ、と一応追記しておく。

で、OpenGL だとか DirectX (特にDirect3D) だとかは、あくまで描画処理をするライブラリであって、
一応、それに付随するベクトルとか行列の計算ルーチンは含まれてるけど、
別にボーンなんて曖昧なものはそもそも無い。
あれはあくまで、「とあるルールで計算して、頂点動かしてる」 ってだけ。

ボーンによるデフォームは各種3Dソフトでよく見るから、たまに勘違いする人いるけど、
ここはム板だからせめてその辺切り分けときたい気持ち




262 :デフォルトの名無しさん:2010/03/24(水) 21:35:56
ボーンデフォームとかのロジックやりたかったら、多分どのライブラリでも
最低限、高校数学B以上は普通に理解出来てて、その先がわからないと無理。

四元数とかの便利な道具も多分今は必須?オイラー角との変換とかも場合によってはいると思う
(ジンバルロックがあるから多分四元数使うのが普通かもしれない)


263 :デフォルトの名無しさん:2010/03/24(水) 22:57:31
gemsの4巻に載ってるから買ってきなさいよ

264 :デフォルトの名無しさん:2010/03/27(土) 16:11:51
amd.com > ブログ(英語) > Developer Blog > Mar 25, 2010
Ready, 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.

265 :デフォルトの名無しさん:2010/03/28(日) 19:30:25
まばたきぐらいだったらテクスチャでアニメーションする手もあったな。

266 :245:2010/03/29(月) 14:13:40
>>249
お礼が遅れてすみません!
忙しくて見にこれてませんでした。
サイト参考にさせてもらいます。
ご親切に教えて頂きありがとうございました!

267 :デフォルトの名無しさん:2010/03/29(月) 21:19:48
VC2005上でF5実行よりCTRL+F5実行の方が2倍近く遅くなるのはどんな原因が
あり得るでしょうか。
forループ使ってglDrawElementsを繰り返し呼んでる部分が遅いことまでは
突き止めたんですが・・・・
そのプログラムはGLSLでいろいろ処理させてて、GLSLを使わないとF5も
CTRL+F5も遅くはならないです。

268 :デフォルトの名無しさん:2010/03/29(月) 23:26:13
F5のデバッグ実行だとエラーを感知して早めに落ちる
Ctrl+F5の通常実行だとエラーに気づかずにずっと走ってしばらくしてから落ちる

とか?

269 :デフォルトの名無しさん:2010/03/29(月) 23:35:09
>>268
回答ありがとうございます。
そういうエラーを調べる方法ってあるんでしょうか?
デバッグする方法が無くて非常に困ってるんですが・・・・

270 :デフォルトの名無しさん:2010/03/29(月) 23:58:27
スタートページ開いてると遅くなるって現象だった気が・・・
何分かなり昔のことなんで違うかも、違ったらごめんね

271 :デフォルトの名無しさん:2010/03/31(水) 23:15:51
>>249
うちは.NETしか分からんからOpenTKちょっと触れたけど
まじでOpenGLは勉強し辛い、情報が英語だけだからってのもあるんだけど
本格的に使うなら自作メッシュクラス作らないといけない

272 :デフォルトの名無しさん:2010/03/31(水) 23:54:54
作ればいいだけ。
ましてや勉強するつもりならそれくらい作れるようにならないと。
本格的にやってるとこは、画像とかモデルのライブラリは
独自に持ってるからライブラリはシンプルな方がいいんだよ。

273 :デフォルトの名無しさん:2010/04/01(木) 10:40:27

そして量産された車輪の再生産がアメリカ様の統一規格に駆逐されるわけですね、分かります。

274 :デフォルトの名無しさん:2010/04/01(木) 12:44:29
一応SlimDXやXNAも触れてるけど、オリジナルメッシュ作る羽目になってしまう
XNAのModelMeshが使い勝手悪すぎる、SlimDXは良いけど
OpenGL系、XNAとか様々なライブラリとの互換考えて作ることにした

275 :デフォルトの名無しさん:2010/04/01(木) 20:55:53
>>273
いいや、ゲームなんかはモデルデータを勝手に使われたら困るから
統一規格されたフォーマットがいいとは限らない。
だからcolladaは中間フォーマットなんだよ。

276 :代行:2010/04/06(火) 22:42:04
OpenGLの初心者です
マウス位置によって視点がぐりぐり動くコードをかこうと
以下のようなコードを書いたのですがなかなかうまくいきませぬ
このコードなのですが、どうすればよいのかヒントを貰えませんか(答えならなお可 (・∀・))
(#elseのほうもダメでした)
http://codepad.org/5wvS4khb

277 :デフォルトの名無しさん:2010/04/06(火) 22:45:31
初心者なら初心者らしく勉強しろよカスが

278 :代行:2010/04/06(火) 23:17:25
そこんところを何とかお願いします。
processingでは上でやりたいコードはすぐにかけましたが
OpenGLでは何も設定しない時のgluPerspective/gluLookAtのデフォルト値は
調べてもよくわからんし
なんかこう、暗黙の前提みたいな部分が多くてよくわからんのです
上のは一応自分なりに考えて最小のコードを作ったんですけど・・

ちゃんと教えてくれるなら
今日作成したwavefrontのobjデータ読み込みクラスをうpします

279 :デフォルトの名無しさん:2010/04/06(火) 23:48:03
お前の排泄物を貰って喜ぶ変態がどこにいる? 寝言は寝て言え。

GL_MODELVIEW と GL_PROJECTION について学んでみると良い。
あと glutPostRedisplay()

280 :デフォルトの名無しさん:2010/04/07(水) 04:48:16
>>276
視点ってカメラとかプロジェクションとかの設定のこと?
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を使えるようにしてしまった

281 :代行:2010/04/07(水) 06:33:16
C言語も分からないようなら口出さないでください

282 :デフォルトの名無しさん:2010/04/07(水) 09:19:20
>>281
ちょっと煽られたからってそんな事書くなよ

283 :デフォルトの名無しさん:2010/04/09(金) 10:40:36
Bulletのライブラリが見つからない
libbulletmath.lib ってどこにあるんだYO!

284 :デフォルトの名無しさん:2010/04/09(金) 11:09:50
ビルドすればできるYO

285 :デフォルトの名無しさん:2010/04/09(金) 11:29:43
>>284
OpenGL + Bullet でテストしようとして、とりあえず Bullet2.76 落としてきて、msvc/2008 にある
BULLET_PHYSICS.sln を開いてビルドした所、そのライブラリが生まれなかったのだ
最新だと何かと統合されたんだろうか。 ググっても情報が出てこなくてハマった



286 :デフォルトの名無しさん:2010/04/09(金) 12:27:47
>>285
あら、2.75ではあったけど、2.76で変わったのかもね
デモプロジェクトとかがリンクしてるの見ればわかるかも

287 :デフォルトの名無しさん:2010/04/10(土) 03:10:34
OpenGL4.0ってまだ完成してないの?

288 :デフォルトの名無しさん:2010/04/10(土) 04:05:02
仕様自体は完成しているけど, 実装がまだないようだね。

289 :デフォルトの名無しさん:2010/04/10(土) 08:26:14
メタセコイアなどのフリーのソフトで作成した3Dモデル,
あるいはDirectXのxファイルをデータ変換してOpenGLに
読み込めるフリーのソフトがあったら教えて下さい.


290 :デフォルトの名無しさん:2010/04/10(土) 08:42:52
OpenGL4はベータドライバで良ければRadeon HD5000系で使えるぞ
ttp://support.amd.com/us/kbarticles/Pages/Catalyst-OpenGL-preview-driver.aspx

291 :デフォルトの名無しさん:2010/04/10(土) 11:40:33

>>289
「メタセコイア」「OpenGL」「ローダー」でぐぐるとこんなの出てきましたがどうでしょうか?
http://kougaku.blog28.fc2.com/blog-entry-283.html
私自身は使った事がないのですが……



292 :デフォルトの名無しさん:2010/04/10(土) 12:12:43
>>289
メタセコイアそれ自体がopenGLにデータを読み込めるフリーのソフトなんじゃないのか

293 :デフォルトの名無しさん:2010/04/10(土) 14:34:38
>>289
OpenGLってDirectXのようなMeshやTextureクラスとか無いから、
読み込むって言っても色々あってこれといった答えが無いような
頂点バッファ登録までするのか、頂点配列のデータを取得するだけなのか
いすれにしても、形状データをOpenGLなら形状データを受けるクラスや構造体とか作らないと駄目だと思うが

294 :デフォルトの名無しさん:2010/04/10(土) 15:33:10
>>291->>293

ありがとうございます.こちらでも下記のようなサイトを
さぐりあてましたが,まだ詳しく読んでいません.

http://sssiii.seesaa.net/category/4430714-1.html

また,メタセコイアではXファイルの他にもいくつかの
データファイル形式をサポートしていいるのを見た記憶
があるのでその中にOpenGLが読み込めるファイル形式が
ないか調べてみます.

295 :デフォルトの名無しさん:2010/04/10(土) 15:47:46
>>294
「OpenGLが読み込めるファイル形式」なんてものはないから!
君が今よく調べるべきはファイル形式以前にOpenGLで何が出来るかだよ

296 :デフォルトの名無しさん:2010/04/10(土) 16:02:08
ボーンについて教えてください。
仕様通りに実装すると非常に大変なので、
1頂点あたり2ボーン、ウェイトは-128〜127という制限を付けたいのですが、
そう言う仕様で問題ないでしょうか?

297 :デフォルトの名無しさん:2010/04/10(土) 16:24:03
ダメです

298 :デフォルトの名無しさん:2010/04/10(土) 17:00:58
何の仕様だよ……

299 :296:2010/04/10(土) 20:30:04
すいませんウェイトは-32768〜32767までOKでした。
1頂点当たりボーン2つというのは平気でしょうか???


300 :デフォルトの名無しさん:2010/04/10(土) 20:40:42
>>294
mqoやobjファイルを読み込むことは出来るが、基本はテキスト形式のファイルだから
頂点の座標・法線・テクスチャ座標とかを取得するには自分のプログラムでテキストデータを解析する記述をしないといけない
そういうサブルーチンやライブラリがネットにあれば落として使ってみるのも良い
うちはXファイルをコンバートしたり、Direct3D/OpenGLと互換できるファイルフォーマット作ったけどね

301 :デフォルトの名無しさん:2010/04/10(土) 21:13:52
>>299
どんなに大変でも仕様どおりに実装してください。それが仕様というものです

302 :デフォルトの名無しさん:2010/04/11(日) 00:02:42
>>295

以前はOpenGLをやってたさ。だが、3Dモデルをいちいちプログラムで
いちいち作成していられるか!という不満から多くの3Dモデリングソフト
が対応しているdirectXに乗り換えた経緯がある。

しかし、マイクロソフトが作ったDirectX、癖がありすぎて修得する
のが難しい.MFCと組み合わせたプログラムを一応、作ったがね。

物理シミュレーションソフトを作っているが、サウンド関係はいら
ないし,OpenGLが右手系対応だし,ODE(Open Dynamic Engine)も
OpenGL対応ということからやはりOpenGLを使いたい。しかし、
ネックになるのが3Dモデルをいちいちプログラムで作成しなければ
ならない点。

それで,OpenGLでも簡単に読み込めるフォーマットを出力できる
3Dモデリングソフトがないか聞いているんだ。



それを偉そうに上から目線で言うな、この32768年前のタコが、死ね!


303 :デフォルトの名無しさん:2010/04/11(日) 00:04:16
↑糞!「いちいち」がくどかった.「いちいち」は適当に削除してくれ

304 :デフォルトの名無しさん:2010/04/11(日) 00:06:09
無いです

305 :デフォルトの名無しさん:2010/04/11(日) 00:20:35
>>302
以前やってたんなら、OpenGL がどんなライブラリか知ってるんじゃないの?
DirectX における x ファイルのような、ベンダが用意した なんちゃら.opengl みたいな
専用ファイル形式なんて存在しないよ? というかそういうライブラリじゃないよ?

で、とりあえずどんなバカでもローダ書けそうな一番簡単なファイル形式っていうと・・・
wavefront の obj とか? 本当に頂点と面と簡単なマテリアルくらいしか情報無いけど、
テキストだし糞シンプル。 適当なモデラでテストモデル作って保存したファイルを眺めてみれば
他に資料なくても簡単に書けるぜ。

306 :デフォルトの名無しさん:2010/04/11(日) 00:39:34
>>302
OpenGLでも簡単に読み込めるってのが意味不明だが、>>291が書いてくれてるGLMetaseq
ttp://kougaku-navi.net/
>メタセコイアで作成したモデルデータ(*.mqo)をOpenGL上で表示するためのライブラリ
ってがそのものズバリなんじゃないのか?

307 :デフォルトの名無しさん:2010/04/11(日) 00:45:48
3〜4年前にOpenGLを勉強してて、3Dモデルをプログラムで作成
しなければならない点が面倒で、多くの3Dモデラーが対応してい
るDirectXに乗り換えたけど、OpenGLの現状は昔と変わっていない
ですね。

やはりDirectXでいきます。

308 :デフォルトの名無しさん:2010/04/11(日) 00:47:39
何年経ってもモデルの対応はしないからもう来ないでね。

309 :デフォルトの名無しさん:2010/04/11(日) 01:04:27
>>306

ありがとうございます。「やはりDirectXでいきます。」とは言った
ものの、もう少し、3DモデリングソフトとOpenGLの関係を調べて
みます。

DirectXの方がOpenGLよりも機能的に優れていますが、ころころ
仕様が変更されるのにウンザリしているので

310 :デフォルトの名無しさん:2010/04/11(日) 01:14:02
二度と来るな、気持ち悪い

311 :デフォルトの名無しさん:2010/04/11(日) 01:25:00
箸の上げ下ろしからケツを拭くまでやってくれなきゃいやだって事でしょ

312 :デフォルトの名無しさん:2010/04/11(日) 01:32:20
言い訳ばっかでほんときもいなw
できない人の典型。

313 :デフォルトの名無しさん:2010/04/11(日) 01:36:50
>>305
OpenGLってライブラリだったのか?
そりゃ名前にライブラリって入っているけどさ

314 :デフォルトの名無しさん:2010/04/11(日) 01:37:17
ttp://www.opengl.org/documentation/specs/
このページにあるOpenGLの仕様書を全部じゃなくていいから
1章と2章の前半と興味ある部分だけでも読めばこのスレに書き込まれる疑問の9割ぐらいは解決するんじゃないかと思う。

固定機能大好きっ子は3.0以前の仕様書かCompatibility Profile Specificationを読めばいいかと思う。

よくわからん数式がでてきたらReal time renderingっていう本でも読んだらいいかな。

315 :デフォルトの名無しさん:2010/04/11(日) 02:13:57
十分過疎ってるんだし、なんでも書き込んだらいいがな

316 :デフォルトの名無しさん:2010/04/11(日) 08:17:49
>>310>>311>>312

しょーもない雑魚どもが。何もわからんくせにひっこんでろ。馬鹿

317 :デフォルトの名無しさん:2010/04/11(日) 09:01:33
頭の悪いおじさんは大変ですね

318 :デフォルトの名無しさん:2010/04/11(日) 11:28:34
>>313
お前は何を言っているのだ


319 :296:2010/04/11(日) 12:39:57
すいませんそれで1頂点当たり影響を受けるボーン2つというのは
実用的にOKでしょうか?


320 :デフォルトの名無しさん:2010/04/11(日) 12:58:01
何に実用するんだよ、お前の文章からは回答者に理解してもらおうという気持ちが全く伝わってこないぞ

321 :296:2010/04/11(日) 14:52:50
うーん、言い直しても大して変わらない気がしますが。

携帯電話やWeb向けに3Dゲームorアプリを作るのに、
1頂点当たり2ボーンまでという制限は妥当でしょうか?

それ以上は実装がかなり大変になります。
デザイナーではないのでキャラクターとか作るのに、
この実装で良いのかどうかさっぱりわからんのです。
M3Gの仕様上はミニマム2つなので大丈夫です。
実用的に2つで良いのかどうか?

322 :デフォルトの名無しさん:2010/04/11(日) 15:11:17
>>321
ああ、なんか妙な違和感がある質問だと思ったら、そういうことか。

それ、質問する先違う。 ここはプログラム板のOpenGLスレであって、
CG板じゃない。 ここにいるのはお前さんと同じく、コーディングする側の人間であって、
デザイナーさんとかモデル製作者側の人間じゃない。 質問する先が違う。

中には両方してる器用な人もいるだろうけど、多分求める答えは、
「そのプログラムを利用する側の人間」 に聞かないとわからないんじゃないかな
ここにいるのは 「プログラムを作る側の人間」 だ。


323 :デフォルトの名無しさん:2010/04/11(日) 15:58:36
>>321
俺はモデリングもやってるけど、頂点辺りボーン1本でやれっていわれたらそれでやるし。
1本だとウェイトが要らないから携帯とか容量厳しい環境の事を考えると理解できる。
でも2本くらいウェイト入れれると自由度はだいぶ高くなるな。

324 :デフォルトの名無しさん:2010/04/11(日) 16:10:12
>>321
悪いが、言ってる内容が真実なら
お前のヘッポコ理屈であり、妥当も何もヘタレの言い訳にしかならない

ウエイトが2つ以上になると、
処理負荷が高くなり実用的じゃないなら2つと言う制約は妥当だが
お前が大変なだけで、その仕様にするじゃ、お前がヘタレだって事にしかならないぞ?

大変でも実用化出来るなら、2つ以上にするべき
”かなり大変”ってのもお前の尺度だろ?

世の中に、それが大変じゃない奴が実装してるアプリがあったら
お前の所為でショボくなるんだぞ?

325 :296:2010/04/11(日) 17:15:36
>>324
うーん、2ボーン以上も実装可能なのは確かです。
詳細は略ですが、ものすごくやりたくないのです。
恐らく10人中9.8人は同じ意見なはずです。
2ボーンで可能なら2ボーンまでにしたいのです。
で、2ボーンまでしか対応しないライブラリってどうよ?
って話です。


326 :デフォルトの名無しさん:2010/04/11(日) 17:26:08
>>322の二段落目を声に出して読んでみろ

327 :デフォルトの名無しさん:2010/04/11(日) 18:52:02
>>325
俺も携帯とかのメモリ帯域とか厳しい環境でシェーダー込みのライブラリとか作った事あるけど…

>恐らく10人中9.8人は同じ意見

これ、完全にお前さんのレベルでの主観だよね?


>で、2ボーンまでしか対応しないライブラリってどうよ?

世の中に、同じ環境で4ボーンとかに対応したライブラリが出てるなら
まさに、お前さんがショボイくて言い訳だらけだから、ダメダメでしょw
としか言いようが無い

そんな事を質問するより
ディレクターやデザイン担当に確認するほうが先
デザイン担当がボーン1つで良いと言えば、ダメダメライブラリでも
それで行けば良いだけ

なんかさ…、頭悪いよ…

328 :デフォルトの名無しさん:2010/04/11(日) 18:57:54
>>325
さらに言うなら、大変なのはハードの中の人
CPUやGPUやメモリコントローラーやDMAであって
プログラマはコードさえ組んでしまえば、大変でも何でもない

>それ以上は実装がかなり大変になります。

>うーん、2ボーン以上も実装可能なのは確かです。
>詳細は略ですが、ものすごくやりたくないのです。
>恐らく10人中9.8人は同じ意見なはずです。

普通によく居る、出来ないプログラマの発想丸出しなんだけど…

329 :296:2010/04/11(日) 18:58:31
>327
モデルデータは新規ではないです。
既存のモデルデータをそのまま使うので。
3つ以上ボーンを使った場合、ウェイトの大きい方から2つ使う事になります。

首から肩の辺りが心配で。

330 :デフォルトの名無しさん:2010/04/11(日) 19:02:31
>>329
2つ以上のボーンに対応出来るのに

>既存のモデルデータをそのまま使うので。
>3つ以上ボーンを使った場合、ウェイトの大きい方から2つ使う事になります。

2つ以上のボーンがるモデルを使う前提で、2ウェイト以上はカットするって事?

死んだ方が良いよw

それ違う動きになるじゃん
そともコンバーターでも作って、ウェイトを再計算でもするの?

ヘタレ全開じゃん

331 :296:2010/04/11(日) 19:25:57
この流れだとまともな意見も得られそうにないので、この辺でお開きと言う事で。
実装は1頂点辺り2ボーンで確定。

332 :デフォルトの名無しさん:2010/04/11(日) 19:30:26
お前さんのヘタレ実装を肯定するには、お前さんの出した事実が邪魔をすると思うねぇ…

・2ボーン以上の仕様には、負荷問題ではなく、大変だからやらない(出来ないではない)
・使うモデルは、2ボーン以上の仕様が分っている

これで、どうして2ボーン限定のライブラリが良いの悪いのの発想になるんだか…
仕様を満たしてないじゃんw

2ボーン以上のモデルを使うが、2ボーンしか対応しない、そのモーション挙動は変わってしまう
それをプロジェクトで承認取るのが先

発想が、仕事人としてもヘタレだと思うぞ

333 :デフォルトの名無しさん:2010/04/11(日) 19:34:41
このスレはなんでいつも殺伐としてるんだろうか

334 :デフォルトの名無しさん:2010/04/11(日) 19:37:12
余りにもレベルが低い質問をするのに、
さも自分は間違ってないと言わんばかりのスタンスの奴で溢れているからw

因みに、このスレに限った事じゃない
他の技術系スレでも、BBXとかもでも同じ

335 :デフォルトの名無しさん:2010/04/11(日) 19:57:43
結局は出来ないプログラマが自分の発想を肯定して貰いたくてグダグダ言ってたでFA?

336 :デフォルトの名無しさん:2010/04/11(日) 20:17:37
>>331
>この流れだとまともな意見も得られそうにないので、この辺でお開きと言う事で

だからおひらきも何も、最初から >>322 と言ってる訳で。頭悪すぎるよ本当に
自分が何かを間違えている、って事、ここに書かなくてもいいけど自分の中で認めな
じゃないと、ただの童貞だぞ♪

337 :デフォルトの名無しさん:2010/04/11(日) 20:29:11
んで、据え置きでは4つが妥当なの? >影響ボーン上限

338 :デフォルトの名無しさん:2010/04/11(日) 20:55:16
だから、そんな事は
プロジェクトやデザイナからの要求仕様と、実機での再生負荷等とで話し合いで決めればいい事

デザイナが2つも良いと言えば2つが妥当
デザイナが4つと言ってが、自分の2つという意見を妥当としたいなら、
その根拠や比べるデータを提示させてデザイナを納得させる

という、単にプログラム以前の社会人としての行動の問題

339 :デフォルトの名無しさん:2010/04/11(日) 20:58:18
しかし、使うモデルデータに2つ以上のボーンがある仕様なのに
プロジェクトやデザイナに聞くわけでもなく、他人に2ボーンまでのライブラリが妥当ですか?
とか質問するような頓珍漢は別の問題だねw

340 :デフォルトの名無しさん:2010/04/11(日) 21:02:14
>>329には本当にびっくりしました。

341 :デフォルトの名無しさん:2010/04/12(月) 01:02:15
ここで仕様切る側のセクションリーダーの登場!

「2ボーンのときとそれ以外の時の
メリット、デメリットをリスト化して持ってきなさい。」

仕様をどっちかに決めるのは
プログラマの仕事じゃないでござる。


342 :デフォルトの名無しさん:2010/04/12(月) 01:39:54
4.0で盛り上がってるのかと思ったら基地外が騒いでるだけだったでござる

343 :デフォルトの名無しさん:2010/04/12(月) 07:34:57

>>341は仕様を決める権限を持たない雑魚

344 :デフォルトの名無しさん:2010/04/12(月) 12:00:38
いつかでてたClutterってどうなの?

345 :デフォルトの名無しさん:2010/04/12(月) 15:28:46
大変なのは計算資源なのかデータ管理なのかコーディング量なのか、どれだったんだろ?

346 :デフォルトの名無しさん:2010/04/12(月) 18:29:50
可変長にすればいいだけ
こんな事で揉めるなよ

347 :デフォルトの名無しさん:2010/04/12(月) 22:33:29
>>344
Clutterかっこいいよね
でも、Clutterをメインで使ってたmoblinはノキアのMeamoと統合して
MeeGo見たいな新しいのになり、GUIライブラリはQtになるみたいだから、
どちらかと言ったら衰退していくんじゃね?

ここまでくるとスレちだな

348 :デフォルトの名無しさん:2010/04/14(水) 21:25:01
自作スキンメッシュプログラムについて相談があります。
こっち↓に書いたのですが1年以上前のスレで誰も見てない可能性が高いので。
http://pc11.2ch.net/test/read.cgi/gamedev/1109472943/89n-
関節部分がきれいに表示されないのでお願いします。

349 :デフォルトの名無しさん:2010/04/15(木) 01:04:40
スキニング専用スレとかゲ制作板は細分化しすぎだろw
曲がり方はウェイトの設定が滑らかでないように見えるけど、
もっと情報がないと適当な解答しか帰ってこないと思うよ

350 :348:2010/04/15(木) 09:17:30
実装上ウェイトは頂点毎には設定できないです。
画像は関節部分が上下のボーンに0.5づつ線形補間。
詳しい情報はソース見ます?

351 :デフォルトの名無しさん:2010/04/15(木) 13:37:23
関節部分がウェイト0.5で固定ならそんなもんだと思うよ。
たぶんバグではない。

352 :デフォルトの名無しさん:2010/04/20(火) 03:01:52
nvもgl4対応ドライバ出してたか

353 :デフォルトの名無しさん:2010/04/21(水) 18:02:28
ttp://developer.nvidia.com/object/opengl_driver.html

> 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 が外されている件について

354 :デフォルトの名無しさん:2010/04/21(水) 22:53:00
OpenGLでマルチテクスチャーを使うときに
比較的最近のGPUだと何枚まで使えますか?
※ シェーダーは使わずで固定パイプラインだけでいいです


355 :デフォルトの名無しさん:2010/04/21(水) 23:13:26
GL.GetInteger(GetPName.MaxTextureUnits, out num);
で取得したら8600M GTは4と出た。
ちなみに
GL.GetInteger(GetPName.MaxTextureImageUnits, out num);
だと32。

4は無いと思うけど32枚もいけるのなぁ。まぁそもそも32枚も使わないけどw


356 :デフォルトの名無しさん:2010/04/22(木) 00:24:00
昔のテンプレにその手の情報が大量にあるサイトが有ったな
まあ更新停止してた気がするから最近のはないだろうけど

357 :デフォルトの名無しさん:2010/04/23(金) 00:45:49
GTX 280 だと、
glGetIntegerv( GL_MAX_TEXTURE_UNITS, );
が4
glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_NV, );
が32
でした。

358 :デフォルトの名無しさん:2010/04/24(土) 13:53:14
こちらに書くべきか迷ったのですがOpenGLを用いることが前提なので、
質問をさせてください。

OpenGLを用いて3Dゲームを作成する場合、みなさんは3D描画以外の部分、
例えば音楽再生やコントローラの入力等は何を用いているのでしょうか?

現在はSDLを使おうと考えているのですが、もし他に有用なライブラリが
あればご教示ください。宜しくお願いします。

359 :デフォルトの名無しさん:2010/04/24(土) 14:02:22
ググればいっぱい見つかるじゃん

360 :デフォルトの名無しさん:2010/04/26(月) 09:06:50
winmm.lib

361 :デフォルトの名無しさん:2010/04/26(月) 17:44:03
ラッピングして適当なの使う。

362 :デフォルトの名無しさん:2010/04/27(火) 12:05:34
gluLookAtを続けて二回呼んだ時の動作がいまいちわからんのですが
例えば、
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 );
オブジェクトが見えなくなる。


363 :デフォルトの名無しさん:2010/04/27(火) 12:13:41
>>362
http://msdn.microsoft.com/en-us/library/dd368663(VS.85).aspx
http://www.opengl.org/wiki/GluLookAt_code
ここらへんのページにヒントが書いてるよ。

364 :デフォルトの名無しさん:2010/04/27(火) 12:22:27
idenしないでマルチするとそりゃそうなる。

365 :デフォルトの名無しさん:2010/04/27(火) 12:32:28
>>363
>>364
なんとなくわかった気がします。
ありがとうございました。

366 :デフォルトの名無しさん:2010/04/27(火) 13:36:08
void Reshape( int width, int height ){

glViewport( 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の関係でしょうか?

367 :デフォルトの名無しさん:2010/04/27(火) 13:55:23
背面カリングがONになってるんじゃ?
どこかで glEnable (GL_CULL_FACE) してませんか?
あるいはモデルの描画直前で glDisable (GL_CULL_FACE) すると表示されませんか?


368 :デフォルトの名無しさん:2010/04/27(火) 14:07:56
>>367
ありがとうございます!解決しました!

369 :デフォルトの名無しさん:2010/04/28(水) 02:54:11
OpenGL.org経由で
Lua as an Effect File Format for OpenGL
ttp://prideout.net/blog/?p=1
ていうのを見つけたんだが、これはよさそうなので今度試して見ようと思う。

ちょっとしたシェーダとかを開発するときに
FXComposerだとglsl使えないしFeedback transformとかrender to vertex bufferとか使えないようだけど
Luaならプログラム側の関数を呼べるからいろいろできそう。

こういうのを試した事がある人いる?
Luaの代わりにpython使うのはどうだろうか。

370 :デフォルトの名無しさん:2010/04/29(木) 02:46:32
ちょいと気になる一品だな。

371 :デフォルトの名無しさん:2010/04/29(木) 11:34:21
思わず欲しくなる一品だな。

372 :デフォルトの名無しさん:2010/04/29(木) 22:53:50
GLSL書くときはAMD RenderMonkey使ってる

373 :デフォルトの名無しさん:2010/04/29(木) 22:57:18
あれOpenGL2.1、つまりGLSL1.2くらいまでしか対応してなくないか。

374 :デフォルトの名無しさん:2010/04/30(金) 01:07:47
4.0はいつ出るのさ?

375 :デフォルトの名無しさん:2010/04/30(金) 01:13:03
くそむかつくガキだなw

376 :デフォルトの名無しさん:2010/04/30(金) 01:16:00
>>374
もう出てる。というかOpenGLはGPUメーカーがドライバーに含めてリリースするから4.0対応ドライバーが出た時点。
nVIDIAも最近4.0対応ドライバー出したね。

377 :デフォルトの名無しさん:2010/04/30(金) 01:26:23
   /     _     \
  /     (※)     |
  |       ̄       |
  ヽ  /_____ヽ  /
   ヽ_|0l二二二二l0|_ノ
     |vヽ___ノv|
   (d| ・=ゝ ・=ゝ|b)    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   Z/   ( _ )   ヽフ  <   死刑!!
   / @      @ ヽ   \________
   (ー――〜〜 ―――)
   \ ______/
  てヽ_/   lo//
   /(  て二/l__
  (┃ ⌒ 二 )_O―┴┐
   |┐ー┤ | |\O O|
   |   |_n_)┘  ̄ ̄

378 :デフォルトの名無しさん:2010/05/01(土) 02:16:08
3.3はテッセレーション無し?

379 :デフォルトの名無しさん:2010/05/01(土) 13:20:24
テッセレーションはハードウェアサポートがいるから3.3では無理だろうな。

380 :デフォルトの名無しさん:2010/05/02(日) 09:46:08
d3d10以降がXP非対応等の問題で普及してない今、GL3以降の日本語解説本の需要が地味にあるとおもうんだけど誰か書いてくれないかな

381 :デフォルトの名無しさん:2010/05/02(日) 09:58:15
DX9で不十分な層って相当限られるんじゃないの…

382 :デフォルトの名無しさん:2010/05/02(日) 10:02:53
DX9で何が不十分なんだろう
カタログ上の文言じゃなくて、実際に自分で何を作りたくて、具体的に何が不十分なんだ



383 :デフォルトの名無しさん:2010/05/02(日) 11:13:07
ジオメトリシェーダとか、ハルシェーダなんかが使えないところ。


384 :デフォルトの名無しさん:2010/05/02(日) 11:25:51
>>383
だからそれはカタログ上の文言・・・ というか、DX10以降で採用された物であって、
実際に何を作ろうとして、具体的に何が不十分なんだ?って話。

ジオメトリシェーダとハルシェーダを使いたい 場合には不十分だろうけど、それは何かをしたい時の手段だろって話

385 :デフォルトの名無しさん:2010/05/02(日) 11:39:13
狼男が主人公のゲームをつくりたいんだよ。
月を見た男の身体がリアルにモーフィングするゲームを作りたいんだよ。
毛をうじゃうじゃ生やしたいんだよ。臨場感を出したいんだよ。
だから、ジオメトリシェーダは必須なんだよ、文句あっか、ハゲ!

386 :デフォルトの名無しさん:2010/05/02(日) 11:40:28
学習用に不十分

387 :デフォルトの名無しさん:2010/05/02(日) 11:45:15
>>385
他の手段でやれよ

>>386
なんの学習?

388 :デフォルトの名無しさん:2010/05/02(日) 11:51:14
機能より使う手間と実績のが選ぶ理由としてでかいと思うけど
リファレンスは有料・サンプルが英語ばかりじゃさすがに比較対象にならん
本書くなら今ならスマートフォンとかいいんじゃないの。Androidの本にさわりだけ載ってた。

389 :デフォルトの名無しさん:2010/05/02(日) 12:06:38
>>387
他の手段って、例えばどんな?
速度も質も損なわずにだぞ。

390 :デフォルトの名無しさん:2010/05/02(日) 12:20:45
>>389
月を見た男の身体から毛をうじゃうじゃ生えてくるリアルなモーフィング、
で、速度も質も損なわずに、としか書いてないから
どうとでも他の手段や方法で表現出来るだろ?って話

そしてジオメトリシェーダじゃないと絶対に絶対に絶対に不可能だと言うなら、それ使えばいいじゃない

>ジオメトリシェーダとハルシェーダを使いたい 場合には不十分だろうけど

と書いたのは、それが絶対に他の手段では(色んな意味で)不可能で、本当に必須ならば
DX9 では不十分だけどって話だ


391 :デフォルトの名無しさん:2010/05/02(日) 12:28:07
じゃぁDX5でもいいじゃん


392 :デフォルトの名無しさん:2010/05/02(日) 12:40:12
別に実装の必要とか無くとも技術者的な好奇心で最新機能を触りたいってのは普通にあるじゃん
そんなに必死になって否定する必要もないだろ

393 :デフォルトの名無しさん:2010/05/02(日) 12:47:50
>>392
別に否定なんてしてないじゃん

394 :デフォルトの名無しさん:2010/05/02(日) 15:12:26
レスする必要が無いと言いたいのだろう。

395 :デフォルトの名無しさん:2010/05/02(日) 15:28:14
いつからDirectXスレになった?

396 :デフォルトの名無しさん:2010/05/02(日) 16:23:22
OpenGLスレなら
GL_ARB_geometry_shader4だとか
GL_ARB_draw_instancedだとか
GL_ARB_texture_buffer_objectだとか
そういうOpenGL用語を使って議論すべきじゃね?
Direct3D9の代わりにOpenGL2.x
Direct3D10の代わりにOpenGL3.x
と言えばええんでない?


397 :デフォルトの名無しさん:2010/05/07(金) 21:20:17
マウスでクリックした位置から
パーティクルを発生させるような、サンプルご存知ないですか?

openglでのマウスイベント系の情報が少なくて…参考にしたく

398 :デフォルトの名無しさん:2010/05/07(金) 21:25:23
OpenGLと何の関係がある?

399 :デフォルトの名無しさん:2010/05/07(金) 21:32:34
猿でも分かるSDL使えよ

400 :デフォルトの名無しさん:2010/05/07(金) 21:34:50
多分やりたい事の絵だけが頭にあって、それが実際にはどういうもので、どういう事で、
目の前のテクノロジやライブラリはどこまでの何なのかが整理も出来ていない状態に見える。
OpenGLって グラフィクス・ライブラリだって知ってるんだろうか。

あと、関連ライブラリに GLUTとかあるのは知ってるんだろうか。 ※ここまでがマウスイベントの話

あと、パーティクルって具体的にどういう作業で実現する物か知ってるんだろうか




401 :デフォルトの名無しさん:2010/05/07(金) 21:36:35
やりたい事の絵だけが頭にある状態で、それの丸ごと書かれたサンプルが欲しいって言う奴は
大抵コピペで済ませようとしてるだけなので、多分意味なんてわかってない


402 :デフォルトの名無しさん:2010/05/08(土) 00:14:15
まぁはじめはみんなそんなもんさ。

>>397
マウスだけ、
パーティクルだけ、ならいくらでも
サンプル転がっているよ。

そこからは自習の時間だ!

403 :デフォルトの名無しさん:2010/05/08(土) 06:36:53
視界の表現で、「重なりあう可能性のある」複数のポリゴンが必要な領域を加算合成かなにかで
「均一に」明るくしようとしたらどういう方法があるかな?

イメージとしては舞台をスポットライト2個で照らすんだけど、
1個だけが照らしてる部分も2個重なってる部分も同じ明るさにしたい感じ。

404 :デフォルトの名無しさん:2010/05/08(土) 07:07:56
>>403
ステンシルバッファにスポットライトのイメージ焼くんじゃダメなの?


405 :デフォルトの名無しさん:2010/05/08(土) 07:31:57
>>404
そうか、ステンシルバッファってこういう時に使うんだね。使ったことなかったよ。
使ってみる。サンキュー。

406 :デフォルトの名無しさん:2010/05/16(日) 22:29:43
どなたかUbuntuでOpenGL使っている方はいますでしょうか

パッケージを入れたはいいのですが
サンプルを動かした所

本来赤から青へのグラデーションパターンが生成されるはずが
黄緑から赤へのグラデーションパターンが生成されてしまいます。
更にウインドウも生成されません。

解決方法を教えていただけないでしょうか?
バージョンは9.04で
入れたパッケージは
freeglut3 freeglut3-dbg freeglut3-dev
libglut3-dev libglew1.5-dev libgtkglext1-dev
です

407 :デフォルトの名無しさん:2010/05/17(月) 00:40:21
なんのサンプルだよ

408 :デフォルトの名無しさん:2010/05/17(月) 08:50:47
>>406
俺はUbuntu9.04でも10.04でもOpenGLを使っている。
で、その情報だけではまったくわからないのでプログラムをどこかにアップしてくれ。
もしくは自分のやったことを正確に一般に使われる用語で説明してくれ。


409 :デフォルトの名無しさん:2010/05/18(火) 15:33:44
http://www.opengl.org/resources/libraries/glut/glut_downloads.php#windows
のページのGLUTをつかいたいのですが、どれをダウンロードしたらいいかわかりません。
教えてください。

410 :デフォルトの名無しさん:2010/05/18(火) 15:42:02
そんなの知るかよwww
OSすら書かないアホに付ける薬の方が先だ。



411 :デフォルトの名無しさん:2010/05/18(火) 15:44:22
すみません、OSはwindows vistaです。
urlにwindowsが入っているのでわかると思い込んでしまいました。

412 :デフォルトの名無しさん:2010/05/18(火) 15:51:29
GLUT for WindowsってとこにリンクしてあるNate Robinsのページに3.7.6がある

413 :デフォルトの名無しさん:2010/05/18(火) 15:54:54
imageってついているのが使う奴ですか?

414 :デフォルトの名無しさん:2010/05/18(火) 15:57:39
>>412
みつけました。
ありがとうございました。

415 :デフォルトの名無しさん:2010/05/18(火) 16:44:23
freeglutの方が良くないか?
windowsは知らんがLinuxだとこちらの方が主流。
http://freeglut.sourceforge.net/


416 :デフォルトの名無しさん:2010/05/18(火) 17:13:04
迷うから誰か詳しい人どっちをつかったらいいか教えてください。

417 :デフォルトの名無しさん:2010/05/18(火) 17:25:14
glutが使いたくて質問して答えを得たならglutを使えばいいんじゃないのか?

418 :デフォルトの名無しさん:2010/05/18(火) 17:25:59
そうします。

419 :406:2010/05/19(水) 00:40:25
>>407>>408
すいません。
サンプルをまず上げるべきでした。

サンプルはこれです。
ttp://www1.axfc.net/uploader/File/so/43947

420 :デフォルトの名無しさん:2010/05/19(水) 02:03:34
>>419
setcolorってのがなんだかわからんけど、普通RGB順だろうから赤から緑のグラデーションで合ってるんじゃ?
赤青にしたいなら0.0を2番目にしてみたらー
つか学校の授業のサンプル?ずいぶん荒っぽいなぁ

421 :デフォルトの名無しさん:2010/05/19(水) 08:45:47
>>419 森先生の所の宿題なら、このページの「2-9:実験2-3:カラーグラデーション」をそのままコピれば終わりじゃないか。
http://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)



422 :デフォルトの名無しさん:2010/05/19(水) 08:48:03
ごめん提出者の名前だった。×森

423 :デフォルトの名無しさん:2010/05/19(水) 14:43:54
木を見て森を見ずまさにこのことだな

424 :406:2010/05/19(水) 22:04:24
>>420
弄ってみたらどうやらサンプルが間違えているようです。
ですがなぜか赤から青へのパターンが生成できませんでした。
青から緑は出来たのですが。

ウインドウの方も生成されませんし。

>>421
その課題じゃありません。
しかも試しに動かしてみたらエラーでました・・・


425 :デフォルトの名無しさん:2010/05/19(水) 22:13:40
>>424 お前の感想はどうでもいい。
まず
1. 画面全部をR1色で塗りつぶす
2. 画面全部をG1色で塗りつぶす
3. 画面全部をB1色で塗りつぶす
をやってみ。お前はまず基本的な所がまったくわかっていない。
だから他人にも説明できない。
ウィンドウが生成されないならお前はどうやって色を確認してるんだ。



426 :デフォルトの名無しさん:2010/05/19(水) 22:33:06
>>424
ウィンドウの生成ができないのに赤から青はどこに出てるんだよw
あとなんでどこをどう変えたら青から緑になったとか書かないの?
こと細かく書けば物好きが答えてくれるのにw
(setcolorとかincmc.hとかいう中にあんだろうけど、それがわかんないとなんともだろうが)

つか課題なら講師に聞けばいいじゃん。授業料払ってんでしょ?

427 :406:2010/05/19(水) 22:39:35
>>425
setcolor(x/2, 0.0, 0.0);で黒から赤
setcolor(0.0, x/2, 0.0);で黒から青
setcolor(0.0, 0.0, x/2);で黒
でした。

ウインドウが生成されないでプログラムが動いてるって意味です。
外観の設定で視聴効果を切ればウインドウが生成されます。
パッケージが何かしら足りてないのでしょうか

428 :406:2010/05/19(水) 22:46:17
>>426
勉強ですがとりわけ何かの課題ってわけじゃないです。

そもそもプログラム自体の質問がしたかったわけではなく
正常に動作しないのはUbuntuに問題があるのではないかと
(パッケージが足りない等で)考えたんですが、
Ubuntuのスレで聞いたら、プログラム板行けって言われたんで
こっちで質問したわけです。

429 :デフォルトの名無しさん:2010/05/19(水) 22:46:47
俺OpenGL知らないUbun厨。>>419のサンプルがDLできないよ。

430 :425:2010/05/19(水) 22:51:18
>>427
お前は何も分かっていない。他人に聞かれていることをことごとく外している。
いいからグラデーションとか考えないで画面全体を1色で塗りつぶしてみろ。
お前以外の人間はsetcolor(r,g,b)、引数は(0-255 or 0-1)だと推測しているが、
お前の説明はそれと矛盾する。通常のOpenGLではお前の言う通りには「絶対に」ならない。
一番考えられるのはお前の説明が間違えている。
お前の説明は意味不明だからソースを出せといわれている。

だからウィンドウが生成されないならお前はどうやって色を確認しているのか。





431 :デフォルトの名無しさん:2010/05/19(水) 22:52:52
>>428
426だけど
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 に変えてみたらどうだろうか

432 :406:2010/05/19(水) 23:09:42
>>429
すいません。
もう消しちゃいました。

>>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にしてみたらちゃんとグラデーション出来ました。

433 :デフォルトの名無しさん:2010/05/19(水) 23:19:18
解決してないのになぜ消した
もう知らん

434 :425:2010/05/19(水) 23:29:46
>>432
何で0にして「ちゃんとグラデーション出来ました」と言うのだお前は。
0なら黒だろ。
いいからまず画面全体を1色で塗りつぶせ。
r,g,bの3回やれば全部推定できるから。
お前の説明は何をやったら何が起きたのか、さっぱりわからん。


435 :デフォルトの名無しさん:2010/05/19(水) 23:42:04
406氏の中では枠のないウインドウはウインドウではないということはわかった。
こりゃエスパーも大変だな。

436 :406:2010/05/19(水) 23:49:44
>>434
3回塗りつぶししましたけど
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
枠をウインドウって呼ぶもんだと勝手に思い込んでました。

437 :425:2010/05/19(水) 23:49:53
>>431 が正解っぽい。昔のその書き方だと型チェックをしないみたい(知らんかった……)
#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の値は毎回違う。

438 :425:2010/05/19(水) 23:57:18
念のため。
setcolor (0.0, 0.0, 0.0);
のときは
r = 0.003922
g = 4240451.482353
b = 4240451.545098

原因がこれだとしてもきれいなグラデーションにはならないと思うのだが……
まあいいや、俺もこれ以上は知らん。


439 :デフォルトの名無しさん:2010/05/22(土) 02:11:33
質問です。

頂点法線をスムース化したいのですが
高速な方法(GLでの)・アルゴリズムというのはあったりするのでしょうか?

基本的なやり方だと頂点を共有する面法線を調べて
平均化して頂点法線とする、という方法だと思います。

ただあまりにも計算量が多いと思うのですが
これしかやり方は無いのでしょうか?

よろしくお願いします。

440 :デフォルトの名無しさん:2010/05/22(土) 02:27:02
計算量が多いって、頂点数10^10とかか?

441 :デフォルトの名無しさん:2010/05/22(土) 02:32:59
速度は知らんが綺麗な平均化方法ならどこかにっと、これか
ttp://ci.nii.ac.jp/naid/110002867404/
とりあえずメモとして貼り付け

442 :デフォルトの名無しさん:2010/05/22(土) 02:33:16
10^8ぐらいですね。

ただマイフレ動的に生成したいので
そこの部分がひっかかるのです。


443 :デフォルトの名無しさん:2010/05/22(土) 02:43:05
>>441
有り難うございます。

ざっと目を通してみましたが
球面に近似することで正確な法線がとれる理由がイマイチ理解が追いつきませんw
まだ実装はしていないので速度の点は何とも言えませんが
凸面形状に限っての論文のようで
不定形モデルである自分の場合では上手く使えないかも知れません。
とりあえず簡単に試してみようかと思います。



>>442
自己レス
10^7ですね。
8は限界テスト中にで出そうとしたデータでした。
メモリ消費が半端ない。

444 :デフォルトの名無しさん:2010/05/22(土) 14:00:32
1000万頂点で毎フレーム動的計算って、
最終的にはどれくらいの速度を目指してるの?

445 :デフォルトの名無しさん:2010/05/22(土) 14:15:35
最低でも300fpsは欲しいですね。

446 :デフォルトの名無しさん:2010/05/22(土) 15:04:13
そうですか..

447 :439:2010/05/22(土) 15:29:32
439です。445は偽物です。

>>444
15fぐらいなら現実的かな、と思っています。

448 :デフォルトの名無しさん:2010/05/24(月) 12:48:16
OpenGLに使う幾何学って何幾何学っていうんですか?

449 :デフォルトの名無しさん:2010/05/24(月) 13:05:36
ジオメトリ・シェーダー?

450 :デフォルトの名無しさん:2010/05/24(月) 13:44:48
いいえ、位相幾何学とかユークリッド幾何学とか代数幾何学とか色々あるじゃないですか?
そのなかのどれなのかなあと思ってます。

451 :デフォルトの名無しさん:2010/05/24(月) 13:51:14
計算機科学。

452 :デフォルトの名無しさん:2010/05/24(月) 13:51:34
計算幾何学。

453 :デフォルトの名無しさん:2010/05/24(月) 13:57:02
計算幾何学。

454 :デフォルトの名無しさん:2010/05/24(月) 14:02:01
ふざけないで真面目に教えてください。
よろしくお願いします。本当に困ってます。

455 :デフォルトの名無しさん:2010/05/24(月) 14:34:29
おっちんちんびろーん^^

456 :デフォルトの名無しさん:2010/05/24(月) 16:10:59
>>450
ユークリッド幾何学
射影幾何学
微分幾何学
解析幾何学
計算幾何学
これくらい押さえておけばOK

457 :デフォルトの名無しさん:2010/05/24(月) 16:18:53
そうでしたか、微分幾何学しかよくわからないので。
とりあえず解析幾何学を勉強しようと思います。
ユークリッド幾何学はその次に勉強します。
有難うございました。

458 :デフォルトの名無しさん:2010/05/24(月) 16:28:04
てか、単純に OpenGLで使う幾何学とか言われても
何やりたいのかで変わるんじゃね。じゃなかったらざっくり >>456 みたいな返事しか出来ないんじゃね
OpenGLはただのグラフィクスライブラリで、それ使って何をやるかなんて
自分が何やるか次第っていう基本、ド基礎はどこいった


459 :デフォルトの名無しさん:2010/05/24(月) 16:33:38
OpenGLのライブラリーの中で使われている幾何が何かと言うことです。
OpenGLを作るために必要な幾何学といいうことでもあります。

460 :デフォルトの名無しさん:2010/05/24(月) 16:38:40
日本語読めないのかおめーは

461 :デフォルトの名無しさん:2010/05/24(月) 16:41:25
自分で何に対して何を聞いてるのか意味わかってるのか
ライブラリってそもそも、それぞれ関連する処理を都合で集めた関数群なんだぞ

座標空間での捉え方って話で言えば>>456も書いてるがユークリッド幾何学とかそういう大きな返事しか出来ないし、
そもそも中で使われているって、単機能ソフトウェアとかじゃないから、普通に答えづらくね
単に座標空間って言葉でもハミルトン数の空間もあるし、元の質問自体前提が適当すぎ

462 :デフォルトの名無しさん:2010/05/24(月) 16:44:52
もういいです。
偉そうな態度の人に何を言っても無駄でしょう。
この書き込みの跡に私を罵倒する書き込みがあるとおもいますが、一切無視します。
さようなら。

463 :デフォルトの名無しさん:2010/05/24(月) 16:49:00
まさかのマジキチ。

464 :デフォルトの名無しさん:2010/05/24(月) 16:49:36
>>462
もういいですじゃねぇよ。 悪いのはお前。
無知な中学生二年生は言葉の響きで満足なんかしてないで、
真面目に意味を勉強して、実践して理解しろ

465 :デフォルトの名無しさん:2010/05/24(月) 16:53:11
なんで偉そうとか思ったんだろうなww
多分何もわからないけどプライドだけ高くて、言葉で知的な気分味わって勝ち誇りたかったのに、
マジレスされて傷ついたから何も返事しないで 偉そうとか言って逃げたんだろうなw


466 :デフォルトの名無しさん:2010/05/24(月) 16:58:28
勝間和代とかこんなイメージだな
プライドはあるし、自分の中の妄想で期待する答えがあるから相手の話をあまり聞いていない

467 :デフォルトの名無しさん:2010/05/24(月) 17:16:46
本当に何か知りたい質問だったら、この後に罵倒する書き込みがあるだなんて、普通そんな謎な想像はしないよな

468 :デフォルトの名無しさん:2010/05/24(月) 17:19:36
偉そうな態度の人に何を言っても無駄でしょう。
さようなら。

469 :デフォルトの名無しさん:2010/05/24(月) 17:24:04
ロールプレイが足りないな。
そこは丁寧かつ遠まわしにチクリとやり返しておく場面だ。

470 :デフォルトの名無しさん:2010/05/24(月) 17:33:57
>>455

471 :デフォルトの名無しさん:2010/05/24(月) 17:56:22
久しぶりにスレが伸びていると思ってのぞいてみれば…
もっとOpenGLの話をしようぜ

472 :デフォルトの名無しさん:2010/05/24(月) 18:23:52
小僧はニュー速のつもりで書き込んでるのかもしれないな
まじめに答えて損しちゃったよ


473 :デフォルトの名無しさん:2010/05/25(火) 00:26:39
書き込めるぅ

474 :デフォルトの名無しさん:2010/05/25(火) 19:16:46
質問です。
gl_line_strip/loopで線を引く時と、ポリゴンを描画するときで1ピクセルずれますよね?
これを一致させる方法はありますか?
ない場合、全体の座標系は、どっちに都合がいいように合わせるのが一般的でしょうか。

475 :デフォルトの名無しさん:2010/05/25(火) 19:44:15
面白いギャグだ。

476 :デフォルトの名無しさん:2010/05/25(火) 20:01:50
OpenGLの座標系はピクセルの中心ではなくピクセル境界に合うようになっているので
GL_LINE_STRIPで線を引こうとすると、(ピクセルと一致する座標系にしている場合は)
+0.5しないと正確に目的のピクセルを通らない。
で、ちょうど境界上の座標を指定した場合の切り詰め方が負方向なので
例えば画面左端ギリギリに1ピクセル幅の線を引こうとした場合、1ピクセル右を指定することになる。
(ポリゴンを描くときは画面左端の座標をそのまま指定すれば当然思い通りに塗られる)

このずれをなんとかしたいのです。
GL_LINE_STRIPでの境界上の点の扱いを正方向に倒すような機能があるかどうか?
そういう機能が無いとして、このずれを補正する目的でglTranslatedするのは一般的なのか?

477 :デフォルトの名無しさん:2010/05/25(火) 20:04:21
ん 0.375 の話じゃなくて?


478 :デフォルトの名無しさん:2010/05/25(火) 20:10:08
0.375?

479 :デフォルトの名無しさん:2010/05/25(火) 20:30:34
http://www.opengl.org/resources/faq/technical/transformations.htm

これか。サンキュー。

480 :デフォルトの名無しさん:2010/05/25(火) 21:12:05
なんで0.375なの?

481 :デフォルトの名無しさん:2010/05/25(火) 21:33:26
0.25だと0と0.5のどっちに倒れるかわからないので0.25と0.5の中間……ということじゃね?わからん。
ついでにGL_FLAT必須だね。SMOOTHと併用するとテクスチャとか色々ぼける。

482 :デフォルトの名無しさん:2010/05/26(水) 20:18:03
日本一わかりやすいボーンのプログラムを作ってください。

483 :デフォルトの名無しさん:2010/05/26(水) 20:57:08
作りました

484 :デフォルトの名無しさん:2010/05/26(水) 23:48:36
俺も作りました

485 :デフォルトの名無しさん:2010/05/27(木) 00:15:34
たぶん俺のが日本一だと思うよ

486 :デフォルトの名無しさん:2010/05/27(木) 00:22:56
俺のは残念だけど日本二だ・・・

487 :デフォルトの名無しさん:2010/05/27(木) 00:34:49
マジレスすると俺のが日本で一番分かりやすいと思う。

488 :デフォルトの名無しさん:2010/05/27(木) 00:54:10
負けた・・・orz

489 :デフォルトの名無しさん:2010/05/27(木) 20:58:15
では、そのプログラムを見せてください。

490 :デフォルトの名無しさん:2010/05/27(木) 21:17:59
OK
300万くらいでいいか?

491 :デフォルトの名無しさん:2010/05/27(木) 21:20:49
ものをみてみないと何ともいえないな。
動画とかでアップしてみてくれる?

492 :デフォルトの名無しさん:2010/05/27(木) 23:29:06
あ、コードじゃ駄目なんだ・・・じゃあ俺はおいとましますよ

493 :デフォルトの名無しさん:2010/05/28(金) 00:20:28
コードでいいよ

494 :デフォルトの名無しさん:2010/05/28(金) 12:20:47
delete from このスレ where num>=482 and num<494 and text not like '%日本%'
commit


495 :デフォルトの名無しさん:2010/05/28(金) 12:33:06
SQL文を複数打つ時は、文末に;「セミコロン」をいれないとダメでつよ

496 :デフォルトの名無しさん:2010/05/28(金) 23:15:04
Frame Buffer objectと深度値を記録するテクスチャを用いて
ポストフィルタの作成をしています。
描画プロセスの途中、ある立体のみの深度値が必要だったので、
Frame Buffer objectに描画対象を切り替えて物体を描画しました。

当然この物体の描画以前の深度値とこの物体の深度値は二つに
分かれているのですが、これらを統合することは可能でしょうか?

テクスチャに深度値は格納しているので、デフォルトのフレームバッファに対して
深度値を書き込むことが出来れば実現出来ると考えているのですが、
どなたかご教示していただけないでしょうか?


497 :デフォルトの名無しさん:2010/05/29(土) 01:12:26
GLSLだとgl_FragDepthに出力すればどうにかなるんじゃないかな

498 :デフォルトの名無しさん:2010/05/30(日) 15:34:46
GL_COLOR_ATTACHMENT0_EXT にデフォルトのフレームバッファ
GL_COLOR_ATTACHMENT1_EXT にある立体用のフレームバッファ
にして同時に描画


499 :デフォルトの名無しさん:2010/05/31(月) 20:14:51
496です。レスが遅れてしまって申し訳ありません。

>>497
レスありがとうございます。
レスをいただいてからgl_FragDepthを試してみたのですが、
あまり上手く行かずorz (gl_FragDepthに出力してもなぜか反映されない)

gl_FragDepthは以前にも一度試したことがあるのですが、
その時もあまり上手く行かず、投げ出してしまったことがあります。
深度バッファをレンダーバッファではなく、テクスチャを用いて
作成しているのが問題なのでしょうか。
もう少し色々と試してみます。

>>498
レスありがとうございます。
そういえばMRTという手がありましたね・・・。
でも、深度バッファは同時に複数アタッチ出来なかったと思うのですが、
可能なのでしょうか・・・?調べてきます。

MRTは今回書き込んだ箇所以外に適用することで
問題解決の糸口が見いだせそうな気がします。こちらのほうも模索してみます。

レス本当にありがとうございました。
最後に、返信が遅れてしまったことをお詫びします。

500 :439:2010/05/31(月) 23:49:56
flag...?


501 :デフォルトの名無しさん:2010/05/31(月) 23:52:18
ワリィ、JavaスレのHN残ってた。

502 :498:2010/06/02(水) 18:14:55
>>499
>>でも、深度バッファは同時に複数アタッチ出来なかったと思うのですが

そういえばそうだった orz



503 :デフォルトの名無しさん:2010/06/02(水) 22:33:14
アタッチ馬鹿よね〜 お馬鹿さんよね〜♪

504 :デフォルトの名無しさん:2010/06/02(水) 22:34:39
う深度ゆ〜び う深度ゆ〜び さされ〜ても〜♪


505 :デフォルトの名無しさん:2010/06/03(木) 09:16:26
面白いと思ってレスしてるんだろうけどさぁ・・・

506 :デフォルトの名無しさん:2010/06/03(木) 14:19:32
高井麻巳子は神

507 :デフォルトの名無しさん:2010/06/03(木) 15:01:01
何の?

508 :デフォルトの名無しさん:2010/06/03(木) 16:34:47
>>506
うしろ指さされ組とか今の子は本当に知らない
てかもういい加減スレチだww

509 :デフォルトの名無しさん:2010/06/03(木) 23:43:54
どこで質問すれば良いのか分からないのでUNIX質問スレに一度書き込んだのですが、
スレ違いのような気がしてきたのでここで再度質問させてください。
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

510 :509:2010/06/03(木) 23:44:50
#=begin (1)
wingc = 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

511 :デフォルトの名無しさん:2010/06/04(金) 05:39:34
def draw
GL.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

だとおもう。

512 :デフォルトの名無しさん:2010/06/04(金) 08:14:39
glut使ってんですが、わからないことが。
基本3Dで描画してるビューのスクリーン上の座標を指定して線とかを書きたいんですが
方法がわからんから教えてくれないか。
( 0, 0 ) ( 100, 100 ) を結ぶ線分を描く、みたいな感じで


513 :デフォルトの名無しさん:2010/06/04(金) 08:27:03
射影行列を
ビューと同じサイズの正射影と入れ替えればいいんじゃね?

514 :512:2010/06/04(金) 08:56:37
>>513
ありがと、でも初心者だからよくわからないお

↓↓こんな感じ?でもその肝心の「なんか」のところがピンときません

glPushMatrix();
glMatrixMode( GL_PROJECTION );

// なんか

glBegin( GL_LINES );
glVertex2d( 0, 0 );
glVertex2d( 100, 100 );
glEnd();

glPopMatrix();

515 :デフォルトの名無しさん:2010/06/04(金) 09:18:46
>>514
glPushMatrixは行列モードを変えてからやらないと
ビューのサイズが(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();
しておく事

516 :512:2010/06/04(金) 09:33:25
>>514
できた!超ありがとう!
一つ学習できたよ

517 :512:2010/06/04(金) 09:34:36
>>515 でした。失敬

518 :デフォルトの名無しさん:2010/06/04(金) 20:46:11
directxと、どっちが速い?

519 :デフォルトの名無しさん:2010/06/04(金) 23:04:44
x

520 :デフォルトの名無しさん:2010/06/05(土) 08:24:53
o

521 :デフォルトの名無しさん:2010/06/05(土) 09:15:31


522 :デフォルトの名無しさん:2010/06/05(土) 09:28:19


523 :デフォルトの名無しさん:2010/06/07(月) 00:50:22
3Dモデルファイルを読み込む場合に、3角ポリゴンに分割した方が効率良いのかな?

524 :デフォルトの名無しさん:2010/06/07(月) 01:31:26
四角が混ざってると描画が面倒。


525 :デフォルトの名無しさん:2010/06/07(月) 03:19:16
でもクアッドの方が描画は早い。
まぁ現実的ではないので基本は3角。

526 :デフォルトの名無しさん:2010/06/07(月) 05:55:30
WGL_ARB_multisampleで16xマルチサンプリングを使うとテクスチャサンプリングがおかしくなるみたいなんですが同じ現象が出る方いますか?
x8以下で設定した場合やnvidiaコントロールパネルで設定した場合は発現しません

VistaとGF9600GTで最新ドライバを使用しています

527 :デフォルトの名無しさん:2010/06/07(月) 06:03:14
追記、エラー等は出ていません
具体的な現象としてはサンプリング誤差が出てスプライト用途の画像がぼやけたり
ClampToEdgeを使用しているのに逆サイドのピクセルを読んだりします

528 :デフォルトの名無しさん:2010/06/07(月) 06:47:11
おにゃんこワロタ

529 :デフォルトの名無しさん:2010/06/07(月) 08:22:15
>>511
遅くなりましたが、ありがとうございます。
順番が効いてくるのですね。
もう一度勉強し直します。

530 :デフォルトの名無しさん:2010/06/07(月) 10:09:47
>>523
インデックスバッファが使えない環境だと、
とにかく頂点数を減らすためにクアッドストリップ使ったりした。
ただクアッドは意図しないカリングが起きたりもした。

PCならインデックスバッファ使ったトライアングルリストが効率良いし使いやすいよ。

531 :デフォルトの名無しさん:2010/06/07(月) 18:50:53
マテリアル単位で読み込むと効率良いかな?

532 :デフォルトの名無しさん:2010/06/07(月) 19:36:08
OpenGL ES はPC向けのAPIもでまわってるのかな?
出来ればPCで開発したい。

533 :デフォルトの名無しさん:2010/06/09(水) 19:53:16
glutのウィンドウに表示される内容をVC++のpictureboxに描画する方法ってある?

534 :デフォルトの名無しさん:2010/06/10(木) 02:54:36
質問したいことがあるのですが、長いので2レスに分けさせていただきます。

ttp://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
です。

破線が複数本表示されてしまう原因を知りたいのですが、
何かお分かりになる方が居られましたらご教示いただけると嬉しいです。
よろしくお願いします。

535 :534: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;
}


536 :534:2010/06/10(木) 02:59:50
申し訳ありません、一つ言い忘れたことがあります。

glEnable(GL_LINE_STIPPLE)
の行を削除すると破線ではなく実線が表示されますが、
この時は複数本ではなく期待通り1本だけが表示されます。


537 :デフォルトの名無しさん:2010/06/10(木) 03:29:24
>>536
そのソースを丸々コピって動かしても別に普通だけどなぁ
ちょっと別のPCで動かしてみるとかビデオカードのドライバを新しくするとかしてみれば

538 :デフォルトの名無しさん:2010/06/10(木) 03:34:38
気になるところは特にないなぁ。

とりあえず今は次の項目に進んでも問題無いかも。
STIPPLEなんて使わんしな・・・。

539 :デフォルトの名無しさん:2010/06/10(木) 03:36:08
データを読み取ってjpegで出力するようなCUIアプリを作りたいのですが、
GLUTやその他のGUIツールキットを使わずにOpenGLを使えないものでしょうか?
glutCreateWindow(name);
をやらずにいきなり描画すると、どうしてもsegmentation faultが出てしまって困っています。


540 :デフォルトの名無しさん:2010/06/10(木) 03:46:47
「データを読み取ってjpegで出力する」過程の何にOpenGLを使うつもりなんだ?
シェーダーに計算させようとかそういう話?

541 :デフォルトの名無しさん:2010/06/10(木) 06:39:08
>>540
具体的には、データを読み込んでそれをもとに「描画」し、
(ポリゴンを3次元に配置して光を当てて射影するという操作です)
それをglReadPixelsで読み取るという操作をOpenGLでやろうと思っています。

それで、ウェブサイトを参考に、GLUTを用いて何とか作れたのですが、使わずに何とかできないかなと。
「シェーダー」というのがそれを実行してくれるのですか?

542 :デフォルトの名無しさん:2010/06/10(木) 08:21:58
>>541
シェーバー使ってピクセルを刈り取るんだよ

543 :デフォルトの名無しさん:2010/06/10(木) 08:26:27
>>541
シェーダーは関係ない。
GLUTを使わない方法を解説しているページは沢山ある(たとえば>>1のNeHeのLesson1)
だが、今のままGLUT使っといたほうがいいよ

544 :デフォルトの名無しさん:2010/06/10(木) 08:52:34
>>543
ありがとうございます。
なぜGLUTやその他のGUIツールを使いたくないかというと、ウィンドウに描画する作業が律速ではないかと非常に強く疑われるからなのです。
特に、リモートのサーバ上で動かすことを想定しているので、その転送の時間が。
glutHideWindowをやっても、大して効き目がないですね。
(ちなみに、そういうわけで環境はLinuxです、明示してなくてすみません)

545 :デフォルトの名無しさん:2010/06/10(木) 09:23:30
>>544
とりあえず簡単なプログラムをGLUTと比較して、遅さの原因がGLUTにあることを確認したらいいとは思うが
GLUTをやめても速度は上がらないと思うよ。
glReadPixelsのデーターを転送してるのが遅いんでしょ?。それはglut関係ないし。

546 :デフォルトの名無しさん:2010/06/10(木) 09:27:24
>>545
glReadPixelsのデータも転送しないまま、サーバ上でjpegに変換しています。
サーバからこっちに転送が発生するのは、Xのディスプレイだけですし、
実際ローカルでテスト実行したら、サーバから実行するより早いので、
どう考えてもディスプレイの転送がボトルネックかと。

547 :デフォルトの名無しさん:2010/06/10(木) 09:35:13
で、結局何が聞きたいの?
GLUT使いたくないなら使わないで素のOpenGLでやればいいだけジャン?

548 :デフォルトの名無しさん:2010/06/10(木) 09:36:52
>>547
それをどうやるかというのが、そもそもの>>539の質問です……。

549 :デフォルトの名無しさん:2010/06/10(木) 09:47:12
意味が分からん
表示するのが前提なのにウィンドウに書きたく無いってどこに表示するつもりなんだよ

550 :デフォルトの名無しさん:2010/06/10(木) 09:52:03
>>549
ウィンドウに表示するかどうかはどうでもよく、
glReadPixels(あるいは別の手段でも構いませんが)でビットマップデータを読み取れさえすればよいのですが。
「表示するのが前提」とはどういうことですか?

551 :デフォルトの名無しさん:2010/06/10(木) 09:56:17
どっちにしろXの転送とやらがおきるのならGLUTだろうと自前だろうと速度は変わらないような気がするが
linuxはよく知らないけどこれとかどうよ
ttp://www.codesampler.com/linuxsrc.htm


552 :デフォルトの名無しさん:2010/06/10(木) 09:56:22
Windowsならビットマップにコンテキスト作れば描画してくれるけどGPUの支援ナシ
最近のOpenGLならFBO使って要求満たせんかね?これならウインドウは非表示でいいだろ

553 :デフォルトの名無しさん:2010/06/10(木) 10:05:58
描画が終わった段階で1回だけglFlushして後は描画とめておけば良いだけちゃうの?

554 :デフォルトの名無しさん:2010/06/10(木) 10:33:16
>>546
「転送」がかみ合ってない気がする・・・

555 :デフォルトの名無しさん:2010/06/10(木) 11:45:49
垂直同期してるから60FPSに固定されてて遅いとか?

556 :デフォルトの名無しさん:2010/06/10(木) 11:49:56
その処理はIdleファンクに書いているんだよね?

557 :デフォルトの名無しさん:2010/06/10(木) 16:11:16
glXCreateGLXPixmap() で pixmap 作って、
そこに context 割り当ててやればいいのかねぇ?


558 :デフォルトの名無しさん:2010/06/10(木) 20:30:00
赤本に書いてある太陽系のプログラムをそのまま写して
ビルドしたのですが
太陽の周りを回っている地球が太陽の後ろに行っているはずなのに
太陽に隠されることがないまま動いています。
Zバッファが無効になっているのですか?
ちなみに環境はmac OSXです。
よろしくお願いします。

559 :デフォルトの名無しさん:2010/06/10(木) 20:40:26
まずはソースコードを読めるようになってからまた来てください。

560 :558:2010/06/10(木) 21:57:29
すいません、解決しました。
一応報告します。デプステストをオンにしたらちゃんと
前後関係正しく描画してくれました。
赤本のコードには書いてなかったのですが、環境によっては
オートでオンの状態になってるということですかね

561 :534:2010/06/10(木) 22:57:32
>>537-538
ありがとうございます。
ソースに間違いが無いということなのでしたら、
とりあえず気にしないで先に進んでみようと思います。
後々どうしても破線を描きたいような状況になったら、
改めて解決策を考えてみます。

どうもありがとうございました。

562 :デフォルトの名無しさん:2010/06/11(金) 03:44:43
テクスチャって正方形じゃないとだめなん?

563 :デフォルトの名無しさん:2010/06/11(金) 04:07:31
んなことない、ただし2の累乗である必要はある
256x512みたいなのは有りってこと

564 :デフォルトの名無しさん:2010/06/11(金) 05:26:32
>>544
1. 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


565 :デフォルトの名無しさん:2010/06/12(土) 02:07:59
>>562
OpenGL2.0から2の累乗の制限は無くなった。
2.0以前でもrectange_textureっていう拡張機能が使えれば2の累乗じゃないテクスチャを使えるよ。

566 :デフォルトの名無しさん: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.

567 :デフォルトの名無しさん:2010/06/12(土) 04:33:33
ライブラリじゃないのはDirectXの方。
あれはパッケージ。だからDirectX SDK。

568 :デフォルトの名無しさん:2010/06/12(土) 09:50:15
パッケージ?

569 :デフォルトの名無しさん:2010/06/12(土) 15:15:45
>>566
どうでもいいが、「グラフィックスハードウェアの」インターフェースで
あることを強調しなければ、機能限定の理由にはならんだろう。

570 :デフォルトの名無しさん:2010/06/12(土) 16:14:50
>>568
DirectXっていうライブラリは無くて、Direct3DやDirectInputなどのコンポーネントの集合体だって意味では
openGLに相当するのはDirect3Dで、ファイル読み込みやベクトルクラスなどはDirect3DXだから
使いたければDirec3DXはopenGLからでも使えるかも

571 :デフォルトの名無しさん:2010/06/12(土) 16:23:36
gluの事も忘れないでください・・・

572 :デフォルトの名無しさん:2010/06/13(日) 00:27:17
メタセコのデータを表示するプログラムを作っているのですが
頂点データと面のインデックスデータを読み込んでglDrawElementsで表示する事はできました
しかしUVデータはインデックスではなく三角と四角のポリゴン単位になっているのでそのままでは適用できませんでした
表示用にデータを作成し直したりしないといけないんですか?

573 :デフォルトの名無しさん:2010/06/13(日) 03:23:00
とりあえず表示するだけで良いなら、面毎に頂点を作成してglDrawArraysでいい

574 :デフォルトの名無しさん:2010/06/14(月) 03:48:02
>>572
同一座標の頂点で違うUVがある場合の描画は
通常は重複(duplicate)頂点と言って、頂点を増やす
(座標は同じでUV値だけ違う)
当然glDrawElements単位でのインデックスも増やす

だからと言って、エクスポートや出力データも
まんま馬鹿正直に同じ座標を出してインデックスを変える必要はない、
それがキミが詰まってる原因なんだろう

575 :デフォルトの名無しさん:2010/06/14(月) 03:58:07
つGL_POLYGONS

576 :デフォルトの名無しさん:2010/06/14(月) 20:31:18
>>574
それってかなり複雑にならないかな?
重複頂点をインデックスに追加する度にインデックスがずれる事になるが…

577 :576:2010/06/14(月) 21:23:55
あ、最後尾に追加するからインデックスはずれないのか。
OK、やってみる。
結局、.mqoのインデックスは作り直さないといけないんだな。

578 :デフォルトの名無しさん:2010/06/14(月) 22:03:54
描画時は普通ポリゴンセットにするよな?
VBOに持たせることを考えると一番楽なんだけどどう?

579 :デフォルトの名無しさん:2010/06/16(水) 13:02:15
GTX 480 での glDrawElements による描画がやたら遅いんだけれど、
同じ現象にあった人いますか?
・ドライバは最新(257.21)
・ベンダーが別の2枚のGTX 480で確認
・VBO ありでもなしでも遅い
・Cg shader や他の描画には特に問題なし
・OSは WindowsXP 64bit
・Geforce 8800 よりはるかに遅い
です。

580 :デフォルトの名無しさん: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
ではほとんど速度が低下していなかったので、盲点でした。

581 :デフォルトの名無しさん:2010/06/16(水) 21:55:15
マルチ失礼します。

すごい初歩的な質問だけどこれってどうやって使うの?
ttp://www.jpct.net/jpct-ae/
Eclipseとa-sdkははいってるんだけどそこからわからん
教えてエロい人><


582 :デフォルトの名無しさん:2010/06/16(水) 22:08:03
A BufferだとかK Bufferを使って、描画する順番に依存しないレンダリングを行いたいのですが
やり方がよく分かりません。
とりあえずサンプルだけでも動かしてみようと思いましたが、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

583 :デフォルトの名無しさん:2010/06/17(木) 01:50:18
>>579
参考になったトンクス

今世代のNVはもう駄目だなぁ・・・。

584 :デフォルトの名無しさん:2010/06/17(木) 01:51:10
OpenGL 4.0以降ならちょうど本家に情報が載ってたんだけどな。

585 :デフォルトの名無しさん:2010/06/17(木) 02:01:51
>582
ドライバ更新して駄目ならゲフォを買うってところじゃないかな
とりあえずうちの9600GTでd3d使うやつ2つは動いた

586 :582:2010/06/17(木) 12:19:39
新しいビデオカード買うのはちょっと無理そうです
Mobility RADEONだと新しいドライバを入手するのも難しそうです・・
まずDirect3Dで動かすのを頑張って、それからOpenGLへの移植を考えようと思います

587 :デフォルトの名無しさん:2010/06/17(木) 22:12:38
>>582
ATIのサイトから落とせるShaderMonkey(要登録、無料)の中にOITのサンプルあったよ。
Direct3DだったかOpenGLだったかは忘れたけど、OpenGL2.1あたりの世代だったから4330ならいけるはず。

588 :582:2010/06/17(木) 22:26:36
>>587
RenderMonkeyのサンプルですか?
これはピクセル単位でソートしているわけでは無さそうですが

589 :デフォルトの名無しさん:2010/06/17(木) 22:51:29
あぁごめんShaderMakerとかと名前ごっちゃになってた。RenderMonkeyだw

590 :デフォルトの名無しさん:2010/06/20(日) 22:29:22
大学でこれを使って何か作れと言われたのですが・・・
テクスチャマッピングが簡単にできるライブラリとかありますか?
芸術工学関係でオススメサイトとかあったらヨロシクオネガイシマス。

591 :デフォルトの名無しさん:2010/06/20(日) 22:30:49
あります

592 :デフォルトの名無しさん:2010/06/20(日) 22:37:23
趣味なら教えてやっても構わんが
大学の課題なら自分でやれよ

593 :582:2010/06/21(月) 21:48:20
サンプルが動かない理由の1つが分かったかもしれません
Irrlichtエンジンを使っているのですが、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);

594 :デフォルトの名無しさん:2010/06/23(水) 13:12:34
ずっとDirect3D使ってきたけどWindowsでしか動かないとか新しいバージョンはVista以降じゃないと動かないとか
だんだん嫌になってきたのでOpenGLデビューすることにした。

Direct3Dでも最近はコアな部分しか使ってなくて高度な部分は自前で制御してきたからたぶんそんなにOpenGL習得は大変じゃないよね。

たのしいGLライフがはじまるよー!

595 :デフォルトの名無しさん:2010/06/23(水) 18:44:19
OpenGLもDXほどじゃないにしろ……

596 :デフォルトの名無しさん:2010/06/23(水) 19:30:25
ATIのLinuxドライバとか少しはマトモになったんだろうか

597 :デフォルトの名無しさん:2010/06/23(水) 21:16:56
glBeginのパフォーマンスがどうこうで頂点配列使え云々は話はわかるけど
そんなとこよりglEnable/glDisable減らした方がよっぽどFPS改善された……。

それでも頂点配列が云々されているということは、
プロのコードは限界まで状態切り替えをまとめているんだろうなあ……。

598 :デフォルトの名無しさん:2010/06/23(水) 23:18:24
>>594
大多数のIntelのIGP使用者も対象にしたら
OpenGL1.4までしか使えないけどな…

599 :デフォルトの名無しさん:2010/06/23(水) 23:48:29
Intelは最近のでやっとOpenGL2.1対応だからなぁ。しかもフラグメントシェーダーでgl_FrontFacingがバグで使えないっていう面倒さも抱えている。

600 :デフォルトの名無しさん:2010/06/24(木) 09:05:15
GLって、状態を一括で切り替えるブロック指定とかできないの?

601 :デフォルトの名無しさん:2010/06/28(月) 16:22:00
>600
っglPushAttrib(MASK);

3D矩形テクスチャをボリュームデータとして内部も表示したいんだが、
頂点が8点の立方体に貼付けるだけじゃ無理だっけ?

602 :デフォルトの名無しさん:2010/06/28(月) 19:30:14
>>598
GLEW使ってるけど、それとは違う話なの?

603 :デフォルトの名無しさん:2010/07/01(木) 20:36:14
>>601
とりあえず osg か VTK。

自前でやるなら、
- 四角ポリゴン * 3(最大) を表示して fragment shader で視線方向に
辿って適当な方法で積算するか、
- 亡き OpenGL Volumizer のように視線に垂直なスライス多数 (最大6
角形 * 256枚とか) (枚数は求める分解能次第) を積み重ねる。

shader 内で辿る方法の方は、(試したことはないけど)メモリアクセスが
少ない分描画が(多分)速いし、スライスしなくて良い分プログラムが(多分)簡単。

スライスする方は、他の通常のオブジェクトと重なるような表示ができる、
プログラマブルシェーダ無しでもレイキャストや MIP くらいはできる。
スライス生成はホスト側プログラムかジオメトリシェーダで。


604 :デフォルトの名無しさん:2010/07/05(月) 10:37:49
テクスチャで質問していいですか?
α情報を持ったテクスチャを面に貼り付けた際に、
α部分に面の色を表示させたいのですが、どうすればよいのでしょうか?
GL_MODULATE だと、テクスチャの色合いも含めて全体が転調されてしまうし、
GL_DECAL/GL_REPLACEだと面の陰影がなくなるような。
かといって、GL_BLENDを有効にすると、奥の面も見えてきてしまいます。
どなたか知りませんか?

605 :デフォルトの名無しさん:2010/07/05(月) 17:46:00
「α部分に面の色を表示させたいのですが」 <-- これが意味不明
何をやりたいのか説明できてない。
普通はライティングしてテクスチャーをGL_MODULATEだ。

606 :デフォルトの名無しさん:2010/07/05(月) 18:45:19
>>605
ありがとうございます。
赤色の面に、例えば市松模様でα値0のテクスチャを貼り付けたときに、
α値が0の所だけ赤くなって欲しいと言うことです。
glMaterialfで赤色を設定した所、BLENDを有効にしなくても表示されました。
ただ、元のテクスチャの色が白の部分を透過として扱うためか、
乗算されて元の色よりかなり明るくなってしまいました。
今回はこれで良いと言うことにします。

607 :デフォルトの名無しさん:2010/07/05(月) 19:04:17
難しく考えずにシェーダーでやればいい

608 :デフォルトの名無しさん:2010/07/05(月) 19:09:11
>>604
テクスチャ関連は固定機能だけでもいろいろやれそうだけど、かゆいところに手が届かないのが多い。
その点シェーダー使えば自由にやれるけど、OpenGLをどの程度できるかによるな。

609 :デフォルトの名無しさん:2010/07/10(土) 01:39:45
テクスチャを投影マッピングしているのですが、下のソースにあるgluLookAtを挿入するとうまくいかなくなり、原因がわかりません。
gluLookAtの第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();
}

610 :デフォルトの名無しさん:2010/07/10(土) 02:11:11
微妙によくわからんのだが
gluLookAtはカメラの位置の設定として使いたいの?
それともテクスチャの投影方向の設定として使いたいの?

611 :デフォルトの名無しさん:2010/07/10(土) 02:29:58
テクスチャの投影方向として使いたいです
glScaledの直後にこのgluLookAtを挿入してもうまく行きませんでした

612 :デフォルトの名無しさん:2010/07/10(土) 02:41:46
投影方向として使いたいならglScaledの直後だな
どう上手くいかないのか詳しく

613 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:28:21
glScaledの直後に入れた挙動です
gluLookAtなしだと、投影出来ています。
直行投影にみえます。
gluLookAtを入れると、オブジェクト全体が単色で染まってしまいます。
実際のカメラの動画をテクスチャしているのですが、実際のカメラを向ける方向によって色や明度は変わりますが、像は見られずいずれもオブジェクト全体が単色で埋められてしまいます。
gluLookAtの第3引数までをキーボードで調整しても変わりません。

614 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 18:54:10
最初は投影マップのサンプルを調べて丸ごとコピペとかしてみれば
projective texture opengl example
あたりでググるとopenGL.orgやsgiの97年ごろのデモがヒットするみたいよ

でも、もうそういうのもシェーダーでやる時代だと思うけど

615 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:25:29
症状とソースから原因は分かりませんか(´・ω・`)

616 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 13:56:06
わからないねぇ
色が変わってる=テクスチャの1部だけが引き伸ばされて投影されてる
だろうから多分お前のパラメーターミス
どんなモデルに投影してるのかもわからないし答えようがない
デバックして欲しいっていうなら全ソース出せよ

617 :デフォルトの名無しさん:2010/07/12(月) 00:25:31
わかった 上げてみる
ttp://www.dotup.org/uploda/www.dotup.org1022196.cpp.html

動かすにはUSBカメラとOpenCVが必要
投影するモデルは右クリックで変えれる

618 :デフォルトの名無しさん:2010/07/12(月) 03:00:54
keyboardFuncで変数の値を変えてもreshapeFuncは呼ばれないような気がするんだけど
変数操作した後ちょっとウィンドウサイズ変えたら出てきたりして


619 :デフォルトの名無しさん:2010/07/12(月) 14:37:19
テクスチャの投影方向として使うなら、テクスチャ行列にgluLookAtを使うべきだと思うけど。
うまくいかなかったのは、テクスチャ座標が (0, 1) 範囲なのを忘れている気がする。

620 :デフォルトの名無しさん:2010/07/13(火) 00:28:36
>>618
本当にその通りだ
ウィンドウサイズ変えたら反映された
じゃあ呼び出され続ける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);
入れたら投影の方向も変えれるようになったよ

ところでこのプログラムすごい重いんだけど、悪いコードに気がついてたら教えてください

621 :デフォルトの名無しさん:2010/07/13(火) 00:32:10
>>619
>>609のglScaledの後ってことだよね
最初はそれにしてたけど、うまくいかないから試行錯誤してたときのを貼ってしまった
すまない
その時の挙動は>>613

622 :デフォルトの名無しさん:2010/07/13(火) 20:29:36
glutで文字出したいのですが、画面の隅に出したいのです。
そのためにはカレントラスタ位置を画面隅に設定すればいい。

ということで、画面隅にあたる座標を求めたいのですが、
これは視錐台の頂点の座標を求める、
ということとほぼ同じですよね。

どういう手順で求めたらいいでしょう?
glGetでGL_PROJECTION_MATRIXを取得して
連立方程式を解く感じでやればいいんでしょうか。
てゆうか、もっと簡単な方法はないでしょうか、、、

623 :デフォルトの名無しさん:2010/07/13(火) 22:04:13
課題の季節か

>>620
デバッグビルドしてんじゃね。
コードはtmp_imgのあたりとか釣りかなと思うほど無駄みたいだけど、どうなのか。
他もいろいろありそうだがopenCVはスレ違いかな

>>622
MATRIXの影響を受けたくないならglPushMatrixしてglLoadIdentityすればいいが、
画面の隅に出したいだけならglRasterPos*の代わりにglWindowPos*を使えば簡単

624 :デフォルトの名無しさん:2010/07/14(水) 17:21:23
教えていただきたいのですが、1枚のテクスチャに複数の画像データを
載せて(?)、描画することは可能でしょうか?

例えば、上下2分割の画像があるとして、テクスチャに先に上部の画像を
載せて、次いで下部の画像を載せ、最終的にDrawするようなイメージです。

2枚のテクスチャを利用すれば、いいのでしょうが、1枚で済むので
あれば、1枚で処理したく思いまして・・・。

glTexImage2D()と、glTexSubImage2D()をうまく使えばできるので
しょうか・・・。

625 :デフォルトの名無しさん:2010/07/14(水) 19:04:42
日本語でお願いします

626 :デフォルトの名無しさん:2010/07/14(水) 19:07:13
>>624
無駄な努力するより正しい手順で単純な方法を使うべきだぞ


627 :デフォルトの名無しさん:2010/07/14(水) 20:12:10
>>624
glTexSubImage2D()をうまく使えばできるよ

628 :デフォルトの名無しさん:2010/07/14(水) 21:05:53
GLSLに関する質問です。
GLSLで配列を宣言する場合、組み込み型の場合は

float array[3] = float[3](1.0, 2.0, 3.0);

のように書くと初期化出来ますが、構造体の場合、

TestStruct array[3] = TestStruct[3](TestStruct(...), ...);

としてもcast not allowedとエラーが出てしまいます。
構造体配列では、上のような初期化の仕方は出来ないのでしょうか?

629 :デフォルトの名無しさん:2010/07/14(水) 22:03:49
そんな初期化の仕方のできる言語がどこにあるんだ?

630 :デフォルトの名無しさん:2010/07/15(木) 03:23:57
>>623
遅レスだけどtmp_imgはモルフォロジー演算のブラックハットとかを試したときの消し忘れ
スレチスマソ

631 :デフォルトの名無しさん:2010/07/15(木) 06:00:38
>>623
でけた〜!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。

632 :622:2010/07/15(木) 06:21:06
>>623
でけた〜!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。


633 :デフォルトの名無しさん:2010/07/15(木) 06:29:11
だいじなことなので(ry

634 :デフォルトの名無しさん:2010/07/15(木) 08:16:10
>>629
やっぱり出来ないですか orz
構造体は

TestStruct test = TestStruct(...);

で初期化できるので、これ使えば構造体配列の各要素も初期化できるのかなと思ったのですが…
地道にmainで初期化することにします。
ありがとうございました。

635 :622:2010/07/15(木) 08:24:18
すみましぇんX(

636 :デフォルトの名無しさん:2010/07/16(金) 22:39:38
OSMesaを使おうと思うと、segmentation faultが出てしまいます。
例えば、
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となります。

これは根本的なところでどこか使い方を勘違いしているのでしょうか?

637 :636:2010/07/17(土) 00:17:28
自己解決しました。

libOSMesaだけで十分なのにlibGLをリンクしてしまっていたのが原因でした。

638 :デフォルトの名無しさん:2010/07/17(土) 14:16:23
GLSL って % ないのな。int 用の mod も無いし、他の人どうしてるのかな? 引き算?

639 :デフォルトの名無しさん:2010/07/17(土) 15:44:32
int hoge = int( mod( float( 10 ), float( 4 ) ) );
とかできなかった?

640 :デフォルトの名無しさん:2010/07/17(土) 19:21:35
出来ました。でも変数使うとかなり妙なことが。

int(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
でも同じ結果。訳が分からん。

641 :デフォルトの名無しさん:2010/07/19(月) 22:40:30
相変わらずラデのGLドライバは腐ってやがるな
糞が

642 :デフォルトの名無しさん:2010/07/19(月) 22:54:31
GT4xxベースのQuadroはまだですか?

643 :デフォルトの名無しさん:2010/07/20(火) 15:42:24
まだ出てなかったんだ。
Quadroで儲け出してると思ってたけど。

644 :デフォルトの名無しさん:2010/07/21(水) 20:17:18
複数テクスチャで構成したモデルで、拡大表示などその一部分しか画面上に描画されない場合、画面上に描画されるテクスチャ名(ID)を取得する事はできますか?
テクスチャ描画直前にコールバックされるなど

645 :デフォルトの名無しさん:2010/07/22(木) 01:06:32
occlusion queryでやるのは?

646 :デフォルトの名無しさん:2010/07/22(木) 04:03:09
>>645
644です。
ありがとー、早速使わせて頂きます。


647 :デフォルトの名無しさん:2010/07/22(木) 08:07:52
xcodeでiphoneSDKの
OpenGL雛形を利用してテクスチャ描画しようとしているのですが

テクスチャ作成も成功していて
TEXTURE_COOD_ARRAYも指定しているのですが

白いまま、テクスチャの柄が表示されません。

テクスチャ表示に
他に何か設定することありますか?


648 :デフォルトの名無しさん:2010/07/22(木) 09:22:58
自己解決
iphoneって
テクスチャの幅が2のべき乗じゃないとだめでした

649 :デフォルトの名無しさん:2010/07/25(日) 02:34:31
http://wisdom.sakura.ne.jp/system/opengl/gl22.html

ここのサンプルなんですが
なんでBの値が~rでいいんですか?
255-rと同じ結果になると思うんですが
どういうことなんですか?

650 :デフォルトの名無しさん:2010/07/25(日) 02:53:32
自己解決した
GLubyteでキャストしたらなんか意味わかった

651 :デフォルトの名無しさん:2010/07/25(日) 10:57:55
プラネタリウムのようなソフトを作っています。
天球の中心にカメラを置いて、注視点をぐりぐり移動させる所でつまずいています。

今やっているのはglRotateで±1°ずつ回転させて(角度変数も用意して増減させる)
実装しています。この場合だとぐりぐり移動はできるのですが現在どの角度を向いているか
が正しく取得できません。(斜め移動すると表示と値がずれる)

プラネタリウム(というよりは星座早見盤)をつくるのに今見ている角度を正しく
取得しなければならないのですが、いい方法はありますか?

652 :デフォルトの名無しさん:2010/07/25(日) 11:03:56
mCamera->setOrientation(Quaternion::IDENTITY);
mCamera->rotate(Vector3::UNIT_Y, Radian(mTheta));
mCamera->pitch(Radian(mPhi));


653 :デフォルトの名無しさん:2010/07/25(日) 16:03:07
回転を四元数で管理

654 :デフォルトの名無しさん:2010/07/25(日) 17:28:28
LoadIdentityの代わりに、単位行列をピヴォットした行列をロードするだけでZ-Upとかに対応できたりするんでしょうか?

655 :デフォルトの名無しさん:2010/07/25(日) 22:06:55
OpenGL用の行列やベクトル、クォータニオンなんかのライブラリでオススメあれば教えて下さい。
DirectXのライブラリみたいにSIMD使った最適化までしてくれたら嬉しいです。


656 :デフォルトの名無しさん:2010/07/25(日) 22:38:24
Bullet の LinearMath

657 :デフォルトの名無しさん:2010/07/25(日) 23:15:50
>>652
Cで書いていて、かつかじったばっかりなので何をやってるのか理解できませんでした。
すみません。

>>653
検索したら参考ページが出てきたので頑張ってみます。
ありがとうございました。

658 :デフォルトの名無しさん:2010/07/26(月) 00:37:24
床井さんのところ
http://marina.sys.wakayama-u.ac.jp/~tokoi/
のサンプルで、クォータニオン使ったのがあったはず。

659 :デフォルトの名無しさん:2010/07/26(月) 00:56:20
>>651
単に回転する順番とかが間違ってるだけなんじゃないのかな
クォータニオンとか導入しないとならない問題じゃないと思うんだが

660 :デフォルトの名無しさん:2010/07/26(月) 02:55:33
普通に天球の極座標も理解出来てないと思う。

661 :651:2010/07/31(土) 12:34:43
>>658
ありがとうございます。参考にさせてもらいます。

>>659
そうなんですか。詰まったらまた質問するかもしれません。

>>660
授業の成果物作成で3Dグラフィックなんてやったことないのに作ることなってしまいました。
極座標でやろうと思ったんですけど意図した方向に回転しなくて別の方法に移りました。

662 :デフォルトの名無しさん:2010/07/31(土) 19:14:17
>>661
先は長そうだな。やめとけ

663 :651:2010/07/31(土) 20:58:38
視点移動なんですが、
例えばワイヤードームがあって、その縦横線と水平な方向に移動させる場合
プログラム開始時の視点位置だと出来るのですが、
まず横に30゜動かしたあと上に視点を動かそうとすると斜めに移動してしまいます。

ワイヤードームの縦横線に水平に動かすにはどうすればいいですか?

>>662
できないと卒業できないのでやめられません・・・

664 :デフォルトの名無しさん:2010/07/31(土) 21:01:52
なんか横に移動したあと
glLoadIdentityするだけで解決しそうな予感

665 :デフォルトの名無しさん:2010/07/31(土) 21:10:45
>>663
いまいちよくわからないけど、移動と回転の順番を逆にしてみたら?

666 :デフォルトの名無しさん:2010/07/31(土) 22:22:05
>>663
移動・回転・拡縮をかけると、変換をかけたオブジェクトの座標軸も動くからな?
絶対座標で考えてはならない。

667 :651:2010/07/31(土) 22:45:44
http://www.dotup.org/uploda/www.dotup.org1064999.zip.html
今作っているプログラムとソースです。

Theta_RouteとPhi_Routeがカメラ動かしている関数です。
FPSの標準みたいに線に沿って動かしたいのですが、横にずらしながら
縦に動かすと線からずれます。

>>664
glMatrixMode(GL_PROJECTION);
の後にglLoadIdentityをやるとワイヤードームが消えてしまいます。

>>665
移動?はしてないと思います。クォータニオンで回転をかけているだけです。

>>666
やっぱりカメラも軸がずれるんですかね?

668 :デフォルトの名無しさん:2010/07/31(土) 23:12:46
ここをこうすりゃとりあえず動くよとかいうコメントはできるけど、根本的にいろいろダメすぎる。
gluLookAtやオブジェクトの回転をPROJECTION_MATRIXでやるとかどこで習ったの
天文が専門でプログラミングは専門外なのかもしれないけど
最初はopenGLの回転やカメラ指定のサンプルプログラムを参考にしたほうがいいよ


669 :デフォルトの名無しさん:2010/08/01(日) 00:17:32
なんかよくわからん
こんなのgluLookAtのlookを変えればいいんじゃないか?


670 :デフォルトの名無しさん:2010/08/01(日) 00:42:06
>>668
modelviewで回転(glRotate)を行っても視点が移動しなくてprojectionだと移動したので
projectionで実行していました。どこかのサイトのソースでそうあったので。

>>669
lookでやったらあらぬ方向に飛んでそのままワイヤードームがフェードアウト
する現象にあって諦めてしまいました。もう一度挑戦してみます。

もう一度入門サイトあさってみます。

671 :デフォルトの名無しさん:2010/08/01(日) 00:50:35
サイトもいいけど
本屋で立ち読み祭りも悪くないよ

672 :デフォルトの名無しさん:2010/08/01(日) 01:11:48
>>670
そりゃDisplayListのなかで描画直前にglLoadIdentityしてりゃMODELVIEWをいじっても動かないよ

673 :デフォルトの名無しさん:2010/08/01(日) 10:49:43
>>672
動くようになりました。LookAtもちゃんと動くようになりました。
これなら極座標でLookAtのLookいじる方法で行けるかもしれません。
ありがとうございます。

674 :デフォルトの名無しさん:2010/08/02(月) 19:20:35
openglって右手系ですよね?
中心(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 )
で作られる面が見えます。
私は何か勘違いをしているのでしょうか?

675 :デフォルトの名無しさん:2010/08/02(月) 19:27:28
LookAtを0, 0, -5からにしたら目的の面は見える?

676 :デフォルトの名無しさん:2010/08/02(月) 19:31:49
Near/Far

677 :674:2010/08/02(月) 21:40:54
>>675
見えました。

678 :674:2010/08/02(月) 22:23:08
>>676
near>farになっていたのが原因でしたorz
こういう指定の仕方も出来るんですね。。。
本当に助かりました
お二方ありがとうございました


679 :デフォルトの名無しさん:2010/08/02(月) 22:57:02
法線って指定しないと
ライト当てたときどうなるの?

680 :デフォルトの名無しさん:2010/08/03(火) 02:23:02
最後に glNormal を呼んだときの値をずっと覚えていて、それが使われる
一度も呼んでない場合は初期値 (0, 0, 1)

681 :デフォルトの名無しさん:2010/08/03(火) 03:36:01
全く4.1が発表されたというのにおまいらときたら。

682 :デフォルトの名無しさん:2010/08/03(火) 12:15:56
無駄にバージョン上がってるよね


683 :デフォルトの名無しさん:2010/08/03(火) 13:49:56
夏の風物詩

684 :デフォルトの名無しさん:2010/08/03(火) 14:21:29
ここの人たちあまり最新の機能については興味なさそうだしな。
あまりシェーダとかの話題もないし

685 :デフォルトの名無しさん:2010/08/03(火) 14:21:53
これからというか既にモバイルではOpenGLがかなり伸びてるし、いっそのことPCもOpenGLにシフトしてくれたらなぁ。
まぁそのためには補助ライブラリの整備が大切だが。

686 :デフォルトの名無しさん:2010/08/03(火) 17:13:30
最新機能を使いたいならD3DでいいしGLで最新機能を必要とするシチュがない

687 :デフォルトの名無しさん:2010/08/03(火) 17:43:40
最新じゃないけど
凝ったことするなら2.0スレでやる

688 :デフォルトの名無しさん:2010/08/03(火) 17:44:26
マイクロソフトが
DirectGL作ってくれないかな

689 :デフォルトの名無しさん:2010/08/03(火) 17:49:04
GL#

690 :デフォルトの名無しさん:2010/08/03(火) 23:12:21
そういえばこの前、openGL 4.0 の発表があったな。

691 :デフォルトの名無しさん:2010/08/04(水) 00:14:16
>>688
ファーレンハイトとか言うのがその昔あってだな

692 :デフォルトの名無しさん:2010/08/04(水) 00:30:21
黒歴史…

693 :デフォルトの名無しさん:2010/08/04(水) 00:42:04
ファーレンヘイト

694 :デフォルトの名無しさん:2010/08/04(水) 02:07:45
OpenGLの拡張機能を使えばwindowsXPでもDirectX11世代のGPUの機能にアクセス可能だ。
GF100でshaderからテクスチャへランダムライトとかatomicアクセスできる拡張機能
NV_shader_buffer_store
が追加されたけど
これが標準機能になるのは4.2か4.3ぐらい?

695 :デフォルトの名無しさん:2010/08/04(水) 19:31:57
glTexImage2Dに与える画像データなんだが
callocで動的確保してるポインタだと上手くいかん。
なんか変えなきゃいかんとことかある?

696 :デフォルトの名無しさん:2010/08/04(水) 19:47:14
任意の点
double x,y,z;

をglRotatefで座標変換したいんですが、
どうすればいいでしょうか?

183 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)