トップページ⇒tech
1001コメント308KB

OpenGLスレ Part20

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/09/17(火) 13:15:44.66
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在の最新バージョンは4.3
http://www.opengl.org/
http://www.opengl.org/wiki/Main_Page

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

== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe:    http://nehe.gamedev.net/
Tutorials for OpenGL 3.3 and later  http://www.opengl-tutorial.org/
Learning Modern 3D Graphics  Programming http://www.arcsynthesis.org/gltut/

== 前スレ ==
OpenGLスレ Part19
http://toro.2ch.net/test/read.cgi/tech/1354024560/
== 関連スレ ==
【O3D】HTML5用 3D API WebGL 【Canvas:3D】
http://toro.2ch.net/test/read.cgi/tech/1308761577/
OpenGL 2.0 専用スレ
http://toro.2ch.net/test/read.cgi/tech/1126268759/
0002デフォルトの名無しさん2013/09/17(火) 13:17:54.79
== 必読書 ==

-- CG入門 --
OpenGL以前の普遍的なCGの概念。
CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。
・コンピュータグラフィックス (CG-ARTS協会)
・ビジュアル情報処理 (CG-ARTS協会)
・ディジタル映像表現 (CG-ARTS協会)
・ゲーム制作者になるための3Dグラフィックス技術
・ビジュアルコンピューティング 3次元CGによる画像生成

-- 初心者用 --
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
・OpenGL ES 2.0 プログラミングガイド

-- 上級者用 --
・OpenGL Shading Language (橙本)
・Shader Xシリーズ
・GPU Gemsシリーズ
・GPU Proシリーズ
0003デフォルトの名無しさん2013/09/17(火) 13:18:43.46
== 必読書2 ==

-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム

-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門

-- 過去の書籍 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)

== チュートリアルサイト2 ==
OpenGL Step By Step:    http://ogldev.atspace.co.uk/
OpenGL Samples Pack:    http://ogl-samples.g-truc.net/
0004デフォルトの名無しさん2013/09/17(火) 15:52:50.14
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0005デフォルトの名無しさん2013/09/18(水) 07:04:41.87
あとfloat16を思い出してあげてください
0006デフォルトの名無しさん2013/09/18(水) 07:05:54.08
http://wgld.org/
0007デフォルトの名無しさん2013/09/20(金) 01:17:19.33
837 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 08:52:21.59
普通に職業グラフィックプログラマはいないのか?
VRAMにどう言う手順でメモリがとられ、サイズの変更ってどういう意味かを考えれば
そう言う発想にすら至らないだろ

glTexImage2Dでテクスチャサイズの変更なんて出来ない
そう言う発想する時点で低レベルを通り越して、GLやらDXを直接触るレベルに至ってないよ

838 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 09:06:01.93
例えば、新車を買ったと思え
で、マニュアルを全部熟読したと思え
で、その車で浜から海に突入したと思え

で、言い出してるんだ
マフラーから浸水してエンジン止まってるのに
仕様で車が海に入れないって決まっていればいいのですが…
マニュアル読んでも明記してなくって…

ってレベルだw
0008デフォルトの名無しさん2013/09/21(土) 14:38:05.65
glTexImage2Dは前のテクスチャ破棄して作り直してるんだから
テクスチャサイズの変更なんて無理でしょ?

使用するIDが一緒なら
使うだけユーザーに取っては変更ってなるだろうけど…

って話じゃない?
0009デフォルトの名無しさん2013/09/21(土) 14:53:09.60
それを世間ではサイズ変更のできるテクスチャ、つまりイミュータブルでないテクスチャと言うのだよ
0010デフォルトの名無しさん2013/09/21(土) 14:57:06.16
なお既存のテクスチャのサイズを変更するとメモリリークする等意味不明の供述をしており
0011デフォルトの名無しさん2013/09/21(土) 18:08:39.43
サイズを変更した訳ではないって事じゃね厳密には差し替えてると
0012デフォルトの名無しさん2013/09/21(土) 18:11:30.42
内部で何をするのかは実装依存だという話をしても、
延々と訳の分からない自説の妄想を垂れ流していたんだ。
0013デフォルトの名無しさん2013/09/21(土) 18:30:20.21
うざー
0014デフォルトの名無しさん2013/09/22(日) 11:38:26.02
真っ黒い画面しか出ない・・・鬱だしのう・・・
0015デフォルトの名無しさん2013/09/22(日) 13:28:35.09
うちは灰色だ前のソースに戻したょ
0016デフォルトの名無しさん2013/09/23(月) 09:14:33.49
ok
0017デフォルトの名無しさん2013/09/24(火) 15:23:46.17
http://3dcg.homeip.net/3d_hardware/3d_Hardware.php
0018デフォルトの名無しさん2013/09/24(火) 19:35:11.44
いつの記事だよw
0019デフォルトの名無しさん2013/09/26(木) 23:22:48.24
http://www.techspot.com/news/54134-amd-unveils-revolutionary-mantle-api-to-optimize-gpu-performance.html

OpenGLの後釜
0020デフォルトの名無しさん2013/09/28(土) 08:05:19.18
後釜は言い過ぎでしょ。
タブレット・スマホとかもあるわけだから。
開発効率面のこともあるし。
0021デフォルトの名無しさん2013/09/28(土) 11:32:53.32
というかこれDirectXじゃね
0022デフォルトの名無しさん2013/09/28(土) 12:17:55.73
DirectXよりももう少し下層らしいよ
0023デフォルトの名無しさん2013/09/28(土) 17:02:01.88
いまどきOpneGLってw

これからは、3DCGも画像処理もOpenCLだよ
GPUとCPUが連動する超並列演算で何でもできる時代
0024デフォルトの名無しさん2013/09/28(土) 17:34:43.51
バカはレスしなくていいよ。俺は無能が嫌いなんだ。
0025デフォルトの名無しさん2013/09/28(土) 17:57:56.77
OpenCLと連携すると何かいいことある?
0026デフォルトの名無しさん2013/09/28(土) 18:47:20.54
入出力を図示しやすい
0027デフォルトの名無しさん2013/09/28(土) 18:59:47.88
>>23
OpenCLが3DAPIだとでも思ってるのか?
0028デフォルトの名無しさん2013/09/28(土) 19:21:57.27
3dapiって要はフレームバッファを作れればいいんでしょ
0029デフォルトの名無しさん2013/09/28(土) 19:44:30.43
んなわけない
0030デフォルトの名無しさん2013/09/28(土) 19:49:35.97
http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL

WindowsだけではOpenGLのversion1しかサポートしていなくて
それより上のバージョンはカスタム・グラフィックス・ドライバをユーザーがインストール必要があるって?
それに加えて一部のドライバーは品質が低いとある

だからANGLEでの描画もサポートするとあるけど
そんな低品質だったり古かったりするドライバーってどこのだ?
0031デフォルトの名無しさん2013/09/28(土) 19:51:37.87
互換性とかいらないからOpenGL2を作って欲しい
UMAというかGPUとCPUでメモリ空間共用で。
Matleはそうなるのかしら
実は結構楽しみにしている
0032デフォルトの名無しさん2013/09/28(土) 19:53:04.54
OpenGLの処理って Reduction 的で、OpenCL でエミュレートすると無駄が多いんじゃないかね
0033デフォルトの名無しさん2013/09/28(土) 23:27:27.07
WebGL2.0を見据えてGLSLの勉強を1から始めたいのですが
どのWebサイトを参考にしたらいいのでしょうか?
一応スレたいのはチェックしましたが、改めてお願いします
0034デフォルトの名無しさん2013/09/29(日) 21:29:08.84
Webは見るだけ無駄
OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング-
0035デフォルトの名無しさん2013/09/29(日) 22:21:16.36
OpenGLのAPI勉強するならWebGL系のサイトが一番わかりやすい
0036デフォルトの名無しさん2013/09/29(日) 22:25:50.53
>>34
ES2とES3を学びたいのですがそれで大丈夫ですか?
0037デフォルトの名無しさん2013/09/29(日) 22:37:39.44
ESだったらスマホやタブレットでやってみたら?
もどきではない生きたES環境が今は簡単に手に入るのだし
0038デフォルトの名無しさん2013/10/01(火) 02:35:44.28
WebGL 1/2 は OpenGL ES 2/3 に対応してるので
そこを勉強したいんです
0039デフォルトの名無しさん2013/10/01(火) 06:07:12.79
OpenGLのAPI勉強するならWebGL系のサイトが一番わかりやすい
0040デフォルトの名無しさん2013/10/03(木) 17:59:57.91
Windows 95のCD-ROMに収録されていた3D“旗とりゲーム”の「Hover」が、WebGL採用でタッチ対応・マルチプレイヤー対応のWebゲームとして復活した。MicrosoftはIE 11でのプレイを推奨する。
http://www.itmedia.co.jp/news/articles/1310/03/news070.html
0041デフォルトの名無しさん2013/10/03(木) 18:44:49.09
懐かしいけどグラフィックもBGMも全然違うのな
0042デフォルトの名無しさん2013/10/03(木) 18:58:34.05
マインスイーパーも改悪されたよね
0043デフォルトの名無しさん2013/10/03(木) 20:40:48.88
>>41
「bambi」とタイプ
0044デフォルトの名無しさん2013/10/03(木) 20:41:53.12
http://www.hover.ie/#retro
0045デフォルトの名無しさん2013/10/04(金) 19:34:04.03
すげぇ。
これよ、これ。
0046デフォルトの名無しさん2013/10/04(金) 20:27:00.30
なつかしいけど
ルールも操縦方法も忘れたわ
0047デフォルトの名無しさん2013/10/11(金) 21:30:41.62
OpenGLで表示されるCGはどこかある一点に向かって収束しているのでしょうか?
その場合、その点の位置を求める方法はありますか?
0048デフォルトの名無しさん2013/10/11(金) 21:40:04.05
なかなか哲学的だな
0049デフォルトの名無しさん2013/10/11(金) 23:35:50.96
一点透視図法の事ならOpenGLでは使われない
平行投影と透視投影だけだから
自分でビュー行列をセットすれば出来るはずだけどやったこと無いからしらね
0050デフォルトの名無しさん2013/10/12(土) 00:00:18.45
消失点は存在するだろ。もちろん適当な平行線を与えた場合だが。
0051デフォルトの名無しさん2013/10/12(土) 04:11:22.11
敢えて言えば
「視点に収束してる」
0052デフォルトの名無しさん2013/10/12(土) 13:02:15.28
>>47
計算で求まるものはないと思うよ
消失点は、視覚に配置された物体の輪郭線から人間が感じ取るものだろ
現実でも、広い屋外なら地平線の無限遠ラインの中央に消失点を感じることが多いだろうけど
狭い屋内ならたいてい複数の消失点があるように感じると思われ
0053デフォルトの名無しさん2013/10/12(土) 13:35:19.97
計算で求まるに決まってるだろw

もちろん、上で書いたように、それにはモデルビュー行列とは別に
平行線を与える必要があるが。
0054デフォルトの名無しさん2013/10/12(土) 19:51:23.71
視野は広がるんだから収束するわけが無いだろう。
アホか。
0055デフォルトの名無しさん2013/10/12(土) 20:58:36.14
>>54
えっ!?
0056デフォルトの名無しさん2013/10/12(土) 23:17:28.43
>>54
ギャグかそれは
0057デフォルトの名無しさん2013/10/12(土) 23:47:52.72
>>54
消失点がない視覚世界を生きている人のお通りです。

大和絵みたいな光景の First Person View なんだろうか?
左脳偏重文化が全人類の中で突出している日本では有り得るかも。
0058デフォルトの名無しさん2013/10/13(日) 00:16:30.51
>>53
下のページ見て、この状態でカメラがバンク回転すると消失点はどう移動するか考えてみてくれ
http://www.fsinet.or.jp/~maoi/tousi.html
結局のところ消失点はどこにでもとれる、絵画で物のパースとるための単なる方便だと思うよ
0059デフォルトの名無しさん2013/10/13(日) 03:14:27.93
大和絵は時間軸も描き込まれてるからな
あなどれない
0060デフォルトの名無しさん2013/10/13(日) 07:38:38.41
>>58
モデルビュー行列とは別に「平行線が要る」って書いてるだろ。
53ちゃんと読めよ
0061デフォルトの名無しさん2013/10/13(日) 07:40:31.30
モデルビュー行列変えたら平行線一定でも消失点が移動するのは当然。
0062デフォルトの名無しさん2013/10/13(日) 08:52:49.70
お前らの作った地平線は、まさかとは思うが真横に伸びてるのか?
0063デフォルトの名無しさん2013/10/13(日) 20:46:57.25
地平線は曲がっているだろ。JK
0064デフォルトの名無しさん2013/10/13(日) 20:53:01.21
地表をきちんと球体にしていれば勝手に見えなくなるんだが、
その程度の処理すらしてない奴らばかりなのか?
0065デフォルトの名無しさん2013/10/13(日) 22:00:39.29
キューブマップに地平線とか水平線とか書いて、
視点を囲むように配置してみたのだけど、
地面を表現する平面ポリゴンとのマッチングに違和感感じてる。
垂直方向に大きく視点移動したりするのだが、
視点に合わせてキューブマップを移動させても違和感。
基本的なことだと思うのだけど、どうやればいいの?
0066デフォルトの名無しさん2013/10/13(日) 22:09:20.56
距離に応じてシェーダで曲げればいいだけ
0067デフォルトの名無しさん2013/10/13(日) 22:14:09.11
高度0mに人間を立たせると、たった3km前後が地平線になるんだぜ。
0068デフォルトの名無しさん2013/10/13(日) 22:18:11.28
なんとちっぽけな存在なんだ
0069デフォルトの名無しさん2013/10/14(月) 06:59:33.50
プログラマーなら当然トンネル効果と相対性理論をも考慮してレンダリングするよな
0070デフォルトの名無しさん2013/10/14(月) 09:28:56.77
しない
0071デフォルトの名無しさん2013/10/14(月) 10:49:43.04
>>69
たとえば?
0072デフォルトの名無しさん2013/10/14(月) 10:53:29.77
カメラが光速近くで移動するときは色が赤方偏移起こすだろ
あと手前にポリゴンがあってもトンネル効果で奥側のポリゴンが見えるかも知れん、量子的確率的に
0073デフォルトの名無しさん2013/10/14(月) 10:57:13.46
自動テストと目視テストでは、結果が違うとか
0074デフォルトの名無しさん2013/10/14(月) 11:23:00.24
>>72
カメラが高速近くで移動するとしてさ

たった1秒間で30万kmちかく移動してしまうんだろ
たとえばF-ZERO FX くらいのレースゲームをそれで作るとして、
どれくらいの量のポリゴンをメモリに入れておかないといけないの?
ちょっと見積もってよ


> 量子的確率的に

その確率は年末ジャンボ1等に当たるより低いんだろ
大抵の人には見えんのじゃないか?
0075デフォルトの名無しさん2013/10/14(月) 11:25:34.97
そもそも 60fps 出すのにヒーヒー言ってるレベルだからな
光速で動くのをとらえようとしたら 何 fps の性能が必要なんだろ
0076デフォルトの名無しさん2013/10/14(月) 11:31:30.97
速度とポリゴン数は関係ないだろ
そもそも仮想世界の相対性理論なんだ、光速が秒速30万kmを仮定しなくてもいい、単位系の問題

>大抵の人には見えない
その通りだな、まあ>>69は量子力学と言う言葉は知らず、トンネル効果という言葉だけ知ってたんだろうな
0077デフォルトの名無しさん2013/10/14(月) 12:43:46.94
ゲームの世界は現実と異なる物理法則が働くのでそのような現象は起きない、と開き直るのはダメ?
0078デフォルトの名無しさん2013/10/14(月) 12:45:22.83
どうでもいいことでいちいち他人にお伺いを立てるな。
スレの住人はてめえの母ちゃんじゃねえんだよ。
0079デフォルトの名無しさん2013/10/14(月) 12:56:31.45
>>77
それえもいいけど
100%忠実なシミュレーションモデル構築するよりも
速度優先で疑似処理した方がスムースに受け入れられる場合も多い
0080デフォルトの名無しさん2013/10/14(月) 13:07:19.71
>>76
> 速度とポリゴン数は関係ないだろ

関係あるよ。

たとえば町や山や川などが入る30万km四方の空間をポリゴンで表現している時、
普通ならその空間内のカメラが置かれたごく小規模の部分空間のポリゴンだけメモリに入れて、
その部分空間からカメラが出そうになったら隣の部分空間をメモリに入れて、
というように処理できる。

でもそれは空間の広さに比べて移動スピードが遅いからできるテクニックであって、
1秒間に橋から端まで移動してしまうスピードなら使えんと思うぞ。
つまり初めから空間全体のポリゴンをメモリに入れて置かなければ処理が間に合わない。

ちょうど橋から端まで突っ切ってしまうのならまだ誤魔化しようもあるが、
途中で止まったりスピードが変わったりすると誤魔化すことも難しくなるし。

> そもそも仮想世界の相対性理論なんだ、光速が秒速30万kmを仮定しなくてもいい、単位系の問題

光速がどれくらいの速度だと仮定したの仮想世界の話をしてるんだ?

>>69 は科学者ならとかじゃなくてプログラマならと言ってるんだから、
そう特殊なら話をしているわけではないと思うが
0081デフォルトの名無しさん2013/10/14(月) 13:35:16.48
移動せずにパンしても同じことじゃん。
0082デフォルトの名無しさん2013/10/14(月) 14:54:53.23
LOD次第でしょ
0083デフォルトの名無しさん2013/10/14(月) 15:43:34.08
>>80
アホだな、数学ができてない
空間のスケールとポリゴンの密度はプログラマが任意に決定出来るパラメータだろ?
好きなように設定ですればよい
それこそ>>81でもいいし、>>82と言い換えることも出来る
光の速度も任意に決定出来るパラメータに過ぎない、仮想世界なんだから
0084デフォルトの名無しさん2013/10/14(月) 15:48:59.72
>>74って、お題を出してるんじゃね
・1秒間で30万kmちかく移動する
・F-ZERO FX くらいのレースゲームをそれで作る

なんていうか、>>76の言いたいことはもっとも、
というかそもそも最初の冗談に真面目に付き合うのもどうかと思うが、
それはそれとして、>>76はお題を無視したレスじゃね
とちょっと思ったりなんかして・・・
このお題は俺には無理というのなら、べつにレスしなきゃいいんだし
0085デフォルトの名無しさん2013/10/14(月) 15:53:24.37
>>84
ならお題として不足
空間あたりのポリゴン数を減らせば(空間のスケールを任意に上げれば)
いくらでもメモリに収めることは可能
といってるのがわからんか?

コレがわからないなら、例えば銀河を表すCGを作ろう、となった時に
銀河にはいくつの星があるんだ、メモリ足りないだろ、従って銀河のCGを作るのは無理
といってるのと同じ
0086842013/10/14(月) 15:57:08.43
>>85
ごめん、俺のせいで不快にさせた
謝る

もうこの馬鹿げた話は無しにしないか
そもそも OpenGL とほとんど関係ないだろうし
0087デフォルトの名無しさん2013/10/14(月) 16:26:16.32
馬鹿げた話を真面目に話す事ができるのも掲示板のいい所だ
適度であれば、の話だが
0088デフォルトの名無しさん2013/10/14(月) 16:31:51.51
>町や山や川などが入る30万km四方の空間

わろた
0089デフォルトの名無しさん2013/10/16(水) 05:20:59.96
標準理論でもまだ足りないし無限に広いメモリなんてのもない
ひたすらに完全シミュレートなんてを求めてもしかたない
0090デフォルトの名無しさん2013/10/16(水) 08:28:31.28
問題点を言い訳にして結局ゲーム作れないタイプがいる
0091デフォルトの名無しさん2013/10/16(水) 08:55:49.73
あーそれ俺だわ
基本押さえず応用やって、問題点見つけても回避する力がない
0092デフォルトの名無しさん2013/10/19(土) 12:26:30.03
何か変わったの?

Updates to the OpenGL API 4.4 and OpenGL Shading Language 4.40 - opengl.org news
http://www.opengl.org/news/permalink/updates-to-the-opengl-api-4.4-and-opengl-shading-language-4.40/
0093デフォルトの名無しさん2013/10/21(月) 18:22:21.33
glDrawElementsで指定した頂点色全てにさらにalphaをかける方法ってありますか?
具体的にはglDrawElementsでレンダリングするモデルにモデルデータとは別にalphaを掛ける効果を得たいです
0094デフォルトの名無しさん2013/10/21(月) 22:26:03.14
alpha用にもっかいレンダする
0095デフォルトの名無しさん2013/10/21(月) 22:44:08.64
頂点に対して何かするなら、頂点シェーダで好きなように定数を挟んで計算すればいいだけの話。
0096デフォルトの名無しさん2013/10/22(火) 00:38:30.63
alphaの掛かったテクスチャを貼る
0097デフォルトの名無しさん2013/10/25(金) 06:33:56.89
>>90
耳が痛いわ
0098デフォルトの名無しさん2013/10/25(金) 19:46:02.90
MacでOpenGL使ってたんだがMavericksにしたら動作重くなった…
一緒にアップグレードしたXcordのせいか…?
0099デフォルトの名無しさん2013/10/25(金) 22:26:15.22
codeのスペルくらい覚えようぜ
0100デフォルトの名無しさん2013/10/26(土) 09:50:00.04
AndroidアプリでカラーピッカーをOpenGLを使って作った
んですが、正直OpenGLの知識は皆無で、ネットのいろんなサイト
を参考にして作リました。
で、皆さんは、やっぱり本を2~3冊は買って勉強
してるんでしょうか。
それとも自分みたいなもんは、ネットで勉強してから良本
を買ったほうが良いのでしょうか。
アドバイスをお願い致します。
0101デフォルトの名無しさん2013/10/26(土) 10:49:30.97
みんな一か月やそこらでエキスパートになったわけじゃねーよ。
本を買う金がもったいないなら、図書館で読めばいい。
そして一番重要なのは、ネットや本の知識よりも、実際に何時間手を動かしたかということ。
あとはできれば英語に抵抗がないといい。答えの多くは海外のフォーラムにある。
0102デフォルトの名無しさん2013/10/26(土) 12:49:41.88
本なんて SuperBible があれば、後はネット情報で充分。
0103デフォルトの名無しさん2013/10/27(日) 00:39:26.69
OpenGLを使った地図描画エンジンの作り方
http://codezine.jp/article/detail/7424
0104デフォルトの名無しさん2013/10/27(日) 13:07:44.30
projecion行列でのnear値と、modelview行列での視点位置の関係を教えてください。

デフォルトでは視点は0.0, 0.0, 0.0にあり、projection行列のnearを1.0にした場合、
z≦-1.0のポリゴンが表示されるのだと思っていました。
ところが、実際にはz=0.0の画像が原寸で表示されています。
※正射影になっているわけではありません。

そこで、「デフォルトでの視点位置は0.0, 0.0, 1.0にある(したがって、z≦-(near+1.0)のポリゴンが表示される)のだろうか」と思ったのですが、
nearと視点のz値を同じ値だけ変えると、また違う表示になってしまいます。

「z=0.0の位置にあるポリゴンを原寸で表示する(projectionのleft, rightと同じ幅を持つポリゴンが、ちょうど画面いっぱいに表示される)」
状態を保ちつつ画角を変えたいのですが、どのように計算すればいいのでしょうか。
よろしくお願いします。
0105デフォルトの名無しさん2013/10/27(日) 13:43:13.85
視野角と画面サイズがあれば、どれだけカメラを離せば一致するのか計算で出せるだろ。
もし式がぱっと思う浮かばないような馬鹿なら、高一からやり直せ。
0106デフォルトの名無しさん2013/10/27(日) 13:52:25.10
glFrustumだって予想は付くけど射影変換の種類くらい書こう
そしたら↓なんか不要だし
>※正射影になっているわけではありません。

で、本題だけど多分glMatrixMode(GL_MODELVIEW);のあとにglFrustumしてるとかそんなとこじゃないの?
0107デフォルトの名無しさん2013/10/27(日) 14:27:22.48
ちょっとお尋ねしたいんですが、行列の転置ってどういう時に使うんでしょうか?
ベクトルの内積は、向きを判断したい時とか、外積は、法線を求めたい時とか、大体理解できたんですが、
行列の転置の意図がよくわかりません。
OpenGLのサンプルコード読んでる時に、たまに行列を転置するコードが出てきて、そんたんびに、
何してんのこれ ( ゚д゚)ポカーン となります。誰かエロい人教えてくだしあ
0108デフォルトの名無しさん2013/10/27(日) 14:37:01.45
つ ttp://www.google.co.jp/search?q=%E8%BB%A2%E7%BD%AE%E8%A1%8C%E5%88%97+%E5%BF%9C%E7%94%A8
0109デフォルトの名無しさん2013/10/27(日) 14:40:19.30
回転行列の逆行列を用いると逆回転が可能になる
回転行列の場合は逆行列は転置行列と等価になる
一般的に逆行列を求めるのにはコストが掛かるが
転置行列についてはコストはほとんど無視できる
0110デフォルトの名無しさん2013/10/27(日) 15:03:42.27
>>108-109
あぁ! 簡易的に回転行列の逆行列を求めてたんですね
目鱗です! ありがとうございました!
0111デフォルトの名無しさん2013/10/27(日) 15:09:03.22
受験を経験する高校生以上ならみんな知ってるけどな
0112デフォルトの名無しさん2013/10/27(日) 17:11:50.61
確かにそこらへん習った記憶はあるけど、もう15年以上も前のことなんで忘れてましたわ
0113デフォルトの名無しさん2013/10/27(日) 17:37:18.82
エー視野角うんぬんなんて習ったか?テキトーに数値入れてそれっぽく見えたら桶にしてる
0114デフォルトの名無しさん2013/10/27(日) 18:09:51.08
クォータニオンは高校生でも理解可能
0115デフォルトの名無しさん2013/10/27(日) 18:15:12.80
視野角なんて三角関数で角度と辺の長さを求め方が分かっていたら、
三角形がイメージできていればいくらだって応用が利くし、
視錐台なんて、そこに二本の線を入れるだけの話だ。

習ったことが実用出来ないというのは、つまり適性がないんだよ。
0116デフォルトの名無しさん2013/10/27(日) 18:24:40.97
クォータニオンって3次元でサイクロイド描いてる感覚だな
0117デフォルトの名無しさん2013/10/27(日) 18:34:15.39
あの、シンバルでロックする奴か
0118デフォルトの名無しさん2013/10/27(日) 19:26:54.07
ロックしない方だよ
0119デフォルトの名無しさん2013/10/27(日) 19:38:26.26
手は毎日動かしてるんだが
01201042013/10/27(日) 20:13:15.05
式自体は理解しています。計算どおりの表示にならないので質問しています。

・視点を初期位置から動かしていない
・nearが1.0なのに、z=0.0のポリゴンが表示されている。
というのがなぜなのかよくわからないんです。
この状態ならz<=-1.0のポリゴンしか表示されないはずですよね?

glFrustumと同じことをやっていますが、
正確にはprojectionMatrixとmodelviewmatrixを掛け合わせたものをシェーダに渡しています。
なのでglMatrixModeとかは使っていません。
0121デフォルトの名無しさん2013/10/27(日) 21:37:15.15
注視点がどっちか不明なのに
>この状態ならz<=-1.0のポリゴンしか表示されないはずですよね?
判断できるわけが無いだろう。
アホか。
0122デフォルトの名無しさん2013/10/27(日) 23:17:53.23
>>120
マトリックスをprintfでもして自分で計算してみたらきっとわかるよ
0123デフォルトの名無しさん2013/10/28(月) 10:16:15.71
http://hexgl.bkcore.com/

これやってみ
0124デフォルトの名無しさん2013/10/28(月) 21:12:50.23
お前に命令される筋合いは無いっ
0125デフォルトの名無しさん2013/10/31(木) 03:29:33.33
>正確にはprojectionMatrixとmodelviewmatrixを掛け合わせたものをシェーダに渡しています。

シェーダーでニアクリップ処理が上手くされてないなら、計算どおりの表示になるわけないw
シェーダー使わないで試してから

>式自体は理解しています。計算どおりの表示にならない

とか言ってくれないかな?
0126デフォルトの名無しさん2013/10/31(木) 13:31:47.26
お前のその態度が気に入らない
0127デフォルトの名無しさん2013/10/31(木) 22:40:50.24
原因と結果なのに?
0128デフォルトの名無しさん2013/11/01(金) 02:32:05.07
あのさ全世界で使われてるOpenGLの処理でバグがあったら直ぐに騒ぎになるだろ

>式自体は理解しています。計算どおりの表示にならないので質問しています。

式を理解した所で、OpenGLを理解して式を当てはめる事が出来ないなら
それは式を理解しています、とは言わないんだよ?
でOpenGLのそんな根本にバグがあるわけがなく、君の間違った理解してない計算通りの表示に100%なってるからw
0129デフォルトの名無しさん2013/11/01(金) 02:59:21.37
いつになったら学習するのかなぁ…
0130デフォルトの名無しさん2013/11/01(金) 09:07:35.98
プログラムは思った通りに動くのではなく書かれた通りに動く
0131デフォルトの名無しさん2013/11/01(金) 11:38:36.66
どうやらソフトウェアレンダの既知の問題だったらしく
実行系を開発版にしたところ無事改善しました
お騒がせいたしました
0132デフォルトの名無しさん2013/11/01(金) 11:56:33.39
嘘くせーw
0133デフォルトの名無しさん2013/11/01(金) 17:20:56.30
何か自分で学習しない奴っているよな。
あーだこーだ理由をつけて、
エンジニアなのに、
本質を理解しないで、
ちょっとググっただけで、
自分がわかったつもりになって、
自分勝手に我流でやって、
バグを出しまくりで、
人のせいにして、
進歩しないやつ。
プライドだけは高いんだよ。
まあ、そのうちコーダーとしてしか使われなくなるんだよ。
0134デフォルトの名無しさん2013/11/01(金) 17:58:51.91
>>133
> エンジニアなのに

