OpenGLスレ Part15

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在のバージョンは4.1
http://www.opengl.org/

== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx:    XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut:   クロスプラットフォームなツールキット。でもさすがに古くさい
・glew:   これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo:  自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK  C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。

== 必読書 ==
・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
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe:    http://nehe.gamedev.net/

== 前スレ ==
http://hibari.2ch.net/test/read.cgi/tech/1263901596/
2デフォルトの名無しさん:2010/11/17(水) 20:24:35
3デフォルトの名無しさん:2010/11/19(金) 03:09:34
>>1
お疲れ様です。
テンプレにglm, OpenSceneGraph, sfmlあたりを入れておくといいんじゃないでしょうか。
opengl.orgから直リンクされていますが
http://www.opengl.org/wiki/Main_Page
http://www.opengl.org/documentation/specs/
も役立つので入れてみるのはどうでしょうか。

4k intro野郎はC/C++の標準ライブラリを使わないのはもちろんの事、
glutとかglewとか使わずにウィンドウやコンテクストをwin32apiを直接呼び出して初期化し
wglGetProcAddressで必要な関数のみを拾ってくるんだよ。
4デフォルトの名無しさん:2010/11/19(金) 17:02:19
OpenSceneGraph 楽しいよ。

OpenGL の形を保ったまま便利な皮被せてるから、OpenGL の空気そのままで扱える。
5デフォルトの名無しさん:2010/11/19(金) 19:10:30
Windows環境で使用するんですが、OpenGLでレイヤードウィンドウの描画はできますか?
オフスクリーンレンダリングしてコピーではなく直接ウィンドウに描画したいです
6デフォルトの名無しさん:2010/11/21(日) 03:29:24
4.1とかの最新バージョンってどうすればプログラム作れるの?
7デフォルトの名無しさん:2010/11/21(日) 17:04:59
>>6
OpenGL4.1に対応したGPUを取り付ける
OpenGL4.1に対応したドライバをインストール
OpenGL4.1に対応したglewをインストール
OpenGL4.1に対応したプログラマを雇う
8デフォルトの名無しさん:2010/11/21(日) 17:47:30
>>7
上2つとドキュメントは分かったけどどのライブラリをインストールすれば良いか分からなかったんだよねw
ありがとう
9デフォルトの名無しさん:2010/11/22(月) 17:31:41
>>5
無理
10デフォルトの名無しさん:2010/11/22(月) 21:06:30
オフスクリーンレンダリング先をどこにするかで
直接に近い形にはできると思うけどね。
11デフォルトの名無しさん:2010/11/24(水) 05:07:26
>>5
無理
12デフォルトの名無しさん:2010/11/24(水) 19:32:22
必死だなw
13デフォルトの名無しさん:2010/11/24(水) 20:03:40
>>10
マジで無理だと思っていたので
方法があるなら教えて下さいお願いします。orz

今のところ手元で使っている方法は、
GL_BACK に描画→SwapBuffer() せずに glReadPixel() でRGBA画像をメモリに書き出し
→UpdateLayeredWindow() でデスクトップに描画

または、
FBO→に描画、glReadPixel() でRGBA画像を(以下略)

の2通りです。
14デフォルトの名無しさん:2010/11/25(木) 00:28:12
PIXELFORMATDESCRIPTOR のフラグに
PFD_DRAW_TO_BITMAP |PFD_SUPPORT_OPENGL |PFD_SUPPORT_GDI,
を指定する。(手元にソースが無いので合ってるか確認してない。)

DIB を作成して wglMakeCurrent() でDIBのDCをセットする
オフスクリーンレンダンリングが DIB に対して行われるので。
DIBのDCでUpdateLayeredWindow() を行う。

DIB×OpenGLのコードは↓参照。
ttp://son-son.sakura.ne.jp/programming/opengl_3.html
15デフォルトの名無しさん:2010/11/25(木) 05:06:50
DRAW_TO_BITMAPは常にソフトウェアレンダリングになるんじゃなかった?
1613:2010/11/26(金) 01:26:39
>>14
ありがとうございます!

>>15
確かそうだったかもと思ったんですが
wglChoosePixelFormatARB() で検索すれば
WGL_DRAW_TO_BITMAP_ARB と WGL_FULL_ACCELERATION_ARB が
同時に True の PixelFormat が取れるかも…。(未確認)
手元の RadeonHD4850 で試してみます。
17デフォルトの名無しさん:2010/11/26(金) 19:22:02
なあOpenGLってハードウェア(GPU)と通信するためのAPIだよな。
これを人間が使って3Dを描画するのが間違えてないか。
CPUで言えばアセンブリで直接ゲームを作るようなもの。
3DにもC++に相当するような「高級言語」が必要だと思うのだが、どうだろうか?
18デフォルトの名無しさん:2010/11/26(金) 19:55:02
それはいわゆるゲームエンジンみたいなものじゃないのかい
いろいろあると思うけど
19デフォルトの名無しさん:2010/11/26(金) 20:43:08
>>17
たとえば、どのように表示するために、どのように記述できると
「C++に相当するような高級言語」と言える?
2017:2010/11/26(金) 21:24:06
少なくとも、
- レンダリングコマンドが呼び出し順に依存しない
- レンダリングデータのメモリ配置、型を考慮する必要がない
- レンダリングステートの変化の影響が自明
な事が必要だと思う。

OpenGLを使ってちょっと複雑なものを表示しようとするとこの変がネックになる。
あまりにプリミティブ過ぎないだろうか。

21デフォルトの名無しさん:2010/11/26(金) 21:37:32
>>15
PFD_DRAW_TO_BITMAPを指定してGLSLを使ったらどうなる?
シェーダー処理も全てソフトウェアレンダリングされるのか?
そうはならないでしょ…多分。
一部の機能がソフトウェア処理される程度じゃないかと。
22デフォルトの名無しさん:2010/11/26(金) 21:56:24
>>20
上二つは分からなくもない。
ただ、それはゲームエンジンあるいはライブラリがする仕事と何が違うのか?

> レンダリングステートの変化の影響が自明

これがちょっと分からんな。
これは、レンダリングステートをAからBに変えた時、
どのように表示が変化するのかがプログラマにとって自明である事を言ってるの?

もしそうなら、それは「高級言語」で解決できそうな類の問題なのか?
23デフォルトの名無しさん:2010/11/26(金) 21:58:28
>>17
Open Inventorとかそうじゃないかな
2417:2010/11/26(金) 22:02:52
こういうこと。「効果と影響範囲が自明」の方がいいな。
mesh0.color = {255,0,0};
mesh1.color = {0,255,0};
カラーだけだとありがたくも何とも無いけど。
ある「ステート」の及ぼす効果、範囲がわかり難い。


25デフォルトの名無しさん:2010/11/26(金) 22:14:46
「ライブラリ」と呼ぶのが良いのか「3Dのための高級言語」と呼ぶのが良いのかは定かではないが。
OpenGLに変わるもっと見通しが良く、人間が使いやすい形の3D記述APIが必要だ思うですよね。
GoogleのO3Dもこの方向だと思う。作ったら世の中に受け入れられないだろうか。


26デフォルトの名無しさん:2010/11/26(金) 22:15:37
>>24
それって、ポリゴンの集合に対してカラー属性を付与して、
そのカラー属性の値を関数で与えてるんだよな。

やっぱりライブラリで事足りるような気がするんだが・・・
ていうか、そういうの普通に自作してないか?

わざわざ新言語作るんだから、既存の言語+ライブラリでは不可能、
あるいは意味を明確に表しにくい表現が簡単にできないと意味が無いと思うぞ。
2717:2010/11/26(金) 22:30:32
現状GPUと通信する部分は必ずOpenGLになるので、
OpenGL+ライブラリではできない事ができるかと言われるとできない。
使いやすいだけでも訴求ポイントにはなると思うけど弱いかなあ
うーーん、もう少し革新性が必要ですね……

28デフォルトの名無しさん:2010/11/26(金) 22:36:30
>>27
いや、OpenGL+ライブラリと同じ事しかできなくても、
その言語だと「こんなに楽に、見やすく書けて、メンテ修正もしやすいよ」
でもいいと思うんだ。

ただ、言語を設計するというのは、
ライブラリを作ること以上に骨の折れる作業だよ。

既に既存のライブラリがあるんだから、少なくともそれ以上の
「こんなに楽に、見やすく書けて、メンテ修正もしやすいよ」でないと、
言語を作るメリットがね・・・
29デフォルトの名無しさん:2010/11/26(金) 22:37:55
>>28
しまった、頭痛が痛い
30デフォルトの名無しさん:2010/11/26(金) 23:06:17
俺は何かをやるとその根幹がどんどん気になってしまう人間だからOpenGLくらいのほうが気がラク。
色々と隠蔽したものはゲームエンジンの類になるんじゃないか?OpenGL公式のトップニュース見てるだけでもよく見かけるが。
31デフォルトの名無しさん:2010/11/27(土) 00:09:21
>>17
確かにOpenGLを直接使って3Dを描画するのは大変かもしれない。
世界にはそんな風に考えている人が沢山いて,
OpenSceneGraphとかIrrlichtのようなライブラリが作られたんだよ。
17はOpenGLの欠点だけを挙げているようだけど
そういったライブラリを調べた上でOpenGL+ライブラリ方式が不味いと言ってるの?

ライブラリとかゲームエンジンを使うと開発は楽になるけど
制限も発生するんだよ。

ライブラリに実装されていない特殊な技術を使おうとしたり
ハードウェアの性能を最高に引き出そうとしたりするとOpenGLのような
ハードウェアに近いAPIが必要になるんだよ。

メガデモ野郎の俺様はいつもOpenGL3.3のAPIを直接呼び出して使ってるぜ!(キリッ)
32デフォルトの名無しさん:2010/11/27(土) 04:20:38
17がレベルが低すぎて笑えるw

OpenGLが高級言語だろ
グラフィックでアセンブラ相当と言えばフルスクラッチで、
頂点情報をラスタライズしてポリゴン描画や、画像のピクセル拾ってテクスチャマッピング
ってレンダラを自前で作るくらいの部分だろ

17の理屈で言えば、人間がプログラミングなんてやるのが間違ってて
口で処理を言えば即プログラムが出来上がる高級な仕組みが欲しいってレベルだろ
33デフォルトの名無しさん:2010/11/27(土) 11:01:51
>>32
無理やり難癖つけなくてもw
OpenGL = アセンブリ という例えはあってると思う。
どちらもハードウェアの機能をフルに使いたいときには使うが
それだけでゲームを作るのは狂気の沙汰。

問題はダイクストラの構造化プログラミングに相当するような
3D APIにおけるパラダイムシフトは何か? という点にあると思う。

上の例で言えば
- 命令が記述順に依存しない
- データがメモリ配置、型に依存しない
というのは十分にパラダイムシフトになってると思う。
ゲームエンジンみたいに余計な機能は付け加えずに描画に絞った
ライブラリ(高級言語)はアリだと思う。


34デフォルトの名無しさん:2010/11/27(土) 13:31:00
だから、どっちがOpenGLのレベルまで降りてくるかの問題

OpenGLを叩いてゲームを作るのは狂気の沙汰と思ってる奴が、
ゲームを作りたいと思う事自体が”狂気の沙汰”だろ
って言ってんの

OpenGLは、OpnnGLを叩けるレベルの人間に向けて出されてるんのに
勝手に自分の低レベル目線に持ってきて狂気とかw

そう言うレベルの人間は、ツクールとか
金出して他人にゲーム作成を依頼しろって事
35デフォルトの名無しさん:2010/11/27(土) 14:15:11
>>33
で、どういうのが欲しいか >>19>>22 で具体例を訊いたが、答えが >>24 だ。
これだけ漠然とした答えだと、既存のライブラリと何が違うの?と言わざるを得ない。

しかも >>24 の例は mesh0 や mesh1 と言っていることからして、
どうもポリゴンの集合としてのオブジェクトの概念をも言語レベルに入れたがっている。
しかし、ライブラリではなく言語がそこまで高次の領域の面倒を見るべきかな?
そこまで行くと、逆にかゆいところに手が届きにくくなるような気がする。

命令が記述順に依存しないというのは、
要するに命令的ではなく宣言的に記述できるといいな、ということだろう。
Haskell などの関数型で OpenGL のラッパーを作ればいいのでは?
36デフォルトの名無しさん:2010/11/27(土) 19:29:52
>- 命令が記述順に依存しない

Zバッファの仕組み等の
3Dプログラミングの知識もスキルも無いだけだろw
37デフォルトの名無しさん:2010/11/27(土) 20:47:34
>>36
いや、さすがにそんな基礎は分かってるだろ
でなければ OpenGL は使えない

ある程度ヒントを与えればコンパイラが適切な順に命令を並べてくれる
という意味だと思うぞ
38デフォルトの名無しさん:2010/11/27(土) 22:19:52
本人じゃ無いなら否定出来ないなw

OpenGL程度のAPIを使ってゲーム作るを狂気の沙汰と言ってるんだから
OpenGL分かりませんって言ってるのも同然なレベルだろ
だって基礎知ってれば、OpenGLでゲーム作るのは普通

そもそも言っちゃえばプログラミングの知識すら怪しい

命令が記述順に依存しない
なんて、基礎を知ってるなら素人でも最初に自分で組む部分
APIのステートとかを登録していき、実際に実行するときに解決される
なんて誰でも思いつくし、自分用に作る部分だろ

命令がAPI発行順に依存しない
なら話は違うと思うがw

これだけで、どんだけ低れべるなのか知れる
39デフォルトの名無しさん:2010/11/27(土) 23:30:43
>>36-38
自分が理解できないからといって他人を否定するのはよくない。
glTranslate (0,0,1);
glRotate (90, 0,0,1);

glRotate (90, 0,0,1);
glTranslate (0,0,1);
が等化で有るべきと、俺は解釈したね。
40デフォルトの名無しさん:2010/11/27(土) 23:40:40
ついでに言うと>>36-38 はアセンブリ使いがCなどの高級言語が登場した時に言っていた攻撃文句と同じな。
現実は誰でも知っているようにその後はアセンブリはCに取って代わられたわけだ。
現状のOpenGLが良いとは俺は思ってないし多分みんなもそうだろう。
じゃあ代わりの3D APIがどうあるべきかというと、俺にもアイデアはない。
この辺は恐らく目線の違いで、現在使えればいいだけの>>36-38みたいな人間は
新しいAPIについて考えることはないし、自分で何かしようとは思わないだろう。
恐らく新しい事をやりたい人間は>>36-38みたいな他人を否定したくてしょうがない人間と付き合ってはいけなし、
アイディアを話すのは害にしかならない。




41デフォルトの名無しさん:2010/11/28(日) 00:01:11
>>39
てめぇ、バカに俺(>>22 >>26 >>28 >>35 >>37)も含めるな。

俺は現在使えればいいだけなんて一言も言ってないし思ってもない。

ただ単に「>>17 の言うような新言語」であるなら、
それは既存のライブラリとどこが違うのかと訊いている。
ここが違うと言えないのなら、新言語を設計するメリットが少ないと思うぞ。
これはお前の目には否定に見えるのか?

そして、>>35 でもちょっと言ったが、新言語を設計する時は、
言語が担うべき仕事と、ライブラリに任せるべき仕事をちゃんと区別した方がいい。
まずは、本当に言語が担うべき仕事をちゃんとリストアップすべきだ。

あと、命令が記述順に依存しないの意味が宣言的に記述する事であるなら、
ネタではなく本当に真面目に、Haskell で書かれた OpenGL ラッパー
例えば FieldTrip なんかからアイデアを集めた方がいいと思う。
42デフォルトの名無しさん:2010/11/28(日) 00:03:47
>>40
その話しぶりだと、>>39 はギャグではなくマジなんだな
43デフォルトの名無しさん:2010/11/28(日) 00:39:20
OpenGLは低レベル過ぎて使いづらいからもっと高級にすべき(新しい言語を作る?)派
vs
OpenGLは十分使い安いので現状でOK派
の論争になっているようだね。

今のOpenGLのAPIが完璧だとは言わないけど
OpenGL並にハードに近いAPIは必要なんだよ。
下手に高級にすると制限が生まれて、できるハズの事ができなくなっちゃうんだよ。

OpenGLが使いづらい、3D APIがこうあるべきだ!
と世界中には同じような事を考えてる人は沢山いる。
そういう人たちが3D APIを使いやすくする為にOpenSceneGraphとかのライブラリを作ってるわけだ。

自分と同じような事を他の人が既に考えていて、それなりに結果がでているなんて事はよくあること。
OpenGLが使いづらいよ派の人は
まずは既存のライブラリやゲームエンジンとかをよく調べて、それでも満足しないなら
既存のライブラリの問題点とか、こんな問題はライブラリでは解決できないとか
○○という理由でOpenGL上には俺の理想する3D APIを構築する事は不可能だと言ってくれ。

>>39
class mesh
{
vec3 position;
matrix direction;
...
};
みたいなクラスがあって、そこに位置と向きを指定しておくだけで
その通りレンダリングするライブラリがあればそれでいいんじゃないの?

OpenGLが難しいからといって、今よりずっと理解し易さ重視で速度を犠牲にするような変更を加える事はあってはならないと思う。
OpenGLが難しいなら使いやすいライブラリを探して, それでも解決しないなら文句を言ってくれ。
44デフォルトの名無しさん:2010/11/28(日) 00:49:56
でもJavaなんてどこまでが言語仕様で、どこまでがライブラリなのか非常に曖昧だよね。
ライブラリで全てが解決する派の欠点は、そう都合良く自分の欲しいライブラリがあるとは
限らないところだと思う。新規のものは学習コストもそれなりにかかるし。
個人的にはスキニングとアニメーションは3D API(言語)として標準化した方がいいと思うけどね。
誰かやって。

45デフォルトの名無しさん:2010/11/28(日) 00:58:45
>>40
>恐らく新しい事をやりたい人間は>>36-38みたいな他人を否定したくてしょうがない人間と付き合ってはいけなし、
>アイディアを話すのは害にしかならない。

既存の環境に適応している人間ほど別の環境に移るコストは相対的に大きくなるわけで、
パラダイムを変えるようなアイディアをその環境に適応した人間ばかりの場所に
投げ込んでもいろいろ批判されるのは仕方ないことじゃないかな。
46デフォルトの名無しさん:2010/11/28(日) 01:08:34
お前コテ外すなよ
47デフォルトの名無しさん:2010/11/28(日) 01:09:46
>>39へのレスね
48デフォルトの名無しさん:2010/11/28(日) 01:21:36
>>44
> でもJavaなんてどこまでが言語仕様で、どこまでがライブラリなのか非常に曖昧だよね。

言語仕様ははっきりと定められているはずだが。
http://java.sun.com/docs/books/jls/
例えば仕様のどこと、ライブラリの何の境界が曖昧?

> ライブラリで全てが解決する派の欠点は、そう都合良く自分の欲しいライブラリがあるとは
> 限らないところだと思う。新規のものは学習コストもそれなりにかかるし。

求めるライブラリが無ければ自作するという選択肢もあるんだが。
新言語を設計するよりは、学習も含めて低コストではないのか?

> 個人的にはスキニングとアニメーションは3D API(言語)として標準化した方がいいと思うけどね。

だからさ、現状「標準化」されていないことで何が不満なのか一つ二つでも例を挙げてくれ。
でないと、じゃあどうやって解決しようかという話に繋がらないだろ。
まさかその例の列挙も含めて全て「誰かやって」なのか。
49デフォルトの名無しさん:2010/11/28(日) 01:23:36
>>44
ライブラリだと都合良く自分の欲しいライブラリがあるとは限らないというなら
言語にすれば都合良く自分の欲しい物が手に入るの?その理由は?
それをさらに他人にまかせて、自分の思った通りに作ってくれるの?

>>45
いままで出たアイデアの中でOpenGLの代わりに3D API言語を作ろう
というアイデア以外で
目新しいアイデアは無いよ。

パラダイムを変えるようなアイディアってこれの事?
> - レンダリングコマンドが呼び出し順に依存しない
シーングラフ系のライブラリでOK

> - レンダリングデータのメモリ配置、型を考慮する必要がない
レンダリングデータを頂点毎, ピクセル毎に呼び出して設定すればOK
主要な型を自動的に変換してOpenGLへ送ってくれるテンプレート関数を作ればOK

> - レンダリングステートの変化の影響が自明
ちゃんとレンダリングパイプラインを理解していればレンダリングステートの変化の影響は自明だよ。
レンダリングパイプラインが難し過ぎて理解できないなら、理解可能なライブラリを探して使う。

で, 新しい言語を作るメリットは?
ライブラリを作る事に比べてどのようなメリットがあるの?
50デフォルトの名無しさん:2010/11/28(日) 02:19:03
いや、分かってる事は
プログラム以前に数学すらおぼつかない奴が吠えてるって事だろ

お前ら人が悪いな…
黙ってニヤニヤしながらROM気取ってるのかw
51デフォルトの名無しさん:2010/11/28(日) 02:27:35
ものには対象、定義ってのがあるんだよ

OpenGLは低レベルのグラフィックAPIって前提で世に出されてるの
プログラマ向けなの

低レベルでプログラミング出来ないからって、
プログラムも怪しいゲーム作りたい房が文句言ってるなよ
って話

そもそもプログラム(英語とかスキル全般だな)が怪しいからこそ
OpenSceneGraphで間に合ってるような内容を、低レベルAPIに求めだすんだろw
52デフォルトの名無しさん:2010/11/28(日) 02:33:07
車の運転が出来ないくせに、
車の構造に文句言ってF1レーサーになりたいって言ってるようなモン
53デフォルトの名無しさん:2010/11/28(日) 09:19:01
>>49
>パラダイムを変えるようなアイディアってこれの事?

それは>40のアセンブラ〜Cへの行を受けたものだけど、
API呼び出しが言語になるのなら十分同じ程度の変化だと思う。
ポインタに躓いたことがなくてしかもそれを便利に使ってるような人に、
ポインタのない言語作ろうぜ、とか言っても説得は不可能だと
思うから個別のことには答えられないけど。
54デフォルトの名無しさん:2010/11/28(日) 10:16:30
OpenGLは低レベルAPIだな。それに比べるとDirectXはかなり高レベル。
OpenGLもせめてDirectX並みに拡張子した方がいい。
55デフォルトの名無しさん:2010/11/28(日) 10:24:38
出来ない奴って必死だな

ポインタが無い言語が出来た理由は
ポインタが理解出来ない人の為ではなくて
ポインタと言うメモリアドレスを直接さわると
バグやセキュリティ低下の原因になるから

アセンブラ〜Cの下りも比較になってない
お前らが求めるのは、
C言語でプログラム組むのは狂気の沙汰、BVじゃないとって位の話

ようは、OpenGLやC言語の問題を指摘してるんじゃなくて
俺達分からないから簡単にしてって言ってるんだろ
56デフォルトの名無しさん:2010/11/28(日) 10:47:28
例えば、アセンブラには for文 に相当するものはない
でも for文 に相当する処理は頻繁に行う
これならアセンブラ->C言語の移行も納得の機能だろう

だが、今OpenGLに変わる高級3D言語?を求めてる奴等って
OpenGLで出来る規定処理を簡単に、とかって話のレベルじゃないんだよな

OpenGLが使っている、3Dの基本的な原理、手法や現在のHWの仕様などなど
を問題視してるように見える

それは、C言語でプログラミングしてコンパイラでバイナリを作るって言う
C言語の大本を問題視してるようなもの

それはC言語を辞めて下さいって話で、C言語をどうこうって話ではないだろ
つまりOpenGLをどうこうではなくて、OpenGLとはまったく違う3D APIって事だろ

現在のGUPアーキテクチャがどうなってるとか、それをAPIでどう吸収するのか
ってそう言う話なら歓迎だが、単にOpenGL難しいよね的な理由のレスはかんべんしてくれw
57デフォルトの名無しさん:2010/11/28(日) 10:56:57
>>56 それはちょっとおかしい。
3D APIに誰もfor文やその他の制御構文を求めているわけではないと思う。
最初に問題にされていたのは命令の記述順だったり、グローバルなレンダリングステートだったはず。
確かにOpenGLはその辺の仕様が良くないので、OpenGLに変わる何かはアリだと思う。
勝手に誰かが簡単ライブラリを探している事に矮小化するレスを除外して考えないと本質を見失う。

58デフォルトの名無しさん:2010/11/28(日) 11:27:21
命令の記述順
グローバルなレンダリングステート

なおさらw
どれもOpenGLを叩く言語上の問題であってOpenGLの問題じゃない
さもOpenGLの問題のようにすりかえてるだけで、プログラミング能力がないだけ

for文の構文仕様に文句言ってるのも同然
最初に初期化、条件、変化は分かり辛いとかw

そもそも、そう言うOpenGLの仕様になってるのは
GPUのアーキテクチャや仕様から来てるんだよ
その仕様に最低限のシンプルな実装になるようなAPI仕様になってるの
それが気に入らないなら、自分でライブラリ作るなりしろ

命令の記述順
グローバルなレンダリングステート

これらは十分すぎるほど個人の言語処理のレベルw
59デフォルトの名無しさん:2010/11/28(日) 11:35:15
命令の記述順

モロに”記述”ってプログラミング言語の問題だって自身で言ってるだろw
どう記述しようが、実際の実行(APIコール)は整合がとれている
そう組めば言いだけだろ、なんでGLの問題に摩り替えようとしてるんだw

グローバルなレンダリングステート

APIを使えるようになってから文句言おうな
ステートのPOPとPUSHはあるぞw
(糞重いけど)
60デフォルトの名無しさん:2010/11/28(日) 11:44:45
最初に問題ってコレだろ

- レンダリングコマンドが呼び出し順に依存しない

これは59でも言ってるが、直接API呼び出してる
プログラミング能力の無さを棚にあげてる

- レンダリングデータのメモリ配置、型を考慮する必要がない

これも同じ
配置、型を考慮しないインターフェイスを自作して
そのインターフェイスの中で振り分ければ言いだけ
人はそれをライブラリと呼ぶw

- レンダリングステートの変化の影響が自明

これも同じ、各ステート値を保存しておいて…って
GLにステートをゲットするAPIがあるだろwww

メッシュがろうがポリゴンだろうがゲームループの先頭から、
直接API呼んじゃって制御してるようなレベルの素人さんの
個人的レベルの意見に過ぎないだろ、どう見ても
61デフォルトの名無しさん:2010/11/28(日) 11:49:39
>レンダリングステートの変化の影響が自明

今現在、明白だからOpenGLでレンダリング制御できると思うんだが・・・

やっぱり、どう見てもOpenGLを使いこなせてないだけのような・・・
62デフォルトの名無しさん:2010/11/28(日) 11:54:33
新言語欲しい派は、「今のOpenGLの何が問題」で、
新言語で「どうやって記述するとそれが解決すると思うか」例を挙げてくれ
その記述をどうコンパイルするかは脇に置いていいから

とりあえず >>24 の書き方で「効果と影響範囲が自明でない問題」が解決するのなら、
新言語を作るまでもないと俺は思う。

ライブラリを探すどころか、OpenGL でゲームやアプリを作ろうと挑戦してきた人間なら、
たいていは自作しているレベル。
63デフォルトの名無しさん:2010/11/28(日) 11:59:56
「今のOpenGLの何が問題」

・俺に使いこなせない

これ一択だろ
64デフォルトの名無しさん:2010/11/28(日) 12:12:01
とりあえず日本人は全力で他人の足を引っ張ることだけは分かった。
65デフォルトの名無しさん:2010/11/28(日) 12:18:50
OpenGLは
プログラムが出来て、3D等の理論、GPUアーキテクチャを理解している人向けのAPI
それ以外の人は御遠慮下さいってだけだろ

出来ない君が欲しがるのは自由だが
欲しがって勝手に使った挙句、使いこなせない状況を
OpenGLの問題とか言い出すのは違う

そんなのが通じるなら、
世の中のプログラム出来ない人間が
全てのプログラム言語は問題がるとか言い出して
プログラミングしなくとも好きなバイナリを作れるようにすべき
って理屈が通じる事になる
66デフォルトの名無しさん:2010/11/28(日) 12:22:44
言ってる理屈や理論が否定され、
それを万人が認めるくらい覆す内容を言えてないのに、足を引っ張るって…

ほんと最近は、自己中心的なガキか増えたよなw
67デフォルトの名無しさん:2010/11/28(日) 13:15:58
>>65
だから万人向けのAPI(高級言語)を作ろうという話だったはず。
OpenGLはそのままで、もう1つ別のAPIを定義しようぜって話。
68デフォルトの名無しさん:2010/11/28(日) 13:27:17
>>67
万人向けのAPIを作る「動機」が不明確

もう少し言うなら、ライブラリで解決しようとしないで、
より困難を伴う新言語の設計で解決しようとする理由が不明確
69デフォルトの名無しさん:2010/11/28(日) 17:57:10
>>67
そうなら、この"OpenGL"スレから出て行ってくれよw
70デフォルトの名無しさん:2010/11/28(日) 20:19:21
マサカと思うが
>>17の言いたいことはこうか
「馬鹿の17にもわかるライブラリよこせやごるぁ」
71デフォルトの名無しさん:2010/11/28(日) 21:21:02
今年のSIGGRAPHで「馬鹿の17に分かるようなライブラリねーから!」と発表があったのが堪えたんだよ彼は。
72デフォルトの名無しさん:2010/11/28(日) 21:35:55
API(高級言語)って時点でもう
73デフォルトの名無しさん:2010/11/29(月) 13:52:17
DirectXやOpenGLはマシン語に相当するからな。
一つの言語でグラフィック界のマシン語にコンパイルできたらかなり便利だろ。
あとGUIもその言語によって環境によって一つにまとめれたらますます便利になるな。
74デフォルトの名無しさん:2010/11/29(月) 14:00:07
言語というより共通のインターフェイスだな。
C++標準ライブラリーに組み込んでほしいな。
75デフォルトの名無しさん:2010/11/29(月) 19:11:52
>>73
一つの言語でグラフィック界のマシン語にコンパイルというのは、
グラフィックに関係ない部分(AIロジックなど)も全部その新言語でプログラムするの?

それとも、グラフィック以外はA言語、グラフィックはB言語とかって分けるの?
76デフォルトの名無しさん:2010/11/29(月) 19:23:09
どちらも違うOpenGlは言語ではなくてライブラリーだから
Cなどの言語に相当するものもライブラリーになる
77デフォルトの名無しさん:2010/11/29(月) 19:52:35
>17
間違えてない。
アセンブラでプログラムを組むことも間違いではない。

お前は何か大きな勘違いしている。
78デフォルトの名無しさん:2010/11/29(月) 20:31:03
>>76
言ってる意味が分からんな

もしかして「一つの言語でグラフィック界の・・・」の「言語」というのは比喩なのか
79デフォルトの名無しさん:2010/11/30(火) 12:48:24
面倒だから
解決策述べずにGL批判する奴は
・OpenGLが使えない
・自分では何もできない
・プログラミング・数学ができない
・日本語が分からない
としてこのスレを出て行ってもらおう
みんなシカトな
80デフォルトの名無しさん:2010/11/30(火) 14:27:24
>>79
とりあえずレス全部読んでから書き込んでいただけます?
お前は一体誰と戦ってるんだ
81デフォルトの名無しさん:2010/12/05(日) 12:33:43
glfwってコンテキストスイッチはサポートしてないんだな
それって何の意味もなくね
82デフォルトの名無しさん:2010/12/06(月) 10:16:21
>>81
コンテキストスイッチってマルチウィンドウという意味かな?
だったら次の3.0で対応
83デフォルトの名無しさん:2010/12/06(月) 16:55:03
コンテキストといえば、glewContextInitもかな
海外のサイト見てもリンカエラー、実装されてねえぞとの報告ばっかり
84デフォルトの名無しさん:2010/12/07(火) 10:24:34
glewやglfwで現サポートしているマルチスレッドは
レンダリングコンテキストの扱いを度外視してるから
どの道APIを直接叩かないとダメだよ
ライブラリに依存したソースに後からマルチスレッドを実装するとなれば、おそらくソース全修正レベル

まあそれが”ライブラリ”の常なんだけどね
バージョンアップの度に指向を二転三転させ、開発者の脳と体を爆発させかねないブレを見せてるのはこれくらい
上にも挙がってるけど、GLが嫌われてるのはそういうところかな
なまじ汎用性が高いからタチが悪い
85デフォルトの名無しさん:2010/12/09(木) 15:13:11
初心者の質問ですいません
頂点バッファ+固定機能(OpenGL1.5くらい)で、モデルの透明度を毎フレームを変化させたいのですが
こういう時は頂点カラーを変更して頂点バッファを送り直すものなんでしょうか?
頂点カラーはそのままで、もうひとつ任意のアルファ値を乗算させる方法はありますか?
つまり glBlendFunc(GL_SRC_ALPHA * GL_CONST_ALPHA, ...); みたいなことはできます?
86デフォルトの名無しさん:2010/12/09(木) 15:31:41
それ俺も知りたい。頂点カラーってα値だけでいいから
あとから一括して乗算できると便利なんだけど。
87デフォルトの名無しさん:2010/12/09(木) 17:56:01
半透明なテクスチャを貼って乗算する
88デフォルトの名無しさん:2010/12/09(木) 20:01:32
テクスチャ・・・1x1のテクスチャをアルファ制御用に貼っておいて
透明度が変わるたびにそのテクスチャだけ転送しなおせば
転送量が小さくなるってことでしょうか?
でも元々テクスチャを貼ってある場合はどうするです?
あ、テクスチャコンバイナ関数・・・とかいうのを使う?
89デフォルトの名無しさん:2010/12/09(木) 21:52:30
glTexEnvでテクスチャの合成方法を設定できる
しかし標準でGL_MODULATEだから特にいじる必要なさそうだな
GL_TEXTURE1にアルファだけの1x1テクスチャをバインドして有効にするだけ

