OpenGLスレ Part14

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
クロスプラットフォームの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
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
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
16デフォルトの名無しさん:2010/01/21(木) 19:03:27
日本語でおk
17デフォルトの名無しさん:2010/01/21(木) 19:43:03
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度分のライト置けばいいんじゃね
2018: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
つ 法線ベクトル
2718: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
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だし
8582: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++ 自体全然わからなくて、でもどうしてもなんかテクスチャ貼ったキャラ動かしてみたくて
説明読んでも理解出来ないから他人にソース書いてもらいたいって、

そういう話だよね? 
10191: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){ /*ステンシル値をチェック*/
11291: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でアニメーションさせるなんて無理無理。
基礎から学べ。
248245: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
まばたきぐらいだったらテクスチャでアニメーションする手もあったな。
266245: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
何の仕様だよ……
299296: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
お前は何を言っているのだ
319296:2010/04/11(日) 12:39:57
すいませんそれで1頂点当たり影響を受けるボーン2つというのは
実用的にOKでしょうか?
320デフォルトの名無しさん:2010/04/11(日) 12:58:01
何に実用するんだよ、お前の文章からは回答者に理解してもらおうという気持ちが全く伝わってこないぞ
321296: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つ以上にするべき
”かなり大変”ってのもお前の尺度だろ?

世の中に、それが大変じゃない奴が実装してるアプリがあったら
お前の所為でショボくなるんだぞ?
325296: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人は同じ意見なはずです。

普通によく居る、出来ないプログラマの発想丸出しなんだけど…
329296:2010/04/11(日) 18:58:31
>327
モデルデータは新規ではないです。
既存のモデルデータをそのまま使うので。
3つ以上ボーンを使った場合、ウェイトの大きい方から2つ使う事になります。

首から肩の辺りが心配で。
330デフォルトの名無しさん:2010/04/11(日) 19:02:31
>>329
2つ以上のボーンに対応出来るのに

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

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

死んだ方が良いよw

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

ヘタレ全開じゃん
331296: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
曲がり方はウェイトの設定が滑らかでないように見えるけど、
もっと情報がないと適当な解答しか帰ってこないと思うよ
350348: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
そうします。
419406: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
木を見て森を見ずまさにこのことだな
424406: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とかいう中にあんだろうけど、それがわかんないとなんともだろうが)

つか課題なら講師に聞けばいいじゃん。授業料払ってんでしょ?
427406: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);で黒
でした。

ウインドウが生成されないでプログラムが動いてるって意味です。
外観の設定で視聴効果を切ればウインドウが生成されます。
パッケージが何かしら足りてないのでしょうか
428406:2010/05/19(水) 22:46:17
>>426
勉強ですがとりわけ何かの課題ってわけじゃないです。

そもそもプログラム自体の質問がしたかったわけではなく
正常に動作しないのはUbuntuに問題があるのではないかと
(パッケージが足りない等で)考えたんですが、
Ubuntuのスレで聞いたら、プログラム板行けって言われたんで
こっちで質問したわけです。
429デフォルトの名無しさん:2010/05/19(水) 22:46:47
俺OpenGL知らないUbun厨。>>419のサンプルがDLできないよ。
430425: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 に変えてみたらどうだろうか
432406: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
解決してないのになぜ消した
もう知らん
434425:2010/05/19(水) 23:29:46
>>432
何で0にして「ちゃんとグラデーション出来ました」と言うのだお前は。
0なら黒だろ。
いいからまず画面全体を1色で塗りつぶせ。
r,g,bの3回やれば全部推定できるから。
お前の説明は何をやったら何が起きたのか、さっぱりわからん。
435デフォルトの名無しさん:2010/05/19(水) 23:42:04
406氏の中では枠のないウインドウはウインドウではないということはわかった。
こりゃエスパーも大変だな。
436406: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
枠をウインドウって呼ぶもんだと勝手に思い込んでました。
437425: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の値は毎回違う。
438425: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
そうですか..
447439: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
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
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は今回書き込んだ箇所以外に適用することで
問題解決の糸口が見いだせそうな気がします。こちらのほうも模索してみます。

レス本当にありがとうございました。
最後に、返信が遅れてしまったことをお詫びします。
500439:2010/05/31(月) 23:49:56
flag...?
501デフォルトの名無しさん:2010/05/31(月) 23:52:18
ワリィ、JavaスレのHN残ってた。
502498: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
510509: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
射影行列を
ビューと同じサイズの正射影と入れ替えればいいんじゃね?
514512: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();
しておく事
516512:2010/06/04(金) 09:33:25
>>514
できた!超ありがとう!
一つ学習できたよ
517512: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
です。

破線が複数本表示されてしまう原因を知りたいのですが、
何かお分かりになる方が居られましたらご教示いただけると嬉しいです。
よろしくお願いします。
535534: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;
}
536534: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
まずはソースコードを読めるようになってからまた来てください。
560558:2010/06/10(木) 21:57:29
すいません、解決しました。
一応報告します。デプステストをオンにしたらちゃんと
前後関係正しく描画してくれました。
赤本のコードには書いてなかったのですが、環境によっては
オートでオンの状態になってるということですかね
561534: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
それってかなり複雑にならないかな?
重複頂点をインデックスに追加する度にインデックスがずれる事になるが…
577576: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つは動いた
586582: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ならいけるはず。
588582: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
趣味なら教えてやっても構わんが
大学の課題なら自分でやれよ
593582: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はエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。
632622: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で初期化することにします。
ありがとうございました。
635622: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となります。

これは根本的なところでどこか使い方を勘違いしているのでしょうか?
637636: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
普通に天球の極座標も理解出来てないと思う。
661651:2010/07/31(土) 12:34:43
>>658
ありがとうございます。参考にさせてもらいます。

>>659
そうなんですか。詰まったらまた質問するかもしれません。

>>660
授業の成果物作成で3Dグラフィックなんてやったことないのに作ることなってしまいました。
極座標でやろうと思ったんですけど意図した方向に回転しなくて別の方法に移りました。
662デフォルトの名無しさん:2010/07/31(土) 19:14:17
>>661
先は長そうだな。やめとけ
663651: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
移動・回転・拡縮をかけると、変換をかけたオブジェクトの座標軸も動くからな?
絶対座標で考えてはならない。
667651: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
677674:2010/08/02(月) 21:40:54
>>675
見えました。
678674: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で座標変換したいんですが、
どうすればいいでしょうか?
697デフォルトの名無しさん:2010/08/05(木) 01:42:06
どう変換したいんだよ。
698デフォルトの名無しさん:2010/08/05(木) 07:18:09
>>695
ないよ
699デフォルトの名無しさん:2010/08/05(木) 07:20:56
>>696
glRotatefのことは忘れて自分で回転行列作って掛ける
700デフォルトの名無しさん:2010/08/05(木) 19:49:39
>695
callocで確保した領域を与えたからといって問題が起こることは無いです。
うまくいかない原因は別にあります。

>696
多分OpenGLの座標変換の役割と仕組みが理解できていません。
赤本とか読むと良いと思います。
701デフォルトの名無しさん:2010/08/05(木) 21:00:50
gluLookAtがなんか腑に落ちない

eyeとlookのyが同じなら

xz平面に引いたグリッドが 横線に見えるはずなのに
上から見た視点になってる
702デフォルトの名無しさん:2010/08/05(木) 21:39:08
画像とコード上げてみ。
703デフォルトの名無しさん:2010/08/05(木) 23:37:12
>>702
eye.y = 2;
look.y = 2;

画像
http://www.uproda.net/down/uproda122512.jpg

ソース
http://www.uproda.net/down/uproda122513.zip

です。

描画手順は、下な感じです。
glMatrixMode(GL_PROJECTION);
glViewport(0, 0, width, height);
glLoadIdentity();
gluPerspective( 60, width / height , 1, 1000);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( eye[0] , eye[1] , eye[2] ,cent[0] , cent[1] , cent[2] , up[0] ,up[1], up[2] );

// for(...)
{
glPushMatrix();
drawGrid();
glPopMatrix();
}
704デフォルトの名無しさん:2010/08/05(木) 23:55:49
>>702
質問者が腑に落ちる回答を期待
705デフォルトの名無しさん:2010/08/05(木) 23:58:35
>>701
ファーストヒント:遠くの物は小さく見える。
ファイナルヒント:透視変換

OpenGL3.x, 4.x時代においてgluは使いたいけどそのまま使えない・・・もどかしい物になってしまった。
*但し非推奨機能を使わない場合に限る。
706デフォルトの名無しさん:2010/08/06(金) 00:00:28
グリッドは y = 0 平面。eye は (0, 2, -10) にあり、Zマイナス方向を見、Yプラス方向を上としている。
故に、視線の水平面 y = 2 より下にあるグリッド平面 y = 0を見下ろすよう、かのように描写されるのは自明。
707701:2010/08/06(金) 00:08:07
あああ
そうかパースかかってるのか
これであってるのか
アホでした。
ありがとうございます><。


708デフォルトの名無しさん:2010/08/07(土) 07:17:50
>>705
GLU3
ttp://dri.freedesktop.org/glu3/
もはや別物だけどな
709デフォルトの名無しさん:2010/08/10(火) 21:04:29
10.7でラデの糞みたいなバグ修正されてたんだな
褒めてやろう
710デフォルトの名無しさん:2010/08/11(水) 15:14:09
glBindTextureの意味がわからん。
別に呼ばなくても問題なく表示できた。
というか、glGenTexturesでテクスチャオブジェクトを生成するには個数しか指定できないし
それでどうやって関連付けられてるのかさっぱりわからん。
711デフォルトの名無しさん:2010/08/11(水) 16:58:18
glBindTextureの引数で指定した番号のテクスチャが有効になる。
テクスチャ周りの設定も現在有効な番号のテクスチャに対して行われる。

呼ばなくても反映されるとかは考えないほうがいいぞ。
712デフォルトの名無しさん:2010/08/12(木) 06:32:23
glBindTextureを呼ばない場合は0番のテクスチャに対して操作がされる
呼んでない状態はglBindTexture(GL_TEXTURE_2D, 0)が呼んであるのと同じ
複数のテクスチャを同時に扱うときにglBindTextureは必須
713デフォルトの名無しさん:2010/08/15(日) 14:38:15
glEnableClientState(GL_VERTEX_ARRAY);
 :
 :
glDisableClientState(GL_VERTEX_ARRAY);