ここで、どうやって相手がエンジニアかどうか判断するの?
勝手にエンジニアだと思い込んでる?
0135デフォルトの名無しさん2013/11/01(金) 18:55:34.86
自分を投影しちゃったんでしょ
0136デフォルトの名無しさん2013/11/02(土) 00:43:41.35
同僚か部下でなんかでそんな奴がいるんだろ。
それの愚痴だろ。
0137デフォルトの名無しさん2013/11/02(土) 00:44:16.18
なら本人もエンジニアじゃね
0138デフォルトの名無しさん2013/11/02(土) 00:48:16.50
だろうね。
0139デフォルトの名無しさん2013/11/02(土) 04:55:25.73
ほう
0140デフォルトの名無しさん2013/11/02(土) 13:13:24.51
マ板でやれ
0141デフォルトの名無しさん2013/11/02(土) 15:11:20.97
こりゃ、まいった
0142片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/03(日) 20:58:40.54
画面のスクリーンショット撮ってそのテクスチャーを作成して、そのまま画面に表示すると、
ちょっとぼやけるんだよね。くっきり表示する方法を教えて下さい。
0143片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/03(日) 21:00:13.73
画面のスクリーンショット撮ってそのテクスチャーを作成して、そのまま画面に表示すると、
ちょっとぼやけるんだよね。くっきり表示する方法を教えて下さい。
0144デフォルトの名無しさん2013/11/03(日) 21:23:23.23
テクスチャにするときに縮小されてんだろ
拡大した画像でテクスチャ作れよぼけ
0145デフォルトの名無しさん2013/11/03(日) 21:38:00.81
もしくはリニアサンプルにしてて半ドットずれてるとか
ニアレストネイバーでサンプルするか半ドットずれてるのを戻すかすれば治るケース
0146片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/03(日) 22:49:18.11
どうやって半ピクセルずらすのですか? ググっても出て来ません。
0147片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/03(日) 23:22:35.87
画像サイズをCOLORONCOLORで四倍に引き延ばしてもぼやけたままでしたはげ
0148片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/03(日) 23:36:50.19
明日までにスクリーンセーバー納品しなきゃいけないんだ。頼む!
0149デフォルトの名無しさん2013/11/03(日) 23:56:03.33
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
とかしとけばとりあえずボケないんじゃなかろうか
0150デフォルトの名無しさん2013/11/03(日) 23:57:29.70
>>142
そもそもスクショって言うが、オフスクリーンバッファには描画してないのかい?
0151デフォルトの名無しさん2013/11/03(日) 23:58:52.30
お前らの慈悲深さに涙がでるわw
0152片山博文MZコスモ ◆T6xkBnTXz7B0 2013/11/04(月) 12:12:53.96
XScreenSaverの68個のスクリーンセーバーを移植したよ!!
マトリックス風のスクリーンセーバーもあるよ!!
http://katahiromz.web.fc2.com/xscreensaverwin/
https://github.com/katahiromz/XScreenSaverWin
0153デフォルトの名無しさん2013/11/04(月) 13:26:00.49
お礼の代わりに宣伝とか、素晴らしい人間性。
是非とも長生きしてほしいし、2chに沢山書き込んでほしい。
0154デフォルトの名無しさん2013/11/04(月) 14:01:05.46
ttp://www.jwz.org/xscreensaver/download.html

オリジナルの作者は嫌だろうし、移植じゃなく新しいプロジェクトでやればいいのに
0155デフォルトの名無しさん2013/11/04(月) 23:55:45.55
floatの数値が一次元配列として格納されているバッファがあるとき、これに
座標を追加して折れ線グラフのようにプロットしたいと思っています。
とりあえず、単調増加するダミーの頂点配列を用意したうえでバーテックス
シェーダにattributeとして渡してやって、そこで座標変換してやるという方法を
思いついたのですが、ほかにもっと簡単な方法ってありますか?
0156デフォルトの名無しさん2013/11/05(火) 00:10:04.96
GL_LINES
0157デフォルトの名無しさんNGNG?2BP(0)
http://rfi.a.la9.jp/sateweb/scurl/znsc.html
お世話になります。
私、責任者の加茂と申します。以後、宜しくお願い致します。
http://www.karilun.com/img_shop/15/ss52_1368685958.jpg
浪速建設様の見解と致しましては、メールによる対応に関しましては
受付しないということで、当初より返信を行っていないようで、今後につい
てもメールや書面での対応は致しかねるというお答えでした。
 
このように現在まで6通のメールを送られたとのことですが、結果一度も
返信がないとう状況になっています。
 
私どものほうでも現在までのメール履歴は随時削除を致しております
ので実際に11通のメールを頂戴しているか不明なところであります。
 
弊社としましても今後メールでのやり取りを差し控えたく、浪速建設様
と同行の上でお会いさせていただきたい所存です。
http://rfi.a.la9.jp/hn203/set/Avatar_set/Avatar_set.html
0158デフォルトの名無しさん2013/11/05(火) 22:50:01.61
>>156
GL_LINE_STRIPにしないと破線になりますね。
それ以前に、>>155で質問したのは描画じゃなくて頂点座標を得る方法なんですが。

一応>>155に書いた案で実装してうまく動いたようなので解決ということにしておきます。
0159デフォルトの名無しさん2013/11/05(火) 23:04:45.65
>>158
プロットしたいというのは描画したい(画面にプロットしたい)という意味じゃなかったの?

プロットしたい = 頂点座標を得えたい という意味?
0160デフォルトの名無しさん2013/11/05(火) 23:20:46.75
>>158
何言ってんだこいつw
偏差値が10違うと会話が成り立たないうんぬんw
0161デフォルトの名無しさん2013/11/05(火) 23:22:39.20
>>159
書き方がよくなかったですかね。
確かにやりたいことは描画することなんですが、一次元の数値の配列はそのままでは
描画することができないので、これを描画できる頂点配列の形にしたいということでした。
0162デフォルトの名無しさん2013/11/06(水) 00:20:00.26
単調増加ならgl_VertexIDでいいんじゃないの?
0163デフォルトの名無しさん2013/11/06(水) 00:56:08.37
なるほど。頂点配列を埋める手間は省けそうですね。
0164デフォルトの名無しさん2013/11/07(木) 23:25:30.71
glTexImage2Dのformatパラメータって、昔のドキュメントにはGL_LUMINANCEが含まれているのに
最近のドキュメントには記述がないんだが、廃止されたの?
廃止されたとしたら、代替の機能って何を使えばいいんだろうか?
0165デフォルトの名無しさん2013/11/08(金) 00:46:55.61
GL_RED + シェーダ
0166デフォルトの名無しさん2013/11/08(金) 00:52:34.83
そうなんだ。サンクス。
0167デフォルトの名無しさん2013/11/10(日) 21:30:30.84
マルチスレッドを使うプログラムでUIスレッド以外からOpenGLの操作をするために
wglMakeCurrentを呼んだとき、たまに失敗してFALSEが返ってくるのにGetLastError
ではERROR_SUCCESSしか返ってこない場合があるんですが、ほかに何か
原因を調べる方法はあるでしょうか?