GL_COMBINE使えば1x1テクスチャ用意する必要もなく定数設定してかけることもできそうだが試したことはない
90デフォルトの名無しさん:2010/12/10(金) 00:02:44
頂点カラーをテクスチャに焼き付けて頂点カラーやめるのはだめなの?
91デフォルトの名無しさん:2010/12/10(金) 16:40:32
>>90
その発想はなかったですが、頂点カラー配列を自由に使えるようになったとしても
頂点バッファを毎フレーム送り直すのは変わらなくないですか?
glDisableClientState(GL_COLOR_ARRAY) したら単にデフォルトの白になりますよね?
(・・・あれ?デフォルト色って指定できるんでしょうか?)

>>89のGL_COMBINEでテクスチャ用意しなくても定数乗算っていうのが一番イメージに近いですが
特殊っぽいので、もしうまくいっても結局グラボによって動かないとかありそうですね・・・

難しそうなのは分かりました。シェーダが使えない場合は素直に頂点バッファ送りなおしの方向で考えます
ありがとうございました
92デフォルトの名無しさん:2010/12/10(金) 16:45:08
あ、違った。1x1テクスチャの方法はいずれにしろ有効でした
汎用的に実装できるかな・・・ありがとうございました
93デフォルトの名無しさん:2010/12/10(金) 17:22:30
結局うまい方法は無いってこと?
94デフォルトの名無しさん:2010/12/10(金) 17:23:38
つまり頂点カラーを毎フレーム送るのがスタンダードなやり方。
(BVOの意味ないじゃん)
95デフォルトの名無しさん:2010/12/10(金) 19:17:10
頂点バッファで頂点カラー使わないならglColor*だけでできなかったっけ
96デフォルトの名無しさん:2010/12/10(金) 19:35:21
スレ的には身も蓋もないけど、ピクセルシェーダで書いた方が捗りそうだね
97デフォルトの名無しさん:2010/12/10(金) 23:47:25
ピクセルシェーダより頂点シェーダで頂点カラーのアルファだけいじるのが効率いいけどな
しかし元が固定機能でって話なので
98デフォルトの名無しさん:2010/12/15(水) 00:23:52
GLSL勉強中なのですが、教えてください。
Shader中で、forループを使うと、非常に遅くなるんですが、繰り返し処理をべた書き(9周程度の処理なので、9行のコードを記載)したところ、サクサクうごきました。そういうもんなんでしょうか?
ちなみに、実行環境はiPhone4です。
99デフォルトの名無しさん:2010/12/15(水) 11:41:35
かつては高コストな処理が潜んでたんだよ。
100デフォルトの名無しさん:2010/12/15(水) 12:08:54
現在の話をしているときに過去の話をしても意味が無いだろ。
典型的な会話ができない人だな。
101デフォルトの名無しさん:2010/12/15(水) 12:15:25
何 急に出てきて意味不明なこというやつ。
102デフォルトの名無しさん:2010/12/15(水) 18:17:21
頂点を決める場合は、renderに打ち込むしかないんですか?
テキストや別ファイルから読み込む方法ってありませんか?
103デフォルトの名無しさん:2010/12/15(水) 21:55:54
>>98
GLSLコンパイラによってはループの展開など最適化を自動でしてくれるがiPhoneではそんなものかも

>>102
renderに打ち込むの意味がわからないんだが、
テキストや別ファイルから読み込むコードは自分で書くか
読み込み用のライブラリを使ってくれ
104デフォルトの名無しさん:2010/12/18(土) 16:00:19
OpenGL画面内でウィンドウとかダイアログを表示して取り扱える
オープンソースなライブラリご存知ないでしょうか?
105デフォルトの名無しさん:2010/12/18(土) 16:28:22
GLUI?
106デフォルトの名無しさん:2010/12/18(土) 20:59:48
本格的なものならQt。覚えるの大変かもだが
ttp://www.youtube.com/watch?v=MXS3xKV-UM0
107デフォルトの名無しさん:2010/12/18(土) 21:09:54
笑った。すげーな
Qtの中でOpenGL使うのは普通だけど逆は初めて見た。
108デフォルトの名無しさん:2010/12/18(土) 23:04:30
面ごとにテクスチャ画像を変えたい場合どうすんの。
109デフォルトの名無しさん:2010/12/18(土) 23:15:18
面ごとにバインド
110デフォルトの名無しさん:2010/12/18(土) 23:46:53
自己解決した。
UVマッピングだな。
111デフォルトの名無しさん:2010/12/18(土) 23:56:00
いや解決してないだろそれ
テクスチャー画像変えたかったらバインドし直すしかあるまいて
112デフォルトの名無しさん:2010/12/19(日) 00:09:36
画像変えたいって言い方はおかしいわな
113デフォルトの名無しさん:2010/12/19(日) 00:14:10
画像変えるしかないと思ってたんだよ
114104:2010/12/20(月) 10:17:26
>>105

GLUT系はオープンソースではないので、少し躊躇してしまいました。
#今後趣味として、ライフワーク的に改良するアプリを作りたいなぁと...

>>106

Qtは仕事で触っているのですが、このような使い方ができるとは思いませんでした。
(>>107さんと同じ考えでした)
少し研究してみたいと思います。

ありがとうございました。
115デフォルトの名無しさん:2010/12/20(月) 10:26:50
初心者質問で申し訳ないんですが、OpenGLを使ったゲームを作りたく、1から勉強したいと思っています
OpenGL4.0がリリースされたそうですが、>>1の必読書やっとけば鉄板でしょうか?
また、サウンド関連などは何を使えばいいのでしょうか?
116デフォルトの名無しさん:2010/12/20(月) 10:34:01
正直4.0の内容までわかるってなったら相当時間かかるし、まだまだ全然情報ないから>>1だけじゃ無理。とりあえずはシェーダー使えるようになることを目指すべき。

サウンドはOpenALとかかな。
117デフォルトの名無しさん:2010/12/20(月) 10:39:59
>>116
OpenALですか。ありがとうございます!
DirectXが10・11から大幅に仕様が変わったという話なのですが、
OpenGL4.0は以前のバージョンからの拡張という感じなのですか?
それとも、まだそういった情報はあまり来ていないのでしょうか。
118デフォルトの名無しさん:2010/12/20(月) 11:17:49
DirectXは10でだいぶ変化して過去の機能切り捨て。11でテッセレーションとDirectCompute機能の追加。
それにそれぞれ対応するのがOpenGL3.xとOpenGL4.0。ちなみに最新版はOpenGL4.1。

でもOpenGLは互換プロファイルってのを使えば過去の機能も一応使える。

これらの習得は君が思ってる以上に長い道だと思うけど頑張って。
119デフォルトの名無しさん:2010/12/20(月) 11:43:38
>>118
おお・・・。DirectXと同じような形になってるのかぁ・・・。
どっちをやっても労力は一緒っぽいですね・・・。
とりあえずOpenGL3.xあたりから勉強してみます。
120デフォルトの名無しさん:2010/12/20(月) 11:54:39
OpenGL3.0以降からの学習について書いてあるサイトは皆無だから、まずは固定パイプラインである古典OpenGLから勉強するのが良いよ。慣れてきたらプログラマブルシェーダーに手をつける。
121デフォルトの名無しさん:2010/12/20(月) 19:54:11
CUTT System:OpenGL 4.0 グラフィックスシステム
ttp://www.cutt.co.jp/book/978-4-87783-255-1.html

なんか新しい本でてるね
122デフォルトの名無しさん:2010/12/20(月) 19:55:14
>>121
よくみたら、仕様書の翻訳か・・・
それにしても高いな
123デフォルトの名無しさん:2010/12/20(月) 20:00:02
OpenGLの新刊を久しぶりに見た気がするw
アホな本出されるより仕様書を訳してくれた方がありがたい。
124デフォルトの名無しさん:2010/12/20(月) 20:39:58
仕様書系はただの翻訳でも責任が重いからな
かなりの分量ある物全体に渡ってチェックの質を高く保つために、
価格も高いんだろ

そうだと信じたい
125デフォルトの名無しさん:2010/12/20(月) 20:43:07
仕様書はパイプラインの順を追って書かれてるから調べ物するにはちょっと使いづらいよな
あらためて読むと知らないことが意外にあったりするんだが

OpenGL SuperBibleあたりが訳されたら便利そうだけど厚いから翻訳は望めないか
126デフォルトの名無しさん:2010/12/21(火) 12:14:23
最近(?)のnvidiaのOpenGLドライバーにGL/glu.hがなく、
gluBuild2DMipmaps がエラーになります。
これはもうglu.hは使うなということでしょうか?
助けて。
127デフォルトの名無しさん:2010/12/21(火) 12:21:10
libglu1-mesa-dev パッケージを入れたらgluが使えるようになりました。
何でやねん。
このパッケージを入れるとOpenGLがnvidiaからmesaに変わりそうで入れなかったのですが、
特にそういうこともないようです
128デフォルトの名無しさん:2010/12/21(火) 23:47:27
俺の英語力が低いだけかもしれんが、OpenGLの仕様書の英語って難しくない?
書いてある事がよくわからないときはExtension Restoryとかどっかのサイトを調べたりするけど。
129デフォルトの名無しさん:2010/12/21(火) 23:56:33
俺の日本語力が低いだけかもしれんが、仕様書の日本語って難しくない?
書いてある事がよくわからないときは転職サイトを調べたりするけど。
130デフォルトの名無しさん:2010/12/22(水) 01:02:08
うわ、つまんね
131デフォルトの名無しさん:2010/12/22(水) 06:42:40
スレチならすみません;w;
OpenGLのオンラインゲームをSCFH DSFを使ってフルスクリーンでニコ生とか配信したいのですが
Windows7だとフレームバッファの違いなのか真っ暗にしか映りません。
XPだとちゃんと配信できるみたいですが・・・
DxtoryというソフトもありますがあまりにもSCFHの仕様が好きすぎてソフトを変えずに配信したいです。
その場合SCFHのプログラムをどのように扱えばいいのか、またコマンド?次第ではWindows7でも
配信できるのか知りたいです。
プログラムとかはまったくの初心者です。
知恵をお借りしたいです。
132デフォルトの名無しさん:2010/12/22(水) 06:51:54
>>131
PCゲームのプレイ動画をキャプチャする方法
ttp://hibari.2ch.net/test/read.cgi/pc/1207519775/

検索したらこんなスレがあったよ
そこできけばいいよ
133デフォルトの名無しさん:2010/12/22(水) 06:54:50
>>131
SCFH DSFでググレば色々でてくるわけだが・・・
134デフォルトの名無しさん:2010/12/22(水) 07:39:34
>>132
ちょっと覗いてきます!

>>133
色々ぐぐって探しましたがSCFHを使ってWindows7でフルスクリーン配信は無理という結果しか
出てこず頭をかかえておりました。
これはもうSCFHを改良するしかないと思いここに書き込ませていただきました。
スレチっぽかったですね・・すみません;w;

ありがとうございました!
135デフォルトの名無しさん:2010/12/22(水) 09:29:11
Linux(Ubuntu)環境で動画キャプチャーできるソフトない?
どいつもこいつも何故かOpenGL使ってると失敗する。
136デフォルトの名無しさん:2010/12/22(水) 14:11:39
xvidcap でできたよ (Debian sid + 8600 GT + nvidia の 260.19.21)
137デフォルトの名無しさん:2010/12/24(金) 16:27:15
glReadPixelsを使って、連続でデスクトップのキャプチャー画像を取り出しているんだが、
これを高速で拡大/縮小したい。
なんかいい方法ない?
138デフォルトの名無しさん:2010/12/24(金) 19:32:39
WindowsでOpenGL使ってるんですが、テクスチャオブジェクトが勝手に
消える(ように見える)現象に悩まされています。

1. CreateWindow()でウィンドウを生成
2. WM_CREATEが発生した時にテクスチャオブジェクトを作成する。
3. 再描画が発生した際(WM_PAINT発生時)に、2で生成しておいた
テクスチャオブジェクトをglTexCoord2f()、glVertex2fs()で表示する。

という処理で、3でテクスチャの内容が表示されません。
(テクスチャが表示されるべき箇所に、白くベタ塗りされる)

3の処理が発生する度に、glTexParameteri()で拡大縮小フィルタの設定と、
glTexImage2D()で画像の設定をしてやると、正常に描画されます。

GLUTで同様のコードを書くと、正常に描画されるのですが。
何が悪いんでしょうか。
139デフォルトの名無しさん:2010/12/24(金) 19:45:15
openglでアプリを作っているんですが、図を描くための頂点を設定する際にそれをテキストファイルから読み込むことは可能なのでしょうか?
使っているのはMacのXcodeです。



- (void) render
{

static const GLfloat squareVertices[] = {
-0.5f, -0.5f,
0.5f, -0.5f,
-0.5f, 0.5f,
0.5f, 0.5f,
};


↑この『-0.5f, -0.5f,』の部分をテキストファイルから読み込んで表示したいと思っています。
140デフォルトの名無しさん:2010/12/24(金) 19:47:01
>>139
できます。できなったら怖いです。
141138:2010/12/24(金) 20:01:14
よくよく調べてみると、初回のテクスチャ生成時にglGenTextures()が
GL_INVALID_OPERATIONを返しているのが直接の原因のようです。
エラーが出るような変な場所で呼んではいないと思うんだけどなあ...
142138:2010/12/24(金) 20:11:44
glGenTextures()を呼ぶ場所を[3]にして、初回のWM_PAINT発生時にのみ
テクスチャオブジェクトを呼ぶようにすることで、テクスチャオブジェクト
の描画に成功しました。
気持ち悪いですが、解決ということで。
143デフォルトの名無しさん:2010/12/24(金) 20:55:05
Windowsは知らないけどGLコンテキストがまだ有効でないところで
glGenTextures()を呼んでいるのでは?
まれによくある。
144デフォルトの名無しさん:2010/12/24(金) 20:56:42
>138
CreateWindow()がデバイスコンテキストを作成する前じゃないの?
145144:2010/12/24(金) 20:59:52
書き込めた!

>>85
146144:2010/12/24(金) 21:01:16
途中だった orz

>>85

glLightfv で alpha を変更すれば?
147デフォルトの名無しさん:2010/12/24(金) 22:52:37
>>139 に乗っかるわけじゃないですが、
テキストからの読み込みってどのような方法がありますか?
148デフォルトの名無しさん:2010/12/24(金) 23:01:53
fopenまたはifstream
149デフォルトの名無しさん:2010/12/24(金) 23:18:52
>>148 やっぱりXcodeでもfopenでいいんですね!
それってプログラムのどの辺に書き込めばいいんですか?


たびたびすいません
150デフォルトの名無しさん:2010/12/24(金) 23:21:52
失せろカス
151デフォルトの名無しさん:2010/12/24(金) 23:26:38
さーせん
152デフォルトの名無しさん:2010/12/24(金) 23:50:33
>>150 すいません、自力で頑張ってみます
153デフォルトの名無しさん:2010/12/27(月) 01:53:55
スクリーンにテクスチャを描画したいのですが
スクリーン座標をうまく得ることができず、
視点移動するとどうしてもおかしくなってしまいます
glReadPixels
GluUnProject
この2つを使ったのですがZ値が奥にいったりしてしまいます・・・

なんかいい方法はありませんでしょうか?
よろしくお願いします。m(_ _)m
154デフォルトの名無しさん:2010/12/27(月) 09:45:29
(0,0)〜(640,480)を指定して2次元っぽく板ポリゴンを描きたいのなら、
投影行列をこう設定して、
 glMatrixMode (GL_PROJECTION);
 glLoadIdentity ();
 glOrtho (0, 640, 0, 480, -1, 1);
例えば画面全体を覆う板ポリゴンを描くには、
 glBegin (GL_TRIANGLE_STRIP);
 glVertex3f (640,0,0);
 glVertex3f (640,480,0);
 glVertex3f (0,0,0);
 glVertex3f (0,480,0);
 glEnd ()
でOK。
155153:2010/12/27(月) 15:01:10
ありがとうございましたm(_ _)m
無事解決できました。
156デフォルトの名無しさん:2010/12/27(月) 15:22:13
ボタン画像の同じtex_idの画像をx.y座標を変えて複数個表示(透過)する処理を書いているのですが、
この関数(drawTexture)を実行する前に行った↓のglColor4fが1つ目のボタン画像にしか摘要されず
、1つ目のボタン画像以外透過処理されずに出力されてしまいます。
gl.glColor4f(0x10000, 0x10000, 0x10000 , 0.5f);

関係ないかもしれませんが、draw処理の前に一度かならず下記の処理を記述しています。
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);

どうかこのボタンすべてに透過処理を行う方法をご教授くださいませんか?

drawTexture関数
// テクスチャユニット0番をアクティブに
    省略
gl.glBindTexture(GL10.GL_TEXTURE_2D, tex_id);
// モデルビュー行列を選択
gl.glMatrixMode(GL10.GL_MODELVIEW);
// 現在選択されている行列(モデルビュー行列)に、単位行列をセット
gl.glLoadIdentity();
// 行列スタックに現在の行列をプッシュ
gl.glPushMatrix();
gl.glTranslatef(x, y, 0);
gl.glRotatef(angle, 0.0f, 0.0f, 1.0f);
gl.glScalef(scale_x, scale_y, 1.0f);
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4); // square
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asIntBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);
gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, IntBuffer.wrap(texCoords));
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glPopMatrix();
157デフォルトの名無しさん:2010/12/27(月) 16:48:56
1つ目のボタンを表示してから2つ目のボタンを表示するまでに、誰かがglBlendFunc()を呼んでいる。
そっちも多分理由があって呼んでるはずだからdrawTextureに入ったら改めて自分でglBlendFunc()を呼んでセットし直せばいい。

158デフォルトの名無しさん:2010/12/27(月) 16:52:22
あとこれ間違えな。
×:gl.glColor4f(0x10000, 0x10000, 0x10000 , 0.5f);
○:gl.glColor4f(1, 1, 1, 0.5)
1以上は1にクランプされるから平気だけど。
159デフォルトの名無しさん:2010/12/27(月) 18:19:43
>>157

ボタンラベルを描画するクラス内部でglBlendFuncを行っていました
のでラベル表示のループとボタン描画のループを分けることで無事解決しました。
有難うございました。

>>158
参考書通りの記述ですが、結構前から疑問に思いつつ放置していた部分です。
2つも同時に学べることができました。
13000円の参考書を買おうか、この時点で迷っていましたが助かりました!

160デフォルトの名無しさん:2010/12/28(火) 07:46:05
背景と背景以外を分けたいと思い、depthが1かどうかで分岐するような
コードを書いたのですが、明らかに背景の点が背景以外に入る事があります。
調べてみるとdepthが0.99くらいの微妙な数値になっているようで、
透視投影の設定がまずいのかと見返しましたが原因がわかりません。
原因としては何が考えられますでしょうか?
もしよろしければご教授ください。
161デフォルトの名無しさん:2010/12/28(火) 08:51:24
計算機ではよく有ること。
有限桁の浮動小数であらわしている以上微妙な誤差は出る。
162デフォルトの名無しさん:2010/12/28(火) 11:31:44
>>161
そういうものですか…。
ありがとうございます。他の方法を考えてみます。
163デフォルトの名無しさん:2010/12/28(火) 17:20:06
2枚のテクスチャを画面に並べて表示するプログラムを作成中ですが、
2枚とも並べると画面に入らないため、画像で特に表示させたくない部分は
画像を切り取って表示させようと思っています。

すでにロードしているテクスチャを座標を指定して切り取る方法をご存知の
方、教えて頂けませんでしょうか?
164デフォルトの名無しさん:2010/12/28(火) 17:32:17
何言ってるかわからん。
glTexCoord2f(s,t)で(s,t)を変えれば終わりだろ。
165デフォルトの名無しさん:2010/12/28(火) 17:33:08
頂点のテクスチャ座標を調節するだけではいけないのですか?
166デフォルトの名無しさん:2010/12/28(火) 18:09:48
だからそう言ってるだろ。
167デフォルトの名無しさん:2010/12/30(木) 23:25:37
かなり既出だと思うんですが探しても分からないんで聞きます。
glDrawArraysをした後、レンダリングした実座標を取りたいんですが何を見ればわかるんでしょうか?

168デフォルトの名無しさん:2010/12/30(木) 23:35:05
わかりません
必要ならgluProjectなりなんなりで自分で計算してください
169デフォルトの名無しさん:2010/12/30(木) 23:35:41
実座標ってのは画面での座標ってこと?
それなら描画しようとしてる頂点の座標にプロジェクション×モデルビュー行列かけて、さらにビューポートの座標でどこに相当するかを考えればわかると思うけど。
固定機能でならgluProjectとかがあった気がする。
170デフォルトの名無しさん:2010/12/30(木) 23:40:47
>>168
>>169
自分で計算するしかないんですね、大変そう・・・
レスありがとう!
171デフォルトの名無しさん:2011/01/02(日) 01:10:21
こんにちは。
球とかドーナツ型とかのメッシュを自動生成してくれるライブラリみたいのはないでしょうか?
座標と描画順を吐き出してくれるライブラリがあるとすごくうれしいんですけど。
172デフォルトの名無しさん:2011/01/02(日) 01:30:27
Direct3Dとかw
Cylinder, Sphere, Torusはいけるはず
173デフォルトの名無しさん:2011/01/02(日) 02:08:57
glutWireTorus とか
174デフォルトの名無しさん:2011/01/02(日) 02:35:17
>>172
>>173
球はSphereで、ドーナツはTorusなんですね。Ballとかdoughnutで調べてました。
Direct3DでTeapotって関数を見つけたんですけど、さすがに使い道はなさそうですw
OpenGLの仕事が入ってきたのですが、Direct3Dも含めて3Dは初めてだったので困っていました。
ありがとうございます。早速調べてみます。
175デフォルトの名無しさん:2011/01/03(月) 17:58:58
vrml 2.0のパーサのライブラリのリンクが全然たどれない。。
モーション作るのに他にいいのある?
176デフォルトの名無しさん:2011/01/03(月) 18:07:43
kinect
177デフォルトの名無しさん:2011/01/04(火) 15:24:18
GTX480 で glReadPixels がやたら遅くなってる問題を今頃知ったのですが、
なにか回避策ないでしょうか? Quadro買わなきゃダメかな。
あと、GTX580 でこの問題を試した方いますか?
178デフォルトの名無しさん:2011/01/05(水) 17:31:40
ポイントスプライトにテクスチャ座標って指定できないの?
179デフォルトの名無しさん:2011/01/05(水) 18:31:40
glmultmatrix等のOPenGLでの行列演算をを使うと
自作の行列計算のプログラムを使うよりも速いのですか?
180デフォルトの名無しさん:2011/01/05(水) 18:45:52
Android実機で作成したアプリケーションを動作確認中ですが
OpenGLESで2Dテクスチャを画面サイズに合わせて表示すると白画面に
なってテクスチャが表示されません。(エミュレータだと表示可能)

すべてのテクスチャを2の累乗にしても駄目でした。
画面サイズに合わせてテクスチャのサイズを変更したのがまずかったのでしょうか?

どなたか何故この状態になるのかご教授頂けないでしょうか?
181デフォルトの名無しさん:2011/01/05(水) 18:59:32
>>179
ユーザが計算した行列をglMultMatrixとかglLoadMatrixで読み込ませるのは遅いらしいと聞いたことはある
OpenGLがそこから逆行列を計算しなければならないためらしい
glTranslateとかglRotateとかglScaleとかで操作するときは逆行列の計算もその逆向きの操作をするだけなので速いということらしい
本当かどうか確認したことはないので正しいのかどうかはわからない
182デフォルトの名無しさん:2011/01/05(水) 19:04:07
>>180
あまり役に立たないかもしれないがglGetErrorでどこかエラーが発生してないか確認してみては
183デフォルトの名無しさん:2011/01/05(水) 19:15:17
解決しました。

よく確認するとテクスチャが2の累乗画像(正方形)ではありませんでした。
184デフォルトの名無しさん:2011/01/05(水) 19:56:09
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
185デフォルトの名無しさん:2011/01/06(木) 16:31:45
2D画面のフェードアウトフェードイン処理を記述しております。
フェードアウト処理は
gl.glColor4f(1, 1, 1 , fdInAlphaNum);のfdInAlphaNumを徐々に
増やしていきながら、黒の画像をフレームバッファに描画する形で
出来ていますが、フェードイン処理については黒の画像のアルファ値
徐々に減らしても、黒い画像から一気に描画させたい画像を表示して
しまいます。

フェードイン処理をうまくやる方法を教えてください。
186185:2011/01/06(木) 17:08:15
フレームレートを調整したら解決しました。

187デフォルトの名無しさん:2011/01/07(金) 00:13:41
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
188デフォルトの名無しさん:2011/01/08(土) 01:27:51
最新のSandyBridgeの統合GPUは前世代に比べてOpenGLグラフィックス性能が
現行の10倍以上に上がってるみたいだね
http://pc.watch.impress.co.jp/img/pcw/docs/417/996/html/graph05.gif.html
189デフォルトの名無しさん:2011/01/08(土) 09:16:44
基本的にはノート用だね。ローエンド単体GPUより上の性能を低消費電力で提供。
それよりIntelがやっとまともなOpenGLを提供するのがうれしい。
190デフォルトの名無しさん:2011/01/08(土) 23:51:00
Arrandale が酷すぎた。
191デフォルトの名無しさん:2011/01/09(日) 06:34:01
>>188
ミドルのGTS250でも36fps出るようなベンチだから
やっと動作対象に入ったレベルだけどね

http://tshimizu.cocolog-nifty.com/photos/uncategorized/2010/02/18/cinebench_r115_3.jpg
192デフォルトの名無しさん:2011/01/09(日) 18:22:58
初歩的な質問で恐縮ですが
C++での配列確保するときに

テクスチャの配列を動的に作りたいと思っています。
GLubyte teximg[TEXHEIGHT][TEXWIDTH][4];

vector型などでは大丈夫なのだと思っていますが
GLubyteでこのような取り方をするためにはどのような記述になるのでしょうか
193デフォルトの名無しさん:2011/01/09(日) 18:47:34
GLubyte *p = malloc(4 * TEXWIDTH * TEXHEIGHT);
194デフォルトの名無しさん:2011/01/09(日) 18:56:08
出来れば3次元で。。。ソースの変更箇所が多く
195デフォルトの名無しさん:2011/01/09(日) 19:02:40
GLubyte (*teximg)[TEXWIDTH][4] = malloc(4 * TEXWIDTH * TEXHEIGHT);
てかOpenGL関係ないじゃないか
196デフォルトの名無しさん:2011/01/09(日) 19:15:23
お手数かけてしまい申し訳ないです
GLubyteでの格納の仕方があるかと思い

mallocでCと同じようにやるのですね。ありがとうございました
197デフォルトの名無しさん:2011/01/09(日) 22:31:10
>>196
(一般的に)GLubyte = unsigned char だぞ。
メモリのとり方なんぞCである以上そんな変わらん。
C++ならnewな。
198デフォルトの名無しさん:2011/01/10(月) 16:01:18
フォームのりサイズされたときに、回転とかしてたオブジェクトが元に戻ってしまいます
以下抜粋
glViewport(0,0,w,h);

//投影変換モード
glMatrixMode(GL_PROJECTION);

//行列を初期化
glLoadIdentity();

//平行投影
if (w<=h)
glOrtho(-nRange,nRange,-nRange*(h/w),nRange*(h/w),-nRange,nRange);
else
glOrtho(-nRange*(w/h),nRange*(w/h),-nRange,nRange,-nRange,nRange);

//モデルビュー変換モード
glMatrixMode(GL_MODELVIEW);

//行列を初期化
glLoadIdentity();
}
glLoadIdentifyの使い方がいまいちよくわかりません
どなたかご教示お願いします
199デフォルトの名無しさん:2011/01/10(月) 16:02:33
それはglLoadIdentityがわからないのではなくて、
行列がわからないのだ
200デフォルトの名無しさん:2011/01/10(月) 16:14:51
そりゃ最後でMODELVIEW行列を単位行列にしてるんだから当たり前だろう。
そこでMODELVIEW行列をいじる必要はない。

201デフォルトの名無しさん:2011/01/13(木) 17:25:30
freeglutを使っているんですが、
マウスの左ボタンと右ボタンの同時押し判定ってできますか?
VS2010のC++で開発してます
202デフォルトの名無しさん:2011/01/13(木) 18:20:15
先に押されたほうが離される前にもう一方が押されたら同時押し開始ってことで
203デフォルトの名無しさん:2011/01/14(金) 13:19:06
どちらかのボタンを押したらタイマー開始して、指定した時間以内にもう片方のボタンが押されたら同時に押されたってことで
204デフォルトの名無しさん:2011/01/14(金) 15:16:11
openglでjpegの読み込みを行おうとしているのですが
decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_start_decompress" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_stdio_src" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_CreateDecompress" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_destroy_decompress" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_read_header" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_finish_decompress" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_read_scanlines" は未解決です。
1>decode-jpeg.obj : error LNK2001: 外部シンボル "_jpeg_std_error" は未解決です。
fatal error LNK1120: 外部参照 8 が未解決です。
とエラーが出ます
jpeg8bのヘッダーのライブラリを入れて行っているのですが、どうすればいいでしょうか?
VB2010C++でビルドしました
205デフォルトの名無しさん:2011/01/14(金) 15:18:48
ヘッダだけじゃなくてソースも入れないとだめなんじゃ?
206デフォルトの名無しさん:2011/01/14(金) 15:30:54
一瞬VBで使おうとしてるのかと思った
207デフォルトの名無しさん:2011/01/14(金) 16:12:52
>>204
そりゃlibjpeg.aがリンクできてない。
もとからリンクするように指定してないのか、見つけられないか。
208デフォルトの名無しさん:2011/01/14(金) 21:58:38
物体と球の衝突シミュレーションをやっているんだが、なかなか反射がうまくいかない
例えば中心(0,0,0)の立方体をgluSolidcube()で作ったとき、この立方体のどこに球が当たっても反射するようにするには球の座標を(x,y,z)として

if( x≧-1 && x≦1 && y≧-1 && y≦1 && z≧-1 && z≦1)

この条件だとどうしてだめなんでしょうか?
209デフォルトの名無しさん:2011/01/14(金) 22:08:49
半径は?
210デフォルトの名無しさん:2011/01/14(金) 22:22:37
何がやりたいのかいまいちわからんが、
A:球の中心
B:衝突地点
C:衝突地点の法線
A-Bで入射ベクトルを計算してCを軸とした反射ベクトルを計算すればいい。
211デフォルトの名無しさん:2011/01/14(金) 22:37:24
>>209
仮に半径r=0.5とすると、衝突判定に用いる球の座標には半径分(0.5)加算しています
球はgluSolidSphere()で描画しています

>>210
球が物体に接触しても反射しないで物体を完全に貫いてしまったり、一部の面でのみ跳ねかえったりして不思議に思い質問しました
212デフォルトの名無しさん:2011/01/14(金) 22:58:45
OpenGL全然関係ないような気がするけど
>>211
実際には
if( x≧-1-r && x≦1+r && y≧-1-r && y≦1+r && z≧-1-r && z≦1+r)
みたいにしてるってことですかな。で、当たってたら球の速度の壁の法線方向を反転。
一度跳ね返ったら、干渉しなくなるまで次の反射の処理を行わないみたいな条件入れないとだめ。
とか。
213デフォルトの名無しさん:2011/01/14(金) 23:01:36
まあ何をどう計算してるかわからないので原因もはっきりしないな。
214デフォルトの名無しさん:2011/01/15(土) 01:12:52
>>207
libjpeg.aとはなんでしょうか?
jpeg.libとヘッダー各種はプロジェクトのプロパティ設定で指定しているのですが違うのでしょうか?
215デフォルトの名無しさん:2011/01/15(土) 01:26:24
>>214
jpeg.libだけだと足りてないのでは?
dumpbin /symbols で、_jpeg_start_decompress他がjpeg.libに含まれてるか要確認。
216デフォルトの名無しさん:2011/01/15(土) 03:03:39
>>208
> if( x≧-1 && x≦1 && y≧-1 && y≦1 && z≧-1 && z≦1)

これ立方体だろ?
217デフォルトの名無しさん:2011/01/15(土) 09:14:50
立方体の中に球の中心が入り込んだら反射にしてるんじゃね
218デフォルトの名無しさん:2011/01/15(土) 10:50:46
>>208
球と立方体の衝突はそこそこめんどくさい
衝突判定でググってみれば
219208:2011/01/15(土) 11:57:57
もっと勉強してよく考えることにします
レスくれた方ありがとうございました
220デフォルトの名無しさん:2011/01/15(土) 16:59:36
GLUIに詳しい方いらっしゃいますか?
221デフォルトの名無しさん:2011/01/15(土) 17:52:45
>>220
それが質問なのか?
222デフォルトの名無しさん:2011/01/15(土) 17:52:54
いませんさようなら
223デフォルトの名無しさん:2011/01/16(日) 10:41:33
>>219
まじめに衝突だけ勉強するなら分厚い本とかあるけど
とりあえずなら「実例で学ぶゲーム3D数学」って本がオススメ
色んなことがひと通り書いてある
224201:2011/01/17(月) 15:15:36
>>202 >>203
亀レス(´・ω・)スマソ
二人のレスのおかげで解決できました
ありがとう
225デフォルトの名無しさん:2011/01/19(水) 12:40:07
GL_LINE_STRIPで線が描写されたりされなかったりするんですが、
(起動して描写される回とされない回がある)(頂点はglVertex3d)
GeForceでなくQuadroじゃないとダメって事なんでしょうか?