というサンプルコードをよく見ますが、Enableしたままだと何か不都合があるのでしょうか?
714デフォルトの名無しさん:2010/08/15(日) 15:00:13
結構そこらへんの扱いはGPU・ドライバーによって違うというか適当だから、不必要なものまで有効化していた場合に不具合が出ることがある。
715デフォルトの名無しさん:2010/08/15(日) 21:54:27
ソフトウェアエミュレーションしつつ、まずい状態を指摘してくれるような
リファレンス実装があればいいんだけど
716デフォルトの名無しさん:2010/08/15(日) 22:41:12
C++ならこんな感じで
class Enabler : private boost::noncopyable
{
public:
 explicit Enabler(GLenum cap) : cap_(cap)
 {
  glEnable(cap_);
 }
 ~Enabler()
 {
  glDisable(cap_);
 }
private:
 GLenum cap_;
};
717デフォルトの名無しさん:2010/08/21(土) 08:45:50
C++だけど、glVertexPointerとglDrawElementsって第四引数をポインタで参照するから
頂点とインデックスをクラスのユニークなメンバ変数にしてる時なんかは、ポリゴンごとにインスタンス作らなきゃいけないよね
多数のポリゴンをディスプレイリストでまとめようとすると、ものすごく膨れあがる
みんなどういう風に構造化してるんだろう
718デフォルトの名無しさん:2010/08/21(土) 10:42:43
ちょっと何言ってるかわからないです
719デフォルトの名無しさん:2010/08/21(土) 11:12:30
俺もよく意味がわからなかった。
720デフォルトの名無しさん:2010/08/21(土) 11:44:21
>>717
インスタンスを作らずとも、頂点とインデックスのポインタをオブジェクトの数作ればいい。
つか、glVertexPointerはオブジェクトの数だけポインタが必要。
ポリゴンが100個あるなら、それぞれ100個のポインタ。
721デフォルトの名無しさん:2010/08/21(土) 12:27:31
ディスプレイリストにポインタ渡したら解放した時に危ないだろ
VBO使うか、素直にループで回しとけ
722デフォルトの名無しさん:2010/08/21(土) 12:36:03
は?
723デフォルトの名無しさん:2010/08/21(土) 14:30:27
ディスプレイリストってまだ現役だったのか
724デフォルトの名無しさん:2010/08/21(土) 14:33:30
もうdeprecated。
725デフォルトの名無しさん:2010/08/22(日) 09:54:24
>>720
やはり作らないといけませんか
一括で読み込めることを売りにしているのに、結局はオブジェクト分のポインタが必要になるなんて実に中途半端な設計の関数ですね・・・
まあ速度は改善されるのでしょうけど・・・せめてglDrawElementsのように読込み範囲を指定できるようにしてほしかった
可読性に欠ける気持ちの悪いソースになりそうです・・・
ありがとうございました
726デフォルトの名無しさん:2010/08/22(日) 12:16:29
glVertexAttribPointerARBとglDrawRangeElementsしか使ってない俺には
やっぱり何言ってるのかわからん
727デフォルトの名無しさん:2010/08/23(月) 01:11:41
まあ正直その辺のOpenGLの仕様はグダグダだよな。
APIとして非常に見通しが悪い。
だれかOpenGL Lite作ってくれ。
わりとマジだ。
728デフォルトの名無しさん:2010/08/23(月) 18:02:55
かといって手作り構造体+ビットフラグもちょっと・・・
729デフォルトの名無しさん:2010/08/23(月) 18:38:56
OpenSceneGraph
730デフォルトの名無しさん:2010/08/27(金) 20:48:15
glViewportでビューポート設定してもglClearすると全画面分クリアされちゃうのは仕様?
指定領域だけ色クリアするにはどうしたらいい?
731デフォルトの名無しさん:2010/08/27(金) 21:22:58
ディスプレイリストに線と点を描画する命令を格納するとき、line_switchによって線を描画するかどうか
決める関数を格納し、あるキーを押すとline_switchがトグルして再描画するようなプログラムを作っています。

作ってみると、line_switchはしっかりトグルしているのですが、線が描画されたり、消えたりしません。
あらかじめ、ソース内でline_switchを書き換えていると描画されたり消えたりします。
プログラム実行中だと変わりません。なぜでしょうか?

glNewList(・・・・・・);
if( line_switch ){
 glBegin(GL_LINE);
 ・
 ・
}
glBegin(GL_POINT);


glutPostRedisplay();
glEndList();
732731:2010/08/27(金) 21:24:30
すみません。
glutPostRedisplay();
はキーを押して、line_switchをトグルした後記述しています。
ディスプレイリストには記述していません。
733デフォルトの名無しさん:2010/08/27(金) 21:29:04
>>730
DEPTH_TESTをdisableしてクリアしたい色のポリゴンを描く
DEPTHBUFFERはglClearする

もしくはglClear()+glScissor() やったことないけど
734デフォルトの名無しさん:2010/08/27(金) 21:46:24
>>731
ディスプレイリストはOpenGLの命令のみを保存する。
命令リストの中にif文入れるとか、そこまでおいしい話はないよ。
735デフォルトの名無しさん:2010/08/27(金) 21:57:25
>>734
あ、そうなんですか。解決できそうです。ありがとうございます。
736デフォルトの名無しさん:2010/08/28(土) 01:04:33
このスレの9割ぐらいの質問はverいくつの仕様書のどの章を読めって言えば解決するんじゃないかと思う。
737デフォルトの名無しさん:2010/08/28(土) 01:06:05
このスレにかぎった事じゃない
738デフォルトの名無しさん:2010/08/28(土) 09:09:15
元々、芯のないブレ設計で、バージョンアップの度に二転三転するから体系的に学べるものでもない
巷に出回っているものも、バージョン表記すらない翻訳ソフトにかけただけのようなカタコトマニュアルばかりだしな
翌日には汎用的な命令がこっそりと大幅変更をされていて、混乱を招くだけのゴミ知識と化してたりすることが多いから
常に言語の最前線を追えるような奴じゃないとまず使えないな
学生さんには厳しい
739デフォルトの名無しさん:2010/08/28(土) 09:35:22
OpenGLって言語なのか?
740デフォルトの名無しさん:2010/08/28(土) 09:56:20
基本APIだけどシェーディングランゲージも含んでるから微妙
741デフォルトの名無しさん:2010/08/28(土) 13:44:07
>>736
じゃあお前はこれから9割ぐらいの質問に対しては、
ちゃんと仕様書の ver 番号と章番号だけで答えてくれよ
742デフォルトの名無しさん:2010/08/31(火) 22:08:54
矢印キーでオブジェクトが動くプログラムをglut + gluiで作っています。
gluiのサブウィンドウにあるチェックボックスをクリックすると、
メインウィンドウの画面の線が表示したり消えたりする動作をします。

チェックボックスをクリックすると、フォーカスがglui側のサブウィンドウに移ってしまい、矢印キーで画面が動きません。
メインウィンドウ画面を一度クリックするとフォーカスが元に戻って再度動くようになります。
この"メインウィンドウ画面をクリックする"という手順が面倒なので、
チェックボックスをクリックしてもフォーカスがメインウィンドウから移らないようにしたいのですが
いい方法はありますか?
743デフォルトの名無しさん:2010/08/31(火) 22:35:14
glutのキー入力を見るのをやめてプラットフォーム固有のAPIで直接キーの状態を見るとかすればいいんじゃないかな
744デフォルトの名無しさん:2010/09/01(水) 02:42:10
glui使ったこと無いんだけど、チェックボックスの処理の最後にglutSetWindowでカレントウィンドウをメインに戻しとけばいいんじゃないのかな
745デフォルトの名無しさん:2010/09/02(木) 21:40:08
>>743
>>743
ありがとうございます。試してみます。
746デフォルトの名無しさん:2010/09/05(日) 12:46:32
gluiで const char* を引数にとる関数で、char配列を渡すとコンパイルは通るのですが、
実行するとエラーで落ちてしまいます。なぜでしょうか。

void func()
{
char buffer1[32] = "test", buffer2[64];
strcpy(buffer2, "_test ");
strcat(buffer2, buffer1);

text->set_text( buffer2 ) //text は main()で生成したgluiのstatic_textのポインタです。
}

アプリケーションエラー
0x・・・・・の命令が0x・・・・・のメモリを参照しました。メモリがreadになることはできませんでした。

環境はVC++2008, OpenGL + gluiです。
747デフォルトの名無しさん:2010/09/05(日) 14:01:31
>>746
× OpenGL + glui
○ glut + glui
でした。すみません。
748デフォルトの名無しさん:2010/09/05(日) 14:13:52
buffer2をグローバルスコープに置いてみ。
749デフォルトの名無しさん:2010/09/05(日) 16:06:05
>>748
ありがとうございます。
buffer1,2 ともにグローバルスコープでやってみました。
出来ませんでした。すみません。

あと、引数の部分を "test" みたいに定数でやってもエラーがでます。関係がありますか?
gluiの配布サンプルプログラムは動くんですが、なぜか作っているプログラムだと動きません。
750デフォルトの名無しさん:2010/09/05(日) 16:15:27
textそのものが間違ってたりして。
main()も見ないとなんとも言えないよ
751746:2010/09/05(日) 16:26:23
char *look_pos[] = {"theta = 0", "phi = 0"};

int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初期化

main_window = glutCreateWindow("test"); //ウィンドウを生成

/*glui UI設定 */
glui = GLUI_Master.create_glui_subwindow(main_window, GLUI_SUBWINDOW_RIGHT); //gluiサブウィンドウ生成
glui -> set_main_gfx_window( main_window ); //メインウィンドウに結合

GLUI_Panel *star_search_panel = glui->add_panel("Search"); //探索系パネル
GLUI_Listbox *star_list_ = glui->add_listbox_to_panel(star_search_panel, "Select Star", &star_list_number, -1, DummyCB);
glui->add_button_to_panel(star_search_panel, "Search", -1, Star_Search);
glui->add_button_to_panel(star_search_panel, "Look Up", -1, Star_Look_Up);

theta_text = glui->add_statictext(look_pos[0]);
phi_text = glui->add_statictext(look_pos[1]);

init();
object();
Init_Look();
glutMainLoop(); //無限ループで待受
return 0;
}

つづく
752デフォルトの名無しさん:2010/09/05(日) 16:29:34
void Refresh_Text(void)
{

/* 角度のテキストを更新する */
sprintf(buffer1, "%5.1lf", now_houi);
strcpy(buffer2, "houi = ");
strcat(buffer2, buffer1);
//look_pos[0] = buffer2;
theta_text->set_text(buffer2);

sprintf(buffer1, "%5.1lf", now_keisha);
strcpy(buffer2, "keisha = ");
strcat(buffer2, buffer1);
//look_pos[1] = buffer2;
phi_text->set_text(buffer2);
}

この関数を、display()で呼んで現在の角度をテキストで表示しています。
look_pos[]がコメントになっているのは、ポインタで試したけど駄目だったということです。
753デフォルトの名無しさん:2010/09/05(日) 17:01:57
デバッガー使えば?
754デフォルトの名無しさん:2010/09/05(日) 17:27:45
>>752
GLUI_StaticTextのset_textの話だと思うけど。
set_textは内部でバッファ確保してないからな、ポインタ格納してるだけだから。
phi_text->set_text実行した時点でtheta_textの内容も変わるからな。