wglMakeCurrentがFALSEを返す場合は確かに操作が失敗しているようで、そのまま
後続の処理をしようとしても全部失敗しますが、GetLastErrorがERROR_SUCCESSのとき
wglMakeCurrentを再度呼ぶと今度は成功するようです。
一応、同じHGLRCを別のスレッドからアクセスしようとするとERROR_INVALID_ACCESSで
失敗するので、その排他制御は入れています。
0168デフォルトの名無しさん2013/11/22(金) 06:53:42.55
http://d.hatena.ne.jp/tueda_wolf/20111007
このサイトの「ストリップ長を長く取りすぎてキャッシュのヒット率が悪く」
って部分がよくわからないのですが、ストリップ長を長くしすぎるとなぜダメなのでしょうか?
また、「キャッシュに当てるためにストリップ長は16ぐらいでいい」ってことは、
ストリップ長が16程度に達したら、分割すべきってことでしょうか?
0169デフォルトの名無しさん2013/11/22(金) 11:26:55.59
別に駄目じゃないよ。
キャッシュヒット率が必要なだけ高ければ何でもいいよ。
ストリップが長いときにヒット率が悪いなら、そのストリップを単に 16 トライアングルで分割したってヒット率は変わらないよ。
ていうかその記事で分からないなら、何を説明しても無駄。ストリップ最適化のツールはあるから、それ使ってればいいよ。
0170デフォルトの名無しさん2013/11/22(金) 14:24:03.83
トライアングル単品のほうが速いのはカリングの都合もよね
0171デフォルトの名無しさん2013/11/23(土) 08:02:32.53
glActiveTextureってどこにつくの?
コンテキストorフレームバッファorプログラム?
0172デフォルトの名無しさん2013/11/23(土) 20:10:16.46
>>168
そうじゃない >>169
トライアングル・ストリップは最初の2個のトライアングルを選ぶと
3つめ以降は自動的に決まってストリップは一直線に伸びていく(選択の余地がない)
この時キャッシュのヒット率は理想的な場合で1つの頂点を2ストリップがなぞるので50%。
それに対してトライアングルズで自由に近くのトライアングルを選んでいけば16個のキャッシュ程度でも90%とかいうレベルでヒットするので、
もはやストリップの時代は終わったんだあきらめなという話
0173デフォルトの名無しさん2013/11/27(水) 12:26:03.06
ストリップの時代終わったのか。おぢさんとしては寂しい限り
0174デフォルトの名無しさん2013/11/27(水) 13:05:32.77
時代は着エロ
0175デフォルトの名無しさん2013/11/29(金) 11:33:38.49
http://vimeo.com/63502573
この映像の〜30秒までの3Dグラフィックスがきめ細やかで美しいと思ったのですが、
こういった映像はOpenGLからプログラミングでもって作られているのでしょうか?
それとも、プログラミングは必要なく3D制作ソフトウェアや動画編集ソフトを組み合わせて作られているのでしょうか?
0176デフォルトの名無しさん2013/11/29(金) 11:51:17.35
エロかもしれないとおもってクリック出来ない
0177デフォルトの名無しさん2013/11/29(金) 14:02:00.58
>>175
Software used: After Effects and Cinema 4D
って書いてあるぞ
0178デフォルトの名無しさん2013/11/29(金) 15:10:01.33
>>177
ありがとうございます。
0179デフォルトの名無しさん2013/12/02(月) 19:47:35.45
おいOpen ESの名称乗っ取られたじゃねぇか
0180デフォルトの名無しさん2013/12/02(月) 19:51:17.78
完全に油断してたね
0181デフォルトの名無しさん2013/12/02(月) 20:55:21.02
何言ってんだお前、と思ったがなるほど (´・ω・`)
http://www.recruitcareer.co.jp/news/old/2013/131105_01/
0182デフォルトの名無しさん2013/12/03(火) 12:26:58.97
新卒の個人情報はさぞかし高く売れるんだろうな
0183デフォルトの名無しさん2013/12/06(金) 13:22:47.81
ESはどうせフェードアウトするだろ
0184デフォルトの名無しさん2013/12/06(金) 22:20:24.92
そして、洸がフェードイン
0185デフォルトの名無しさん2013/12/07(土) 11:54:13.25
プログラミング初心者な質問かもしれません…

GPUを使って、巨大な行列の乗算を行いたいのですが、
OpenGLで4×4以外の行列の計算はどのようにすればできますか?

いろいろ調べても出てこないので、OpenGLでは4×4以外の行列計算はできないのではないかと思い始め、
どうしても納得がいかなかったので質問させてもらいました。
スレ違いなら誘導していただければと思います。
0186デフォルトの名無しさん2013/12/07(土) 12:02:22.91
っ http://toro.2ch.net/test/read.cgi/tech/1348409867/
0187デフォルトの名無しさん2013/12/07(土) 12:41:27.36
>>185
OpenGLは3D表示用だから、3D表示に必要な分(行列なら4x4まで)しか対応しないと考えるのが自然だと思うけど、何が納得いかないのさ?
あと、誘導先はOpenClも…
0188デフォルトの名無しさん2013/12/07(土) 12:48:45.02
っ http://toro.2ch.net/test/read.cgi/tech/1228891105/
0189デフォルトの名無しさん2013/12/07(土) 13:07:29.13
誘導、助言ありがとうございます。
なぜOpenGLを使いたかったかを書いていませんでした。

端的に言えば、iOS上でGPUによる行列計算をしたかったためです。
始めCUDAやOpenCLならできそうだと思い調べていたのですが、どうやらiOS上では動かない(対応していない)とわかりました。

そこでOpenGLはiOS上で動くことを思い出し、調べていた次第です。
大きい行列の計算が可能そうであれば使わせてもらおうかな、と。

大きい行列計算はできない、という情報が見当たらなかったので、今回質問させてもらいました。
0190デフォルトの名無しさん2013/12/07(土) 13:10:39.38
じゃあ古めかしいGPGPUで、テクスチャーに値放り込んでサンプリングしながら計算する
でも逆行列の計算とかだと再帰計算だからGPGPUとは相性悪いわな

そもそも何故GPUじゃないとダメなの?
0191デフォルトの名無しさん2013/12/07(土) 13:29:53.94
とくに考えがあるわけでもなくGPUを使った方が速そうだとかいう、
よく愚者が思いつくことを、今回も思いついた馬鹿がいたと言うだけの話だろう。
0192デフォルトの名無しさん2013/12/07(土) 15:23:09.65
>>189
OpenGL ESはモバイル用にOpenGLの機能を刈り込んだものだから、ますます3D必要以外の機能は貧弱で当たり前なので、わざわざ「できない」と言う必要がないだけ。
iOSなら、Accelerate Frameworkについて調べてみるといいかも。最近は画像処理に力を入れてるけど、汎用の計算機能もあったはず。
0193 忍法帖【Lv=7,xxxP】(1+0:5) 2013/12/10(火) 23:39:18.39
大学の図書館で調べてみたけどOpenGL 4.0に関する本が一冊も無かった・・・
どうなってんだ
0194デフォルトの名無しさん2013/12/11(水) 01:09:41.49
>>193
図書館に言えば買ってくれるか、他所から借りてきてくれるんじゃね?
自力で探すなら、
っ http://calil.jp/
0195デフォルトの名無しさん2013/12/11(水) 08:32:07.27
俺は大学図書館の OpenGL 本を充実させるべく積極的に動いてるぞ
OpenGL Insights 日本語版入れたり
0196デフォルトの名無しさん2013/12/11(水) 09:33:29.63
いまだに赤本しかない図書館とかありそう
カビが生えて化石化して古代文明の遺産みたいな本
0197 忍法帖【Lv=7,xxxP】(1+0:5) 2013/12/11(水) 20:41:36.88
>>194
事務で聞いたら買ってくれるみたいやったわ

よし、おれも大学の図書館改革していくぞ〜
まずはOpenGL 4.0 グラフィックシステムいれるわ
0198デフォルトの名無しさん2013/12/12(木) 00:43:01.84
>>189
GPUで汎用計算をやろうZEみたいな話をGPGPUとか言ったりすることはご存じですか。
ご存知でしたらそれでググれ
0199デフォルトの名無しさん2013/12/12(木) 09:43:28.27
OpenGL4.0が標準いいよねもう
ところでMantleどうなった?
0200デフォルトの名無しさん2013/12/14(土) 01:01:13.66
あっという間にゴミになる技術本なんか入れんなよ
図書館の新刊希望出す奴は自己中ばっかりだな
0201デフォルトの名無しさん2013/12/14(土) 09:21:26.35
新刊希望出す奴は自己中でいいよ

それを聞き入れる方に問題がある
0202デフォルトの名無しさん2013/12/14(土) 10:15:26.92
図書館員は無知すぎる
0203デフォルトの名無しさん2013/12/14(土) 11:17:55.66
消えていく技術に関する資料を保存するのも図書館の役目だと思うがな。
COMの本なんかもう書店じゃ見かけんし、Macintosh Toolboxは古本でも
なかなか見つからん。
0204デフォルトの名無しさん2013/12/14(土) 21:34:23.67
http://www.jla.or.jp/library/gudeline/tabid/232/Default.aspx
「図書館の自由に関する宣言」
第1 図書館は資料収集の自由を有する
2. 図書館は、自らの責任において作成した収集方針にもとづき資料の選択および収集を行う。その際、
(3) 図書館員の個人的な関心や好みによって選択をしない。
(4) 個人・組織・団体からの圧力や干渉によって収集の自由を放棄したり、紛糾をおそれて自己規制したりはしない。
(5) 寄贈資料の受入にあたっても同様である。図書館の収集した資料がどのような思想や主 張をもっていようとも、それを図書館および図書館員が支持することを意味するものではない。
0205デフォルトの名無しさん2013/12/15(日) 00:06:50.44
何と戦ってんの
0206デフォルトの名無しさん2013/12/15(日) 01:41:18.21
いい加減スレチ
0207デフォルトの名無しさん2013/12/15(日) 21:21:49.40
フレームバッファオブジェクトが意味解りません。
おすすめの本はありますか?
0208デフォルトの名無しさん2013/12/16(月) 01:22:13.19
ttp://www.opengl.org/registry/doc/glspec44.core.pdf
の
Chapter 9
に詳しく書いてあるよ
0209デフォルトの名無しさん2013/12/16(月) 13:11:13.69
>>208
ありがとうございます。
読んでみます。
0210デフォルトの名無しさん2013/12/19(木) 00:47:18.81
OpenGL Insights 日本語版

の最初の数ページだけ読んだが、なんか訳がおかしい。日本語になってない所がある。
0211デフォルトの名無しさん2013/12/19(木) 08:57:17.39
10年前のOpenGLの本なんて役に立たないし捨てていいですよね
0212デフォルトの名無しさん2013/12/19(木) 10:11:08.38
翻訳本なんて大抵そんなもの
見つけたら出版社に報告すれば
割引券がもらえるかもしれないし
放置されるだけかもしれない
0213デフォルトの名無しさん2013/12/22(日) 17:26:57.93
質問です。Android用にOpenGLを用いたアプリケーションを開発しております。
よくわからない挙動にぶつかったので。
GLSL中で、

uBoneTransformMatrix[1][0][3]==2.0←true
しかし、
ivec3 testVec=ivec3(1,0,3);
uBoneTransformMatrix[testVec.x][testVec.y][testVec.z]==2.0←false(trueのはず・・・)
になってしまいます。
ちなみに、uBoneTransformMatrixは
uniform mat4 uBoneTransformMatrix[16];と宣言してあります。
0214デフォルトの名無しさん2013/12/22(日) 20:21:15.96
浮動小数点数の比較は減算した絶対値が小さいかどうかでやろうず
0215デフォルトの名無しさん2013/12/23(月) 00:14:33.65
http://d.hatena.ne.jp/tociyuki/touch/20090620/1245503707
0216デフォルトの名無しさん2013/12/26(木) 02:47:37.22
赤本第8版って邦訳の予定ないのかなあ…
日本語で書かれたOpenGL3.0以降の本格的な参考書って少ないから、けっこう需要はあるだろうに。
0217デフォルトの名無しさん2013/12/26(木) 11:36:24.89
>>216
値段が4000円ぐらいだったら売れるんじゃね.前のは12000円ぐらいしたし厳しかった.
0218デフォルトの名無しさん2013/12/26(木) 21:43:15.80
OpenGLの標準バージョンを決めて欲しい気がする
もう固定パイプ要らないねん
0219デフォルトの名無しさん2013/12/26(木) 22:34:40.91
標準バージョンの意味がよく分からん

固定パイプ要らないのなら使わなきゃいいだけでは?
そういうことではない?
0220デフォルトの名無しさん2013/12/27(金) 00:22:27.16
Superbibleの和訳が欲しいなぁ。
0221デフォルトの名無しさん2013/12/27(金) 01:41:41.17
SuperBibleは原語で充分意味が取れる内容のような
0222デフォルトの名無しさん2013/12/28(土) 01:38:53.84
glBegin〜glEndの時代が終わって、一気に入門の敷居が上がっちゃった感はあるよな。
大学とか専門学校のCGの演習系の授業とか、取っ掛かりはどうしてるんだろ?

特に即戦力を求められる専門学校で時代遅れの実装について勉強するわけにもいかんけど、
シェーダーベースになってから、とりあえずテクスチャ貼ってライティングされた立方体を
くるくる回すまでのハードルがえらい高くなった気がする。
0223デフォルトの名無しさん2013/12/28(土) 01:53:43.00
大学ではまだglBeginで教えているよ
0224デフォルトの名無しさん2013/12/28(土) 03:43:34.03
glBeginってバージョンあげても拡張機能で普通に使えなかったっけ?
0225デフォルトの名無しさん2013/12/28(土) 09:55:59.76
現状だと今あるGPUでもglBeginはいちおう使えるっぽい。
NVIDIAはDeprecatedになった機能もこれからもちゃんと実装するよって言ってた。
(ソースは探せばどっかにあると思う)
しかし, IntelかAMDの実装がDeprecatedになった機能をサポートしなくなって
glBeginが使えなくなるか
使えても計算がCPUで行われるような実装になっているかもしれない。

というかWindowsをインストールした時点で
GPUドライバをインストールしてなくても
ソフトウェア実装のOpenGL1.1相当の機能は使えなかったっけ?

お手軽簡単にOpenGL使いたい人はglBeginを使い
真面目にパフォーマンスが必要な人はDrawElementsInstancedBaseVertexBaseInstanceを使えばいいんじゃない?
0226デフォルトの名無しさん2013/12/28(土) 19:32:01.17
ビューポート(-1,+1)の範囲で表示するのは問題ないねん
座標変換し出すと突然ハードルが上がる
(この辺からついて来れない学生が出てくるし・・・)
0227デフォルトの名無しさん2013/12/28(土) 22:46:15.94
図書館でOpenGL ES 2.0 プログラミングガイド借りてきた。
絶版とか勘弁してほしいわ・・・
丸善がんばれ。
0228デフォルトの名無しさん2013/12/28(土) 22:48:47.95
初歩的な質問で済みませんが、
640x480の2D系の座標にする時に

glViewport(0,0,640,480);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 480, 0, -1, 1);

みたいな感じで設定してるサンプルコードをよく見かけますが、なぜ

glOrtho(0, 639, 479, 0, -1, 1);

ではないんでしょうか?
leftが0だったらrightは639になりそうな気がしてしまうんですが・・・。
02292282013/12/28(土) 22:53:18.70
glViewportの方はwidthなので640指定なのは分かるんですが、
glOrthoの方はleft, rightなので0, 639になるんじゃないの?と不思議に思ってしまいました。
0230デフォルトの名無しさん2013/12/28(土) 23:01:13.23
お前はテクスチャ座標をフルサイズで指定するとき、
0から0を指定するのか?
0231デフォルトの名無しさん2013/12/28(土) 23:24:34.43
ごめんなさい、おっしゃっている内容がよく理解出来ません。。
出来れば、rightに639ではなく640を指定する理由を
直接教えては頂けないでしょうか?
0232デフォルトの名無しさん2013/12/28(土) 23:26:15.73
ドットで数えるからそんなアホな発想になるんだよ。
0233デフォルトの名無しさん2013/12/28(土) 23:28:29.88
100メートル走のゴールは99m地点か?
0234デフォルトの名無しさん2013/12/28(土) 23:30:38.99
「10秒数えて下さいねー」っていわれて1から数えだして10になった瞬間に手を上げるタイプか
0235デフォルトの名無しさん2013/12/28(土) 23:41:05.42
そこは、手を上げる必然性がないだろ
0236デフォルトの名無しさん2013/12/28(土) 23:41:37.01
>>227
アマゾンの瀬取り屋がIT関連の本を買い占めてやがんだよな
ES2.0ガイドは持ってるけど定価4000円しないのに7500円で売ってる
むかつくわ〜
02372282013/12/28(土) 23:42:06.96
えっと、思いっきりドットで数えてしまってるんですが、ダメなんでしょうか?
幅640ピクセルの場合、一番左端の座標は0となって、
一番右端の座標は639になりますよね。
なので0と639を指定するのでは?と単純に考えてしまいました。

リファレンス確認したら↓こんな説明になってましたが、
そもそも左端と右端の座標を指定するという考えが間違ってんですかね。

http://www.opengl.org/sdk/docs/man2/xhtml/glOrtho.xml
> Specify the coordinates for the left and right vertical clipping planes.
0238デフォルトの名無しさん2013/12/28(土) 23:46:41.07
なんでドットで数えるの?
ドットで数えることに何の意味があるの?
0239デフォルトの名無しさん2013/12/28(土) 23:49:38.21
coordinate=座標が付くのは格子点だよね
中学校で習わなかったか?
02402282013/12/28(土) 23:58:40.50
あー確かにそう言われたらそうですね。。
ピクセルの中心位置と思いっきり勘違いておりました・・・。

済みません、スレ汚し失礼しました。
0241デフォルトの名無しさん2013/12/29(日) 00:09:21.29
「OpenGL ES 2.0 プログラミングガイド」って、ESの本だけど、
シェーダーベースのOpenGLの入門書としては数少ない選択肢だよな
0242デフォルトの名無しさん2013/12/29(日) 11:53:07.95
OpenGL4.0ひまわり本があるだろ
0243デフォルトの名無しさん2014/01/01(水) 10:56:05.82
「なんだよシェーダーについてしか解説しないのか、片手落ちだな」と思っていたら、
最近のOpenGLは実質的にシェーダーが全てだったでござる
0244デフォルトの名無しさん2014/01/01(水) 11:05:27.21
glBegin/Endってジャージ着て街に出かけるようなものだろ
0245デフォルトの名無しさん2014/01/01(水) 11:14:09.31
>>244
イマイチ分からん喩えだ
0246デフォルトの名無しさん2014/01/01(水) 15:55:21.36
むしろカジュアルやん
0247デフォルトの名無しさん2014/01/01(水) 21:19:48.54
カジュアルだけどレストランにも入れないしデートにも行けない
0248デフォルトの名無しさん2014/01/01(水) 22:12:24.47
glBegin/Endって、そういう感じのものとは違うような気がする
0249デフォルトの名無しさん2014/01/01(水) 22:30:18.73
かゆい所に手が届かない時代遅れの技術だべ
0250デフォルトの名無しさん2014/01/01(水) 22:57:29.15
ジャージはかゆい所に手が届かない時代遅れのものではないよな
0251デフォルトの名無しさん2014/01/01(水) 23:04:04.57
昔はジャージ着て町の中歩いてるのが普通だったけど今は笑われるね
0252デフォルトの名無しさん2014/01/01(水) 23:07:46.75
レストランやデートに行けないからやはりかゆい所に手が届かないのではないか
0253デフォルトの名無しさん2014/01/01(水) 23:14:25.56
そもそもさ、みんなは「かゆい所に手が届く」という言葉の意味は分かってるのかな?

わかった上で遊んでるのか?
0254デフォルトの名無しさん2014/01/01(水) 23:15:44.59
いいえ
0255デフォルトの名無しさん2014/01/01(水) 23:31:52.92
気が利いてるという意味か
まぁglBeginは気が利いてるといえば利いてるな
ただ過保護すぎて本人のためにならないという点が問題だが
0256デフォルトの名無しさん2014/01/02(木) 10:29:54.18
glBeginは園児服
0257デフォルトの名無しさん2014/01/05(日) 14:00:27.53
成長しても板ポリ表示とかで使える
使わなくてもいい
0258デフォルトの名無しさん2014/01/05(日) 17:35:13.66
ものすごく初歩的な質問をしてしまうかもしれないが、
シェーダーって常にVSとFS(場合によってはGS)を一つずつセットにしないといけないのかな?

頂点シェーダーには透視変換とかの「多くのシェーダーで共通に使う機能」があるから、それをまとめて
VS1(共通機能)→VS2(シェーダーごとの機能)→FS(同左)みたいなやり方ができると
便利そうでVRAMの節約にもなる気がするんだが、それって可能?
0259デフォルトの名無しさん2014/01/05(日) 17:47:29.97
このへん?
https://www.opengl.org/sdk/docs/man/xhtml/glAttachShader.xml
> It is permissible to attach multiple shader objects of the same type because each may contain a portion of the complete shader.
> It is also permissible to attach a shader object to more than one program object.
0260デフォルトの名無しさん2014/01/05(日) 20:57:39.61
>>259
あ、まず仕様書に目を通すべきだったか。
いずれにせよサンクス。
ちょっと読んでみる。
0261デフォルトの名無しさん2014/01/07(火) 03:24:02.54
わしはシェーダでよく使う関数をヘッダファイルに纏めて#includeして使ってるよ。
VRAMの節約にはならんけど, 開発は楽になる。
Boost::waveにあるサンプルを参考にすれば簡単にGLSLで#includeできるよ。
#lineも生成してくれるから、エラーメッセージの行数もちゃんとマッチするし。

>>259
仕様書だとひとつのProgram Objectに複数のVertex ShaderをAttachするのはOKと言ってるけど
複数Vertex Shader Objectを一つのProgram ObjectにAttachしたとして
あるShader Objectから別のShader Objectの関数って呼べるの?
こんな事いったら仕様書をちゃんと読めよ!って言われるかもしんないけどさ。
0262デフォルトの名無しさん2014/01/07(火) 03:56:16.87
>>261
やってみたら呼べた。(知らなかった...)

ProgramObjectごとにリンクされるわけだから、メモリの節約にはならないかもしれないけど便利かも
0263デフォルトの名無しさん2014/01/07(火) 13:13:13.38
ひまわり本のSecond Edition欲しいお
0264デフォルトの名無しさん2014/01/07(火) 14:25:56.67
毎年アップデートして欲しい
0265デフォルトの名無しさん2014/01/13(月) 12:33:13.53
androidでopengl es1.1でレースゲーム作ろうと思ってるんだけど
オブジェクトは3Dで作るがマップは2Dって時
いいマップエディタとかってありますか
加速パネルとか障害パネルとかそんなんを配置していくイメージです
0266デフォルトの名無しさん2014/01/13(月) 12:42:47.61
凄くトンチンカンなこと言ってるぞ
0267デフォルトの名無しさん2014/01/13(月) 12:52:57.40
>>265
OpenGLとの関わりが全く分からん

ゲ製板の範疇じゃないのか?
http://toro.2ch.net/gamedev/
0268デフォルトの名無しさん2014/01/14(火) 03:01:24.71
白黒でビットマップに書いてコース起こせば。昔あったな。
0269デフォルトの名無しさん2014/01/15(水) 17:16:22.88
glGenTexturesを内部で呼ぶspriteクラスを作って
sprite.init(リソース)
...
sprite.draw(gl)
で表示させてたんですが、2枚目を読み込ませると
それまで読み込んでいた別のスプライトもすべて同じ画像になっちゃいました
もしかしてglGentexturesには最初の段階で必要なテクスチャ画像をすべて
読み込まないといけないのでしょうか
だとすると内部でglGenTexturesを使うようなクラス化は無理ですか?
0270デフォルトの名無しさん2014/01/15(水) 17:50:15.79
無理じゃないです。多分init()が間違ってる。
まずクラス化しないで複数のテクスチャを使えるコードをベタに書いてみたら
0271デフォルトの名無しさん2014/01/15(水) 18:03:12.27
二回目のglGenTexturesの第二引数に初回と同じポインタ渡して書き換わってるだけじゃないの?
02722692014/01/15(水) 20:32:30.48
うまくいきました
glbindtexturesをinit時にしか呼び出してなかったのが原因でした
ただ、javaだとdraw時に毎回glBindTexturesを呼び出すために
bitmap.recycle()できないのが微妙な感じです
0273デフォルトの名無しさん2014/01/15(水) 22:45:42.92
>>272
いやtexImage2D()後ならrecycle()は呼び出して大丈夫
glBindTexture()って言ってるけど、その役割理解できてる?
0274デフォルトの名無しさん2014/01/16(木) 18:10:18.51
光源を囲むようにポリゴン(4角形)を配置したんだけど、光が遮断されずに
透過します・・・。

光を遮断するにはどうしたらいいのでしょうか?
02752692014/01/16(木) 18:13:33.96
2枚読み込めるようになったコードはこれです
codepad.org/IeMlc0OZ
recycleをコメントアウトすると真っ暗です
一枚だけなら、drawでtexImage2Dを呼ぶなんてことはせずにすむのですが。
後試したこととしてinitでtexImage2Dしといて
drawでglBindTextureだけしても動きませんでした
0276デフォルトの名無しさん2014/01/16(木) 18:45:06.25
OpenGLのポリゴンに光(ライト)を遮蔽する効果なんて無いよ……

影を出す方法は幾つもあるけど一長一短。「OpenGL 影」でググって好きな方法を選べ。
02772742014/01/16(木) 19:31:36.45
>>276
レスありがとうございます。

>OpenGLのポリゴンに光(ライト)を遮蔽する効果なんて無いよ……

マジっすか・・・。

仕方ないので、光源の影響を受けるポリゴンを描画してから、
光源をOFFにして、その他のポリゴンを描画することにします。
0278デフォルトの名無しさん2014/01/16(木) 20:04:51.11
光を遮蔽した結果が影なんだけどな…
0279デフォルトの名無しさん2014/01/16(木) 20:31:10.04
>>277
根本的に何か勘違いしてる気がする
0280デフォルトの名無しさん2014/01/16(木) 22:39:28.71
>>275
後者の試したときに、初期化時のglBindTexture()は読んだのかい?

もう一度問う。glBindTexture()とは何をする関数か。
それによって、他のどんな関数が影響を受けるか。
0281デフォルトの名無しさん2014/01/16(木) 23:20:26.83
自作ゲームのためにOpenGLをラップするクラス群を作っているんだが、
モデルビュー関係がシェーダー任せになると、クラス分けが今ひとつ変な感じになる…

とりあえず質感を決定するためにMaterialというクラスを作って、シェーダーはそっちが担当し、
頂点情報はVAOというクラスを作ってそっちにもたせることにした。
そうすると、描画する時は

material.bind(); // 質感を決める
vao.draw(); // そのシェーダーを使って描画する

という流れになる。これは直感的に問題ない。
でも、行列操作のためにはシェーダーのuniform変数を操作する必要があるわけで、
座標を司る行列関係のメソッドがMaterialの方に存在するという、ものすごく気持ち悪い実装になってしまった。
0282デフォルトの名無しさん2014/01/16(木) 23:28:26.36
は?
0283デフォルトの名無しさん2014/01/16(木) 23:29:37.01
日記風質問ですか
0284デフォルトの名無しさん2014/01/17(金) 00:52:03.70
>>279
気がするが、目的の効果を出せるなら取りあえずそれでOKという考え方もあるし
02852742014/01/17(金) 01:02:31.26
>>278-279

真っ暗な空間の中に、電球が一つあったとして、
その電球を何かですっぽり覆ったときに、影を
描画するのではなく、単に光の影響を排除した
方が簡単だと思ったのですが・・・。
0286デフォルトの名無しさん2014/01/17(金) 03:46:13.04
>>285
標準的なライト計算でやってるのは、面の向きとライトとの位置関係を比べて
・面がライトと逆方向を向いてるなら、暗く(ambient)
・面が光をほどよく反射する方向を向いてるなら、色付いて(diffuse)
・面がライトの方向を向いてるなら、白っぽく(specular)
描画する、というだけだよ。当然、他の物体が間にあるかどうかなんて無関係。
光の影響を「すっぽり」排除するなら、>>277 のやり方で問題ないよ。
0287デフォルトの名無しさん2014/01/17(金) 03:49:21.51
完全に真っ黒だとさすがに…と思うなら、別の暗いライトを代わりに付けて描画するとか
暗くなる物体が予め決まってるなら、その物体の材質のdiffuseやspecularを暗くしてやるって手もあるし。
0288デフォルトの名無しさん2014/01/17(金) 04:36:42.42
>>281
俺ならこうした

Mesh
 - VertexBuffer
 - Appearance
  - Shader
  - Material
02892742014/01/17(金) 10:40:42.01
>>286
あざーす。

最近やっとOpenGLが何をやってるか、うっすら分かってきた。

何となくだけど、

1. 視線に応じてポリゴンのカタチを面に投影
2. 投影された外形の中を指定色で塗りつぶし
3. 2.の輝度調整や、alpha処理等々

これを視野に入るポリゴン全てに対して処理して出来上がった
画像を表示してると・・・。

いままでネットにあるチュートリアルしかみてなかったけど
今度、真面目にOpenGLの本を読んでみようかなw

>>287
むしろ完全に真っ暗が望ましいです。
もし淡い光が必要なら、全体に作用する環境光を使いたいと思います。
0290デフォルトの名無しさん2014/01/17(金) 14:14:48.93
完全に真っ暗って描画する必要あるのか?
0291デフォルトの名無しさん2014/01/17(金) 16:14:22.56
>>280
glBindTextureで切り替えられるのは
glGenTextureの第一引数に2以上を指定した場合ではないのですか?
だから最初の質問をしたんだけど
glGenTextureの第一引数に1を指定したまま
切り替えられるようなクラス化が出きるなら教えて
275のコードは遅すぎてまるで使い物になりません
0292デフォルトの名無しさん2014/01/17(金) 16:46:29.44
>>290
displaylistを作りなおすのが面倒なんで・・・。
状況に応じてスポットライトはOFFにして環境光だけにして
暗視ゴーグルをつけている雰囲気を出したいなと・・・。
02932912014/01/17(金) 17:16:39.28
動くようになった実装
codepad.org/wyLfvqZs
しかしこれは当初自分がやりたかった実装ではないですが
glGenTexture(1,hoge)で作るのは無理だと思うので
実用上これで使うことにします
すごく使いにくいAPIですね
0294デフォルトの名無しさん2014/01/17(金) 18:53:29.95
自分の無知を晒して使いにくいAPIとか言い出すとこまでテンプレだな
0295デフォルトの名無しさん2014/01/17(金) 19:22:43.62
>>293
glBindTexture()の使い方はだいたいok
けどglGenTexture()についてはまだ理解が浅いのかな?
必ずしも一発で全部Genしなくてもいいよ?
まあ、したほうが効率的だろうけどさ
0296デフォルトの名無しさん2014/01/17(金) 22:50:45.09
>>294
「なんだこの使いにくいAPIは!」というのは、誰もが過去に通った道という気がするので
正直俺は彼を馬鹿にできん
0297デフォルトの名無しさん2014/01/18(土) 00:29:31.84
実際使いにくいしMatnelには期待してる
0298デフォルトの名無しさん2014/01/18(土) 01:08:55.62
OpenGLよりローレベルなAPIに使いやすさを期待奴〜www
0299デフォルトの名無しさん2014/01/18(土) 01:46:21.96
上手いことラップすればOpenGLの機能を、より洗練されたAPIで操作できるだろう
0300デフォルトの名無しさん2014/01/18(土) 02:16:05.22
コピペ改変したサンプルレンダラを美味しく使うお
0301デフォルトの名無しさん2014/01/18(土) 10:56:56.77
OpenGL は半端な抽象化がうざかったりするから
ローレベルだから使い辛いとは限らん
0302デフォルトの名無しさん2014/01/19(日) 09:51:45.48
オレオレエンジン作るお!ちゃんと1行1行理解してOpenGL使うお!
   ↓
できたー OpenGLの理解は完璧だお!楽勝だお!
   ↓
中身をど忘れ
   ↓
振り出しに戻る
0303デフォルトの名無しさん2014/01/19(日) 18:47:46.89
健忘症かな?
0304デフォルトの名無しさん2014/01/19(日) 20:56:23.55
度忘れしても大丈夫なように馬鹿でもわかって誤用の起こらない設計をするだろ。
0305デフォルトの名無しさん2014/01/19(日) 21:07:49.68
>>303
お前は1年前に書いたコードを完全に覚えているのか?
0306デフォルトの名無しさん2014/01/19(日) 21:08:11.27
頂点とテクスチャ渡せば絵が出る様にしとけば中身など気にならんわな
0307デフォルトの名無しさん2014/01/19(日) 21:12:14.43
アーキテクチャだけは覚えておく
インターフェイスは見たら思い出せるようにしておく
それだけ
0308デフォルトの名無しさん2014/01/19(日) 21:42:48.52
>>305
20台の時は余裕で覚えていたよ

>>307
30台の時はそれでなんとかなってたが

40台になるとそれも難しくなってくるよ
0309デフォルトの名無しさん2014/01/19(日) 21:43:58.09
訂正

台
↓
代


くそIMEめ
0310デフォルトの名無しさん2014/01/19(日) 21:45:22.94
くすっ
0311デフォルトの名無しさん2014/01/19(日) 22:13:14.51
健忘症かな?
0312デフォルトの名無しさん2014/01/19(日) 23:22:42.50
エラーコードの種類に関しては、もっと増やして欲しいなあ。
特に、1282はもうちょい細かく分割できないもんかと。
0313デフォルトの名無しさん2014/01/23(木) 23:58:55.13
テクスチャ貼り付けたプリミティブを徐々に透過したいんですけど何かいい方法ありますか?
0314デフォルトの名無しさん2014/01/24(金) 00:22:46.65
徐々にアルファ値を減算したり加算したりすればいいよ
0315デフォルトの名無しさん2014/01/24(金) 16:07:02.92
基本的なことだと思うのですが、ライトは
どのタイミングで処理するのがいいのでしょうか
sjbaker.org/steve/omniv/projection_abuse.html
ここによるとgl_projectionを設定しているときには
ライトの設定はしないほうがよさげです
するとmodelviewを設定しているときに呼ぶと思うのですが
カメラの設定で視線が決まると思うので
カメラの設定の後でしょうか?
今プレイヤーの真上(Z>0)からライトを設定してみたものの
むしろ暗くなってしまってます
0316デフォルトの名無しさん2014/01/25(土) 12:58:01.41
>>315
昔作ったソースを確認してみた。
gluLookAtでカメラパラメータを決めた後で、頂点の描画処理をする前にライトの設定してる。
スクリーン座標系をS、透視行列をP、ビュー行列をV、ワールド座標系をWとすると、
S=PVW
となるよね。
だから、行列Vをかける前にライトの座標を決めてしまうと、それはワールド座標系ではなく
視点座標系で指定してることになっちゃうと思う。
0317デフォルトの名無しさん2014/01/25(土) 18:04:10.19
テクスチャ(すでにロードしてあるもの)を頻繁に切り替えるのと
頻繁にLightのEnable/Disableを切り替えるのとどちらがコストが
高いのでしょうか?
0318デフォルトの名無しさん2014/01/25(土) 18:13:41.52
ライトの切替なんて不要になるからシェーダを使えよ。
なんで旧世代の遺物で無駄な苦労をわざわざするのか理解できない。
0319デフォルトの名無しさん2014/01/25(土) 18:31:48.96
>>316
ありがとう、そうします
>>318
いつでも最新のopenglが使える環境ばかりだと思うなよこのダボが
0320デフォルトの名無しさん2014/01/25(土) 18:56:55.66
>>317
そういう場合はまず自分で測ってみるといいよ。
0321デフォルトの名無しさん2014/01/25(土) 19:00:34.83
真上からってのもあるかも?
カメラのナナメ後ろから物体に向けて当てるくらいの気持ちでおkだよ。

ちなみに「むしろ暗くなる」のは正しい動作だと思う。
ライト計算ってのは、ほぼ
「ライトが当たってる以外の部分を暗くする」
処理だと考えていい。

例えばdiffuse色の計算では、0〜1の値を何度も掛け算する。
指定したdiffuse色が出るのは一番明るくなったときだけなんよ。

まあここにambientやspecular計算(これも0〜1の掛け算)したものが「足し算」されるから
その塩梅によってはdiffuseより明るくなることもあるけどさ。
だから「ほぼ」なんだけれども…感覚的には、やっぱそれぞれ最大値を指定してる感じになるよ。

この辺の計算を知る意味で、固定機能を使う人でもシェーダーは勉強になるよ。
機会があったら、やってみ?
0322デフォルトの名無しさん2014/01/25(土) 19:01:24.32
>>319
環境気にする奴が、実測しないで他の人に聞くことは滑稽だとは思わんかね
0323デフォルトの名無しさん2014/01/25(土) 19:21:55.58
>>319
ライトに必要になるシェーダなんて最新なんてほど遠いんだが。
いったい何をターゲットに開発しているんだ?
0324デフォルトの名無しさん2014/01/25(土) 19:24:42.36
これまでのまとめ

自分で測定するなんて面倒だし、新しい知識を勉強するなんてとんでもない。
お前らはただ聞いたことに答えていればいいんだよこのダボが。
0325デフォルトの名無しさん2014/01/25(土) 19:56:10.57
いつもの質問者さんやね
0326デフォルトの名無しさん2014/01/25(土) 20:14:30.41
シェーダを全く使えない環境て残ってんのかな
10年くらい前の話じゃないの
0327デフォルトの名無しさん2014/01/25(土) 20:24:05.73
プログラマの脳がシェーダを全く使えない環境なんだよこのダボが
03283172014/01/25(土) 20:54:17.02
ごめんよぉ・・・荒れる原因つくっちまって・・・。

シェーダーを調べてきたが、よく分からんかった。
光源の位置は今までどおりOpenGL側で設定する必要があるようだし、
どのポリゴンにどの光源の影響を与えるかの制御をシェーダーで
出来るようには見えなかったんだけど・・・可能なの?

とりあえずアタリを付けようと聞いてみたけど、自分で測ってみるわ・・・。
0329デフォルトの名無しさん2014/01/25(土) 21:06:57.04
可能も何もライトの計算をシェーダで書くのは基本なんだが、
いったい何を調べたんだ?
0330デフォルトの名無しさん2014/01/25(土) 21:11:56.23
これまでのまとめ

自分で測定するなんて面倒だし、新しい知識を勉強するなんてとんでもない。
お前らはただ聞いたことに答えていればいいんだよこのダボが。
ほら、譲歩してちょっと流し読みして調べてきてやったよ。
はぁ?まともに読む気なんかねえよこのダボが。
0331デフォルトの名無しさん2014/01/25(土) 21:14:40.61
最新の赤本読めよこのダボが
03323172014/01/25(土) 21:18:38.99
>>329
言い方が悪かったわ・・・。
シェーダーはCPU側のメモリにアクセスできないでしょ?
(OpenGLに入力された情報以外使えないでしょ?)
0333デフォルトの名無しさん2014/01/25(土) 21:21:14.07
uniform引数で与えろよ
0334デフォルトの名無しさん2014/01/25(土) 21:25:42.04
> とりあえずアタリを付けようと聞いてみたけど、自分で測ってみるわ・・・。

なんかなぁ・・・
0335デフォルトの名無しさん2014/01/25(土) 21:28:59.84
誤) とりあえずアタリを付けようと聞いてみたけど

正) とりあえずアタリを「付けてもらおうと」聞いてみたけど
0336デフォルトの名無しさん2014/01/25(土) 22:03:17.77
手を抜かないで、きちんとシェーダの基礎から順を追ってやって行けよ。
怠け者にもほどがあるだろう。
0337デフォルトの名無しさん2014/01/25(土) 23:37:15.43
ライトの位置等のパラメータをフラグメントシェーダのuniform変数にセット(glUniform*)
バーテックスシェーダからは法線ベクトルや頂点位置などのライティング計算に必要な情報を
フラグメントシェーダに渡す。
フラグメントシェーダでライティングを計算してピクセルの色を出力。

これが一番簡単なシェーダでライティングする方法かな
0338デフォルトの名無しさん2014/01/25(土) 23:45:31.08
>>337
それが基本だろうね。
俺はmat4にライト情報を格納して、その配列としてuniform変数を渡してる。
ただ、現状だと座標、Diffuse、Specular、Ambientで埋まってしまうので、
それ以外の情報を込めようとすると別の変数が必要になる。

ただ、光源側に光源側に各反射に対応したパラメーターを設定したのは2.xまでのOpenGLの仕様が
そうなっていたからそれをなぞっただけで、あんまり意味がない。
考えてみると、そんな反射ごとの光源強度が必要になる状況ってあんまりないから、
「座標」と「光源の強さ」の2列にまとめちゃっていいかなと思ってる。
そうすると残り2列あるから、いろんなパラメーターを持たせられるし。
0339デフォルトの名無しさん2014/01/26(日) 00:20:21.11
ニート、無職、フリーターがゲームを作るスレ6
ttp://toro.2ch.net/test/read.cgi/gamedev/1389441602/
0340デフォルトの名無しさん2014/01/26(日) 09:42:10.54
俺はもっと手抜きして、よく使うライト設定をシェーダ側に定数で書いちゃってたり。
複数のシェーダで共有するから、ファイルは分けて、ね。
0341デフォルトの名無しさん2014/01/26(日) 14:26:00.47
ガラスのような半透明素材を作成する時はどうすれば作れるんでしょうか?
0342デフォルトの名無しさん2014/01/26(日) 14:30:34.11
フレネル方程式を使う
0343デフォルトの名無しさん2014/01/27(月) 22:19:58.72
等方性反射のことも考えろ!
0344デフォルトの名無しさん2014/01/27(月) 22:33:53.26
>>343
そういうのはまだ求めていないと思う
0345デフォルトの名無しさん2014/01/27(月) 23:35:28.66
窓ガラスなのかガラスの置物なのかでずいぶん違うような
0346デフォルトの名無しさん2014/01/28(火) 00:15:26.55
ガラスのハートです。
0347デフォルトの名無しさん2014/01/28(火) 02:32:13.49
ガラスの十代
0348デフォルトの名無しさん2014/01/28(火) 02:35:03.00
普通に考えるとカーウィンドウみたいのだろ
0349デフォルトの名無しさん2014/01/29(水) 01:17:31.59
それなら、単純にDiffuse(0,0,0,0)でSpecular(1,1,1,1)にするだけでそれっぽい感じにならんかな?
環境マッピングとかやろうとするとけっこう面倒だけど。
0350デフォルトの名無しさん2014/02/10(月) 00:11:06.19
サイトを参考にしてこのコードでビルドしようとしたら
「1>glfw3.lib(gamma.obj) : error LNK2019: 未解決の外部シンボル __libm_sse2_pow_precise が関数 _glfwSetGamma で参照されました。」
とエラーになってしまいます
どうすればいいか教えてください

環境はWindows, VC++2010です

#include <glfw3.h>
#pragma comment(lib, "glfw3.lib")
#pragma comment(lib, "opengl32.lib")
int main(int argc, char *argv[])
{
GLFWwindow *window;
if(glfwInit() == GL_FALSE) {
return 0;
}
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if(window == NULL) {
glfwTerminate();
return 0;
}
glfwMakeContextCurrent(window);
while(glfwWindowShouldClose(window) == 0) {
// 描画コード追加
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
0351デフォルトの名無しさん2014/02/10(月) 00:20:54.19
>>350
そのエラーだとコードを書いても答えられない気がするが。
ライブラリにちゃんとパスが通ってるかとか、そっちの問題に見える。
0352デフォルトの名無しさん2014/02/10(月) 00:32:27.10
>>351の通りで、その未解決の外部シンボル名でググれば答えっぽいのが出てくる
0353デフォルトの名無しさん2014/02/10(月) 01:02:46.31
>>351-352
ありがとうございます

ソースの方もDLして見てみたんですが
glfwSetGammaでlibm_sse2_pow_preciseは使用されていませんでした
検索もヒットせずです
0354デフォルトの名無しさん2014/02/10(月) 02:06:01.74
バイナリの方は2012以降用でした
2010ではソースからビルドしないといけないみたいです

見落としてましたすみません
0355デフォルトの名無しさん2014/02/12(水) 13:18:18.36
そもそもglfwのライブラリがリンクできてないだけだろそれ
0356デフォルトの名無しさん2014/02/12(水) 16:47:48.69
>>355
glfw3.libを生成する時にリンクされたgamma.objの機能(glfwSetGamma)で使用されている
シンボル __libm_sse2_pow_preciseが未解決って意味だ

リンクできてなかったらglfwSetGammaが未解決になるだろバカか?
0357デフォルトの名無しさん2014/02/13(木) 00:36:21.79
>>355は適当に答えるのもどうかと思うが間違いにいちいち喧嘩腰でレスするなよ
0358デフォルトの名無しさん2014/02/13(木) 02:49:56.24
LWJGLのJava OpenGLに関する質問です。

Direct3D9では三角形リストで四角形の画像も表示していました。
OpenGLのインデックスバッファ(VBO?)には四角形(QUAD)もあるのですが、
どちらを使うほうが効率的でしょうか?

内部では全部三角形リストで処理しているから、そっちのほうが
良いのかなと推測してはいるのですが、教えてください。
0359デフォルトの名無しさん2014/02/13(木) 04:42:01.06
たぶん自己解決。

8角形とか4角形以外の図形が1つでも混ざる場合は全部3角形の組み合わせで
表現したほうが良いけど、四角形以外は絶対使用しない基本的な2Dアプリだと
4角形が良いみたい。
0360デフォルトの名無しさん2014/02/13(木) 09:10:22.26
> 8角形とか4角形以外
八角形と四角形を同一視している理由が判らん。
0361デフォルトの名無しさん2014/02/13(木) 11:30:36.37
>>360
凸凹←彼の中での八角形。
0362デフォルトの名無しさん2014/02/13(木) 11:31:41.38
5とか、7とか、8とか、etc... 4以外の〜ですよ
0363デフォルトの名無しさん2014/02/13(木) 11:47:52.02
八角形って四角を3つ繋げただけだろ
0364デフォルトの名無しさん2014/02/13(木) 11:55:36.01
>>360
おじいちゃん、今時は「〜とか〜」は必ずしも「〜や〜」を表わさないんですよ。
寧ろ「〜など、〜」の意味で使う若い人が多いんですからね。

>>359
このように齟齬が発生するからせめて読点で区切ってくれ。
0365デフォルトの名無しさん2014/02/13(木) 13:18:28.64
Mantleスレ立てようぜ
0366デフォルトの名無しさん2014/02/13(木) 22:28:49.31
glColor4f()ではなく、頂点カラーのアルファ値とアルファブレンドする方法ってありますか?
たぶんこんな感じかなと思ったのですが、上手くいきません。教えてください。

GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_BLEND);

GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_RGB, GL13.GL_TEXTURE0);
GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_RGB, GL11.GL_SRC_COLOR); // dirt texture colors

GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_RGB, GL13.GL_PRIMARY_COLOR);
GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_RGB, GL11.GL_ONE_MINUS_SRC_COLOR); // use vertex alpha to interpolate

GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_ALPHA, GL13.GL_TEXTURE0 );
GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_ALPHA, GL11.GL_SRC_ALPHA); // this texture's alpha (stage 0)

GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_ALPHA, GL13.GL_PRIMARY_COLOR);
GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // vertex alpha
0367デフォルトの名無しさん2014/02/14(金) 17:01:49.27
glBlendFuncの加算・減算とかの変更も反映されないし、諦めるわ
0368デフォルトの名無しさん2014/02/14(金) 17:09:53.14
OpenglESでリアルタイムに曲線を描画したいんだけど何かいい方法ないですかね
0369デフォルトの名無しさん2014/02/14(金) 21:25:26.72
なんで頂点属性しかlayout設定できないんだよ糞が
って思ってたらuniformやサブルーチンもできるようになってるんだな
ttp://www.opengl.org/wiki/Layout_Qualifier_%28GLSL%29

しかし4.3か・・・
ハードの機能じゃないっぽいし、Intelでも使えたら良いんだが
0370デフォルトの名無しさん2014/02/16(日) 08:42:38.59
GLUI使ってる方います?
なんかサンプルがバグバグなんだが、これはサンプルの問題なのかライブラリの問題なのか
0371デフォルトの名無しさん2014/02/16(日) 22:00:01.21
症状くらい書きましょう
0372デフォルトの名無しさん2014/02/16(日) 22:15:17.13
とりあえずテキストボックス回りで必ずハングする
見てみると範囲外アクセスなんだがそれを直すと今度は無限ループっぽい症状が出る、直せん
0373デフォルトの名無しさん2014/02/16(日) 22:38:03.76
ソースデバッグしないのか
0374デフォルトの名無しさん2014/02/16(日) 22:52:30.60
してる
だから小手先の修正では根本的な修正にならないと言う話
これがテキストボックスだけなのか、全体的にそうなのかもし経験してる人がいれば聞きたかった
0375デフォルトの名無しさん2014/02/16(日) 22:56:34.13
本当にしてるのか?
ハングするならその状態で止まるだろうし元を辿れるだろ
0376デフォルトの名無しさん2014/02/16(日) 23:02:44.72
つまり、ロジックから直さないといけなさそうだと思っている
時間かけて見てるわけじゃないからそれ以上はなんとも
0377デフォルトの名無しさん2014/02/17(月) 08:50:42.97
質問し返してる人がそのライブラリを使ったことあるのか無いのかよくわからない会話ですね
0378デフォルトの名無しさん2014/02/19(水) 16:46:19.58
OpenGLで読み込めるスキメッシュアニメのファイル形式はXファイルかFBXでしょうか?
0379デフォルトの名無しさん2014/02/19(水) 17:03:21.02
>>378
これを読めばわかると思うよ。
http://www.opengl.org/registry/doc/glspec44.core.pdf
0380デフォルトの名無しさん2014/02/19(水) 18:01:28.25
>>378
「OpenGLで読み込めるスキメッシュアニメのファイル」なんてのは存在しないよ。

OpenGLはただのグラフィックライブラリだから特定のモデルファイルを読み込む機能は
存在しないし、もちろんそれらのデータを適切に扱ってスキニングさせるヘルパー関数なんてのもない。
自分でパースするかそういうライブラリを使って読み込まないと無理。

逆に自分でパースしてデータ取り出して使うならデータ形式わかってるファイルならなんでもいける
0381デフォルトの名無しさん2014/02/19(水) 19:51:13.58
そういえば COLLADA ってどうなった?
とっくに死んだ?
0382デフォルトの名無しさん2014/02/19(水) 20:28:45.23
>>381
モデラからのスキニングデータの吐き出しに使ってたけどクソフォーマットすぎ
0383デフォルトの名無しさん2014/02/19(水) 20:53:15.00
エクスポートプラグインを自作し、
それを自分で読み込めばいいだけの話。
必要な情報が必要なときに必要なだけ使える。
0384デフォルトの名無しさん2014/02/19(水) 21:19:47.01
結局そこに行き着いたので今は幸せです
0385デフォルトの名無しさん2014/02/20(木) 08:41:03.85
エクスポートプラグインはどの3Dソフトでどのようにして作れますか?
0386デフォルトの名無しさん2014/02/20(木) 18:02:50.17
自作の3Dソフトで好きなように作れます
0387デフォルトの名無しさん2014/02/20(木) 22:12:04.85
お前の自慢はいいから
0388デフォルトの名無しさん2014/02/20(木) 23:07:28.17
>>385
使ってるモデラのプラグインの仕様を読んで作り方を調べろ
エクスポートプラグインの話とかになるとOpenGL関係ないからそのソフトのスレでどうぞ
0389デフォルトの名無しさん2014/02/21(金) 13:33:03.03
OpenGLってデバイスロスト起こさないんだね。
Androidだとコンテキストロストってのがあるらしいけど。
0390デフォルトの名無しさん2014/02/22(土) 01:09:58.87
>>389
JOGL経由で使ってると、ウィンドウのサイズ変更でデバイスロストしたりするよ。
その後の初期化は自動でやってくれるけど、もちろんVRAMは破壊されてるんで
VAOとかテクスチャは登録しなおしになる。
0391デフォルトの名無しさん2014/02/22(土) 12:15:07.36
Colladaって公式パーサライブラリあるけど
c++で書くのやめろや
0392デフォルトの名無しさん2014/02/22(土) 18:54:14.01
>>391
http://code4k.blogspot.jp/2010/08/import-and-export-3d-collada-files-with.html
0393デフォルトの名無しさん2014/02/25(火) 13:42:13.63
アカン
gluiとんでもない地雷や
そもそもがウィンドウ閉じたらプログラム終わりでしょって言うglut思想ベースなの持っ手伝ってか
仮想デストラクタなし継承
newするがdeleteしない
こんなのが当たり前

ファイル数が少ないからメンテしようと思えば
見た目のnodeシステムはフェイク、実際は包含される方のnodeを使って管理する
一部元のnodeも使ってるので二重管理、deleteが組み込めない
識別子として使われてる名前メンバーがgui表示名としても使われている

逆にこんなの公開出来る神経がすごいわ
0394デフォルトの名無しさん2014/02/25(火) 15:04:23.78
ブログにでも書いてろ
0395デフォルトの名無しさん2014/02/25(火) 21:26:49.89
スレが技術的な話題で盛り上がってる時なら同じ感想だが、
今の状況なら別に問題ないんじゃないか?
0396デフォルトの名無しさん2014/02/25(火) 21:39:51.89
すまん
openglと親和性のいいGUIライブラリって何があるかね?
windowsとmacで開発できてライセンスがLGPL程度に軽いヤツで
AntTweakは見たが見た目がいかにもでちょっと敬遠
wxWidgetが良さそうだがどうなんだろ
0397デフォルトの名無しさん2014/02/25(火) 22:00:37.83
Qt
0398デフォルトの名無しさん2014/02/25(火) 22:02:21.33
Gtk
0399デフォルトの名無しさん2014/02/25(火) 22:10:55.42
>>396
wxWidgetが良さそうだと感じるなら、使ってみたらいいと思うが
躊躇する理由は?

親和性なんてものはごく曖昧な指標で、感じ方は人によって違うんだから、
まずは使ってみて、どこか不満があればそれを具体的に挙げて、
それを改善できるGUIライブラリがないか質問すればいいんじゃね?
0400デフォルトの名無しさん2014/02/25(火) 22:15:30.07
>>399
別に躊躇はしてない
アーキテクチャがOSラッパというところに魅力を感じた
サンプルは意外と膨大でコードはぱっと見ではよくわからん感じ
openglのサンプルが少ないのが不安

>>398
おーしらなんだ
これは良さそうだ

>>397
Qtはライセンスどこまでがライブラリどこまでだかわからんから敬遠する
0401デフォルトの名無しさん2014/02/25(火) 22:31:00.61
>>396
Qt?
0402デフォルトの名無しさん2014/02/25(火) 22:32:25.89
QtはLGPLじゃん。
そもそもQt自体弄ることなんて無いし。
0403デフォルトの名無しさん2014/02/25(火) 22:56:01.87
使ったことないけどglui2とかいうのがどっかにあったよ
0404デフォルトの名無しさん2014/02/25(火) 23:34:32.03
ググったら見つかった
よさそう
皆ありがとう
0405デフォルトの名無しさん2014/02/26(水) 08:45:03.42
GLFW
0406デフォルトの名無しさん2014/02/26(水) 09:13:58.84
何度でもいうよ
GTKは糞
0407デフォルトの名無しさん2014/02/26(水) 10:05:23.74
何度も言わなくていいよ
0408デフォルトの名無しさん2014/02/28(金) 19:01:52.03
FreeGLUTでノートPCでOpenGLの3Dモデル(ただのドーナツ)描画したら、描画はされるけど常にモデルに黒い波線がうねうねするんだけど、
グラフィックカードが対応してない?
GeForceのGTM350とかなんだけど
04094082014/02/28(金) 19:02:41.74
同じソースで
デスクトップPCだと普通に表示されます
0410デフォルトの名無しさん2014/02/28(金) 19:49:55.64
再現できる最小ソースを書いてみ
0411デフォルトの名無しさん2014/02/28(金) 20:17:12.16
とりあえずスクリーンショットとソース上げればいいと思う
04124082014/03/01(土) 17:59:35.89
あんれー?別のサイトのソースだとオブジェクトに波線が出ない・・・・。
ってことはあのサイトのソースと環境設定がおかしかったのか?
グラボのせいではなかったようです。お騒がせしました。
freeglutのハッキリした文法をちゃんと解説しているサイトってないですかね?
0413デフォルトの名無しさん2014/03/01(土) 18:02:58.09
逆にモデルに波線うねうね出す方法を知りたいわ
0414デフォルトの名無しさん2014/03/01(土) 18:03:28.40
>>412
あのサイトと別のサイト貼ったらどこがおかしかったか教えてもらえるんじゃね
0415デフォルトの名無しさん2014/03/01(土) 18:14:04.92
Zバッファが重なるような位置に二度描きしてないか?
0416デフォルトの名無しさん2014/03/01(土) 18:17:56.00
http://www.natural-science.or.jp/article/20091109000118.php
ちゃんとかけたサイト

うねうねサイトは忘れましたが、ドーナツモデルを表示するだけのサンプルでした
0417デフォルトの名無しさん2014/03/01(土) 18:27:02.29
なんか、環境設定もまちまちで、ポリゴン表示させたはいいけど、
ちゃんと最終的な音やボタン入力まで実装したサイトってないですね。
しかも、結局、glutはダメとか抜かしてるし・・・・

DirectXに比べてどうとっかかっていいのか、信じていいのかわかりません
0418デフォルトの名無しさん2014/03/01(土) 18:39:42.40
OpenGLに入力デバイスやサウンド機能は存在しない
0419デフォルトの名無しさん2014/03/01(土) 18:47:40.84
>>418
ああ、そうでした。実行OSのサウンド、入力環境は別に組み込むんですよね。
いわゆる、OpenGLで売るゲームとかを作りたい場合、glutでなく、どうやって作ればいいのでしょうか?
0420デフォルトの名無しさん2014/03/01(土) 18:48:17.61
スレチ
0421デフォルトの名無しさん2014/03/01(土) 18:49:37.02
え?なんで?OpenGLの開発について聞いてるんだから合ってるでしょ?
0422デフォルトの名無しさん2014/03/01(土) 18:51:43.12
WindowsならWin32APIで作るのでしょうか?
0423デフォルトの名無しさん2014/03/01(土) 18:57:16.63
スレ違い
0424デフォルトの名無しさん2014/03/01(土) 19:06:51.91
まずはMSDN見れ。
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872084(v=vs.85).aspx

PixelFormatを決めてHDCに対応するOpenGLコンテキストを作ったら
wglMakeCurrentしてあとはふつうにOpenGLで描く。
0425デフォルトの名無しさん2014/03/01(土) 19:09:33.86
ぶっちゃけwindowsで動けば良いんだったらdirectX使えば良いと思う
他OSに移植予定があるならコンテキストデバイス部分だけ自分で作ってあとはそれを隠蔽しつつ
openglでちまちま作る
0426デフォルトの名無しさん2014/03/01(土) 20:15:21.98
昔はWin32APIでウィンドウ作ってそこにOpenGLで描画してたけど最近はGLFW使ってるわ。
ゲームだったらSDLとかでもいいんでね?

>>425が言うようにWindowsで動きゃいいなら悪いこと言わないからDirectX使えばいいと思うよ
0427デフォルトの名無しさん2014/03/02(日) 10:17:53.34
>>424 >>425
普通のOpenGLの関数の書き方ってどこに載っているのでしょうか・・・・? どこもglutの関数ばっかで・・・。

>>426
GLFW調べてみましたが、こっちの方がゲーム向きみたいですね。
0428デフォルトの名無しさん2014/03/02(日) 10:30:13.76
>>427
http://www.opengl.org/
ぶっちゃけこれくらい自分で調べられないようならゲーム作成なんて絶対不可能なので諦めたほうが良い
0429デフォルトの名無しさん2014/03/02(日) 10:40:07.54
ゲーム作りたいだけならUnityとかのゲームエンジン使うという手もあるよ
0430デフォルトの名無しさん2014/03/02(日) 10:59:03.66
OpenGL敷居高すぎワロタ
0431デフォルトの名無しさん2014/03/02(日) 11:00:23.20
>>427
mmdagentがオープンソースでGLFW使ってるから見てみたらいいかも
0432デフォルトの名無しさん2014/03/02(日) 11:05:57.66
>>431
なにこれすごい・・・・ありがとうございます。
0433デフォルトの名無しさん2014/03/02(日) 13:26:00.29
>>430
不義理したのか
0434デフォルトの名無しさん2014/03/02(日) 14:21:57.07
>>433
ああ・・・間違った日本語でしたね。ハードル高すぎワロタ
0435デフォルトの名無しさん2014/03/02(日) 17:03:10.56
OpenGLはこれを読んで, GLFWとかQtの使い方さえわかれば使えるんだから楽勝じゃん
http://www.opengl.org/registry/doc/glspec44.core.pdf
0436デフォルトの名無しさん2014/03/02(日) 17:41:25.70
glGenVertexArraysを実行すると既存の値と
かぶる値が戻ってくるんだが
これはドライバのバグかね?

GPUはFirePro系。

glGenBuffersはちゃんと空き番号が帰ってくるんだが・・・。
さて困った。
0437デフォルトの名無しさん2014/03/02(日) 17:43:03.38
>>436
ソースを上げたら、誰かが検証してくれるかもしれん

お前さんのところの環境のせいか、それとも書き方が悪いか
0438デフォルトの名無しさん2014/03/02(日) 17:59:28.11
>>437
おお、早いレスありがとう。
ただ、ソースと言っても該当部分に何かできる余地もないと思うのだが・・・。
↓これの2行目のvaoに既存の値が入る。

uint vao;
GL.GenVertexArrays(1, out vao);
GL.BindVertexArray(vao);
GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);

環境はラッパとしてOpenTKを使いC#で制作中。
OS:Win8.1、GPU:FireProW5000、VS2010

オブジェクト内の描画用初期化コードの一部として上記の記述があり。
アプリ起動時にオブジェクトを生成する際はvaoに重複が発生しない。
アプリ起動後、動的にnewしたオブジェクトのみ重複する。
ただしその場合もvboやらiboやらは重複した値が帰ってくることはない。

GL1.1時代から触っていますが
gen系が重複した経験は記憶にないなぁ・・・と。
0439デフォルトの名無しさん2014/03/02(日) 19:19:26.78
全ソース(できれば完全なビルド環境)を上げないと、
ドライバのバグかどうか他の人の環境で検証することができない。
0440デフォルトの名無しさん2014/03/02(日) 19:26:35.00
OpenGLスレの「ソース上げろ」って、「ぶぶ漬け」みたいなもんかもな。
どうせ言った本人は見る気ないだろうし。
0441デフォルトの名無しさん2014/03/02(日) 19:26:56.50
容量小さいならプロジェクトごとzipで上げてくてたらビルドして検証するがー
0442デフォルトの名無しさん2014/03/02(日) 19:27:56.59
>>440
でも上げたほうが解決しやすいのは事実だし、上げたくなきゃ上げなくてもいいんじゃないかな
0443デフォルトの名無しさん2014/03/02(日) 20:12:09.91
どっちかというと、「ソース上げなきゃ回答しない」かな。>ぶぶ漬け
0444デフォルトの名無しさん2014/03/02(日) 20:26:28.69
>>440
上げろなんて言ってないし、上げて欲しいとも言ってないよ

>>442 の言うとおり、上げないと他の環境で検証できない、という事実を言ってるだけ
0445デフォルトの名無しさん2014/03/02(日) 20:27:46.54
最小ソース作る過程で、己の馬鹿さ加減に気付かせるためだよ
(自分の馬鹿さに気付いた例>>412)
0446デフォルトの名無しさん2014/03/02(日) 20:41:57.00
そうだな、環境依存なら最小のコードで再現出来るはずだし
そうでないならどっかで間違えてるわけで
0447デフォルトの名無しさん2014/03/02(日) 21:28:28.01
>>445
いいこと言った。

>>438です。
最小コード使ってる過程で原因の箇所がわかりました。

MakeCurrent()でアクティブなGLControlを切り替えると
GenVertexArraysの既存ステート値がクリアされるようです。

ちょおまっ複数ターゲットどうしろと・・・。
0448デフォルトの名無しさん2014/03/02(日) 21:39:06.67
>>447
確認なんだが、MakeCurrent で切り替えて、GenVertexArrays で値が重複して、
それで結局望み通りのレンダリングはされないのか、それでもされているのか、どっち?
0449デフォルトの名無しさん2014/03/02(日) 21:46:48.59
>>448
ポリゴンが壊れるな。
別のVBOに対し別のVAOで動くことになるから
当然っちゃ当然だな。

最終的にメモリ外参照して落ちる。
ポリゴンが壊れる場合もたまたま落ちなかっただけだと思われる。
0450デフォルトの名無しさん2014/03/02(日) 22:36:55.21
GLControlを元に戻してもダメなん?

リセットされてるのか、別々に番号が割り当てられている
(GLControl_Aの1番とGLControl_Bの1番は同じ番号でも別物)
のか、で話が変わると思うけど
0451デフォルトの名無しさん2014/03/03(月) 00:26:52.53
コンテキストが違うなら当然じゃないのか?
0452デフォルトの名無しさん2014/03/03(月) 00:58:01.38
俺もそう思った
C#で使ったことがないからなんでContextじゃなくてControlって名前してるのか引っかかるが
0453デフォルトの名無しさん2014/03/03(月) 02:42:00.39
>>450
駄目ですね・・・。
controlがいくつあろうとGPUは一つなんで関係ないかと思っています。

>>451
>>452
GenBufferは問題なく一意の値が帰ってくるんですよ・・・。
GenVertexArraysだけが臍をまげるのです。

明日会社の環境でテストしてみます。
それでも駄目だったら
VAOを使わない描画かコードの組み方を考えてみます。

みなさんありがとうございました。
0454デフォルトの名無しさん2014/03/03(月) 05:17:57.05
ほれ
ttp://www.opengl.org/wiki/OpenGL_Context

>Not shareable
> Framebuffer Objects
> Vertex Array Objects
0455デフォルトの名無しさん2014/03/03(月) 07:55:31.81
>>453
一意じゃなくても別contextなら問題ないんじゃないの?
0456名前は開発中のものです。2014/03/03(月) 14:05:41.44
シェーダコードのデバッグってみんなどうしてるの?
ソース見てひたすら考える感じ?
ステップ実行・インスペクト系の処理ができるような環境なり
エミュレータみたいなものがあるの
0457デフォルトの名無しさん2014/03/03(月) 14:31:16.34
こんなのあるな
http://www.vis.uni-stuttgart.de/glsldevil/

printf が使えるのはGLSLじゃなくてOpenCLだったか
0458デフォルトの名無しさん2014/03/03(月) 21:38:09.31
去年NVIDIAでOpenGLがステップ実行できるようにならなかったっけ?
ニュースレターで見た
0459デフォルトの名無しさん2014/03/03(月) 22:39:03.61
バッファオブジェクトってコンテキスト間で共有できるのか・・・
裏のスレッドでVRAMにアップロードするための機能なのかな
0460デフォルトの名無しさん2014/03/03(月) 22:49:00.97
もともと何のための機能なのかは知らんけど、別ウィンドウに拡大表示とかでよく使うな。
0461デフォルトの名無しさん2014/03/04(火) 01:27:17.61
>>454
>>455
それだ!
GUI側の操作を受けてnewしている部分で
カレントのcontrolが異なっている可能性のある部分があった。
Thx!
0462デフォルトの名無しさん2014/03/04(火) 01:53:55.82
>>456
値を確認したい変数をRGB値に変換してフラグメントシェーダから出力してるよ。
1000x1000の大きさのフレームバッファに出力して数個のピクセルだけ異常があるようなときでも
簡単に調査できるよ。

例えばNaNが発生しているような気がしたら
color = isnan(hoge) ? vec4(1.0) : vec4(0.0);
0463デフォルトの名無しさん2014/03/04(火) 02:37:13.34
printfデバッグですら大変すぎですなあ
0464デフォルトの名無しさん2014/03/09(日) 00:12:59.42
OpenGLのデプスバッファってなんの値が入ってるの?
どうも視点からの距離じゃなく、z座標を規格化しただけっぽいんだが
0465デフォルトの名無しさん2014/03/09(日) 09:46:24.60
>>464
openGLの実装がどうなってるかは知らないけど
たいていは射影変換でnear-farクリップのプレーン間を 0.0-1.0 に変換したあと
Zバッファの深度に応じてスケーリングされる
昔はZバッファって16bitでintとかだったから
与えられたビット幅を可能な限り有効に使うため

あと素人が書く入門サイトとかでは触れてないことが多いけど
実際は射影変換したあとクリッピングボリュームってのが絡んでくるからね
ようは射影変換したあとの可視範囲を(-1.0〜+1.0)におさめて
クリッピングはこれに対して行いましょうってやり方
そのあとビューポートやZバッファの深度に合わせて再度スケールされる
DirectXのリファレンスだとちゃんとこういうの書いてある
0466デフォルトの名無しさん2014/03/09(日) 09:50:48.21
上のはクリップっていうかポリゴンのシザリングのことね
0467デフォルトの名無しさん2014/03/09(日) 12:39:58.79
規格化って正規化のことか
0468デフォルトの名無しさん2014/03/09(日) 13:55:22.97
>>464
http://wgld.org/d/webgl/w069.html
参考までにどうぞ
ここに書いてあるようなことは頭の隅に置いておけ
0469デフォルトの名無しさん2014/03/09(日) 14:08:35.85
こういう日本語の記事ってつい数年前までほぼなかったよなあ・・・ありがてえなあ・・・
0470デフォルトの名無しさん2014/03/09(日) 14:17:52.81
それ日本語をありがたがってるだけでしょw
0471デフォルトの名無しさん2014/03/09(日) 14:22:14.71
みんなレスありがとう
0472デフォルトの名無しさん2014/03/09(日) 19:43:59.46
>>468
ミルクかかってないぞ
0473デフォルトの名無しさん2014/03/10(月) 13:52:05.40
OpenGLが受け取る変換行列は列オーダー(column major)だから気をつけろよ!みたいな解説を見かける事が多い気がします。 >>468 のサイトもそうです。(「OpenGL は行列が列オーダー」云々)
こんなのは単なる転置なんだから、このシステムでは位置ベクトルは行ベクトルなんだな変換行列は右側から掛けていくんだなって理解してしまえば、
CやJavascriptでのリテラル表記どうり(row major)の行列と解釈できると思うんです。
そういう理解だと、何か不都合があるんでしょうか?
0474デフォルトの名無しさん2014/03/10(月) 17:07:23.48
自分が理解し易いやり方で良い
正解は常に一つじゃない
0475デフォルトの名無しさん2014/03/10(月) 17:16:16.16
>>473
同じだと理解できるまでは違うと思っていればいいじゃない
いちいち詳しく説明するのは面倒だし
0476デフォルトの名無しさん2014/03/10(月) 17:31:16.74
公理を用いて証明し定理を生産
0477デフォルトの名無しさん2014/03/11(火) 10:41:20.25
>>473
一応補足しておくがfloat[]に転置させて渡すのは
数学的な理由じゃないからね
行列xベクトルをSIMDで処理するときにその並びのほうが
処理ステップが少なくて済む(高速化)って理由だから

ためしにMMXやSSE3で書いてみれば転置させて渡したほうが
必要な命令数だいぶ少なくなるって分かる
GPUの演算ユニットだと→方向への加算できるのかもしれないが
そこまでは詳しくないので済まん
0478デフォルトの名無しさん2014/03/12(水) 03:09:02.47ID:yIAelRYu
>>473
この話は順番飛ばすと混乱する。
きちんとわかってて、説明求められたら1から順に説明できるんならいいけど、なんかちょっとあやふやな印象。

まずベクトルと行列の数学上の定義
数ベクトル に対して、次のような連立一次式があったとして、

y0 = a00*x0 + a01*x1 + a02*x2
y1 = a10*x0 + a11*x1 + a12*x2
y2 = a20*x0 + a21*x1 + a22*x2

こいつらを、

|y0|  | a00 a01 a02 | |x0|
|y1|= | a10 a11 a12 | |x1|
|y2|  | a20 a21 a22 | |x2|

と表したとき、真ん中のa~~が行列で、X=(x0,x1,x2)^T, Y=(y0,y1,y2)^Tが(列)ベクトル。
まぁここまでは今更な話だろうけど。
そして次に、この数学上の行列を「一次元の配列」であるメモリ上でどう表現するか、という純粋にプログラム的な規約の問題として、行優先と列優先がある。

// 行優先パック row*3 + column
matrix[] = { a00, a01, a02, a10, a11, a12, a20, a21, a22 };

// 列優先パック column*3 + row
matrix[] = { a00, a10, a20, a01, a11, a21, a02, a12, a22 }
0479デフォルトの名無しさん2014/03/12(水) 03:29:03.75ID:yIAelRYu
>>478のつづき

つまり、行優先か列優先かっていうのは、位置ベクトルが列ベクトルとかなんかとは本質的に無関係。
上では列ベクトルとして行列とベクトルの積を、 Y = A X と定義したけど、
行ベクトルとして行列との積を、 Y = X A^T と定義したところで、それとは無関係に行優先パックとか列優先パックの違いがあるわけよ。

普通数学で一般的に使うのは列ベクトルで Y = A X 。当然パック方法なんてない。
OpenGLは列ベクトルの Y = A X で列優先パック。
DirectX(の数学ライブラリ)だと行ベクトルの Y= X A なので、リファレンスなんかに載っている式は、OpenGLや教科書を基準に見ると、転置されている。
でも行優先パックなのでメモリ上の並びはOpenGLと同じ。

こういう違いがあるわけだけど、ホントに単なる転置って理解でいいの?
実装であるところのパッキングの問題を、仕様であるところの行列や位置ベクトルの定義の話にもってちゃっていいの?
0480デフォルトの名無しさん2014/03/12(水) 18:40:59.53ID:/4Gye9c6
やっと、わかってる奴が出てきたか
0481デフォルトの名無しさん2014/03/12(水) 19:47:45.27ID:gaRf+Hfn
もしかしてベクトルコンピュータのベクトルと混同してたとか
0482デフォルトの名無しさん2014/03/12(水) 20:06:43.73ID:FRDf8EDB
へえー、自分は>>473じゃないけど最適化由来の理由があったと聞いてちょっと感動した。
ベクトルの内積をとるような便利な命令がない前提だと、
>>478の表記で言えば、
y=ai0 * x0 + ai1 * x1 + ai2 * x2という形でベクトルとスカラーの積の和に出来るってところがいいって理解であってる?
0483デフォルトの名無しさん2014/03/15(土) 17:05:22.93ID:oF+7Lqrp
glfwを使っているのですが、glfw側で用意されたデプステクスチャをシェーダに渡したり、
フレームバッファにデプステクスチャをアタッチさせることは出来ますか?
それとも、フレームバッファを自前で用意したほうがいいのでしょうか?
0484デフォルトの名無しさん2014/03/18(火) 14:00:20.79ID:MzFSA0SP
Khronos Releases OpenGL ES 3.1 Specification
https://www.khronos.org/news/press/khronos-releases-opengl-es-3.1-specification
0485デフォルトの名無しさん2014/03/18(火) 14:11:57.32ID:oMQpjzAC
>>483
GLFWにテクスチャを扱う機能なんてあるの?
0486デフォルトの名無しさん2014/03/18(火) 14:30:57.47ID:WqrW8ZvK
普通にテクスチャ作ってglUniform1iで渡したらええがな
04874832014/03/19(水) 15:15:13.25ID:x+vEWRl5
GLFWでウィンドウを開くときに、デプスバッファが用意されるようなので
それをテクスチャとしてシェーダに渡したいと思ったのです
それができないなら、テクスチャを作ってそれをフレームバッファにデプスバッファとしてアタッチさせようかと

しかし、どっちもできなそうなので自前でフレームバッファを用意することにします
0488デフォルトの名無しさん2014/03/19(水) 21:27:50.29ID:kQ1IY4eW
DrawElementの発行回数減らすためにダミー頂点挟んで
ストリップ連結して1つにするとかやると思うんだけど
このとき挟んだダミー頂点から生成される厚さ0のライン状のポリゴンて
かならずフラグメントが発生しないって仕様で保障されてるの?
環境によってはプチプチピクセルが出現したりすることあるのかな?

(自分のマシンで実験した限りでは発生してないんだが)
0489デフォルトの名無しさん2014/03/19(水) 22:16:56.63ID:B8wiGESF
>>487
なんか勘違いしてない?
デプスバッファの内容をテクスチャに書き込めばシェーダに渡そうがフレームバッファに描画しようが好きにできるだろ
GLWFなんも関係ない
0490デフォルトの名無しさん2014/03/19(水) 22:34:36.36ID:yu8LCYN5
>>488
縮退ポリゴンの事だと思うけどDDAの仕組みを考えると絶対何も表示されない
つうかそれが前提でないと困るよ
04914832014/03/19(水) 23:02:57.47ID:x+vEWRl5
>>489
glReadPixelで読みこんでもいいのですが、それだとテクスチャを再びGPUに送らなければいけないので
どうせならそのままテクスチャとしてシェーダからアクセスできたらいいなと思いました
そこでGLFWが用意したフレームバッファにアクセスする必要があるのですが、どうも勝手がわからず・・・
0492デフォルトの名無しさん2014/03/20(木) 01:18:25.37ID:jxMC6q3W
このへん読んどけよ
ttp://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/
0493デフォルトの名無しさん2014/03/21(金) 13:34:46.86ID:qPMBZTLx
初歩的な質問ですみません。

原点(0, 0, 0)から、奥の方(-Z方向)を真っすぐ見ている状況を想定しています。
次のような透視投影を使います。
視野角:60度
アスペクト比:1.0
ニアクリップ:0.0
ファークリップ:100.0

gluPerspective()で設定するとしたら次のような感じです。
gluPerspective(60.0f, 1.0f, 0.0f, 100.0f );

この透視投影行列を使って点(5.0, 5.0, -5.0)を変換すると、
点(7.84843, 7.84843, 5.0)が得られました。

この点の値が意味するところがよく分からないのです。
はたして、この点が画面に表示される(視錐台に収まっている)かどうか、この値から判断がつくものでしょうか?
それはどうやって判断できるものなのでしょうか?
ビューポートのサイズはウィンドウサイズに合わせてあるものとします。

よろしくお願いします。
04944932014/03/21(金) 14:14:38.42ID:qPMBZTLx
すみません、いろいろ勘違いしていたようです。
自己解決しました。
0495デフォルトの名無しさん2014/03/21(金) 17:46:38.14ID:jnzVoV9V
ニアクリップ:0.0 は止めとけ
0割になる
0496デフォルトの名無しさん2014/03/21(金) 18:31:54.12ID:QeCe9VPu
(far - near)が0ならともかく、near : 0なだけだと問題無いだろ
0497デフォルトの名無しさん2014/03/21(金) 18:48:13.65ID:nJlJvtIp
>>496
正射影なら兎も角、透視射影なら問題大ありだ
0498デフォルトの名無しさん2014/03/21(金) 19:42:17.33ID:5AwbqaOE
そのへんは射影変換の行列みれば分かる
分母が0にならないからって油断するな
ttp://www.opengl.org/sdk/docs/man2/xhtml/gluPerspective.xml
0499デフォルトの名無しさん2014/03/21(金) 21:01:49.79ID:W082XsHq
system32にfreeglut.dll置いたのに、VisualC++でビルドして実行時にfreeglut.dllが見つかりませんと出る
XPSP3 32bit
05004992014/03/21(金) 21:07:56.20ID:W082XsHq
ごめん、大丈夫だった
0501デフォルトの名無しさん2014/03/21(金) 21:44:10.00ID:HFjZE4d5
>>499
そのやり方後々バグ出る
0502デフォルトの名無しさん2014/03/21(金) 22:21:15.54ID:QeCe9VPu
>>498
知らなかったそんなの…
0503デフォルトの名無しさん2014/03/21(金) 22:22:52.36ID:W082XsHq
>>501
いろんなサイトや本に書いてるやり方なんだけど・・・・kwsk
0504デフォルトの名無しさん2014/03/21(金) 23:37:48.63ID:2OBuLZX+
nearをゼロに出来ないなんてどんな嫌がらせだよ
0505デフォルトの名無しさん2014/03/21(金) 23:54:52.34ID:5AwbqaOE
nearを小さくしすぎるとデプスバッファの精度が超絶劣化するから気を付けろ
0506デフォルトの名無しさん2014/03/21(金) 23:57:48.38ID:HFjZE4d5
>>503
dll呼び出す時のソース
0507デフォルトの名無しさん2014/03/22(土) 00:01:35.09ID:qO9k1Urx
そうはいってもオブジェクトにカメラを近づけなくちゃいけないときには面倒なんで0にせざるを得ない…
その時は遠くのオブジェクトは見えないから精度が劣化してもわからん
0508デフォルトの名無しさん2014/03/22(土) 00:13:17.68ID:I2olUI8G
行列の中身を見た感じだと
nearをゼロにしたらZがどんな値でもデプス値が1になって
前後の判定ができなくなるのではないだろうか
05094932014/03/22(土) 00:24:34.20ID:di8SnZWV
ニアがゼロってことは、目の前というか、目と同じ位置にスクリーンがあるのと同じだから、視野角が意味なさなくなるよね
物理的にもおかしいよね
ニアがマイナスになった日にはもう異次元の世界だよね
0510デフォルトの名無しさん2014/03/22(土) 00:50:42.43ID:qO9k1Urx
>>509
それは違うぞ
0511デフォルトの名無しさん2014/03/22(土) 13:36:45.37ID:di8SnZWV
あれ、違うんですか
どうもすみませんでした
0512デフォルトの名無しさん2014/03/22(土) 15:54:44.13ID:Zm8O6+DW
GLSLの本を購入しようと思ってるんですが、お勧め有りますか?

自作のPCゲームでGLSLを使いたいと思ってます。
0513デフォルトの名無しさん2014/03/22(土) 16:15:52.89ID:+XA3shYN
・OpenGL 4.0シェーディング言語 : 実例で覚えるGLSLプログラミング
0514デフォルトの名無しさん2014/03/22(土) 16:38:37.11ID:Zm8O6+DW
>>513
ありがとうございます。

PDF版(3千円)を購入しようと思います。
0515デフォルトの名無しさん2014/03/22(土) 17:29:07.58ID:utEIm5iw
>>511
nearに0を入れるとなにも表示されなくなる
限りなく0に近い値でもOK
0516デフォルトの名無しさん2014/03/22(土) 19:44:26.88ID:di8SnZWV
>>515
nearがマイナスでもそうですね

それはそうと、法線の変換にモデルビュー行列の逆行列の転置行列を使う意味がやっと分かった。
3D計算って奥が深いですね。
0517デフォルトの名無しさん2014/03/23(日) 10:54:41.43ID:hA0dR83D
ES2.0(Android/Java)で頂点をVBOじゃなくてFloatBufferで渡す場合って
インターリーブに出来ないんだっけ?
どっかでサンプル見た記憶があったんだが
0518デフォルトの名無しさん2014/03/23(日) 10:58:43.08ID:J+Rs1swr
>それはそうと、法線の変換にモデルビュー行列の逆行列の転置行列を使う意味がやっと分かった。
おしえて
0519デフォルトの名無しさん2014/03/23(日) 12:49:01.23ID:hqNhlXg+
>>518
行列の回転成分を残し、拡大縮小成分の逆数をとるためですよ
0520デフォルトの名無しさん2014/03/23(日) 13:25:03.38ID:4YJkTOZd
>>518
http://hau.sakura.ne.jp/blog/2010/06/opengl.php
http://d.hatena.ne.jp/h013/20130325/1364229762

ちなみに上のほうで話題になっていた行列のメモリ上の配置の問題とは
分離して考えよう
こちらは純粋に数学的な理由
0521デフォルトの名無しさん2014/03/23(日) 13:38:01.27ID:4YJkTOZd
http://www.iwata-system-support.com/CAE_HomePage/vector/vector10/vector10.html
回転行列の逆行列が転置に等しいってのはここの最初の2つ
0522デフォルトの名無しさん2014/03/23(日) 13:39:06.80ID:hqNhlXg+
>>520
最初のブログに書かれている「拡大縮小は法線に関係ない」ってのは間違ってるよね
各軸方向に均等な拡大縮小は関係ないけど、不均等な拡大縮小は法線に影響を与える
むしろ、その不均等な拡大縮小を考慮したがゆえの、「逆行列の転置行列」であり、そもそも
不均等な拡大縮小をしないんであれば、回転行列をそのまま法線にかければいいだけ
0523デフォルトの名無しさん2014/03/23(日) 13:52:04.71ID:SYaQzFW/
拡縮なければ(あるいはあっても各軸のスケールが同じ)なら、
そのままの行列使っていいのかな?
0524デフォルトの名無しさん2014/03/23(日) 13:59:33.93ID:hqNhlXg+
それでいい。移動成分は不要。4x4行列の左上3x3 の部分だけ使う。
但し拡大縮小したら正規化は必要
0525デフォルトの名無しさん2014/03/23(日) 16:17:49.05ID:VESVr2dC
拡縮なければ転置と逆行列はイコールだから元の行列に戻る
だからそのままで良くなる
0526デフォルトの名無しさん2014/03/24(月) 08:18:25.12ID:ePCbQSRQ
スケールは分けておく実装もあったなあ
0527デフォルトの名無しさん2014/03/24(月) 10:18:45.07ID:RmApgLiR
glutでidleで物体を移動させるとダブルバッファにしてもチラつきまくるんですが、こんなものなの?
タイマーにしたら緩和されたけど、数秒に1回ぐらいチラつきが出る
0528デフォルトの名無しさん2014/03/24(月) 10:31:18.60ID:O8NGFxpj
glutはダメな子だから・・・
0529デフォルトの名無しさん2014/03/24(月) 10:54:27.13ID:16BiIMXL
A付きのFBOをターゲットにしてレンダリングする場合
アルファブレンドオフにしてるときはそのまま出力アルファが書き込まれるみたいだけど
アレファブレンド有効にしてるときターゲットに書き込まれるアルファ値がどうなってるかの
詳細な仕様てどこかにある?

具体的には今アルファに拡張情報仕込んでるFBOがあって
このFBOへレンダリングする物体で半透明を使う必要が出てきた
RGB成分に関してはFragColor.aに指定した値でターゲットとブレンドが行われているようだが
Aには一定の値が書き込まれているみたい

フラグメントシェーダからブレンドに使う係数と
ターゲットに書き込みたいA値を別に指定して出力できるとベストなのですが
0530デフォルトの名無しさん2014/03/24(月) 11:04:10.69ID:16BiIMXL
それかopenGLにDirectXのWRITEENABLEに相当するような機能ってあります?
それがあれば最悪2passでなんとか出来るのですが
0531デフォルトの名無しさん2014/03/24(月) 11:41:43.60ID:1jbdRmYb
知らんがな (´・ω・`)
0532デフォルトの名無しさん2014/03/24(月) 11:44:57.56ID:O8NGFxpj
何がしたいのかわからない
というかシェーダ使ってるならシェーダで指定した値になるんじゃないの
0533デフォルトの名無しさん2014/03/24(月) 12:40:15.40ID:16BiIMXL
>>532
オフスクリーンレンダリング用に用意したRGBA32のFBOに
RGBにはそのままカラー要素をレンダリングして
Aには特殊な拡張情報を仕込んでレンダリングしているのです
(ポストエフェクトのため)