Qtでハードウェアアクセラレーションを有効にするにはどうすればいいか
わからないので教えてください。
226デフォルトの名無しさん:2011/01/19(水) 13:00:51
225です。
GL_LINE_STRIPの件については自己解決しました。

227225:2011/01/19(水) 14:08:33
と思ったらやっぱり表示されなくなる事がありました。
CAD作成中なんですけど
線は円柱で書いた方が良いんでしょうかね?
228デフォルトの名無しさん:2011/01/19(水) 14:20:57
GeForceでGL_LINE_STRIPは使えます。
描画されないことがあるのなら、それは描画しないことがあるプログラムだからです。
デバッグしてください
229デフォルトの名無しさん:2011/01/19(水) 15:34:53
プログラムに問題がありそうな気がするけど、これだけの情報からではなあ。
あとラインとかポイントは自体不明瞭な動作をすることがあるし、よくわからん。
230225:2011/01/19(水) 21:57:44
線の生成過程に領域外アクセスが含まれており、うまくいくときとうまくいかない時があった模様です。失礼致しました。

以下参考
配列をvectorにした所、領域外アクセスを検出できました。
C言語による最新アルゴリズム辞典のspline.cのmaketable関数中にありました。
231デフォルトの名無しさん:2011/01/23(日) 01:53:37
半年以上悩んでいる問題があるので質問します。

OpneGLでV同期を取る方法ですが、
SwapBuffers()を高優先度スレッドで呼ぶようにし、
メインスレッドをシグナルで起こすように実装しています。

なぜかSwapBuffers()がV同期待ちをしてくれず、
高優先度スレッド側でsleep()を呼ばないと、
メインスレッドにCPU時間が回らない状況です。

高優先度スレッドでV同期&スワップバッファが終わった後、
メインスレッド起動、メインスレッドの仕事が終わったら
V待ち関数(条件変数待ち)でメインスレッドをスリープし、
あまった時間を低優先度スレッドに渡すようなフレームワークを考えています。

グラフィックボードはATI Radeon HD4550です。
wglSwapIntervalEXT()をつかってもV同期が取れません。
PCのOpenGLの設定も、常にV同期待ちを行うように設定しています。

原因、解決方法がわかるか方がいたらお願いします。
232デフォルトの名無しさん:2011/01/23(日) 04:28:23
OpenGLはスレッドセーフではないから
233デフォルトの名無しさん:2011/01/23(日) 04:46:49
Geforceだと、glMap2*()のuorderかvorderが10超えるとINVALID_VALUEになるのはなんでなんだろな
MAX_EVAL_ORDERは4000程なのに。
Radeonだとすんなり通る
今時glMap2*()なんて使ってる方が悪いのか
234デフォルトの名無しさん:2011/01/23(日) 05:13:23
そもそも、Radeonの結果が正しいのを確認して言ってるの?
ustrideやvstride等の指定と、uorderかvorderとその配列の内容が間違っていて
バッファオーバーランしてるのを、ATIのドライバがエラー出さずに動いてるだけかも知れないだろ

因みに、glMap2*()のINVALID_VALUEの内容はもっと他にあるからね

GL_INVALID_ENUM is generated if target is not an accepted value.

GL_INVALID_VALUE is generated if u1 is equal to u2, or if v1 is equal to v2.

GL_INVALID_VALUE is generated if either ustride or vstride is less than the number of values in a control point.

GL_INVALID_VALUE is generated if either uorder or vorder is less than 1 or greater than the return value of GL_MAX_EVAL_ORDER.

GL_INVALID_OPERATION is generated if glMap2 is executed between the execution of glBegin and the corresponding execution of glEnd.

GL_INVALID_OPERATION is generated if glMap2 is called and the value of GL_ACTIVE_TEXTURE is not GL_TEXTURE0.
235デフォルトの名無しさん:2011/01/23(日) 05:22:21
>>231
OpenGLの初期化を行ったスレッド以外ではGL関数を使わない設計にする
普通はメインスレッドで初期化を行って、メインスレッドでしかGL関数を使わない
他のスレッドは、GL関数を使わない処理や何かに回す
236デフォルトの名無しさん:2011/01/23(日) 16:20:23
>>234
レスありがとう
Radeonではもっともらしい結果が出力されたので、Geforceドライバが悪いと思い込んでいました。
よく考えたら、glMap2*()なんて枯れたコマンドが正しく動作しないはずがないですよね。
もっとよくテストしてみます。ありがとう。
237デフォルトの名無しさん:2011/01/23(日) 17:06:58
>>236
>glMap2*()なんて枯れたコマンドが正しく動作しないはずがないですよね。

どうなんだろう、そのコマンドは調べてないけど
3.0以降は2.0以下の機能を切り捨てるって話じゃなかったっけ?>GPUベンダ
238デフォルトの名無しさん:2011/01/23(日) 19:19:08
>>237
glMap2*()は確かにdeprecatedみたいだったので、compatibility profileで動かせば
サポートされると思って使っていたんですが、違うのかな。
しかしどちらにしろ、引数を変えるとエラーが出るという状態なので機能切り捨てのせいではないんじゃないかと思います。
239デフォルトの名無しさん:2011/01/23(日) 19:30:11
glMapってglEval呼ぶ度に計算(CPU側で)してそうだから、
コントロールポイントが常に変わるようでなければ
自分で計算した結果をバッファに置いた方が速いと思うよ。
それかシェーダー組むか。

glutSolidTeapotが重いのもそのせいだと思う。
240デフォルトの名無しさん:2011/01/24(月) 21:52:47
>>235
回答ありがとうございます。

>普通はメインスレッドで初期化を行って、メインスレッドでしかGL関数を使わない

SwapBuffers()の呼び出しをメインスレッドで実行するようにしても、
SwapBuffers()がV同期してくれません。
(すべてのGL関数はメインスレッドからコール)

何か根本的に間違ってそうなので、実装を再確認してみます。
241デフォルトの名無しさん:2011/01/25(火) 16:08:09
WebGL対応サイトがfirefox4やchromeのbeta9入れても
古いノートパソコンだと動いてくれない
ビデオカードの制約あるの?
242デフォルトの名無しさん:2011/01/25(火) 16:24:50
少なくともシェーダー要るぞ。
正確なバージョンは知らん。
243デフォルトの名無しさん:2011/01/25(火) 18:56:44
firefox3のままプラグイン入れるだけでwebgl動かす方法ないでしょうか
管理者権限ないパソコンで動かしたい
244デフォルトの名無しさん:2011/01/26(水) 03:57:02
>>240
PFD_DOUBLEBUFFERで作ってglDrawBuffer(GL_BACK)はしてる・・よね?
でもRADEONは知らないけど、うちのオンボードチップだとSwapBuffers()でV同期しない
同じコードでGeForceならV同期する。ドライバによるんだと思ってたんだが
wglSwapIntervalEXT()って知らなかったので今度試してみるトン
245デフォルトの名無しさん:2011/01/26(水) 09:50:24
電機メーカーは結構参加してるのに任天堂ってkhronos groupに入ってなかったんだな
246デフォルトの名無しさん:2011/01/26(水) 12:39:25
そういうグループに入るメリットって何なの?
247デフォルトの名無しさん:2011/01/27(木) 00:13:53
策定中の仕様に文句言えるとか
枯れた技術選ぶ企業には不要
248デフォルトの名無しさん:2011/01/27(木) 07:24:05
>>247
たとえ1社が文句言ったって、普通は採用されないだろ
グループ内の多数の企業が同意して、しかも更に細かい差違を吸収した折衷案が
グループの総意として仕様に盛り込まれるんだろ?

「グループ内の多数の会社が同意して」という案は、
グループに入っていない多くの企業もたいていは求めてるものじゃないの?
文句を言えるくらいじゃメリットは分らんな
249デフォルトの名無しさん:2011/01/27(木) 18:54:21
でもどこも参加しなかったらkhronos自体が成り立たないし
会社でかいくせにコミュニティに貢献しないケチって思われるデメリットはあるかも
250デフォルトの名無しさん:2011/01/27(木) 21:13:56
オープンな規格を使うのは自分のところだけでやっていくと効率悪い場合だけど
任天堂はグラフィックスに関しては必要ないんじゃね
プラットフォームはそう頻繁に変わらないしデベロッパはいるしな
251デフォルトの名無しさん:2011/01/28(金) 15:16:39
VisualStduio2010のC++でfreeglutを使っているんですが、
キーボードの同時押し判定のやり方がよくわかりません。
ttp://d.hatena.ne.jp/yumeno/20071218
このページによると、freeglutではキー同時判定ができると
書いてはあるのですが、具体的な方法が載ってませんでした
glutKeyboardFunc()を使うと思うんですが、誰か知りませんか?
252デフォルトの名無しさん:2011/01/28(金) 17:07:48
freeglutは知らないけど、普通のglutでもglutKeyboardUpFunc使えば同時押し判定できるけど
やり方は>>202-203と同じで

つかそのブログの人今でもブログ続けてるみたいだし、直接コメントでも付けて聞けばいいんじゃないの?
253デフォルトの名無しさん:2011/01/28(金) 17:40:09
管理者権限ないlinuxでWebGL動かしたい
firefo4動かすまではできた
firefoxのabout:configで
libGL.soまでのパス通したらいいらしいんだけど

なんとかmesaなんとか
という関数がねえ

というエラーを吐いて何も表示されない

多分mesaなんとか.soというのは自力make installしないといけないんだろうけど
どのファイルからmakeしたらいいのかわからない
254251:2011/01/28(金) 19:44:24
>>252
glutKeyboardUpFuncは知りませんでした。
さっそく使ってみます。ありがとうございました。
255デフォルトの名無しさん:2011/01/28(金) 21:50:58
glWindowPos2i() で文字を描こうと思うですが、
error: ‘glWindowPos2i’ was not declared in this scope
と言われてコンパイルできません。
gl.hとglut.hをインクルードしてますが、他に何をインクルードすればいいでしょうか。
256デフォルトの名無しさん:2011/01/28(金) 22:34:33
>>255
openGL1.4 のextensionなので、自分でどうにかするか、もしくはglewとかの便利ライブラリを使ったりする
257255:2011/01/28(金) 22:39:17
ありがとうございます。
それでやってみます。
258255:2011/01/28(金) 23:11:26
しっかしOpenGL1.4の機能でさえextensionが必要とか、
狂ってるとしか思えないのですが・・・・もう少し何とかならないのか
259デフォルトの名無しさん:2011/01/29(土) 00:41:14
そろそろOpenGL3のcore profileの関数を拡張機能を使わずに使えるようにして貰わないと4k introの作成に支障がでる.
大量の拡張機能の関数のポインタをゲットするのに関数名を文字列リテラルとしてプログラムに埋め込まないといけない.
それ用のgl3.hとopengl3.libとドライバをnVidiaが配布してくれれば・・・.

しかしそれ以外に現在の拡張機能を拡張機能でないようにする利点はあるだろうか。
260デフォルトの名無しさん:2011/01/29(土) 18:16:25
>>243
firefoxってportable版だと管理者権限いらんのとちゃうか?
firefox4版があるのかは知らんが。
261デフォルトの名無しさん:2011/01/29(土) 18:18:42
>>253
ってlinuxか。犬板で聞けば?
262デフォルトの名無しさん:2011/01/30(日) 04:37:34
ちゃんと読んではないが、mesa3d.orgに書いてあるインストール方法ではだめなのか?
263デフォルトの名無しさん:2011/02/04(金) 23:24:00
半年悩むくらいなら、nvidiaのフォーラムとかで聞いたほうが早い
264デフォルトの名無しさん:2011/02/05(土) 14:47:07
FBOをいじっているのですが
フレームバッファとレンダーバッファの違いがよくわかりません。

レンダーバッファとはどういうものなのですか?
またどのような場面で活用するんでしょうか?

よろしくお願いします。
265デフォルトの名無しさん:2011/02/05(土) 15:14:00
レンダーバッファは対象
フレームバッファはコンテナ
266デフォルトの名無しさん:2011/02/06(日) 03:10:07
床井先生のところによると
>フレームバッファオブジェクトはカラーバッファやデプスバッファなど, いくつかのバッファの集合体 (collection) です.
>カラーバッファにレンダリングされた画像を後でテクスチャとして使うので, カラーバッファにはテクスチャを割り当てます.
>デプスバッファは隠面消去処理だけのために使う (内容をテクスチャとして参照しない) ので, レンダーバッファを割り当てます.
267デフォルトの名無しさん:2011/02/07(月) 22:56:40
レスありがとうございます!

>>265
余計わからなくなりました・・・。orz

>>266
両方フレームバッファに割り当てていましたが
>(内容をテクスチャとして参照しない)
とのことで
「テクスチャとして再利用しない場合は
レンダーバッファの方が効率いいよ!」
みたいな感じなのでしょうか?
268デフォルトの名無しさん:2011/02/07(月) 23:08:06
フレームバッファーオブジェクトはレンダリングする先(カラーバッファー)とデプスバッファー(+ステンシルバッファー)を持つ。
で、カラーバッファーとデプスバッファーはその用途に応じて、書き込み先をレンダーバッファーもしくはテクスチャーを指定できる。
描画結果をテクスチャーとして使う予定があるなら、もちろん後者のほうが手軽。
でも名前からもわかるようにレンダーバッファーは描画専用に用意されているものだから、マルチサンプルが使えたり比較的高パフォーマンス?っていう利点がある。
269デフォルトの名無しさん:2011/02/07(月) 23:18:44
>>268
なるほど!
わかりやすい説明ありがとうございます!

>マルチサンプルが使えたり
この部分を知らなかったのでもう少し調べてみようと思います。
パフォーマンス以外にも何か色々と使えそうな気がします。
270デフォルトの名無しさん:2011/02/12(土) 17:43:17
質問です。
メモリリークがあったので調べていたら
以下のところで発生していました。

glGenTextures( 3, tex );

で、以下のように書き直したら発生しなくなりました。

if( tex [0] ) glDeleteTextures( 3, tex );
glGenTextures( 3, tex );

glGenTexturesはGPU上にこれから確保するメモリ領域に
IDをつけて返すものだと思っていたのですが
メインメモリにも何か領域を確保していたりするのでしょうか?

よろしくお願いします。
271デフォルトの名無しさん:2011/02/12(土) 21:39:45
tex 配列のサイズは?
272デフォルトの名無しさん:2011/02/12(土) 21:46:03
固定値3です。
273デフォルトの名無しさん:2011/02/12(土) 22:10:42
よく分からないけどglDeleteTexturesしないで何回もglGenTexturesしたら
メモリーリークしてたってこと?それはそうなるんじゃない・・・?
VRAM確保してもどっかにテクスチャ保存しとかないとアプリ切り替えでVRAM破棄された時に困りそうだし
274デフォルトの名無しさん:2011/02/12(土) 22:26:35
テクスチャの実体はファイルから読み込んで
VRAMに転送したあと破棄しています。

リークしているのはここ(ファイル読み込み)かな?と思って調べてみても
特に問題が見当たらず、問題を切り分けていくと
どうやらglGenTexturesの部分でリークしていました。

自分の認識ではglGenTexturesの段階では
VRAM内へのID(ハンドル)だけの発行で
メインメモリにはテクスチャの領域等は
何も確保していないものだと思っています。

VRAMが溢れるならともかく何故メインメモリが?と不審に思い
こちらに質問させて頂きました。

XP/VC2010です。
275デフォルトの名無しさん:2011/02/12(土) 22:47:16
>>274
IDとテクスチャーの関連付けの情報がメインメモリ上にあるのではないか、
そして、同じIDにたいしてglGenTexturesを繰り返すことによって、
破棄されない情報が溜まり続ける、とエスパーしてみる。
276デフォルトの名無しさん:2011/02/12(土) 23:03:42
glGenTexturesした時点で違うIDになるのでは・・・w
多分、glGenTexturesで確保したら必ずglDeleteTexturesするってことで問題はないんだけど、
何か自分の信念と違う動きをするのでGLの内部の実装が気になるってことじゃないかなあ

内部実装は分からないけど、もし1つのアプリがVRAMを専有しっぱなしだと他のアプリがVRAM使えなくなるので
WindowsのglGenTexturesはVRAM領域だけじゃなく一時的に解放するための管理領域も確保すると思うよ
WindowsのGLはDirectXのラッパーのはずだからDirectXのデバイスロスト関係を調べてもらった方がよい気が
277デフォルトの名無しさん:2011/02/12(土) 23:08:36
>>276
あ、ごめん。うろ覚えで適当言ったけどwglがDirectXのラッパー?ってのは間違いかもしんない
なんかどっかでそういう話を見た気がしただけ
278デフォルトの名無しさん:2011/02/12(土) 23:31:04
専用の単体プロジェクトを作ってテストしました。
どうやらメモリのリークを発生させるには
glGenTexturesだけでなくglBindTextureも必要なようです。
ID確保前にglDeleteTexturesを行えばリークは発生しません。

(↓もりもりメモリが食われていくのでテストする際は注意してください。)

void test::update(void)
{
for( unsigned i = 0; i < 100000; i++ )
{
for( unsigned j = 0; j < 3; j++ )
{
glGenTextures( 3, this->m_textureId );
glBindTexture( GL_TEXTURE_2D, this->m_textureId[j] );
}
}
}

glBindTextureが現況だとすると
たしかにメインメモリ上にラッパというか
IDとHWとの関連付けの情報を格納しているかもしれませんね。
279デフォルトの名無しさん:2011/02/20(日) 01:59:42.20
おいおい、

>for( unsigned j = 0; j < 3; j++ )
このループの中で

>glGenTextures( 3, this->m_textureId );
すれば、都合9つのテクスチャIDを取得しようとしてるんだがw