それと肝心なbuffer1とbuffer2の定義がないのはわざとか?
755デフォルトの名無しさん:2010/09/05(日) 17:34:47
756デフォルトの名無しさん:2010/09/05(日) 17:35:41
もういいや、バカの相手は時間掛かる
757デフォルトの名無しさん:2010/09/05(日) 17:57:05
ヒント 同じ穴の狢
758デフォルトの名無しさん:2010/09/05(日) 18:12:25
>>754
ということは、theta_textと,phi_textの文字列を格納しておくchar配列を
グローバルスコープに置いてそのポインタを渡せば通るのかな?と思い
試してみました。

char theta_value[32], phi_value[32]; //新しくchar配列を追加。テキストの文字列を代入

void Refresh_Text(void)
{
char buffer[16];
/* 角度のテキストを更新する */
sprintf(buffer, "%5.1lf", now_houi);
strcpy(theta_value, "houi = ");
strcat(theta_value, buffer);
look_pos[0] = theta_value;
theta_text->set_text(look_pos[0]);
}

これに変更して実行してみましたが、やはり落ちてしまいました。
759デフォルトの名無しさん:2010/09/05(日) 19:30:58
printf("%x", theta_text);
したら?
760デフォルトの名無しさん:2010/09/05(日) 19:44:07
>>759
c60da482
とでました。ポインタはしっかり設定されていると思います。
761デフォルトの名無しさん:2010/09/05(日) 19:46:44
とりあえず、全ソースコードをどこかに上げよう
部分的なコードだけでは推測しかできない
762デフォルトの名無しさん:2010/09/06(月) 02:24:32
http://home.puny.jp/uploader2/download/1283707374.zip
ソースのアップが遅れてしまいました。すみません。

付属のヘッダーはセンサー用のファイルです。
763デフォルトの名無しさん:2010/09/06(月) 03:34:13
で、パスは?
764デフォルトの名無しさん:2010/09/06(月) 03:46:22
>763
いろいろ試したら
glui
がpasswdみたい
765デフォルトの名無しさん:2010/09/06(月) 03:47:51
パスがわかったのでダウンロードしてみたが、なんか全然違う所に原因があんじゃね
データ読んだりCOMポート開けたりSheelExecute(こえー)とかgetchar()とか外したらエラーが出ずに動いたけど?
766デフォルトの名無しさん:2010/09/06(月) 04:20:34
>>765
こええよw
767デフォルトの名無しさん:2010/09/06(月) 04:45:31
>>763
すっかり忘れてました。すみません。passは"gl"です。

>>765
その部分ですか。とりあえず要件を満たすような動作を調べながら書いたので
その部分にエラーがあると直しようがないかもしれませんorz
特にセンサー部分はさっぱりですので。
768デフォルトの名無しさん:2010/09/06(月) 05:03:49
可笑しいなそのロダ。最初の二文字がglならパス通るとか。
769デフォルトの名無しさん:2010/09/06(月) 13:41:46
パスワードを平文で保存してるなんて…
770デフォルトの名無しさん:2010/09/06(月) 22:26:31
最初の2文字だけハッシュ化してるのかもしれんぞ
771デフォルトの名無しさん:2010/09/06(月) 23:29:33
すげーロダだなwww
772デフォルトの名無しさん:2010/09/07(火) 12:42:21
Perlのcryptか
773デフォルトの名無しさん:2010/09/07(火) 19:22:09
引数の順番間違えてる馬鹿発見
774デフォルトの名無しさん:2010/09/08(水) 22:31:52
質問です
法線を自動的に生成する命令として
glEnable(GL_AUTO_NORMAL);
ってのが良く紹介されてるんですが、これってGL_QUADSなどで
自分で図形を表示するときには使えないんですか?

というか上記の命令で自動的に法線が生成され、照明が適用されるようになったことが
一度もなくて、毎回自分で面の法線を頂点ごとにいちいち計算してglNormal3dとかで
設定してるんですけど、皆さんのところではちゃんと法線が自動で生成されるんですか?
775デフォルトの名無しさん:2010/09/08(水) 22:34:49
法線を自動生成する命令は無いですよ。
776デフォルトの名無しさん:2010/09/08(水) 22:59:53
>法線を自動生成する命令は無いですよ。
レス見てはっと気づいて赤本(原著第五版日本語版第2刷)を確認したら
GL_AUTO_NORMALなんていう命令は載ってない・・・
まさかデマなの!!?

とりあえず法線計算はいつも通り自前ですることにします
でも法線のスムージングとか超めんどくさいんだよな・・・
Java3DのNormalGeneratorみたいなのが欲しいところです
777デフォルトの名無しさん:2010/09/08(水) 23:18:11
それくらい自前で作ってもすぐですって。がんばれがんばれ。
778デフォルトの名無しさん:2010/09/08(水) 23:33:11
1. 全部の法線を0にする
2. 全ての三角形について
 2.a. 三角形の法線を外積で求める tn = (v1-v0)x(v2-v0)
 2.b. 三角形の三つの頂点の法線に tn を加算
3. 全部の法線を正規化する

ほら簡単♪
2.の段階で正規化とか余計なこと考えなきゃ早いのよ〜。
779デフォルトの名無しさん:2010/09/09(木) 00:42:57
The OpenGL
Graphics System:
A Specification
(Version 2.1 - July 30, 2006)
でAUTO_NORMALを検索してもヒットしないからそんなん使わないほうがいいんじゃない?

>>778
2の段階で法線ベクトルを正規化しないことによって
三角形の面積比が入った頂点法線ベクトルが得られるんだよね。
これをあるサイトで初めて知ったときはこいつ天才かと思ったよ。
俺がバカなだけかもしれんが。

でも頂点法線ベクトルをGPUで計算しようとするとちょっと面倒じゃない?
頂点毎に隣接する頂点のインデックスを保持々するとかしないといけないし。
将来ベクトルの足し算がatomicにできれば楽になるかも
780デフォルトの名無しさん:2010/09/09(木) 07:55:24
GL_AUTO_NORMALって
ベジェパッチ作成する
glEvalMesh2とかに適用される奴だよ
781デフォルトの名無しさん:2010/09/09(木) 14:26:30
GLSLを用いたフラグメントシェーダ内部で
glEnable(GL_LIGHTx)でどの光源が有効になっているかを知る方法があれば
教えていただけないでしょうか?
782デフォルトの名無しさん:2010/09/09(木) 14:50:15
シェーダー使うんならもう3.0以降にあわせてLIGHT使うのやめちまえよ。
uniformでライトの色、場所とかをMat4なりで渡すといい。
有効になってる光源も適当な変数で知らせてやればいいんじゃないか。
783デフォルトの名無しさん:2010/09/09(木) 22:21:39
OpenGL Shading Language Specification v1.20
の7.5 Built-In Uniform State
を読みなさい。

それとver3以降の仕様書のThe Deprecation Modelの章も読みなさい。

これからはDeffered shadingの時代かもしれない。
784デフォルトの名無しさん:2010/09/09(木) 23:25:30
半透明がなぁ・・・。
785デフォルトの名無しさん:2010/09/10(金) 13:19:05
質問です。
立方体をOpenGL ES(iPhone)で描画するプログラムを作っています。
行列で変換(回転)後,ライティング用の法線の値を取り出すことはできるでしょうか?
立方体の手前に見えている面を判別するのに,法線の情報を使いたいのです。
786デフォルトの名無しさん:2010/09/10(金) 13:51:19
できません
逆に視線をモデルのローカル座標に変換すればモデルの法線情報をそのまま使えると思います
787デフォルトの名無しさん:2010/09/10(金) 13:57:30
>>785
ありがとうございました。
できる/できないの切り分けができただけでも,調べる時間が省けて助かります。
自前でがんばってみます!
788デフォルトの名無しさん:2010/09/10(金) 17:59:41
781です。
>>782
レスありがとうございます。
確かに、固定パイプラインの関数の多くが廃止予定になっているので、
そういう意味では全て移行してしまったほうがいいのかもしれません。
しかし、今回の自分の場合、既存のグーローをフォンに変更したいだけなので、
出来るだけソースコードの変わらない方法を模索したいと思っています。

>>783
レス、ありがとうございます。
uniform variableのほうは見てみたのですが、有効無効を調べる箇所は
見つかりませんでした。無効になっていれば、
ambient、diffuse、specularのいずれかの値が0.0になる、などであれば
良かったのですが、そういうこともありませんでした。

もう一度自力で調べてみます。レス、ありがとうございました。
789デフォルトの名無しさん:2010/09/15(水) 01:52:46
>>788
遅レスだが、解決に行き着いていなかったようなので

自分はシェーダーで固定パイプライン機能を使用しないのだが、
glEnable()で指定する各ステートはシェーダーから参照できなかったような

もともとのProgramable shaderの生い立ちから、LIGHT0のみなら、LIGHT0のパラメータのみ参照するシェーダーをロード。
LIGHT0とLIGHT1を使用するなら、LIGHT0とLIGHT1を参照するシェーダーをロードっていう流儀なんだろうね

どうしても1つのコードで処理させたいなら、uniformでenable相当の値を渡して、分岐させればよいかと
790デフォルトの名無しさん:2010/09/21(火) 02:22:22
glPointParameterfvを使った後
無効化するにはどうしたらいいのでしょうか?

使用以後POINT系のパラメータが
のっとられたままになってしまいます。(pointSizeとか)
791デフォルトの名無しさん:2010/09/21(火) 11:54:58
デフォルト値を設定し直す
面倒なら glPushAttrib 〜 glPopAttrib で
792デフォルトの名無しさん:2010/09/21(火) 16:35:06
板違いならすみません。
joglのopenglなんですがGLCanvasとJscrollpaneの組み合わせて
スクロールしたところ、スクロールされて出てくるはずのキャンバス
部分が表示されず、またスクロールで見えなくなるはずの上部が
フレームの枠を超えて飛び出します。
組み合わせて使えないのでしょうか?
793デフォルトの名無しさん:2010/09/21(火) 17:05:32
AWTとSwing混ぜるな危険
Frame, Button, ScrollPane, GLCanvas ・・・ AWT
JFrame, JButton, JScrollPane, GLJPanel ・・・ Swing
実際には混ぜて使える状況もあるけどまだ理解できてないならやめた方が無難
794デフォルトの名無しさん:2010/09/21(火) 20:14:05
最近のアップデートで制限ゆるくはなったんだけどそれでも制約あるんだよね
795デフォルトの名無しさん:2010/09/21(火) 23:14:01
opengl で height fieldを表示したいのですが
どーにもこーにもTIPSが無く
796デフォルトの名無しさん:2010/09/21(火) 23:38:06
テクスチャ参照して頂点移動させるだけじゃないのか?