それでアルファブレンドを使わなくて良い物体に関しては
シェーダが出力した拡張情報であるAがそのままターゲットのFBOに書き込まれているのですが
アルファブレンドしたい物体の場合、ブレンド係数のアルファと
ターゲットに出力したい拡張情報としてのAの2つを出力する必要があるじゃないですか?
シェーダが出力したFragColor.aはブレンド係数のほうに使用されていて
レンダリングターゲットのFBOには出力と関係ない一定の値が書き込まれているのです
これら2つの値をどうにかして正しく処理したいなと

ちなみにes2.0なのでMRTは使えません
2passにすればどうとでもなるけど1passで何とか出来ないかなぁ?ということです
0534デフォルトの名無しさん2014/03/24(月) 13:18:50.91ID:O8NGFxpj
だったらデータ形式次第で何らかのエンコードを考えるかもしれないが
デコードの手間も考えると素直に2passしたほうが早いかもねえ
0535デフォルトの名無しさん2014/03/24(月) 19:49:27.51ID:zwLLqb3C
>>527
idleの中でdrawしちゃってるとか?

glutたまに使うけどそんなことなったことない
0536デフォルトの名無しさん2014/03/25(火) 07:49:26.65ID:WPZQG3hr
idleの意味わかってんのか?
0537デフォルトの名無しさん2014/03/25(火) 09:31:03.90ID:NqwPbggM
>>535
ちゃんとidleの中で再描画関数読んでます。
freeglutのコンパイルとか、h libファイルの配置がおかしいのかなあ・・・・
0538デフォルトの名無しさん2014/03/25(火) 10:53:37.06ID:nPd16FLQ
idleの意味わかってんのか?
0539デフォルトの名無しさん2014/03/25(火) 11:00:43.79ID:WPZQG3hr
わかってねーじゃねーか
0540デフォルトの名無しさん2014/03/25(火) 12:38:41.86ID:0Mc0Odtw
>>537
idleの中で物体をいっさい動かさず、再描画だけでもチラつく?