こうするべき
glGenTextures( 3, this->m_textureId );
for( unsigned j = 0; j < 3; j++ )
{
glBindTexture( GL_TEXTURE_2D, this->m_textureId[j] );

280デフォルトの名無しさん:2011/02/20(日) 02:15:39.72
そこはどうでもいいんじゃね?
お行儀悪いのは確かだが。
281デフォルトの名無しさん:2011/02/20(日) 16:07:14.57
というかdeleteしてないんだから当然だろ。
これをメモリリークとは言わん。出直してこい。
282デフォルトの名無しさん:2011/02/20(日) 16:43:37.64
>>281
デリートし忘れ=メモリリークじゃないの?
283デフォルトの名無しさん:2011/02/20(日) 20:17:24.42
意図せず尿が出るのが「お漏らし」、
意図して尿を出すのが「小便」。
あとはわかるな?
284デフォルトの名無しさん:2011/02/20(日) 20:23:55.12
285デフォルトの名無しさん:2011/02/20(日) 20:30:30.61
>>283
おむつに連続でおしっこすると漏れてしまうんですが
吸水できなくなって溢れるならともかく何故横漏れが?
286デフォルトの名無しさん:2011/02/20(日) 21:17:51.77
>>283
ライブラリがバグのために漏らしてしまうのも、
ライブラリ使用者が意図せずして(不注意で)漏らすのも、
どちらも同じメモリリークだと思ってた
287デフォルトの名無しさん:2011/02/20(日) 21:42:31.28
この場合は意図して漏らしてるんだから「小便」だろう。
288デフォルトの名無しさん:2011/02/20(日) 22:20:03.92
どーでもいいが下品だな

もう少しお上品に喩えてくれないか
289デフォルトの名無しさん:2011/02/20(日) 23:06:41.16
要件にない機能を「バグ見つけたよ」とか言われると、ちょっとカチンとくるよな
290デフォルトの名無しさん:2011/02/21(月) 10:19:09.10
バグあったから消しといたよ
291デフォルトの名無しさん:2011/02/22(火) 16:57:14.41
OpenGL ESだけど良いですか?
glTexParamter()でGL_CLAMP_TO_BORDERがないのですが、
同様の機能を実装するにはどうすればいいですか?
テクスチャーで(s,t)を[0,1]以外の領域を指定された場合、境界色を返せればいいです。
292デフォルトの名無しさん:2011/02/22(火) 20:18:11.46
freeglutでNURBS曲面を描こうとしている者です。
VC2010で開発してます。

glEnable(GL_AUTO_NORMAL);
gluBeginSurface( theNurb );
gluNurbsSurface( theNurb, Nu+4, U, Nv+4, V, 3, 3*Nu, P, 4, 4, GL_MAP2_VERTEX_3 );
gluEndSurface( theNurb );
glDisable(GL_AUTO_NORMAL);

って感じに書いたら、曲面を描画することはできたんですが、
法線が反対向きみたいで、曲面が暗くなってしまいます。
GL_AUTO_NORMALで計算した法線の向きを逆向きにするにはどうすればいいでしょうか?
293デフォルトの名無しさん:2011/02/23(水) 04:58:09.30
glFrontFace(GL_CCW);
でどう?
294291:2011/02/23(水) 11:06:31.17
>>291
自分で調べたが、まっとうな方法はない。
ちょうど今このスレでその話題が展開されていた。
http://article.gmane.org/gmane.comp.lib.cairo/21353
なんでGL_CLAMP_TO_BORDERないんだよ....
295デフォルトの名無しさん:2011/02/23(水) 12:42:57.91
Clamp to Edgeじゃいかんの?まぁClamp to Borderとは意味は違うけど。
テクスチャーの最外周を目的の境界色に塗っておけば代用は効きそう。
まぁ2次元的に扱うとかの理由でピクセル単位でテクスチャー表示しないといけない場合とかは、2のべき乗テクスチャーを諦めないといけなくなるから、
パフォーマンスとして好ましくないけど。
296デフォルトの名無しさん:2011/02/23(水) 17:53:53.27
それじゃBORDERの代用にはならないでしょ。
元の画像width, heightに1ピクセル継ぎ足してwidth+1, height+1にすればいいけど、もっとめんどくさい。
プログラマブルシェーダーが使える2.0系列ならやりようはあるけど、
1.0系列ならあきらめるしか。
297デフォルトの名無しさん:2011/02/23(水) 19:11:58.33
だからそういってるじゃん。
298デフォルトの名無しさん:2011/02/24(木) 01:47:01.46
複合したアフィン変換の行列が
以下のよう定義されている場合

回転成分とスケーリングってどの
値を見ると判別できるのでしょうか?


0.866 1.0 0.0
-0.5 1.73 0.0
5 0 1
299デフォルトの名無しさん:2011/02/24(木) 02:11:36.83
スケーリングとトランスレーション、ローテーションとトランスレーションの組み合わせならぱっと判るだろうけど、その組み合わせはぱっと見で読み取るのは難しいんじゃないか。
300デフォルトの名無しさん:2011/02/24(木) 03:37:33.24
一番右の列の数値それであってます?
直行してないと難しいんじゃないでしょうか
301デフォルトの名無しさん:2011/02/24(木) 17:55:18.74
glGenBuffers()で作った頂点オブジェクトに付ける変数名ってどうしてますか?
vbo_name, vbo_posとかつけてましたが、もっといい名前がありそうで...
くだらない質問ですみません。
302デフォルトの名無しさん:2011/02/25(金) 01:20:38.92
glLoadMatrixdって内部でどんな実装で
処理しているの関数なのですか?
303デフォルトの名無しさん:2011/02/25(金) 01:44:42.52
もしglLoadMatrixの単なる使い方を聞いてるのでなければ
MesaっていうMITライセンスのOpenGL実装がありますよ
304デフォルトの名無しさん:2011/02/27(日) 02:04:25.33
独立した2つのカメラの位置の
丁度中点となる新しい位置をOpenGLで
簡単に求める関数ってありますか?
305デフォルトの名無しさん:2011/02/27(日) 03:20:01.84
足して割ればいいんじゃね?
306デフォルトの名無しさん:2011/02/27(日) 08:22:00.46
(x1+x2)/2, (y1+y2)/2, (z1+z2)/2
307デフォルトの名無しさん:2011/02/27(日) 17:38:11.56
>>306
ありがとうございます!
308デフォルトの名無しさん:2011/02/27(日) 21:05:54.41
それでよかったのか!?
309デフォルトの名無しさん:2011/02/27(日) 23:28:25.94
w
310デフォルトの名無しさん:2011/02/27(日) 23:36:56.42
位置だけじゃなくて視線方向や上の方向も半分にする方法も要るんじゃ・・・
311デフォルトの名無しさん:2011/02/28(月) 00:55:10.85
クォータニオンってすごく難しくて
自分でアルゴリズム作れないのですが
OpenGLに関数ないですか?
312デフォルトの名無しさん:2011/02/28(月) 01:04:36.07
数学系でOpenGLならglmがよさげ
313デフォルトの名無しさん:2011/02/28(月) 01:06:25.16
>>311
クォータニオン扱うライブラリのソースみて実装すればいい。使うだけなら簡単だろう。
314デフォルトの名無しさん:2011/02/28(月) 01:07:25.69
だからOpenGLはグラフィックライブラリで、
数学ライブラリじゃないっつーの
315デフォルトの名無しさん:2011/02/28(月) 01:24:20.06
半端な俺は参考書見ながら実装しようとしたけれど
行列の計算の仕方が参考書と違ってて断念したorz
316デフォルトの名無しさん:2011/02/28(月) 02:22:25.89
PyOpenGLを使ってみようと思いまして
↓このページのPythonのコードをコピーして実行してみたのですが
http://www.not-enough.org/abe/manual/program-aa08/pyopengl2.html
何も起こりませんでした。
うちのPCにはPython2.71が入っているのですが
PythonでOpenGLを使う場合、他にも何かインストールなりしないといけないのでしょうか。
317デフォルトの名無しさん:2011/02/28(月) 03:47:29.33
>何も起こりませんでした
パルプンテでも唱えたような物言いだな。
318デフォルトの名無しさん:2011/02/28(月) 10:30:20.96
最低、ウィンドウが表示されたとか、エラーメッセージは出たか、
とか書かないとエスパー募集にしかならない。
319デフォルトの名無しさん:2011/02/28(月) 21:47:10.69
テキストファイルにtest.pyって名前で保存してダブルクリックしても
何も起こりませんでした。

↓このページのこのコードをコピーして
http://www.not-enough.org/abe/manual/program-aa08/pyopengl1.html
#!/usr/bin/python

from OpenGL.GL import *
from OpenGL.GLUT import *


def draw():
glClearColor(1.0, 0.0, 0.0, 0.0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glFlush()
glutSwapBuffers()


glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
glutInitWindowSize(320, 240)
glutCreateWindow("PyOpenGL 1")
glutDisplayFunc(draw)
glutMainLoop()

>>317-318
EclipseのPyDevで実行するとこんなエラーが出ました
Traceback (most recent call last):
File "C:\Users\username\workspace\PyOpenGL\src\PyOpenGL1.py", line 3, in <module>
from OpenGL.GL import *
ImportError: No module named OpenGL.GL
320デフォルトの名無しさん:2011/02/28(月) 22:09:16.33
2つの異なる座標系A、Bをカメラから見たどちらかの
座標系に統一する場合

Aの逆行列 x Bの行列 x GL_PROJECTION行列

で求めることが可能ですか?

321デフォルトの名無しさん:2011/02/28(月) 23:23:19.62
>>319
ImportError: No module named OpenGL.GL
OpenGL.GLという名前のモジュールがありません

知らんけどそのページの頭に
>PyOpenGL は、Python で OpenGL を使用するためのモジュールです。
って書いてあんだからPyOpenGLってのが必要なんじゃねの?

PyOpenGLでググれ
322デフォルトの名無しさん:2011/02/28(月) 23:28:46.00
課題の季節か?
323デフォルトの名無しさん:2011/02/28(月) 23:44:48.33
>>320

「Aの逆行列」とは、どの座標系で定義されたベクトルを
どの座標系で定義されたベクトルに変換するための行列か?

「Bの行列」とは、どの座標系で定義されたベクトルを
どの座標系で定義されたベクトルに変換するための行列か?

「GL_PROJECTION行列」とは、どの座標系で定義されたベクトルを
どの座標系で定義されたベクトルに変換するための行列か?

それぞれ、「座標系X -> 座標系Y」というフォーマットで説明してみてくれ

そして、結局のところ「どの座標系で定義されたベクトルを
どの座標系で定義されたベクトルに変換したいのか」を
同じフォーマットで説明してみてくれ

でなければ、それが [Aの逆行列 x Bの行列 x GL_PROJECTION行列] で求められるのか
答えようがない
324デフォルトの名無しさん:2011/03/01(火) 02:08:19.18
>>311
床井さんのところのサンプルに、クォータニオン使ったやつがあったはず。
325デフォルトの名無しさん:2011/03/01(火) 11:53:16.09
> 2つの異なる座標系A、Bをカメラから見たどちらかの
> 座標系に統一する場合

専門用語の使い方がおかしいから誰も真意を理解できない。
座標系はA,B,カメラの3つだと思う。
変換行列とはある座標系(X)からある座標系(Y)に変換するもの。
その逆行列なら(Y)から(X)へ変換する。あとは自分で考えろ。
326デフォルトの名無しさん:2011/03/03(木) 18:07:25.06
#include <GL/gl.h> でOpenGLを読み込んだ時と、
#iclude <GLES/gl.h> でOpenGL ESを読み込んだ時で処理を変えたいのですが、
必ず定義されている #ifdef で使える文字列とかあったら教えてください。
327デフォルトの名無しさん:2011/03/03(木) 22:57:10.80
今から学び始める場合、GLSLなども最初から考慮した方がいい?
それとも最初の内は見なかったことにして1.xの機能に絞って学んだ方がわかりやすい?
328デフォルトの名無しさん:2011/03/03(木) 23:24:40.07
後者の方が良いよ、絶対。
329デフォルトの名無しさん:2011/03/04(金) 06:50:44.21
分かった。ありがとう
330デフォルトの名無しさん:2011/03/04(金) 21:39:51.87
Win9xにプリインストールされてるのって
opengl32.dllだけ?
glu.dllとかglu32.dllは手動だっけ?
331デフォルトの名無しさん:2011/03/05(土) 19:00:47.69
いやopengl32.dllもないだろ。
ソフトウェアレンダー?
332デフォルトの名無しさん:2011/03/05(土) 20:25:13.61
98にはあるようだけど95はMicrosoftからダウンロードしないと駄目っぽい
333デフォルトの名無しさん:2011/03/06(日) 02:04:51.78
>>331
OpenGLの文字が荒ぶるスクリーンセイバーってNT系だけでしたっけ

>>332
なるほどどうもです
334デフォルトの名無しさん:2011/03/06(日) 02:37:24.97
OpenGLで気に入らないのは右手座標系なこと
左手座標系なら左手でフレミングの法則の手を作りながら
イメージ沸かして右手でコーディングできるのに
右手座標系ではそれが出来ない!非常に残念です。
あと右手座標系はZ軸が自分に向かう方が大きい値なのが許せない
観測者視点になっていなくて気持ち悪い。
どんな経緯で右手座標系に決めちゃったんでしょうか。詳しい方います?
335デフォルトの名無しさん:2011/03/06(日) 02:59:05.87
単純に数学で扱ってるのが右手系だからだろ。
336デフォルトの名無しさん:2011/03/06(日) 03:00:08.38
別に左手座標系で組んだっていいんですよ?
変換行列で最後に座標系を反転するようにして辻褄合わせとけば問題ないはず
経緯は知りません
337デフォルトの名無しさん:2011/03/06(日) 03:22:01.36
>>2
>JavaScriptから --> ???

JavaScriptから --> WebGL

丁度 WebGL 1.0 のリリースが発表されましたが、Firefox 4.0, Chrome 9,
Safari nightly, Opera preview をインストールすれば直ぐ使えてラクチンです。
これから OpenGL を勉強したい人も、ブラウザで簡単に試せるので良いかも。

お勉強サイトは↓ここがお勧め。

    http://learningwebgl.com/blog/?page_id=1217

説明が丁寧なので、JavaScript, WebGL, OpenGL, 三角関数、シェーダー、
全てに於いて初心者に毛が生えた程度の自分でも楽しく理解出来ました。
338デフォルトの名無しさん:2011/03/06(日) 11:39:00.90
>>334
殆どの物理や数学の本だと右手座標系だったと思うので
その習慣がそのままOpenGLに採用されただけじゃない?

射影行列のどっかを変えれば左手系になる。

そういえばWebCLというのも出てくるらしいが・・・
339デフォルトの名無しさん:2011/03/06(日) 11:46:30.42
>>338
> そういえばWebCLというのも出てくるらしいが・・・

ちょ・・・ マジで?
340デフォルトの名無しさん:2011/03/06(日) 13:02:50.01
>左手座標系なら左手でフレミングの法則の手を作りながら
>イメージ沸かして右手でコーディングできるのに

かわいい
341デフォルトの名無しさん:2011/03/06(日) 13:31:38.89
美少女が、モデル表示しながら、
えっと、えっと。。。OpenGLは右手座標系だから。。。
ってコーディングしてるんだぜ。
そりゃ、かわいいだろ。
342デフォルトの名無しさん:2011/03/06(日) 13:52:02.07
>>339
マジだよ
策定完了まではWebGLのように今から2年以上掛かるだろうって言われてるけど

http://www.conceivablytech.com/5978/products/webcl-to-enablegpu-accelerated-web-apps
343デフォルトの名無しさん:2011/03/06(日) 14:10:34.25
>>341
美少女の、モデル表示しながら、
えっと、えっと。。。OpenGLは右手座標系だから。。。
ってコーディングしてるんだぜ。
そりゃ、かわいいだろ。


こうだろ?
344デフォルトの名無しさん:2011/03/06(日) 15:09:40.78
>>342
うたがって悪かった。

いやー、しかし、時代はそんな方向を向いているのか。
びっくりした。
345デフォルトの名無しさん:2011/03/06(日) 15:12:38.57
美少女読者モデルが3Dプログラミングを始めたと聞いて
346デフォルトの名無しさん:2011/03/06(日) 15:51:41.54
長野まゆみ的美少年を 3D で動かすことが俺の夢
347デフォルトの名無しさん:2011/03/07(月) 11:14:56.35
かむぱねるら
348デフォルトの名無しさん:2011/03/07(月) 16:30:09.53
Tony絵が出せるシェーダー作ろうぜ。
349デフォルトの名無しさん:2011/03/07(月) 20:59:43.16
ハナハルじゃなきゃヤダヤダー
350デフォルトの名無しさん:2011/03/08(火) 04:31:15.05
ていうかキーボード打つのに両手使うからどっちでも一緒だと思うんだがw
あと、中指x、人差し指y、親指zとすれば、左手でも右手系は考えられるぞw
351デフォルトの名無しさん:2011/03/11(金) 06:32:26.54
>>350のいうとおりだし、「右手」座標系、「左手」座標系っていうネーミングセンスってどうなんだろうね。
Right Top Far Coordinate、略してRTFCとかのほうが分かりやすいと思うんだが。
352デフォルトの名無しさん:2011/03/11(金) 07:27:20.17
RTFC は右手、左手、どっちの座標系?

Z方向を地面からの高さ(上)と捉えて、
右をX、手前をYとする左手座標系を考えるときもある

同じく高さ方向をZと捉えて、
奥をYとする右手座標系も考えるときもある

何を右とし、何を上とするかなどは一概に言えないから、
Right Top Far Coordinate の方が分りにくいよ
353352:2011/03/11(金) 07:32:53.28
>>352
なんかあんまり良い反論の仕方じゃなかった

私は RTFC は直感的に分りにくかったことを伝えたかったんだが、
ごめん、忘れてくれ
354デフォルトの名無しさん:2011/03/17(木) 20:41:44.10
日本語で質問できるOpenGLのメーリングリストって無いですかね?
多分ないと思うのですが、ないとうのが信じられません。

355352:2011/03/17(木) 20:52:33.99
「OpenGL メーリングリスト」でググると Yahoo のが出てくるんだけど、これは違うの?
356354:2011/03/17(木) 21:06:56.94
そこは既に死んでいます。
ものすごい勢いでスパムしか流れてないのと、
参加するのにオーナー承認が必要にもかかわらず
ずっと(多分オーナーが管理を放棄していて)承認されません。

357デフォルトの名無しさん:2011/03/17(木) 21:53:28.87
>>356
そうか

じゃあ無いな
358デフォルトの名無しさん:2011/03/18(金) 09:35:27.19
ひどす
359354:2011/03/18(金) 11:08:17.67
えーっと、作らないか?
2ch掲示板だけだとまずいだろう
360デフォルトの名無しさん:2011/03/18(金) 11:25:10.34
いらね
361デフォルトの名無しさん:2011/03/18(金) 11:47:48.10
あほす
362デフォルトの名無しさん:2011/03/18(金) 12:20:37.07
よくわからんけどメーリングリストってめんどくさそう
まあ2chはしょっちゅう規制するのが困るが
363デフォルトの名無しさん:2011/03/18(金) 18:16:56.46
OpenGLはオワコンなんです。
でもオワコン好きなのでこれからはじめようと思う。
まずは立方体を動かしたりカメラ動かしたりとかやります。
どうもよろしくおねがいします。
364デフォルトの名無しさん:2011/03/18(金) 19:32:38.91
メーリングリストはメールがウザイ
365デフォルトの名無しさん:2011/03/18(金) 21:52:30.02
むしろOpenGLは最近始まってる。
366デフォルトの名無しさん:2011/03/18(金) 22:04:24.24
OpenGL1.2やります
367デフォルトの名無しさん:2011/03/18(金) 22:09:37.91
Androidあるし、これからうなぎ上りじゃね?
いい加減レガシーな仕様を作り直して欲しいが。
368デフォルトの名無しさん:2011/03/18(金) 23:12:16.39
D3D使ってるのはWindowsだけ。
D3Dに似た別の何かは360でも使ってるが。

OpenGL使ってるのは
PS3/PSP
Wii/DS
iphone/Mac
Linux
その他組み込み

OpenGLのほうが勢力は上だ
369デフォルトの名無しさん:2011/03/18(金) 23:44:19.34
OpenGLではAPIレベルでやってくれるからジオメトリインスタンシングしなくてもいいって聞いたんですけど本当ですか?
370デフォルトの名無しさん:2011/03/19(土) 11:46:53.81
>>369
俺はよく知らないけど、↓の記事見るとハードウェアでのジオメトリインスタンシングには
glDrawElementsInstancedARB を使うって書いてあるよ(擬似インスタンシングという技法もnVidiaの白書で紹介されてるとか)

http://www.geeks3d.com/20100629/test-opengl-geometry-instancing-geforce-gtx-480-vs-radeon-hd-5870/
371デフォルトの名無しさん:2011/03/19(土) 14:46:31.15
Qtのオープンソース版のソースをでnmakeしたら、ノートンがウイルスを検知しましたよ。

自分の環境: Microsoft Windows XP SP3、Microsoft Visual C++ 2005

見つかったウイルス:
imageanalyzer.exe (Suspicious.Cloud.5)
%QTDIR%\examples\webkit\imageanalyzer\release\imageanalyzer.exe

脅威の種類: ヒューリスティックウイルス検出。マルウェアヒューリスティックに基づく脅威の検出。

ノートンの処理: imageanalyzer.exe を削除

これって必要なんですか?
372デフォルトの名無しさん:2011/03/19(土) 14:47:21.55
>>371
誤爆
373デフォルトの名無しさん:2011/03/20(日) 09:33:42.02
レガシー設計を変えるといったってプロファイルで旧式もサポートしないと
ソフトウェア開発者はなかなか移行しないし
そうなるとハイリスクだからGPUベンダーも実装しない

かといってプロファイルにすればいいかというと
設計が見直されれば見直されるほど
GPUベンダーはOpenGLという名を持つ複数のAPIを
サポートするような状態になる気がするんだが
374デフォルトの名無しさん:2011/03/20(日) 10:48:28.11
つまり詰んでるのか
375デフォルトの名無しさん:2011/03/20(日) 11:27:30.41
>>373
ハゲ同
よし俺達で別のAPIを作ろうぜ
376デフォルトの名無しさん:2011/03/20(日) 17:35:54.55
スクリーン座標→ワールド座標への変換のサンプルってどっかに転がってない?
377デフォルトの名無しさん:2011/03/20(日) 17:57:13.68
>>376
ワールド→スクリーン変換をglProjection と glLookat でやってるなら
まずそれを自前で作ってから逆行列にするとスクリーン→ワールド変換できるとおも
まあ面倒だよね
378デフォルトの名無しさん:2011/03/20(日) 18:03:20.16
gluUnProject とかそこらだろ
379デフォルトの名無しさん:2011/03/20(日) 18:42:39.58
>>378
gluProjectでいけたサンクス。
ローカル座標でも実装できた。
380デフォルトの名無しさん:2011/03/20(日) 23:07:35.81
>>375
ネタなのを承知で言うがそれはもっとない
RSS 1.0とRSS 2.0とAtomの件や世の中にいくつ存在するか分からないGUIツールキットでも分かるけど
いくら既存の問題点を解決するとしても新しい設計の競合は選択肢が増えるだけに終わることが多い

初めからできるだけ正しくやれたら一番いいんだけどな
381デフォルトの名無しさん:2011/03/20(日) 23:28:40.04
初めてOpenGL使った時操作対象のオブジェクトが引数のどこにもなくて困惑した
何もかもグローバルだと分かったときOpenGLの設計者は頭おかしいんだと思った
382デフォルトの名無しさん:2011/03/20(日) 23:43:39.60
あるある。

C言語での利便性やらを考えたら、副作用地獄のあの形になるのは理解できるが。
C++クラスを使いまくってAPIを一新したら、色々美味しくなるんじゃないのかねぇ、とは思うわ。
383デフォルトの名無しさん:2011/03/20(日) 23:58:36.59
ES対応(スマートフォン等)を含む全対応ハードウェアが
現PCと同じくらいの性能になったらGLも一新されそうだな
384デフォルトの名無しさん:2011/03/21(月) 00:01:57.52
私女子校生だけど携帯電話向けにまったく新しいAPIを定義したほうがいいと思うの。
OpenGL ESなんてやめようぜ。誰が得するんだ
385デフォルトの名無しさん:2011/03/21(月) 00:17:46.72
俺も女子高生だけど、まったく新しいAPIは現実的に無理っぽいし、
既存の API に対する使いやすいラッパーを考えた方がいいと思うぜ

そういえば昔、同じような話をここで見た記憶があるわね
386デフォルトの名無しさん:2011/03/21(月) 00:43:40.26
使いこなせないor分からない→新しい言語or新しいAPI
387デフォルトの名無しさん:2011/03/22(火) 18:44:32.30
OpenGLでモデルデータ読み込めねえええええ
パーサがミスってるのか頂点配列構造体のアラインメントのせいなのか・・
388デフォルトの名無しさん:2011/03/22(火) 19:01:49.90
 ∧_∧
(´・ω・) 知らんがな
ノ^ y丶
ヽ_ノ==|ノ
 / ||
"""~""""""~"""~"""~"
389デフォルトの名無しさん:2011/03/22(火) 20:15:08.26
>>388
じゃあうちの話聞いてよ
GLUT使ったアプリの閉じるボタンでウインドウ閉じたあと
しばらくしてPCの調子悪いなと思ってプロセス見たらプロセスが残ってて
1.5GBメモリリークしてるの!!!
GLUTの中でウィンドウ閉じる時にexit();ちゃんとできてないよどういうこと??
GUIはSDL使えっていうことなの?! やだーー!!
390デフォルトの名無しさん:2011/03/23(水) 05:46:30.91
glfw使ってもいいのよ
391デフォルトの名無しさん:2011/03/24(木) 12:42:49.71
Androidのメーリングリストで流れていた話題だけど、
https://groups.google.com/group/android-group-japan/browse_thread/thread/929c9700f4ec04ad?hl=ja

「カメラ座標」で回転を指定するにはどうすればいい?
例えば今見ているカメラの上方向(0,1,0)を軸にして90度回転させる場合の
glRotatef()はどう指定すればいい?

簡単な方法を思いつかない。
ちなみにメーリングリストの回答はひどい。
392デフォルトの名無しさん:2011/03/24(木) 12:58:06.99
>>391
90度回転してから、今のカメラの回転を適用すればいいじゃない。
どうしても今の角度から軸を割り出したいなら、(0,1,0)を今の行列で変換すれば上の軸がわかるだろ。
カメラだから最終的に逆になるのは考慮してな。
393デフォルトの名無しさん:2011/03/30(水) 15:42:54.73
OpenGLでVBOを使って以下のように描画しています。

static GLfloat *vertexBuffer = NULL;
unsigned int vertexCount = 0,
...(vertexBuffer,vertexCountの計算)...
GLuint vboID;
glGenBuffers(1, &vboID);
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * vertexCount * 2, vertexBuffer, GL_STATIC_DRAW);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, 0);
glBindTexture(GL_TEXTURE_2D, brushTexture);
glDrawArrays(GL_POINTS, 0, vertexCount);

上記コードで描画したものを削除して画面から消したいのですが、方法が分かりません。よろしければ教えていただけないでしょうか?
394デフォルトの名無しさん:2011/03/30(水) 15:49:19.19
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
395デフォルトの名無しさん:2011/03/30(水) 16:19:50.04
ありがとうございます。
glClearだと複数描画した場合にすべて消すことになると思いますが、
最後のひとつだけ消す方法はありますでしょうか?
つまりUndoをしたいということなのですが。
396デフォルトの名無しさん:2011/03/30(水) 16:36:23.12
あらかじめ glReadPixels で画面のピクセル情報をすべて読み出し保存しておき、後でそれを glDrawPixels で書き戻す
もしくは
すべて消して最初から描き直す
397393:2011/03/30(水) 16:39:26.66
>>396
なるほど。やってみます。ありがとうございました。
398デフォルトの名無しさん:2011/04/01(金) 03:11:52.85
399デフォルトの名無しさん:2011/04/02(土) 00:24:50.44
android開発をしてます
今までglDrawArrays(GL_TRIANGLE_STRIP..)で描画していたデータがあります
esの本にいろんな理由でglDrawElements()のが早いというのを
勉強がてらやってみたがテクスチャがおかしく表示されてうまくいかず・・
ユニークUVだった場合、glDrawElements()の方はテクスチャの配列って
どうやって設定しておけばいいのでしょうか?
ちなみにデータはXSIからモデル情報を書き出すプラグインでやっていて、
どういう状態にしておけばいいかが分かればありがたいです
無理なのかな
400デフォルトの名無しさん:2011/04/02(土) 00:49:45.69
普通に glTexCoordPointer で設定しておけばいいはずだが
401399:2011/04/02(土) 13:05:53.44
ほんと!できるってこと?
一応テストで使ってる実例だと※↓()は無視で
・頂点[(0,5,0),(0,0,0),(5,5,0),(5,0,0)]
・UV[(0,0),(0.2,0.7),(1,1),(1,0),(0.5,0.7),(0.2,0.4)]
・index[3,2,1,0,1,2]
をglDrawElements()のGL_TRIANGLESで描画するとおかしくなる
UV用のindex設定する方法とかでもあるって事かな
一応 UVindex[3,2,0,1,5,4] も用意してるんだけど、
なんか実例があるサイトがあれば是非教えてください
402デフォルトの名無しさん:2011/04/02(土) 13:17:32.68
あぁそれは勘違いをしている
インデックスは頂点とUVの両方に対する共通のインデックス (もしカラー配列や法線配列があれば、それも)
各配列それぞれから N 番目を取ってきてひとまとまりの頂点データになる

例えば GL_TRIANGLES でインデックスが 3,2,1 なら
・3 番目の頂点と 3 番目のUV
・2 番目の頂点と 2 番目のUV
・1 番目の頂点と 1 番目のUV
を使って三角形が作られる
403デフォルトの名無しさん:2011/04/02(土) 13:22:13.80
頂点の数とUVの数が違ってるけど、それでいいのか?
404399:2011/04/02(土) 14:21:05.75
>>402
なるほど、いま色々テストしていたけどそうみたいですね
じゃあやっぱりメッシュの頂点は共有しているけど
UVの座標は別々になっているようなデータの場合は
glDrawElements()は適してないって事かな?
おとなしくglDrawArrays()でやろっかな、なんかくやしいな
405デフォルトの名無しさん:2011/04/02(土) 14:29:32.65
頂点数が少ないならどっち使っても大差ない、誤差みたいなもん
頂点数が多い滑らかなメッシュで座標が共有できてUVが共有できないケースはあんまりないと思う
406399:2011/04/02(土) 14:40:03.89
>>405
わかった
これの検証に時間とられまくってたから次進むわ
気が楽になったありがとう
407デフォルトの名無しさん:2011/04/03(日) 10:50:50.95
忍法帖まとめ

忍法帖は名前欄に
!ninja
とすれば出てくる。
って最近知った。どれどれ

●だか買うと最終書き込みから5分経過すればレベルが一つ上がるらしい。
そうじゃない人は24時間経過すればレベルが一つ上がるらしい。
あと、cookieの設定がうまくいってないとレベルが上がらないらしいから、
何日たってもレベル0,1の場合はHap cookieの設定をチェックだ。

レベル10以上になると
Lv=NN,xxxP『T』
ってなってスレ立てできるようになるらしい。
408 【東電 77.4 %】 忍法帖【Lv=15,xxxPT】 :2011/04/04(月) 02:05:39.20
test
409デフォルトの名無しさん:2011/04/04(月) 21:19:27.21
GL_PIXEL_PACK_BUFFER_ARBのARBって何の略だ?
410デフォルトの名無しさん:2011/04/04(月) 21:23:19.72
Architecture Review Board
411デフォルトの名無しさん:2011/04/04(月) 21:41:26.08
バージョン名みたいなもんか。
どこみてもARBが何か書いてないんで、謎の色空間指定だったらどうしようと悩んでたんだぜ。
412デフォルトの名無しさん:2011/04/04(月) 22:21:03.95
どこにでも書いてあるが・・・。
413デフォルトの名無しさん:2011/04/04(月) 22:32:30.63
>>411
何を勘違いしてるのか知らないけど、Googleで「OpenGL」って検索して
一番目に出てくるWikipediaのOpenGLの項目を開いて歴史の項目を読めよ・・・
>>412が言うように検索すればどこにでも書いてる
414デフォルトの名無しさん:2011/04/05(火) 01:42:30.95
歴史を知ってる人にしちゃそうかもしれんが、
定数名に開発委員会名みたいのが入ってるとは思わなんだだよ。
415デフォルトの名無しさん:2011/04/05(火) 03:27:00.69
そうじゃなくててググったらすぐ出てくるレベルの情報くらい自分でなんとかしろっての。
>>410が何の略称かも書いてるのになにが「どこみてもARBが何か書いてない」だよw
416デフォルトの名無しさん:2011/04/05(火) 09:40:43.71
OpenGLかどうか教えて欲しいのですが
http://www.youtube.com/watch?v=uoncHfnYWHM&feature=player_embedded
http://www.youtube.com/watch?v=4XZC76lQ2hc&feature=related

初音ミクとかのモデルや、ライデンレーザーは置いといて、この動画に出てくる
緑色のホログラム的な文字や円、矢印はOpenGLで描画しているのでしょうか?

OpenGLでやっているのであればGLUT使ってるんですかね?
もし、OpenGLで描画しているのであれば>>1の必読書としてはどれがお勧めになってくるでしょうか?

環境としては
VS2008でVGAがHD5450使っています
417デフォルトの名無しさん:2011/04/05(火) 10:50:57.13
まぁOpenGLかDirectXかだろうね。
GLUTかどうかとかそういうのは関係ないと思う。FBOとか使って描画結果をα値ありで取得、合成してるだけだろう。
特に読むべき本とかは無いと思う。
418デフォルトの名無しさん:2011/04/05(火) 11:12:28.88
>>416
オレはARToolKitを使ったことがないので、詳しい人のレスが付けば無視してくれて良い。

たぶん、OpenGLを使っており、GLUTは使っていない。
まず、ニコニコ百科事典にARToolKitの「オブジェクトの配置にはOpenGLの基本的な知識が必要」って書いてある。
http://dic.nicovideo.jp/a/artoolkit

ARToolKitのページを見ても、OpenGLの上に構築したようなライブラリに見える。
http://www.hitl.washington.edu/artoolkit/documentation/devstartup.htm

次に、GLUTについては、同じページでargMainLoopという独自のメインループ用関数を使っているので、同時に使えないか、使えても面倒くさいだろう。


本はどれでも良いんじゃない?
GLUTを使おうと使うまいと、オブジェクトの配置とかの超基本的な部分は同じ。

でも、右も左も分からない状態からはじめるなら、素直にARToolKitの本を読めばよいのでは。
http://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dstripbooks&field-keywords=ARToolKit&x=0&y=0
419デフォルトの名無しさん:2011/04/05(火) 11:30:53.59
>>417-418
レスthx

>>417
FBOって何でしょう?ググっても、航空機とかが出てきたのですが…

>>418
一応AR勉強用に、
3Dキャラクターが現実世界に誕生! ARToolKit拡張現実感プログラミング入門は手元にあるのですが、
マーカー関連、モデルの描画方法に関しては上記本で解決出来ました。

OpenGL関数?を使ってglutWireCubeや、glutSolidTeapot等も書いて有り、実際に実行したのですが
URLにある、ホログラム?的な映像はどうやってやるのかなー・・・と
綺麗に出ているので、カッコイイですし、リアルタイムに文字が変わるのも凄いですよね。

モデルにしては、あのように沢山の連番mqoを用意するのは難しいでしょうから、
OpenGLでやっているのかな?と思い、聞きました。
OpenGLでああいった処理をするなら、どういった予約語とか使えばいいかも分からないので
お勧めの本があったら紹介してほしいなと

OpenGLに関しては右も左も分からない状態です。
420デフォルトの名無しさん:2011/04/05(火) 11:55:06.08
右も左も分からないのなら「手抜きOpenGL」でも見て試せ。
421デフォルトの名無しさん:2011/04/05(火) 13:32:54.71
>>420
そかー、了解
取り敢えず 手抜きOpenGL見て勉強してみます。
文字はどうかは分からないけど、線描画位はできそうだ
422デフォルトの名無しさん:2011/04/05(火) 13:43:37.28
>>419
べつに特別なことは何もしてないと思うよこれ。ホログラムホログラム言ってるけどどれのこと?
ただポリゴンにαもたせたテクスチャ貼って表示するだけでこういうのできるけど。
数字が表示されてるポリゴンはFBOでもつかってんじゃね。(FBOはFramebuffer Objectのこと)

OpenGLやDirextXがサッパリわかんねーって状態でいきなりこういうのは無理。
よく動画で「xx作ってみた」みたいに軽く書いてるけどああいう人達はもともとプログラミングができるか、
1からとっかかったけど相当頭よくですぐできちゃった人。

OpenGL自体が判らないのなら手抜きOpenGLのページで判るまで勉強すればいい。
423デフォルトの名無しさん:2011/04/05(火) 14:08:56.83
>>422
なるほど、thx

ポリゴンにα持たせて出来るのは、自分で確認は出来てるんだけどそれを踏まえて
リアルタイムに細かく描画内容を変更出来てる(例えば、メーター的なゲージとかは出来ないよな〜と
※出来たとしても相当量のモデルが必要になる


ホログラムじゃないのは分かるんだけど、パッと見アニメ世界でいうあんな感じに見えるから
ホログラム?的と表現してみた。それ以外になんとよべばいいか

動画でいえば、複数マーカーの方なら
ANGLEって浮き出てる奴や、周囲の円マーク(回し具合によって形変わる)や
距離の奴なら、測定中[数字]とかかな、透過緑で表示されてる全般

FBOthx、おかしいなググッたときはでなかったのに、OpenGL FBOでぐぐったら普通にでるね…すまない

手抜きOpenGLとFBO見てみるよ、有難う
424デフォルトの名無しさん:2011/04/05(火) 14:25:38.04
事前にツールでモデルを作ってそれを読み込むばっかりじゃなく
プログラムでその場で計算してモデルを組み立てたって全然構わない
頂点の座標やインデックスを配列に入れて描画させるだけだし
425デフォルトの名無しさん:2011/04/05(火) 20:48:07.26
ARToolKitはOpenGLだよ。
どっかの博士(日本人)が作ったもの。
研究用の3DはOpenGLが基本。

ホログラムって言ってるのは
ポリゴンを加算で表示しているだけ。
特に難しいことはやっていない。
FBOも関係ない。
モデルが出せるなら
ホログラムもすぐ出来る。

OpenGL1.1レベルの内容かな。
426デフォルトの名無しさん:2011/04/07(木) 17:28:05.77
趣味でボーンアニメーションの勉強をしています。
並べられた直方体を滑らかにうねらせる程度の基礎的なプログラムは書けたのですが、次にパーサーを作成しようとして難儀しています。
元々はMikoto形式のパーサーを作成する予定でした(いくつかその形式の素材が手元にあるため)が、作者のページが閉鎖されてしまっており、
ファイルフォーマットの仕様がまるで分からず立ち尽くしております。

・多くのモデリングツールでサポートされている
・プログラム上扱いやすい
・ファイルフォーマットの仕様詳細が公開されている
このようなボーン情報、重みを格納できるフォーマットはないでしょうか
427デフォルトの名無しさん:2011/04/07(木) 19:06:24.68
>>426
独自フォーマット作ってそれのパーサつくって終わり。
できないならおとなしくxファイルでも使う。

あとその話題GL関係ないよね。スレチ。
428デフォルトの名無しさん:2011/04/07(木) 19:46:38.46
>>427
レスありがとうございました。
自由な独自フォーマットでの書き出しなら作れと言われれば作りますが・・・
必要なのは、私とは別の方が作成なさった素材を読み込むことなのです。

流石に独自フォーマットを扱えるモデリングツールを用意・普及させる力は到底ありませんので、
直接扱うにせよ、一度独自フォーマットへ変換してから扱うにせよ、どちらにせよ
一般的なモデリングツールで編集可能なフォーマットのパーサーが必要でして・・・
それにあたって、どのフォーマットを選択すべきかと言う質問でした

スレ違い申し訳ありません
429デフォルトの名無しさん:2011/04/07(木) 19:54:27.64
>>428
スレチ言っといて引っ張るのもアレなんだけど気になるので。

>必要なのは、私とは別の方が作成なさった素材を読み込むこと
っていうのは例えばblenderやらXSIやらで誰かが作ったファイルを読みたいわけだよね。

>流石に独自フォーマットを扱えるモデリングツールを用意・普及させる力は到底ありませんので
いやだから、上の他の人が作ったファイルを独自形式に変換するパーサー書けばいいじゃない。

>一般的なモデリングツールで編集可能なフォーマットのパーサーが必要でして
ちょっとイミフ。一般的といわれてもモデラなんてたくさんあるしそれぞれフォーマット違うし。
相手が出してくるフォーマットが固定ならそれから独自形式に変換すればいいんでない?


モデラー→パーサーで独自形式→プログラムで>>428が使う。この流れじゃだめなの?
何が問題なのかちょっとワカンネ。
430デフォルトの名無しさん:2011/04/07(木) 20:09:39.56
>>429
レスありがとうございます

「モデラー→パーサー→独自形式→使用」
まさにこの方法で良いのですが、仰る通り世の中で用いられているモデリングツールと
その各々の独自形式の種類が多すぎて、どのパーサーを作るべきか分からないのです。
元々準備していたMikoto形式は作者様の仕様公開終了により潰えてしまい、途方に暮れております。

そこで、仕様がよく公開されていて、ある程度よく用いられているフォーマットが知りたかったのです
431デフォルトの名無しさん:2011/04/07(木) 20:15:02.67
>>428が聞きたいことは、
・なるべく多くの3Dモデラのデータ(ボーン付き)を読み込みたい
・なるべく多くの資料があるフォーマットが良い
ってことじゃないの?

たぶん、Miku Miku Danceクローンみたいなものを作りたいんじゃないかな?
もしもMMDクローンが作りたいのなら素直にPMDを読み込むようにすれば良い。

そうでなくても、
・事実上勝手に使っても誰も文句いわなさそうなモデルがいっぱい転がっている
・インターネットで「作ってみた」でウケそうなのでモチベーションが維持しやすい
ということで、PMDが候補として良さそうな気がする。

この辺を見てみるよろし:
http://www6.atwiki.jp/vpvpwiki/pages/220.html#id_327804fb
432デフォルトの名無しさん:2011/04/07(木) 20:28:15.62
>>431
ありがとうございます。
説明が下手で申し訳ありません。聞きたかったことはまさにその二点です。
昔作ったアクションゲームに物理エンジン組み込んで遊んでいるうちにボーンアニメも実装したくなりまして…

PMDについて勉強を進めてみます。
433デフォルトの名無しさん:2011/04/07(木) 20:29:33.51
http://wiki.livedoor.jp/mikk_ni3_92/d/PBO%3A%3A%A4%DE%A4%C8%A4%E1%A5%B3%A1%BC%A5%C91

↑のサンプルでPBOの使い方みてるんだけど、描画のたびに

@glBufferDataARB()でPBOの領域確保して
AglMapBufferARB()でPBOをマップして書き換え
BglTexSubImage2D()でテクスチャの中身をPBOに書き換える

ってことやってるんだけど、こういうものなの?
実際はダブルバッファなんで細かな動作はちょっと違うんだけど、

glBufferDataARB()で確保したPBO領域は、glTexSubImage2D()で
テクスチャに張り付けた後に自動で解放されるってことなのか?
434デフォルトの名無しさん:2011/04/07(木) 21:09:38.38
解放されないよ
サイズが同じならglBufferDataは一回呼んでおけば十分
そこのサンプルがglBufferDataを毎度呼んでる理由はわからんが
435デフォルトの名無しさん:2011/04/07(木) 21:49:59.12
>>431-432
俺の読解力が足りなかった。申し訳ない

>>432
パーサーは形式で作り直さなきゃいけないのは諦めるしかないね。
PMDは流行ってるけどメジャーではないからとりあえずPMDと、他に多い
(気がするのは)LigthWaveとかMAXかな。

とりあえず「これでやっていこう!」って決めたらそれつかったらいいと思うw
436デフォルトの名無しさん:2011/04/08(金) 00:32:23.82
COLLA・・・あ、いや、何でもない
437デフォルトの名無しさん:2011/04/08(金) 02:15:43.56
MikotoとかPMDなんて、日本のごく一部でしか扱ってない、ドマイナーな
形式を勉強したって意味ないよ。こんなの扱ってるのは狭い世界だけの話。
作者が辞めたらそれで終わりだしな。

今すぐならXファイル、将来性も含めれば.FBX、.COLLADA、.blend
このあたりだけ扱えればアニメーションはオッケーだ。

あ、アニメ無しの静的モデルだけならなんでもいいよ。アニメ付きに比べれば超簡単、単純だシナ。
438デフォルトの名無しさん:2011/04/08(金) 03:56:16.07
こういう話でると必ずと言っていいほど>>437みたいなの出てくるけど、
PMDとかMikotoはマイナーだけどそれを選んじゃいけないなんて決まりはないけどな。
たかだか個人の作るモンにファイルフォーマットの将来性だのなんだのアホかと思うけどね。

ファイル解析と独自形式のパーサなんてすぐできるんだし、独自形式への変換やデータの
扱いを勉強するならフォーマットなんざなんでもいい。
439デフォルトの名無しさん:2011/04/08(金) 05:07:18.53
肝心の素材がないのがなあ
モーション付きの3Dモデルなんて、探してもほとんど転がってない
たまにあっても形式や方便がバラバラで、それぞれのローダを作るだけで日が暮れそうだ
ニコ厨御用達のMMDは、素材が豊富とはいえプロの界隈では全く汎用性がないし
どうしたもんかね
440デフォルトの名無しさん:2011/04/08(金) 08:02:28.71
プロ(仕事)なら探したら転がってるような素材を使うわけにもいかないんだから
デザイナーが使うソフトを軸に考えればいいんじゃね
遊びで作ってるならプロ界隈の汎用性なんてほっといて素材からのパスが簡単な形式を選べばいい
441デフォルトの名無しさん:2011/04/08(金) 12:58:16.48
そのデザイナの使うソフトと様式が仕事のたび毎回違うのがマジでFUCK
いい加減誰か統一書式作ってくれよ・・・そんな独自形式なんて中学生でも作れるもので個性主張しなくて良いから
442デフォルトの名無しさん:2011/04/08(金) 13:17:40.59
じゃあ、お前が作れよ
443デフォルトの名無しさん:2011/04/08(金) 13:23:35.23
>そんな独自形式なんて中学生でも作れるもので個性主張しなくて良いから
何を解釈して個性主張になったの?wwwwwwwwwwwwwwwwwwwwwww
444デフォルトの名無しさん:2011/04/08(金) 13:51:09.06
製品に暗号化かけるとかそういう意味では重要だが、内部で使ってる
構造体の中身そのまんまファイル出力するだけで独自フォーマット(笑)
だとか言い出す奴は流石に笑うしかないな 入門本レベルだわな

ただただ汎用性を損なうだけで、他の書式覚えて書き出すの挫折しただけだろと
445デフォルトの名無しさん:2011/04/08(金) 14:04:10.82
            ∩_ 
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /
446デフォルトの名無しさん:2011/04/08(金) 20:12:00.87
複数のフォーマットのパーサかけばいいじゃんとしか
447デフォルトの名無しさん:2011/04/08(金) 20:21:16.52
COLLADAがその一つの光明になりえるはずだったんだが・・・。

モーションについてはKinectが未来を切り開いてくれるかもしれない。
プログラマでもモーションを作りえる環境ができそうだ。
448デフォルトの名無しさん:2011/04/08(金) 21:57:17.63
COLLADAは仕様が定まらなさ過ぎてイライラする
449デフォルトの名無しさん:2011/04/08(金) 22:49:10.48
しようがないな。
450デフォルトの名無しさん:2011/04/09(土) 00:58:00.90
仕様は定まってるよ。1.5なんて誰も使ってないしな
問題は仕様書がバグだらけなだけ
451デフォルトの名無しさん:2011/04/09(土) 12:25:16.12
手前味噌でよければM3G(JSR184)とかどうだろうか。
仕様はJavaの標準化コミュニティで完璧に定義されていて公開されている。
自分で作らなくても俺の作ったパーサーがフリーで公開中。
日本人開発者(=俺)がいるのもメリットだと思う。

今M3Gの描画エンジンをAndoridに移植していてNDKでは動いた。
Javaから使えるバインダーも作っていて現在実装中。

452デフォルトの名無しさん:2011/04/10(日) 08:38:14.68
Java ME用のAPIの中にモデルデータの規定があるのか
まあ公開され安定した仕様があって、必要な機能があるならME由来だろうがなんだろうが別に良いけど
JSR読んで決める
453デフォルトの名無しさん:2011/04/11(月) 14:18:52.11
>>444
確かに。
構造体をそのまま書きだすと、ファイルに構造体アライメントのpadding!(ゴミ)が入り汎用性を失う。
おまえよく知ってるな。

>>449
吹いたwwwww


やぱり3Dモデルのファイルフォーマットに決定版は無いのか・・・。
たぶんそれぞれ独自の拡張をしたりとか
表示するソフト側でいろいろやるため柔軟にするんためだろうけど、
普通にモデルの表示がOpenGLでできればいいと思ってた自分には
パーサとか、頂点やら法線やらテクスチャの部分まで自分で一から書くのも納得いかなんだ
そういう人はまずどうすればいいか教えてください!m(_ _)m
454伝説のスーパーハッカー ◆sREcGA5zDk :2011/04/11(月) 15:20:19.69
なんか変なのが沸いてるな。
455デフォルトの名無しさん:2011/04/11(月) 15:30:11.72
>>453
自分で作るのが嫌なら誰かに作ってもらえばいいのです
まずお金をいっぱい用意してください
456デフォルトの名無しさん:2011/04/11(月) 15:34:31.83
>>453
fbxやCOLLADAとかあるよ。
457デフォルトの名無しさん:2011/04/11(月) 15:47:46.59
どっちもレガシーに配慮しすぎてグダグダだけどな。
FBXとか仕様書を何回読み直しても理解できない。
458デフォルトの名無しさん:2011/04/11(月) 18:07:14.07
FBXってシーンを作る時に異常に時間かからないか?
遅すぎて自作ソフトで使うのはやめた
459453:2011/04/11(月) 18:11:54.77
>>456
意匠権名ググりましたが両方ともいまいちOpenGLで表示する方法はわかりませんでした。
お金をいっぱい用意する事を検討してみます。
460デフォルトの名無しさん:2011/04/11(月) 21:43:17.06
>普通にモデルの表示がOpenGLでできればいいと思ってた自分には
>パーサとか、頂点やら法線やらテクスチャの部分まで自分で一から書くのも納得いかなんだ

>いまいちOpenGLで表示する方法はわかりませんでした。

納得いかないんじゃなくて基本的なことが出来ないだけじゃんかよー
大人しくDirect3D9でxファイルでも読み込んでろよもー
461デフォルトの名無しさん:2011/04/11(月) 21:53:39.83
OpenGLやりたいなら、大学レベルの数学知識が必須。
簡単に手を出せるものじゃない。
まともなアプリ出すまで1年かかる。
462デフォルトの名無しさん:2011/04/11(月) 22:06:13.34
「車に乗ってドライブに行きたいんだ。」と言ったら
スパナを渡されたでござる。
463459:2011/04/11(月) 22:49:58.11
>>460
全く経験も知識も無い素人でわからんのだが、それは基本的な事なのか?
素人の感覚で、「納得いかない」と言ったのは、モデリングソフトで表示できるモデルと
同じようにするのに、なぜその表示する機能の「コピー」を手でもう一つ書く作業が必要なのか
そんなの時間の無駄じゃん、納得がいかない!と言いたかった。

たぶん自分が大きな勘違いしてるのはわかるけど、やっぱりわからん。
なんで普通にモデルを表示するのに、皆それぞれそんな長い手順を踏む必要があるんだ?という質問。
別に「面倒だし適当にやらせろ」っていう文句じゃなくて。
まあ簡単に言えば「便利な既存ライブラリは無いの?」だし
「楽したいだけだろ!」と言われたらそれまでだが、
でもそれを1人ずつわざわざやる事は合理的なのか?
その調べが全くつかない

似たような質問してる人は他の場所にも大勢いるけど、
「できない」「自分で作れ」って解答ばかりでさっぱり・・・
この辺りが一般凡人に3Dのプログラミングが普及しない原因に見えて仕方ないんだが

それとも、OpenGL自体がそこを追及する分野なのか?
純粋に「3Dのゲーム作りたい!」とかいう人は既に場違いなの?
464デフォルトの名無しさん:2011/04/11(月) 23:07:19.74
>>463はいきなりOpenGLを触るのではなくて、
もっと大きなミドルウェアとかを使った方がいいのではないか。
Unreal EngineとかUnityとか。
465デフォルトの名無しさん:2011/04/11(月) 23:23:51.60
そうだな、そういう人のためにゲームエンジンというものが存在するんだ
OpenGLはエンジンを作る人が触るような低位のAPIだ
466デフォルトの名無しさん:2011/04/11(月) 23:33:19.99
467デフォルトの名無しさん:2011/04/11(月) 23:50:30.61
汎用性のあるファイルなら、描画するのに必要なパラメータの大半は読み込んだ構造体にそのまま詰まってるから、
バイナリデータの取得ができて、テクスチャ付きの三角メッシュを表示して思うように動かせれば、OpenGLでのパーサを書くのはそんなに難しくない。
一般的に普及していないのは、ゲームができるほどのモーションが付いた3Dモデルデータが普通のプログラマには用意できないからだと思う。
アニメーションのない3Dなんか動かしてもモチベーション上がらんし。
468463:2011/04/12(火) 00:06:33.62
なるほど、やっぱりそうだったのか・・・

最初から思いきり勘違いしてた。
どうやらエンジンを使う方が自分には正解だったようです。
みんな誘導乙でした、thxです。

これでやっとドライブができるでござる
469デフォルトの名無しさん:2011/04/12(火) 00:13:08.69
>>463
もともとOpenGLは研究室とかで3次元曲面をプロットするような用途で使うものだし
3次元空間に多角形表示できるからそれ利用すればモデリングデータ表示も出来るけど
そんなのは副次的なものだし
研究者の使うPC環境に左右されないように最低限のI/Fだけ備えて汎用的に作られてるし
別に数式を視覚化できればモデリングデータとか表示できなくていいし
ゲームとかに使いたい人間が望んでるものと畑が違うし
極論言うとOpenGLは数学物理好きが使うツールだし
でもその汎用性とオープン性からゲームに利用されるのも確かだけど本来ゲーム向けじゃないし
OpenGLと組み合わせて使うライブラリはいくつもあるけどDirectXほど簡単には行かないし
470デフォルトの名無しさん:2011/04/12(火) 00:24:14.16
>>469
ちょっと偏屈になりすぎていないかい?
そこまでガチガチのもんでもないと思うぜ。
自分で自分を縛るのはもったいねぇ。

>>468
一応こういう事例もあるぜ。
ttp://game.watch.impress.co.jp/docs/20061025/3dvf5.htm
471デフォルトの名無しさん:2011/04/12(火) 00:51:17.72
>>469
の言う事も違うと思うが。
DirectXから便利機能を取り除いてHardwareへのインターフェースだけにすると
機能的にはほぼOpenGLと同じになるしな。

OpenGLは3D hardwareへのインターフェースの共通規格のような物。
モデルデータを読み込むとかの便利機能はOpenGLの範囲外。
ゲームエンジンが3D HWへアクセスするときのインフラみたいなもんか。

詳しくはOpenGLの仕様書を読め
472デフォルトの名無しさん:2011/04/12(火) 01:08:29.60
>>469
本来とかもともととかはしらんけど、ゲームでOpenGLは使われまくりだよ
473デフォルトの名無しさん:2011/04/12(火) 01:50:24.97
逆にDirectXだって学術分野で散々使われているし
474デフォルトの名無しさん:2011/04/12(火) 01:52:42.45
最近のゲーム機とかOpenGLサポートしてたりするもんな
475デフォルトの名無しさん:2011/04/12(火) 01:56:36.17
スマートフォンでは独壇場だし
WebGLも来るぜを。
476デフォルトの名無しさん:2011/04/12(火) 02:00:07.93
さぁみんな、夢に向かってOpenGLプログラミングしようぜ!
477デフォルトの名無しさん:2011/04/12(火) 02:02:11.47
glBegin( OpenGL );
478デフォルトの名無しさん:2011/04/12(火) 04:20:37.57
つかOpenGLと比べられるのはDirect3Dじゃないの?
479デフォルトの名無しさん:2011/04/12(火) 09:50:23.37
ゲーム機でOpenGL使ってるのは、ライセンスの問題だとは思うが・・・
480デフォルトの名無しさん:2011/04/12(火) 10:35:46.81
ゲーム機で使われるのはDirectXはMSが許可しないし他に選択しないからな。
別にOpenGLが理想なわけじゃない
481デフォルトの名無しさん:2011/04/12(火) 12:53:56.81
ソニーがPS3にDirectX使わせてくださいって言ったらMSはどうぞどうぞって言いそうだけどなw
482デフォルトの名無しさん:2011/04/12(火) 16:00:20.37
そりゃーどうぞどうぞだろう
有料だしバージョン少し古いかもしれんがw
483デフォルトの名無しさん:2011/04/12(火) 21:33:32.75
ライセンスがゆるい3DAPIが新しく登場すればはっぱとOpenGLは捨てて移行するけどな
OpenGLはさすがに設計が古すぎる・・
484デフォルトの名無しさん:2011/04/12(火) 22:23:41.17
opengl1.2を使っています
モデルの影の色を指定したい場合どうすればいいでしょうか。
例えば肌は普通に光源を設定すると影が黒くなってポップなモデルには似合いません
肌の影は濃いオレンジ色にしたいと思っています
かといってアンビエントを赤っぽく設定すると影じゃない部分も赤っぽくなって赤鬼みたいで変です
光源と対角の位置に赤い光源を置くと肌以外の部分にも赤い光が当たってこれもだめ
通常どんな方法で対応するんでしょうか
↓こんな感じの表示をしたいです
http://www.teatime.ne.jp/infor/lovedeath/char/ch_ay.jpg
485デフォルトの名無しさん:2011/04/12(火) 22:30:56.80
>>483
>>373あたりからのレス曰く
なんだかそれはもう無理らしいよ

>>484
アンビエントに濃いオレンジ色を設定すればいいんじゃ
486デフォルトの名無しさん:2011/04/12(火) 22:31:38.46
ライトの設定じゃなくてシェーダー側じゃね?
肌とそれ以外で分ける。
487デフォルトの名無しさん:2011/04/12(火) 22:39:24.51
1.2の頃ってシェーダあったっけ?
488デフォルトの名無しさん:2011/04/12(火) 22:44:54.08
というか、材質(マテリアル)の色のアンビエントじゃなく光源の方変えてるのか
メタセコ?肌の材質の「周囲光(環境光)」を上げてみては
489デフォルトの名無しさん:2011/04/12(火) 22:55:48.55
>>487
固定シェーダーね。
呼称はマテリアルだったか。スマン
490デフォルトの名無しさん:2011/04/12(火) 23:01:11.35
>>488
拾い物のobj(mtl)ファイルをテキストエディタでいじってます
マテリアルのアンビエント色をオレンジに書き換えても光源があたらない影の部分は
黒くなってしまってさっきみたいな絵になりません(光源色+マテリアル色〜黒のグラデになる)
昔六角大王をいじってた時はポリゴン毎に光のあたる強さに応じてグラデを指定できたんだけど
openglでそういうことって出来るんでしょうか

>>485
光源/マテリアルどちらのアンビエントを設定してもシェイド部分は黒になってしまいます
なので光源の逆側から影用の光源を当てればいいと思ったんだけど
そうするとその影色を適用したくないマテリアルにも光が当たってしまって・・・
491デフォルトの名無しさん:2011/04/12(火) 23:08:19.02
アンビエントは全体に当たる。
光と材質の色のかけ算だから、
片方のアンビエントが0,0,0(黒)だと必ず黒になるよ。
肌には肌色を設定して、光源は白色(というかアンビエントなので灰色とか暗めが普通)でいいと思う
492デフォルトの名無しさん:2011/04/12(火) 23:22:31.76
>>491
今は光源のアンビエントは(0.2, 0.2, 0.2)で指定しています。
これだと影が黒(灰色ですね)になっていて肌色の影としてはくすんでてヤだなあと
でも(0.4, 0.2, 0.3)みたいにオレンジっぽくすると今度は夕焼けにあたってるみたいに全体がオレンジに。
局所的にこれが出来ればいいんですけどやっぱないのかな・・
で、局所的にといえばマテリアル毎のアンビエントになるわけだけれど
シェイド部分は光源のアンビエントの影響を受けて局所的に指定ができないというハマリパターンになって泣きそうです
493デフォルトの名無しさん:2011/04/12(火) 23:28:44.97
>>490
GLSLをつかってトゥーン・レンダリングするとか、そういう話ではなくって?

個人サイトのURIを勝手に貼るが
http://www.arakin.dyndns.org/glsl_cartoon.php
494デフォルトの名無しさん:2011/04/12(火) 23:31:00.38
>>484
まさか綾乃さんをこのスレでみるとは・・・
確かうろ覚えだがソレは少なくともPixel Shader1.1を使ってるからGLSLが使える
OpenGL2.0以降のバージョンじゃないと完全な再現は無理かもな
495デフォルトの名無しさん:2011/04/12(火) 23:34:06.76
>>492
ライトにもマテリアルにも
アンビエントはあるぞ?そこは大丈夫か?

両方に値を入れてやらにゃならん。
496デフォルトの名無しさん:2011/04/12(火) 23:34:07.69
>>492
できるって。
光源のアンビエントは(0.2, 0.2, 0.2)でいい。
材質にもあるでしょ?それを灰色でなくオレンジに。

トゥーン・レンダリングは考えてないと思われる。
497デフォルトの名無しさん:2011/04/12(火) 23:36:42.33
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, materialcolor);の事です。
498デフォルトの名無しさん:2011/04/12(火) 23:44:31.33
499デフォルトの名無しさん:2011/04/13(水) 00:00:52.14
>>495-496
分かりにくいので絵を持ってきました。
こんな色を再現したいです。
上の方は実際にレンダリングしたもので
・光源アンビ :(0.2, 0.2, 0.2)    // glLightfv
・マテリアンビ:(0.8, 0.7, 0.5)    // glMaterialfv
です
http://www.dotup.org/uploda/www.dotup.org1524144.png
影が下みたいな綺麗なオレンジにならないです・・

>>498
なるほどやっぱり1.2は・・・
500デフォルトの名無しさん:2011/04/13(水) 00:02:24.89
>>494
大きいおっぱいが好きなので!!

>OpenGL2.0以降
orz
501デフォルトの名無しさん:2011/04/13(水) 00:16:10.24
>>499
アルファは関係ない?4要素目。
502デフォルトの名無しさん:2011/04/13(水) 00:17:26.81
連投すみませんです

>>493
トゥーンレンダリングは今のところ考えていないですけど
そんな何時で影の色を変えたいです

>>497
最初はglMaterialfvで出来ると思ってた・・・
503デフォルトの名無しさん:2011/04/13(水) 00:29:35.43
とりあえず光源は白のままでいい。でないと夕日になるんで。
絵の【理想】に近づけるとすればマテリアルが
アンビ(0.8, 0.4, 0.0)
ディフ(1.0, 1.0, 1.0)
って感じじゃないか
影の部分がオレンジで、光当たってる部分は白っぽいし。
試さないで口だけでスマソorz
504デフォルトの名無しさん:2011/04/13(水) 00:38:58.43
ごめん、
さっきも言ったとおり掛け算だから光源アンビエントが0.2だと影が黒に近くなるや
全体的に明るめだし、もっと上げていい。
本当に絵みたく影を鮮やかなオレンジにするにはそれこそ
光源アンビ(1.0, 1.0, 1.0)
材質アンビ(1.0, 0.5, 0.0)
しかないと思う。でもこれってどうなんだろ;
505デフォルトの名無しさん:2011/04/13(水) 01:05:35.02
>>501
やってみたけど黒くなるとこは黒くなるのであまり効果なかったです

>>503-504
めっちゃ蛍光色w
503のは黒っぽいけどいい感じ
組み合わせ次第で黒っぽさを目立たなくすることは出来そうです
色々試すしかないかな メタセコもそろそろ使い方覚えないと・・
506デフォルトの名無しさん:2011/04/13(水) 03:00:38.35
オレンジ色の光源をもうひとつ用意して、肌だけに適用したら?
507デフォルトの名無しさん:2011/04/13(水) 03:09:12.09
さすがに明るすぎたかw
それとも、
光源アンビ(0.2, 0.2, 0.2)のままで
材質アンビ(3.0, 1.5, 0.0)
とか1.0以上指定してもいいのかな(できた気がする)
2Dみたいな陰の色をマテリアルで表現するにはどうするか自分も気になる・・・。
508デフォルトの名無しさん:2011/04/13(水) 07:53:27.48
好きなライティング用テクスチャを描いて、
glTexGen 系関数を使って環境マッピングと同じ要領でレンダリングすけば
比較的簡単に実現できそうな気がするが、1.2 では使えないの?
509デフォルトの名無しさん:2011/04/14(木) 02:28:26.47
>>506-508
できたorz

結論から言うと主光源と対角線の方向から副光源(平行光)を当てるでした。
副光源は以下にしました。
 ・アンビエント:主光源と同じ
 ・ディフューズ:おさえめ
 ・スペキュラ :なし

こうするとマテリアルのアンビ色が生きて肌のシェイドがオレンジになりました。
反対方向から当てる光は赤っぽいのじゃなくて普通に白い光で良かったという・・・
白い光なので肌だけに限定適用しなくても良くていい感じです

http://www.dotup.org/uploda/www.dotup.org1527500.png
510デフォルトの名無しさん:2011/04/14(木) 05:18:22.92
さぁ、次はScreen Space Subsurface Scatteringを実装しようぜ!
511デフォルトの名無しさん:2011/04/14(木) 17:28:32.39
>>509
それなら なおさら一つめの光源アンビエントを上げるだけで済むはずなんだが…
なんでそれじゃ駄目だったんだ?
512デフォルトの名無しさん:2011/04/14(木) 17:29:03.17
なあ
>>463とかでも誰も答えてないんだけど。
モデリングツールで作ったモデルをopenglなりDirectXで表示させるには
モデリングツールのスクリプトで頂点やら法線やらを出力するべきなんじゃないのか。
コードをそのまま出力させても良いと思うし。
フォーマットの問題もメタセコイアみたいにモデリングツール自体が複数フォーマットに対応してるんで解決できると思うし・・・
わざわざフォーマットのパーサなんか作るもんなの?
513デフォルトの名無しさん:2011/04/14(木) 18:05:47.82
>わざわざフォーマットのパーサなんか作るもんなの?

何を答えりゃいいのかさっぱりわからんが
出来合いのパーサが提供されてるフォーマットを選べばいいだけしょ?
514デフォルトの名無しさん:2011/04/14(木) 19:06:08.62
Ambient :全体に当たる光。光源の反対側からも当たる。
Diffuse :光源の方向に向かってグラデーションみたいに当たる光。
Specular:光源がそのまま反射して映って見える光。

光源と材質ではそれぞれの色が掛け算だけど、
これら3つ自体は足し算のようで、Ambient上げれば全体が明るくなる。



パーサ作るの自体は実は難しくないみたいなんだが
515デフォルトの名無しさん:2011/04/14(木) 20:36:08.06
NEC TE5って何年前のだ


http://www.nec.co.jp/press/ja/0111/3001.html
10年前か・・
516デフォルトの名無しさん:2011/04/15(金) 00:33:20.33
現在、GLSLの勉強中でPhongシェーディングを組んでいます。
テクスチャを使用しているかどうか(GL_TEXTURE_2DがEnableか否か)を
シェーダ内で取得する方法はないでしょうか。

Uniformで渡す手法は、他人の3Dモデル読み込みライブラリを
用いたときにコードの修正が必要なのでそれ以外の方法を探しています。
517デフォルトの名無しさん:2011/04/15(金) 00:52:29.49
>>516
GLSL使う場合はTexture2Dが有効無効は関係なく、シェーダーのコード内で貼ってれば貼られるし、貼られてなければ貼られない。
518デフォルトの名無しさん:2011/04/15(金) 01:10:07.36
textureユニットを指定した時点で
かってにenableになるぞ。
519デフォルトの名無しさん:2011/04/15(金) 01:14:40.50
>>517
レスありがとうございます。
こちらの説明不足でした。

例えば、固定パイプラインを用いてポリゴンを描画する場合の

テクスチャを使用しない→glDisable(GL_TEXTURE_2D)
テクスチャを使用する→glEnable(GL_TEXTURE_2D)

の切り替えをシェーダ内で行ないたいのです。
Texture2Dがシェーダ内のsampler2Dに影響を与えないため、
テクスチャを使用したくないポリゴンに
以前指定した画像が貼られてしまって気持ちの悪い状態になっています。
ですので、Uniformで渡す手法以外(組み込み変数等)で
Texture2DのOn/Offを取得する方法がないか探しています。

520デフォルトの名無しさん:2011/04/15(金) 01:36:16.04
if( isTexture )
gl_FragColor = texture2D( texture0, gl_TexCoord[0].st );
else
gl_FragColor = gl_Color;
521デフォルトの名無しさん:2011/04/15(金) 02:20:28.56
OpenALスレも欲しいな
522デフォルトの名無しさん:2011/04/15(金) 02:23:22.25
言いだしっぺのry

まぁすごい過疎りそうだけどな・・・最近GLスレがちょっと元気でうれしい
523デフォルトの名無しさん:2011/04/15(金) 02:23:52.74
>>518
レスありがとうございます。
自動でenableですか・・・。
glGetで調べたことがなかったので知りませんでした。ありがとうございます。

>>520
レスありがとうございます。
やはりUniform以外だと厳しいみたいですね;もう少し調べてみます。
524デフォルトの名無しさん:2011/04/15(金) 08:28:33.51
調べるもなにも変数で渡すかテクスチャの有無でシェーダごと切り替えるかのどっちかしか無いって
小さくて透明なテクスチャを常に貼ってしまう手もあるけど
525デフォルトの名無しさん:2011/04/15(金) 11:21:49.45
OpenALは長いこと使ってるけど、語り合うほどの話題があるとは思えないな…
526デフォルトの名無しさん:2011/04/15(金) 20:31:58.42
>>525
追ってないからわからないんだが
順調に進化してるのかね?>AL
527デフォルトの名無しさん:2011/04/16(土) 11:01:49.36
というか過去にOpenALのスレがあった気がする
そして即落ちたような
528デフォルトの名無しさん:2011/04/17(日) 15:23:23.05
上の人とは別人だけど、GLSLで同じように有り合わせのPhongシェーダーを
自前のプログラムに追加してみたらテクスチャーが貼られなくなっちゃったんだけど
これも全部シェーダーに実装しないとだめ?
529デフォルトの名無しさん:2011/04/17(日) 15:56:03.39
そりゃそうだろ

ピクセルの色を決めるのがピクセルシェーダーなんだから
530デフォルトの名無しさん:2011/04/17(日) 17:17:07.32
デフォルトの処理をごそっと置き換えることになるのか。
まんどくさ。
531デフォルトの名無しさん:2011/04/17(日) 17:32:53.15
過去にOpenALのスレを作りましたがすぐにDAT落ちしました。
532デフォルトの名無しさん:2011/04/17(日) 20:43:35.20
だれかエロゲーみたいな塗りのGLSLシェーダー作って公開してくれませんか?
Tonyかべっかんこう塗りシェーダーがいいです。
533デフォルトの名無しさん:2011/04/17(日) 21:05:18.44
2Dのイラストだから生きる風合いってのが大きいと思うが
534デフォルトの名無しさん:2011/04/17(日) 22:31:20.13
クレクレはお帰り下さい。
ってか自分で作れよ。
535デフォルトの名無しさん:2011/04/17(日) 23:52:50.76
シェーダ使ってリアルタイムで頑張るよりも
テクスチャで頑張った方がそれっぽくなるんだよね
プロジェクションマップに弱めのライトマップとか
実例という意味ではmmViewer関連が参考になるかも
536デフォルトの名無しさん:2011/04/18(月) 00:01:17.50
あとポストエフェクトが重要だと思うんだけど
OpenGLでのポストエフェクトって
Direct3Dに比べると資料がすごく少ないんだよね
何かいい資料があったら教えてほしい
537デフォルトの名無しさん:2011/04/18(月) 00:10:43.96
シェーダーでどうこうするポストエフェクトまでいくとDirect 3DもOpenGLもほとんど変わらんと思うがw
資料はどっちのでも使えそう。
538デフォルトの名無しさん:2011/04/18(月) 01:39:28.55
確かに原理的な話は共通なんだけど
実際にはドライバ依存とかでハマるんだよなぁ
「動くものが実在する」というのは心の支えになる
539デフォルトの名無しさん:2011/04/18(月) 06:36:21.34
ポストエフェクトの実装でドライバ依存でハマる?
540デフォルトの名無しさん:2011/04/18(月) 09:30:23.55
本当に理屈が判ってるならまずCPUでやってみろよ。
541デフォルトの名無しさん:2011/04/18(月) 23:28:51.73
αチャンネル付きのテクスチャ・・・・どうすればちゃんと表示できるのかorz
542デフォルトの名無しさん:2011/04/18(月) 23:41:46.80
glEnable(GL_BLEND); を忘れてるとか?
543デフォルトの名無しさん:2011/04/18(月) 23:45:27.03
デプスも切れよ。
544デフォルトの名無しさん:2011/04/19(火) 00:04:58.58
>>542 αポリの描画順序がどうこういう話でαありポリだけ奥から描くとかなんとか
>>543 α以外の部分もおかしくなるじゃんかー

奥から描画順ソートしたりα付きポリが他のポリと交差する場合αポリを分割するとか
みんなこういう処理自前で書いてるん?
それと描画順ソートとかしたら頂点配列使えなくならない?
545デフォルトの名無しさん:2011/04/19(火) 00:20:59.75
ある程度妥協する。
546デフォルトの名無しさん:2011/04/19(火) 01:03:48.51
そこが昔からのプログラマの腕の見せ所。
デファードとか原理的に半透明使えない筈だが
みんな色んな工夫をかまして頑張っているのさ。
547デフォルトの名無しさん:2011/04/19(火) 17:03:49.56
>>544
ポリゴンごとにソートしないで、
いくつかのかたまりを適当に作って奥から順に描画するのが
普通だと思っていた
交差するポリゴンとかは諦めるんだと思う。
548デフォルトの名無しさん:2011/04/19(火) 20:04:19.79
ケースバイケースなんだろうけど、自分は
不透明を全部描いてからDFPTHTEST ON/Depth書き込みOFF/CULLING ONで半透明ポリの裏向き/表向きをソートせずに描画
でうまくいくパターンが多かったかも
549デフォルトの名無しさん:2011/04/19(火) 22:54:41.92
>>545-548
ありがとうございます。
みんな色々試行錯誤してるんですね。難しい・・
モチベーション下がらないように他の部分進めながら考えていくかな
550デフォルトの名無しさん:2011/04/20(水) 00:10:44.61
FFの髪の毛はどうやってんだろう?
αブレンドしてるのに見た目おかしくない。
交差してても平気みたいだし。
551デフォルトの名無しさん:2011/04/20(水) 01:36:16.71
FFの髪の毛とか言われても
552デフォルトの名無しさん:2011/04/20(水) 01:36:30.29
職人が毎フレーム、ドットを打ち直してるって
うちの爺ちゃんが言ってた。
553デフォルトの名無しさん:2011/04/20(水) 01:42:21.61
中の人も大変だな
554デフォルトの名無しさん:2011/04/20(水) 08:15:12.94
FFはプリレンダムービー中心だからな
環境的にはなんでもありだよ
555デフォルトの名無しさん:2011/04/20(水) 08:35:45.37
髪の毛なんてどうでもいい
眼鏡をどうするか
それが死活問題だ
556デフォルトの名無しさん:2011/04/20(水) 08:48:08.65
557デフォルトの名無しさん:2011/04/20(水) 09:02:09.43
>>555
よく判ってるじゃねえか
558デフォルトの名無しさん:2011/04/20(水) 10:50:55.84
>>556
「前髪を描いてから、目を描く」というテクニックは勉強になった。なるほどなぁ。
頭(あるいは視点)をグルグル回転させるアニメーションをしたときに違和感でそうだけど、角度を限定していれば、それなりにうまくいきそう。

でも、なんか「このライター、頭悪いんじゃねぇの?」と感じる文章だな。

> めがねをかけた場合、顔>メガネ>目>前髪と描画される。
> まず顔を描き、前髪を描画してから前髪のデプス値をクリア、顔のデプス値を書き込み目を描画。
> ツルをのぞいたメガネを描画してから、前髪のデプス値を書き込み、目立つめがねのツルを最後に書き込む。

前後の文章が連続しているとはとても思えないんだが。
559デフォルトの名無しさん:2011/04/20(水) 13:28:16.23
Z まわりをゴニョゴニョするのはゲームだとよくあるよね。
560デフォルトの名無しさん:2011/04/21(木) 01:43:13.70
>>558
結果的にその順で描画される事になると言いたいんじゃね?
561デフォルトの名無しさん:2011/04/21(木) 02:55:57.25
前髪を書き込んでから前髪のデプス値をクリアってあるけど
部分的なデプス値のクリアってなんだ
562デフォルトの名無しさん:2011/04/21(木) 08:29:38.43
>>561
デプスバッファのコピーをもどしてるのかもね
563デフォルトの名無しさん:2011/04/21(木) 23:03:18.62
BlendFuncってPopできたっけ?
564 忍法帖【Lv=4,xxxP】 :2011/04/23(土) 18:09:07.71
1.4までのハードウェアでハードウェアジオメトリインスタンシングやるには?

565デフォルトの名無しさん:2011/04/23(土) 21:43:07.92
>>564
それって可能だという前提?
566デフォルトの名無しさん:2011/04/26(火) 14:18:46.08
スペクトログラムアナライザーを作りたいのですが、
以下のようにx軸を時間,y軸を周波数,信号成分の強さを色の明るさとして描画すると、重くなってしまいます。
float df = 22050 / (float)(ps.maxrect.width());
double logmax = log2(1+df*vdata.at(0).count()/1000.0);
glBegin(GL_POINTS);
for(int j = 0; j < vdata.count(); j++)
{
for(int k = 0; k < vdata.at(j).count(); k+=2)
{
glColor4f(0,vdata.at(j).at(k),vdata.at(j).at(k),1);
glVertex2d(j, log2(1+df*k/1000.0)/logmax * height);
glColor4f(0,vdata.at(j).at(k+1),vdata.at(j).at(k+1),1);
glVertex2d(j, log2(1+df*(k+1)/1000.0)/logmax * height);
}
}
VBOとか頂点配列使うと余計に重くなります。なんとか高速化する方法はないのでしょうか。
OpenGL初心者なんで変なこと言ってたらすみません。
567デフォルトの名無しさん:2011/04/26(火) 15:07:45.50
全部の点を1枚のテクスチャとして読み込んで1回で描く
568デフォルトの名無しさん:2011/04/26(火) 18:32:06.40
ただ単に描いてるポイントの数が多すぎるのなら
減らせとしかいいようがない。
1フレーム何個描いてるの?


569デフォルトの名無しさん:2011/04/26(火) 20:14:45.56
operator[]じゃなくてat()を使うと何かいいことあるんだっけ?
570デフォルトの名無しさん:2011/04/26(火) 20:55:03.16
範囲チェックをしてくれたと思う
571デフォルトの名無しさん:2011/04/26(火) 22:00:06.39
pointSmoothは使うなよ。
572566:2011/04/26(火) 22:34:23.89
返答ありがとうございます。
1フレーム約50万個の点があります。
やはり点の数が多すぎるのでしょうか・・・
テクスチャですか、試してみたいと思います。
573デフォルトの名無しさん:2011/04/26(火) 22:39:49.87
毎回50万回 log2() 呼んだら重いんじゃね
描画位置は変わらないなら1回計算した値をとっとけ
574デフォルトの名無しさん:2011/04/26(火) 22:53:30.13
おまいは何を言っているのだ。
575566:2011/04/26(火) 22:53:53.97
>>573
変換テーブル作ったらちょっと速くなりました!
けど他の表示(波形やスペアナ)に比べるとやはり遅い・・・
点の数を減らすしかないですね。
576デフォルトの名無しさん:2011/04/26(火) 23:53:50.87
入ってきたデータを全部マップするんじゃなくて、2D画像のx,y座標から配列のどこを読むかのプログラムに変更して、
その上でOpenCLだかGLSLだか使えば一瞬だと思うんだけど、どうなんでしょう > 識者の方
577デフォルトの名無しさん:2011/04/27(水) 00:18:43.06
FFTとかデータのコピーとか時間かかってそうだけど
点の数を減らせば猛烈に速くなる?
時間で動くバッファはリングバッファにするとコピーしなくてすむはず
578デフォルトの名無しさん:2011/04/27(水) 00:42:20.91
GLFWを使おうと思ってダウンロードしたけど、詳しい設定方法載ってるサイトない?
もちろん日本語で
579デフォルトの名無しさん:2011/04/27(水) 00:43:42.98
50万ってことは800x600くらいのウィンドウ全部を点で描画しようとしてる?
もしそうならフラグメントシェーダーかOpenCL使った方がいいでしょ
580デフォルトの名無しさん:2011/04/27(水) 12:39:02.92
CTRL+ALT+DELの復帰後に描画されなくなります。
DirextXのデバイスロストのような感じになります。

サンプルはNeHeのLesson3(vc++)。動作はウィンドウモードです。
ttp://nehe.gamedev.net/data/lessons/lesson.asp?lesson=03

一応F1キー処理を変更して、再度初期化させたのですが無理でした。
よろしくお願いします。
581デフォルトの名無しさん:2011/04/27(水) 15:43:08.92
>>578
GLFW使ってるけど、日本語の解説は探しても無かったから公式の英語リファレンス見て使ってる。
公式リファレンス英語だけど中学生でもわかるレベルだから一度目を通すことをオススメ。
あとglutとか使ったことあるなら感覚は同じだよ。
582デフォルトの名無しさん:2011/04/27(水) 17:51:32.95
床井研究室に解説あったぞ
583580:2011/04/28(木) 09:01:48.20
580です。

Win7クラシックモード特有の問題でした。
解決策は分かりませんが、お騒がせしました。
584デフォルトの名無しさん:2011/04/28(木) 13:52:28.08
OpenGLでマウスを用いて球などの図形を凹ませたりといったリアルタイムに変形させたいのですが
参考になる本やサイト等ありましたら教えていただけないでしょうか?
585デフォルトの名無しさん:2011/04/28(木) 15:23:09.56
>>584
マウスピックアップ とか セレクションバッファ でググってみればいいんじゃね?
586デフォルトの名無しさん:2011/04/28(木) 16:04:40.00
>>585
ありがとうございます。
マウスというよりWiiリモコンを用いて3次元を操作できるマウスが正確です
587デフォルトの名無しさん:2011/04/28(木) 16:26:52.18
正解て・・・
書いてないことまで推測できんわしらんがなw
588デフォルトの名無しさん:2011/04/28(木) 18:05:49.92
オレの見ているプログラミング関係のいくつかのスレで、曖昧な単発質問をして、回答者に人をなめたような、あるいは人を食ったような慇懃無礼なお礼をするレスがここ数日目立つんだけど。
589デフォルトの名無しさん:2011/04/28(木) 18:30:07.09
ここ数日じゃなくていつも見かけるけどなそういうの。
自分から情報小出しにして、望んだ解答が得られないとスネちゃう子ばっかりなんだろ・・・
590デフォルトの名無しさん:2011/04/28(木) 19:21:53.48
glutSwapBuffers()の垂直同期を無効にするには、
wglSwapIntervalEXT()を使うしかありませんか?
591デフォルトの名無しさん:2011/04/28(木) 19:48:46.95
glutBitmapCharacter()
の文字の大きさを自由に変更するにはどうすればよいですか?
592デフォルトの名無しさん:2011/04/28(木) 20:40:01.08
glutBitmapCharacterをやめてglutStrokeCharacterを使います
593デフォルトの名無しさん:2011/04/28(木) 20:47:50.26
>>592
ありがとうございます
やってみます
594デフォルトの名無しさん:2011/04/28(木) 21:48:09.51
ここってうざいのしかいないね
糞の集まりだわ
595デフォルトの名無しさん:2011/04/28(木) 21:50:19.48
だから自分が望んだ解答もらえないからってふくれんなよ。
お前みたいなのが一番うざいんだよw
596デフォルトの名無しさん:2011/04/28(木) 21:57:27.71
>>590
WindowsならwglSwapIntervalEXT()か、それすらOS依存がヤダっていうならなんかライブラリ使うしかない。
GLFWとか使うとglfwSwapInterval()なんてのがある。SDLだったらSDL_GL_SetAttribute()でパラメータ渡したらできたきがする。
597デフォルトの名無しさん:2011/04/28(木) 22:18:10.12
>>596
丁寧に感謝します!
なるほど、ひとまず今回はwglSwapIntervalEXTのアドレスとってwindows依存でいきます
ありがとうございました!
598デフォルトの名無しさん:2011/04/29(金) 08:14:28.86
>>588
4月だからだろ。
599デフォルトの名無しさん:2011/05/01(日) 21:16:03.52
glPushAttribがうまくいきません。
glColor3f(1.f, 0, 0);
glPushAttrib(GL_COLOR_BUFFER_BIT);
glColor3f(1.f, 1.f, 1.f);
glPopAttrib();

(三角形描画)
としたのですが、三角形が赤になると思ったのですが、白になってしまいます。
なぜでしょうか?
600デフォルトの名無しさん:2011/05/01(日) 21:29:25.41
>>599
ためしてないけど、GL_CURRENT_BITじゃね?
601デフォルトの名無しさん:2011/05/01(日) 22:02:31.73
>>600
ありがとうございます。
すみません。GL_CURRENT_BITでもだめでした・・・
602デフォルトの名無しさん:2011/05/01(日) 22:08:12.49
なるわけねーだろ。

1.push
2.描画
3.pop

の順だ。
603デフォルトの名無しさん:2011/05/01(日) 22:20:20.91
>>601
ためしたが、GL_CURRENT_BITでうまくいったが

>>602
1. push
2. color
3. pop
で2のcolorが無効になるはずなのにならないのはおかしいって話
604599 :2011/05/01(日) 22:35:03.72
すみません
glBegin
glEnd
の外でpush popすることでうまくいきました。
中ではだめなのですね・・・
ありがとうございました。
605デフォルトの名無しさん:2011/05/01(日) 23:36:15.28
( ゚д゚)
606デフォルトの名無しさん:2011/05/02(月) 15:52:49.86
クイズじゃないんだから>>586は正解とか書いてないよく見ろw
ちょっと訂正したかっただけだろw
607デフォルトの名無しさん:2011/05/02(月) 16:22:30.54
ためしてないけど、まだ終わってないんじゃね?
608デフォルトの名無しさん:2011/05/03(火) 11:00:23.03
>>603-604
話が噛み合ってなくて笑った。
何がどうなったのかw
>>599はpush,color,pop,描画してるから白で描画されるのは当たり前な(>>602でそう指摘されている)。
それにたいして>>604で頓珍漢なことをやって解決したことになってるw

609デフォルトの名無しさん:2011/05/03(火) 11:12:09.70
>>608
赤,push,白,pop,描画 なら赤だろ。なんで白で当たり前なんだよw
610デフォルトの名無しさん:2011/05/03(火) 13:30:32.24
>>572
面白そうなので自分で試してみた。PARTICLE_NUM=100万個として

 glBegin (GL_POINTS);
 for (int i = 0; i < PARTICLE_NUM; i++) {
  glColor3fv (colors[i]);
  glVertex3fv (positions[i]);
 }
 glEnd ();

これでうちのHD5770だと35fps出た。
ちなみにディスプレーリストを使うと550fpsぐらい。
現代のGPUでも100万パーティクルを毎回描画するのはきつい。
1パーティクル4頂点で計算すると22億頂点なので性能的にはこんなものだろう。
611デフォルトの名無しさん:2011/05/03(火) 20:48:39.94
OpenGLで描画しながら他のプログラムも走らせなたいのですが
glutMainLoop()でループに入ってしまい抜け出せないのですがどうすればよいのでしょうか?
612デフォルトの名無しさん:2011/05/03(火) 21:25:53.23
まず走らせるか走らせないかはっきりしろい。

マジレスするとその用途ではGLUTは使えない。
理由はスレッドセーフでないから。
613デフォルトの名無しさん:2011/05/03(火) 21:31:14.71
>>612
そうなんですか
OpenGLかDirectXでCG描画しながら
OpenCVのプログラムを走らせたいのですがどのような方法がありますでしょうか?
614デフォルトの名無しさん:2011/05/03(火) 21:37:45.52
615デフォルトの名無しさん:2011/05/03(火) 22:10:48.84
616デフォルトの名無しさん:2011/05/03(火) 23:05:28.19
別プログラムを走らせたいって実はプロセス間通信したいってことだったり
617デフォルトの名無しさん:2011/05/04(水) 02:53:14.47
普通に別スレッド作ればいいんじゃないの。
そっちのスレッドからはOpenGL関数を呼び出さないことを条件で。
618デフォルトの名無しさん:2011/05/04(水) 20:18:29.38
テクスチャマッピングで困っています。
黒になって欲しいのになぜか赤になってしまいます。
GL_RGBAなのにGL_RGBかのような動作になってしまっているのかもしれません。
どんな原因が考えられますか?
ttp://codepad.org/9bBzk2V4
619デフォルトの名無しさん:2011/05/04(水) 20:30:44.67
>>618
たぶんリトルエンディアンだからじゃね
リトルエンディアンで GL_RGBA で GL_UNSIGNED_BYTE で unsigned int の 0x000000ff なら R=255, G=0, B=0, A=0 だ
620618 :2011/05/04(水) 20:38:43.45
>>619
そうでした。並びが逆になっていました。
解決しました!ありがとうございます!
621デフォルトの名無しさん:2011/05/04(水) 21:43:25.37
VisualC++6.0で使う方法ありますか?
622デフォルトの名無しさん:2011/05/04(水) 21:45:21.29
普通に使えると思いますが?
623デフォルトの名無しさん:2011/05/04(水) 21:51:48.45
もう一度調べてみます
624デフォルトの名無しさん:2011/05/05(木) 00:41:25.39
フレームバッファのテクスチャを作業用に複製したいのですが
どういった方法がありますか?
625デフォルトの名無しさん:2011/05/05(木) 02:25:54.90
>>624
glCopyTexSubImage2D
626デフォルトの名無しさん:2011/05/05(木) 02:34:09.76
>>625
ああ、なるほど。
盲点でした。FBO関連のコマンドを探していました。
テクスチャなのでglCopyTexSubImage2Dが使えるんですね。

使ったことが無いので描画ルーチン内で
速度がどうなるのかが気になりますが
ちょっとこれでワークをtmpに退避させてみます。

ありがとうございました。
627デフォルトの名無しさん:2011/05/05(木) 03:07:53.09
遅ければ、普通にONEZEROで描画すればいいじゃない
アルファコピーされないけど
628デフォルトの名無しさん:2011/05/05(木) 03:09:51.53
OpenGLには、
DirectXでいう グローバルアンビエントライト

device->SetRenderState( D3DRS_AMBIENT, 0xff030303);

みたいなやつってありませんか?
GL_LIGHT0〜が関係ない明るさです
629628:2011/05/05(木) 04:41:03.40
事故解決しました
630デフォルトの名無しさん:2011/05/05(木) 04:52:11.21
>>629
どのように解決したかも書いてもらえると嬉しいです。
631デフォルトの名無しさん:2011/05/05(木) 08:52:21.96
glBindBufferで指定したPBOの識別値を一時的に退避させるには
glPushAttribに何を指定すればよいのでしょうか?
赤本が2.0までしか記述されていないので代わりにVBOの節を探してみましたが
見つからず・・・。

申し訳ありませんが、どなたかご存知の方、教えていただけないでしょうか。
632デフォルトの名無しさん:2011/05/05(木) 11:06:22.52
>>631
glPushClientAttribにGL_CLIENT_PIXEL_STORE_BITを指定…っぽい
633デフォルトの名無しさん:2011/05/05(木) 11:52:25.19
>>627
ONEZEROってなんですか?BlendFunc?
634デフォルトの名無しさん:2011/05/05(木) 15:17:23.37
メタセコイヤのmqoファイルって頂点の法線ベクトル情報持ってないんだけどどうやって正しく表示させてるんだろう
面の法線を計算したものから推測させることは出来るけど頂点は共有してるけど面としては無関係って場所は法線が狂う気がするんだけど
例えば顔の頂点と髪の頂点が重なるようなとことか顔の面と髪の面の法線から頂点法線を求めてしまって
モデル製作者の意図した頂点法線とはならないんじゃないかと
顔と髪でオブジェクトを分けてあればこんなこと起こらないけどそういう制限ないよね?
635デフォルトの名無しさん:2011/05/05(木) 15:24:46.50
メタセコスレへどうぞ
636デフォルトの名無しさん:2011/05/05(木) 18:12:33.98
そんな ビシッm9っ`Д´) アナタは鏡でもみてなさい
637デフォルトの名無しさん:2011/05/06(金) 13:51:11.69
オープンGLを始めるのは「いまどき」なんですか?
いまどきは何を始めるのがいまどきなんでしょうか。
638デフォルトの名無しさん:2011/05/06(金) 15:16:09.85
周りの目を気にして躊躇するなら止めたら?
お前様にとって今が「旬」なのだから好きに始めればいい
639デフォルトの名無しさん:2011/05/06(金) 16:39:01.11
openGLの売れてる本をアマゾンで買おうと思ったら
レビューでいまどき発言が多かったので急に萎えて止めました。
これからもそうします。
640デフォルトの名無しさん:2011/05/06(金) 17:03:32.08
はやくMacで4.1書けるようになんないかなぁ
GPUは対応してるってのがもどかしい
641デフォルトの名無しさん:2011/05/06(金) 17:30:32.03
>>639
そんなに最新がいいならDirextX11でもやれよ。
流行がどうとかこうとかで言語とライブラリを選ぶようなら何もできないから
プログラムなんかやらないほうがいい。多少選ぶことは必要だけど。
642デフォルトの名無しさん:2011/05/06(金) 17:31:02.50
×DirextX11
○DirectX11
643デフォルトの名無しさん:2011/05/06(金) 23:44:27.35
OpenGLで日本語をtruetypeフォントで描画するのは
どんなアプローチが多い(定石)ですか?
またいくつか選択肢があれば教えてください
644643 :2011/05/07(土) 00:34:37.46
すみません
wglUseFontBitmapsW
でやることにしました。
スルーしてください
645デフォルトの名無しさん:2011/05/07(土) 01:03:00.05
glGenListsと
wglUseFontBitmapsWで文字を描画できましたが、
この二つの関係がイマイチ理解できません。
glGenListsで生成し、
wglUseFontBitmapsWで作られるディスプレイリスト
とはいったい何なんでしょうか?
1文字分のビットマップ?はたまた命令郡?
wglUseFontBitmapsWは中で何をしているのでしょうか?
646デフォルトの名無しさん:2011/05/07(土) 01:30:34.92
MSDNに書いてあるようだが
http://msdn.microsoft.com/en-us/library/dd374392(v=vs.85).aspx
> Each display list consists of a single call to glBitmap.
647デフォルトの名無しさん:2011/05/07(土) 02:00:53.71
>>646
なるほど、glBitmapを読んで文字を描画する命令郡ですか。
ありがとうございました
648デフォルトの名無しさん:2011/05/07(土) 16:16:41.42
openglでのzバッファは
-1〜+1で
奥が+ですか?
右手座標で奥が-じゃないかと思っていて結果が逆転したので
質問です。
649デフォルトの名無しさん:2011/05/07(土) 21:11:09.00
OpenGL が右手座標系だとかいう話は gluPerspective 等の投影行列が作り出すものです
つまり投影行列が Z を反転しているんです
投影行列を通した座標系と投影行列を通さない生の座標系は違って見えます
Zバッファ自体 (ウィンドウ座標) は 0〜1 でプラスが奥です
正規化装置座標は -1〜+1 でプラスが奥です
投影行列が作り出す眼点座標はマイナスが奥です
650デフォルトの名無しさん:2011/05/08(日) 14:42:56.28
質問です。
OpenGLのバージョンは2.1.0なんですが、3.0から固定シェーダが無くなり
GLSLを書く必要があると聞きました。
自分は固定シェーダの表示で全然満足なんですが
将来性を考えるとGLSLを書く必要がありますか。

GLUTによる「手抜き」(ry等で紹介されているような
GLSLを書かずいきなり立方体を表示するようなコードは
3.0からは動かなくなるのでしょうか。
651デフォルトの名無しさん:2011/05/08(日) 16:16:37.18
固定機能も互換プロファイルとして残ってるよ
実装依存だから必ず動くわけではないけど

http://www.opengl.org/
ここの右側のThe OpenGL 4.1 Quick Reference Guide (PDF)で青文字になってる関数が互換プロファイル必要

趣味なら別に固定機能だけ使っててもいいし気にしなくていいよ
固定機能使えない環境に遭遇したり、ゲーム業界入りたいとか思ったら覚えたらいい
652デフォルトの名無しさん:2011/05/08(日) 17:40:19.76
ありがとう、かなり安心しました。
こんなにたくさん廃止されてしまうのか・・・
(逆に、GLSLでこれだけ書けるのか・・・)
653デフォルトの名無しさん:2011/05/08(日) 18:42:39.17
>>649
なるほどありがとうございました
654デフォルトの名無しさん:2011/05/08(日) 21:26:17.06
すみません、質問です。
以下のコードが、Linux環境では普通に動くのですが、
MacportsにてMesaをインストールしたものでコンパイルの上実行すると、
GLUの関数を用いたところでsegmentation faultになってしまいます。
おそらく非常に初歩的なところで詰まっていると思うのですが、
どこがまずいでしょうか。

#include <GL/osmesa.h>
#include <GL/glu.h>

int main()
{
const int width=100;
const int height=100;
const int u=3;
unsigned char* pix = new unsigned char[width*height*u];

OSMesaContext ctx = OSMesaCreateContext(GL_RGB,0);
OSMesaMakeCurrent(ctx,pix,GL_UNSIGNED_BYTE,width,height);

glLoadIdentity();
gluPerspective(30,1,1,-1);
//↑をコメントアウトすると動く
glFinish();
OSMesaDestroyContext(ctx);
}
655デフォルトの名無しさん:2011/05/08(日) 22:15:28.25
呼び出し規約違うんじゃね?
656デフォルトの名無しさん:2011/05/08(日) 23:19:22.56
zFar に -1 って指定できた?
657デフォルトの名無しさん:2011/05/09(月) 00:38:54.93
試したら-1できた
658654:2011/05/09(月) 01:11:12.40
このサンプルコードで試したところ、こちらは特に問題ありませんでした。
なぜでしょうか。

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

void hoge()
{
glLoadIdentity();
gluPerspective(30,1,3,1);
}

int main(int argc,char** argv)
{
const int width=100;
const int height=100;

glutInit(&argc,argv);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("");
glutDisplayFunc(hoge);
glutMainLoop();
}

なお、>>654のコンパイルオプションは
g++ -lOSMesa -lGLU hoge.cppおよびg++ -lOSMesa -lGL -lGLU hoge.cppで、
このサンプルはg++ -lGL -lGLU -lGLUTでコンパイルしてます。
MacPortsのライブラリが置いてある/opt/local/libはLIBRARY_PATHにもLD_LIBRARY_PATHにも含めてあります。

659654:2011/05/09(月) 01:11:52.55
>>655
呼び出し規約が違うとはどういう事でしょうか?
どのようにその可能性を確かめて、どのように対処すれば良いのでしょうか?
質問ばかりですみません。

>>656-657
私も試しましたが、そこが問題ではないようです。
というか、任意のGLUの関数(他にもgluLookAtなど)でsegmentation faultするようですね。
660デフォルトの名無しさん:2011/05/09(月) 01:52:06.80
>>659
呼び出し規約っていうのは関数を呼び出すときに引数をどう受け渡すかとかの決め事で
アセンブラレベルの話。引数を一番後ろからスタックに積むとか前から積むとか
引数はレジスタに設定するとかスタックを戻すのは呼び出し側か呼び出し先かとか色々ある

例えば>>655が呼び出し側でスタックを戻す呼び出し規約で関数を呼んで
ライブラリ側では呼び出し先がスタックを戻す規約を使ってた場合
スタックのズレが発生して内部データぐちゃぐちゃ→変なアドレスにreturnとかやばいことになる

俺はWindowsしかわからないから他のOSの事は知らないから
GL/osmesa.hとライブラリの組み合わせがおかしいんじゃないとしか言えない
661デフォルトの名無しさん:2011/05/09(月) 02:24:24.07
>>660
ありがとうございます。
一応全てOpenGL関連のライブラリは自分のMacでgccでコンパイルしているはずなのですが、
コンパイラが一致していればアセンブラレベルへの落とし方の違いが問題になるとは考えにくいですよね。

MacPortsスレで聞いたほうが良いですかね?
662デフォルトの名無しさん:2011/05/09(月) 02:30:14.38
自分もwindowsしかしらないのでコメントできないのだけど、
前スレの636-637で -lGLするとよくない的なこと書いてあるけど関係ない?
663デフォルトの名無しさん:2011/05/09(月) 03:02:33.09
>>662
ありがとうございます。
あの質問者、実は自分でしてw

それで、-lGLを付けたり消したりしたのですが、変わらないですねえ。
664デフォルトの名無しさん:2011/05/09(月) 03:04:46.91
Mac OS X なのにわざわざ Mesa を使ってるのか・・・
665デフォルトの名無しさん:2011/05/09(月) 03:09:06.07
>>664
一つには、ウィンドウに描画せずに直接画像に落としたいから。
そしてもう一つ、LinuxとMacでできるだけ共通のコードを使いたいから。
以上の理由からMesaを使っているのですが、もっと良い方法はあるでしょうか。
666デフォルトの名無しさん:2011/05/09(月) 03:16:13.78
>>665
ひとつ目はテクスチャに書いて glGetTexImage とか使えば良いんじゃないの
Mac OS X にもデフォルトで OpenGL は入ってるよ

二つ目は分からないけど Makefile とかで解決出来そうな気がするけど

外してたらゴメンね
667デフォルトの名無しさん:2011/05/09(月) 18:55:29.00
お手軽固定シェーダを廃止じゃなくてもっと増やしてほしいと思ったど素人は俺だけですか
668デフォルトの名無しさん:2011/05/09(月) 19:05:21.47
固定シェーダを増やすってどういう意味?
どういう形で増やすの?

誰が増やすの?
お手軽固定シェーダ廃止を決定する人=お手軽固定シェーダを増やす人?
669デフォルトの名無しさん:2011/05/09(月) 19:39:40.03
べつにシェーダー使ったからってすごい難しくなるわけじゃいし、
アセンブラ書けって言われてるわけでもないんだし覚えろよ。
だいたい板一枚表示するとかそういう簡単な作業は現状固定機能で
できるわけだし何が不満なんだ。
670デフォルトの名無しさん:2011/05/09(月) 19:59:50.58
ど素人が1行書き込んだだけなのに、なんでそんなピリピリしてんの?
671デフォルトの名無しさん:2011/05/09(月) 20:53:54.49
ここがム板だからさ!
672デフォルトの名無しさん:2011/05/09(月) 21:00:38.95
>>670
たとえOpenGLのど素人でも、質問だけはしっかり意味が通るようにしてほしい
673デフォルトの名無しさん:2011/05/09(月) 21:05:43.13
楽したいならゲームエンジンでも使えばいいじゃないか。
Unreal EngineとかUnityとか無料で使えるし。
綺麗な画面がすぐ作れるよ。
674ど素人:2011/05/09(月) 21:18:14.69
>すごい難しくなるわけじゃいし、
わかった。もう少し頑張る方針で。

今やっと車の一部が出来上がった所でござる
675デフォルトの名無しさん:2011/05/09(月) 22:23:49.00
うぜえ
676デフォルトの名無しさん:2011/05/10(火) 01:06:11.94
↑結局負けてやんのw
677デフォルトの名無しさん:2011/05/10(火) 21:14:39.94
アプリケーションの実行の時、
DirectXではエンドユーザーランタイム等の形で、
実行するための環境を整えなければなりませんが、
OpenGLの場合は、OSにデフォルトで入っている場合が多いと聞きますが、
実行環境を整えるのにどのようなことに気をつければいいのですか?
例えば、GLUTを使っていれば.DLLも同時配布しなければならない等
678デフォルトの名無しさん:2011/05/10(火) 22:02:08.21
Windowsの話であればopengl32.dllとglu32.dllはOSに既に入ってる
それ以外はないから必要であれば添付する
あとはグラボのドライバ更新するくらい
679デフォルトの名無しさん:2011/05/10(火) 22:29:19.36
>>678
なるほど、
ありがとうございます。
680デフォルトの名無しさん:2011/05/10(火) 22:31:08.95
グラボのドライバ更新しなくても最低限保証されるOpenGLの機能セットってどっかに資料まとまってたりしますか
681デフォルトの名無しさん:2011/05/10(火) 23:38:55.23
glBegin(GL_LINE_LOOP);
glVertex2f(-1.f, -1.f);
glVertex2f(1.f, -1.f);
glVertex2f(1.f, 1.f);
glVertex2f(-1.f, 1.f);
glEnd();
と書きましたが、左と下の枠は表示されません。
これは左下のピクセルが(-1,-1)よりも少し+の座標である?
と思い
glBegin(GL_POINTS);
glVertex2f(-1.f, -1.f);
glEnd();
と書きましたら点がでました。
OpenGLでは端っこのピクセルの座標は-1や1とは違うんですか?
ビューポートをいじくってはいないデフォルトの状態での話です。
682デフォルトの名無しさん:2011/05/11(水) 00:00:04.15
ピクセルの端が-1とかになるね。数学的な座標をピクセル系の座標に直そうとするのなら、頂点座標はそれぞれ+0.5px分、座標間の距離などは-1.0px分ずらさなければならない。
683デフォルトの名無しさん:2011/05/11(水) 00:05:57.30
赤本には0.25って書いてなかったっけ?
684デフォルトの名無しさん:2011/05/11(水) 00:15:49.51
ビューポートと射影行列の関係によるだろう。
685681 :2011/05/11(水) 00:37:55.95
つまりこんなふうに、
テクスチャ座標とおなじかんじで考えればいいってことですか?
ttp://iup.2ch-library.com/i/i0305761-1305041804.jpg
686デフォルトの名無しさん:2011/05/11(水) 00:53:41.28
テクスチャ座標とおなじかんじってのがわからんが
点と線は半ピクセルずらせとは言われてるな。
687681 :2011/05/11(水) 01:48:34.13
すみません変な言い回しでした
テクスチャでも例えば、正確には0,0が左上のピクセルではなくずれますよね
そういった意味で同じ感じという次第です
688デフォルトの名無しさん:2011/05/11(水) 09:17:25.75
XNAのSpriteBatchのシェーダが参考になるかと
ttp://create.msdn.com/ja-JP/education/catalog/utility/spritebatch_shader
689681 :2011/05/11(水) 16:15:42.13
>>688
読んでみてもイマイチよくわからなかったですが
とりあえずずらしているというのは分かりました。
まあ何とか今の理解でできそうなのでやってみます。
ありがとうございました。

ココですよね
position.xy -= 0.5;

// Viewport adjustment.
position.xy /= ViewportSize;
position.xy *= float2(2, -2);
position.xy -= float2(1, -1);
690デフォルトの名無しさん:2011/05/12(木) 15:22:36.10
OpenGLで雷とか炎みたいなエフェクトを描画してみたいんだけど、
参考になりそうな、サンプルソースとか
そういう系を詳しく解説してるサイトってないかな?

OpenGL 雷
OpenGL エフェクトとかでググってるんだが見つからない・・
691デフォルトの名無しさん:2011/05/12(木) 15:53:35.11
エフェクトのアルゴリズムてDirectXと同じなんだしDirectXのエフェクト参考にしたら?
そのほうが資料も多いし。
692デフォルトの名無しさん:2011/05/12(木) 19:28:32.20
fire とか effectとか 英語でググれば出てくるよ
693デフォルトの名無しさん:2011/05/12(木) 22:00:53.96
絵描きさんに綺麗な雷の絵を描いてもらって板ポリに貼る
694デフォルトの名無しさん:2011/05/12(木) 22:36:23.46
雷を細長い4角ポリゴンを繋げて表示するとして
ポリゴンをぼやっと光らせるにはどうしたらいい?
よくゲームでキャラの周りがぼやっと光ったりするみたいな感じで
695デフォルトの名無しさん:2011/05/12(木) 23:10:05.69
>>694
もともとそういうテクスチャ使うかブルーム使う。
雷なぼやけてるテクスチャ描いて加算合成すればいいんじゃないの。
696デフォルトの名無しさん:2011/05/13(金) 23:36:45.19
テクスチャに透過 png を貼り付けて mag_filter の linear した時って透過部分はどういう扱いになるんでしょうか?透過が考慮されていない気がします。単色のオブジェクトにエッジができてしまっている?回避方法ってありますか?
697デフォルトの名無しさん:2011/05/14(土) 00:16:45.76
よく覚えとらんがPremultiplied Alphaとかで解決するんじゃなかったっけ
698デフォルトの名無しさん:2011/05/14(土) 01:24:32.53
RとGとBとAは別々に補間されるから
Aが0の部分でRGBも0になるような画像は補間すると境界部分に黒が見えるってことじゃないでしょうか
Aが0の部分もRGBちゃんと色を保ってるような画像なら問題ないでしょう
Premultiplied alpha もおすすめ
699デフォルトの名無しさん:2011/05/14(土) 06:38:11.49
乗算済みアルファの話はいまだに良くわかんない・・・作り方からしてどうすればいいのやら
ひにけにブログとかいくつか読んだんだけど
700デフォルトの名無しさん:2011/05/14(土) 10:28:02.19
いわゆるアルファブレンディングは、ふつう、
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
の形で行うけど、これはつまり
dstRGB' = srcRGB * srcA + dstRGB * (1 - srcA)
という意味だね
乗算済みアルファは、この srcRGB * srcA の部分が事前に処理済みのものを言うんだ
srcRGB' = srcRGB * srcA
これを以下の形でアルファブレンディングするよ
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
dstRGB' = srcRGB' + dstRGB * (1 - srcA)
これだけだ
作り方といってもRGBそれぞれにあらかじめAを乗算しておくだけ
処理時間が許すならglTexImage2Dでテクスチャをロードする直前にやったって構わないし、
そんなところで時間食うのが嫌ならあらかじめ乗算済みのものをファイルとして保存しておけばいいよ
701デフォルトの名無しさん:2011/05/14(土) 11:32:33.70
>>700
ありがとう、なんか分かりやすい
なるほどロード時に変換するのでもとりあえず困らないよね
こんだけでバイリニアのサブピクセル処理がうまくいくってのは、計算が分かってもなんか不思議だなあ

ところで何か気をつけることあります?テクスチャ以外でも、たとえば頂点カラーの付け方が違うとか
702デフォルトの名無しさん:2011/05/14(土) 11:43:34.95
一緒に使うのなら頂点カラーも乗算済みにしておく必要があるね
703デフォルトの名無しさん:2011/05/14(土) 12:28:51.20
あーそうなのか。ライトは同じで問題ないよね?
乗算済みアルファの要点ってこんな感じ?

やり方
・テクスチャの各ピクセルをあらかじめ R*=A, G*=A, B*=A に変換しておく
・ブレンド関数は glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) にする

メリット
・バイリニア補間時に黒いフリンジが出ない
・描画がちょっと速い

デメリット
・頂点カラーや定数カラー、セカンダリカラー等も乗算済みアルファで設定する必要がある
・テクスチャは不可逆変換なので編集ワークフローへは戻せない(R/=A, G/=A, B/=A でも一部のRGB情報は失われる)
704デフォルトの名無しさん:2011/05/14(土) 14:21:32.91
ライトのアルファは使わないから問題ないよ
速いかどうかは知らない、ハードウェアのやることだし同じかもしれない、実環境で測って確かめてみて
俺的には元絵はPhotoshopかなんかでレイヤーとか使って作業してるだろうからpng化した時点で不可逆だと思うよ
あとはそんな感じだと思うよ
705デフォルトの名無しさん:2011/05/15(日) 03:58:03.18
>>697
>>698
ありがとう!
確かに透過色黒だったので適当な色にして試してみます!
それでもダメだった場合は premultiplied ぐぐります。
また質問するかもなのでその時は宜しくお願い致します。
706デフォルトの名無しさん:2011/05/15(日) 14:33:00.19
Windows上でOpenGL描画領域上にボタンとか置くのってどうやってんだべ。
GoogleEarthとかで出来てるからなんかやり方あるんだろうけど、何もせずに置くと描画のたびにボタンがチラついてまう。
707デフォルトの名無しさん:2011/05/15(日) 18:15:43.02
>>706
OpenGLのクライアント領域にボタンおいてもチラつくのは普通。
GEは描画領域とそれ以外の領域に分けてるからできてるんじゃない?使ってないからどの画面を指してるかわからないけど・・・
MFCの上に領域きめて描画とか、.NETでやるならOpenTK入れるとか。
708デフォルトの名無しさん:2011/05/16(月) 19:35:46.35
>707
右上の拡大縮小とか方位設定のコントロールの事ね。
http://nullpo.vip2ch.com/ga2473.png

ステンシルバッファで試してみるかあ・・・。
709デフォルトの名無しさん:2011/05/16(月) 20:52:15.08
>>708
GoogleEarth をインストールしてないから単なる予想だが、
これってボタン類も OpenGL で描画してるだけとちゃうの?

たとえば、Spy++ でちゃんとウィンドウ ハンドル取れる?
710デフォルトの名無しさん:2011/05/16(月) 22:51:57.08
自前のGUIやんけw
711デフォルトの名無しさん:2011/05/16(月) 23:38:48.73
OpenGLで2D描画
平面にマップチップを隙間なく敷き詰めたいんだけどウィンドウのサイズによって
隙間があきますどうすれば隙間なくマップチップを描画できますか?
712デフォルトの名無しさん:2011/05/17(火) 00:16:09.27
ビューポート
713デフォルトの名無しさん:2011/05/17(火) 04:40:51.56
>>708
それコントロールするUI自体がOpenGLで描画してると思うの。フォームでボタンとかじゃなくて。
714デフォルトの名無しさん:2011/05/18(水) 01:52:23.06
>713
イベント逐一拾って処理すればそれで出来るだろうけど、組み込みじゃあるまいしそんなスマートじゃないことしてるんかなあ?
OpenGL描画領域にボタンを置くと、表示がちらつくだけであって、ボタン自体が見えなくなったり、ボタンが押せなくなるわけじゃあない。

なので、UI領域の描画とOpenGLによる描画が衝突してるだけで、UI領域をOpenGLに描画させないようにすれば
なんとかなるんじゃないかなあ、と思ったんだよね。
715デフォルトの名無しさん:2011/05/18(水) 02:04:14.10
どう見ても普通のボタンじゃないだろ
716デフォルトの名無しさん:2011/05/18(水) 04:03:24.95
>UI領域の描画とOpenGLによる描画が衝突してるだけで、UI領域をOpenGLに描画させないようにすれば
これのほうがよっぽどスマートじゃないと思ったわけだが

そもそも一般的にGLやDirectXの描画領域にフォームのUI置いたりしない。
717デフォルトの名無しさん:2011/05/18(水) 07:10:23.90
OpenGL使うなら普通はUIもOpenGLで書くと思うんだが
718デフォルトの名無しさん:2011/05/18(水) 08:03:29.07
ためしにCreateWindow("BUTTON"で作ったボタンを上に乗っけてみたら、特にチラつかないけど( windows7 )
そういう話じゃない?
719デフォルトの名無しさん:2011/05/18(水) 14:34:18.12
それはXPDMとWDDMの差だな
720デフォルトの名無しさん:2011/05/18(水) 16:38:06.39
# 実際やるかどうかは別にして
例えばglutで
LRESULT CALLBACK testFunc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp)
{
switch(msg) {
case WM_LBUTTONUP:
break;
}
return CallWindowProc(WCDefButtonProc , hwnd , msg , wp , lp);
}
...
glutCreateWindow(WINDOWTITLE);
HWND hWnd = FindWindow(0,WINDOWTITLE);
HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
HWND hTESTButton = CreateWindow("BUTTON", "color",WS_CHILD | WS_VISIBLE,250,250, 50,24, hWnd,0, hInst, NULL);
WCDefButtonProc = (WNDPROC)GetWindowLong(hTESTButton , GWL_WNDPROC);
SetWindowLong(hTESTButton , GWL_WNDPROC , (LONG)testFunc);

みたいにしてみたらXPでもチラつかなかったけどダメかな
721デフォルトの名無しさん:2011/05/18(水) 21:38:29.16
あんな感じにオーナードローとかサブクラス化とかカスタマイズしまくるなら
自前制御の方がよっぽどスマートだと思うけど最近の人は考え方違うの?
722デフォルトの名無しさん:2011/05/18(水) 22:37:30.58
自分の場合は金とか時間とかその他モロモロで自前制御不可になることがよくある
723デフォルトの名無しさん:2011/05/19(木) 01:17:12.29
Googleアースがカスタマイズしたコントロールを使ってるだけであって、
>714がカスタマイズしたボタンを使いたいって話ではないでしょ。
724デフォルトの名無しさん:2011/05/21(土) 11:07:28.43
glOrthoしてZ座標固定でマップチップを敷き詰めたいけどずれるな・・
0.5とか足さないとダメ?
725デフォルトの名無しさん:2011/05/21(土) 16:24:55.99
0.375 かな。
726デフォルトの名無しさん:2011/05/21(土) 17:53:31.79
0.375ってこれか・・・
glTranslatef (0.375, 0.375, 0.00);

0b0.011?
英語読めなくて根拠わからん・・・
http://www.opengl.org/resources/faq/technical/transformations.htm
727デフォルトの名無しさん:2011/05/21(土) 18:31:31.17
0.5じゃ多い、でも0.25じゃ少ない。間を取って0.375だ!いまんとこ不具合はねーぜ!
っていってた希ガス
728デフォルトの名無しさん:2011/05/21(土) 19:50:18.36
d
そうなのか なんという・・
グラボのバグでずれたりしません様に
729デフォルトの名無しさん:2011/05/22(日) 03:12:19.23
案外ヒューリスティックなのな
730デフォルトの名無しさん:2011/05/25(水) 01:32:20.78
すみません
今シェーダーを使ってワンメッシュスキンアニメーションを表示させるプログラムを作ったのですが
パイプライン処理のみでやりたいのですが可能でしょうか?

glBeginからglEndの間でGL_MODELVIEWを変化させたいのですが出来ないようです.
普通はどうやっているのか,何かAPIがあれば教えてください

よろしくお願いします.
731デフォルトの名無しさん:2011/05/25(水) 01:49:17.90
行列パレットやスキニングでググる
732デフォルトの名無しさん:2011/05/25(水) 01:49:36.35
>>730
スキンメッシュアニメーションなんて固有の都合をやってくれるAPIなんて
当然ある訳無いってのと、個人の都合で書く処理だから普通は、なんて定石みたいな物も無いんだが、

例えば1例で言えば GLSL でattribute として必要な行列(ボーンとか)と、描画するそのサブセットの頂点分並べた
行列のインデクスでも渡して、VertexShaderで計算して、とかになるんじゃないの?

さもなきゃ変形しない面とする面を分けて、変形はしないけど回転する面群の分は、glMultMatrix で回転して
単純にVBOで描画、変形する面は頂点位置を計算して描画、みたいにするんじゃね

あくまで俺がやってる例で、ただの1例だけど
733デフォルトの名無しさん:2011/05/25(水) 01:55:15.06
>>731
頂点データを弄る感じでしょうか,やってみます.

>>732
>例えば1例で言えば GLSL でattribute として必要な行列(ボーンとか)と、描画するそのサブセットの頂点分並べた
>行列のインデクスでも渡して、VertexShaderで計算して、とかになるんじゃないの?
多分今やってるのがこれだと思います.

>さもなきゃ変形しない面とする面を分けて、変形はしないけど回転する面群の分は、glMultMatrix で回転して
>単純にVBOで描画、変形する面は頂点位置を計算して描画、みたいにするんじゃね
なるほど参考になりました.

ありがとうございました.
734デフォルトの名無しさん:2011/05/25(水) 03:01:34.27
>>732
スキニング用の固定機能APIはあるから
735デフォルトの名無しさん:2011/05/25(水) 03:03:58.00
>>734
良ければ詳しく教えてください
736デフォルトの名無しさん:2011/05/25(水) 08:52:36.87
ねーよ。OpenGL ESにはあるけどな。
使ったこと無いけどあれ動くの?
737デフォルトの名無しさん:2011/05/25(水) 09:04:31.37
>>734
どれ?
738デフォルトの名無しさん:2011/05/25(水) 09:44:44.41
glMatrixMode()でGL_MATRIX_PALETTE
ってやつはES専用なのかすまんかった
739デフォルトの名無しさん:2011/05/25(水) 15:16:27.40
頂点シェーダについて質問です。

uniform mat4 uBoneMatrix[];

GLES20.glUniformMatrix4fv(_uBoneMatrixHandle, 1, false, _testMatrix, 0);

private float[][] _testMatrix =
{
{1,0,0,0, 0,1,0,0, 0,0,1,0, 0,-100,0,1},
{1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1},
};

としたいのですが、glUniformMatrix4fvに配列(複数の行列)が渡せず、1行列のみ「_testMatrix[0]」などとしなければうまくいきません。

どうやれば配列のMatrixが扱えるでしょうか?

スマートフォンのAndroidでOpenGL ES 2.0です。
740デフォルトの名無しさん:2011/05/25(水) 22:24:09.58
[][16]
[2][]
[16][]
[][2]
どれかならいけると思う
どっちだっけな
741デフォルトの名無しさん:2011/05/25(水) 23:33:20.39
lineを重ねて描画しようとしたらチラツキが発生してしまいます。
lineはglPolygonOffsetがきかないようですが
どうすれば解決しますか?

少しずらすは、チラツキが無くなるところまでやろうとすると
結構ずらしているのがわかってしまいました。
742デフォルトの名無しさん:2011/05/26(木) 13:44:03.03
GL_POLYGON_OFFSET_LINEを有効にすればPolygonOffset効くようだけど?
だめならシェーダでちょっとずらせ
743デフォルトの名無しさん:2011/05/26(木) 14:32:25.09
>>742
それが効くのはポリゴンをラインモードで描画した時だけだと思う。
純粋なラインをglBegin(GL_LINE_STRIP)あたりで描画したときは効果ないはず。
http://www.opengl.org/resources/faq/technical/polygonoffset.htm

っていうかラインって本当にちらつくか???
何か勘違いしてないか。
744デフォルトの名無しさん:2011/05/26(木) 16:22:38.45
740さん、ありがとうございます。

どれも駄目みたいです。
745デフォルトの名無しさん:2011/05/26(木) 16:27:11.47
スマートフォンAndroidのOpenGL ES 2.0のJavaで2D描画するにはどうすればいいでしょうか?

OpenGL ES 1.1の拡張機能で「glDrawTexfOES」という関数があったのですが、
そういう感じで3Dの座標でなく、2Dの画面の座標で描画できないでしょうか?
746デフォルトの名無しさん:2011/05/26(木) 16:40:30.39
3角形を二つつなげて Z 形を作ります。
それらの頂点にたいしてテクスチャのUVをしていまします。
747デフォルトの名無しさん:2011/05/26(木) 18:35:13.64
|Z|<フォォォォ
748デフォルトの名無しさん:2011/05/26(木) 18:42:08.13
Ortho で奥行き固定にすればいい
749デフォルトの名無しさん:2011/05/26(木) 23:30:38.31
>>743
ちらつきますね。
色が違うとはっきり出ます。

仕方ないので現状は
2度書きの部分をlineWidthで太くしてごまかしてます。
750デフォルトの名無しさん:2011/05/26(木) 23:46:50.50
そもそも2本の直線が重なるのか?
動かさなければチラつかないし、動かしたら重なることはないと思うが。
どうもお前の言っていることは信用できない
751デフォルトの名無しさん:2011/05/26(木) 23:57:51.36
モニターが壊れてるんじゃね。古いテレビはよくチラつくからな
752デフォルトの名無しさん:2011/05/27(金) 00:19:22.01
>動かしたら重なることはないと思うが。
カメラの方を動かしてます。

信用できないってのが良くわかりませんが・・・。

753デフォルトの名無しさん:2011/05/27(金) 00:20:17.13
画面うp
754デフォルトの名無しさん:2011/05/27(金) 00:23:34.99
ソースupで
755デフォルトの名無しさん:2011/05/27(金) 00:27:02.07
ソースはいらないから、まず現象をキャプチャに丸書いて線引いて詳細に

756デフォルトの名無しさん:2011/05/27(金) 00:52:14.83
人気に嫉妬

glBegin( GL_LINES );
glColor3f( 1.0f,0.0f,0.0f );
glVertexi( 0,0,0);
glVertexi( 1,0,0);
glColor3f( 0.0f,1.0f,0.0f );
glVertexi( 0,0,0);
glVertexi( 1,0,0);
glEnd()
757デフォルトの名無しさん:2011/05/27(金) 00:57:46.63
あれじゃない?服と肌のポリゴンが極限に近接してるようなモデルを表示させた場合
GLFloatの精度で足りなくてというか各種誤差が原因でオブジェクトとかカメラ動かすと
服と肌のZが微妙な関係になって乳首が見えちゃうやつ
758デフォルトの名無しさん:2011/05/27(金) 01:06:11.49
服の下の頂点は不要データ
俺のモデルはCGソフト上では全裸があるが、自作アプリケーション向けに書き出す版では全部切除してる
お前にだけは乳首を見せないい
759デフォルトの名無しさん:2011/05/27(金) 05:34:31.38
>>752
同じ頂点からなる線を、同じ行列で変換すれば、たとえ丸め誤差があっても同じ位置になるはずだぞ。
ちらつく原因は何?
760デフォルトの名無しさん:2011/05/27(金) 18:17:55.56
>>745-746
OpenGL(固定機能)で2D描画するときって、まず
平行投影にして、原点が画面左上の角になるようにしたら
glRotatef( 90.0f, 1.0f, 0.0f, 0.0f );でY軸を逆さまにして、
そして三角形×2=四角形にテクスチャ貼って画像を描画
て感じが普通なんだろうか。
761デフォルトの名無しさん:2011/05/27(金) 19:07:06.35
そもそもカメラつかって座標変換しなくてええよ。
もうちょいプリミティブナ関数があったとおもたよ。

多分初心者向けのチュートリアルで2D座標を直接指定して3角形各サンプルあるっしょ。
あれをちょっと応用するだけで大丈夫。
762デフォルトの名無しさん:2011/05/27(金) 19:54:29.68
2D描画する時ってカメラ使わないけどな普通
それからひっくり返しもしない
763デフォルトの名無しさん:2011/05/27(金) 20:44:14.19
>>759
多分zfightingだと思います。
ポリゴンの上にエッジを描画するとちらつきますが
それはPolygonOffsetで回避できました。
764デフォルトの名無しさん:2011/05/27(金) 21:00:56.82
glColor3f(1,1,1);
glutWireTeapot(2);
glColor3f(1,0,0);
glutWireTeapot(2);
回転させようが、カメラを動かそうが、全くチラつきませんが
765デフォルトの名無しさん:2011/05/27(金) 21:24:55.00
ちらつくと主張してるのは1人だけなので
彼がソースを公開するかきちんと自分のやっていることを説明しないと話が進まない
766デフォルトの名無しさん:2011/05/27(金) 23:07:17.67
ディスプレイがブラウン管だとか、あるいは目の病気か
767デフォルトの名無しさん:2011/05/28(土) 19:20:38.03
glsl の VertexShader でスキニング処理をしてみようと思っています。

 uniform mat4 boneMatrices[ボーン数];

のようにして各行列を必要な分だけ送り込みたいのですが、
この行列の配列は、例えば 100個とか送り込んでも問題無いでしょうか
(n個が限界、みたいな既定はあるでしょうか)


768デフォルトの名無しさん:2011/05/28(土) 19:58:55.67
自分で試す気はないので教えてください。
769767:2011/05/28(土) 20:28:29.99
>>768 は別人です。既に試し中。 氏ねボケ
770デフォルトの名無しさん:2011/05/28(土) 20:41:19.61
最近のグラボはメモリ無限にあるから上限はないよ
771767:2011/05/28(土) 20:44:58.08
つまりメモリの量で物理的な上限があるから、
既定値でMAXいくつ、って訳じゃないって事ですね。

もうちょっと素直に言えよこの野郎。ありがとう。
772デフォルトの名無しさん:2011/05/28(土) 20:55:24.79
いいってことよ
773デフォルトの名無しさん:2011/05/29(日) 20:58:37.28
(1/3)
Android+NDKでOpenGLを使っています。
glDrawArraysで四角形を描画しているのですが、テクスチャを貼り付けた上で頂点カラーを変えるのは何か設定が必要なのでしょうか。

glColorPointer( 4, GL_FLOAT, 0, vertexColor ); // vertexColorに4頂点のRGBA(=floatが16個分)が設定済み
glEnableClientState( GL_COLOR_ARRAY );
774773:2011/05/29(日) 21:00:37.80
(2/3)
glEnable( GL_TEXTURE_2D ); を使用するとテクスチャは貼られても頂点カラーは変わらず
glDisable( GL_TEXTURE_2D ); を使用するとテクスチャは貼られないが頂点カラーは設定通り
ブレンドは
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
という感じで設定しています。
775773:2011/05/29(日) 21:02:39.89
(3/3)
テクスチャの有無で頂点カラーが反映されるかどうかが変わるのは
何か設定が抜けているものかと予想しているのですが、そもそも出来なかったりするのでしょうか。


(忍法帳がゴタゴタしてて、1レスにまとめられず分割で失礼しました)
776デフォルトの名無しさん:2011/05/29(日) 21:14:47.61
glTexEnv
つーかシェーダ使えよ
777773:2011/05/29(日) 21:36:11.58
>>776
ありがとうございます。
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
を入れてやることで期待通りのカラーで表示されました。
778デフォルトの名無しさん:2011/05/30(月) 09:56:55.86
GL_TEXTURE_ENV_MODEのデフォルトって元からGL_MODULATEじゃなかったっけ?
どこかでREPLACEに変えたのか?
779デフォルトの名無しさん:2011/05/30(月) 18:43:14.37
Androidだと挙動が怪しい
780デフォルトの名無しさん:2011/05/30(月) 20:37:53.88
OpenGLでsphereとcubeとか基本立体を自分で作ろうと思います。
解説が載っているようなサイトはあったりしますか?

検索したらGLUTとかがいっぱい引っかかって
イマイチいい感じのが見つかりませんでした。

よろしくおねがいします。
781デフォルトの名無しさん:2011/05/30(月) 21:06:35.30
>>780
自分で作るなら、まずは検索しないで作ってみれば
782デフォルトの名無しさん:2011/05/30(月) 21:21:24.54
>>780
http://bellard.org/TinyGL/
これとか参考になると思うよぉ〜
783デフォルトの名無しさん:2011/05/30(月) 22:49:02.20
>>782
ざっと見た感じ全体的にOpenGLの勉強に
やさしい構成になってますね。

ただプリミティブとかは余り記述されてなかったように思えます。
spin.cとかぐらいですかね・・・。

とりあえずもう少し読み進めてみます。
784デフォルトの名無しさん:2011/05/30(月) 23:00:08.75
座標さえ計算すれば直ぐできるだろ...
785デフォルトの名無しさん:2011/05/30(月) 23:03:03.19
立方体の座標も分からない小学生なんだよ。
786デフォルトの名無しさん:2011/05/30(月) 23:18:11.46
>>783
こんな事改め言うのもなんだけど、立方体や球は何で出来てるか、くらいは知ってるだろ?
頂点があって、それらで面を形成してるだけだ。

そして頂点には位置があり、面には向きなんかもあって、これらの組み合わせだろ?
そしていくつの頂点が集まったら最小の面になるか、四角形は三角形の組み合わせ、三角形から頂点一つ取ったら
線分にしかならない。 だから最小は三角形で、差し当たりそこに目星が付くだろ?

という事は、頂点は n個の配列からなり、そして 「どの頂点群をして、面とするか」 は、
なんらかの方法で伝えないといけないだろ? その方法はいくつかのアプローチがあるが、結局どの手段使っても
これらを伝えないと形状にならない事はわかるだろ? って、ここまでは、
実際に三次元CGとか目にしていて、そして cube や sphere を目にしているなら、

特に誰から教えてもらわなくても想像できるだろ? 後はこれらの仮定を実際に形にする関数群が分かれば良いだけ。
プリフィクス "gl" が付いた、なんちゃらプリミティブ、みたいな関数があるはずだと想像。 俺はすぐここまで想像した。
そして大抵の人は普通、そのくらい出来る。 人からのこぴぺじゃなくて頭働かせろ
787デフォルトの名無しさん:2011/05/30(月) 23:36:19.30
GL_TRIANGLESとかQUADSとかだったらどうにでもなるんだろうけど
多分、見本のプリミティブはGL_STRIPとかで描いてるんだろうなと思って
探してました。

自分でやろうとすると中々うまくいかなくて
考え方が間違ってるのかなと思い色々探してました。

自分でも何を聞こうとしているのかがあいまいで
質問の仕方が悪かったと思います。
すみません。
788デフォルトの名無しさん:2011/05/30(月) 23:58:14.93
おまいら、わかっちゃいねーな!
今巷でホットなのは球や立方体のようなシンプルなものから
ノイズ、フラクタル等の複雑な形状までGPUでRaymarchingでレンダリングする事だ!
もう頂点をちまちま指定してラスタライズするような古臭い方法なんて流行んねーんだよ。
ここでも読んでみんなで勉強しようぜ。
http://pouet.net/topic.php?which=7920&com=25&which=7920&com=25&page=1&x=24&y=7

Raymarchingを使えばこんなクールなプログラムをたったの4kバイトで作れちゃうんだぜ!
http://pouet.net/prod.php?which=56866
http://pouet.net/prod.php?which=52938
http://pouet.net/prod.php?which=55758
http://pouet.net/prod.php?which=50068
http://pouet.net/prod.php?which=51074


でも良い子の初心者はちゃんとラスタライザとしてのOpenGLを勉強しようね(´・ω・`)
789デフォルトの名無しさん:2011/05/31(火) 00:15:54.26
そういう事は自分で書いてから家
790デフォルトの名無しさん:2011/05/31(火) 07:33:02.63
1次レイしか計算しないならOpenGLでいいわ
レイトレなんてどうでもいいからハードウェア(リアルタイム)AOまだー?
あと点光源を10000個ぐらい処理できるハード作って
791デフォルトの名無しさん:2011/06/01(水) 04:05:59.82
今からOpenGLに入門するなら、前方互換コンテキストでやるべきですよね。
glBeginが許されるのは小学生までですよね。
固定機能でレンダリングしてるロートルなチュートリアルばかりで困る。
792デフォルトの名無しさん:2011/06/01(水) 07:25:02.69
チュートリアルなんて宛てにしないで、ヒントを集めてリファレンス辿って仮定の上で実験
その結果、さくっとVBOで実装テスト → 実装まで半日でいけました
793デフォルトの名無しさん:2011/06/01(水) 08:12:51.24
モダンなOpenGLの使い方ならこのチュートリアルが凄い。
まだ書きかけみたいだけど。
http://www.arcsynthesis.org/gltut/


794デフォルトの名無しさん:2011/06/01(水) 08:15:52.69
そんなわけで床井先生2011年度版OpenGL入門(アドバンス)頼むわ

795デフォルトの名無しさん:2011/06/01(水) 08:24:13.24
床井先生も「今風 OpenGL の使い方」っての書いてるじゃん。
796デフォルトの名無しさん:2011/06/01(水) 19:06:39.77
>>793
やっぱ固定機能なしだと、OpenGL入門が
リアルタイムCG技術入門みたいな内容になっちゃうんだな。
797デフォルトの名無しさん:2011/06/01(水) 19:09:00.39
個人的には無理にシェーダーで何でもやらずに
固定機能をもっと充実させて欲しい。
誰か俺にGPUの作り方を教えろ。
798デフォルトの名無しさん:2011/06/01(水) 19:21:18.94
真空管の作り方なら指南できるんだが……
799デフォルトの名無しさん:2011/06/01(水) 19:23:12.69
GPUの作り方がわかる頃には、全部プログラマブルシェーダでいいやって心境になるよ。
たぶん。
800デフォルトの名無しさん:2011/06/01(水) 19:50:19.70
VBOってアップデートなしの全てのグラボで対応してるの?
801デフォルトの名無しさん:2011/06/01(水) 19:56:41.64
>>800
VBOはOpenGL1.5で導入。GeForceFXとかRadeon9X00とかの時代。
相当古いマシンじゃない限り対応してると思う。
802デフォルトの名無しさん:2011/06/01(水) 20:17:57.45
OpenGL1.5じゃWindows標準インストールのDLLで対応してないな・・・
DLL添付めんどいから頂点配列でいいか・・・
803デフォルトの名無しさん:2011/06/01(水) 20:42:35.46
>>798
真空管をいっぱい繋げたら宇宙になるんだろ?
804デフォルトの名無しさん:2011/06/01(水) 22:42:15.28
どなたか、PBOとFBOとは何なのか、というかどういう場面で使うのかを、
三行で説明してくれませんか。
805デフォルトの名無しさん:2011/06/01(水) 23:12:50.20
なんちゃらバッファが多くて混乱するよな。
VBO, IBO, PBO, UBO, FBO, TBO, あとなんかあったっけ。
806デフォルトの名無しさん:2011/06/01(水) 23:30:22.19
>>804
http://www.opengl.org/documentation/specs/
を読めば
わかるよ。

>>805
バッファオブジェクト系は一つのバッファをVBO, IBO, PBO,(以下略)として使えるから
いろいろ面白い事ができるんだよね。
シェーダオブジェクト, プログラムオブジェクト, テクスチャオブジェクトとかのなんちゃらオブジェクトも加えるとさらに多くなるな。
でも慣れればなんとかなるレベルではないだろうか。
807デフォルトの名無しさん:2011/06/01(水) 23:55:03.34
>>805
Vertex Buffer Object?
Index Buffer Object?
Pixel Buffer Object?
Uniform Buffer Object?
Frame Buffer Object?
Texture Buffer Object?
でいいのかなぁ?
808デフォルトの名無しさん:2011/06/02(木) 11:13:48.76
どれも、「どの用途で使う、バッファか」 の違いでしかなくて、
どれも glGenBuffers で作れるからコード上は同じでは
809デフォルトの名無しさん:2011/06/02(木) 15:02:33.85
厳密に言うと FrameBuffer と RenderBuffer は専用のglGen*がある。
810デフォルトの名無しさん:2011/06/02(木) 18:01:11.07
今OpenGLに入門しているんですが、不安になってきました。
gluPerspectiveとかglLightとかを使うのは時代遅れのやりかたで、
全部(シェーダとかで)自分で計算するのが新しいやり方という理解でいいですか?
811デフォルトの名無しさん:2011/06/02(木) 18:28:20.41
>>810
まあそういうこと。
座標変換は、変換行列を自作してシェーダに入力して、シェーダで頂点位置と掛けて出力。
ライティングしたいなら、例えばPhong Shadingとかをシェーダで実装する。
計算式とかを学びながら一歩ずつやっていけばそんなに難しいことじゃないよ。
ちなみに、OpenGL3.xは互換プロファイルで過去の機能も使えるけど、DirectX10以降はこれやらないと何も表示できない。
812デフォルトの名無しさん:2011/06/02(木) 18:59:06.28
>>811
ありがとう。雰囲気がだいたい分かりました。
今さら古いやりかたを学ぶのは嫌なので新しい方法に切り替えて挑戦してみます。
813デフォルトの名無しさん:2011/06/02(木) 19:42:06.15
>>812
射影変換→ビュー変換→モデル変換→基本的ライティング→基本的テクスチャリング
の流れで1つずつ行列作ったりシェーダ書いたりして進んでいくと良いよ。
814デフォルトの名無しさん:2011/06/02(木) 20:26:33.06
Now Loading画面をマルチスレッドでやろうとしてるんだけど、
データ読み込みスレッドでデータをロードしたとしても、OpenGLはスレッドセーフじゃないから、
最終的に描画スレッドでglBufferDataとかを呼ばなきゃならないですよね。
815デフォルトの名無しさん:2011/06/02(木) 20:42:44.03
メインメモリからGPUメモリへの転送は一瞬だからそれで問題ないんじゃね。
816デフォルトの名無しさん:2011/06/02(木) 20:52:11.15
>>814
俺の方法(OpenGLでもDirectXでも)だけど、
起こしたスレッド側でデータロード
 → 予めスレッド側に渡しておいたコールバック関数で進捗報告 → カウントさせる

それはそれとして、timerfunc で呼び出す描画処理ルーチンは、↑のカウントをいつも見ている
それに従って単に描画。 こんな感じ
817デフォルトの名無しさん:2011/06/02(木) 21:33:20.90
読み込みスレッド→メインスレッドは同期キューでデータを受け渡して、
キューにデータが送られてきたらOpenGL命令でGPUへ転送ってのがシンプルな気がする。
だけどC/C++でやるのは手間かかるか。Java/C#/Pythonとかなら標準ライブラリに同期キューあるんだけど。
818デフォルトの名無しさん:2011/06/02(木) 21:37:37.31
>>817
>だけどC/C++でやるのは手間かかるか
全然。
俺はいつも boost::thread、boost::mutex 使うから楽勝。C#、Javaよりドシンプル
819デフォルトの名無しさん:2011/06/02(木) 21:54:56.88
同期キューってスレッドセーフなキューってことか。
教養ないから知らなかったわ。マルチスレッディング界では常識なのか。
820デフォルトの名無しさん:2011/06/02(木) 23:06:00.73
GLES2.0の本はあるのに、GL3.0の本がない。
821デフォルトの名無しさん:2011/06/02(木) 23:52:14.96
4.0の本もあるね
822デフォルトの名無しさん:2011/06/03(金) 00:48:21.17
4.0のは仕様書で、教育的な本じゃないよね。
823デフォルトの名無しさん:2011/06/03(金) 01:02:19.44
すまぬすまぬ
824デフォルトの名無しさん:2011/06/03(金) 01:56:19.05
いえいえ
825デフォルトの名無しさん:2011/06/03(金) 16:09:21.77
2D画像を全画面で読み込むときにOpenGLだと2のべき乗表示にする為
スマホが比率 横2/縦3に合わせると画像の収縮で画像が横長になった
り縦長になったりします。

この場合、もと画像の比率を調整して2のべき乗と近いサイズで作る
しか方法はないのでしょうか?

Androidスレで質問しましたが、こちらのほうがよさそうなので転記します。
826デフォルトの名無しさん:2011/06/03(金) 16:27:20.06
OpenGL 2.0 ESは non-power of 2 texture 使えないのか。
827825:2011/06/03(金) 16:30:05.44
>>826

端末ごとに使えたり使えなかったりすると困るので
使えても使わないです。
828デフォルトの名無しさん:2011/06/03(金) 16:36:25.76
>>827
>使えても使わないです
それならば

>もと画像の比率を調整して2のべき乗と近いサイズで作る
>しか方法はないのでしょうか?
この質問出ない気がするが

自前でbitmapデータをtransform するとか、予めそのような画像用意するしか無くね

829デフォルトの名無しさん:2011/06/03(金) 16:41:13.96
質問の意図がいまいちわからんのだが、
非正方形テクスチャが使えないなら、正方形のテクスチャ用意するしかないよ。
width' = int(2 ** Math.ceil(Math.log(width, 2)))
height' = int(2 ** Math.ceil(Math.log(height, 2)))
なサイズの画像の左上に元画像をいったん転写して描画。
830デフォルトの名無しさん:2011/06/03(金) 16:45:06.00
ああ、ES2.0は使わないという意味か。
831デフォルトの名無しさん:2011/06/03(金) 16:49:44.52
なまじ2の階乗サイズでないテクスチャーが使えるのが悪いよな。
男は黙って2の階乗。
832デフォルトの名無しさん:2011/06/03(金) 16:53:25.78
>男は黙って2の階乗
総画素4pixelで何を表現するの?
833デフォルトの名無しさん:2011/06/03(金) 16:58:30.96
まあ、いったん2のべき乗まで画像の余白を広げて、
適切なUV設定して描画するしかないわな。
834825:2011/06/03(金) 18:16:44.35
>>829

2のべき乗であれば正方形じゃなくても大丈夫ではない
でしょうか?

>>830
ES2.0対応の端末ばかりだとよいのですが・・。

>>833
今その方法で検討中です。
835825:2011/06/03(金) 18:19:44.74
>>829

なるほど!返答の意味がわかりました。
2のべき乗の画像を用意して転写して、端末から見える領域を
指定するということですね。
836829:2011/06/03(金) 18:29:47.79
>>835
混乱させてすまん。
"2のべき乗"と書くべきところをなぜか"正方形"と書いてしまったんだ。
837829:2011/06/03(金) 19:37:11.57
WebGLのことを、シーングラフを作って描画する程度のAPIだと思い込んでいた。
実際は、OpenGL ES2.0 のAPIを直接叩くものなんだね。こりゃ楽しめそうだ。
838デフォルトの名無しさん:2011/06/03(金) 19:56:42.79
WebGLは脆弱性がどうたらこうたらって。
あれ解決したのかな。
839デフォルトの名無しさん:2011/06/03(金) 23:31:34.26
JavaScriptでOpenGLとか何の冗談だと思う
840デフォルトの名無しさん:2011/06/03(金) 23:33:23.05
関数一覧表作ってみた (固定機能を除く)
http://sites.google.com/site/eamanonanahatimihona/openglfuncs
841デフォルトの名無しさん:2011/06/04(土) 00:33:14.85
>>840
種類別に分類するとなお良い。
842デフォルトの名無しさん:2011/06/04(土) 03:05:04.87
x-y平面にZ座標固定で2D描画した場合ポリゴンを最後にglBeginしたものが
一番手前にみえるようになると思ったんだんだけど最初に書いたものが手前になる気がする
そういうルールなんですか?
843デフォルトの名無しさん:2011/06/04(土) 03:16:31.49
>>842
Zテストの通過条件は glDepthFunc(func) で変更できる。
引数funcは、GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, GL_ALWAYS のどれか。

初期値はGL_LESSなので、既に描いてあるものよりもさらに手前じゃないとZテストを通過しない。
GL_LEQUAL (less and equal) にすれば同じZ値でも通過するので、お前さんが意図してた挙動になる。
844デフォルトの名無しさん:2011/06/04(土) 03:23:26.70
>>842
どっかでglEnable(GL_DEPTH_TEST)ってやってる気がする
DEPTH_TESTやめちゃえば最後優先になる
845デフォルトの名無しさん:2011/06/04(土) 03:23:27.54
寝ろ
846デフォルトの名無しさん:2011/06/04(土) 03:34:39.49
(^o^)/ オヤスミ-
847デフォルトの名無しさん:2011/06/04(土) 03:39:03.46
>>843
デプスなファンクもあったんだ・・・なるほど覚えておきます

>>844
エスパーきたこれ 3D描画やったときの初期化関数コピって入ってた・・・
848デフォルトの名無しさん:2011/06/04(土) 03:42:46.51
ファンクなデブス
849デフォルトの名無しさん:2011/06/04(土) 15:56:47.28
おぺんぐる楽しいお。
850デフォルトの名無しさん:2011/06/04(土) 17:22:08.88
>>840
これは非常に乙。
次スレ、テンプレに入れるべき。
851デフォルトの名無しさん:2011/06/04(土) 18:31:08.35
ttp://www.opengl.org/sdk/docs/man4/
と同じじゃないの?
852デフォルトの名無しさん:2011/06/04(土) 19:47:24.98
man-pagesからスクリプトで抽出しただけだよ。
サマリーが付いてると便利かなと思って。あと固定機能が邪魔だったから。
853デフォルトの名無しさん:2011/06/04(土) 20:33:38.59
ところで、最近はOpenGLにも3Dモデリングソフトで作成したデータ
を読み込む機能、あるいはそのようなライブラリが第3者によって
提供されているのでしょうか?DirectXのように。
854デフォルトの名無しさん:2011/06/04(土) 20:37:22.08
提供されてなければ作ればいい
855デフォルトの名無しさん:2011/06/04(土) 20:43:12.72
ちょっとまえに作ってた人がいなかったっけ? Androidのスレだっけ?
856デフォルトの名無しさん:2011/06/04(土) 21:12:12.91
んなもん無数にあるだろ。
857デフォルトの名無しさん:2011/06/04(土) 21:13:58.96
>>853
俺もそうだけど、大抵は自前で書いたのずっと使ってたりするんじゃないの?
特殊な用件でもなければ、書く内容は決まってる訳だし

ファイルフォーマットがそれぞれ各人の都合でバラバラで、
安直に 「これだけでおk」 みたいなのはあり得ないから、そんな訳でみんな自前で1度は書くと思う
858デフォルトの名無しさん:2011/06/04(土) 21:25:02.03
めんどくさがりの俺ですら自分で書いた
859デフォルトの名無しさん:2011/06/04(土) 21:32:50.66
>>853
そんな者あったら、その第三者の都合に沿った物しか作れないじゃん
860デフォルトの名無しさん:2011/06/04(土) 22:39:42.78
>>853
有名な規格としてはCOLLADAってのがある。MayaとかBlenderで吐ける。
俺は使ったことないので詳細は知らん。
http://codezine.jp/article/detail/843
861デフォルトの名無しさん:2011/06/04(土) 23:45:18.76
COLLADAは各種ソフトを連携させるための中間データという位置づけ。
最終的には効率のよい独自形式に変換したほうがいい。
862デフォルトの名無しさん:2011/06/05(日) 00:22:54.46
>最終的には効率のよい独自形式に変換したほうがいい
まさにこれ。
例えば DirectX だって、D3DXMESH とかデモ書く時くらいしか使わないのと同じこと
863デフォルトの名無しさん:2011/06/05(日) 06:46:56.24
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)をセットしたとき、
glDrawArrays (VBO) で描画するときにはちゃんとポリゴンがワイヤフレームで表示されるんだけど、
glDrawElements (VBO+IBO) で描画するときは一切何も表示されなくなる。

これって仕様? それともドライバのバグ? 誰か検証してくれるとうれしい。
864863:2011/06/05(日) 08:29:58.96
他のマシンで試したらちゃんと表示されたので、
ドライバかグラフィックボードの問題のようです。
865デフォルトの名無しさん:2011/06/05(日) 11:23:09.66
こっちでも普通に動いてる。
866デフォルトの名無しさん:2011/06/05(日) 12:26:10.71
新しい機能じゃあるまいし以前からある機能がグラボ・ドライバに影響されるとかまじやめて欲しい
867デフォルトの名無しさん:2011/06/05(日) 12:30:43.62
>>855
オレオレ。
OpenGL気に入らないからM3G作った。
LinuxとAndroidで動く。公開してるけどユーザーは(俺以外)居ない。
Android ABC 2011どうすべ。出すか出さないか...
868デフォルトの名無しさん:2011/06/05(日) 14:05:09.68
>>867
多分OpenGLerの半分は似たような事してんじゃね?
869デフォルトの名無しさん:2011/06/05(日) 14:27:47.07
M3Gは色々知識不要で作れるからな
870デフォルトの名無しさん:2011/06/05(日) 19:58:10.30
Android の OpenGL ES 2.0 で EGL_CONTEXT_LOST が起きたときの動作を確認したいのですが、
どのようにすれば簡単に EGL_CONTEXT_LOST を起こせるでしょうか?
複数の OpenGL アプリを同時動かしてもプロセスがキルされてメインメモリが先にが消えるのですが。
871デフォルトの名無しさん:2011/06/05(日) 23:19:39.63
スリープから起こすとかじゃだめか
872デフォルトの名無しさん:2011/06/06(月) 09:38:29.86
スリープから起こしても EGL_CONTEXT_LOST は発生しなくて、テクスチャや VBO は再読み込みせずに
そのまま使用できています。
873デフォルトの名無しさん:2011/06/06(月) 20:07:29.86
http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_VertexID.xml には
> Version Support
> Version 1.20 Y
> Version 1.30 Y
ってあるけど、仕様書には 1.3 以降と書いてあり、実際 1.2 では動かない。

公式サイトのドキュメントなのになんで間違うかな。
874デフォルトの名無しさん:2011/06/07(火) 01:05:13.53
テクスチャのuv座標が同じ設定でも貼り付けるxyz座標によってuv座標もずれる気がするんだけどそういうもの?
875デフォルトの名無しさん:2011/06/07(火) 01:13:37.04
気がするだけなら気のせいだろ
876デフォルトの名無しさん:2011/06/08(水) 00:14:21.41
あ、ずれる
877デフォルトの名無しさん:2011/06/08(水) 00:24:10.30
マッピングがUVじゃなかったりして
あるいは誤差か
878デフォルトの名無しさん:2011/06/08(水) 07:43:45.20
テクスチャにperspectiveかかってんじゃね。
879デフォルトの名無しさん:2011/06/08(水) 07:57:03.44
ソースも出さずにズレるだとかチラつくだとかいうのは全部釣り
880デフォルトの名無しさん:2011/06/08(水) 10:07:53.71
Android 2.1 (android-5) をターゲットとするとき NDK で拡張関数のアドレスを得るにはどのようにすればよ
いでしょうか?

"GL_OES_mapbuffer" に対応していることが分かっているときに glMapBufferOES のアドレスを得るために以下
のようにしたのですが NULL が返ってきました。これを呼び出すスレッドにはカレント EGL コンテキストが
設定されています。

void* handle = dlopen("/system/lib/libEGL.so", RTLD_LAZY);
PFNEGLGETPROCADDRESSPROC GetProcAddress = (PFNEGLGETPROCADDRESSPROC)dlsym(handle, "eglGetProcAddress");
PFNGLMAPBUFFEROESPROC MapBuffer = (PFNGLMAPBUFFEROESPROC)GetProcAddress("glMapBufferOES");
881デフォルトの名無しさん:2011/06/08(水) 23:01:07.33
二言目にはソースをという奴は
本当にOpenGLさわったことあんのか?って奴も多いけどなw
882デフォルトの名無しさん:2011/06/08(水) 23:38:20.67
そうだな。悪いのはお前のコードじゃなくてOpenGLだからな。
883デフォルトの名無しさん:2011/06/08(水) 23:51:44.50
>>882
ソースを。
884デフォルトの名無しさん:2011/06/09(木) 00:37:52.01
glViewport(0, 0, Window幅, Window高さ);
glOrtho(0, 固定幅, 0, 固定高さ, 0, 1);
で例えば赤と青の市松模様のテクスチャの青の部分を貼っといて
Windowのサイズをぱこぱこ変えるとサイズによって赤い部分が0.5ピクセルくらい表示されることあるね
885デフォルトの名無しさん:2011/06/09(木) 00:48:09.23
フィルタかかってるだけじゃね
886デフォルトの名無しさん:2011/06/09(木) 00:52:46.50
あぁあるね
0.5とかシフトしないと1ピクセルの線が綺麗に出なかったりする
887デフォルトの名無しさん:2011/06/09(木) 00:57:25.54
>>885
いやいやGL_NEARESTでなるん
888デフォルトの名無しさん:2011/06/09(木) 01:00:45.66
ちなみにDirectXでもなるよね
889デフォルトの名無しさん:2011/06/09(木) 01:10:25.47
>>884
0.375を入れろと紙(赤本)は言っている。
890デフォルトの名無しさん:2011/06/09(木) 08:57:49.77
ほんの200レス前でも話題になってるけど、
0.5って言う定数じゃなくて、ビューポートのサイズに合わせて計算するのが正しいんだろうね、MSの実装を見た感じだと。
891デフォルトの名無しさん:2011/06/09(木) 09:07:20.34
その辺は気にしたら負けだと思ってる
892デフォルトの名無しさん:2011/06/09(木) 22:06:55.29
シェーダーでピクセル座標、直接指示出来ないんだっけ?
893デフォルトの名無しさん:2011/06/09(木) 22:22:36.74
できない。テクスチャからピクセル座標指定してとってくるのは確かTexelFetchかなんかでできたけど。
894デフォルトの名無しさん:2011/06/10(金) 18:58:40.03
WindowsのAeroとかLinuxのcompiz/mutterとかは
どうやって綺麗にテクスチャ貼ってるんだろうか。
895デフォルトの名無しさん:2011/06/10(金) 20:50:56.29
CGソフトでUVを好きに指定して、結果を吐いて自分でロードするだけでは
896デフォルトの名無しさん:2011/06/10(金) 21:01:54.05
>>895
http://www.youtube.com/watch?v=E4Fbk52Mk1w
こういう奴のことを言った。ウインドウ一枚一枚がポリゴンに貼られたテクスチャになってる。
897デフォルトの名無しさん:2011/06/10(金) 21:13:52.71
>>896
ぐは。そういう事かスマン
それ、例えばWindowsなら現在のウィンドウのDCから
Bitmapイメージ取れるから、それをリアルタイムでテクスチャとして渡してるんだろうなって
普通に思った。 win32としてWindow領域のBitmapデータ
OpenGLとして動的変更テクスチャ。 そんな連携
898デフォルトの名無しさん:2011/06/10(金) 21:43:22.09
>>896
Windowsも、今はこうやってポリゴンにウインドウ貼って描画してるんだよね。
ここまで派手なエフェクトは実装されてないけど。
899デフォルトの名無しさん:2011/06/13(月) 02:33:39.44
質問です。
ラスタライザで perspective-correction するのにビュー座標系でのz座標の情報が必要になると思うのですが、
クリップ座標系のw座標を使っているという理解でOKですか?
900デフォルトの名無しさん:2011/06/13(月) 17:53:14.36
>>899
たしかそう。
Vertex Shaderの次でw除算されるけど、そのときに実はwの値を保持していて、
パースペクティブコレクションに利用する。んじゃなかったかな。
901デフォルトの名無しさん:2011/06/14(火) 21:15:07.16
Vertex Buffer Objectが、APIではGL_ARRAY_BUFFER。
なんで名前付けがこんなにいい加減なのか。
902デフォルトの名無しさん:2011/06/15(水) 08:36:45.32
そこに颯爽とVertexArrayObjectが登場!
混乱に拍車をかけるぜ
903デフォルトの名無しさん:2011/06/15(水) 08:39:27.18
OpenGLのネーミングセンスは脳みそにウジが湧いてるレベルだよな
本当にどうしようもない。
904デフォルトの名無しさん:2011/06/15(水) 08:45:24.40
>>901
とりあえずそれについて言うなら、単にそれ専用じゃないからじゃね
単に配列バッファを 「Vertex Buffer Objectとして」 使ってるだけだから
なので、>>901 についてだけなら、別にいい加減とは言えない。見方が違う
905デフォルトの名無しさん:2011/06/15(水) 10:06:26.87
VAOはわざと混乱を誘ってるとしか思えないネーミング。
DirectXとは比べたくないが、あっちは確かInputLayoutっていうまともな名前だし。
906デフォルトの名無しさん:2011/06/15(水) 10:50:07.47
慣れれば気にならない。
907デフォルトの名無しさん:2011/06/15(水) 14:26:05.29
VertexArrayObjectの名前は確かにひどいな。100%誤解を招く名前だろw
908デフォルトの名無しさん:2011/06/15(水) 22:10:45.66
ディスプレイリストの複数ID取得もカオスだぞ。
ポインタじゃねぇのかよ・・・。
909デフォルトの名無しさん:2011/06/16(木) 21:39:50.22
>>908
そういう用途は普通ポインタじゃなくてハンドル(ID)形式にするだろ
常識的に考えてww さもなきゃ P-Implポインタみたいにするだろうけど、そこまで冗長にする必要無いし

要はこういう実装

#define HANDLE unsigned int;

std::vector<なにか> g_list;

HANDLE glCreate(いろいろ) {
 // コードイメージ
 g_list.push_back(なにか(いろいろ));
 return (HANDLE)g_list.size()-1;
}

void glほげほげ(HANDLE id) {
 なにか *p = g_list[id];
 // 略
}
910デフォルトの名無しさん:2011/06/17(金) 01:30:55.69
>>909
多分論点はそこじゃないと思う。
911デフォルトの名無しさん:2011/06/17(金) 07:14:14.69
Openになる前のglからの仕様だし、古くさいのはしょうがない
912デフォルトの名無しさん:2011/06/18(土) 14:25:46.01
携帯端末のおかげでいきなり賑わっててワロタ
913デフォルトの名無しさん:2011/06/19(日) 10:05:14.86
いろんなところで使われるようになったね。

* Android (ES1.x, ES2.0)
* iPhone/iPad (ES1.x, ES2.0)
* PlayStation Vita (ES2.0)
* Nintendo 3DS (ES1.1+拡張)
* WebGL (ES2.0)
* Wii (OpenGL風API)
* Wii U (わからん)
914デフォルトの名無しさん:2011/06/19(日) 12:26:39.34
風でもよかったらDSやPSP,PS3も入れてやって
915デフォルトの名無しさん:2011/06/19(日) 13:23:50.91
WiiUはラデHD4xx0相当らしいし
OpenGL3.x+ATI&AMD独自拡張相当かと
916デフォルトの名無しさん:2011/06/19(日) 13:49:27.42
そろそろOpenGL ES 3.0とかが出てきても良い頃だな。
917デフォルトの名無しさん:2011/06/19(日) 19:16:41.37
最近ここがにぎわっていて嬉しい。この調子で行こうぜ
918デフォルトの名無しさん:2011/06/19(日) 21:42:20.74
こんな奴がいるからシラケるんだよな
919デフォルトの名無しさん:2011/06/19(日) 23:01:58.67
シラケていこうぜ!
920デフォルトの名無しさん:2011/06/19(日) 23:10:21.69
シ☆ラ☆ケ!
921デフォルトの名無しさん:2011/06/20(月) 14:34:51.84
未だに固定機能も需要あるんだし
同じOpenGLの古バージョンにしてほしくないような
922デフォルトの名無しさん:2011/06/20(月) 21:51:32.53
OpenGL ESや固定機能関係の話題が多いが
OpenGL3, 4あたりの話題が少ないような気がする。
そこらへんの機能を使っている人はちゃんとOpenGLの仕様書とか読んでいる人で
質問する事もないのかもしれないが。


923デフォルトの名無しさん:2011/06/20(月) 23:41:20.21
間とって1.1しようよ
924デフォルトの名無しさん:2011/06/21(火) 00:55:24.30
8thマダー?(・∀・)っ/凵⌒☆チンチン
925デフォルトの名無しさん:2011/06/21(火) 01:11:38.96
使っている人が居ないだけと断言できる。
どう考えてもOpenGL3や4をバリバリ使っている人がいるとは思えない。
OpenGLはこのまま衰退してく斜陽API
926デフォルトの名無しさん:2011/06/21(火) 01:21:10.67
OpenGLが衰退ってのはまずなくてESのおかげで伸びてる。
まぁPCのみに限るならそこまで伸びてないだろうけど。
ただ、DirectXにしろOpenGLにしろそろそろラスタライズベースの3DCGがあと数年でレイトレとかに代わられそうな気がするから、そうなれば激変すぎて新しいAPIの登場、
もしくはOpenCLとかに取り込まれたりするのかな。
927デフォルトの名無しさん:2011/06/21(火) 01:35:58.54
レイトレになったとしてもHWはともかくAPIがそんなに激変するとは思えないけどな。
せいぜい数十個単位で命令が増えるぐらいだろ。
928デフォルトの名無しさん:2011/06/21(火) 07:46:48.71
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20051006
このへんを参考に自作のプログラムにGLSLシェーダを実装したのですが、
外部ファイルであるシェーダを更新したときに、GLSLのシェーダも更新するにはどうすればよいですか?
プログラム自体を再起動させれば更新されますが・・・
929デフォルトの名無しさん:2011/06/21(火) 10:44:31.88
既存のシェーダーがいらないなら解放して、シェーダーをコンパイル・リンクしなおしてglUseProgramで切り替え。
930デフォルトの名無しさん:2011/06/21(火) 12:26:52.96
>>929
単に上のDeleteして元のプロセスを繰り返せばよかったのですね
ありがとうございました
931デフォルトの名無しさん:2011/06/23(木) 10:56:05.81
AndroidでOpenglのアプリケーションを作っています。

画面タッチイベントでどんどん画像を切り替える画面で
タッチをかなりの速度で行うと、画像の読込が追いつかないのか
テクスチャが表示されなかったりします。

マップオブジェクトでテクスチャIDの再利用などを行って
同じテクスチャを読ませないなどの工夫をしているのですが、
処理がバックグラウンドにいくとロード済テクスチャが消えたりするので
随時読み込むようにしています。

タッチイベントが続くと何度も読み込むので、読込速度を
早くする対応をしていますが、限界があります。

画像の質にこだわりたいのでこれ以上読込速度は改善できません。

その場合、タッチイベントが複数会発生した場合の
速度を下げてテクスチャを読み込む時間を確保してあげるのが
得策でしょうか?できれば一般的にどうしているかという点が聞きたいです。

932デフォルトの名無しさん:2011/06/23(木) 18:15:19.30
OpenGL の話じゃねーな。スレチ
933デフォルトの名無しさん:2011/06/23(木) 18:23:42.23
どうみてもOpenGLの話だろう。バカか
934デフォルトの名無しさん:2011/06/23(木) 18:56:42.36
一般的には間に合わなくなったらチョッと待ってね画面でアイコンがクルクル回ったりすんじゃね
935デフォルトの名無しさん:2011/06/23(木) 18:56:45.15
お前がそう思うんならそれで良いよ。
936デフォルトの名無しさん:2011/06/23(木) 18:57:55.75
アイコンクルクルとか正にOpenGLの話題。
937デフォルトの名無しさん:2011/06/23(木) 19:13:53.84
3Dデータ読み込むときって何のファイル形式使ってる?
やっぱファイル解析から始めないとダメ?
938デフォルトの名無しさん:2011/06/23(木) 19:37:56.12
メタセコイアのmqoのローダなら作った
939デフォルトの名無しさん:2011/06/23(木) 19:57:28.73
mqo読み込むのは作者が非推奨にしてるがな・・・
940デフォルトの名無しさん:2011/06/23(木) 20:02:56.32
自前でadd-in作って独自のフォーマットで出力を推奨だっけか
941デフォルトの名無しさん:2011/06/23(木) 20:17:16.58
blenderのマテリアル設定が個人的に簡単だから
メタセコでモデリング→blendで諸々設定にしてるんだけど
解析をわざわざ勉強してまでblend読み込みやった方が良いと思う?
942デフォルトの名無しさん:2011/06/23(木) 22:23:21.89
>>941
俺 Blender ユーザだけど、blend ファイルを直接読んでもメリット薄いから
普通に Python で書いた Exporter で欲しい情報吐かせてる。
言い方変えると自前フォーマットとも言うが。 内容はメッシュとボーンとマテリアルとテクスチャと、あとモーション
943デフォルトの名無しさん:2011/06/23(木) 22:50:05.77
>>942
あり
Pythonか……
やってみう
944デフォルトの名無しさん:2011/06/24(金) 01:00:06.74
プログラムでプロシージャルにモデル, テクスチャ, アニメーションデータを作れば
ファイル読み込みなんて面倒な事を考えなくて済むのに。
プログラミング好きなら、モデリングソフトと格闘するよりプロシージャルにやる方が楽しいのに。

趣味プログラムならそれでいいけど、実社会ではそうはいかないよね。
世知辛い世の中だよ・・・
945デフォルトの名無しさん:2011/06/24(金) 01:02:49.98
>>944
それ考えた事ある。テクスチャについてはレンガ模様をロジックで作った。
モデルに関しては、天球とかビル街の遠景は作るが、人体はロジック練ってる途中であと忘れてた
946デフォルトの名無しさん:2011/06/24(金) 01:40:02.30
商業用に満足なクオリティにはほど遠いからな。
趣味でいいなら随分前から研究はされている。
947デフォルトの名無しさん:2011/06/24(金) 09:33:52.93
シェーダーならPixarが20年前から実践してるな。
あそこはテクスチャーなどという軟派な事はしていない。
948デフォルトの名無しさん:2011/06/24(金) 19:07:40.01
ボカシとかゴミみたいな、本当にちょっとした
表現のテクスチャはプログラムで作っちゃうなあ。
こないだやった仕事でもプログラムでやっちゃった。
949938:2011/06/24(金) 19:29:14.42
自分は機能的にはobj形式で十分だけど、
メタセコ無料版はなぜかobj吐けないんだ・・・
で、わざわざ変換させるのも面倒だったのでmqoで読んでるorz
950デフォルトの名無しさん:2011/06/24(金) 20:10:26.58
5000くらい出してやれよ・・・
951デフォルトの名無しさん:2011/06/24(金) 21:46:15.60
もう十分稼いだんじゃないか?
952デフォルトの名無しさん:2011/06/24(金) 22:58:58.72
OpenGLをちょこちょこネットで調べて3Dをやり始めてます。

OpenGLプログラミングガイド買おうか悩んでるんですが
やっぱり英語版でも最新版無理して買ったほうがいいんですかね?
実際バージョン3〜4って必要なのかよくわかりません。
ただ古いと推奨されてない関数なんかもあるみたいで悩みます

ここで必読とされてるのは
プログラミングガイド 原著第5版
なんで最新の機能とかあんまり使われてる感じでもないんですが…
953デフォルトの名無しさん:2011/06/24(金) 23:40:35.13
こんな奴は買ってもどうせ読まないんだろ
954デフォルトの名無しさん:2011/06/24(金) 23:48:41.63
>>949
メタセコ無料版でモデリング → 3DAceでmqoをロード → そのまま objでもなんでも書き出し

これでおk。3DAce についてはググれ
955デフォルトの名無しさん:2011/06/24(金) 23:58:08.48
>>953
熟読はしないですね
辞書的な使い方をしたいと思ってます
私ぐらいのレベルならネットで調べれば十分かもしれませんが、
日本語の情報がネットでは少ないと感じたので
体系的な本が一冊あればと思いました
956デフォルトの名無しさん:2011/06/25(土) 00:00:19.37
俺は結局本買わなかったけど、持っていたい気持ちはわからないでもない
957デフォルトの名無しさん:2011/06/25(土) 00:16:14.83
>>596
たしかに持っていたい(買いたい)のも大きいですね

でも「もっと簡単な方法があるかもしれん」とか
「ネットで調べまわるより時間が節約できる」
とかも思っています

個人的にはバージョン2でも問題ないのかな思っていますが、
3Dプログラミングをバリバリやっている方は
どう思っているのか気になりました。


958デフォルトの名無しさん:2011/06/25(土) 00:20:02.34
学ぶのに使うなら最新じゃなくてもいいんじゃないかな
しかし慣れるとリファレンスとしては公式の関数リファレンスの方が便利だし読まなくなるのでまずは図書館とか探してみるのをおすすめする

GL2以前の古い機能は使わないようにしたいというなら、GLES2の情報を調べてみるのはどうだろう
GLES2の本も最近は多いだろうし古い関数は省かれてるから、デスクトップのOpenGLでも参考になる
959デフォルトの名無しさん:2011/06/25(土) 00:23:02.13
・大きな本屋が開いてる時間に買いにいけない。 ※いつも帰りが遅い為
・Amazonとかで取り寄せようにも、知りたいポイントが書かれているかどうかがわからない本は買えない
・週末まで待つくらいなら、夜中や昼飯時に調べて実験した方が早い
・いくつかの情報照らし合わせて実験して、ヘッダ覗いてテスト書いて…

結局買わなかった。 とりあえずやりたい事をさくっと実現出来てるのでOKだが、単純にリファレンスなら欲しいかもしれない
960デフォルトの名無しさん:2011/06/25(土) 00:30:06.89
>>958
ありがとうございます
すみません…公式の関数リファレンスとはネットの情報ってことでしょうか?

古い機能は使わないようにしたいというわけではありません。
ドライバ?グラフィックボード?なんかで今後ある程度サポートされるなら
別に古い機能でもいいと思っています
961デフォルトの名無しさん:2011/06/25(土) 00:36:45.69
うぜえ
962デフォルトの名無しさん:2011/06/25(土) 00:41:58.64
>>959
ネットで検索したら日本語でも十分ってことでしょうか?

私も今の時点では、やりたいことはできています
2枚重ねるような、なんちゃってオーバーレイもなんとかできました
ただ本当にこれでいいのかなって疑問が消えないだけなんです
でも買わなくてもある程度できそうですね
963デフォルトの名無しさん:2011/06/25(土) 00:55:15.60
>>962
十分かどうかはその人の要求次第だから聞かれてもなんとも言えない。
ただ、「本当にこれでいいのかって疑問が消えない」 感じは別に悪い感覚じゃないから、
それを晴らすために何か手に取るのは良い事じゃね

俺はとりあえず、BlenderからExportしたキャラクターをリアルタイムでアニメーションさせて
ウォークスルーの延長が出来れば良かっただけさ。 あとGLSLとか
964デフォルトの名無しさん:2011/06/25(土) 01:14:10.60
>>963
専門で3Dをやるわけではないので、要求は高くないです

学ぶんなら最新でなくてもいいという意見もあるので
高すぎるのがネックですが
OpenGLプログラミングガイド 原著第5版
を検討したいと思います

古本でも12000円ぐらいするのは
まだまだ需要があるんでしょうね…
965デフォルトの名無しさん:2011/06/25(土) 01:14:59.42
次スレ。
966デフォルトの名無しさん:2011/06/25(土) 01:21:45.19
正直俺はOpenGL勉強し始めた頃は日本語情報少ないとかあっても古い固定機能ばっかりって感じだったが、
色々試しつつ海外のフォーラムで質問したりとかしてるうちにある程度は使えるようになった。
中高生レベルの英語でもあればちゃんと推敲すれば海外のフォーラムでも答えてもらえる。
967デフォルトの名無しさん:2011/06/25(土) 01:46:52.39
>>966
やっぱり日本語情報少ないって感じるんですね
正直、3D興味なかったころでもDirectXとかOpenGLなんかは
よく目にしててよっぽど情報あるんだなと勘違いしてました

英語のサイトも見に行きますが
ソース見て雰囲気だけ分かった気になるのが
ちょっと怖いです…動けばいいんですけどね
968デフォルトの名無しさん:2011/06/25(土) 02:46:28.53
逆に考えると日本語のちゃんとしたOpenGLのサイトを作ればアフェリエイトで稼げるんじゃねーの?
ビジネスチャンス!!

>>964
3Dで何をやるのかな?
簡単に3Dなプログラムを作りたいという程度なら直接OpenGL使うより
OpenSceneGraphとかUDKとかの有名なライブラリ、ゲームエンジン等を使った方が楽だよ。
OpenGLはライブラリではなくて、
様々なGPUの機能を共通したインターフェースで扱えるようにするための仕様に過ぎない。
最新ハードの性能を最大限に引き出したクールな4k intro作りたいとかなら
OpenGLの仕様書(無料)をダウンロードして勉強すべし!
969デフォルトの名無しさん:2011/06/25(土) 09:10:23.24
お前頭いいな! 床井先生みたいに書籍にするという手もある。
OpenGLのサイトが増えるのは大歓迎。
970デフォルトの名無しさん:2011/06/25(土) 11:25:52.41
LinuxでOpenGLのコンテキストを作成するのにXを使わない方法は無いでしょうか?
やりたい事は3Dモデルをフレームバッファにレンダリングして画像として保存するだけ、画面上に表示は行いません
971デフォルトの名無しさん:2011/06/25(土) 11:34:31.56
>>970
CUI上でバックグラウンドレンダリングしたいって話?

OpenGLって、最終的にグラフィクスボードへ描画指示をする関数群と
その周辺の関数群になるわけだけど、そんな奴に対して、
「描画系の関数に描画させずに結果だけ欲しい」 って話にならないかそれ
…GLUT使わないでGL関数だけにしたら、行けるのかな? 確認しないとわからないが
972デフォルトの名無しさん:2011/06/25(土) 11:37:44.44
ちなみに、リアルタイムレンダラでない、既存の統合系3DCG製作ソフトとかは、
ソフトウェアで各種計算をして最終的に描画結果を得る訳で、
そっちのイメージを持ってるのだとすると、そもそもレイヤが違う。
OpenGLやDirectXが担当するのは、その手のソフトで言うなら編集作業の方の画面だから
973デフォルトの名無しさん:2011/06/25(土) 11:38:20.21
コンテクスト作れば簡単にできるだろ。お前は何を悩んでるんだ。
974970:2011/06/25(土) 11:46:01.99
>>971
>CUI上でバックグラウンドレンダリングしたいって話?
その通りです

>>973
そのコンテキストを作成する方法を教えて頂けますか?
今はglxCreateContextでコンテキストを作成しています
975デフォルトの名無しさん:2011/06/25(土) 14:30:04.46
mesa とか改造すればできるんかね。
976デフォルトの名無しさん:2011/06/25(土) 15:13:14.22
そこまですると、めさめさ大変になってしまうな
とか言って
977デフォルトの名無しさん:2011/06/25(土) 15:42:41.89
以前Mesaを弄ったときに、
新興OSでもMesaが使えるように任意のメモリ領域をカラーバッファとして使えるようにするオプションがあった気がする。
MesaのMakefileにそういうオプションの説明があったような気がする。

でもオフラインレンダリングしたいなら、オフラインレンダリング用のライブラリを探して使ったほうが
簡単に綺麗な画像が得られるんでないだろうか。(pov-rayとか?)
どうしてもOpenGLを使わないといけないというわけでないなら、そういうのも考えてみたら?
978970:2011/06/25(土) 16:43:25.76
>>977
なるほど
精度より速度が重要だったのでOpenGLを検討していましたが、
そういうライブラリも検討してみます

ところで >>973 のようなxglにもwglにも依存しないコンテキストは
簡単に作成出来るのでしょうか?
979デフォルトの名無しさん:2011/06/25(土) 17:44:11.83
wgl で pbuffer のコンテキストを使ったことあるが、pbuffer のコンテキストを作るためにウィンドウに結びついたコンテキストが必要になるから一時的に見えないウィンドウを作りました。
おそらくコマンドラインでもで動くと思います。
egl の場合はコンテキストとサーフェスが切り離されているのでウィンドウなしで pbuffer サーフェスを作成できます。
980デフォルトの名無しさん:2011/06/26(日) 04:05:36.63
>970 >977
これですな http://www.mesa3d.org/osmesa.html
glx 経由でなくても直接コンテキストを作れる
ハードウェアアクセラレートできるかどうかは知らん
981デフォルトの名無しさん:2011/06/26(日) 20:21:54.62
こういう手描きCG画像(エロ注意)をOpenGLで再現したいのですが、何をどうすれば良いか健闘がつきません。
http://www.caramel-box.com/products/uhourenka/eventcg.html
何をどうすればこういう画像を3Dで作れるでしょうか?
ラブプラスとかではない1ランク上の3D画像を模索しています。

982デフォルトの名無しさん:2011/06/26(日) 20:26:21.40
準備
・トゥーンシェーダをひと通り調べる
・余力があれば周辺の論文を読んでみる

実践
・3DCGソフトで試行錯誤して自分の理想のレンダリングを作る
・ブレイクダウンしてシェーダにする
983デフォルトの名無しさん:2011/06/26(日) 20:35:23.91
1ランク上を狙うなら茶時方式がよいかと
984デフォルトの名無しさん:2011/06/26(日) 20:35:26.11
でもお高いんでしょう?
985デフォルトの名無しさん:2011/06/26(日) 20:37:44.36
茶時方式ってなんぞ
986デフォルトの名無しさん:2011/06/26(日) 21:45:52.60
頂点数とエフェクトとCPUで頑張る。
一番重要なのはテクスチャーだと思うけど。
987デフォルトの名無しさん:2011/06/26(日) 22:09:47.66
ベイクしたテクスチャでいいならそれが一番楽
988デフォルトの名無しさん:2011/06/26(日) 23:22:52.54
そこでセンシティブトゥーン
989 忍法帖【Lv=3,xxxP】 :2011/06/27(月) 22:03:12.98
エロで技術革新が進むことは稀によくある
990デフォルトの名無しさん:2011/06/27(月) 22:07:39.41
次スレそろそろ立てんと落ちるんでないかい?
991デフォルトの名無しさん:2011/06/27(月) 22:12:14.78
992デフォルトの名無しさん:2011/06/27(月) 22:13:06.21
993デフォルトの名無しさん:2011/06/27(月) 22:13:32.52
994デフォルトの名無しさん:2011/06/27(月) 22:13:58.51
995デフォルトの名無しさん:2011/06/27(月) 22:14:21.39
996デフォルトの名無しさん:2011/06/27(月) 22:27:42.63
997デフォルトの名無しさん:2011/06/27(月) 22:34:27.01
Lv不足で立てられんっす
998デフォルトの名無しさん:2011/06/27(月) 22:36:24.80
999デフォルトの名無しさん:2011/06/27(月) 22:55:33.69
1000デフォルトの名無しさん:2011/06/27(月) 23:00:11.47
1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。