http://developer.download.nvidia.com/SDK/10/opengl/samples.html
これのTransformFeedback使ったやつなんかは、ハイトマップが主題ではないがハイトマップ参照してるんじゃないの。
797デフォルトの名無しさん:2010/09/22(水) 01:51:20
ttp://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm
このサイトは参考になるとおもう。
798デフォルトの名無しさん:2010/09/23(木) 16:28:26
>>795
ここも参考になりそう

http://nehe.gamedev.net/
ここの [OpenGL Tutorials] の Lessons 34 に
2D テクスチャから滑らかなハイトフィールドを作るコードが
解説付きである。
799デフォルトの名無しさん:2010/09/24(金) 13:47:58
円系のレイヤードウィンドウをOpenGLで描画するということは可能でしょうか?
800デフォルトの名無しさん:2010/09/24(金) 15:06:28
可能。FBO使って円を描画、アルファ値持ったデータとして取得・設定。
801デフォルトの名無しさん:2010/09/24(金) 20:52:32
>>800
ありがとうございます
早速勉強してみます
802デフォルトの名無しさん:2010/09/24(金) 23:32:01
>>791
遅くなりましてすいません。

まさかぁ〜と思ってやってみたら
上手くいきました!

ありがとうございました!
803デフォルトの名無しさん:2010/09/25(土) 00:42:46
OpenGLでffmpegを使って動画を描画したいんだけど、似たことやってるようなオープンソースかサイトってある?
804デフォルトの名無しさん:2010/09/25(土) 01:03:12
ffmpegじゃなければいくらでもありそうだけど…
自分もOggTheoraを立方体に貼り付けてみたことならある
805デフォルトの名無しさん:2010/09/25(土) 02:14:16
VLC MediaPlayerやSMPlayera辺りのメディアプレーヤーは
OpenGLでの描画に対応してたはずだから調べれば情報が出てくるかもね
806デフォルトの名無しさん:2010/09/29(水) 18:09:52
(0,0,0)と(1,0,0)を結ぶ線があって
それを平行移動、回転して
(i,j,k)と(i+x,j+y,k+z)を結ぶ線にしたいのですが
どうもうまくいきません
どなたか教えて下さい
807デフォルトの名無しさん:2010/09/29(水) 18:11:17
>>806
日本語大丈夫?
808デフォルトの名無しさん:2010/09/29(水) 18:34:12
(i,j,k)と(i+x,j+y,k+z)を結ぶ線を描いてはどうか
809デフォルトの名無しさん:2010/09/29(水) 18:39:55
>>806
ヒント:移動、回転(角度は逆三角関数と、3平方の定理使ったらわかるよね)、拡大(これもベクトルの長さからわかる)
810デフォルトの名無しさん:2010/09/29(水) 18:44:52
普通に回転移動行列作って掛ければいいだけじゃ
811デフォルトの名無しさん:2010/09/29(水) 21:50:36
>>808
線だけじゃないので
平行移動、回転を使った方が楽なんです

>>809
回転ってやっぱり一発じゃ無理ですよね
812デフォルトの名無しさん:2010/09/29(水) 23:00:34
(x,y,z)に適当なベクトルを外積して2本の直行するベクトルを決めれば、変換行列は求まる
813デフォルトの名無しさん:2010/09/30(木) 00:04:34
↓のように書いたのですが
矢印の頭の方向がおかしくなってしまいます

glPushMatrix();
{
glTranslated( i, j, k );

//棒部分
glBegin( GL_LINES );
glVertex3d( -x/4, -y/4, -z/4 );
glVertex3d( x/4, y/4, z/4 );
glEnd();

norm=sqrt(x*x+y*y+z*z);
theta1 = acos(x/norm);
theta1 *= 180/PI;
if(y==0) glRotated( theta1, 0, 1, 0 );
else if(z==0) glRotated( theta1, 0, 0, 1 );
else glRotated( theta1, 0, 1/y, -1/z );

//頭部分
glBegin( GL_TRIANGLE_FAN );
glVertex3d( norm/4, 0.0, 0.0 );
glVertex3d( norm/4-0.2, 0.05, 0.0 );
glVertex3d( norm/4-0.2, 0.0, -0.05 );
glVertex3d( norm/4-0.2, -0.05, 0.0 );
glVertex3d( norm/4-0.2, 0.0, 0.05 );
glVertex3d( norm/4-0.2, 0.05, 0.0 );
glEnd();
}
glPopMatrix();
814デフォルトの名無しさん:2010/09/30(木) 01:57:20
>>813
自己解決しました
acosの返り値の範囲を考慮してませんでした
815デフォルトの名無しさん:2010/10/01(金) 23:02:26
フレームバッファオブジェクトと単精度浮動小数点バッファを用いてSSAOを
実装したいと思っています。
ただ、デプスバッファ、法線バッファとして単精度浮動小数点バッファを
作成するところで上手く出来ていないようで、レンダリングが正常に行えません。

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA16F,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,0);

以下の構成でレンダリングに失敗しました。
CPU:C2D E6600
GPU:Radeon X1950XTX

もう一つの開発環境(以下)では正常にレンダリングが行えました。
CPU:C2D T9600
GPU:Nvidia QuadroFX 2700M

X1950XTXが少し古いのに起因しているのかと思ったのですが、
ハードウェア的には浮動小数点バッファを扱えるという記述をいくつか見つけたので、
もしRadeonでOpenGLを浮動小数点バッファを作成している、という方がいましたら
教えていただけないでしょうか?


816デフォルトの名無しさん:2010/10/01(金) 23:11:14
>>815です。追記
RadeonのCatalystドライバのバージョンは2010.0210.2339.42455です。
817デフォルトの名無しさん:2010/10/02(土) 01:58:09
勿論glGetErrorでエラーがないのは確かめたんだよね?
FBOが不完全なんてこともないんだよね?
818デフォルトの名無しさん:2010/10/02(土) 05:45:17
>>815
揚げ足とるわけじゃないが、記述を見かけたなんて言ってないで
glGetString()で自身の環境で機能を確認すれば言いだけの話
その方法を知っていてやらないのは駄目だろ

あとは旧ATIのGLドライバは、GLの規格に厳密すぎる所がある
ちゃんとリファレンス読んで、その通りに実装しないとエラーになる

同じコードで、NVIDIAでは動いて、ATIで動かないなんてザラ
でネット拾ったり、本なんかに載ってるコードを
リファレンス通りに修正するとATIでも動くようになるw

ATIボードの機能が有効なのにNVIDIAでしか動かないなら、この辺りじゃね
819デフォルトの名無しさん:2010/10/02(土) 09:33:48
>>817
レス、ありがとうございます。
glGetErrorではエラーは吐きませんでした。
FBOはCOLOR_ATTACHMENT0_EXT、DEPTH_ATTACHMENT_EXTは設定していますが(共にテクスチャ使用)、
ステンシルに対しては使用しないので設定していません。
一応レンダーバッファのほうで設定してみます。

>>818
レスありがとうございます。
使用可能かどうかはglGetStringは使用していないのですが、
OpenGL Extensions Viewer 3.32のほうで確認を行いました。
(GL_RGBA16,GL_RGBA_FLOAT16に使用可能のチェック有)

確かにATIのドライバは仕様に厳格なところがありますね。
GLSLコードを書くときもよく弾かれてました。
Nvidiaは逆に良くも悪くも柔軟+最適化されていて判断に困ることがw;
厳格なATIで動けばNvidiaはまず動く、というのが自分の考えなので
ATIで動かないコードは書きたくないなぁと思って・・・。なかなか難しいですね。

820デフォルトの名無しさん:2010/10/02(土) 13:51:15
>>819
いや、不完全ってのはglCheckFramebufferStatusで
ちゃんとGL_FRAMEBUFFER_COMPLETEが返ってくるか確かめろってことだろ。
821デフォルトの名無しさん:2010/10/02(土) 15:20:19
すみませんが質問させて下さい…。
glBegin()〜glEnd()の間に行列操作を入れたいのですが、glBegin()〜glEnd()間の
関数制限で実装出来ずに困っています。

そういう事ってOpenGLではどうやっても出来ないのですか?
宜しくお願いします。
822デフォルトの名無しさん:2010/10/02(土) 15:47:15
glEndして改めてbeginするなり、入力する座標を変換して入れるなり幾らでも方法はある。
キミがアホなだけ。
823821:2010/10/02(土) 16:29:04
レス有難うございます。

座標変換を外でやって実装する方法はやりました。
(それでコードやデータに問題が無いのを確かめたので…)

今やりたいのは、GL_TRIANGLE_STRIP 等の途中で行列演算が
挟みたい状態ですので、途中でEnd()〜Beginも挟めずに困っています。
824デフォルトの名無しさん:2010/10/02(土) 17:46:05
822の言う、入力する座標を変換して入れるってのは、GLまかせでなく自分で座標変換を計算するってことでしょう
自分で (C言語の + 演 算子や * 演算子や sin 関数、cos 関数等を使って) 行列の計算をするのにEndもBeginも要らない
825デフォルトの名無しさん:2010/10/02(土) 17:47:22
無理だしやるべきではない

826デフォルトの名無しさん:2010/10/02(土) 21:13:45
>>823
glBegin()〜glEnd()の間に実行できるGL命令の種類は極めて限られています。
基本的には、頂点アトリビュートの変更しかできないと思ってください。
行列の変更も無理。

同じ事をやりたいなら、行列を変更したい部分でストリップを切って、
別の行列の元で別のストリップとして描画するしかありません。
(切ったストリップ間は適当なTRIANGLEなりなんなりでつなぐ)

頂点シェーダが使えるなら、頂点ごとに別の行列を参照することで
821さんのやりたいことができますけどね。
827デフォルトの名無しさん:2010/10/03(日) 00:06:50
行列パレットでもできるね。
828821:2010/10/03(日) 01:11:35
みなさんご親切にありがとうございました。
基本的にはOpenGLの機能としてはシェーダを使わないと無理という感じなのですね…。

大変参考になりました。有難うございました。m(_ _)m
829デフォルトの名無しさん:2010/10/03(日) 01:26:08
なぜシェーダを使わないと無理とか言う結論になる
830デフォルトの名無しさん:2010/10/03(日) 01:56:47
ごめん行列パレット完全に忘れてたww
831デフォルトの名無しさん:2010/10/03(日) 01:59:53
そういう問題か。
832デフォルトの名無しさん:2010/10/03(日) 02:04:09
じゃぁどういう問題なの?
833デフォルトの名無しさん:2010/10/03(日) 02:38:29
オブジェクトを分割して描画するって言う考えには何故か至らんらしいな。
834デフォルトの名無しさん:2010/10/03(日) 02:57:24
(゚д゚) ・・・。

・・・・・・・えーーーーと・・・・????
835デフォルトの名無しさん:2010/10/03(日) 07:31:50
CPUで計算できる頂点変形モデルを描画するのにシェーダーが必須なわけがないだろ
836デフォルトの名無しさん:2010/10/03(日) 10:31:56
そもそも元発言者が本当は何をやりたいのかがよくわからん。
通常はglBeginを始めた時点で全てのデータは既知(固定)だ。
glBegin~glEndの中でこねくりまわす必要は普通はない。