ティアリングなんじゃないかね
0541デフォルトの名無しさん2014/03/25(火) 14:32:43.06ID:NqwPbggM
>>540
再描画だけでも似たようなテンポで物体がチラつきます
ティアリングというものを調べましたが、多分そんな感じだと思います。
0542デフォルトの名無しさん2014/03/25(火) 19:04:43.61ID:S7B6RAgr
ダブルバッファになってないとかSwapBufffers抜けてるとか?
0543デフォルトの名無しさん2014/03/26(水) 01:00:09.60ID:/NYCJuvH
>>542
ダブルでもシングルでもブレますし、ダブルの場合はdisplay関数の最後でSwapBuffersで出力しています
0544デフォルトの名無しさん2014/03/26(水) 01:15:36.30ID:2qZH+Y/Y
ソースうp
0545デフォルトの名無しさん2014/03/26(水) 01:16:29.15ID:/NYCJuvH
http://www21.atwiki.jp/opengl/pages/30.html
ソースはこれのまんまです。freeglutのincludeパスだけ少し違いますが。
0546デフォルトの名無しさん2014/03/26(水) 01:29:13.82ID:pk7k+LuU
垂直同期は?
0547デフォルトの名無しさん2014/03/26(水) 04:49:07.03ID:Gi3gxxGu
>>545
glutCreateWindowとglutInitDisplayModeの順序が逆じゃね?
freeなglutは使ったこと無いけど、オリジナルなglutだと
createしてからdisplayModeを変えることはできなかった気がする
05485452014/03/26(水) 11:55:48.60ID:/NYCJuvH
>>547
ビンゴです!順番変えたらノイズが出なくなりました!ありがとうございます!!
0549デフォルトの名無しさん2014/03/26(水) 12:19:13.83ID:/l0s7arr
だからglutはダメな子だと最初に言ったのに・・・
0550デフォルトの名無しさん2014/03/27(木) 15:44:10.12ID:Nw+Vt/UM
今更ながらOpenGLで2Dでアニメーションさせるコードを書いています。
一つの画像ファイルに複数の画像を詰め込んでテクスチャ座標の変化で各コマを表現する奴。
想定環境はOpenGL3.2以上でシェーダーとVBOが使えること。

数フレーム毎に次のコマに進める為、
最初は予め全てのコマの頂点配列(とVAO)を個別に作成して
glBufferData(...,GL_STATIC_DRAW)でGPU側に全部転送しておく実装でした。

次に、コマ数が増えそうなので頂点配列(とVAO)はアニメーション一組につき一個にして、
テクスチャ座標を動的に書き換える方法に変更しようとしました。
(続く)
05515502014/03/27(木) 15:47:39.39ID:Nw+Vt/UM
(続き)

glBufferData(...,GL_STREAM_DRAW)にして
数フレームおきにglBufferSubDataかglMapBufferで書き換えることで動作したのですが、
glMapBuffer->memcpyを使った場合妙に遅くなってしまいました。
(旧式のglVertex3f他を使った時よりFPSが下がった)
理由が解る人は教えて下さい。

追記:
四角形描くだけなのでインターリープ配列は使っていません。
実験した環境はFreeBSD+GeForce GT 640です。
ここら辺の詳しい資料へのリンクとか2Dアニメは普通こうやる、
とかいう話でもいいので教えてください。
0552デフォルトの名無しさん2014/03/27(木) 17:39:49.26ID:6kTPs5DW
DirectXならXファイルの2つのアニメーションを合成して描画(走る + 銃を構えるなど)したりできたけど、OpenGLではどうやるの?
0553デフォルトの名無しさん2014/03/27(木) 18:40:40.29ID:IQ0PA/Xd
>>551
勘違いしてるかもしれんけど
頂点もuvも全部固定の1個でテクスチャ座標をフレーム数(コマ番号)から計算で求まるようにしといて、
頂点シェーダーにフレーム数だけ渡してuvを計算しなおせばいいんじゃないの?
0554デフォルトの名無しさん2014/03/27(木) 22:59:22.10ID:gBpmgjyr
>>522
行列をブレンドする
DirectXだろうがGLだろうが中でやってることは変わらんよ
0555デフォルトの名無しさん2014/03/28(金) 09:01:43.13ID:MmgvLmhj
>>554
もうちょっと具体的に
05565512014/03/29(土) 12:07:46.79ID:5FKJCnSn
>>553
成程、確かにそれでもできますね。
アニメーションのフォーマットもUniform変数で設定すればいいのか。
その方が確かに速そうだしやってみるか。

glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(tc_data), tc_data);
/* void* p = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
memcpy(p, tc_data, sizeof(tc_data));
glUnmapBuffer(GL_ARRAY_BUFFER);*/

上のコードでglMapBufferが異常に遅い原因は知りたいけど……
0557デフォルトの名無しさん2014/03/29(土) 14:09:34.51ID:e2zP+zl7
本当に mapping するかどうかは環境次第だから君の環境で調査しないと何とも言えん。
0558デフォルトの名無しさん2014/04/01(火) 18:40:37.52ID:NT5gPl2j
glRoteted(), glTranslated(), glScaled()って結局、
ワールド座標基準の動きなの?ローカル座標基準なの?
ローカル原点を動かしているんだよね?
0559デフォルトの名無しさん2014/04/01(火) 19:18:32.50ID:aMX7Kq9u
current matrix っていわゆるローカルだと思うけど?
0560デフォルトの名無しさん2014/04/02(水) 03:19:01.01ID:cBhNW89o
>>558
「ローカル原点を動かしている」って解釈は危うい気がするなあ

それらの関数やglLoadIdentity(),gluLookAt()などがやってるのは「行列」と呼ばれる…まあフィルターみたいなもんだ、それを弄ること
描画などでOpenGLに頂点データを渡したら、まず行列を使って変換してから処理される

感覚的には、使った命令の逆順に変換されてるように感じるかと思う
glLoadIdentity(),glLookAt(),glTranslate(),glRotate()の順で使ったら
渡されたデータは原点を中心に回転され、平行移動され、カメラ基準の座標に直され、そして描画される感じ
0561デフォルトの名無しさん2014/04/02(水) 13:21:17.25ID:9Deqp9zU
未だにOpenGL1.0を弄ってる奴ってなんなの?
0562デフォルトの名無しさん2014/04/05(土) 13:43:01.89ID:FSMAkWqC
ここは過疎スレですね
0563デフォルトの名無しさん2014/04/07(月) 18:50:29.05ID:iUtuS61k
>>561
Minecraftも1.2使ってるみたいよ。
0564デフォルトの名無しさん2014/04/07(月) 19:28:11.45ID:Pq6AaFst
Blender もそうだったような
0565デフォルトの名無しさん2014/04/10(木) 11:04:31.99ID:VhSUYyzn
人こねぇーな
OpenGLもオワコンか
0566デフォルトの名無しさん2014/04/10(木) 11:38:47.80ID:kLuqm+tK
はいはいオワコンオワコン
0567デフォルトの名無しさん2014/04/11(金) 17:21:46.62ID:LLNBgEtC
freeglutの最新版使ってますけど、どうやったらOpenGLの最新版になるんでしょうか?
0568デフォルトの名無しさん2014/04/11(金) 20:22:37.09ID:eO6NRIJx
君の3Dアクセラレータが最新版でドライバも最新版ならOpenGLも最新版だよ
0569デフォルトの名無しさん2014/04/12(土) 02:10:56.43ID:zuiRAUii
実際、OpenGLってゲームじゃ全然使われてないよな
DirectXが完全に支配してる
0570デフォルトの名無しさん2014/04/12(土) 05:15:29.65ID:jnsRXNx1
Windowsと箱以外はほぼOpenGLベースなんだが…
0571デフォルトの名無しさん2014/04/12(土) 09:24:57.83ID:zuiRAUii
ジョンカーマックすらOpenGLを使わなくなってる
ハイエンドのゲーム開発だとOpenGLは完全にオワコン
0572デフォルトの名無しさん2014/04/12(土) 12:02:01.21ID:luCmHrCI
それはOpenGLが後追いだから仕方ない。
いずれ追いつくし、DirectXが衰退するのをただ待ってりゃいい。
0573デフォルトの名無しさん2014/04/12(土) 12:15:23.94ID:8gocQFQH
>>570
OpenGLはスマフォで一気に利用率上がったんじゃないかね
0574デフォルトの名無しさん2014/04/12(土) 13:22:17.55ID:1s7xEy3p
マルチプラットフォームならOpenGL一択だわな
0575デフォルトの名無しさん2014/04/12(土) 14:31:15.14ID:jnsRXNx1
PS3、3DSでもESが採用されとるし、最近ではWebGLとかも出てきた
まあそもそも任天堂はDSの時点で、ポリゴン系のAPIはかなりOpenGLを意識したものだったが…
0576デフォルトの名無しさん2014/04/12(土) 16:25:29.47ID:exSVuN7F
>>571
カーマック大先生は既にゲームを作る意欲無くしてるだろ
OpenGLを使わなくなった=DirectXに乗り換えただとでも思ったのか?
0577デフォルトの名無しさん2014/04/12(土) 16:30:12.07ID:/aZ3ncPV
今どきのWindows厨がいるようだね
0578デフォルトの名無しさん2014/04/12(土) 16:56:03.57ID:U3ze+O2N
大規模なゲームとかって、エンジンで抽象化してんじゃないの?
0579デフォルトの名無しさん2014/04/12(土) 17:14:18.69ID:zuiRAUii
PS4独占とかのタイトルなら専用のAPI使うけど、マルチタイトルだとDirectXで作って、それぞれのプラットフォームにポーティングする
最大の問題点はOpenGLの設計が古くて低機能な事で、まるっきり作り替えるしかない
0580デフォルトの名無しさん2014/04/12(土) 17:20:11.36ID:emJMsePW
>>579
そういう作り方をしている具体的なメーカーの名前を挙げてみろ。
それが当然という書き方をしているからには相当数あるんだろうね。
妄想の中ではさ。
0581デフォルトの名無しさん2014/04/13(日) 01:57:56.69ID:mQlmfoKU
初心者で数学知識に不安があるのでテンプレの数学必読書を一冊やってみようと思っているのですが、
どれが特におすすめでしょうか?
0582デフォルトの名無しさん2014/04/13(日) 11:20:10.33ID:zh1SAf7r
まあ、どれもほとんど一緒だけど、
ゲームプログラミングのための3Dグラフィックス数学 が一番網羅されてる感じ
わかりやすいかどうかは知らんが
0583デフォルトの名無しさん2014/04/13(日) 15:55:58.44ID:mQlmfoKU
>>582
ありがとうございます。
できるだけ網羅されたものを求めていたのでそれにしてみようと思います。
0584デフォルトの名無しさん2014/04/13(日) 22:54:20.14ID:HS3AfBd+
                       _,,,-‐-、,,-─-、,,
                        ,,-─'' -、  ,,ニ二、 ゙ヽ
                      / ,r'" _,,r'ヾヽ  ゙ヽ ヽ ゙l、
       ─┼‐           // ,,r'"    ^ヽヾ ヽヾ i、
        ○           // / /        |ヾ l、ヽ   i、
.         ノ         ,l,// /          | ゙l゙l゙l ゙l  i i
          ヽ        ,l/l l,l/  _    _ ,!  |ヾl |゙l l ゙l