837デフォルトの名無しさん:2010/10/03(日) 11:26:26
スキニングしたいってことかと思った。
なら頂点シェーダーか行列パレットであってるでしょ。
838821:2010/10/03(日) 11:52:24
>830
すみません。
「行列パレット」という機能がシェーダの機能の一部なのだと
勘違いしてしまいました。
「行列パレット」を使えば出来そうなのですか!?

>833
>826さんにも同様のアドバイスを頂きましたが、TRIANGLE_STRPI中の
プリミティブを分割するとなると、結局プリミティブを分割する時点で
一番最後の関連する頂点座標を個別計算しておく必要が出てきてしまい、
処理がとても煩雑になってしまうので…。
839デフォルトの名無しさん:2010/10/03(日) 13:08:20
>>838
行列パレットでできます。というかまさに821さんのやりたいことを実現するための機能です。
もっとも、821さんがお使いの環境で行列パレットが使用可能かどうかは分かりませんが・・・。
840821:2010/10/03(日) 13:38:42
>>839
有難うございます!
行列パレット関係でググってみたところ、「ボーンの数だけ行列をあらかじめ計算して
保存しておいて(マトリックスパレット)、あとはこれとデータをGPUにおくってやればOK」
という感じの、自分がやりたい方向性の記事が見つかりました!

ですが、>839さんのいうように、普通に使える機能ではなさそうな感じで、しかも
導入ページみたいなものも無さそうで難しそうですね…。
841デフォルトの名無しさん:2010/10/03(日) 13:47:39
>>840
もしかして拡張機能の取得の仕方が分からないですか?
環境(OS)と、グラフィックスカードは何をお使いで?
842デフォルトの名無しさん:2010/10/03(日) 14:08:34
821が何をしたいかがわからないな。
なぜポリゴン描画中に行列の操作が必要だと思ったのかわからないし、
具体的にどんなモデルを描画しようとして困ってるとかも言った方が答えやすいよ。
843821:2010/10/03(日) 14:14:03
>>841
はい、拡張機能関連が正直言って良く分かっていない状態です。
------------------------------------------------------
OS:Windows7
ビデオチップ:(GeForce9400/PCI/SSE2)
OpenGL:Version3.0( OpenGL Extensions Viewer3.32より )
------------------------------------------------------
ここにfreegltとglew-1.5.6-win32.zipを入れた状態です。

ですが、glewは上手く入っていない感じで、

glewInit()が「Missing GL version」で失敗してしまったり、
glewIsSupported("GL_VERSION_1_2")がfalseを返したりしています。

>>842
一般的ではないモデルデータで情報共有できないのですが、そのモデルデータのデータ構造が
そうなっているのです。
(プリミティブの頂点リストの中に行列の差し替えがコマンドとして入っていて、それらにはノードの
計算結果を入れておく構造)
844デフォルトの名無しさん:2010/10/03(日) 15:22:11
>>843
環境的には、行列パレット使えそうですけどね。
僕はGLEWじゃなくてGLeeばっか使ってるので、エラーはよく分からんw
もしできるなら、GLeeの方で試してみるとか?(「glee opengl」でぐぐれ)

ARB_matrix_paletteに関しては、さすがに説明面倒臭いんでリファレンス見てください。

しっかし気持ち悪いモデルデータ使ってますねw
僕が知らないだけで、そういうデータ構造って割と一般的だったりするのかなぁ。
845821:2010/10/03(日) 15:44:39
>>844
ご親切に有難うございます!
色々トライしてみます。
本当に有難うございましたm(_ _)m
846デフォルトの名無しさん:2010/10/03(日) 15:49:59
>気持ち悪いモデルデータ
DirectXも昔はそういう感じだったんだけどね
821がなんかの移植をやってるならできれば両方に詳しいような人を捕まえたほうがいいと思う
847デフォルトの名無しさん:2010/10/03(日) 16:16:44
今も頂点シェーダー使えないコンシューマーはそんな感じだから別に気持ち悪いとは思わないな。
848デフォルトの名無しさん:2010/10/03(日) 16:27:10
>>846-847
んー、いや、バッチの中に色々なコマンドが入ってるのは分かるんですよ。
ただ、821さんの話だと、一つのストリップを構成する頂点リストの中に、
行列操作コマンドが入っているような感じを受けたので。(合ってるのかなぁ?)
さすがに、DirectXやコンシューマ機でも、そういう形ではデータ保持しないですよね。多分。
いや、メモリ上でのデータ構造としてはナシとしても、ファイルフォーマットとしてはアリなのかな??
849デフォルトの名無しさん:2010/10/03(日) 16:53:02
821が勘違いしてるに10^10ジンバブエドル
850デフォルトの名無しさん:2010/10/03(日) 22:20:49
>>844
最近のビデオカードでは GL_ARB_matrix_palette や GL_ARB_vertex_blend って本当にサポートされているんでしょうか。
手元の Radeon HD 4850 を OpenGL Extension Viewer で調べてみても
Extensions には GL_ARB_matrix_palette も GL_ARB_vertex_blend の文字がありません。

このサイトで表示されるビデオカードは全部 false (未サポート)ですね…。
http://www.kludx.com/capability.php?capability=463
http://www.kludx.com/capability.php?capability=440

サポートしている PC 用ビデオカードって本当にあったんだろうか…という気がしてきました。


851デフォルトの名無しさん:2010/10/03(日) 22:45:13
いまどきみんなシェーダでやってくださいだと思います
852821:2010/10/03(日) 23:05:12
>>850
自分の環境では OpenGL Extention Viwer でチェックがついていたので
運よく使えるみたいです。


折角みなさんに ARB_matrix_palette を教えていただいたのですが、
リファレンスを見てもサッパリ使い方が分かりません。
(↓リファレンスはこれで合っていますか?)
ttp://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt


glCurrentPaletteMatrixARB (GLint index);
glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, GLvoid *pointer);
glMatrixIndexubvARB (GLint size, GLubyte *indices);
glMatrixIndexuivARB (GLint size, GLuint *indices);
glMatrixIndexusvARB (GLint size, GLushort *indices);

これらの概要というか使い方を知っている方がおられたらご教授ねがえませんでしょうか?
お願いばかりで本当にすみません…。
853デフォルトの名無しさん:2010/10/03(日) 23:25:28
ARB_matrix_paletteをサポートしてるハードって一体何使ってるのか気になる
Extension Viewerのデータベースには一個もないよね
854デフォルトの名無しさん:2010/10/03(日) 23:42:03
>>852
有効化は glEnable(GL_MATRIX_PALETTE_ARB);
行列パレットは glMatrixMode(GL_MATRIX_PALETTE_ARB); と glCurrentPaletteMatrixARB(i); で選択して glLoadIdentity 他で設定する
各頂点に glWeight{b,s,i,f,d,ub,us,ui}vARB で1つ以上のウェイト値を指定する (w_0〜w_n)
各頂点に glMatrixIndex{ub,ui,us}vARB で1つ以上のインデックス番号を指定することによって、さっき設定した行列から使うものを選択する (M_0〜M_n)
座標変換は (xe,ye,ze,we) = sum(w_i * M_i * (xo, yo, wo, zo)) のように計算される (i=0〜n)
およそこんな感じじゃないでしょうか? そのリファレンス読む限り
正確なところはもう一度自分で読み直してみてください、必要なことは一通り書いてあるように思います
855821:2010/10/04(月) 01:57:41
>>854
有難うございます。さっそく少しいじってみたところ、

glEnable(GL_MATRIX_PALETTE_ARB);
glMatrixMode(GL_MATRIX_PALETTE_ARB);
glCurrentPaletteMatrixARB(0);

と順番に呼んだ時点でアプリケーションエラーで停止してしまいました。
明日、英語をじっくり解読して原因を調べます。
本当にご親切に有難うございました。
856デフォルトの名無しさん:2010/10/04(月) 09:29:35
>>855
glCurrentPaletteMatrixARB()の関数ポインタがNULLになってないかな。
デバッガで(printfでもいいけど)要確認。
857デフォルトの名無しさん:2010/10/04(月) 15:37:19
>>853
組込でよければ PowerVR MBX (OpenGL ES 1.1) にはある模様。

Part2 の339以降を読むと2003年の頃の状況がわかってとても参考になる…。
ttp://pc5.2ch.net/tech/kako/1039/10399/1039984523.html
…読めば読むほど勉強する気が失せてきた ('A`)
858デフォルトの名無しさん:2010/10/04(月) 18:28:06
読んだけど錯綜していて結局よくわからないな。オレの直感が触っちゃダメといっている。
シェーダー使わないスキニングの需要はあると思うんだけどね……
何というかOpenGLにもいろいろ残念な仕様がある。
859デフォルトの名無しさん:2010/10/04(月) 22:12:14
三次元で立方体を描画しているときに二次元の三角形を
画面に表示したい場合はどのようにすればいいのでしょうか?
(三角形をglVertex2fみたいにウィンドウの座標で表示したい、ということです。)

方法を検索しようにも用語がわからず困っています。
860デフォルトの名無しさん:2010/10/04(月) 22:40:26
gluOrtho2D
861デフォルトの名無しさん:2010/10/05(火) 03:15:43
gluUnProject
862デフォルトの名無しさん:2010/10/05(火) 03:44:02
単純にProjectionMatrixをOrthogonalに変えて描画してもいいだろう。
ただこの場合気をつけなければいけないのはz値の処理がPerspectiveとOrthogonalで違うこと。
863デフォルトの名無しさん:2010/10/05(火) 07:55:44
>>860-862
ありがとうございます。検索してみます。
864デフォルトの名無しさん:2010/10/05(火) 18:05:35
glRasterPos2iとglDrawPixelsを使って
画像を表示するプログラムを作ったのですが、
ウインドウの拡大縮小に合わせて
画像の大きさも変わるようにできますか?
865デフォルトの名無しさん:2010/10/05(火) 18:08:33
ウィンドウの拡大縮小に合わせて glPixelZoom を使ってください
866デフォルトの名無しさん:2010/10/05(火) 18:09:04
できます。
867デフォルトの名無しさん:2010/10/05(火) 18:18:48
俺もちょうど同じ事知りたかったところだ!!
ありがとん
868デフォルトの名無しさん:2010/10/05(火) 19:39:31
画面覆うテクスチャ使ったほうがいいんじゃないか?
869デフォルトの名無しさん:2010/10/06(水) 00:05:44
GPUレイトレやるときは画面全体を覆う矩形をレンダリングして
フラグメントシェーダで全ピクセル毎に計算やるのが主流だ。

glDrawPixels、glPixelZoomのようなCore profileに含まれていない関数を使うのはやめて
ポリゴンとテクスチャで2D処理したほうがいいんじゃないかな。
870デフォルトの名無しさん:2010/10/06(水) 11:12:33
GPUレイトレやるときは画面全体を覆う矩形を
glRectf()で描くのが俺のジャスティス!
871821:2010/10/06(水) 13:28:27
>>856 有りがとうございます!

printf("func = %x\n", glCurrentPaletteMatrixARB );

でのテスト結果はご指摘の通り0でした。
これってOpenGLが拡張機能に対応していないっていう認識で良いのしょうか?

自分のPC環境ですが、Extention Viewer で全ての機能がチェックになっているのも
何かおかしいのでしょうね…。OSがWindows7だからでしょうか、Extention Viewer自体
何回か起動すると時々アプリケーションエラーで起動できないことがあります。

いずれにしろ、トライがちょっと難航し過ぎているのでFbx等の一般的なフォーマットに
一旦変換してから「普通の」表示方法で出すように方針転換する事にしました。
実機と扱うデータが異なってしまう時点でかなりデメリットは大きいのですが止むをえません。
結局は、シェーダを自分でコントロールできるようになったら改めて実現できるとのことなので、
いずれそちらで対応しようと思います。

MatrixPallete周りで具体的なアドバイスを頂いた方々には本当に感謝しています。
本当にご親切な対応をして頂いて有難うございました。(成果につなげられず済みませんでした…)
872デフォルトの名無しさん:2010/10/06(水) 17:30:26
フラグメントシェーダとは、ピクセルシェーダの別名。
画面全体を覆う矩形(くけい)とは、つまりビルボードの事。

ビルボードをレンダリングした後、テクスチャにエフェクトかけてビルボードのポリゴンさんに貼り付ける仕事をするのがシェーダー言語。
エフェクトとは拡大・縮小に限らず様々な事がGPU様にお願いできる。

>>869の認識としてはこれでおk?
873デフォルトの名無しさん:2010/10/06(水) 19:13:15
テクスチャとかガン無視して、
ソースデータはシェーダのuniformあたりに入れておいて、
画面全体を1ピクセルごとに舐めるように計算しろって話だと思う

gl1.4以前の関数をほぼ使わずシェーダのみで解決という邪道計算は
やったことがある人でないと勘所がつかみづらいと思われ
874デフォルトの名無しさん:2010/10/06(水) 19:49:08
glBitmapの表示を拡大縮小する方法ってないの?
875デフォルトの名無しさん:2010/10/06(水) 22:13:18
ないよ
そもそもglBitmapなんて使うか?
876デフォルトの名無しさん:2010/10/06(水) 23:45:29
>>872
GPUメーカーはよく使われる機能をチューニングしてマイナーな
機能は徐々に廃止していく。その結果、曲面・四角形・ピクセルやビットマップの
直接描画など三角形の描画以外の仕事はハードウェアでネイティブに処理されず
ドライバエミュレーションで処理される等の理由で遅い可能性が高いので
なんでも三角形(とテクスチャ)でやるのが最速、というあたりを
説明しないといきなりレイトレとか出しても混乱させるだけじゃないかと思った
877デフォルトの名無しさん:2010/10/07(木) 00:06:39
>>870
glRectf()はcore profileに入ってないから使うのはヤメタマエ(`・д・´)
でもVBOとか使って矩形レンダリングするよりはglRectを使ったほうが楽なんだよね。

>>872
OpenGL 2.0以降の仕様書を読みなさい。
ピクセルシェーダというのはDirect3Dでの用語
フラグメントシェーダというのはOpenGLでの用語

画面全体を覆う矩形はビルボードとは別物。
ビルボードをレンダリングするときはちゃんとカメラの設定に合わせてレンダリングする必要があるけど
矩形の方はカメラとか無視して, 単に画面を覆うように四角形か三角形2枚をレンダリングするだけ.
このときvertex shaderでは座標変換とかする必要はない.
このサイトを見れば具体的な内容がわかると思う.
ttp://kioku.sys-k.net/4kgfxmon/

>>872
テクスチャはGPUレイトレみないな事をやるときでも役に立つよ。
uniform変数はテクスチャの置き換えになるものではないんだよ。

>>876
deprecatedな機能は遅かったり, 将来使えなくなるんかなと思ったけど
NVIDIAはOpenGLの古い機能もちゃんとチューニングするらしい。
参考サイト
ttp://www.slideshare.net/Mark_Kilgard/gtc-2010-opengl
878デフォルトの名無しさん:2010/10/07(木) 00:12:36
>>877
つーかなんでみんな三角形2枚で画面を覆うの?
三角形1枚で画面を覆う方がcoolじゃね?
879デフォルトの名無しさん:2010/10/07(木) 00:50:00
>>878
テクスチャ座標の計算が面倒になるだろ。

以前CPUとGPUの差を見るために画像処理プログラム書いたら800x600くらいの画像に5x5のガウシアンフィルタかけた場合には
CPU(1 thread) : 16[s]に対し、GPUは0.07[s]とかそんなんだったわwCPU側のはまだ最適化の余地はあるけどそれでも数十倍の違いはあった。
最近はOpenCLとか出てきてるからある程度整備されたらGPUレイトレとか画像処理とかはそれにやらせるべきなんだろうけどね。
880デフォルトの名無しさん:2010/10/07(木) 00:53:41
>>877
> deprecatedな機能は遅かったり, 将来使えなくなるんかなと思ったけど
> NVIDIAはOpenGLの古い機能もちゃんとチューニングするらしい。

限りあるトランジスタをどの機能にどれだけ配分するかの問題だから全部の機能が
時代相応に速くなりますってことはないんじゃないかな
仮にNVIDIAはMarkさんが頑として譲らなかったとしてもIntelとAMDはどうだろうねぇ
881>>872:2010/10/07(木) 09:41:09
>>873
>>876
>>877

うぉー、皆様懇切丁寧にありがとうございました。
何だか意図せず昔やりたかった事柄を勉強しないといけなくなりそうでwktkです。

てか4kGfxMon落としたらトロイ検出された/(^o^)\
882デフォルトの名無しさん:2010/10/07(木) 12:19:04
OpenGLは1990年代ぐらいから互換性を維持しながら機能を追加していった。

プログラマブルなGPUが主流になる

古いOpenGLの機能は今時のGPUにあわなくなる。
同じ事をするのに何通りもの方法があると混乱する。

新しいGPUにあった機能だけが使えるOpenGLをCore profilesを制定
古い機能が必要なときはCompatibility profilesという拡張機能を使おう

俺ら「よし, これからはCore profilesの機能だけを使って新しいGPU時代を謳歌しようぜ!」
「仕様が雑多なCompatibility profilesはわすれようぜ」

ドイツ人・フランス人「Core profilesだけを使った現代的なOpenGLのチュートリアルを書いたぜ!」

nvidia「うちは古い機能も全力でサポートするよ!」

>>881
4kGfxMonはCrinklerっていうプログラム圧縮プログラムが使われている。
そういうプログラムは解凍しないとウィルスかどうか判断できないとかいう理由で
頻繁に誤検出されちゃう。
たぶん実行しても大丈夫だろうけど心配なら4kGfxMonを自作すればいいんでない?
883デフォルトの名無しさん:2010/10/07(木) 12:52:13
誰かOpenGL整理し直してOpenGL Lite作れよ。
冗談抜きに複雑になりすぎて自己崩壊しつつある。
884デフォルトの名無しさん:2010/10/07(木) 13:08:31
専用ハードのOpenGLなら作ったことあるけど
今の複雑な仕様じゃ作る気にならねー
885>>872:2010/10/07(木) 15:29:48
>>882
毎度詳しく説明していただいてありがとうございます。
テンプレとして保存させていただきました。
886デフォルトの名無しさん:2010/10/08(金) 03:10:41
>>883
OpenGL3.0になってから
ライティング, 座標変換, ディスプレイリスト等の固定機能はdeprecatedになって
結構シンプルになった。
その代わり自分でライティング, 座標変換しないといけなくなったけど
アルゴリズムさえ理解していればそんなに大変なことではない。

それでも複雑でいやならOpenSceneGraphとかのライブラリを使えばいいと思う。

>>884
今の仕様だとGLSLコンパイラを作らないといけないのがちょっと大変そう。

日本語のOpenGLのサイトでCore profilesの機能だけに絞った解説ページが無いっぽいけど
そういうサイトの需要はある?
うまくいけば広告で稼げるか?!稼げるわけないか・・・
887デフォルトの名無しさん:2010/10/08(金) 03:56:22
ある!とだけ言っておこう。
888デフォルトの名無しさん:2010/10/08(金) 10:11:47
桃鉄の畑みたいな収入かもしれなが重要な要素ではある筈です
889デフォルトの名無しさん:2010/10/08(金) 11:12:40
NeHe's Tutorial とか続けるのに十分な利益を得ているんだろうか。
単なるボランティア?
890デフォルトの名無しさん:2010/10/09(土) 01:34:09
すいません。質問なのですが、
現在 300x800の画面で作ったアプリを
300x400のサイズのウィンドウに左右分割したいと思っています。
glPerspectiveの値をいじってたりしましたが、左右キッチリと分割できませでした。

もし解決法などをご存知の方がいらっしゃいましたらご回答よろしくおねがいします。
891デフォルトの名無しさん:2010/10/09(土) 01:59:44
>>890
つglViewport()
892デフォルトの名無しさん:2010/10/09(土) 06:00:16
おお・・DirectXで作ったゲームのOpenGL移植ができた・・

つかれたー
893デフォルトの名無しさん:2010/10/09(土) 07:54:17
>>890
glFrustum()は左右非対称の錐台も設定できる
894デフォルトの名無しさん:2010/10/13(水) 10:27:08
テクスチャー関数のGL_BLENDってどういう時に使うのでしょうか。
下地の色と特定のカラーをテクスチャーの色で分配(ブレンド)する(?)、
どう見えるのでしょうか?
895デフォルトの名無しさん:2010/10/13(水) 11:58:45
趣味で3Dのプログラムしてみたいと思った。
OpenGL入れてみた。
DirectXは画面の初期化からして全然理解できなった。
OpenGLの方で趣味として実用化できそうなので
テンプレの参考書求めて本屋さん行ってきます。
896デフォルトの名無しさん:2010/10/13(水) 12:08:50
ここはお前の日記帳じゃねえんだ
897デフォルトの名無しさん:2010/10/13(水) 12:25:35
お前の仕事上のゲロ吹く場所でもねー
898デフォルトの名無しさん:2010/10/13(水) 12:33:17
反論になってませんね
899デフォルトの名無しさん:2010/10/13(水) 13:26:46
まあ、いいよ。
頭の中がコピー&ペーストで成り立っているということだけはわかった。
自律的発想に乏しく、文章構成能力が低いのな。
IT業界にはコミュニケーション能力が必要らしいから、
ちゃんと日本語で物事が考えることができるように努力するんだな。
流行り言葉の反復ばっかりしているんじゃねえ。笑わせんな。噛みつきワニ。
900デフォルトの名無しさん:2010/10/13(水) 13:35:15
笑わせんな。噛みつきワニ。(キリッ
901デフォルトの名無しさん:2010/10/13(水) 13:45:34
分かったのでゲロ吹き合戦はやめてもらえませんか?
とても汚いです。
902デフォルトの名無しさん:2010/10/13(水) 13:57:05
知らんって。OpenGL始めたっつったら、
どこにもあるようなコピペで噛みつくは、人の言葉反復して返してきやがるし。
脳みそが入力情報に決まった値返すだけの単純サブルーチンかなんかなんだろう。
言語の雑談しに来ただけなのによー。
903デフォルトの名無しさん:2010/10/13(水) 14:03:26
>>894
ttp://wisdom.sakura.ne.jp/system/opengl/gl17.html

これ見て色々試してみたら
904デフォルトの名無しさん:2010/10/13(水) 14:07:34
お前の書き込みのどこに雑談に発展する内容があるのか。
>>896は、下らないどうでもいいお前の独り言書くなよカスって言いたいんだろ、言わせんな恥ずかしい。
905デフォルトの名無しさん:2010/10/13(水) 14:41:15
なら俺が真面目な質問を。
透視変換をかけた後のクリッピング空間での視体積はz,y,z軸ともに-1〜+1ですよね
にも関わらずglClearDepthで指定するzバッファーは0~1なのですが、これおかしくないですか
zテストするときはz軸をさらに変換しないといけないのがおかしいと思います。
どうでしょうか。
906デフォルトの名無しさん:2010/10/13(水) 14:54:19
そのあと glDepthRange の変換がかかるから
907905:2010/10/13(水) 15:14:39
でもこの辺赤本でも明確に書かれていないよね。
まずウインドウ座標が2次元なのか3次元なのかが明確でない。
デプステストがウインドウ座標で行われるのか明確でない。
もうちょっとわかりやすく書いて欲しい。。。。
908デフォルトの名無しさん:2010/10/14(木) 00:37:48
赤本は単なるプログラミングガイドであって、仕様書とかじゃないから・・・
正確なところを知りたければ仕様書を読まねばなるまい
わかりやすくはないけど
909デフォルトの名無しさん:2010/10/14(木) 00:54:15
お前の日本語まわりくどいな
910デフォルトの名無しさん:2010/10/14(木) 01:00:28
うん
911デフォルトの名無しさん:2010/10/14(木) 01:37:46
こんにちは。
テクスチャUVに回転行列を使って回転させる方法について質問なんですが、
Y軸で回転させたあとにX軸で回転させて持ち上げるような感じにしたいのですが、
まず「Λ」をY軸に90度回転させると「>」になりますが、このあとに
X軸回転させようとすると、最初の回転でX軸まで回転させた感じになって、
|> ←が持ち上がる感じになってしまいます。
x軸
これを

 ̄x軸
として回転させるためにはどうようにしたらよろしいのでしょうか?
うまく説明できなくて申し訳ありません。
912デフォルトの名無しさん:2010/10/14(木) 02:35:39
その回転行列を転置
913デフォルトの名無しさん:2010/10/14(木) 04:57:38
そもそも赤本は訳がおかしい
914デフォルトの名無しさん:2010/10/15(金) 01:06:00
日本語版かよ
915デフォルトの名無しさん:2010/10/16(土) 02:41:23
>>907
その辺、赤本にちゃんと書いてなかったっけ?
僕は赤本読めばすっきり理解できたけど。
916デフォルトの名無しさん:2010/10/16(土) 19:21:08
ポイントスプライトにテクスチャ張りたいんだが
フラグメントシェーダのtexture2Dの引数に gl_PointCoordを指定するとアルファ値が0になる。
917895:2010/10/16(土) 21:27:02
ん、OpenGLオモロイw
GLとC++組み合わせて簡単なの組み始めているけどオモロイ。
趣味日曜プログラマ、俺の日記帳じみた書き込みだけどオモロイ。
918デフォルトの名無しさん:2010/10/16(土) 21:44:34
今日は土曜だ
919デフォルトの名無しさん:2010/10/16(土) 21:47:58
うっせ、こっりは出社だ!
920895:2010/10/16(土) 23:08:20
うへへ。俺は〆切納期に縛られないのぜ。
プログラミング技術がどうかも関係ないのぜ。
プロから見ればヘタヘタでもいいのぜ。
でも諸氏がんがるのぜ。
プロの技術は尊敬に値するのぜ。
921デフォルトの名無しさん:2010/10/16(土) 23:16:47
プロっていってもクリエイティブなことしているのは一部
奴隷社会です
922デフォルトの名無しさん:2010/10/16(土) 23:29:42
開発時は
既存のコピペ
独自クラス・独自関数の使い方だけを覚えていって
管理になると
書類や調整ばかり

そんなもんです、このクソ業界
923デフォルトの名無しさん:2010/10/16(土) 23:47:49
マ板いけ
924デフォルトの名無しさん:2010/10/17(日) 02:06:48
楽しんでいるのならなによりですよ。
895さんのOpenGL経験に幸の多からんことを。
925デフォルトの名無しさん:2010/10/17(日) 06:42:11
GLSLのgl_PointSizeと
OpenGLのglPointSizeって何が違うん?
926デフォルトの名無しさん:2010/10/17(日) 08:49:28
glPointSizeで設定した値を読み取るための組み込み変数がgl_PointSize
927895:2010/10/22(金) 23:34:52
>>924 ありがとうございますー。
テンプレ本のソースを使ったり、sin・cosなどして
基本的なモノを作ってます。
928デフォルトの名無しさん:2010/10/23(土) 00:22:39
GLUテッセレーションで困っています。

指示する隣り合う2点ABの延長線上に、別の指示する点Cがあった(A−B C)
場合、

ACXを結ぶ三角形(エッジABと内部BCを繋ぐエッジフラグfalseの辺ACを持つ)
が求まり、ワイヤフレーム描画でエッジABを描くことができません。

2つの三角形ABXとBCXが求まるといいのですが。。
どうすればいいでしょうか?

因みに、GLU_TESS_COMBINEコールバック関数を登録しても、
こちらには入ってきませんでした。
929デフォルトの名無しさん:2010/10/23(土) 00:33:15
テッテレー
930デフォルトの名無しさん:2010/10/23(土) 01:08:29
ただいまJOGLを扱っていてこれの
gluLookAt
なのですが
物体に対して見る位置をだんだん遠ざけていくと物体が消えてしまします。
物体自体を合わせて大きくしていってもやはり何も表示されなくなります。
そこでふと、JOGL自体にスケールが存在するのかと思い投稿させていただきました。
詳しいかたよろしくお願いいたします。
931デフォルトの名無しさん:2010/10/23(土) 01:17:07
farクリップより遠くにいっちゃってるんじゃないの?
932デフォルトの名無しさん:2010/10/23(土) 01:54:21
最新のOpenGLではGLUも無くなってテッセレーションも使えないから自分で作ったわ。
面倒なコールバックとかもなくてラク。
933デフォルトの名無しさん:2010/10/23(土) 22:20:00
意味不明
最新のOpenGLでこそ、まともにテッセレーションが使えるんじゃん
ジオメトリシェーダーでGPUでテッセレーション出来るのが最新たる所以でしょ
(対応してないグラフィックボードの時点で最新とか論外)

そもそもGLUとか言ってる時点でCPU処理だし、
ソフトウェア上でテッセレーションするならポリゴン描画出来る時点で
OpenGL1.x でも自前でポリゴン分割するだけで出来るだろ

結局、GLUにテッセレーションの機能を作れたぜ!ってだけでしょ
ジオメトリシェーダーでやるなら当たり前の処理になるから良かったなw
934デフォルトの名無しさん:2010/10/23(土) 22:30:47
>>933
(´A`)…。
935デフォルトの名無しさん:2010/10/23(土) 22:33:59
>>933

OpenGL 4.0でハードウェアのテッセレーターがついたのは知ってるよ。
そもそも最新のHWテッセレーションはジオメトリシェーダーじゃなくて制御シェーダー、評価シェーダーの2つのプログラマブルシェーダー
と固定機能のテッセレーターで実現されるものなんだが。

名前こそ同じテッセレーションだけど性格が違うだろGLUのテッセレーターとは。
4.0でついたモノは主にLOD制御用だしGLUのは閉じたパスの集合から凸ポリゴン形成するものだろ。
936デフォルトの名無しさん:2010/10/23(土) 22:35:15
fbxやってるんだけど、ボーンの親子関係ってどうやって取得するの?

KFbxMesh.GetNode() で取れるKFbxNodeはどうも違うみたいだし…。

宜しくお願いします!
937デフォルトの名無しさん:2010/10/23(土) 22:54:22
それOpenGL関係無いよね?
938デフォルトの名無しさん:2010/10/23(土) 23:01:28
>名前こそ同じテッセレーションだけど性格が違うだろGLUのテッセレーターとは。
性格が違うってさ…
用途を変えてるだけで同じ物を使ってるだけでしょ

結局、テッセレーションとか語れる奴はこのスレにはいねーんだね
939デフォルトの名無しさん:2010/10/24(日) 00:10:53
>>938
(´A`)…。
940デフォルトの名無しさん:2010/10/24(日) 01:29:16
>>938
('A`)…
941デフォルトの名無しさん:2010/10/24(日) 02:24:14
>>933(=938?)
あの・・・GLUのテッセレータは、GPUのテッセレータとは用途も仕組みも何もかもが違うんです・・・。
同じテッセレーションと呼ばれてますが、名前が同じだけで、関連する技術ではありません。
(関連くらいはあるかな・・・?思いつかないけど。)

GLUのテッセレータの目的とか使い方は、
http://glprogramming.com/red/chapter11.html
この辺を見て頂ければ分かるかと。
942デフォルトの名無しさん:2010/10/24(日) 02:41:00
あのテッセレーションやテッセレータとは、GPUでもGULでも意味は同じなんです

テッセレーションってのは、簡単に言うとポリゴン分割

GLUで提供された用途が、根底でテッセレーション処理を行っているのに

>名前が同じだけで、関連する技術ではありません。

って、モロに表面しか理解出来てないかと…

シェーダーを使って影だしてる描画メソッドがあって
それを使うだけの人間が、そのメソッドについて
影を出すんであってシェーダーとは用途も仕組みも何もかもが違うんです・・・。
とか言い出してるようなモン

943デフォルトの名無しさん:2010/10/24(日) 02:44:20
>>942
('A`)…
944デフォルトの名無しさん:2010/10/24(日) 02:44:21
>>932
コールバック無しで作ると、汎用性が無くなっちゃいません?
別の機会でも使えるように作ると、結局コールバックとかクロージャ渡しとかまぁとにかくそんな感じの
仕組みになるような気がします。

あと、テッセレートする前に与えられた頂点を平面に投影すると思うんですけど、その平面って
どうやって決めるんでしょう。その辺の知識が無いので、もし良かったらどんな感じで作ったのか
教えてぷりぃず。
945デフォルトの名無しさん:2010/10/24(日) 02:49:38
>>942
いや、あの・・・941のURLは見て頂けました・・・???
932さんが言ってるテッセレーションてのは、そのページのPolygon Tessellationのことなのです。
GPUではまだ実装されてないし、効率良くやるのはちょっと難しいんじゃないでしょうかね・・・。
946デフォルトの名無しさん:2010/10/24(日) 02:54:28
GLUで提供されてる機能が、== テッセレーションなんて無知もいい所

このスレには、gluTessBeginPolygonをシェーダーで実装できるレベルの人間がいない事は分かった…
947デフォルトの名無しさん:2010/10/24(日) 02:55:54
>>946
(´A`)…。
948デフォルトの名無しさん:2010/10/24(日) 02:58:09
勝手にテッセレーションの意味を、個人の意味で置き換えないで下さい

***さんの言ってるシェーダーてのは、そのページのノーマルマップのことなのです

って、シェーダーってのは、ノーマルマップ”だけ”するモンじゃないだろ

テッセレーションも一緒だ
テッセレーションとは、ポリゴンを再分割することで
GLUで提供してる機能を指すんじゃないだろ
949デフォルトの名無しさん:2010/10/24(日) 03:02:12
誰もそんなこと言ってませんよ・・・。

もう!どうしたらいいの!?コレ!?
950デフォルトの名無しさん:2010/10/24(日) 03:05:34
>GPUではまだ実装されてないし、効率良くやるのはちょっと難しいんじゃないでしょうかね・・・

あのさ OpenGL 4.0 の機能紹介とかで余裕でデモされてるでしょ
さらに言えば、DirextX11では、普通にSDKサンプルで中級でシェーダーテッセレーションがあるし

DirectXでは始まってるが、GLもこれからプログラマブルシェーダーが全盛になれば
技術を理解せずに、自分で実装出来ないライブラリが無ければ分かりませんってレベルは淘汰される
951デフォルトの名無しさん:2010/10/24(日) 03:08:15
>テッセレーションとは、ポリゴンを再分割することでGLUで提供してる機能を指すんじゃないだろ

もともとGLUの話してるのに、勝手に最近のHWのLOD用途のテッセレーターと勘違いして何騒いでるの?
933 = 938 = 942 = 946 = 948
952デフォルトの名無しさん:2010/10/24(日) 03:11:09
>932さんが言ってるテッセレーションてのは、そのページのPolygon Tessellationのことなのです。

これってモロgluTessBeginPolygonの説明じゃんw

gluTessBeginPolygonの処理はテッセレーション処理を行って凸面のプリミティブを作るのであって
凸面のプリミティブを作ることをテッセレーションとは言わない
953デフォルトの名無しさん:2010/10/24(日) 03:11:41
>>950
( ´A`)…
954デフォルトの名無しさん:2010/10/24(日) 03:15:15
>勝手に最近のHWのLOD用途のテッセレーター

無知もここに極まれりw

別にシェーダーのテッセレーションでgluTessBeginPolygonと同等の機能も実装出来る
テッセレーションにより、低ポリゴンモデルのエッジを分割して
輪郭を綺麗にして低ポリゴンなのを気づかれにくくする等

当然、凸面のプリミティブに分割する事も有り

テッセレートの用途ってか、理解が無いのがモロバレ
955デフォルトの名無しさん:2010/10/24(日) 03:17:51
まぁそんな話はどうでもいいので、932さんが作ったテッセレータの
速度とか精度とかがどんなもんか知りたいです。
956デフォルトの名無しさん:2010/10/24(日) 03:20:19
>>954
その最新のフィーチャーのテッセレーターは自己交差ポリゴンの再分割とか、複数の閉じたパスによって作られた図形から描画するべき部分の三角形の算出とかできるわけ?
理解があるならそこらへんの実装例を見せてもらいたいね。
957デフォルトの名無しさん:2010/10/24(日) 03:22:13
もともと、GLUのテッセレーション処理に相当する部分は、
最新のOpenGLではシェーダーで行う方向なのに、頓珍漢な発言してるのを突っ込んでるだろw

さらに、GLUのテッセレーションだろうが、シェーダーのだろうが
テッセレーションの処理の意味は同じ

gluTess***関数のテッセレーションと、シェーダーのは違うとかw
プログラマブルシェーダーって意味わかる?
自分で組むんだよ?
gluTess***関数相当の処理だって組めるに決まってるじゃん
958デフォルトの名無しさん:2010/10/24(日) 03:26:57
>その最新のフィーチャーのテッセレーターは自己交差ポリゴンの再分割とか、複数の閉じたパスによって作られた図形から描画するべき部分の三角形の算出とかできるわけ?

ふざけるなよw
自分で判断出来ないくせに、えらそうに書き込んでたのかよwww

ちゃんと OpenGL 4.0 のシェーダーのテッセレーションを調べて
出来ないと判断してから書き込めよ
959デフォルトの名無しさん:2010/10/24(日) 03:31:12
>>957
お前プログラマブルシェーダーでなんでも完全に自由に作れると思ってるのかw

>>944
頂点群が2次元的に分布している前提で話すけど、適当な3点とってそれらを含む平面を計算→法線ベクトル算出、法線ベクトルを例えばZ軸に重ねる。
Z座標は無視して三角形だけで描画できるようなインデックスを求める→インデックスが持つ意味は元の頂点の座標でも一緒だからそれを用いて描画でいいんじゃないか?

3次元的に分布しているGLUテッセのサンプルは見たことがないな。
960デフォルトの名無しさん:2010/10/24(日) 03:37:02
なんでも完全に自由に作れないとシェーダー組めないレベルの人は黙ってるべきw
961デフォルトの名無しさん:2010/10/24(日) 03:41:05
>>960
( ゚д゚ )
962デフォルトの名無しさん:2010/10/24(日) 03:43:48
>>959
三点の選び方によっては精度が落ちそうなので、できるだけ外周に近い三点を選ぶとかするのかなー
とか思ったんですけど、実用的にはそこまでこだわる必要は無いってことでしょうかね。

3次元的に分布してる場合は、GLUでも平面の法線を明示してやればおっけーでしたよ。
サンプルは確かに見たことないですね。
963デフォルトの名無しさん:2010/10/24(日) 03:56:52
>>962
まぁ誤差のせいで投影時にある2頂点が一緒になってしまうとかならあると思うけど、もともとそこまで近い頂点なら片方消しても良さそうだ。

法線を精度よく求めるなら離れたところにある3頂点のセットを何サンプルかとればまず問題はないだろう。
964デフォルトの名無しさん:2010/10/31(日) 22:10:15
.NET Framework4 C++/CLI でOpenGLのプログラミングについて
書いてあるサイトありますか?
C++/CLI OpenGL 勉強し始めたばかりですけど,
一緒にマスターしたいと思っています.
Win32 API, C++は結構バッチリだとおもいます
965デフォルトの名無しさん:2010/10/31(日) 22:55:28
じゃぁそれでやろうぜ!!
966デフォルトの名無しさん:2010/11/01(月) 01:09:16
どうしても,
Formアプリで作りたいんですけど
967デフォルトの名無しさん:2010/11/01(月) 08:39:04
OpenTKのGLControlをフォームにはる
GLControlのPaintイベント内で普通にOpenGLで描画
描画の最後にGLControlのSwapBuffesを呼び出す
これだけ
968デフォルトの名無しさん:2010/11/01(月) 09:18:37
>>964
指摘したいことがあれこれあるけどスレ違いな部分だな
969デフォルトの名無しさん:2010/11/01(月) 12:09:45
ヒント : 過疎スレ
970デフォルトの名無しさん:2010/11/02(火) 00:40:33
OpenTK をインストールしたんだけど
GLControlのアイコン(?)が出てこない
Visual Studio 2005です
助けてください ToT
971デフォルトの名無しさん:2010/11/02(火) 08:43:56
>>970
プロジェクトの参照設定でOpenTK.GLControl.dllを参照するば
ツールウィンドウに出てくる筈だよ。
972デフォルトの名無しさん:2010/11/02(火) 22:13:03
>>971
ありがとうございます.うまくいきました
OpenTKって日本語ドキュメント誰か書いてほしい.
973デフォルトの名無しさん:2010/11/02(火) 23:35:13
>>972
よく言った!
・・・あとは、分かってるな?
974デフォルトの名無しさん:2010/11/02(火) 23:36:48
言いだしっぺの法則というやつだな
975デフォルトの名無しさん:2010/11/02(火) 23:42:04
まずは中学英語の復習からだな
976デフォルトの名無しさん:2010/11/03(水) 09:29:17
ソースがドキュメントです
977デフォルトの名無しさん:2010/11/03(水) 10:05:36
ソースよりも醤油か塩コショウ派です
ソースは味覚音痴御用達です
978デフォルトの名無しさん:2010/11/03(水) 20:40:14
え,もしかしておまえが訳せってこと?
僕は,あとは自分で調べろってことかと,
鈍くてすいません
979デフォルトの名無しさん:2010/11/05(金) 10:55:35
ttp://www.codeproject.com/KB/openGL/glenabledview/glenabledview.gif
こんな感じのアプリを作りたいのですが
右下のメニュー用のフォームとかってどうやって作るのですかねぇ
980デフォルトの名無しさん:2010/11/05(金) 11:29:04
>>979
どうやってつくるんでちゅかね?
たいへんでちゅね〜?

おちゅかいのおーえすはなんでちゅか?うぇwww
981デフォルトの名無しさん:2010/11/05(金) 11:30:42
>>980
死ね糞
982デフォルトの名無しさん:2010/11/05(金) 11:33:27
>>981
くそもらしちゃったんでちゅか?おむつはそのままにしておきまちょうねwww
983デフォルトの名無しさん:2010/11/05(金) 11:43:01
>>979
質問するスレが違うですよ。

ttp://www.codeproject.com/KB/openGL/glenabledview.aspx が元記事ですね。
このサイトはユーザー登録するとソースをDLできます(ライセンス注意)。
ソースを覗くとGUI部分はMFCで作成されてますね。

GUIは基本的に色々な言語で実装できます。
何で作るのかは知りませんが、該当のスレで質問して下さいな。

例えば、cやc++ならwinapiで実装するならwinapiスレで。
c#ならc#スレでって感じよろしく。

まぁ、基本的にはMDIで実現できますよ。
c#ならフォームの中にフォームを表示すれば可能です。
984デフォルトの名無しさん
>>983
ありがとうございます。
フォームの中にフォームとか
MDIとか情報が少なすぎて。