.          ⌒l      ///⌒l ‐''"ヽ     ,,r‐\ !l:ト、ヽ | ゙|
           ノ  ヽ  _//||(く| /;;;;;;;;;)-‐-/;;;;;,,,、ヽ .iレ⌒l l ゙l
           _,, ⌒l  ノ l゙lヽl ヾ;;;;;;/   l;;;;;;;;;;;;;〉  li /〉l ハヽ
        _,,-‐''"   ノ    !llしl   ~〈   .ノ`''‐-"   .|i,// l | |ヾ
      /  ヾ ヽ    う  l || l ゙l   (l ,/-   / :/|ノ人゙l、゙l::
     ,,i"      ヾ ヽ      丿|! ト、 l  __二、_   /  :/|川::::::`ー、゙
.   ,i        ,-‐、   __,,⊥─,ニて二-   ,i"   |川;|:::::::::::::::
   ,i       l⌒l  i_-=''" ;;;ノT~ヾ     /_,,-''",ノ|;l /:::::::::::::
    |.       _,⊥┤  ゙l,,,-‐T^ヽ  ゙i |     /"  ,/ リ /:::::::::::::::
     _,,,-‐''"::::::::;l   |  ゙l  ト、 ゙i ゝ──" ,,r'"  ./::::::::::::::::::
   -''"::::::::::::;;;-r'''i     '   ,'   i l \/ミrーく\ ,/::::::::::::::::::::
   ::::::::_,,-'''   | l   ノ(  i    |      |  ,,l `":::::::::::::::::::::::::
    -'''     ゙l |   ⌒   i  /  !     ゙> <:::::::::::::::::::::::::::::::::::
          ゙l ゙         /     /   ゙::::::::::::::::::::::::::::::::::
0585デフォルトの名無しさん2014/04/15(火) 12:14:46.53ID:HPAdKYCa
その数学の書籍だけど、たまによくわからない記号が出てくるんですが、

〜
-- ←こんなの「大なりイコール」みたいな感じで上で波で下が棒線

わかる人いますか?
0586デフォルトの名無しさん2014/04/15(火) 12:25:15.22ID:VWlnt6i2
https://ja.wikipedia.org/wiki/%E7%AD%89%E5%8F%B7#.E7.AC.A6.E5.8F.B7.E4.BD.8D.E7.BD.AE
0587デフォルトの名無しさん2014/04/15(火) 13:11:12.59ID:HPAdKYCa
>>586
漸進的に等しい、ホモトープ
というのですか。
なるほど、わからん。

ありがごうございます!
0588デフォルトの名無しさん2014/04/15(火) 13:12:48.41ID:TLIi7JxU
ホモソープ?(難聴)
0589デフォルトの名無しさん2014/04/15(火) 17:38:34.45ID:4pClfs1i
ホモスレはここですか?
0590デフォルトの名無しさん2014/04/16(水) 13:07:45.78ID:1x2LuEWO
            , '´  ̄ ̄ ` 、
          i r-ー-┬-‐、i
           | |,,_   _,{|
          N| "゚'` {"゚`lリ     や ら な い か
             ト.i   ,__''_  !
          /i/ l\ ー .イ|、
    ,.、-  ̄/  | l   ̄ / | |` ┬-、
    /  ヽ. /    ト-` 、ノ- |  l  l  ヽ.
  /    ∨     l   |!  |   `> |  i
  /     |`二^>  l.  |  | <__,|  |
_|      |.|-<    \ i / ,イ____!/ \
  .|     {.|  ` - 、 ,.---ァ^! |    | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
__{   ___|└―ー/  ̄´ |ヽ |___ノ____________|
  }/ -= ヽ__ - 'ヽ   -‐ ,r'゙   l                  |
__f゙// ̄ ̄     _ -'     |_____ ,. -  ̄ \____|
  | |  -  ̄   /   |     _ | ̄ ̄ ̄ ̄ /       \  ̄|
___`\ __ /    _l - ̄  l___ /   , /     ヽi___.|
 ̄ ̄ ̄    |    _ 二 =〒  ̄  } ̄ /     l |      ! ̄ ̄|
_______l       -ヾ ̄  l/         l|       |___|
0591デフォルトの名無しさん2014/04/27(日) 15:00:46.63ID:vp8B5YyM
GLFW3でマウスドラッグ中に頂点を描画したいのですが上手くいきません
static void cursorpos_callback( GLFWwindow* window, double xpos, double ypos ){
 if ( glfwGetMouseButton( aWrap->getWindow(), GLFW_MOUSE_BUTTON_LEFT ) ){
  std::cout << xpos << ", " << ypos << std::endl ;
  glBegin( GL_LINES );
   glColor3d( 0,0,0 );
   glVertex2d( 10, 10 ) ;
   glVertex2d( 100, 100 ) ;
  glEnd();
  glFlush();
 }
}
このコールバックを、
glfwSetCursorPosCallback( window, cursorpos_callback );
これで登録したんですが、ウィンドウに描画されないんです
std::coutの出力は端末に出るんですが
05925912014/04/27(日) 15:02:00.96ID:vp8B5YyM
if ( glfwGetMouseButton( aWrap->getWindow(), GLFW_MOUSE_BUTTON_LEFT )
これは
if ( glfwGetMouseButton( window, GLFW_MOUSE_BUTTON_LEFT )
これの間違いでした
05935912014/04/27(日) 15:09:01.83ID:vp8B5YyM
色々おかしかった…何度もごめん
static void cursorpos_callback( GLFWwindow* win, double xpos, double ypos ){
 if ( glfwGetMouseButton( g_window, GLFW_MOUSE_BUTTON_LEFT ) ){
  std::cout << xpos << ", " << ypos << std::endl ;
  glBegin( GL_LINES );
   glColor3d( 0,0,0 );
   glVertex2d( 10, 10 ) ;
   glVertex2d( 100, 100 ) ;
  glEnd();
  glFlush();
 }
}
int main() {
...
glfwSetCursorPosCallback( g_window, cursorpos_callback );
...
}
05945912014/04/27(日) 15:25:07.51ID:vp8B5YyM
main関数内のループで↓を回したら描画されました
コールバックで上手くいかなかった理由はわからんです
double xpos, ypos;
glfwGetCursorPos( g_window, &xpos, &ypos );
glBegin( GL_LINES );
 glVertex2d( 0, 0 );
 glVertex2d( xpos, ypos );
glEnd();
0595デフォルトの名無しさん2014/04/27(日) 18:45:39.30ID:uHVXxm2I
>>591
コールバック関数にブレークポイント置いたり、printf入れてみたりする、いわゆるデバッグってのをしてみたらどうよ
0596デフォルトの名無しさん2014/04/28(月) 04:53:09.88ID:zQG2SC7g
>>595
言われてから自分なりにデバッグしてみました
while (! glfwWindowShouldClose( g_window ))
{
 glClear( GL_COLOR_BUFFER_BIT );
 glfwSwapBuffers( g_window );
 glfwPollEvents();
}
コールバック関数にブレークポイントを置いてステップ実行すると、
マウスのイベントはglfwPollEvents()でポーリング(?)されました
 glfwSwapBuffers( g_window );
 glfwPollEvents();
これを
 glfwPollEvents();
 glfwSwapBuffers( g_window );
こっちに入れ替えるとチラツキながらコールバック関数内の描画が反映されました
公式ドキュメントでは前者の順序で書いてあるので、これは
コールバック関数内で描画をするなってことになるんですかね
0597デフォルトの名無しさん2014/04/28(月) 04:58:28.69ID:CuLw9jaa
コールバック内でglfwSwapBuffersすりゃ良いじゃん
0598デフォルトの名無しさん2014/04/28(月) 05:09:25.34ID:zQG2SC7g
>>597
それだとメインループと合わせて1ループで2回以上スワップすることにならない?そういうのも普通に有りなの?
0599デフォルトの名無しさん2014/04/28(月) 08:35:08.48ID:vjxMtYtL
>>596
glClearしてからすぐにSwapbufferしたら画面になにも出てこないにきまってる
glClearとSwapbufferの間で描画。これ基本。

PollEventsはいろんなイベント処理だから、そのなかで描画するとどのコールバックが何描画してるかわけわかんなくなるし、
イベント処理が無い時は何も描画しない(=チラつく)

PollEventsではフラグ立てたり、マウス位置保存したりだけして、
glClearとSwapBuffersの間で1度だけ描画関数を呼ぶのが普通のやりかた
0600デフォルトの名無しさん2014/04/28(月) 12:32:41.93ID:zQG2SC7g
>>599
そうなりますよね
基本通りにやってみます
ありがとうございました
0601デフォルトの名無しさん2014/04/29(火) 12:57:49.31ID:QVS0IsZT
現在通称ひまわり本で勉強しているのですが、
質問があります。

FBOを使った毎フレーム2パス描画のアルゴリズムを実装する場合、
サンプルプログラムによっては1パス目でFBOを使ってテクスチャに書き込んだ後に、
glFinish()やglFlush()を呼んでいるのですが、
#多分2パス目でテクスチャを参照する際に確実に書き込まれているようにという意図だと思われる
これって必要なのでしょうか?

2パス目(FBO標準に戻して全画面一枚絵描画等)の時点で1パス目の更新が完結している保証があるかどうか知りたいです。
どなたかご存知の方、ご教授ください。
0602デフォルトの名無しさん2014/04/29(火) 19:59:52.25ID:bqnQOPU/
glVertexAttribPointerをVBO有りと無しで併用したとき
なんか注意することある?
0603デフォルトの名無しさん2014/04/30(水) 01:33:57.89ID:4192FpQw
>>601
不要
OpenGLはポリゴンを指定された順番で描画する
2パス目のポリゴンを描画できるということは
1パス目の描画はすべて完了しているということだ
0604デフォルトの名無しさん2014/05/02(金) 15:03:51.06ID:Cd4tkU62
DirectXからの移行を考えて勉強したいんだけどオススメってひまわり本でいいの?
あとOpenGLってオブジェクトをGluintで識別しててわかりにくいんだけど、
みんなはクラスでラップしてる?
0605デフォルトの名無しさん2014/05/02(金) 18:54:27.45ID:G8Q5FRYK
GLuintでわかりにくいから、というよりは、必ず書くおきまりのコードを何度も書くのが嫌だからクラスでラップしてる
0606デフォルトの名無しさん2014/05/03(土) 09:24:23.18ID:xWVeQAuG
OpenGLの仕様をよく理解しないままラッパー書いて、よく自爆してる
0607デフォルトの名無しさん2014/05/03(土) 16:51:27.81ID:xWVeQAuG
あほ言ってすまんかった
0608デフォルトの名無しさん2014/05/03(土) 23:54:53.79ID:r5vGDKEL
シェーダとテクスチャとジオメトリでそれぞれラッパクラス作ってる
自分の使う機能しか実装してないけど
06096012014/05/05(月) 13:52:01.95ID:YfxW3sI9
>>603
情報Thanks!!他のサンプルでは入ってないし、
glFinish呼ぶとグラボのファンが五月蝿いので疑問だったんだ。

>>604
ひまわり本はシェーダーのコードはともかく、
OpenGL側のサンプルプログラムに割と酷い部分があるので注意。
具体的には、
・glDelete系による後始末を一切していない
・使用していないメンバ変数やコードが結構ある
・頂点データ生成のコードに関しては一切説明が無く、
章が進むと同名のソースが密かに機能Upしていたり、仕様変更がされていたりする。

ただし、扱っている題材は幅広く説明も要点を抑えた感じでかなりイイ。
06106012014/05/05(月) 14:14:05.53ID:YfxW3sI9
あとこれは勘違いかもしれないけど、
ひまわり本の一部のサンプルのテクスチャ座標の扱い上下逆なんじゃないかという気がする。
鬼の顔のモデルにテクスチャで陰影つけたりする奴とか本の写真の通りになる?
06116012014/05/07(水) 16:44:19.65ID:cM2EPKcB
↑自己解決したので追記。
ひまわり本ではPNGファイルのロードにQtのconvertToGLFormatを使っているが、
この関数、内部でY軸反転させている模様。
ひまわり本内では一貫してテクスチャ座標は左下が(0,0)で右上が(1,1)としているので、
間違ってるわけではなさそう。

Qtのオンラインリファレンスに書いてないのはひどいなぁ。
#もちろんひまわり本内にも書いてない。
0612デフォルトの名無しさん2014/05/07(水) 18:20:51.07ID:wv3j6qW2
PNGフォーマットって、左上からデータが詰まってるわけで
0613デフォルトの名無しさん2014/05/08(木) 08:43:27.40ID:OpdZaJwZ
Y軸反転は基本
0614デフォルトの名無しさん2014/05/08(木) 19:06:22.08ID:sX1IT6Ab
Android寄りの話題もここでいいのかな?

フロントバッファの内容を確認したいんだけど、トリプルバッファリング方式の
キャリア(4.1.2)でいざフレームバッファを読んでみるとある時は#0(0x0〜)、
ある時は#1(0x1FE000〜)、ある時は#2(0x3FC000〜) がフロントバッファに
アドレッシングされていて決め打ちで読めない現象に悩まされてる

仕方ないのでAndroidのソースを調べ始めたんだけど、OpenGLのフリップ関係の
制御は全て eglSwapBuffers 一本から始まると考えて大丈夫ですか?
もし他にもフリップを誘発する経路が存在するようであれば教えて下さい
0615デフォルトの名無しさん2014/05/15(木) 00:21:54.92ID:Mg+FK4Ur
OpenGL2.1にあるglGetTexImage()がOpenGL ES2.0には無くて困っています。
ES2.0ではオフスクリーンで描画した画像をCPU側に持ってくるには、
一端画面に表示してglReadPixels()で取ってくるしかないのでしょうか?
0616デフォルトの名無しさん2014/05/15(木) 00:24:12.84ID:IesTMlJ0
FBOだったら画面に表示しなくてもglReadPixelできるのでは?
0617デフォルトの名無しさん2014/05/15(木) 01:17:00.51ID:Mg+FK4Ur
>>616
なんとFBOから出来るのですか。出来ないと思い込んでました。
やってみます。ありがとうございました。
0618デフォルトの名無しさん2014/05/17(土) 16:11:03.84ID:/suBVetd
OpenGLでムカつくこと
ttp://cpplover.blogspot.jp/2014/05/opengl.html
0619デフォルトの名無しさん2014/05/17(土) 18:03:37.25ID:An41yh6m
> Global context stateとbinding patternはクソだ。

主にこれが最大の糞。
0620デフォルトの名無しさん2014/05/17(土) 18:10:55.05ID:OH3OiQwq
>>618
そのドワンゴ社員、結構英語適当なのに、怒濤のように翻訳してるんだよね。安かろう悪かろうなのも仕様の内ってことなんだろうけど。
0621デフォルトの名無しさん2014/05/17(土) 18:21:59.50ID:CIZJhZT4
>>618-619
そんなに嫌なら
wrapper書くか
OpenGL自体使わなければいいのに
0622デフォルトの名無しさん2014/05/17(土) 19:25:27.82ID:/suBVetd
仕事でやむなく使わざるを得ない場合もあるわさ
クロスプラットフォームでは唯一の選択肢だし
0623デフォルトの名無しさん2014/05/18(日) 05:43:15.89ID:Co4EsaPX
ゲーム業界でOpenGLがオワコンなのは事実
0624デフォルトの名無しさん2014/05/18(日) 06:08:45.59ID:v6pzKKFa
もしかして本人登場か?
0625デフォルトの名無しさん2014/05/18(日) 06:23:11.19ID:Nx4TL0Zo
Drawなんとかするたびにレンダリングステートを指定するように設計するとオブジェクト指向なライブラリは作りやすいかもしれない。
しかし, GPUへ送るデータ量が増えてしまう。
データを予めバインドして, レンダリングステートを設定しておけば
DrawするときにGPUへ送るデータ量は少なくて済むし
次にDrawするときは必要最低限のレンダリングステートの変更で済む。
GPUとCPU間のデータ転送は遅めなので, 少しでも高速化できるようなAPI設計になっている。
0626デフォルトの名無しさん2014/05/18(日) 07:00:44.71ID:NNjUoszT
違う、問題はそこじゃない
0627デフォルトの名無しさん2014/05/18(日) 11:19:43.45ID:bOS8p9Zr
glTexImage2Dとかひどいよなぁ。
特定のbindingのありなしで引数の意味まで変わるとか、あれはないわ。
0628デフォルトの名無しさん2014/05/18(日) 11:31:37.27ID:c000QlqK
同意せざるを得ない
バッファに結びつける場合は別の関数名にすべきだよなあ
0629デフォルトの名無しさん2014/05/18(日) 13:15:24.69ID:vXasxGe8
古代のポリモルフィズムだと思えば
その程度のことは気にならない
根本的な問題は別のところにある
0630デフォルトの名無しさん2014/05/18(日) 13:39:44.11ID:gRfNBFCL
>>629
聞いてやるから言うてみ
0631デフォルトの名無しさん2014/05/18(日) 23:09:13.53ID:GHmo1AGN
glXXXf, glXXXi とかやめて><
0632デフォルトの名無しさん2014/05/18(日) 23:11:29.52ID:FQ7Rxnkg
悪評名高いハンガリアン記法だっけ?
0633デフォルトの名無しさん2014/05/18(日) 23:26:09.51ID:BExb4OPW
その命名法は仕方ないと思う、C言語からでも使えにゃならんし
むしろ頭をglの2文字やGL_の3文字で済ませてることが怖いくらい
0634デフォルトの名無しさん2014/05/19(月) 08:39:40.52ID:r9gcZ5l6
最初ダサくて嫌だったがそこはもう慣れたわ
0635デフォルトの名無しさん2014/05/19(月) 08:41:35.45ID:6L2g2kAx
優秀なラッパーでお薦めはなに?
0636デフォルトの名無しさん2014/05/19(月) 10:50:59.22ID:W/1J5/qo
KREVAとか
0637デフォルトの名無しさん2014/05/19(月) 11:24:37.77ID:g5MJun4k
MantleやD3D12
DLやGLFW
0638デフォルトの名無しさん2014/05/19(月) 18:19:53.09ID:ynsqm7j/
ところでMntleってどうなったの
0639デフォルトの名無しさん2014/05/19(月) 19:06:59.10ID:qsr8sp2f
コンソールのプログラマ以外には関係ない
0640デフォルトの名無しさん2014/05/19(月) 23:14:09.67ID:U4JsCCwu
宇田川町にはシスコもねぇ
0641デフォルトの名無しさん2014/05/20(火) 02:24:00.10ID:tT+zvDnf
でもまあハンズならあるよ
0642デフォルトの名無しさん2014/05/20(火) 09:19:20.40ID:fBuypSNQ
画像処理みたいなのをやりたいのですが、
例えば画像の最大輝度を得るには
glReadPixelsなどでやるしかないのでしょうか?
Fシェーダで輝度が見えてるから値を
メモできればいいのにとか思ったのですが。
0643デフォルトの名無しさん2014/05/20(火) 23:09:14.55ID:by0oi/CJ
普通は、フラグメントシェーダの出力としてどこかのバッファに出力してやる。
画像はテクスチャとして渡し、シェーダの各スレッドがそれぞれテクスチャのある範囲の
最大輝度を求めて出力する。これを2回とか3回繰り返して最終的に1つの値を得る。
0644デフォルトの名無しさん2014/05/20(火) 23:17:27.90ID:/lJbxDlg
フレームバッファを極小に縮小すればいいだけじゃなくて?
0645デフォルトの名無しさん2014/05/20(火) 23:20:38.21ID:IbdZVAjT
昔はミップマップから得るのが定石だったな
06466422014/05/21(水) 10:45:21.39ID:yZM+yAfC
Fシェーダからなんとかバッファと
やりとりできるんですね。
調べてみます。
みなさんレスありがとうございました。
0647デフォルトの名無しさん2014/05/21(水) 15:11:37.87ID:pp2ngTqP
OpenGLなんて知らないけど
幅が半分のテクスチャを用意して、フィルタなしで幅半分に縮小、端はクリップ
シェーダで右隣と比べて輝度が高い方を出力
幅が1になるまで繰り返す
高さ方向も似たのを繰り返す
残った1点が輝度最大のやつです

ふつー主記憶に置いて縦方向に分割してCPUで並列処理か、VRAM上でOpenCL
0648デフォルトの名無しさん2014/05/21(水) 23:28:31.32ID:8DtWSjmA
テクスチャをあらかじめ半分にするのはどういう意味があるんだ?
0649デフォルトの名無しさん2014/05/22(木) 09:47:02.67ID:rusYBd1x
OpenGL4.4だとatomic演算が使えるから, atomic maxとか使えば1passで簡単に最大輝度を求められるんじゃないか?
そのかわり、OpenGL3世代以前だと使えないけど。
0650デフォルトの名無しさん2014/05/22(木) 23:33:55.12ID:hLL7iQq6
その場合まったく並列化されないから、下手したらホストに転送してCPUで求める方が速いということも。
速度は気にせず、コードが単純な方が良いということならいいけど。
0651デフォルトの名無しさん2014/05/23(金) 15:34:47.42ID:oJ1Z/eF1
VBOってメッシュアニメーションみたいに毎フレーム座標が変化するようなやつでも使えるんでしょうか?
それでもVBOじゃないより早くなるんですか?
0652デフォルトの名無しさん2014/05/26(月) 11:54:23.42ID:l5tRv2X5
>>651
もちろん使える

https://developer.apple.com/jp/devcenter/ios/library/documentation/OpenGLES_ProgrammingGuide.pdf
これの87ページあたりから読んでみれば

このドキュメントはiOS用だけどOpenGLに関わる人は必読だよ
OpenGLで日本語の実践的なドキュメントとか皆無だからAppleには足向けて寝れない
0653デフォルトの名無しさん2014/05/26(月) 12:06:42.58ID:l5tRv2X5
>>651
ちなみに頂点いじる場合はシェーダーでやった方がいいだろうね
0654デフォルトの名無しさん2014/05/26(月) 17:59:36.70ID:4IYPvdHH
キャラとデコボコ地形とのあたり判定の場合、DirectXならD3DXIntersectとかレイを飛ばす関数があるんですが、
OpenGLではどうやって判定しますか?
0655デフォルトの名無しさん2014/05/26(月) 18:23:20.85ID:RQvTQ9F6
座標系の違いに注意しつつD3DXIntersectを使う
0656デフォルトの名無しさん2014/05/27(火) 10:24:21.57ID:vq4/jPEu
>>653
シェーダで頂点配列とか渡す方法がまだわからないので調べてきます
0657デフォルトの名無しさん2014/05/27(火) 19:13:04.82ID:sc2Gp3qx
誰かOpenGL4.0以降に特化した日本語OpenGLサイト作って
日本の3Dグラフィックスの中心になるようなの
よろしく
0658うぜぇ2014/05/27(火) 19:28:26.35ID:ynKJdYKP
誰か

よろしく
0659デフォルトの名無しさん2014/05/27(火) 19:34:04.48ID:vwK3Zsni
http://wgld.org/
0660デフォルトの名無しさん2014/05/28(水) 00:25:59.80ID:Nst+aLx9
別にOpenGLに特化しなくても問題ないし日本語じゃなくてもいいよ
0661デフォルトの名無しさん2014/05/28(水) 00:37:34.09ID:Dsgx8CT+
スーパーバイブル読めと
0662デフォルトの名無しさん2014/05/28(水) 07:24:46.97ID:8pIXW7AP
和訳欲しい
0663デフォルトの名無しさん2014/05/29(木) 14:45:28.52ID:TNXiJzhp
iPhoneの本読んでるんだけど、MacのOpenGLは行ベクトルなの?
WindowsやAndroidだと列ベクトルだよね?
0664デフォルトの名無しさん2014/05/29(木) 21:09:38.72ID:/xPvXgoN
自分で決めるべきことをOSが決めると思っている馬鹿はいったい何なんだろう?
0665デフォルトの名無しさん2014/05/29(木) 22:43:13.99ID:N9H85KiB
フレームバッファオブジェクトってスレッド間で共有できないんですか?
何が共有できて何ができないのか一覧が欲しい…。
0666デフォルトの名無しさん2014/05/29(木) 22:48:33.44ID:TNXiJzhp
え、DirectXは行ベクトル、OpenGLは列ベクトルって色んなサイトや本で書かれてるけど・・・・
自分で決めるものなの?
0667デフォルトの名無しさん2014/05/29(木) 22:49:59.61ID:N9H85KiB
すいません使い方間違えてました。
問題なかったす。
0668デフォルトの名無しさん2014/05/30(金) 14:06:36.95ID:J2vd6dyP
行ベクトルと列ベクトルの違い
・本とかブラウザで行列を表示する時の書き方
・行列演算ライブラリでの引き数の並び (掛ける掛けられるの左右)
→これはライブラリ実装者の考え方の違い
変わらないもの
・メモリ上の各要素の並び
→だからソースコードに行列を書き込む時の並びや演算結果は全く同じ
はまりポイント
・本に書いてある行列をソースに書き写す時にOpenGLの場合は見た目上転置してないと駄目
さらに深い話し
・行列の掛け算をSIMD演算する場合にブロードキャスト演算(積和演算)を使うか内積を使うか
→積和演算は列ベクトル、内積を使う場合は行ベクトルと考えると自然
0669デフォルトの名無しさん2014/05/30(金) 17:19:44.19ID:fPzQi8o5
GLSL で m[0] とかやったら、行列の第0列ベクトルが返る。
0670デフォルトの名無しさん2014/05/30(金) 17:29:10.23ID:+2oRneAz
GPUは行を返してると思ってるかもしれない
0671デフォルトの名無しさん2014/05/30(金) 17:36:05.45ID:fPzQi8o5
何をどうすればそういうあり得ない発想が出来るのか
0672デフォルトの名無しさん2014/05/31(土) 00:04:18.16ID:ORxAoz7U
一列に並んだ配列にストライドを定めて2次元配列相当の情報を
持たせる話は画像関係のライブラリを書く人にとってはトリビアルに
易しいことだし、使う側にしても一度わかってしまえば簡単なんだけど
その最初の一度がなかなか面倒なんですわ
0673デフォルトの名無しさん2014/05/31(土) 01:30:06.28ID:iCxw2hXF
わかってしまえば簡単ってのは何でもそうな気がする
0674デフォルトの名無しさん2014/05/31(土) 22:15:51.93ID:ORxAoz7U
Cのポインタとかはわかってしまえば簡単,の先に落とし穴が何度もあるなぁ.
関数ポインタを引数として別の関数ポインタを返す関数へのポインタを引数とする関数のプロトタイプ宣言とか.
0675デフォルトの名無しさん2014/05/31(土) 23:22:35.80ID:fx0E3A3u
バーテックスシェーダーに頂点配列を渡して描画させれば、GPU描画で早くなるの?
VBOとかにしなくても
0676デフォルトの名無しさん2014/06/01(日) 01:39:37.29ID:LjHesw71
>>674
それは関数オブジェクトにしませんか、などとはC++に慣れ過ぎでしょうかね・・・・
0677デフォルトの名無しさん2014/06/01(日) 02:31:17.61ID:+IEDdSur
関数ポインタA func(関数ポインタB)
関数ポインタC = &func()

func2(関数ポインタC)
このfunc2のプロトタイプ宣言か

何段階もあれば難しく思うかもしれないが1段階ずつやってけばええねん
0678デフォルトの名無しさん2014/06/01(日) 04:11:38.64ID:G7XNVB3u
その関数の戻り値の要件定義が抜けておる
0679デフォルトの名無しさん2014/06/01(日) 05:24:32.40ID:r/jz+5Pb
typedef
0680 ◆QZaw55cn4c 2014/06/02(月) 00:44:43.19ID:zBJnJbic
>>674
http://codepad.org/OuIzykCI
お題としては楽しいものでしたが‥
0681デフォルトの名無しさん2014/06/03(火) 15:52:36.66ID:a6DVEFf+
グラボが 4.0で追加された subroutineに対応して無くて辛い

疑似的に同じことをやろうとして、if文で呼び出す関数を変えて
処理を分けてみたけど、シェーダープログラムごと入れ替えた
場合と挙動が違うし・・・。

どないしたらええねん・・・
0682デフォルトの名無しさん2014/06/03(火) 16:18:16.46ID:tC4THgyf
対応してる板に買い換えるもしくは当てもなくいつの日かうpgれして対応されるのを待つ
0683デフォルトの名無しさん2014/06/03(火) 23:40:57.13ID:dvYq0Snj
glGetTexImageってglPixelTransferf効かないのか・・・orz
テクスチャーの色情報を適当にスケーリングする方法ってありませんか?
0684デフォルトの名無しさん2014/06/04(水) 06:56:03.47ID:Dyo1rkeX
シェーダ
0685デフォルトの名無しさん2014/06/04(水) 10:00:45.18ID:fgpJqtxW
GLSLやってる人いますか?
0686デフォルトの名無しさん2014/06/04(水) 10:28:51.95ID:/9qBSbkx
>>685
ノシ
0687デフォルトの名無しさん2014/06/04(水) 11:42:55.66ID:fgpJqtxW
GLSLの良い入門書教えてください
0688デフォルトの名無しさん2014/06/04(水) 13:55:19.83ID:ROGZJfbx
つ OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング-

間違っても日本人が書いたOpenGL本は買うなよグレートな糞だから
(ただし床井先生を除く)
0689デフォルトの名無しさん2014/06/04(水) 16:11:04.96ID:fgpJqtxW
ダンニャヴァード
0690デフォルトの名無しさん2014/06/04(水) 16:41:26.13ID:2ij5JthN
>>687
http://wgld.org/
0691デフォルトの名無しさん2014/06/04(水) 23:27:23.72ID:XPIqNyqT
ttp://www.opengl-tutorial.org
少しばかり古いけど自分はここでモダンなOpenGLの書き方とともにGLSLに入門した
0692デフォルトの名無しさん2014/06/05(木) 00:19:55.82ID:T2hGk5OT
影の付け方についてアドバイスをお願いします m(_ _)m

四角形のポリゴンに透過部分があるテクスチャを貼りつけたとします。

そのポリゴンをライトで照らして影を作りたいのですが、透過部分には
影を作りたくありません。

こういう場合、どうすればよいのでしょうか?

何か参考になる資料があれば教えてください。
0693デフォルトの名無しさん2014/06/05(木) 02:06:44.86ID:Mvr5+GEe
デプス(バッファ)シャドウ、シャドウマップ辺りが検索キーワードになるか
0694デフォルトの名無しさん2014/06/05(木) 10:00:44.05ID:T2hGk5OT
>>693
ありがとうございます。

ひまわり本を参考にシャドウマップを実装してみたのですが、
透明部分にも影ができてしまいます。

深度値情報を書き込むときの設定に問題があるのでしょうか?
0695デフォルトの名無しさん2014/06/05(木) 10:05:04.49ID:XqFykZgR
アルファを見てデプスバッファに書き込まないようにすれば良いじゃん
0696デフォルトの名無しさん2014/06/05(木) 11:14:38.58ID:T2hGk5OT
>>695
ありがとうございます!
以下を参考にやってみましたが、相変わらず影が出てしまいます・・・。
OpenGL側の設定に問題があるのでしょうか・・・。

https://github.com/henry4k/apoapsis/blob/31f540e3ee32de6f290476ebff972c1b72c8ae86/core/Shaders/Depth.frag

in vec2 TexCoord;
uniform sampler2D Tex;

void main()
{
float alpha = texture2D(Tex, TexCoord).a;
if(alpha < 0.5)
discard;
gl_FragDepth = gl_FragCoord.z;
}
06976962014/06/05(木) 12:14:56.03ID:T2hGk5OT
すみません、自己解決しました。
アプリ側の設定が間違ってました。

TexCoordのLocation設定がずれてました・・・orz

調査中に同じような問題を抱えている人を見つけました

http://gamedev.stackexchange.com/questions/5038/shadow-mapping-and-transparent-quads
http://stackoverflow.com/questions/14415387/opengl-3-2-cast-right-shadows-by-transparent-textures
0698デフォルトの名無しさん2014/06/09(月) 05:42:05.20ID:c48/XOF0
円柱にテクスチャーを貼りたい場合など、
一つの頂点に二つのUV座標を持たせたい場合ってなにかうまい解決法ってありますか?
今のところ頂点増やすしか無いかなあと思っているのですが
0699デフォルトの名無しさん2014/06/09(月) 13:48:28.22ID:WySlDk8T
頂点ごとではなく、インデックスごとにUV座標を持つとか?
0700デフォルトの名無しさん2014/06/09(月) 14:55:08.54ID:c48/XOF0
それはそのインデックスに対応する位置が重複する頂点も用意するということですよね?
0701デフォルトの名無しさん2014/06/09(月) 15:08:46.63ID:DiBbf/Z2
>>698
UVが二つ必要なら、シェーダに2つ引き渡せばいいだけ。
なんで頂点を増やす必要があるのか意味不明。
0702デフォルトの名無しさん2014/06/09(月) 15:18:29.37ID:c48/XOF0
問題の本質はそうではないです
円柱(実際は短冊系を丸めて並べたもの)に画像を貼り付けることを考えるとわかると思いますが
円周方向にu座標を割り当てるとすると
たとえば
u = 0,0.1,0.2,....,0.9
などと割り当てられますが、U=0.9から0.0への補間を行うと
0.9,0.91,0.92,...,1.0
とはならずに
0.9,0.89,0.88,...,.0
と補間されます
シェーダに2つ引き渡しても、その2つの間で補間ができるわけではないので解決ではないですね
0703デフォルトの名無しさん2014/06/09(月) 15:21:35.76ID:c48/XOF0
そもそも>>698で書いた2つのUV座標を持たせるということが解決法になってないですね
(補間まで指定できないと意味が無い)
誤解を招いてすいません
0704デフォルトの名無しさん2014/06/09(月) 16:16:58.92ID:WySlDk8T
>>700
インデックスバッファを使う場合、位置が重複する頂点は不要。

例えばu方向に10個の頂点があるとして
index=0 1 ... 9 0
u=0 0.1 ... 0.9 1

この方法なら側面の境界だけでなく、キャップとの境界でも別のUV座標を指定できる。
ただメッシュの位相情報が不要で描写だけなら、頂点を増やすのがシンプルでいい
0705デフォルトの名無しさん2014/06/09(月) 17:52:01.66ID:c48/XOF0
私が理解出来てない気がしますが、
index[9] = 9, index[10] = 0
このindexの指し示すuの値が
u[index[9]] = 0.9,u[index[10]] = 0
で、結局同じことになりませんか?
0706デフォルトの名無しさん2014/06/09(月) 18:06:58.54ID:WySlDk8T
>u[index[9]] = 0.9,u[index[10]] = 0
違う。indexとuはペアとして扱う。正しくは
u[9] = 0.9,u[10] = 1

VertexShaderで書くと↓

// index attribute
isamplerBuffer indexBuffer;
samplerBuffer uvBuffer;

// vertex attribute
samplerBuffer positionBuffer;

void main(void)
{
int index = texelFetch(indexBuffer, gl_VertexID).x;
vec2 uv = texelFetch(uvBuffer, gl_VertexID).xy;

vec3 pos = texelFetch(positionBuffer, index).xy;
0707デフォルトの名無しさん2014/06/09(月) 18:09:54.24ID:c48/XOF0
なるほど、理解できました
ありがとうございます。
0708デフォルトの名無しさん2014/06/09(月) 20:46:58.48ID:nokOzPQV
>>698の問題は>>703でも言っているが
テクスチャラッピングで解決すべき話であり、
見当違いもいいとこ。
0709デフォルトの名無しさん2014/06/09(月) 21:05:43.37ID:w5pULqfp
円柱の底面テクスチャ用のuvと側面テクスチャ用のuvで、計2つ持つって話しじゃなかったのな
0710デフォルトの名無しさん2014/06/09(月) 21:17:02.96ID:c48/XOF0
元の問題の書き方がまずかったですが
キャップ(上面底面)はないと思ってください
側面をぐるっと巻くようにテクスチャーを貼りたい場合、
頂点を重ねてしまうとUV(のU)の補間が最後と最初の頂点を結ぶところで
逆になってしまう、というのが問題でした

>>708
これテクスチャラッピングで解決できますかね?UVそのものに問題があるので
ラッピング以前の問題だと思ったのですが
0711デフォルトの名無しさん2014/06/09(月) 21:53:12.00ID:VwkRwT9f
一枚の紙を筒状に丸めてテープで貼り付けたようなもの?
それならテープで張り付いてる部分にはUV値の違う2つの頂点が重なっているように思うんだけど
無理に一つの頂点で表現すると変になる
0712デフォルトの名無しさん2014/06/09(月) 22:22:06.79ID:A3T/rzKA
言ってる意味がやっと分かった…
繋ぎ目の所は確かに頂点が2つ必要だ
0713デフォルトの名無しさん2014/06/09(月) 22:23:38.34ID:A3T/rzKA
紛らわしかった>>712は>>710とは別人
0714デフォルトの名無しさん2014/06/09(月) 22:26:10.48ID:A3T/rzKA
またはUVをフラグメントシェーダで頂点位置から計算すれば頂点は1つで済みそう
0715デフォルトの名無しさん2014/06/09(月) 22:32:27.48ID:A3T/rzKA
間違えた…フラグメントシェーダで法線から計算だった
0716デフォルトの名無しさん2014/06/10(火) 07:31:26.20ID:qfe9QTZO
円柱とかサイコロとかに綺麗にテクスチャを張ろうとするとUV座標が不連続な所がでてくる。
Objファイルのフォーマットだと頂点座標, UV座標, 法線ベクトルごとにインデックスを持てるけど
OpenGLでは基本的には頂点属性ごとにインデックスを持つ事はできない。

なので
1, 同じ位置だとUV座標が違う頂点を作る。
2, >>706のようにバーテックスシェーダでテクスチャバッファオブジェクトを使って頂点属性ごとのインデックスを持たせる。
3, >>71のフラグメントシェーダで法線ベクトルからUVを計算する

他に何か方法がある?
1の方法はプログラマブルシェーダがなくても使えるし
2, 3よりは実装が簡単になりそうなのでそんなに悪くはない気もするが
0717デフォルトの名無しさん2014/06/11(水) 15:15:56.64ID:8t9Ps5Bi
所詮ポリゴンでは完全な円柱(とか球)は作成出来ないんでコンピュートシェーダで
レイトレをやるとか、ジオメトリシェーダでピクセルと頂点が同じになるまで分割しまくる
とかやれば完全に正確な円柱を作成できそう(多分)
0718デフォルトの名無しさん2014/06/12(木) 10:01:57.39ID:Ex4E5sIm
所詮人間が見るためにレンダリングしているので, 完全な円柱(とか球)は作成出来なくても
人間から見てカクカクが目立たなければいいんだよ(多分)
0719デフォルトの名無しさん2014/06/15(日) 03:49:42.50ID:c8Ar7WIE
複数のテクスチャを一枚に合成したいのですが、ある部分を繰り返し貼り付ける処理に困っています。
次のように縦並びの場合は B を繰り返すことが出来ました。wrap=repeat で U座標に 2 とか 3 を設定します。
A
B
C
ですがこれではテクスチャ画像が縦長になってしまうので、次のように合成したいです。
ABC
DEF
GHI
この場合、例えば E の部分のみを繰り返し貼り付けることは出来ますか?先の縦並びの場合は、
BBB... と繰り返すことが出来るのですが、この例では EF... と F などが入ってしまいます。
0720デフォルトの名無しさん2014/06/15(日) 04:18:24.85ID:tk/Cl61u
>>719
ラップモードでは無理だと思う。
テクスチャ座標を範囲内に制限するShader書けばできるんじゃないかな。
ただし端のテクセル補間で範囲外のテクセルが混じる可能性大。
0721デフォルトの名無しさん2014/06/15(日) 13:13:01.85ID:c8Ar7WIE
>>720
やはり無理ですよね。縦配置でやることにします。
ありがとうございました。
0722デフォルトの名無しさん2014/06/16(月) 08:34:46.62ID:Pzpw+iEf
>>719
B
B
B
って縦にリピートするときは ABCって横長になっちゃうんだし、
画像ファイルは1つでもA B C...独立したtexture objectにしたらいいのでは
0723デフォルトの名無しさん2014/06/16(月) 12:18:10.74ID:bPGbiyft
しかしテクスチャを細切れにするとDrawコールが増えるから無理矢理にでも1つにして
シェーダーで対処すべき
端の問題はリピートする部分の周りに1ドット余計に書いておけば問題無い
0724デフォルトの名無しさん2014/06/16(月) 19:22:22.66ID:n0zhqSfC
colladaクソすぎー
インデックスが個別ってどうなんだよwww
これのせいでglDrawElementsがつかえませんw
0725デフォルトの名無しさん2014/06/16(月) 20:19:32.06ID:bPGbiyft
>>724
COLLADAが糞なのではない
あらゆるパターンのデータを交換出来るように仕様が出来てて、その使ってるエクスポータが
個別に出しているに過ぎない

とりあえず1回全部インデックスを辿って最小のパターンを出力すればいいだけ
0726デフォルトの名無しさん2014/06/16(月) 20:24:55.68ID:zTfOULuz
ちょっと上にある円柱にUVの話が解法になってたりしないだろうか
0727デフォルトの名無しさん2014/06/22(日) 00:02:00.28ID:JRAQ0i4E
Compute Shaderについて詳しく
0728デフォルトの名無しさん2014/06/22(日) 17:47:15.99ID:8Sj5U0+A
intelHDのglslで
for(int i = -value ; i < value+1 ; i++)
(valueは可変で正のint値)
なるコードを書くとクラッシュするんだが
(Radeonでは問題なく動く、for(int i = 0; i < 2*value + 1 ; i++)などで回避可能)
そういうもん?周知の問題なのかね?
0729デフォルトの名無しさん2014/06/22(日) 18:25:26.36ID:0/9xPr8u
intel HD は GLSL も OpenCL もかなり挙動が怪しい
0730デフォルトの名無しさん2014/06/22(日) 18:37:45.12ID:qRngvI1E
それってドライバに原因があるということなの?
0731デフォルトの名無しさん2014/06/22(日) 18:39:31.18ID:qRngvI1E
それともGLSL等のライブラリの実装側?
0732デフォルトの名無しさん2014/06/22(日) 18:53:59.63ID:JJhw/ffl
オンボードに何を求めているのだ?
0733デフォルトの名無しさん2014/06/22(日) 19:51:53.90ID:8Sj5U0+A
うーん怪しいのか、ドライバではないと思うんだが

あとこれと直接関係ないけどMacでBootcampをつかってwindowsを起動したときのopenGLの挙動もなんか怪しげ
0734デフォルトの名無しさん2014/06/23(月) 21:02:52.75ID:VDt/S1S7
自分で確かめたことはないがループが暗黙的にunsigned intを仮定している可能性は高いな・・・
0735デフォルトの名無しさん2014/06/24(火) 02:04:57.95ID:yC/6A8m1
>>728
それコンパイルかリンクエラーが出てるのに無理やり実行してないか?
0736デフォルトの名無しさん2014/06/24(火) 05:12:35.86ID:Elac9g2U
どっちもでないですね
それと
for(int i = -10 ; i < value + 1 ; i++)
だとクラッシュしない模様
0737デフォルトの名無しさん2014/06/24(火) 14:34:04.64ID:yDq5nVzd
valueの宣言は?
0738デフォルトの名無しさん2014/06/24(火) 17:56:12.82ID:Elac9g2U
あとでuniform変数にするため非constグローバル変数です
0739デフォルトの名無しさん2014/06/24(火) 19:15:39.77ID:6s2VwAqc
型を聞いてるんだろ
0740デフォルトの名無しさん2014/06/24(火) 19:17:41.23ID:Elac9g2U
intです
int value = 10;
0741デフォルトの名無しさん2014/06/24(火) 20:17:58.29ID:yDq5nVzd
うちのIntel HD Graphics 4000を積んだノートPCだと再現しなかったな。普通に動いちゃう。frag,vertともに試したけれども。
0742デフォルトの名無しさん2014/06/25(水) 08:11:14.94ID:7cMvyUPv
3000の話でした
バージョンアップで修正されたんでしょうかね
0743デフォルトの名無しさん2014/06/25(水) 10:20:07.49ID:CABWBtC9
コンパイル時に最適化が悪さしてるとか?
0744デフォルトの名無しさん2014/06/29(日) 11:34:20.23ID:aBhNPyUs
マルチテクスチャで上手くいかないんですが

glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, TextureObject );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glActiveTexture( GL_TEXTURE1 );
glBindTexture( GL_TEXTURE_2D, TextureObject );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );

同一のテクスチャオブジェクトを別々のサンプリング方法で使いたい場合は
SamplerObjectが使えない環境の場合は全く同じ内容のテクスチャを
複製して別々に設定しないといけない感じですか?
0745デフォルトの名無しさん2014/07/09(水) 13:06:40.50ID:UfTBEMZK
OpenGLで、モダンなライトの扱いってどうすべきですかね?
2年位前に最後にやった時はglLightfvでパラメータ指定して
シェーダの中でgl_LightSource[i]でアクセスしましたけど
0746デフォルトの名無しさん2014/07/10(木) 00:50:59.87ID:EQQusCRN
>>745
uniform変数にライトの情報を入れる。
uniform変数じゃ足りないならテクスチャバッファオブジェクトに入れる。
これがモダン。
新しい時代のやり方さ。
0747デフォルトの名無しさん2014/07/11(金) 23:39:10.62ID:j7V4u+C6
あるテクスチャを定期的に更新していて描画は問題ないんだが、glGetTexImageで内容を
取得すると最初の1回目だけ正しくて、あとは何回やっても最初に取得した内容と同じ
ものが返ってくる。しかもAMDでだけ発生してNVIDIAだと起きない。

プログラムのバグだとすれば、どのへんが怪しいかわかる人いませんか?
問題の切り分けは進めてるけど、なにぶん元のプログラムがそれなりの規模なもんで、
なにかアタリをつけられればと。
0748デフォルトの名無しさん2014/07/12(土) 03:07:54.03ID:hZ9DjkyP
なんとなくアタリはつくけど
ここに書くスペースが足りない
0749デフォルトの名無しさん2014/07/12(土) 03:18:45.99ID:fG0isNL2
ほらアレだ、あそこの行だよアレ
0750デフォルトの名無しさん2014/07/12(土) 05:25:15.06ID:Zl80GKyA
「glGetTexImage "AMD" issue」なんかでぐぐるとどうかな……

http://devgurus.amd.com/thread/167259
は参考になる?
0751デフォルトの名無しさん2014/07/12(土) 06:48:01.70ID:GRHuV+O4
>>747
AMDだとそもそもテクスチャの更新自体がうまくいってないって事?
更新は出来ててglGetTexImageだけがおかしいの?
0752デフォルトの名無しさん2014/07/12(土) 07:09:26.52ID:CCLGWIX7
問題の切り分けに悩むより
単純な再現コード作る方が楽だろうから
それ造ってうp
0753デフォルトの名無しさん2014/07/12(土) 07:13:15.34ID:Mr5xF++C
そうすると早々に間違いに気がついていなくなる罠
07547472014/07/12(土) 07:54:49.05ID:miswn7Wr
>>751
更新したテクスチャを使った描画には反映されているのに、glGetTexImageで返されるデータだけが
おかしいんです。

glBindTexture( GL_TEXTURE_2D, texture_id );
glGetTexImage( GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer );
glBindTexture( GL_TEXTURE_2D, 0 );

取得するあたりのコードはこれだけで、確認した項目としては
・各々glGetError()でステータスをチェックするとすべてGL_NO_ERROR
・bufferは事前に初期化していて、glGetTexImageで更新はされている
・GL_PIXEL_PACK_BUFFER はBindされていない
こんなところです。
0755デフォルトの名無しさん2014/07/12(土) 08:04:17.29ID:fG0isNL2
更新してるということはframe buffer使ってるんだから
frame bufferからglReadPixelしてみれば?
07567472014/07/12(土) 08:52:46.31ID:miswn7Wr
GL_FRONTからのglReadPixelは試してみたんですが、こっちは表示と同じでちゃんと更新されてました。
ついでに言うとテクスチャの更新はPBOからglTexSubImage2Dで転送しているんですが、この
元のPBOをglMapBufferでmappingして内容を読み出してみてもやはり問題ありません。

glGetTexImageの問題が解決しなければPBOから読み出すように回避しようと思ってますが、
PBO自体の更新と読み出しタイミングを調整しないとならない部分があったりしますので
どうしてもglGetTexImageの問題が解決できなかった場合の回避策と考えてます。
0757デフォルトの名無しさん2014/07/12(土) 09:14:14.60ID:4xZ44lSC
フレームデバッガー使ってみるとかは?
0758デフォルトの名無しさん2014/07/12(土) 13:14:14.68ID:F5lfKYdO
やはりどこか勘違いしてるんじゃまいか
0759デフォルトの名無しさん2014/07/13(日) 15:49:19.47ID:sxozpvhw
ここからハゲのみ書き込み可
0760デフォルトの名無しさん2014/07/13(日) 22:49:47.44ID:2XMXPGxj
教えて下さい。
3.3以上のOpenGLで線を引きたいのですが、
どうすれば線の太さを変えられるのか分かりません。
もしかして線の太さはGLSLの方で指定するのでしょうか?
よろしくお願いします。
0761デフォルトの名無しさん2014/07/13(日) 23:15:51.68ID:GxeNZ4tR
>>760
線分と太さから4点計算してポリゴン作れ
0762デフォルトの名無しさん2014/07/13(日) 23:25:28.71ID:2XMXPGxj
760です。
調べたところ、glLineWidthで指定可能な値の範囲は実装依存ということのようです。
GL_ALIASED_LINE_WIDTH_RANGE, GL_SMOOTH_LINE_WIDTH_RANGE, GL_SMOOTH_LINE_WIDTH_GRANULARITY をglGetで出力してみたところ、1でした。
私の使ってるmacではいまのところ線の太さを1より大きくできないようです。
おっしゃる通り、ポリゴンの円柱を線に見立てた方がいいみたいです。
また、geometry shaderでもできそうな感じのようですが、まだそのgeometry shaderを触れるレベルには達していないのであとのお楽しみにしておきます。
0763デフォルトの名無しさん2014/07/13(日) 23:42:29.05ID:tB168XS5
>>762
大抵は円柱にしなくても板で十分だよ。視線に対して垂直になるポリゴンにするとかで。
テクスチャ貼って模様とか書くのも板の方が楽だし
0764デフォルトの名無しさん2014/07/20(日) 21:45:31.45ID:7LbWMfMr
いつになったらintel+linuxでopengl4が使えるようになるんだか
0765デフォルトの名無しさん2014/07/21(月) 13:43:07.11ID:tRke/Zyv
Xでpixmapにレンダリングさせることは出来ないんですか?
glXCreateGLXPixmapというのを見つけたんだけど、できないと書いてあるページが
沢山あるので。
これ普通に使えるんですかね?
あと、今OpenGLを始めるならターゲットにするバージョンはどのあたりですか?
自分のパソコンのドライバを調べたら、3.1になっていました。
0766デフォルトの名無しさん2014/07/22(火) 16:09:44.51ID:6uRHc4zQ
xcodeでopenglのエラーブレークポイントを入れたところ、
glEnable( GL_ALPHA_TEST )でGL_INVALID_VALUEが検出されます。
リファレンス http://www.khronos.org/opengles/sdk/docs/man/
を見る限りはGL_ALPHA_TESTはglEnableに渡せる変数ではないようなのですが、
実際ネット上 https://www.google.com/search?q=glEnable(+GL_ALPHA_TEST+)&amp;oq=glEnable(+GL_ALPHA_TEST+)&amp;aqs=chrome..69i57&amp;sourceid=chrome&amp;es_sm=93&amp;ie=UTF-8
では普通に使われているようですし、動作も問題ありません。

これは一体どういうことなのでしょうか?
0767デフォルトの名無しさん2014/07/22(火) 17:01:56.27ID:/MGVKQA2
OpenGL ES の man を読んでることに気付いてる?
0768デフォルトの名無しさん2014/07/27(日) 10:10:33.15ID:kppu+It6
解説サイト見てもよくわからないので質問させてください
openGLでは(0,0)の座標が左下になっていますが、これを左上に設定するにはgluOrtho2Dの引数はどのようにすればいいでしょうか
0769デフォルトの名無しさん2014/07/27(日) 11:21:35.11ID:VfVS1PsM
>>766
>>767
補足するとOpenGLES2.0な
OpenGLES1.xにはGL_ALPHA_TESTある。

>>768
デフォルトは左下が-1,-1じゃない?

gluOrtho2D(left, right, bottom, top)
なんだから左上を0,0にしたいならleftとtopに0を入れれば
0770デフォルトの名無しさん2014/07/27(日) 11:37:27.76ID:kppu+It6
>>769
レスありがとうございます
今openGL ES 1.0, 1.1を利用しているのですが、プロジェクションモードで
gluOrtho2D(gl10, 0.0f, ScreenWidth, ScreenHeight, 0.0f) を実行した後
(0,0)にテクスチャを描画してみると左下に表示されてしまいます
引数を変えてみても何も変化がないのでなにか手順が抜けているのでしょうか?
0771デフォルトの名無しさん2014/07/27(日) 11:41:59.69ID:hZ0fwTil
反転させないで標準の座標系に慣れた方がいいと思うの
0772デフォルトの名無しさん2014/07/27(日) 11:44:01.46ID:VfVS1PsM
>>770
試しにglDrawArrayで(0,0)から(0.5,0.5)とかで線引いて座標が意図通りになってるか確認してみたら?
0773デフォルトの名無しさん2014/07/27(日) 11:48:32.35ID:VfVS1PsM
>>771
それよりは避けて通れない座標変換に慣れた方がいいと思うの
0774デフォルトの名無しさん2014/07/27(日) 11:57:58.36ID:VfVS1PsM
まぁ、エスパーするとテクスチャの描画と言いつつglDrawPixels使って直接バッファーにピクセルデータ書き込んでるんじゃないかなと思うんだけど、それテクスチャの描画って言わないからね。
それ使うぐらいなら2Dのグラフィックスライブラリ使った方が簡単だしパフォーマンスも変わらん
0775デフォルトの名無しさん2014/07/27(日) 12:02:24.90ID:hZ0fwTil
慣れの問題じゃなくて不要な変換は挟むべきでは無いと思うの
0776デフォルトの名無しさん2014/07/27(日) 12:12:26.99ID:VfVS1PsM
なんで不要ってわかんの?
0777デフォルトの名無しさん2014/07/27(日) 12:21:56.27ID:hZ0fwTil
本や解説サイトなど大抵のコードが標準で書かれてるから
上下反転(w
0778デフォルトの名無しさん2014/07/27(日) 12:56:34.99ID:kppu+It6
何とか線を引いて確認することができました
結果、デフォルトでは画面中央が(0,0)、座標変換後はちゃんと左上が(0,0)になっていました
しかしテクスチャを(0,0)に表示させてみると常に左下に表示されます
テクスチャに関しては2D表示にはDraw Texture Extensionが向いていると聞いたのでglDrawTexfOESメソッドを使っていますが、何故か座標変換の結果が反映されません
0779デフォルトの名無しさん2014/07/27(日) 13:06:55.60ID:kppu+It6
すいません
GL11Ext#glDrawTexfOESは射影変換を無視するとの記述を見つけました
お騒がせしました;;
0780デフォルトの名無しさん2014/07/27(日) 13:22:47.95ID:U7uDR9xp
おぬでとう
0781デフォルトの名無しさん2014/07/27(日) 14:00:31.27ID:aKep4oBc
おあでとう
0782デフォルトの名無しさん2014/07/29(火) 14:31:12.44ID:uUNEJSXH
GL_TRIANGLE_STRIPちゃん可愛い
0783デフォルトの名無しさん2014/07/29(火) 23:02:42.66ID:P/ckeYlk
ストリップという文字列に興奮するお年頃
0784デフォルトの名無しさん2014/07/30(水) 02:32:32.95ID:uMsmxuNK
むかし初めてトライアングルストリップという単語を見たときに
オブジェクトが三角形単位で裸にされていくイメージをしたことがあるのは俺だけではないはず
0785デフォルトの名無しさん2014/07/30(水) 14:58:03.44ID:x/403miQ
ワイヤーストリッパーが欲しかった
0786デフォルトの名無しさん2014/07/30(水) 20:07:51.66ID:r7MOieEY
デイトリッパー
0787デフォルトの名無しさん2014/07/30(水) 20:14:47.93ID:QJA3s1XV
>>784
ニョタックス思い出したw
0788デフォルトの名無しさん2014/07/30(水) 20:30:50.01ID:ofJ1Yyam
トリッピー
http://articleimage.nicoblomaga.jp/image/121/2013/8/0/807f4fd846221f2ddd7249f4e16873aa484bc4d41380744219.jpeg
0789デフォルトの名無しさん2014/07/31(木) 00:58:50.30ID:wsMm3Wn7
>>785
わかる圧着ペンチ形状の手動は安いよ


ストリップだとカリングが効かない諸刃の剣3D屋にはお薦めできない
0790デフォルトの名無しさん2014/07/31(木) 01:46:18.87ID:m9V5jEgt
>>789
カリングが効かないってどういうこと?
0791デフォルトの名無しさん2014/07/31(木) 08:44:46.61ID:kd/b1mjX
裏面消去が効かないと勘違いしてんだろ
0792デフォルトの名無しさん2014/07/31(木) 10:50:21.32ID:wsMm3Wn7
ストリップで描いてカリング入れた場合一個置きに面が消える
0793デフォルトの名無しさん2014/07/31(木) 12:27:35.28ID:WA3NSV4l
ストリップは一個置きに裏面判定が入れ替わるんだよ
だからそんなことにはならない
0794デフォルトの名無しさん2014/07/31(木) 18:07:17.48ID:m9V5jEgt
カリングって言ってもいろんな方法あるんだから、裏面消去ならそう言わないと
0795デフォルトの名無しさん2014/08/01(金) 02:58:17.27ID:LH1q2jwP
なるぽど色々スンマセン
0796デフォルトの名無しさん2014/08/01(金) 12:10:01.28ID:MWJjKrZI
コロプラ買ってもいい奴?
0797デフォルトの名無しさん2014/08/01(金) 12:11:54.68ID:MWJjKrZI
誤爆です><
0798デフォルトの名無しさん2014/08/02(土) 13:44:53.47ID:YT/nmnGB
AndroidのOpenGL ESはここで質問してもいいの?
0799デフォルトの名無しさん2014/08/02(土) 13:56:47.63ID:a+ltcb2Y
別にいいんじゃない?
たまに居るし俺は質問したことはないがほとんどOpenGLES 1.1 と2.0しか触ってない。
0800デフォルトの名無しさん2014/08/02(土) 14:05:20.21ID:YT/nmnGB
じゃあ早速・・・
3Dモデルのファイルってassetsだと、50MBしか置けないらしいので、
resフォルダに置いたら拡張子なしのid名でしか取得できないじゃないですか。
3Dファイルにはテクスチャは拡張子付で記録されてたりするから、どうやって読み込み時にresから取得すればいいのでしょうか?
0801デフォルトの名無しさん2014/08/02(土) 14:13:55.54ID:UyQakY37
それはAndroid固有の話しだろ…
Androidスレで聞いた方が早いよ
0802デフォルトの名無しさん2014/08/02(土) 14:19:32.45ID:my2G1Knu
>>800
OpenGLESの話ならここで良いが、それは流石にOpenGLの範疇じゃないなあ
0803デフォルトの名無しさん2014/08/02(土) 19:50:26.14ID:KRFxeO/F
www
0804デフォルトの名無しさん2014/08/03(日) 02:04:16.06ID:HDl5UN8L
>>800
リソースの種類毎にフォルダ作るだろmodelフォルダ作れ
08058002014/08/03(日) 17:44:29.61ID:F8Py3zQt
>>804
modelフォルダですか。res/rawの下に? 勝手にres/modelって作っちゃっていいのかな。まあやってみればわかるけど。

>>801
>>802
案外、AndroidスレだとOpenGL関係の人が少ないようでレスが返ってこないんで・・・


とりあえず質問の件はぐぐって解決しました。
0806デフォルトの名無しさん2014/08/03(日) 17:50:03.06ID:YelRlBdq
やっぱ夏厨ってクソだわ
0807デフォルトの名無しさん2014/08/03(日) 18:34:20.67ID:WaCUOfHu
>>805
だからそれはOpenGLの話じゃなくて、大きなリソースをどうやってアプリに読ませるかの話だろ…
なんでOpenGLだと思ったの?
0808デフォルトの名無しさん2014/08/03(日) 20:51:35.36ID:sPECJALj
>>805
お前はプログラミングの質問で返事が無かったら格闘技のスレに質問に行くのか?
0809デフォルトの名無しさん2014/08/03(日) 20:58:37.87ID:kaDRRggj
このスレはスレ違いネタが一番伸びる。もうOpenGLの質問とかつまらないでしょ
0810デフォルトの名無しさん2014/08/03(日) 21:14:42.98ID:F9uiJQaz
じゃあせっかくなのでネタフリますが
半透明テクスチャってどう扱うべきですかね?
特にglDrawElementでポリゴンを描写したい場合
zソート出来ないので一旦不透明部分を書き出して
その上から半透明部分だけ描写する方法を考えたんですが
すると半透明が重なった部分が描写されないなあと思いまして
0811デフォルトの名無しさん2014/08/03(日) 21:27:30.32ID:/ocyEfo1
伸びるのはわかるが、
しょうもない書き込みが増えても仕方ないし
このスレはOpenGLのためにあるスレだ
0812デフォルトの名無しさん2014/08/03(日) 22:17:37.57ID:AqnF5WVU
伸ばすためにレスってのもおかしな話
0813デフォルトの名無しさん2014/08/03(日) 22:34:56.01ID:kaDRRggj
>>810
最近はどうだかわからないけど、
自分は半透明はポリゴン単位じゃなくてグループでソートしたり、球みたいのだと裏面描いてから表面とかでごまかせる場合多かった

不透明を書き出してから、半透明はDEPTH書き込みオフ(TESTはON)にして全部書けば
どうせ半透明と半透明が重なった所とか、どっちが先でも大差ないでしょ
とか聞いたことがある(それでうまくいくかどうかは知らない)

もっと高度な方法だと、A-Bufferとか調べてみるといいかも
0814デフォルトの名無しさん2014/08/03(日) 22:35:22.08ID:jzvBau3e
ジオメトリシェーダにtrianglesを入力して、triangle_stripを出力しているんですが、
出力のプリミティブを変更する方法ってありますか?
0815デフォルトの名無しさん2014/08/03(日) 22:43:55.20ID:F9uiJQaz
>>813
あー全部書いてしまうのか
でも不透明の後ろに半透明が来ると処理に困るような・・・TESTはONというのはそこはデプスを見るということかな?
write-readターゲットができればある程度解決しそうな気もするが・・・悩ましい
0816デフォルトの名無しさん2014/08/03(日) 22:59:53.16ID:kaDRRggj
>>815
不透明の後ろはTESTがONなら描かれない。
半透明だけWRITEをOFF( glDepthMask(GL_FALSE) )にしておけば半透明の後ろに半透明を描ける

でも手前と後ろで半透明の色が違ったりする場合はばれるよ
0817デフォルトの名無しさん2014/08/04(月) 00:29:29.01ID:18ryyM6s
そもそも21世紀にもなって未だにポリゴン使ってるのが悪いよな
もうポリゴンで表現できるのは限界まできている
0818デフォルトの名無しさん2014/08/04(月) 01:36:05.80ID:7VAAh3An
それはない
最終的にハードはポリゴンを表示するだけだ
0819デフォルトの名無しさん2014/08/04(月) 01:56:22.64ID:BTc2ko+M
球を置いて円柱でくりぬいて・・・みたいなのを80年代にレイトレでやってたな
結果が予測しづらかった
0820デフォルトの名無しさん2014/08/04(月) 14:09:54.67ID:gZyph/pY
glStencilFunc() の3つ目の引数によく ~0 とか書いてるんだけど、
この演算子はXORってことでいいの?  0のXORってどういう意味?
0821デフォルトの名無しさん2014/08/04(月) 14:42:58.66ID:rcks12Ah
>>820
xorじゃなくてビット反転。第3引数はマスクだから、全ビット1を与えたくて0を反転している。
0822デフォルトの名無しさん2014/08/04(月) 15:29:21.90ID:jHAt8bMe
>>817
Pixarは曲面を頂点とピクセルが同じになるまで細分割してレンダリングしてるけど
ポリゴンをその途中の荒い段階と考えれば、本質的に何も変わらないぞ

言いたい事は、ラスタライズ対レイトレーシングみたいな事だろ
それだって、まだ全然ラスタライズのままだろうね
0823デフォルトの名無しさん2014/08/04(月) 20:49:55.42ID:gZyph/pY
>>821 なるほどさんくす
でもそれなら1を入れとけばいいような
0824デフォルトの名無しさん2014/08/04(月) 21:01:23.34ID:jzy7vsa5
1じゃなくて0xffffffff
0825デフォルトの名無しさん2014/08/08(金) 10:00:44.33ID:cBl4jQ1A
もう2014年だというのにどうして半透明ネタでOrder Independent Transparencyがでてこないの?
どうして未だにzソートなんてやってるの?
まさか携帯電話向けの半端OpenGLなんて使っているの?
0826デフォルトの名無しさん2014/08/08(金) 10:14:15.79ID:gW33htdT
WebGL
0827デフォルトの名無しさん2014/08/08(金) 11:31:33.02ID:RlK/9wVD
>>825
なんだ突然?Order Independent Transparencyって言いたいだけか
0828デフォルトの名無しさん2014/08/08(金) 15:38:20.79ID:wTbpXbCc
>>825
理由をいちいち聞かないと分からないほど無能なら、
やめた方がいいよ、向いてない。
0829デフォルトの名無しさん2014/08/08(金) 16:13:11.02ID:bE0o6NOP
利用者の9割以上は電話ESだろ
0830デフォルトの名無しさん2014/08/08(金) 16:33:48.08ID:aPdADbjs
それも決めつけだな
0831デフォルトの名無しさん2014/08/08(金) 16:39:01.73ID:66xmWF2Q
そのまさかなんだ
ひとつ賢くなれたね
0832デフォルトの名無しさん2014/08/08(金) 16:57:59.79ID:NYRFXe49
ああ
人生毎日勉強
0833デフォルトの名無しさん2014/08/09(土) 17:55:12.25ID:Gqzlt3k4
21世紀にもなってポリゴン使ってるのが信じられない
メタボールとか中身が詰まった方向にいくべきだろう
0834デフォルトの名無しさん2014/08/09(土) 18:19:31.41ID:l+UlL6r9
AndroidOpenGLES2.0でシェーダに4x4行列の配列(行列パレット)を渡すにはどうやるんでしょうか?
0835デフォルトの名無しさん2014/08/09(土) 20:35:31.84ID:yKDmpr0a
メタボールが中身詰まってるとかアホか
0836デフォルトの名無しさん2014/08/09(土) 20:35:51.42ID:IH2dHWBB
普通にglUniformMatrix4fv()でできると思うんだけど。
他人に労力を使わせる前にちょっと調べてから聞いてくれる?
0837デフォルトの名無しさん2014/08/09(土) 21:12:36.12ID:b4riAJQP
>>833はトランスフォーマーとか超リアルな映像はメタボールでレンダリングされてると思ってんだろ
0838デフォルトの名無しさん2014/08/10(日) 00:30:39.48ID:pD03iTBG
そもそもメタボールって液体の表面を表現する以外に何か役立つことあるの?
0839デフォルトの名無しさん2014/08/10(日) 00:46:32.16ID:KgnGRtjD
>>838
アニメーションなどでは非多様体をうまく扱えるかも

液滴がくっついてひょうたんみたいに伸びた後分離するみたいな。
0840デフォルトの名無しさん2014/08/10(日) 01:19:59.55ID:el3a8dJ8
>>838
昔GPUが無い時代だと、何十万ポリゴンとかのシーンは表示も編集もできなかったけど
メタボールだとデータが少ないし表示は編集時には球だけだしとけばどうにかなるのでそこそこ使われたみたい
0841デフォルトの名無しさん2014/08/10(日) 02:06:27.57ID:z9JQKyZD
ここで颯爽とマインクラフトが登場
つうても表示は結局ポリゴンだが
0842デフォルトの名無しさん2014/08/10(日) 03:16:21.65ID:j1OTynVE
ポリゴン表示が一番効率良さそうなゲーム持ってきて何いってんの?
マジで
0843デフォルトの名無しさん2014/08/12(火) 01:59:59.31ID:MbJloS4J
OpenGL 4.5
0844デフォルトの名無しさん2014/08/12(火) 04:12:15.63ID:3GePmWLc
http://www.dsogaming.com/news/opengl-4-5-specifications-released-next-generation-opengl-plans-announced/
4.5の仕様
0845デフォルトの名無しさん2014/08/12(火) 10:47:51.83ID:exMW2GAX
オフスクリーンレンダリングを行いたくてopenGL ES 1.x系から2.0に変えようと思っているのですが、glDrawTexfOESが使えなくなるとパフォーマンスは落ちてしまうんでしょうか
0846デフォルトの名無しさん2014/08/12(火) 13:28:15.96ID:SnV+473X
>>844
DX11 emulation features
なんだこれw
座標系を変更する機能とか追加されるんだろうな
0847デフォルトの名無しさん2014/08/12(火) 15:39:56.16ID:f8Kunc5R
Valveに成果物をとりいれたんじゃね
0848デフォルトの名無しさん2014/08/12(火) 15:40:46.03ID:f8Kunc5R
Valveの成果物を採り入れたんじゃね
0849デフォルトの名無しさん2014/08/13(水) 12:55:13.69ID:Bd7xMtig
glDrawElements使うとメモリ節約できるらしいけど

http://seesaawiki.jp/w/mikk_ni3_92/d/%c4%ba%c5%c0%c7%db%ce%f3%3a%3aglDrawArrays_2
http://seesaawiki.jp/w/mikk_ni3_92/d/%c4%ba%c5%c0%c7%db%ce%f3%3a%3aglDrawElements_2

この2つの違いがわからない
法線があると結局同じサイズのデータがいるじゃん
0850デフォルトの名無しさん2014/08/13(水) 14:05:14.59ID:bToXpGvG
glDeleteTexturesで削除しようとしたらイントバッハーじゃないとダメとか抜かしてくるんだけど意味分からん
バインドするときとかは普通のint型でよかったくせになんなの・・・
0851デフォルトの名無しさん2014/08/13(水) 14:16:58.71ID:+Il1Qeqk
>>849
球とかなめらかな曲面を表現しようと思ったら法線も一緒になるような頂点になる
0852デフォルトの名無しさん2014/08/13(水) 14:17:40.54ID:+Il1Qeqk
>>850
何言ってるのかわからない
0853デフォルトの名無しさん2014/08/13(水) 15:18:55.91ID:bToXpGvG
俺もよく分からなかったけど(1, textures[0], 0)みたいにしたら通った
0854デフォルトの名無しさん2014/08/13(水) 15:34:44.09ID:3oIrbTNR
CreateBufferの逆だろ、単に
0855デフォルトの名無しさん2014/08/14(木) 21:09:51.52ID:gVvPyGBB
>>836
4x4行列の「配列」を渡したい
GLSL側は mat4 変数名[ ]
となっている

Androidのjava(NDKじゃない)で
0856デフォルトの名無しさん2014/08/14(木) 21:14:21.38ID:8EuqiR5k
>java(NDKじゃない)で
>java(NDKじゃない)で
>java(NDKじゃない)で
リフレイン
0857デフォルトの名無しさん2014/08/14(木) 22:52:08.80ID:EcJA/eZW
>>856
http://developer.android.com/reference/android/opengl/GLES20.html

普通に、このクラスのクラスメソッドである

static void glUniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset)

を使えばいいハズだが。
0858デフォルトの名無しさん2014/08/14(木) 22:52:46.99ID:EcJA/eZW
アンカー間違えた。

>>855 ね
0859デフォルトの名無しさん2014/08/15(金) 01:34:58.73ID:c0r1uSnJ
glewinitが失敗しちゃうよー;;
08608592014/08/15(金) 01:39:40.56ID:c0r1uSnJ
事故解決
glfwやsdlの初期化の後なら成功した
08618552014/08/15(金) 09:40:04.77ID:rbpPJIVn
>>857
ありがとう。一次配列に移し変えないといけないんだ・・・・処理遅くなりそうだな
0862デフォルトの名無しさん2014/08/15(金) 09:52:51.60ID:XpkA/r9f
>>861
普段から44行列を16配列で持つようにすれば良い。
0863デフォルトの名無しさん2014/08/15(金) 11:14:20.57ID:Spzuf6rs
移し替える必要なんてないがな。
0864デフォルトの名無しさん2014/08/16(土) 21:42:04.18ID:tJo/XMv1
ジオメトリシェーダ使い道なさ過ぎだろ
さっさとremoveしる
0865デフォルトの名無しさん2014/08/16(土) 22:23:49.77ID:HsWLjWa1
自分が使いこなせないからって…
0866デフォルトの名無しさん2014/08/16(土) 22:31:48.30ID:gFPUlhC0
RAY STORMごっきが出来なくなる
0867デフォルトの名無しさん2014/08/17(日) 19:57:13.45ID:gihOGc3U
OpenGLES2.0なんだけど
glBufferDataで送ったデータって、glBindBufferで0入れてアンバインドしても、
またglBindBuffer呼べば使えるの?

そうだとしたらglBufferDataのメモリ容量限界ってどこよ?
0868デフォルトの名無しさん2014/08/17(日) 20:09:05.91ID:/9bPs2vi
使える
容量などはglGetIntegervとか調べるべし
0869デフォルトの名無しさん2014/08/17(日) 20:12:20.28ID:v00Bu8Bk
話の途中からすまん
glBegin() 〜 glEnd() が古いって聞いたんだけど本当?ググってみたがよくわからなかった
0870デフォルトの名無しさん2014/08/17(日) 20:21:09.23ID:3OAkF9Uq
>>869
本当。
0871デフォルトの名無しさん2014/08/17(日) 20:24:50.39ID:v00Bu8Bk
まじか、入門書鵜呑みにしてたわ、今どんな方法つかってるの?
0872デフォルトの名無しさん2014/08/17(日) 20:37:01.23ID:3OAkF9Uq
>>871
頂点の配列で描画 glDrawElements,glDrawArrayなど。
慣れてきたら頂点バッファオブジェクト(VBO)使うといい
上に出てるglBufferDataね

別にglBeginも使えないことはないから学習用にはいいとは思うけど。
0873デフォルトの名無しさん2014/08/17(日) 20:43:18.21ID:v00Bu8Bk
>>872
ありがとう
0874デフォルトの名無しさん2014/08/17(日) 20:49:08.63ID:VZQpFjQ7
というか今から学ぶならOpenGL4.0以降にしとけ
0875デフォルトの名無しさん2014/08/17(日) 20:57:10.66ID:3OAkF9Uq
そうかな?初心者にいきなりShaderは厳しいと思うけど。
Direct3Dとかで既に学んで来たとかで3DCGに慣れ親しんできたとかなら別だけども
0876デフォルトの名無しさん2014/08/18(月) 00:04:26.26ID:b3lMnKxX
今どき生のOpenGL学ぼうって言うんだから高レベルのラッパーライブラリの使用経験くらいあるんじゃない?
無いならそっちからやって徐々に低レベル化していくべきだと思うんだけど
0877デフォルトの名無しさん2014/08/18(月) 00:16:07.36ID:OF3XS1PR
beginendでいいならわざわざOpenGLを直接扱う必要ないような気はするよね
0878デフォルトの名無しさん2014/08/18(月) 08:02:00.27ID:hOGPcHcB
Aを習いました
→後々Bを習いました
→その結果AをBで置き換える必要が出てきました
ってなるとめんどいから最初からB習った方がいい
0879デフォルトの名無しさん2014/08/18(月) 08:28:54.19ID:1WWnk53J
古い機能を一切排除して4.0以降の流儀で整理しなおした入門書があるといいんだがな。
0880デフォルトの名無しさん2014/08/18(月) 09:32:06.85ID:gPqwY9SB
OpenGLなんてほとんど触ってないけど
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3
OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング
とかでいいと思うんだが
0881デフォルトの名無しさん2014/08/18(月) 11:25:52.44ID:K2s7yxeA
スマホはGLES1か2主流だから3とか4とか使えない
0882デフォルトの名無しさん2014/08/18(月) 22:32:01.71ID:DYC0UyHk
>>881
Android4.3以上ならハードウェアが対応していればES3.0が使えるらしいが、まあ確かに普及してないよな
2.0は何処でも使えるでしょ

HTL22だけどKitKatのROM焼いたらES3.0が使える

http://developer.android.com/guide/topics/graphics/opengl.html
0883デフォルトの名無しさん2014/08/18(月) 23:32:08.56ID:DekYufYJ
未だに in がしっくり来ない、uniform だって入力じゃね?
attribute や varying のが分かりやすいだが…
0884デフォルトの名無しさん2014/08/19(火) 00:52:49.49ID:wV7pUP8z
Khronos Groupが「OpenGL 4.5」をリリース
http://sourceforge.jp/magazine/14/08/13/095100

> 米MicrosoftのThe Khronos Groupヘの加入も明らかになった。
モバイルで勢力を拡大しているOpenGLを、遂に潰しにきたか
0885デフォルトの名無しさん2014/08/19(火) 01:53:34.62ID:wvn9p5i8
パイプラインの前段から入るのがinで後段に出すのがoutだから特に違和感を覚えたことはないな
0886デフォルトの名無しさん2014/08/19(火) 05:16:02.22ID:yzTPzZsW
それはそれで、何となくin/outじゃない気がするんだよな
prev/next…は流石に変かも知れんが。
でもまあ、なるほどね、パイプラインの前後に対しての話って考え方なのか
0887デフォルトの名無しさん2014/08/19(火) 07:59:14.06ID:S2an9Tuw
ES2.0からES3.0の利点ってなんなの?
0888デフォルトの名無しさん2014/08/19(火) 11:27:44.39ID:S2an9Tuw
GLSLを外部ファイルにして、コメント文って書けるの?
書いた場合、コメント文ごと読み込んでコンパイルしても大丈夫?
0889デフォルトの名無しさん2014/08/19(火) 12:46:24.18ID:KNMOWTQW
大丈夫だよ
0890デフォルトの名無しさん2014/08/19(火) 18:04:12.51ID:6KAEzDDR
>>883
激しく同意見。
頂点シェーダーのinとフラグメントシェーダーのinはまったく別物だろ
varying変数という明示的でわかりやすいものがあったのに
なぜinにしたし
0891デフォルトの名無しさん2014/08/20(水) 20:22:15.74ID:pFcTwshW
inの方が短くていいだろ
0892デフォルトの名無しさん2014/08/20(水) 20:28:47.67ID:YTuxoJAp
初心者「何でこんな変数名関数名長いの?短い方がよくね?」
0893デフォルトの名無しさん2014/08/20(水) 20:32:29.17ID:ZgMOW7JT
シェーダのステージが増えるたびに
意味のある名前をつけるよりも
そのステージへのin/outだってことで統一したほうが
早いってなっただけでしょ
0894デフォルトの名無しさん2014/08/22(金) 14:58:27.30ID:SDBQFK+H
OpenGLに渡す頂点配列とかインデックスのbyte orderってホストCPUと同じになるの?
littleendian固定ってことは無いよね?

glTFのフォーマット仕様みててバイナリーデータのbyte orderの指定が無いから気になった
0895デフォルトの名無しさん2014/08/22(金) 20:56:49.69ID:8b5jxKZH
attibuteとvaryingというまったく関係ない変数を同じ名前inに統一するのは駄目だわ
たまたまシェーダーというくくりで一緒にされてるけど別のプログラムだし
0896デフォルトの名無しさん2014/08/24(日) 18:26:49.81ID:treW2kWS
Android版ChromeのWebGLって、Adreno220だとGPU Reset Notificationが使えないという理由で無効化されているな
Canvasのアクセラレーションも古いAdrenoでは無効

設定で有効化出来るがそれでも描画が遅く感じた
古い機種だと遅くなる運命なのか

この辺の機種は切り捨てないとAndroidでWebGLは使えんな
0897デフォルトの名無しさん2014/08/25(月) 11:45:36.16ID:83AqHVDw
>>896
Android版Firefoxで試したか?
AndroidのWebGLはFirefoxの方が実装が進んでると思う
0898デフォルトの名無しさん2014/08/25(月) 15:23:17.65ID:8yy0NSkW
>>897
Firefoxだと動作もせず落ちたけど
http://hellorun.helloenjoy.com
0899デフォルトの名無しさん2014/08/25(月) 23:05:50.21ID:Gut43Z9a
uniformというのは、画面に表示するテクスチャすべてに共通する要素(変換行列など)を設定するのに使うものなんでしょうか?
例えば、1枚のテクスチャの全頂点に共通する変数(モザイク処理のフラグなど)は、vboで送った方が効率がいいんでしょうか?
0900デフォルトの名無しさん2014/08/25(月) 23:07:38.64ID:NqK9mfwG
いや、その通りでuniformで送るべきでしょ、なぜvboが出てくる?
0901デフォルトの名無しさん2014/08/25(月) 23:15:08.86ID:Gut43Z9a
>>900
テクスチャ1枚の中で頂点ごとに変わらない要素(ambientカラーや、エフェクトのフラグなど)をvboで全頂点同じ値で渡していたのですが、
これをuniformに変えたところ急に動きが遅くなったためです。
vboよりもglUniform計のコマンドの方が遅いということなのかと思いました。
テクスチャごとに異なる値でも、テクスチャ内で共通の値はuniformを使うのが普通で、
何か別のところにミスがあるということでしょうか?
0902デフォルトの名無しさん2014/08/25(月) 23:22:19.81ID:NqK9mfwG
>>901
遅くなるというのが考えにくくて、ミスがありそうだけど
見てみないとなんとも言えない
0903デフォルトの名無しさん2014/08/25(月) 23:39:41.59ID:Gut43Z9a
>>902
ありがとうございます。

//vsh
void main()
{
vtexcoord = texcoord;

y = position.y;
x = position.x;
z = position.z;

vcolor = color;

  eyenormal = normalize(normalMatrix*normal);
gl_Position = modelViewProjectionMatrix * position;
}

//fsh
void main()
{
gl_FragColor = texture2D(s_texture0, vec2(vtexcoord.x, vtexcoord.y ) ) * vcolor;
}

ちょっといじっている途中なので無駄な変数が残っていたりしますが、この程度です。
(フラグ関係を1つのシェーダで処理せず、エフェクトによって処理を切り替える方式に移行している途中なのでこのシェーダには
 モザイクなどのフラグは出てきませんが、エフェクトなしで一番使用頻度の高いシェーダです)

uniformをfshに直接渡さず、vshに渡してからvaryingでfshに渡さないといけない、とかいうことはありますでしょうか。
0904デフォルトの名無しさん2014/08/25(月) 23:58:59.76ID:ksmxv1nf
シェーダーを扱う側が怪しい
0905デフォルトの名無しさん2014/08/26(火) 02:13:07.64ID:TnOVJndh
四頂点ごとに頂点キックして、そのたびに uniform を設定してるんだろう。悪くすると毎度問い合わせしてるかもしれない。
俺らにデバッグさせるんじゃなくて、問題の切り分けのコード書いて、それから質問してくれ。
0906デフォルトの名無しさん2014/08/27(水) 22:16:48.53ID:BTT7E8g6
Windows上のWebGL実装ってみんなDirect3Dに変換されていたのか
多少は遅くなるだろうからピュアなOpenGLが良いのに

ChromeはOpenGLを使うよう指定しても正常に起動しない

FirefoxはOpenGLで動くけど、Direct2Dで最終的に各レイヤーを合成しているからか、ANGLEによる変換ありの時より遅くなる

IEはもちろんそんな設定はない
0907デフォルトの名無しさん2014/08/27(水) 22:19:28.56ID:jwAkJLhC
OpenGLってただのインターフェースでは・・
0908デフォルトの名無しさん2014/08/27(水) 22:56:32.09ID:Qk/ibaY0
WindowsのOpenGLってDirectXのラッパーらしいが
0909デフォルトの名無しさん2014/08/27(水) 23:08:56.29ID:DcG46rkA
>>908
それで済むなら各ベンダーがOpenGLのドライバを提供する必要ないんだけどそうではないよね?
0910デフォルトの名無しさん2014/08/28(木) 00:31:50.77ID:fhP7eceb
>>906
遅くはならない
GPUはなんだ?
0911デフォルトの名無しさん2014/08/28(木) 15:19:41.88ID:xakPUzfG
WDDMを使っているとOpenGLでプログラムしても実際はDirectXで描画される
0912デフォルトの名無しさん2014/08/28(木) 16:19:21.17ID:a/ASbfe/
どっちでもいい
0913デフォルトの名無しさん2014/08/28(木) 21:57:35.85ID:6Zv9wYlI
OpenGLは全てDirectXに変換するっていうのは発売前のVistaの話
結局ベンダーがICDドライバを提供すればそっちを使うことになった
0914デフォルトの名無しさん2014/08/31(日) 14:23:12.48ID:zA7hqBm7
結局、OpenGLで自前の行列で演算させたい場合、どう並べればいいの?
一次元配列のfloat[16]を作るのはいいとして、
何番目がどの行、列に対応しているんだ。
0915デフォルトの名無しさん2014/08/31(日) 14:28:54.93ID:zA7hqBm7
一次元配列で定義したら、添え字の順番は

m = {_
0, 1, 2, 3,
4, 5, 6, 7
8, 9, 10, 11,
12, 13, 14, 15
}

で、処理されるんだよね?
0916デフォルトの名無しさん2014/08/31(日) 14:30:37.45ID:zA7hqBm7
で、問題は内部では、どう掛けられているのかっていうこと。
glMatrixf(m);

としたらどう掛けられている?
0917デフォルトの名無しさん2014/08/31(日) 14:35:41.23ID:zA7hqBm7
よく、directXでは行列は

m = {_
0, 1, 2, 3,
4, 5, 6, 7
8, 9, 10, 11,
12, 13, 14, 15
}

で、OpenGLでは

m = {
0, 4, 8, 12,
1, 5, 9, 13,
2, 6, 10, 14,
3, 7, 11, 15
}

って書いてるから、一次元配列もこの並び順で書かないといけないんじゃないの?
0918デフォルトの名無しさん2014/08/31(日) 15:34:28.56ID:3KU2lVQJ
d3dでの並びをOpenGLの基本的な並びに当てはめると
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
こうなるのが基本なんだけれど、掛ける順序も
d3d: v*M(SRT)*V*P = v'
GL: v' = P*V*M(TRS)*v
と真逆が基本なお陰で、実は両者で同じ添字の値が表す意味は変わらなかったりする
(traslateのxyzが12,13,14だとかね)
座標系とか、気にすべきことは沢山あるのは確かだけどね
ひとつの行列データの並べ方に限っては「同じようなもの」ではある
0919デフォルトの名無しさん2014/08/31(日) 15:34:48.68ID:OMM4rPHW
javaでopenGLを使ってみようと思っているのですが、バッファを生成するとき
ByteBuffer.allocateDirectの他にglGenBuffersを使う方法が書いてある所もありますが、なにが違うのでしょうか
0920デフォルトの名無しさん2014/08/31(日) 16:04:38.28ID:zA7hqBm7
>>918
でも、glMatrixfとか、glLoadMatrixに渡している配列を見ると、DirectXと同じ並びなんだよね。
渡す側が転置で渡す方がしっくりくるのに。
OpenGLが内部で転置させてるのか、添え字の取り出し方を転置させているのか・・・・。
09219192014/08/31(日) 16:21:45.16ID:OMM4rPHW
すみません自己解決しました
バッファオブジェクトというのを生成すれば高速に描画できるんですね
0922デフォルトの名無しさん2014/08/31(日) 16:50:30.61ID:zrOhjVJY
>>920
同じ並びで正常。特に転置する必要は無い
0923デフォルトの名無しさん2014/08/31(日) 17:01:09.56ID:zA7hqBm7
Matrix.multiplyMM(resultM,0,m1,0,m2,0);

って、m1 x m2 = resultM なの?
m2 x m1 = resultMなの?
0924デフォルトの名無しさん2014/08/31(日) 17:27:38.22ID:ipF4eAwT
>>920, >>923
>>918をよく読んで。
Direct3Dでは頂点ベクトルは横ベクトルで左から掛けるが、OpenGLでは縦ベクトルで右から掛ける
vt*MtもM*vも要素だけ見れば一緒でしょ?
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
と配列に要素を入れた場合は、m1 x m2 = resultM
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
と配列に要素を入れた場合は、全部転地されてしまっているので、m2 x m1 = resultMと見ることができる。
けど、OpenGLでは大抵のライブラリは前者の並び順で配列に要素を入れてるという前提に立ってると思うから、前者の入れ方を使ったほうが混乱しないんじゃないかな
0925デフォルトの名無しさん2014/08/31(日) 18:13:18.22ID:zA7hqBm7
>>924
あ、ごめん、そうじゃなくて、メソッドの掛ける順番の仕様がわからなくて聞いたんだ
OpenGLで、内部的にどっちの順番で掛けてるのか?ってこと。
前者の並び方でも後者の並び方でも、行列の掛け算なんだから、
m1 x m2 か m2 x m1のどっちかで仕様が決まってるでしょ?
それがどっちか聞きたいんだ。
0926デフォルトの名無しさん2014/08/31(日) 18:59:31.90ID:v25oQIh2
>>925
OpenGL1からある関数の話だな?

あの辺の行列関数は、glMatrixMode()で指定した行列に対して右へ右へと掛けていく
んでglVertex*()を呼んだ際に、その頂点が一番右に置かれて計算される

感覚的には、最後に呼んだ関数から順に適用する感じがするかも知れんね
でも、その仕様じゃなかったらビュー行列何回使うんだって話になるw
0927デフォルトの名無しさん2014/08/31(日) 19:20:09.20ID:ipF4eAwT
>>925
いやだから、前者の並び方と見ればm1xm2で、後者の並び方と見ればm2xm1 ただし後者の並び方と捉えるのは混乱が起こるのでおすすめしない
GLのリファレンス的には前者の並び方で、m1xm2というのが正解になる
0928デフォルトの名無しさん2014/09/01(月) 09:56:11.28ID:9ERuifEk
glOrthof とか glFrustumf で座標を設定するとき、上下左右はそれぞれディスプレイの淵を表すというのは分かるんですが、手前と奥ってなんですか
ディスプレイのサイズみたいな基準がないのに-1とか100とか言われても、1増えたらどれだけ変化するのかもわからないと思うんですが
0929デフォルトの名無しさん2014/09/01(月) 12:21:12.60ID:Y3PD7Uve
>>928
そりゃもちろんワールド座標基準だよ
0930デフォルトの名無しさん2014/09/01(月) 12:30:53.12ID:Y3PD7Uve
>>926
なんか、書く順とは逆に適用されていきますとかわけわからないよね。
なんで列オーダーにしたんだろう・・・。
DirectXの行列計算順序が感覚的にしっくりくるし自然。

>>927
m1 x m2 ですか。ありがとう。
並び方をどっちで渡そうが、メソッドはとにかく行列の計算順序(m1の行 x m2 の列)でm1 x m2で演算して結果を出すんじゃないの?
0931デフォルトの名無しさん2014/09/01(月) 13:18:43.16ID:PgC9Ax39
>>930
> DirectXの行列計算順序が感覚的にしっくりくるし自然。
OpenGLとか数学の本(高校教科書含む)を一切読んだ事ないな?
左から掛ける方が不自然だ

俺が書いた>>668を1回読んでどこかコピっておけ
0932デフォルトの名無しさん2014/09/01(月) 13:25:09.10ID:Y3PD7Uve
>>931
だって頂点に変換行列をかけて動かすんだから

v(頂点) * m(変換行列) = v' の方が自然だろう・・・。

m * v だと逆じゃね?ってなる
0933デフォルトの名無しさん2014/09/01(月) 13:27:54.13ID:hNIkQbhJ
どっちかというとOpenGLは「原点を動かす」ように考えるようにされてる気がする
0934デフォルトの名無しさん2014/09/01(月) 13:29:33.82ID:srwG2aQM
M * V が普通
0935デフォルトの名無しさん2014/09/01(月) 13:31:58.31ID:PgC9Ax39
y = a * x (または、f(x) = a * x)
線形代数って↑が基本だと教わってるし、x * a = y なんて書かれたら気持ち悪いし
計算途中にしか見えないよ…
0936デフォルトの名無しさん2014/09/01(月) 13:43:26.10ID:Y3PD7Uve
そら一次関数はかける順番変えても一緒で、次数を文字より先に書くってルールがあるからだろ・・・・
0937デフォルトの名無しさん2014/09/01(月) 13:45:18.79ID:Y3PD7Uve
行列の場合、ax + b そのものが変換行列なんだよ aじゃない
0938デフォルトの名無しさん2014/09/01(月) 13:47:38.64ID:YOdvfabO
>>932
お前学校で回転行列とか見たこと無いの? 無いなら仕方がないか
0939デフォルトの名無しさん2014/09/01(月) 14:08:37.64ID:PgC9Ax39
>>937
別にbがある無しはこの際どうでもいい
行列も1次変換なんだから同じだろ。何で別に考えるんだよ
0940デフォルトの名無しさん2014/09/01(月) 15:23:42.50ID:M8Jh9ISi
回転行列を右から掛ける例は違和感がある
(あっても良いとは思うけど)
0941デフォルトの名無しさん2014/09/01(月) 15:34:52.19ID:PgC9Ax39
>>940
もう違和感とか曖昧な表現はいいから
具体的に右から掛けると何がおかしいか言え
0942デフォルトの名無しさん2014/09/01(月) 15:42:55.21ID:IHc5CjDP
ズボラ:かける順番なんてどれからかけても一緒だろ
0943デフォルトの名無しさん2014/09/01(月) 15:54:41.94ID:PgC9Ax39
とりあえず、ここはOpenGLスレなんで行列は右から掛ける事が前提になっている
|1 2 3|
|4 5 6|
|7 8 9|
と書いたら
float m[] = {
1, 4, 7,
2, 5, 8,
3, 6, 9,
};
と書く事が前提。それを見たまんま転置して書いて結果がおかしいと言われても知らん
0944デフォルトの名無しさん2014/09/01(月) 16:01:04.18ID:PgC9Ax39
>>932
さらに突っ込ましてもらうけど、左から掛けたところでv'は左に書かないと駄目だ
v' = v(頂点) * m(変換行列) ってなる

↓ここ見れば全部そうなっている。そして、かなり気持ち悪い…
http://msdn.microsoft.com/ja-jp/library/bb206269%28v=vs.85%29.aspx
0945デフォルトの名無しさん2014/09/01(月) 17:13:01.94ID:Y3PD7Uve
>>944
等式のイコールを右に描こうが左に描こうが意味は同じなんだよ。
別にそこはどうでもよかったんだが・・・。

数学やってるんじゃなくて、プログラムやってるんだから、
記述順に実行されて行くほうがわかりやすい。
DirectXなら全部行オーダーで、変換行列も呼び出した順に掛けられていくから
なんの混乱もないのに・・・・。
0946デフォルトの名無しさん2014/09/01(月) 17:23:47.01ID:Y3PD7Uve
これが気持ち悪い

glLookAt()
glTranspose()
glScale()
glRotate()

↑この時点ではまだ適用されてません (はぁ?)

glDrawArray() ←ここではじめて逆順に適用されます (はぁ?)


DirectXなら

d3dRotate();
d3dScale() ← 回転x拡大の行列がここでできる
d3dTranspose() ←回転x拡大x移動の行列がここでできる
LookAt() ←MV行列がここでできる
draw() ← MV行列を適用

普通の数式演算そのままでわかりやすい!
0947デフォルトの名無しさん2014/09/01(月) 17:25:54.63ID:YOdvfabO
>>946
お前は一体何を言ってるんだ
0948 ◆miyuri//Z7LS 2014/09/01(月) 17:27:56.73ID:/s0MQ0yh
Direct3D: Intel記法
OpenGL: AT&T記法
0949デフォルトの名無しさん2014/09/01(月) 17:49:40.75ID:IHc5CjDP
>>946
全てで適用するより設定全て済ませてから1回適用する方がよくね
0950デフォルトの名無しさん2014/09/01(月) 18:03:54.80ID:PgC9Ax39
>>945
まだ勘違いしてるようだが、行列は右から左に計算する方法しか定義されてない

v(頂点) * m(変換行列)

と書いたからといって、行列が左から右に計算されている訳ではない
そんな計算方法は無い
計算は右から左に行なわれるから、イコールは左に書くんだ

単に掛ける方向が違うだけで、計算は必ず右から左に定義されている
だったら右から掛けた方が自然に決まってる
0951デフォルトの名無しさん2014/09/01(月) 18:12:18.18ID:Y3PD7Uve
>>950
何を言いたいのかよくわからないが、

http://www.sist.ac.jp/~kanakubo/research/hosoku/gyoretu.html
イコールは右に書いてますが・・・

A X Bなら AにBを掛ける (Aの列とBの行をかける)
B X Aなら BにAを掛ける (Bの列とAの行をかける)
上と下の式は計算結果が異なる。

これだけでしょ。右から左とか意味わからん。
OpenGLの内部処理の話?
0952デフォルトの名無しさん2014/09/01(月) 18:38:35.47ID:PgC9Ax39
>>951
> イコールは右に書いてますが・・・
あっそ、何で右に書いてるか分からんが稀な例だし、変だな

> これだけでしょ。右から左とか意味わからん。
駄目だ理解してないんだな…
じゃぁ>>951のサイトは
・列ベクトル(OpenGL:右から掛ける)
・行ベクトル(DirectX:左から掛ける)
のどっちか言ってみ?
0953デフォルトの名無しさん2014/09/01(月) 18:45:20.11ID:Y3PD7Uve
>>952
プログラムなら代入のイコールは左に書かなきゃいけないが、数学でイコールなんてどっちで書いてもいいでしょ。
イコールは左と右が等価ってことなんだから。そんなこだわり聞いたことない。

>>951のサイトは
ベクトルが縦になってるから列ベクトルでしょう。
0954デフォルトの名無しさん2014/09/01(月) 18:49:08.09ID:AuKDuIgb
>>953
Xの転置をXtと表すと

A x B と
( Bt x At )t

が同じなのはわかる?
行ベクトルの転置は列ベクトルだとすると...

つかわかってないのは君だけなのに、なんでそんな喧嘩腰なんだ
0955デフォルトの名無しさん2014/09/01(月) 18:54:53.70ID:PgC9Ax39
>>953
> イコールは左と右が等価ってことなんだから。そんなこだわり聞いたことない。
それはお前が無学だからだよ…

そもそもの発端は
> v(頂点) * m(変換行列) = v' の方が自然だろう・・・。
と、行列計算が左から右へ計算されているような事を言うから、
それは不自然に感じると言ってるだけだ

もはや行列の定義とか無視してたら話にならんよ
0956デフォルトの名無しさん2014/09/01(月) 18:55:37.20ID:IHc5CjDP
式の結果Xを求める
 式 = X

Xはこういう式で求められました
 X = 式

最近の小学校は100円のリンゴ5個勝った合計求める時
○ 100 * 5
× 5 * 100
って解答になるらしいな
0957デフォルトの名無しさん2014/09/01(月) 19:13:08.20ID:PgC9Ax39
>>956
> 式の結果Xを求める
> Xはこういう式で求められました
同じ事言ってるぞ…その微妙な日本語の違いを数学に持ち込むのかよ…
0958デフォルトの名無しさん2014/09/01(月) 19:23:25.54ID:IHc5CjDP
式の答えは何
 式 = X
Xの元の式は何
 X = 式

どうでもいいやんけって言われるのもわかる
0959デフォルトの名無しさん2014/09/01(月) 19:24:45.00ID:Y3PD7Uve
だからここではマジで等式の右左はどっちでもいいんだって。
そういう風に書けってフォーマット指定がされてるでもない限り、どっちでも正解。
0960デフォルトの名無しさん2014/09/01(月) 19:28:14.46ID:Y3PD7Uve
>>954

A x B = ( Bt x At )t

それはわかるけど、それと、 計算は右から左しかない がどう関係あるのか意味不明。
何が右で何が左なんだ。
0961デフォルトの名無しさん2014/09/01(月) 19:28:40.80ID:pppp+tIw
右利きの人が左手で珍宝こするくらいの違和感
間違いではない
0962 【大吉】 2014/09/01(月) 19:29:48.48ID:pppp+tIw
なんか変なID
09639542014/09/01(月) 19:38:47.91ID:Y3PD7Uve
ああ、掛ける順序を逆にしたら、行列は転置しないと結果がイコールにならないのはもちろんわかってるよ。
周知だからわざわざ言ってなかったんだけど、そこに引っかかってたのか?
0964デフォルトの名無しさん2014/09/01(月) 19:39:54.75ID:PgC9Ax39
>>960
わかった、もはやイコールの左右はどうでもいいや

> それはわかるけど、それと、 計算は右から左しかない がどう関係あるのか意味不明。
|1 2 3|
|1 2 3| * |4 5 6| (多分ずれてるはず…)
|7 8 9|
を計算する時、どうやって計算するか知ってんの?
0965デフォルトの名無しさん2014/09/01(月) 19:46:31.84ID:Y3PD7Uve
>>964
え、それ計算できないでしょ、逆ならできるけど。
左の列数と右の行数が一緒じゃないと掛けられないよ
0966デフォルトの名無しさん2014/09/01(月) 19:53:38.06ID:PgC9Ax39
>>965
お前が散々言ってた事だろwww
1行3列×3行3列
×の両隣が一緒なら掛けられる、覚えとけ
0967デフォルトの名無しさん2014/09/01(月) 19:56:37.94ID:PgC9Ax39
で、結果は両端の数字になる
1行3列
0968デフォルトの名無しさん2014/09/01(月) 19:59:40.36ID:Y3PD7Uve
>>966
知ってるよ。

でも、>>964 は
3行3列 x 1行3列だから 掛けられない。
0969デフォルトの名無しさん2014/09/01(月) 20:05:51.22ID:PgC9Ax39
>>968
専ブラじゃないのかよ…
     |1 2 3|
|1 2 3| * |4 5 6|
     |7 8 9|
これ

> DirectXの行列計算順序が感覚的にしっくりくるし自然。
↑お前の感覚なんてどうでもいいが、自然と言ってるのはおかしいと言ってるんだ
0970デフォルトの名無しさん2014/09/01(月) 20:08:49.17ID:AuKDuIgb
>>960
OpenGLとDirectXが違ってどっかで転置操作してるってのが質問なんじゃないの?

v を列ベクトル、Vを行ベクトルとすると
OpenGLは v' = M * v
DirectXは V = V * M

v' = M * v の 両辺を転置すると

vt = ( M * v )t
V = V * Mt

で同じ式。

CPUはGPUに 頂点 v[4] と 行列 M[16]を渡します
頂点v[4]はベクトルだからvでもVでも同じ値、
MとMtは違うけど、配列が行/列優先によりM[16]も同じ値になります

つまり
>>946のglDrawArrayとDirectXのdraw()はGPUから見ると同じものを渡されてるので、後は頂点シェーダーで掛け算するだけです
どこでも逆順に適用とかされません
0971デフォルトの名無しさん2014/09/01(月) 20:09:52.65ID:Y3PD7Uve
DirectXは、拡大、回転、移動の順だから、本来のオブジェクトの変換順と一緒
だから自然に思える おかしくないだろ。
0972デフォルトの名無しさん2014/09/01(月) 20:10:14.60ID:IHc5CjDP
    a b c
2 3 4 d e f =
    g h i

2a + 3d + 4g
2b + 3e + 4h
2g + 3h + 4i

じゃないの
0973デフォルトの名無しさん2014/09/01(月) 20:17:15.79ID:BjqFO3jg
>>971
多分、その、本来とか自然は思い込み
DirectX使ってきたからそれで思想が最適化されただけ
0974デフォルトの名無しさん2014/09/01(月) 20:25:58.14ID:PgC9Ax39
>>971
また意味不明な事を…それはOpenGLでも一緒だ
M = T * R * S * V (OpenGL)
V * S * R * T = M (DirectX:イコールはお前の言う右にしたよ)

だから、結果は一緒なんだよ
ただ、V * S は行列の定義で右から左に計算するんだ
だから、数学の教科書ではそんな風に書かないから不自然と言ってるんだよ
OpenGLの書き方が自然になる
0975デフォルトの名無しさん2014/09/01(月) 20:30:19.70ID:Y3PD7Uve
>>970
ああ、これもOpenGLの本とかサイトの解説に書かれていることなんだけど、
逆順に適用ってのは、

OpenGLでは、移動、回転、拡大の順に記述するけど、
実際の変換されたオブジェクトを見ると、
ワールド座標で見て、拡大、回転、移動の順で適用した形状になってるから、
それで、「書いた順で形状が変わるわけじゃない」という意味で「逆順で適用される」って説明してるんだよね。

プログラマ的には、コーディングのシーケンス順序で変換が物体に適用される方が、プログラマブルで自然に感じると思うんだけど。
そういう意味で、DirectXの方が自然に感じると言ったんだ。

まあ、ただのグチだけどね。

いっつも主語があいまいだから、人によっては誤解が生まれるところがクソだと思うね。
0976デフォルトの名無しさん2014/09/01(月) 20:31:47.37ID:PgC9Ax39
じゃぁ、なぜDirectXはそうなってるかというと
ソースコードには、ベクトルは行ベクトルで書かざるを得ないから
全部行ベクトルにすれば、行列の表示とソース上での表示が一致するという考えがある

俺はソースと一致してないと不自然に感じる(数学的には不自然だが)と、
そう言えばいいんだよ

無理解によって、掛ける方向がどうこう言いだすからおかしな事になるんだ
0977デフォルトの名無しさん2014/09/01(月) 20:34:51.74ID:PgC9Ax39
>>975
だから、見掛け上、掛ける方向は違ってもメモリ内と結果は一緒なんだっつうの!!
0978デフォルトの名無しさん2014/09/01(月) 20:35:53.66ID:Y3PD7Uve
>>977
うん、だから、プログラム制御とあわせてよ、気持ち悪いからって話。
0979デフォルトの名無しさん2014/09/01(月) 20:36:05.96ID:AuKDuIgb
>>975
ここはOpenGLスレだから、どっちが自然かって言われたら断然OpenGLなんだよねー

同じ場所でクルクル回るのに、どうして毎回移動しないといけないのー。みたいな
glPushMatrix glPopMatrix超べんりー

つかどうせD3DXMatrixMultiplyとかで自分で掛け算してんだから、どっちが逆とかないんじゃねの

>>972
× なんで答えが列ベクトルになっちゃうんだよw
0980デフォルトの名無しさん2014/09/01(月) 20:40:42.59ID:Y3PD7Uve
まあ結局、関東と関西で、バカとアホ、そばのつゆが濃い、薄い、どっちが自然かって議論と一緒なんだけど。
育った環境の問題だね。
0981デフォルトの名無しさん2014/09/01(月) 20:44:11.42ID:BjqFO3jg
プログラマなんだからDirectX風にOpenGLコーディングできるラッパなりなんなり書いたりしたらいいよ
0982デフォルトの名無しさん2014/09/01(月) 20:45:04.50ID:PgC9Ax39
>>979
> つかどうせD3DXMatrixMultiplyとかで自分で掛け算してんだから、どっちが逆とかないんじゃねの
いや、引き数の並びの問題がある
D3DXMatrixMultiply と同じOpenGLのAPIが無いから単純に比較が出来ないが、
引き数の並びが逆になるから、行列演算ライブラリを使う時は気を付ける必要がある
0983デフォルトの名無しさん2014/09/01(月) 20:48:36.89ID:AuKDuIgb
>>982
M = T
M = M * R
M = M * S
でも
M = S
M = R * M
M = T * M
でも好きにすりゃいいだろうって話
0984デフォルトの名無しさん2014/09/01(月) 20:52:54.78ID:PgC9Ax39
>>983
D3DXMatrixMultiply(OUT, M1, M2)
> 結果は、トランスフォーム M1 の後のトランスフォーム M2 を表している (Out = M1 * M2)。
これはDirectXが左から掛ける事を前提にしてるからだ

勘違いして右から掛けると思ってる奴は
D3DXMatrixMultiply(OUT, M2, M1)
としてしまい、ハマる事になる

もう疲れた…
0985デフォルトの名無しさん2014/09/01(月) 20:55:35.33ID:PgC9Ax39
つうか、OpenGL用の行列演算ライブラリはみんな
MatrixMultiply(OUT, M2, M1)
だな
0986デフォルトの名無しさん2014/09/01(月) 20:56:32.67ID:Y3PD7Uve
glTranslate();
glRotate();
glScale();

↑関数が逆順に結果反映されるのがプログラマ的に気持ち悪い。
こういうこと。
0987デフォルトの名無しさん2014/09/01(月) 20:57:29.46ID:AuKDuIgb
>>984

D3DXMatrixMultiply(OUT, M1, M2);
D3DXMatrixMultiply(OUT, OUT, M3);

と
D3DXMatrixMultiply(OUT, M2, M3);
D3DXMatrixMultiply(OUT, M1, OUT);

は同じじゃないのって言ったのだが
0988デフォルトの名無しさん2014/09/01(月) 21:00:00.99ID:BjqFO3jg
>>986
逆だと思うじゃん?でも行列って結合法則
(AB)C = A(BC)
だからどっちも同じじゃん?
0989デフォルトの名無しさん2014/09/01(月) 21:04:05.20ID:PgC9Ax39
>>986
> ↑関数が逆順に結果反映されるのがプログラマ的に気持ち悪い。
違う違う…それはアフィン変換の性質の問題でOpenGL、DirectX関係無い

>>987
それは同じだが、結局ずっと左から掛けてるだけだぞ
まとめて左から、1個ずつ左からの違いだ
0990デフォルトの名無しさん2014/09/01(月) 21:23:01.85ID:Y3PD7Uve
ここの人が使ってる「右から掛ける(列ベクトル)」「左から掛ける(行ベクトル)」
って概念がよくわからなかったけど、

4x4行列にベクトルを右から掛けたければ列ベクトルにしないと掛けられない
4x4行列にベクトルを左から掛けたければ行ベクトルにしないと掛けられない

ってところが出発点なのかな?
0991デフォルトの名無しさん2014/09/01(月) 21:32:48.89ID:AuKDuIgb
君の出発点がどこかは誰にもわからない
0992デフォルトの名無しさん2014/09/01(月) 21:40:13.35ID:Y3PD7Uve
DirectXは変換したい順に右に掛けていく
OpenGLは左に掛けていくっていう言い方ならわかるんだけどね。
0993デフォルトの名無しさん2014/09/01(月) 21:47:21.93ID:4/+EiQVN
>>986
それを親モデルとして、子モデル、孫モデルの描画まで考えて書くと逆順の理由が解ると思う
0994デフォルトの名無しさん2014/09/01(月) 21:48:05.93ID:Y3PD7Uve
あ、もちろん、計算順序は左から右になるのはわかってます。
あくまで書き足していくイメージがってこと。
0995デフォルトの名無しさん2014/09/01(月) 21:49:14.10ID:4/+EiQVN
>>992
D3DXだって親から順にも書けるけどな。
システム側でなく、アプリ側に持たせたから順序が自由になった。
その分、アプリ側で管理する情報が増えてるけどね。
0996デフォルトの名無しさん2014/09/01(月) 22:13:11.21ID:Y3PD7Uve
>>993
いや、別に逆にしなくても親子計算はできるし・・・。
列オーダーにしたから逆にしないとしょうがないってだけでしょ。

>>995
DirectX11あたりで色々自由度上がったみたいだね。
0997デフォルトの名無しさん2014/09/01(月) 22:16:18.63ID:AyKprSXJ
CGの知識も線形代数の知識も全くなしに3Dプログラミングに手を出すとこうなるんだな
0998デフォルトの名無しさん2014/09/01(月) 22:24:40.48ID:Y3PD7Uve
教科書は列ベクトル表記ベースだから、線形代数上がりの人はこうなるんだな
0999デフォルトの名無しさん2014/09/01(月) 22:30:44.48ID:AyKprSXJ
行ベクトル使うの高校の教科書くらいでしょ……
1000デフォルトの名無しさん2014/09/01(月) 22:36:27.04ID:pppp+tIw
おい
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。