OpenGLスレ Part18
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/04/14(土) 12:29:46.29現在のバージョンは4.1
http://www.opengl.org/
http://www.opengl.org/wiki/Main_Page
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・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/
== 前スレ ==
OpenGLスレ Part17
http://toro.2ch.net/test/read.cgi/tech/1321350331/
0002デフォルトの名無しさん
2012/04/14(土) 12:32:20.39Part17: http://toro.2ch.net/test/read.cgi/tech/1321350331/
Part16: http://hibari.2ch.net/test/read.cgi/tech/1309182662/
Part15: http://hibari.2ch.net/test/read.cgi/tech/1289992928/
Part14: http://hibari.2ch.net/test/read.cgi/tech/1263901596/
Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
0003デフォルトの名無しさん
2012/04/14(土) 12:35:10.44-- 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シリーズ
0004デフォルトの名無しさん
2012/04/14(土) 12:37:24.04-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 Shading Language Cookbook
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム
-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門
-- 過去の書籍 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)
0005デフォルトの名無しさん
2012/04/14(土) 12:40:24.41OpenGL Step By Step: http://ogldev.atspace.co.uk/
OpenGL Samples Pack: http://ogl-samples.g-truc.net/
== C/C++以外から使うには ==
Rubyから --> ruby-opengl
Pythonから --> PyOpenGL
Javaから --> JOGL
JavaScriptから --> ???
Haskellから --> ???
C#等、.NET系 --> OpenTK
== Quick Reference Card ==
OpenGL 4.1 API Quick Reference Card
http://www.khronos.org/files/opengl41-quick-reference-card.pdf
OpenGL 3.2 API Quick Reference Card
http://www.khronos.org/files/opengl-quick-reference-card.pdf
OpenGL ES 2.0 API Quick Reference Card
http://www.khronos.org/opengles/sdk/docs/reference_cards/OpenGL-ES-2_0-Reference-card.pdf
WebGL 1.0 API Quick Reference Card
http://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf
0006デフォルトの名無しさん
2012/04/14(土) 12:42:20.40チュートリアルサイト、増えたことに気づかず
まとめ損ないました。
すみません。
0007デフォルトの名無しさん
2012/04/14(土) 23:14:09.440008デフォルトの名無しさん
2012/04/15(日) 22:44:24.25おつです
3次元の立方体を線画で描こうと思って入力したら
「error c2099:初期化子が定数ではない」
と下の点情報が引っかかってしまいました(点G以外すべて)
何を直せばいいのかわからないので指摘お願いします
GLdouble vertex[][3]=
{
(0.0,0.0,0.0),//A
(1.0,0.0,0.0),//B
(1.0,1.0,0.0),//C
(0.0,1.0,0.0),//D
(0.0,0.0,1.0),//E
(1.0,0.0,1.0),//F
(1.0,1.0,1.0),//G
(0.0,1.0,1.0)//H
};
0009デフォルトの名無しさん
2012/04/15(日) 22:51:03.26質問です
CAD や モデラーなどを OpenGL を使って作る場合も、
頂点データは VBO を使って VRAM 側に持たせて、
頂点の位置や法線などのパラメータを変更する度に
バッファのマッピング系やコピー系の関数を使って書き換えるのが普通ですか
それとも、元の頂点のパラメータが変化しないゲームなどと違って、
モデラーなどではメインメモリ側に持たせる方がいいのでしょうか
0010デフォルトの名無しさん
2012/04/15(日) 22:53:05.78丸括弧を中括弧にしてみてはどうでしょうか
0011デフォルトの名無しさん
2012/04/15(日) 22:54:39.23あっさり解決
低レベルな質問で申し訳ないです、ありがとうございました
0012デフォルトの名無しさん
2012/04/16(月) 15:28:29.50どうすれば可能でしょうか?
自前でGLSLを全部パースするしか無い?
(すごく大変。。。。)
0013デフォルトの名無しさん
2012/04/16(月) 18:40:26.20数が足りないから警告ならあってもいいけど
C/C++的にはエラー出るのはおかしくない?
0014デフォルトの名無しさん
2012/04/16(月) 19:48:09.38VisualCのC言語ファイル(.c)だと変数の初期化にカンマ演算子を使うとこのエラーになるっぽい
0015デフォルトの名無しさん
2012/04/16(月) 23:27:30.81(0.0,0.0,0.0)なんて定数ありません
0016デフォルトの名無しさん
2012/04/17(火) 03:47:57.89VSもgccもいけるやん!
って思ってたらVC++か。。。
0017デフォルトの名無しさん
2012/04/17(火) 05:11:45.340018デフォルトの名無しさん
2012/04/17(火) 06:11:03.80へへ。確かに初期化でカンマ演算子を使うことはないから、
その仕様はいいかも。
0019デフォルトの名無しさん
2012/04/17(火) 23:52:21.96OpenGLでは出来ないのでパーサを作るしかないんだが、既製の物がいくらかあるので使えるよ
ANGLE Project http://code.google.com/p/angleproject/
Mesa3D http://mesa3d.org/
どちらもGLSLコンパイラだけ取り出して使うことができる。
ANGLEの方が簡単そうかな。
002012
2012/04/18(水) 00:03:24.97C#から使いたいのでAngleのGLSLパーサーをC#から使えるようにして。。。。
まあ自前でGLSLパーサーを作るよりは簡単でしょう
どうしたものか、むむむむ
0021デフォルトの名無しさん
2012/04/19(木) 13:24:27.25たとえば立方体を描画する場合、頂点情報は8つですみますが
それにテクスチャを貼り付けたい場合は、UV情報は最大だと48個必要になると思います
この場合どのように描画すればいいのでしょうか?
UVの個数に合わせなければなりませんか?
0022デフォルトの名無しさん
2012/04/19(木) 14:00:32.14法線も必要な場合は48個まるまる必要になる。
立方体は不連続な子だから仕方ない。
002322
2012/04/19(木) 14:15:25.00UVも変な張り方しないなら24個で収まる。
が、UVの個数にあわせるしか方法は無い。
とりあえず俺は算数からやり直してきます…。
0024デフォルトの名無しさん
2012/04/19(木) 15:13:26.61UVに合わせてやってみます
ありがとうございました
0025デフォルトの名無しさん
2012/04/21(土) 00:43:30.890026デフォルトの名無しさん
2012/04/21(土) 01:51:18.030027デフォルトの名無しさん
2012/04/21(土) 03:04:43.613Dモデルの曲率を平均すればいい
0028デフォルトの名無しさん
2012/04/22(日) 23:46:13.4525です.
wikiやベクトル解析の教科書などで曲率を調べて数式的定義は見たんですが,
実際の3Dモデルに対する実装の方法が良く分かりません・・・
よろしければ教えてください。
0029デフォルトの名無しさん
2012/04/23(月) 00:32:57.35だからそれはOpenGLなのか?
曲率考える前に
質問する板考えろ。
頭くさってんじゃねぇのか?
0030デフォルトの名無しさん
2012/04/23(月) 00:39:55.730031デフォルトの名無しさん
2012/04/25(水) 00:47:23.64VC2008(C++)で、最初から入ってるopengl32.lib/glu32.libを使って、テクスチャをポリゴンに貼って表示する所まで出来るようになりました。
そこで、テクスチャとレンダーターゲットを16bit or 32bitの浮動小数点にしたいんですが、最初から付いてる奴はヘッダもlibも古いみたいで、
そういうテクスチャが作れないように思えます。
何か新しいライブラリを入れる必要があると思うのですが、何を使えばいいのでしょうか?
テクスチャフォーマットをfloatにして精度を上げたいだけで、それ以上の凝った機能は無くても大丈夫です。
商用に使いますので、できるだけライセンスの緩い奴だと助かります。
よろしくお願いします。
0032デフォルトの名無しさん
2012/04/25(水) 01:27:25.96glext.h / glxext.h とか wglGetProcAddress()とか
ttp://www.opengl.org/registry/#headers
めんどくさいなら>>1にあるglew使えば便利。
0033デフォルトの名無しさん
2012/04/25(水) 01:46:06.04ありがとうございます、これです!glext.h / glxext.h ってヘッダしか無いんですね。
ライセンスについて書かれてないっぽいですが、勝手に使って良いんでしょうか?
glewも色々便利っぽいですね〜!こっちはglew使ってますっていう表記をしないといけないヤツですね。
0034デフォルトの名無しさん
2012/04/25(水) 14:12:49.690035デフォルトの名無しさん
2012/04/25(水) 21:35:22.53しかし素のgl.hもSGI Free Software License B, Version 1.0とやらに従って表記が必要なようなんだけど、これ書いてあるの全く見たことないな
0036デフォルトの名無しさん
2012/04/25(水) 23:59:28.880037デフォルトの名無しさん
2012/04/27(金) 12:13:47.67オープンGLに2D機能って無いんですか?
3DにしてCPU使いすぎる程のものではないので・・・
0038デフォルトの名無しさん
2012/04/27(金) 12:46:58.440039デフォルトの名無しさん
2012/04/27(金) 12:52:57.430040デフォルトの名無しさん
2012/04/27(金) 12:56:45.80> オープンGLに2D機能って無いんですか?
あるよ。というか、特に3Dと区別していない。
0041デフォルトの名無しさん
2012/04/27(金) 15:20:34.65ではz軸を固定して線を描いたりすればいいんですね。
そうやってみます。
0042デフォルトの名無しさん
2012/04/27(金) 16:53:18.4964ビット対応CPUなんで使ってみたいんですけど
windows7です。どうやったら出来るか教えてください。
0043デフォルトの名無しさん
2012/04/27(金) 17:42:28.78GLSLは動的な条件分岐に弱く、速度が極端に落ちると聞いたのですが
処理毎にプログラムを分けると条件分岐の数の二乗分だけプログラムが必要になり色々効率的ではなさそうですが
動的な条件分岐に弱いなら、一回のdraw中に条件判定に要する値が変わらない静的な分岐なら速度はそれほど落ちないのでしょうか?
0044デフォルトの名無しさん
2012/04/27(金) 21:26:53.90OpenGL4で関数ポインタみたいのが導入されて、
それつかえば関数の呼び出し先を必要に応じて変えられるらしい。
使った事は無いのでよくわかんないけど。
0045デフォルトの名無しさん
2012/04/27(金) 23:41:10.53静的な分岐というか、なるべく多くのプロセッサが同じ動作をするように分岐を書くと効率はいいはず
0046デフォルトの名無しさん
2012/04/29(日) 02:00:43.62頭でっかちにならないで実際にシェーダーを書いてみなよ、
動的な条件分岐でさ。案外問題ないと思うよ。
それで速度が遅いなら#ifdefとかで分ければ無駄にならないし、勉強にもなるよ。
0047デフォルトの名無しさん
2012/05/02(水) 16:49:49.49w座標が1のにできないの?
逆行列で戻すとき困るんだけど
0048デフォルトの名無しさん
2012/05/03(木) 19:35:02.630049デフォルトの名無しさん
2012/05/04(金) 13:01:21.950050デフォルトの名無しさん
2012/05/04(金) 21:16:28.71projectionMatrixで変換した座標がwに馬鹿でかい数値入ってくる。
wに1が来るようなprojectionMatrixの作り方教えろ
005147
2012/05/04(金) 22:58:50.66ここにいい例がある。
http://blog-imgs-30.fc2.com/r/u/d/rudora7/20100228235936195.jpg
この行列の計算で求められるのは[480 240 2 3]だ。
wで割れば[160 80 0.6 1]になって確かに、スクリーン座標になるのだが。
[160 80 0.6 1]からは逆行列をかけても元のワールド座標に戻せない。
クリックした画面のワールド座標を求めたいのだが
スクリーン座標は[160 80 0 1]しか得られないのだが
どうすりゃいいんだ。
0052デフォルトの名無しさん
2012/05/04(金) 23:03:25.94まずそこはどうなのよ
0053デフォルトの名無しさん
2012/05/04(金) 23:38:17.88>クリックした画面のワールド座標を求めたいのだが
glReadPixelsでデプス取ってきてUnProjectすればいいだけじゃないのか?
0054デフォルトの名無しさん
2012/05/04(金) 23:57:43.04その[160 80 0.66666 1.0] を逆行列で変換すると[-0.6666 0.6666 0.0 0.33333]になるから
またwの0.3333で割ってやれば[-2 2 0 1]に戻る
クリックした画面のワールド座標は、スクリーン座標[160 80 0 1]の(x,y)だけではダメで
glReadPixelsのGL_DEPTH_COMPONENTでzも拾ってこないと
OpenGLならgluUnProjectを使うのが楽
0055デフォルトの名無しさん
2012/05/09(水) 01:52:58.210056デフォルトの名無しさん
2012/05/09(水) 08:22:22.46最初からテクスチャに描けよ
0057デフォルトの名無しさん
2012/05/09(水) 13:36:10.32fragmentシェーダ内でアクティブであるテクスチャの横幅、縦幅を取得する方法はありますか?
現在はuniform float pixel_size_x;等の変数を作成しセットして利用しています。
これが自動的に求められる(シェーダ内で関数を用いる等で)と、
例えばポストプロセスでガウスをかける時に非常に簡単になるのですが
このような関数はありますでしょうか。
もし存在しており、ご存知の方がいればご教示のほうお願いします。
0058デフォルトの名無しさん
2012/05/09(水) 19:24:55.900059デフォルトの名無しさん
2012/05/09(水) 23:53:05.80ありがとうございます。デプステクスチャが使えないandroidなもんで...
0060デフォルトの名無しさん
2012/05/10(木) 10:23:49.32平面を移動する物体があります。
物体の向き(進む方向)の真後ろから物体を見たいのですが、
視点の位置がうまく導き出せません。
物体の操作方法は
http://www.wakayama-u.ac.jp/~tokoi/opengl/ex-a.html
のページを参考に
r-=(マウスのX座標)/10.0;
(物体のX座標)+=(マウスのY座標)*sin(r*π/180.0)/100.0;
(物体のZ座標)-=-(マウスのY座標)*cos(r*π/180.0)/100.0;
で導出しています。
まだまだわからないことばかりで大変恐縮ですが
何卒ご教示のほうお願いします。
0061デフォルトの名無しさん
2012/05/10(木) 10:55:59.11何をやりたのかも意味不明
0062デフォルトの名無しさん
2012/05/10(木) 12:26:11.62物体が平面の上を自由に動くプログラムを作りたいのですが、
その際に視点を物体の真後ろに固定したいのです。
物体を自由に動かすことは自分でできたのですが、
視点が物体の真後ろに固定する方法がうまく見つからず、アドバイスをいただきたい
という内容です。
0063デフォルトの名無しさん
2012/05/10(木) 12:37:15.88取り敢えずケツにくっついて動くよね。
物体が回転したら視点の位置ベクトルに物体の回転量を掛ければいい。
0064デフォルトの名無しさん
2012/05/10(木) 12:39:26.470065デフォルトの名無しさん
2012/05/10(木) 12:43:28.33物体の前方を意味する方向ベクトルを v とし、
物体の中心位置の位置ベクトルを p とする。
カメラの位置ベクトルを p - l * v とする(l は物体とカメラの間の距離)。
カメラの視線の方向ベクトルを v とする(あるいはカメラの注視点の位置ベクトルを p とする)。
カメラの天頂方向の方向ベクトルは適当に設定する(普通は物体の天頂方向と同じにする)。
カメラの3つのベクトルをこのように設定すれば、
基本的にはとりあえずこれで望みのことは出来るはず。
ただ、これだと物体がほんの少しでも向きを変えれば、その瞬間に
カメラは注視している物体の周りを「大きく」回ることになるので、
たいていは非常に見難いことになる。
カメラの移動を遅らせたり、慣性を付けたりして工夫する必要がある。
006757
2012/05/11(金) 18:51:37.9757です。レスありがとうございます。
また、返信が遅れてしまい申し訳ありませんでした。
そのままの名前だったのですね・・・。
バージョン1.3から使えることを先ほど確認しました。
おかげでGL側のコードが非常にスマートに書けそうです。ものすごい嬉しいです。
本当にありがとうございました。
0068デフォルトの名無しさん
2012/05/11(金) 20:34:43.97GL.BindBuffer (BufferTarget.ElementArrayBuffer, glResources[ibuf]);
GL.BindVertexArray (id);
GL.BindBuffer (BufferTarget.ArrayBuffer, glResources[positions]);
GL.DrawElements (省略)
みたいに
(1) ElementArrayBufferをバインドして
(2) バーテックスアトリビュートをバインド
(3) DrawElements
するとメモリアクセス違反で落ちます。
(1)と(2)を入れ替えると正常に動作します。
DrawElementsの直前でElementArrayBufferをバインドしなければならない
という制約はありますか? もしくは何かすごい勘違いをしてますか?
0069デフォルトの名無しさん
2012/05/11(金) 21:32:52.15glBindVertexArray()の前にglBindBuffer(GL_ELEMENT_ARRAY_BUFFER)を呼ぶと落ちます
本にはVAOのバインドはカレントのバッファーポイントを変更しないと書かれていますが、
ATIだと思いっきり変更してくれるようです。
やれやれ
0070デフォルトの名無しさん
2012/05/11(金) 21:39:48.43いろいろあるよね(´・ω・`)
0071デフォルトの名無しさん
2012/05/11(金) 22:16:44.82ELEMENT_ARRAY_BUFFERが明記されていて初期値0で初期化されると書いてあります。
というわけでATIの動作は正しいです。
本(OpenGL Super Bible)の記述が間違えています
あとIntelドライバーだと保存してくれないみたいです。
http://stackoverflow.com/questions/8973690/vao-and-element-array-buffer-state
0072デフォルトの名無しさん
2012/05/12(土) 22:35:00.250073デフォルトの名無しさん
2012/05/13(日) 00:07:38.80シェーダーは使う機能ごとに異なる記述しないといけないから、何をもってして固定と同じと呼ぶかがそもそも不明。
0074デフォルトの名無しさん
2012/05/13(日) 00:10:12.780075デフォルトの名無しさん
2012/05/13(日) 00:33:14.200076デフォルトの名無しさん
2012/05/13(日) 02:19:52.08これはOSとGPUの相性だったりしますの?
007772
2012/05/13(日) 10:19:45.94それをセットすれば固定シェーダーと同じ画像が得られるというだけですよ?
探せばありそうですが意外と無いです
0078デフォルトの名無しさん
2012/05/13(日) 12:06:50.440079デフォルトの名無しさん
2012/05/13(日) 12:39:18.45OpenGL2まではFogは固定機能であったんだよ。
それともシェーダー=プログラマブルシェーダーっていう最近の子なのかい?
>>72
適当にググったのだとこの辺とか?ES2.0向けっぽいけど、このくらいなら違いはないっしょ。
http://code.google.com/p/gles2-bc/source/browse/trunk/Sources/OpenGLES/OpenGLES20/shaders/?r=4
まぁこの手のオープンソースプロジェクト漁るのが王道かな。
0080デフォルトの名無しさん
2012/05/13(日) 19:45:28.84http://3dshaders.com/home/index.php?option=com_weblinks&catid=14&Itemid=34
0081デフォルトの名無しさん
2012/05/15(火) 02:35:19.89C++でglew.hを複数回includeしてしまうとエラーを吐く仕様なのは理解しています。
現在、
クラスのメンバ関数のデフォルト引数にGLenum型の定数を、
クラスのメンバ変数の型にGLenum型を利用したいと思っています。
例)
classA.h ←glew.hをinclude
classB.h ←glew.hをinclude
これらのヘッダを相互にincludeすると先程のエラーを吐くとおもいます。
現在はこの問題に対してglew.hの中から使用する型や定数の部分を抜き出して
ヘッダ上部で前方宣言することで解決しています。
よりスマートな解決法をご存知の方がいましたら教えて頂けないでしょうか。
0082デフォルトの名無しさん
2012/05/15(火) 02:43:18.670083デフォルトの名無しさん
2012/05/15(火) 02:45:20.150084デフォルトの名無しさん
2012/05/15(火) 02:50:12.920085デフォルトの名無しさん
2012/05/15(火) 03:23:31.62>>83
>>84
レスありがとうございます。
申し訳ありません、自己解決しました。
エラー内容は下のようなモノだったのですが
C1189: #error : gl.h included before glew.h
どうやら、自作のGLヘッダの前にOpenCLのc++ラッパ用ヘッダcl.hppを
includeしたのが問題だったようです。(内部を確認しにいったところgl.hが・・・。)
スレを汚してしまい申し訳ありません。
0086デフォルトの名無しさん
2012/05/15(火) 22:33:18.020087デフォルトの名無しさん
2012/05/16(水) 00:31:25.47openglのポリンゴンのオブジェクトを作った後、バインドしなきゃ
有効なならないとか解説されてますが。
バインドっていったいなにをやっているんですか?なぜ必要なのでしょうか?
0088デフォルトの名無しさん
2012/05/16(水) 00:54:23.05一体どこでそんな解説を見てきたんですか
OpenGLにポリゴンのオブジェクトなんて物は存在しません
0089デフォルトの名無しさん
2012/05/16(水) 01:03:00.420090デフォルトの名無しさん
2012/05/16(水) 01:12:56.600091デフォルトの名無しさん
2012/05/16(水) 03:49:19.130092デフォルトの名無しさん
2012/05/16(水) 04:01:08.88お前は本当に頭が悪いな。どこにポリゴンなんて書いてある?
ちゃんと「ポリンゴン」と書いてあるだろう。
恥かく前にゴミは消えろ
0093デフォルトの名無しさん
2012/05/16(水) 09:17:10.03ポリンゴンって、スタートレックみたいだなーと思ったぉ。
0094デフォルトの名無しさん
2012/05/16(水) 09:24:16.130095デフォルトの名無しさん
2012/05/16(水) 09:30:25.030096デフォルトの名無しさん
2012/05/16(水) 12:42:22.880097デフォルトの名無しさん
2012/05/16(水) 13:08:47.210098デフォルトの名無しさん
2012/05/16(水) 13:17:57.510099デフォルトの名無しさん
2012/05/16(水) 13:26:23.97自演だろ (ノД`)
0100デフォルトの名無しさん
2012/05/16(水) 20:08:11.610101デフォルトの名無しさん
2012/05/18(金) 00:53:12.25カレントの色を拾ってきて、それに何か加工するような処理を入れたいんですが・・・。
0102デフォルトの名無しさん
2012/05/18(金) 01:03:27.88たぶんできない
レンダリングターゲット作って描画して
それを使ってなにかする系が普通らしいです
簡単な計算だったらBlendFuncとかいじればいいよ
0103デフォルトの名無しさん
2012/05/18(金) 01:06:39.95描画結果をテクスチャに貼って、マルチテクスチャで混ぜるようなカンジですか・・・
面倒です!!!
0104デフォルトの名無しさん
2012/05/18(金) 08:17:08.59多分DirectX11のUnorderedAccessView相当の機能だと思うから、やりたいことによっては使えないだろうけど。
0105デフォルトの名無しさん
2012/05/21(月) 11:13:29.02それ面倒とか言ったら何も出来ないと思う
0106デフォルトの名無しさん
2012/05/24(木) 00:31:10.250107デフォルトの名無しさん
2012/05/24(木) 11:29:34.590108デフォルトの名無しさん
2012/05/25(金) 02:04:41.820109デフォルトの名無しさん
2012/05/25(金) 21:51:13.31struct LightInfo {
int Type;
vec4 Position;
vec3 Color;
};
uniform LightInfo Light[8];
と書いてglGetActiveUnfiform()でユニフォーム変数の名前とサイズ、型を取得すると
name = "Light[0].Type"
size = 1
type = INT
みたいな値が8個返ってきます(配列ではなく...)。
ユーザー定義の配列の型は何が帰ってくるのが正しいのか?
配列で返ってくるにはどうすればいいのか?
を教えていただけないでしょうか
0110デフォルトの名無しさん
2012/05/26(土) 00:16:48.42今の状態が正しい
もし配列的に設定したいならUniform Blockを使ってバッファオブジェクトを設定するといいよ
0111デフォルトの名無しさん
2012/05/28(月) 16:22:03.73きちんとAttacheShaderもしてるのに、LinkProgramをすると失敗します。
おまけにglGetShaderivでログの長さを調べるとゼロになってます。
いままでLinkが失敗したことなんてなかったのでさっぱりなのですが、
こういった場合何が悪いのでしょうか。
0112デフォルトの名無しさん
2012/05/28(月) 17:25:30.63エラーはGetProgramInfoLogに書いてあるはず
0113デフォルトの名無しさん
2012/05/28(月) 17:44:11.76レスありがとうございます。
それぞれinとoutは以下のようになっており、一致しているのですが・・・。
// vertex shader
in vec3 in_pisition;
in vec3 in_color;
out vec3 o_Color;
0114デフォルトの名無しさん
2012/05/28(月) 17:46:17.16続きです。
// fragment shader側の変数
in vec3 o_Color;
out vec4 FragColor;
GetProgramInfoLogでみようにも、glGetShaderiv(handle, GL_INFO_LOG_LENGTH, &loglen)
で帰ってくる長さがゼロなんです。
適当にバッファサイズ増やしてみて無理やりGetProgramInfoLogしてみても何もはいって
きません。
0115111
2012/05/28(月) 19:07:12.45ステータスチェック用の変数を0で初期化してしまっており、
GL_FALSE扱いになっていました。
GLint status;
glGetShaderiv(this->handle, GL_LINK_STATUS, &status);
とやると、成功してるとなにもはいってこないんですね・・・。
0116デフォルトの名無しさん
2012/05/28(月) 19:22:35.96なんかいろいろ単純ミスをしてる感じ
0117デフォルトの名無しさん
2012/05/28(月) 19:26:50.81ぁ・・・・そうですね、そりゃログ取れないですよね・・・
すごく単純なミスでした、すみませんorz
0118デフォルトの名無しさん
2012/05/30(水) 09:51:01.84そのままポリゴンへ貼り付ける場合にはPBOを介した方が早くなるのでしょうか?
VBOと同じように「GPU側へ予め転送しておく事で高速に描画できる」ものなのかと認識していたのですが、
サンプルソースを探してみても、MapBuffer/UnmapBufferを利用して何らかの処理を施してからテクスチャとして
利用するものばかりなもので・・・画像データをそのまま貼り付けるソースが見当らず戸惑っております
0119デフォルトの名無しさん
2012/05/30(水) 10:28:15.67PBOとか使わずに普通にテクスチャーを貼ればいいんじゃね
0120118
2012/05/30(水) 15:13:19.550121118
2012/05/30(水) 15:14:26.54「頂点配列→描画」よりも「頂点配列→VBO→描画」の方が処理が早くなるのと同じように
「画像ファイル→テクスチャ」よりも「画像ファイル→PBO→テクスチャ」の方が早いのかと
お聞きしたかったのです
0122デフォルトの名無しさん
2012/05/30(水) 16:40:19.17単に画像ファイルを貼りたいだけなら意味ないんじゃね。普通使わない。
0123デフォルトの名無しさん
2012/05/30(水) 16:42:24.66何で標準で用意されている最も簡単で最も速い方法を使わずに
アクロバティックな方法を採用したがるのか・・・
0124デフォルトの名無しさん
2012/05/30(水) 17:06:41.08テクスチャを書き換えするならPBO使え
0125デフォルトの名無しさん
2012/05/30(水) 17:30:09.180126デフォルトの名無しさん
2012/05/30(水) 17:44:29.570127デフォルトの名無しさん
2012/05/30(水) 23:05:37.22のサンプルプログラムを実行したところ、次のようなエラーが出てしまいました
GLUT: Fatal Error in c:\〜〜〜〜.exe: pixel format with necessary capabilities not found.
おそらくglnterleavedArraysあたりでエラーを吐いてるんじゃないかと思うのですが
glnterleavedArraysは諦めたほうが良いのでしょうか?
0128デフォルトの名無しさん
2012/05/30(水) 23:17:02.13ってしっかり書いてあるじゃねぇか、glnterleavedArrays関係ないよ。
初期化部分で指定してるRGBAとかDepthのサイズが対応してないんじゃないかな
0129デフォルトの名無しさん
2012/05/31(木) 00:00:47.64ありがとうございました
動くようになるまで初期化部分を試行錯誤してみます
0130デフォルトの名無しさん
2012/05/31(木) 18:04:03.08CとopenGLでボーンアニメーションを動かすことってできますか?ぐぐっても、C++ばっか出てきちゃって
0131デフォルトの名無しさん
2012/05/31(木) 18:31:35.660132デフォルトの名無しさん
2012/05/31(木) 19:20:15.060133デフォルトの名無しさん
2012/05/31(木) 19:26:21.010134デフォルトの名無しさん
2012/05/31(木) 23:46:49.79一口にこれというのはないな
0135デフォルトの名無しさん
2012/06/01(金) 10:52:42.26継承とかを多用されてたらやや面倒臭い程度
ところでスレチになったらすまないんだが、OpenGLを使ってゲーム製作中なんだけれどもdxと違ってサウンド機能が無いのが辛い
GLのように広いプラットフォームで利用できて、ある程度高速に実行できるサウンドライブラリはないだろうか
0136デフォルトの名無しさん
2012/06/01(金) 12:22:16.820137デフォルトの名無しさん
2012/06/01(金) 12:28:45.520138デフォルトの名無しさん
2012/06/01(金) 12:37:52.25クロスプラットフォームなのに加えてGLライクに書けるみたいだし、早速試してみるわ
ありがとう
0139デフォルトの名無しさん
2012/06/04(月) 13:35:38.510140デフォルトの名無しさん
2012/06/04(月) 13:44:23.030141デフォルトの名無しさん
2012/06/04(月) 13:53:58.840142デフォルトの名無しさん
2012/06/04(月) 16:16:53.81しかし今更OpenGL1.0の環境もないだろうからglBindTextureでいいと思うがな
0143デフォルトの名無しさん
2012/06/04(月) 17:56:48.15コンパイルエラーなのか、定義がないのか、IntelliSenseで出ない(笑)のか
0144デフォルトの名無しさん
2012/06/05(火) 03:53:41.430145デフォルトの名無しさん
2012/06/05(火) 04:12:42.13>>142も言ってるけどglBindTextureでおk
0146デフォルトの名無しさん
2012/06/05(火) 08:45:56.760147デフォルトの名無しさん
2012/06/05(火) 11:11:16.05何が元でglBindTextureARBの存在を信じていたのかが知りたい
0148デフォルトの名無しさん
2012/06/05(火) 11:18:36.43glBindTextureって遅いので、起動時に一回だけ
実行して、あとはそのまま描画してglBindTextureを
二度と実行しないという方法で高速化して動いてるんだけど、
この方法で問題ないですか?
というか、glBindTextureでバインドしたテクスチャが
消える条件が良く分からない。
0149デフォルトの名無しさん
2012/06/05(火) 12:12:25.06ってか別に遅くないだろ
0150デフォルトの名無しさん
2012/06/05(火) 12:14:43.06yunoの雑記帳 - GL_ARB_multitexture
http://sugarpot.sakura.ne.jp/yuno/?GL_ARB_multitexture
0151デフォルトの名無しさん
2012/06/05(火) 12:37:31.88遅いのはglTexImageXd系でglBindTextureは遅くないと思うのが
0152148
2012/06/05(火) 13:48:37.06ありがとうございます。っていうか、えっ?!と
思ったら>>151 !!!
サンプル改造して動かすだけじゃなく、ちゃんと
中身理解しないとダメですね……
0153デフォルトの名無しさん
2012/06/05(火) 14:04:02.530154デフォルトの名無しさん
2012/06/05(火) 19:35:13.98glTexImage2Dも作成時に1回しか呼ばないから何も問題ない。
※描画時にBindTextureしないのはGLSLの話
単に貼るテクスチャ変えるなら複数枚作っておいて切り替えればいい話。
0155デフォルトの名無しさん
2012/06/06(水) 01:15:18.36�@�A�B�C
�D�E�F�G
�H�I�J�K
�L�M�N�O
と言う感じで、複数枚のコマ送りの画像を埋め込んでおいて
UV座標で�@だけをマッピング→�Aだけをマッピング→�Bだけをマッピング・・・
として簡単なアニメーションをさせていたんだけどこれじゃダメかな?
0156デフォルトの名無しさん
2012/06/06(水) 02:27:32.732Dゲームのキャラのアニメーションとかはそうやるし。
使ってないならディスプレイリストも使うといいかもね
0157デフォルトの名無しさん
2012/06/06(水) 10:57:43.32テクスチャアトラスでググると吉。俺も2Dゲーム
作ってるんで、その方法で行ってる。
0158デフォルトの名無しさん
2012/06/07(木) 16:22:23.29GLSLでバリアンスシャドウマップをやろうとしています。
シャドウマップ作成、
色情報内にライトまでの距離と距離の2乗を格納
↓
ガウスフィルタでシャドウマップをぼかす
↓
ぼかしたシャドウマップで距離を比較して影をつける
これでやろうとしているのですが、
ガウスでぼかしたタイミングで
周りの描画されていない部分の色(ここでは白)と混ざって
ぼかした部分の格納した距離が描画していない部分の距離と混ざってしまい、
距離が正しく比較できなくなり、ぼかした部分が表示されないのですが、
ぼかすのが間違っているのでしょうか???
描画していない部分は白(1.0, 1.0, 1.0)なので
ライトまでの最短距離が0.0,最長距離が1.0に変換しているとすると
混ざって大体最長距離になってしまうっぽいのですが…。
0159デフォルトの名無しさん
2012/06/07(木) 23:52:59.31嫌ならちゃんと背景を描いてやるか、ぼかすのをやめるしかない
0160デフォルトの名無しさん
2012/06/08(金) 11:18:37.34やっぱりそうなのですね…。
背景も描いてみて頑張ってみます。
ありがとうございます。
0161デフォルトの名無しさん
2012/06/08(金) 12:45:19.69それとも何回かに分けて実行しますか
0162デフォルトの名無しさん
2012/06/08(金) 13:07:08.670163デフォルトの名無しさん
2012/06/09(土) 16:25:55.05この透明度の値を変えると,背景にどのような変化がありますか。
自分の持っているプログラムで試しても変化がわかりませんでした。
0164デフォルトの名無しさん
2012/06/09(土) 16:29:47.78その透明度を計算に利用する時に影響が出る。
当然その透明度を使わなければ見た目何の変化もない。
0166163
2012/06/09(土) 16:35:59.31ソースコードの間違い探しってここに晒せば見てもらえますか。
長めかもしれないんですけど。
0167デフォルトの名無しさん
2012/06/09(土) 16:39:49.86クソなコードなら無視する
0168163
2012/06/09(土) 16:50:58.41とあるサイトで、
「X-Y平面、Y-Z平面にポリゴンを描画し、クリックした所の
三次元位置を取得せよ。」
という問題と、それの答えが公開されていたサンプルをもらいました。
いざ実行してみると、正しく座標が取れないことがあったので、
まだ直すところがあるのかどうかを見てもらいたいです。
次にソースをさらします。
0169デフォルトの名無しさん
2012/06/09(土) 17:01:31.32まさかその話じゃないよな。
0171163
2012/06/09(土) 17:25:18.70http://codepad.org/uTZTuch0
0172デフォルトの名無しさん
2012/06/09(土) 17:38:13.850173デフォルトの名無しさん
2012/06/09(土) 17:50:33.320174デフォルトの名無しさん
2012/06/09(土) 17:55:01.580175デフォルトの名無しさん
2012/06/09(土) 17:55:22.803次元と言う高次の情報を無理矢理得ようとしているんだから誤差は付き物
逆算は誤差が出ることを前提にプログラムしなきゃならないよ
0177デフォルトの名無しさん
2012/06/09(土) 18:08:29.06> 2次元のディスプレイ
縦横にデプス加えて3次元だぞ。誤差が大きくなるのは、単に透視投影の際のデプス値の入り方のせい。
0178デフォルトの名無しさん
2012/06/09(土) 19:00:31.83ダメージを受けた時に「画面を揺らす」と言う効果を実装したいのです
現在は全描画物に対して僅かにglTranslateさせると言う方法で行なっていますが、
これよりもスマートで良い方法があればご教示下さい
0179デフォルトの名無しさん
2012/06/09(土) 19:05:01.970180デフォルトの名無しさん
2012/06/09(土) 19:05:16.18全描画物ではなく、カメラの方を僅かに揺らす方が良い
0181デフォルトの名無しさん
2012/06/10(日) 09:41:39.74誰かこれ教えて下さい。
多分MeshクラスにShaderProgramクラスを持つことになって
1つ持つべきかN個持つべきか迷ってます
0182デフォルトの名無しさん
2012/06/10(日) 09:54:26.59描けないなら複数回で描く
それだけのことよ
0183デフォルトの名無しさん
2012/06/10(日) 10:16:38.37複数回で描いた方が良いシェーダーって例えばどんなの?
0184デフォルトの名無しさん
2012/06/10(日) 10:23:13.820185デフォルトの名無しさん
2012/06/10(日) 10:42:55.67不快な思いをさせたようで申し訳なかった
どういう時に描けないのか、何か例を知っているのなら、という意味で聞いたんだ
0186デフォルトの名無しさん
2012/06/10(日) 11:24:22.13そうじゃない特殊なケースもある。いろいろでしょ
0187181
2012/06/10(日) 12:37:18.38(1) (ボーン)TransformShader => 頂点の変形
(2) MaterialShader => マテリアル係数の書き出しとテクスチャー
(3) LightShader => ライティング
の3種類を考えています。
これをレンダリングするためには単純に一回だけレンダリングするだけでは駄目で
多分シェーダーとフレームバッファー)を取り替えながら3回回す必要があります。
で、3回x(ShaderProgram+UniformArray+VertexArray)とレンダーターゲットの変更とかやると
すごく長くなりそうで死にそうなんですがどうすればいいですか
0188181
2012/06/10(日) 12:39:33.59シャドーマップ作る時はマテリアルはいらないので
その時だけシェーダーを単純なのに取り替える?
それはどういうAPIがあればいい?
シェーダーを複数セットできるようにしておいて
レンダリングの時にpass=1とか送って
使用するシェーダーを決めればいい?
0189デフォルトの名無しさん
2012/06/10(日) 20:13:11.38デバイス設定直後いエラーがある場合は、前にそのデバイスを使っていた時のエラーを返している可能性があるのか・・?
0190デフォルトの名無しさん
2012/06/10(日) 20:16:42.910191171
2012/06/10(日) 21:16:55.03http://codepad.org/uTZTuch0
なんですが、タイマー関数の存在って何か意味がありますか。
c(28)C4113:
"void (__cdecl *)()" はパラメータ リストが "void (__cdecl *)(void)"と異なる
という警告が出るんですが、これの解決法はありますか。
0192デフォルトの名無しさん
2012/06/10(日) 21:32:35.65display 関数内でアニメーションしてるわけでもないから、
これだけならタイマー関数を使う意味は無いように思える。
警告の方は、display 関数のシグネチャを
void display() から void display(void) に変えてみるとか。
0193デフォルトの名無しさん
2012/06/10(日) 21:32:40.440195デフォルトの名無しさん
2012/06/10(日) 23:40:22.22その程度で死にそうになってたらこの先確実に死ぬぞ
設計はDirectXのエフェクトやCgFXなんかの既存のエフェクトシステムや
OpenSceneGraphとか各種ゲームエンジンなんかの描画システムをまず参考にするといいんじゃないかな
0196デフォルトの名無しさん
2012/06/11(月) 02:48:35.420197デフォルトの名無しさん
2012/06/11(月) 07:33:14.450198デフォルトの名無しさん
2012/06/13(水) 17:46:16.00フォグの色は
float fogColor[] = { 0, 0, 0, 1 };
glFogfv( GL_FOG_COLOR, fogColor );
で、ブレンドに
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
とすると、ブレンド後にフォグの黒い部分が背景に現れてしまいます。
glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
だと、色が加算されてしまいます。
フォグ適用結果のアルファ値だけを利用する手段はないのでしょうか?
よろしくお願い致します。
0199デフォルトの名無しさん
2012/06/13(水) 23:18:22.91諦めてシェーダ書いてください
0200デフォルトの名無しさん
2012/06/14(木) 00:00:33.79マニュアルに書いてありました。どーもすみません。
あしたシェーダ書いてみます。初体験です。(今までのコードと共存出来るのかな?)
0201デフォルトの名無しさん
2012/06/14(木) 15:08:08.85共存、て話で言うと、シェーダコードは別のプログラム(GLSL)を書いて、それを自分の処理の途中で使うように指示するだけで、
自分の処理そのものを大きく変えるようなアプローチでは無いから大丈夫
もちろん、引き渡す内容に関して、それを管理する引き渡す部分の処理は追加になるけど
そしてシェーダコード自体は新たに書くことになるけど、それは当たり前と言うことで
0202デフォルトの名無しさん
2012/06/14(木) 18:32:53.46シェーダ書きました。
まだまだ改良の余地はありますが、単体テストではいい感じになりました。
教えて頂いて感謝です。
次に共存・共生についてですが
実はこのレンダリングを行う関数はDLL内部にあります。
DLLの初期化時にシェーダプログラムを作成し、親玉のレンダリング処理の一貫として
DLL内のレンダリング関数が呼び出される造りです。
単体テストで「親玉」に相当するものはシェーダなど全く使っていないため
いい感じで動作しました。
ところが「本物の親玉」では既にシェーダを使っていることが分かりました。
glUseProgram() でシェーダを切り替える必要があるのですが
DLL内のレンダリング関数が終了する直前に親玉のシェーダに戻したい場合
どうすればいいか悩んでいます。
(DLLのレンダリング関数を呼び出すときにIDも一緒に渡しておく... ちょ、I/F変更??)
そこで質問です。
その時点で使用されているシェーダのIDを取得する関数はありますか?
例) GLuint program = glNowUsingThisProgram(void);
よろしくお願いします
0203デフォルトの名無しさん
2012/06/14(木) 18:46:19.64いや、今使っている道具の限界を知る上で有用だ
0204デフォルトの名無しさん
2012/06/14(木) 18:59:22.85PowerVR InsiderのOpenGL ES2.0のウィンドウズ版のSDKって
落とすのにログイン以外にする事あるんですかね?
3日ほど時間をあけて試しているのですが
毎回ダウンロードしようとすると
The page cannot be found
と出てしまうので・・・
ttp://www.imgtec.com/jp/powervr/insider/sdkdownloads/index.asp#GLES2
0205デフォルトの名無しさん
2012/06/14(木) 19:18:19.13glUseProgramをググって出てくるドキュメントみるとglGet()にGL_CURRENT_PROGRAMで拾えるっぽいこと書いてあるよ
0206デフォルトの名無しさん
2012/06/15(金) 10:04:53.78またまたすみません。
シェーダが元に戻るのを確認できました。
ドキュメントをちゃんと嫁!ですね。
ところで
シェーダを完全に切り替えるのではなく直前のシェーダの結果に追加したシェーダを合成する場合
皆さんはどのような方法をお使いでしょうか?
質問ばかりで申し訳ありませんが、よろしくお願い致します。
0207デフォルトの名無しさん
2012/06/15(金) 23:51:35.08シェーダ、2日目で限界を感じました・・
フラグメントシェーダ内でカメラからの距離が分からんのですか?!
z/wでは座標系によっては使えんのですね・・
致命的やん
0208デフォルトの名無しさん
2012/06/15(金) 23:56:24.700209デフォルトの名無しさん
2012/06/16(土) 00:08:04.08致命的って・・・
フラグメントシェーダに限らず一般的にシェーダというのは、
デフォルトでは得られない情報は外部から得るんだよ。
パイプラインの前段から情報を渡したり(>>208)、テクスチャから得たり。
0210デフォルトの名無しさん
2012/06/16(土) 00:13:21.52何だか分からなくなってきました…(泣)
0211デフォルトの名無しさん
2012/06/16(土) 00:20:49.66バーテックスシェーダで頂点毎のデータを出力すると、
それが補間されてピクセル毎のデータとなり、
フラグメントシェーダに入力される。
0212デフォルトの名無しさん
2012/06/16(土) 00:38:51.31教えて下さい
例えば最終的に画面上で10x10の100ピクセルが表示されるとして
バーテックス、フラグメントのそれぞれのシェーダは何回ずつ呼び出されますか?
VERTは四隅の4回、FRAGは100回でしょうか?
それともVERT、FRAGとも100回ずつでしょうか?
「補完」のイメージがよくわかっておりません…
0213デフォルトの名無しさん
2012/06/16(土) 00:41:05.41補完はあるフラグメントに飛び込むポリゴンの部分の頂点に対する補完
0214デフォルトの名無しさん
2012/06/16(土) 00:49:53.51なんとなく解りました。
とすると、バーテックスシェーダーから渡すとしても「補間」される前の頂点の座標しか渡せないように思うのですが、まちがってますか?
0215デフォルトの名無しさん
2012/06/16(土) 01:12:09.78それが補完されるのだから十分であると思うけど・・・とりあえず間違ってはないと思う
0216デフォルトの名無しさん
2012/06/16(土) 01:44:52.22夜遅くまですみません…
バーテックスシェーダで算出した頂点座標(画面座標系かつユーザ変数)までもがフラグメントシェーダに渡った時点で対象ピクセルの画面座標(頂点とは限らない)に補間されるのでしょうか?
そんな器用なことできないですよね…
フラグメントシェーダ内で画面座標ではなくワールド座標系の変数、gl_FragWorldCoord みたいなのは無いんでしょうか?
テクスチャの淵の座標と視点座標ぐらいなら何とかなりますが、画面上に描画する淵以外のピクセル(補間された部分)だとそう簡単には行きません。。
(OpenGLさんが内部的にやってることと同じ処理を書く必要がある)
で、限界を感じ、致命的などと愚痴りました。(泣)
0217デフォルトの名無しさん
2012/06/16(土) 01:54:37.93器用も何も単なる線形補間
頂点毎に色を変えたポリゴンを描いたことはないの?シェーダの話以前に
ワールド座標系はバーテックスシェーダでgl_Vertexだったっけな、あるよ確か
あとそっから下に書いてあることはなんかよくわからんw
0218デフォルトの名無しさん
2012/06/16(土) 03:47:18.720219デフォルトの名無しさん
2012/06/16(土) 09:33:53.060220デフォルトの名無しさん
2012/06/16(土) 12:15:02.340221デフォルトの名無しさん
2012/06/16(土) 14:21:43.990222デフォルトの名無しさん
2012/06/18(月) 22:04:22.56いろいろ教えて下さり、おかげさまで気持ちよく動作するようになりました。有難うございました。
VS内でカメラと頂点の距離を取得し、FSに渡して解決しました…
これで十分要件満たします。
0223デフォルトの名無しさん
2012/06/19(火) 11:37:52.52パイプラインの処理的にもそれであってる
0224デフォルトの名無しさん
2012/06/20(水) 21:27:09.060225デフォルトの名無しさん
2012/06/20(水) 21:46:35.110226デフォルトの名無しさん
2012/06/20(水) 22:10:04.74float 20個くらいでリンクの時に必ずフリーズ起こすんですよね
こんなものですかね?環境依存なんでしょうけど
0227デフォルトの名無しさん
2012/06/20(水) 23:46:04.04手元の仕様(4.0)では最小値64になってるけど
0228デフォルトの名無しさん
2012/06/21(木) 01:10:19.810229デフォルトの名無しさん
2012/06/21(木) 05:32:30.72GL_MAX_VERTEX_VARYING_COMPONENTS_ARB:16
GL_MAX_VARYING_FLOATS:68
で使ってるのが
varying vec4 x1
varying float x11
varying vec2 x8
:31 floats 20 components?
ここから一個でもfloatを削るとリンク通る(Render Monky)
というかrender monkyはこのチェックしないでフリーズしてしまうんだな
0230デフォルトの名無しさん
2012/06/21(木) 21:00:29.70glTexture2Dを実行している間メインの描画スレッドがカクツキ、停まっているようなんですが
glTexture2D の部分を memcpy に置き換えてバッファに空書きならスムーズに動きます。
こんなんでしたっけ?
NVIDIA GeForce をつかっています。
0231デフォルトの名無しさん
2012/06/22(金) 11:11:15.10formatとinternal_formatは合ってるか?
0232デフォルトの名無しさん
2012/06/24(日) 10:11:49.46//vertex shader
#define N 20
varying v[N];
void main(void)
{
0233デフォルトの名無しさん
2012/06/24(日) 10:18:17.03//vertex shader
#define N 20
varying float v[20];
void main(void)
{
for(int i = 0 ; i < N ; i++)
{
v[i] = float(i);
}
gl_Position = ftransform();
}
//fragment shader
#define N 20
varying float v[N];
void main(void)
{
float c = 0;
for(int i = 0 ; i < N ; i++)
{
c += v[i]/N;
}
gl_FragColor = vec4( c, 0.0, 0.9, 1.0 );
}
//
このシェーダでrender monkeyか何かでNを増やしていって何処でハングするか・・・自分は以下で20で、floatをvec4に変えても同じという謎
Card name: ATI Radeon HD 4850
Manufacturer: ATI Technologies Inc.
Chip type: ATI Radeon Graphics Processor (0x9442)
0234デフォルトの名無しさん
2012/06/24(日) 10:20:53.970235デフォルトの名無しさん
2012/06/24(日) 11:21:02.41(VertexShaderをvarying float v[N];に変えて)39で落ちた。
vec4に変えると32でエラー
GeForce GTX 580 (Driver 301.32)
0236デフォルトの名無しさん
2012/06/24(日) 12:32:40.73ああそういうことか、どうも
>>235
レスありがとう。
環境によってまちまちなようですな
でもやっぱり綺麗に4倍ではないのか、かといって同じでもないのか
リンクできないならリンクエラーになって欲しいがそうもならないし
0237デフォルトの名無しさん
2012/06/24(日) 18:09:22.930238デフォルトの名無しさん
2012/06/24(日) 18:22:27.59だから頂点シェーダー
0239デフォルトの名無しさん
2012/06/24(日) 18:27:41.17そうだよね、答えてくれてありがとう
0240デフォルトの名無しさん
2012/06/24(日) 20:08:52.380241デフォルトの名無しさん
2012/06/24(日) 23:13:46.62は評価してよいのではないか
0242デフォルトの名無しさん
2012/06/25(月) 23:23:36.28そうですか、遅いですか
でも別スレッドなんですよ?
glTexImage2Dに突入してから抜けるまで他のスレッドに移らないようにドライバ内で排他制御してるのかな?cpu->gpu転送時にそうしないといけないんでしょうかね?(でも転送前の変換してるときにはロックする必要もないと思うんだけど)
0243デフォルトの名無しさん
2012/06/26(火) 00:36:13.86別スレッドというのが新情報な気がするがまあいい
描画スレッド(glDrawElementsなんかで描画してる)と別なスレッドでglTexImage2Dを呼んでいるという理解でいいかな
その時各スレッドでOpenGLのコンテキストはどうなってる?
OpenGLでは大抵の実装で同じコンテキストに複数のスレッドから同時にアクセスしてはいけないことになってる
なのでglTexImage2Dをやるスレッドでは通常の描画コンテキストとは別に共有コンテキストを作って使うべきだ
0244デフォルトの名無しさん
2012/06/26(火) 00:55:36.370245デフォルトの名無しさん
2012/06/26(火) 00:58:35.32常に最新のverで話されていて躊躇する
0246デフォルトの名無しさん
2012/06/26(火) 01:22:17.380247デフォルトの名無しさん
2012/06/26(火) 09:10:15.380248デフォルトの名無しさん
2012/06/26(火) 11:47:24.270249デフォルトの名無しさん
2012/06/26(火) 12:10:20.74実はシングルコアのCPUで別スレッドなんです〜
とかだったら笑う。
0250デフォルトの名無しさん
2012/06/26(火) 12:46:37.22変換処理は、GPU内部で行っていたと思う。
そこは確かめた?
0251デフォルトの名無しさん
2012/06/26(火) 16:39:06.96>突入してから抜けるまで他のスレッドに移らないようにドライバ内で排他制御してるのかな?
>cpu->gpu転送時にそうしないといけないんでしょうかね?
一つの穴に何人もが突っ込んだら、穴裂けちゃうでしょ
>(でも転送前の変換してるときにはロックする必要もないと思うんだけど)
逆に自分がOpenGLの中側にいると想像して、中で管理するリストを持ってるとした時、
そのリストに追加変更処理発生するような場合、ロックしたくならないか?
0252デフォルトの名無しさん
2012/06/26(火) 19:25:20.890253デフォルトの名無しさん
2012/06/26(火) 19:36:53.120254デフォルトの名無しさん
2012/06/26(火) 19:47:30.520255デフォルトの名無しさん
2012/06/26(火) 20:18:55.35てか、「良質なサンプル」 ってのは、つまり難しい事を予め片っ端から製造済みのコードそのもの、って事か
よくわかんないからコピペで済ましたいって意味で
0256デフォルトの名無しさん
2012/06/26(火) 20:53:25.250257デフォルトの名無しさん
2012/06/26(火) 21:18:47.66ShaderX とか GPU Pro なんて、良質でモダンなシェーダーてんこ盛りだよ
0258デフォルトの名無しさん
2012/06/26(火) 21:48:52.20glTexImage2D に渡す前に自分で変換してから渡したほうが速かった(・o・)ノ
ドライバ、しょぼ
0259デフォルトの名無しさん
2012/06/27(水) 20:22:43.43(ρ_;)
0260デフォルトの名無しさん
2012/06/28(木) 22:52:41.980261デフォルトの名無しさん
2012/06/28(木) 22:56:48.03こっちが返した depth 値を見て、奥にある分は上書きされる。
0262デフォルトの名無しさん
2012/06/28(木) 23:02:06.490263デフォルトの名無しさん
2012/06/29(金) 00:22:48.71デプスバッファは自動なのにライトは書き書きしないといけないんですよね?
違いはどこに有るのでしょうか?
ドキュメントのどこをみればいいでつか?
0264デフォルトの名無しさん
2012/06/29(金) 00:52:49.05ライト?ライトって光源のライトの事?
デプスバッファは、スクリーンの平面だけでは足りない深度についての距離情報を持つ物で、
光源は単に、そのフラグメントの色を決定する為の要素でしかないから、計算すればって話
二つは全然立場が違う物だよ。 違う意味のライトが思いつかないので、こんな話だけど
0265デフォルトの名無しさん
2012/06/29(金) 01:17:06.61グラフィクスパイプラインの動作に深く関わってるから固定機能なんでつよ。
0266デフォルトの名無しさん
2012/06/29(金) 01:22:56.160267デフォルトの名無しさん
2012/06/29(金) 02:14:05.800268デフォルトの名無しさん
2012/06/29(金) 05:46:44.04ライトはglEnable(GL_LIGHTING)&glLightXX()のつもりですた。
glEnable/glDisableでCapa制御するが、シェーダでは GL_DEPTH_TEST だけ特別扱いするぜ!!
ということでいいでつか?
0269デフォルトの名無しさん
2012/06/29(金) 11:09:57.89それ明らかにシェーダの自由性を損なうから使えないのは当然だろ。
一方デプステストはPシェーダともVシェーダとも直交してるから使えるのはおかしくない。
特別扱いとかお前何言ってるの。
0270デフォルトの名無しさん
2012/06/29(金) 11:10:23.160271デフォルトの名無しさん
2012/06/29(金) 16:13:57.76デプステストは初期状態で有効になってますが、ライティングは初期状態で無効になってます。
OpenGLのレンダリングステートの初期状態について知るには何処を参照すればいいでしょうか?
という質問なのか…?
0272デフォルトの名無しさん
2012/06/29(金) 16:22:51.12左下が1ピクセルでも画面外に行くと描画されなくなっていまいます
うまくクリッピングされるようにはできないのでしょうか?
0273デフォルトの名無しさん
2012/06/29(金) 18:58:35.480274デフォルトの名無しさん
2012/06/29(金) 19:23:25.63GL_DEPTH_TEST
params returns a single boolean value indicating whether depth testing of fragments is enabled. The initial value is GL_FALSE.
初期値無効だったわ…。ということは違うのか?
何が疑問なのかさっぱりわからん…。
0275デフォルトの名無しさん
2012/06/29(金) 21:52:04.70無理。たぶん。
おとなしく wglUseFontOutlines を使用するか、
いったんFBOに描画したやつをTextureで描画する。
0276デフォルトの名無しさん
2012/06/29(金) 23:55:58.092.glBitmapでずらす
3.描画
でいけるとおもうよ
0277デフォルトの名無しさん
2012/06/30(土) 01:02:07.54いけましたーステキ
0278デフォルトの名無しさん
2012/06/30(土) 01:56:15.190279デフォルトの名無しさん
2012/06/30(土) 09:13:40.470280デフォルトの名無しさん
2012/06/30(土) 20:16:44.250281デフォルトの名無しさん
2012/07/05(木) 10:38:01.12http://codezine.jp/article/detail/843
を参考にしながらやると、codezineのページが古いためかエラーが起きてしまいます。
一応collada domを使用したいと考えてはいますが、
もし、それよりも良いやり方があればご指南、アドバイス等いただけないでしょうか。
宜しくお願いします。
0282デフォルトの名無しさん
2012/07/05(木) 11:00:12.770283デフォルトの名無しさん
2012/07/05(木) 11:12:12.230284デフォルトの名無しさん
2012/07/05(木) 12:47:10.79>>282 の真意をくみ取れないなら、あるいは真意を伺うことすらできないなら、
プログラミングどころかコンピュータに関わることすら向いていないから諦めろ
0285デフォルトの名無しさん
2012/07/05(木) 13:43:23.09いえ、エラーについて書く前に、
もう一度エラーについて考え直していたところでした。
0286デフォルトの名無しさん
2012/07/05(木) 13:44:28.85スマン、ループったな
0287デフォルトの名無しさん
2012/07/05(木) 15:33:30.23方便キツすぎて汎用性ないから別の形式にした方がいいよ
0288デフォルトの名無しさん
2012/07/05(木) 16:22:24.470289デフォルトの名無しさん
2012/07/05(木) 18:56:17.78COLLADA ってデータの意図をパーサーで汲み取らないといけないものなの?
0290デフォルトの名無しさん
2012/07/05(木) 20:05:34.90Blender側Exporter書いて、自前のC++コードで読んで表示
都合優先で
0291デフォルトの名無しさん
2012/07/05(木) 20:31:18.30wavefrontOBJ形式がシンプルで実装しやすいと思うぜ
中の構造もテキストエディタで開いて、一目瞭然。パースも単純。
0292デフォルトの名無しさん
2012/07/06(金) 01:15:16.43方言のタイポじゃね?
3Dツールの汎用フォーマットってのはバベルの塔なのかもな…。
0293デフォルトの名無しさん
2012/07/06(金) 05:16:17.82C#かboostのptree使えば・・・
結局>>290みたいにモデラー側にExporter書いちゃうのが一番楽
0294デフォルトの名無しさん
2012/07/06(金) 08:33:48.39俺Blenderのエクスポーターすごく書きたいんだけど
資料はどこを見ればいい?
どこから手を付けていいかサッパリ分からん
0295デフォルトの名無しさん
2012/07/06(金) 08:49:59.350296デフォルトの名無しさん
2012/07/06(金) 11:47:41.75とりあえず「Blender プラグイン 作成」とか「Blender スクリプト 作成」とかでググれよ。
あとその話になるともうスレチだからBlenderスレいくといい
0297デフォルトの名無しさん
2012/07/06(金) 15:42:22.21俺 >>290 だけど、APIリファレンス見ただけだよ
コードはPythonで。 てか、普段 OpenGLの、特にVBOとかのレベル扱ってて意味わかってれば、別に普通。
0298デフォルトの名無しさん
2012/07/08(日) 01:59:15.05上手く描く方法はないでしょうか??
0299デフォルトの名無しさん
2012/07/08(日) 02:14:49.67glDisable( GL_DEPTH_TEST );
0300デフォルトの名無しさん
2012/07/08(日) 08:37:48.64ナイナイw
0301デフォルトの名無しさん
2012/07/08(日) 12:58:13.69glDisable( GL_DEPTH_TEST ); してから描画とか
glClear(GL_DEPTH_BUFFER_BIT); してから描画とか、
バックバッファに、そのOSのAPIで上から描画しちゃうとか、色々
>>300
w
0302298
2012/07/08(日) 13:28:02.700303デフォルトの名無しさん
2012/07/08(日) 21:45:05.00まだ実験段階ですよってこと?
0304デフォルトの名無しさん
2012/07/08(日) 21:51:59.08なんだと思ってたんだ?
0305デフォルトの名無しさん
2012/07/08(日) 22:11:17.110306デフォルトの名無しさん
2012/07/08(日) 22:26:42.61判定とか判断って意味じゃないの。TEST
0307デフォルトの名無しさん
2012/07/09(月) 11:18:33.180308298
2012/07/09(月) 17:42:05.73色を無色透明にする、ラインの太さを0にするなど、そういう方法は試しましたが、駄目でした。
0309デフォルトの名無しさん
2012/07/09(月) 17:48:40.04retune(リチューン?)ってなに?
0310298
2012/07/09(月) 18:15:14.560311デフォルトの名無しさん
2012/07/09(月) 18:17:08.99バックバッファに描画するって事か?
0312デフォルトの名無しさん
2012/07/09(月) 19:04:12.38glColorMaskだっけ? 忘れた
0313デフォルトの名無しさん
2012/07/09(月) 19:36:28.990314デフォルトの名無しさん
2012/07/09(月) 19:54:55.690315デフォルトの名無しさん
2012/07/09(月) 21:48:49.730316デフォルトの名無しさん
2012/07/09(月) 22:06:31.190317デフォルトの名無しさん
2012/07/09(月) 23:27:16.810318デフォルトの名無しさん
2012/07/10(火) 05:17:49.06答える方もエスパーしなくていいし。
0319デフォルトの名無しさん
2012/07/10(火) 15:51:20.09テクスチャとして使うために GPU 側に転送する場合、
0. glTexImage2D で転送
1. glTexSubImage2D で転送
1. PBO で glMapBuffer して書き込み → glTex(Sub)?Image2D
2. FBO …はこの用途での使い方が分からない。
一般的にはどれが一番早いんでしょうか。
0320デフォルトの名無しさん
2012/07/10(火) 16:59:09.830はデータサイズの変更とかもできるのであんまり速く無いと思う。
この用途でFBOを使う事はたぶん無いだろう。
昔Geforce6000系でglTexSubImage2D とPBO+glMapBufferで速度比較したが
大差なかったような記憶がある。
デコード結果を一旦メモリに置いてからglMapBufferが返すアドレスにデータを書き込むよりも
直接デコード結果をglMapBufferが返すアドレスに書き込む方が早いかもしれない。
後ピクセルフォーマットによっては内部でデータ変換が必要になって遅くなるみたいな事を聞いた事がある。
GL通はデコード前のデータをGPUへ転送してGPUでデコードしたりするんだろうか。
まぁ、たくさんGPUを買ってきて、いろんな方法を試して調べてみたらいいと思うよ。
0321デフォルトの名無しさん
2012/07/10(火) 17:11:26.190322デフォルトの名無しさん
2012/07/10(火) 21:07:03.53自分は、Unityとかで作るべきだと思うんですけど、どうなんですかね?
友達が全く言う事を聞かなくて困っています。よろしくお願いします。
0323デフォルトの名無しさん
2012/07/10(火) 21:14:46.65ゲームには音だしたりAIだったり他に色々必要になる
ゲームにもよるだろうけどゲーム作りたいとだけ言われたらUnityを薦めるわな
0324デフォルトの名無しさん
2012/07/10(火) 21:29:28.76普通に考えればそうですよね。ありがとうございます。
0325デフォルトの名無しさん
2012/07/10(火) 21:40:22.000326デフォルトの名無しさん
2012/07/10(火) 21:44:33.03ただopenGLであとは何もかも自作となると途中で挫折する可能性のほうが高くなりそうで
ヤル気があるのであればopenGLで作るのを止める理由はないね
若いって羨ましいのぅ
0327デフォルトの名無しさん
2012/07/11(水) 01:36:18.35ありがとう。
しかしこの用途で PBO が早くないとなると、存在価値がよく分からなくなってくるな。
GLES2 では PBO ないし、 FBO が出た時点で用済みなのかな。
0328デフォルトの名無しさん
2012/07/11(水) 02:26:43.30この辺のサンプルで試してみたらどうだろう
ttp://www.songho.ca/opengl/gl_pbo.html
0329デフォルトの名無しさん
2012/07/14(土) 00:36:09.30DirectDraw やら GDI の BitBlt と pixel format の組み合わせで、どれが一番速度が
出るかベンチマークしている人がたくさんいた。
2012 年の今でも、未だにここがボトルネックという…。
少し前の Intel GMA でテクスチャ転送すると、 pixel format によっては 640x480 60fps の転送が
間に合わん。何かの冗談だと言ってくれ。
0330デフォルトの名無しさん
2012/07/14(土) 01:54:56.89最近は4.0まで対応したらしいがどうなんだろうな
0331デフォルトの名無しさん
2012/07/14(土) 03:25:39.090332デフォルトの名無しさん
2012/07/14(土) 05:53:40.980333デフォルトの名無しさん
2012/07/14(土) 08:48:04.350334デフォルトの名無しさん
2012/07/14(土) 08:50:29.08インテルGMAはUMAだから理論上は転送コストゼロにできるはずなのに、余程ドライバの実装がアホなのか。
0335デフォルトの名無しさん
2012/07/14(土) 09:37:26.16VRAMとRAMの転送速度を速くしようとすると、GPUをCPUかチップセットに内臓せなあかんのやろうね。
でも現状は内臓GPUってしょぼいのばっかだよね。
さらに高解像度なディスプレイが普及してきているから
転送しなきゃいけない量も増えている。
こうなったらRAMとのデータのやり取りは最小限にして
フラグメントシェーダとか駆使してばりばり映像を作るしかないべ。
ここにいるおまいらなら、おっぱい方程式をレイトレーシングとか簡単でしょ。
0336デフォルトの名無しさん
2012/07/14(土) 13:19:18.07> さらに高解像度なディスプレイが普及してきているから
> 転送しなきゃいけない量も増えている。
ディスプレイが高解像度になったという理由で増えてきてる
RAM->VRAM 転送しなきゃならないデータというのは何?
それはフラグメントシェーダとか駆使することが主な解決方法なの?
俺は、ディスプレイの高解像度化が原因で転送量が増えてきてるのなら、
シェーダのユニット(コア)を増やすよりも、
予めデータを VRAM に置いておける量を増やす、
つまり VRAM の容量を増やした方が解決に繋がると思うのだが。
0337デフォルトの名無しさん
2012/07/14(土) 13:27:21.65描画が遅いせいでウィンドウの反応が悪くなったりとか微妙だろ
Qtだと簡単にできるんだが、QtCreatorはVisual Studioと比べるとデバッグがやりにくいし
ttp://doc.qt.nokia.com/qq/qq06-glimpsing.html#writingmultithreadedglapplications
> さらに高解像度なディスプレイが普及してきているから
> 転送しなきゃいけない量も増えている。
つまり、高解像度なディスプレイがあると表示するコンテンツも
それに合わせて高解像度にしたくなる。
だからCGやるときはテクスチャサイズが大きくなり
動画再生するときもよりサイズが大きいものが必要になるという事。
初期化時にテクスチャやメッシュをVRAMに転送しておいて
レンダリング時にあまりGPUへデータ転送しなくていいならVRAM容量アップでもいいかもしれない。
けどストリーミングされた動画をテクスチャに貼り付けたいときは
あらかじめVRAMに置いておく事はできない。
そこでデコード前のデータを転送してGPUでデコードするとか
高解像度画像に見えるようにデータ処理すればいいんでないかと。
>>337
Visual Studio Add-inを使えばいいんじゃ。
Express Editionだと使えないらしいけど。
http://qt.nokia.com/downloads/visual-studio-add-in
0339デフォルトの名無しさん
2012/07/14(土) 22:30:27.86なるほど、テクスチャ ストリーミングね。
すまん、「映像を作る」と言われた時、正直デコーディングは想定してなかった。
0340デフォルトの名無しさん
2012/07/21(土) 16:44:51.75具体的な症状は、線が描画されずに真っ白いまま、というものなのですが、どなたかアドバイス頂けませんでしょうか。
OSはWindows7 64bit
ディスプレイアダプターはInterl(R) HD Graphics 4000で、
サンプルプログラムはhttp://www21.atwiki.jp/opengl/pages/21.htmlです
プログラム自体は起動するので、インストール関係は間違ってないと思われます
試しにInterl(R) HD Graphics 4000をアンインストールして、標準VGAドライバにすると描画されたので
おそらくディスプレイドライバ関係だと思うのですが…
0341デフォルトの名無しさん
2012/07/21(土) 18:19:53.76Interl(R) HD Graphics 4000のドライバーにWindows8用のベータ版ドライバーを採用することできちんと描画されるようになりました
参考サイトです
http://www.4gamer.net/games/128/G012877/20120713008/
0342デフォルトの名無しさん
2012/07/21(土) 18:50:38.03http://www21.atwiki.jp/opengl/pages/21.html
のプログラムすら動かなかったなんて、驚き。
元のドライバが相当古かったのか。
ちなみに機種は何でした? VAIO?
0343デフォルトの名無しさん
2012/07/21(土) 18:55:42.300344デフォルトの名無しさん
2012/07/21(土) 19:15:05.39東芝のdynabookです
>>341のドライバを入れる前はhttp://www21.atwiki.jp/opengl/のサンプルは全滅でしたが、
http://www.natural-science.or.jp/article/20091107233553.phpのサンプル(地平線、創造物など)だけは何故か動いてくれました
今では両サイトのサンプルとも正常に描画されますが…
0345デフォルトの名無しさん
2012/07/23(月) 23:06:29.41オブジェクトの移動回転について、
Matrix.scaleM();
Matrix.rotateM();
Matrix.translateM();
の順でやるのがセオリーだと思いますが、これでは上手く行かず
Matrix.translateM();
Matrix.rotateM();
Matrix.scaleM();
だと思ったように描画されます。これはどうしてでしょうか?
0346デフォルトの名無しさん
2012/07/23(月) 23:38:22.88こう考えてはどうでしょうか。
OpenGL(GLES)の頂点座標ベクトル V は「縦ベクトル」で表されていると考える。
(あくまでそう解釈するだけ。配列の書き方とか内部実装などは考えるな)
その場合、座標変換行列を M とすると、座標変換は M * V と表現される。
scaleM を Ms、rotateM を Mr、translateM を Mt とすると、
Matrix.scaleM();
Matrix.rotateM();
Matrix.translateM();
は Ms * Mr * Mt * V と表現される。
Matrix.translateM();
Matrix.rotateM();
Matrix.scaleM();
は Mt * Mr * Ms * V と表現される。
貴方が意図している変換がどういうものかは知りませんが、
このように考えると、変換を組み合わせるべき順番が分ると思います。
0347デフォルトの名無しさん
2012/07/23(月) 23:50:24.12どうも腑に落ちないんだが
内部で頂点の情報は最後に合成されるから、それまでは0に何をかけても0という解釈なのだろうか・・・?
0348デフォルトの名無しさん
2012/07/24(火) 00:24:44.69内部は考えるなと言ったんだが・・・
内部の事で説明した方が分りやすいのなら、そうしようか。
実行時に Matrix.scaleM(); というコードの部分を処理した時、
ただちに各頂点に scaleM という座標変換が施される訳ではない。
モデルビュー変換行列というバッファが一つある。
この変換行列を使うように設定した後 glLoadIdentity 関数を呼ぶと、
この変換行列が単位行列に「設定」される。
一方、scaleM や rotateM、scaleM という関数が内部で
glScalef や glRotatef や glTranslatef という関数を呼ぶモノだとしたら、
これらの関数はそれぞれ先の変換行列に自身の行列を「乗算」する。
glLoadIdentity 関数は変換行列を「設定」する。
glScalef 関数などは変換行列に「乗算」する。
(乗算する方向は >>346 から類推してくれ)
どちらの類の関数も変換行列のバッファに対して何かをする関数であって、
頂点座標ベクトルに対して何かをする関数ではない。
draw 系の関数が呼ばれて初めて変換行列と頂点座標ベクトルが乗算される。
0349デフォルトの名無しさん
2012/07/24(火) 01:21:31.550350デフォルトの名無しさん
2012/07/24(火) 20:22:31.11内部も見られて速攻で理解できる。
0351デフォルトの名無しさん
2012/07/24(火) 21:00:53.23オブジェクト指向ならなおさら
0352デフォルトの名無しさん
2012/07/24(火) 21:10:58.59自分で行列クラスを作って、
*とか/を一通りオーバーロードして、
行列やベクトルを直感的に演算できるようにするよ。
ついでに組み込みでSSEやNEON対応のコードを入れておく。
そのあたりが作り終わってからがようやくスタートラインだろう。
0353デフォルトの名無しさん
2012/07/24(火) 21:18:59.510354デフォルトの名無しさん
2012/07/24(火) 21:25:06.25ただのテスト用であって、実用するようなものじゃない。
0355デフォルトの名無しさん
2012/07/24(火) 21:41:25.500356デフォルトの名無しさん
2012/07/24(火) 22:08:06.99オーバーロードと通常の関数に相違点なんて無い。
きちんと作れば、小規模ならインライン展開されて関数の呼び出しすら省略されたコードになるのに、
どこに重くなる要因があるのか、馬鹿の考えはさっぱり分からない。
組み込みと__m128を組み合わせると戻り値の128bitのデータをXMMレジスタから直接引き渡すようになったりするんだぞ。
不勉強で知ったかするのはやめておけ。
0357デフォルトの名無しさん
2012/07/24(火) 22:10:23.29速度が必要ってどんな時だ?
0358デフォルトの名無しさん
2012/07/24(火) 22:18:32.220359デフォルトの名無しさん
2012/07/24(火) 22:31:19.710360デフォルトの名無しさん
2012/07/24(火) 22:31:25.47ttp://glm.g-truc.net/
そもそもCore Profileなら行列計算は自前でやるしかないんじゃないのか?
0361デフォルトの名無しさん
2012/07/24(火) 23:00:18.57ゲームとかって普通に必要じゃね
0362デフォルトの名無しさん
2012/07/24(火) 23:08:36.00うちのようにアセンブラを読めない連中ばかりだと、SIMDが一切使えない。
0363デフォルトの名無しさん
2012/07/24(火) 23:19:36.010364デフォルトの名無しさん
2012/07/24(火) 23:22:36.6110年以上前の知識にしがみついて、いったいどれだけ怠け者なんだよ。
0365デフォルトの名無しさん
2012/07/24(火) 23:29:17.75口も悪くなるさ。
0366デフォルトの名無しさん
2012/07/25(水) 00:48:40.81勉強になるな。
0367デフォルトの名無しさん
2012/07/25(水) 01:18:17.950368デフォルトの名無しさん
2012/07/25(水) 01:23:34.380369デフォルトの名無しさん
2012/07/25(水) 01:31:08.43http://toro.2ch.net/test/read.cgi/tech/1130349336/
0370デフォルトの名無しさん
2012/07/25(水) 07:18:10.23過去の遺物のような演算補助関数や固定機能しか使えない人間は、
少しは不勉強を恥じるべきだろうね。
使わないという選択はあっても、不勉強で使えないから選択すら出来ないというのはみっともない。
0371デフォルトの名無しさん
2012/07/25(水) 07:44:16.120372デフォルトの名無しさん
2012/07/25(水) 07:45:58.06いまどき遅くは感じないけど無駄って発生しないのかね?
0373デフォルトの名無しさん
2012/07/25(水) 07:57:59.65無駄らしいね
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?%B9%E2%C2%AE%B2%BD#content_1_2
0374デフォルトの名無しさん
2012/07/25(水) 08:22:59.860375デフォルトの名無しさん
2012/07/25(水) 08:32:38.580376デフォルトの名無しさん
2012/07/25(水) 08:36:08.04コンパイラの最適化をなめすぎ。
0377デフォルトの名無しさん
2012/07/25(水) 08:44:22.200378デフォルトの名無しさん
2012/07/25(水) 08:51:09.420379デフォルトの名無しさん
2012/07/25(水) 08:55:14.870380デフォルトの名無しさん
2012/07/25(水) 10:00:43.88vector v1(1.0f,2.0f,3.0f,4.0f);
vector v2(10.0f,20.0f,30.0f,40.0f);
v1 = v1*v2;
printf("%f,%f,%f,%f",v1.x,v1.y,v1.z,v1.w);
SSEの組み込み乗算が計算済みにされて、printfの呼び出ししか残ってない。
movaps xmm0, XMMWORD PTR __xmm@2
movaps XMMWORD PTR _v1$[esp+16], xmm0
; Line 44
fld DWORD PTR _v1$[esp+28]
sub esp, 32 ; 00000020H
fstp QWORD PTR [esp+24]
fld DWORD PTR _v1$[esp+56]
fstp QWORD PTR [esp+16]
fld DWORD PTR _v1$[esp+52]
fstp QWORD PTR [esp+8]
fld DWORD PTR _v1$[esp+48]
fstp QWORD PTR [esp]
push OFFSET ??_C@_0M@JJJBFJKB@?$CFf?0?$CFf?0?$CFf?0?$CFf?$AA@
call DWORD PTR __imp__printf
0381デフォルトの名無しさん
2012/07/25(水) 12:35:42.310382デフォルトの名無しさん
2012/07/25(水) 12:47:30.790383デフォルトの名無しさん
2012/07/25(水) 16:36:32.68だから新しいオブジェクトを作って破棄なんて無駄なコードは生成されない。
staticを付けて、最初から計算済みにならないようにしても、
_wmain PROC ; COMDAT
; Line 39
push ebp
mov ebp, esp
and esp, -8 ; fffffff8H
; Line 40
mov eax, DWORD PTR ?$S1@?1??wmain@@9@4IA
test al, 1
jne SHORT $LN17@wmain
movaps xmm1, XMMWORD PTR __xmm@0
or eax, 1
mov DWORD PTR ?$S1@?1??wmain@@9@4IA, eax
jmp SHORT $LN5@wmain
$LN17@wmain:
0384デフォルトの名無しさん
2012/07/25(水) 16:38:09.41$LN5@wmain:
; Line 41
test al, 2
jne SHORT $LN18@wmain
movaps xmm0, XMMWORD PTR __xmm@1
or eax, 2
mov DWORD PTR ?$S1@?1??wmain@@9@4IA, eax
movaps XMMWORD PTR ?v2@?1??wmain@@9@4Uvector@@A, xmm0
jmp SHORT $LN7@wmain
$LN18@wmain:
movaps xmm0, XMMWORD PTR ?v2@?1??wmain@@9@4Uvector@@A
$LN7@wmain:
; Line 44
sub esp, 32 ; 00000020H
mulps xmm0, xmm1
以下printfの呼び出し部分
これを見れば分かるが、ベクトルの乗算まで余計なcallも作られなければ、必要のないリソースも作られない。
これが最適化。
0385デフォルトの名無しさん
2012/07/25(水) 17:40:08.540386デフォルトの名無しさん
2012/07/25(水) 19:14:10.95basic_stringが、何故、char*に対するoperatorを使わずに、c_strなどという関数を定義しているか考えてみよう。
0387デフォルトの名無しさん
2012/07/25(水) 19:14:56.54??
0388デフォルトの名無しさん
2012/07/25(水) 19:20:42.550389デフォルトの名無しさん
2012/07/25(水) 19:20:51.010390デフォルトの名無しさん
2012/07/25(水) 19:22:18.19今は知らん
0391デフォルトの名無しさん
2012/07/25(水) 19:27:09.010392デフォルトの名無しさん
2012/07/25(水) 21:52:58.63ねえわ
0393デフォルトの名無しさん
2012/07/25(水) 22:41:49.81演算系で必要なオペレーターは*とか=だけで、
単体のoperatorに設定するようなものは無い。
必要なのは演算対象を明確にした物だけ。
まともにプログラムを組んで検証をせずに、
聞きかじった知識だけで語るからそうやってボロボロに間違うんだよ。
オーバーロードの最適化だって、自分でほんの少しキーをたたけば検証できる話だっただろう。
そんな簡単なことすらしないからいつまでたっても、間違った知識を抱えたままなんだよ。
0394デフォルトの名無しさん
2012/07/25(水) 22:59:00.120395デフォルトの名無しさん
2012/07/26(木) 00:00:37.86ぼくのパソコンではこうなったってのは検証とは言わない。
最適化のされ方なんて環境ひとつでいくらでも変わる。
0396デフォルトの名無しさん
2012/07/26(木) 00:06:45.490397デフォルトの名無しさん
2012/07/26(木) 00:09:25.87もちろんコンパイラ次第だ。
反論があるのなら、違う検証結果を出せばいいだけの話。
化石みたいなコンパイラでも探してこない限り結果は見えてるけどやってみれば?
0398デフォルトの名無しさん
2012/07/26(木) 00:23:35.42大規模開発で爆弾になるから
0399デフォルトの名無しさん
2012/07/26(木) 00:24:02.730400デフォルトの名無しさん
2012/07/26(木) 00:26:14.050401デフォルトの名無しさん
2012/07/26(木) 04:31:02.930402デフォルトの名無しさん
2012/07/26(木) 04:42:49.400403デフォルトの名無しさん
2012/07/26(木) 05:26:02.570404デフォルトの名無しさん
2012/07/26(木) 05:48:15.33どこぞで規格化でもされているのかと思いきや
馬鹿がニッチな俺様コードを普遍的であるかのように語ってたってだけの話か
0405デフォルトの名無しさん
2012/07/26(木) 07:09:26.86まあ検証するような誠実さなんて持ち合わせていない無い怠け者だろうから、探してもいないんだろうけど。
これに懲りたら、聞きかじった知識じゃなく、自分で検証する癖を身につけろ。
0406デフォルトの名無しさん
2012/07/26(木) 07:12:38.25そう言い続けなくなっただけでも、少しはマシになったと言うことか。
0407デフォルトの名無しさん
2012/07/26(木) 08:22:13.330408デフォルトの名無しさん
2012/07/26(木) 08:24:02.380409デフォルトの名無しさん
2012/07/26(木) 12:18:23.20腐るほど出てくるけど
http://www.google.co.jp/search?q=%E6%BC%94%E7%AE%97%E5%AD%90%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%89+%E9%81%85%E3%81%8F%E3%81%AA%E3%82%8B
0410デフォルトの名無しさん
2012/07/26(木) 12:26:08.56演算子オーバーロードで遅くなるとしている記事だけが見つかっているわけじゃないね。
つーか、私にはRubyが遅いだとか、後置インクリメント演算子が遅いとか、
そう言った的外れな記事しか見つからないんだけど。
0411デフォルトの名無しさん
2012/07/26(木) 12:28:10.970412デフォルトの名無しさん
2012/07/26(木) 12:31:47.24実際に見つかった記事を提示すればいいじゃん。
それをしないから突っ込まれるって事も判らないの?
0413デフォルトの名無しさん
2012/07/26(木) 12:37:07.81きっと>409は「演算子」「オーバーロード」「遅くなる」って検索して引っ掛かったものは
全て該当記事だと思いたかったんだろうよ。
0414デフォルトの名無しさん
2012/07/26(木) 12:38:13.62http://blog.livedoor.jp/dormolin/archives/51780515.html
0415デフォルトの名無しさん
2012/07/26(木) 12:44:15.92やがてこういう馬鹿な質問をするハメになる。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1139144521
0416デフォルトの名無しさん
2012/07/26(木) 13:04:55.36えーと、その二例のどこが「演算子オーバーロードは遅くなる」例?
つーか、いいからエアコンを28℃に設定して昼寝しろ。
0417デフォルトの名無しさん
2012/07/26(木) 13:10:27.36それとも無かったことにしたいだけか
お前は今、分かってないことを自白したんだよ
0418デフォルトの名無しさん
2012/07/26(木) 13:35:08.08どちらにせよ、結局は不必要な処理はコンパイラが撤去しちゃんだけどね。
インラインで展開されるものは、戻り値が必要なければ生成されないんだよ。
無駄な処理を生成するコンパイラがどこにあるのか、
未だに答えていないんだけど、そうやって逃げ回るんだよね。
知ったかをした人間の末路は毎度同じなので、珍しくもないけど。
0419デフォルトの名無しさん
2012/07/26(木) 13:39:23.830420デフォルトの名無しさん
2012/07/26(木) 13:54:58.200421デフォルトの名無しさん
2012/07/26(木) 13:56:57.710422デフォルトの名無しさん
2012/07/26(木) 14:00:23.400423デフォルトの名無しさん
2012/07/26(木) 14:22:33.010424デフォルトの名無しさん
2012/07/26(木) 14:25:17.640425デフォルトの名無しさん
2012/07/26(木) 15:20:19.690426デフォルトの名無しさん
2012/07/26(木) 17:49:11.780427デフォルトの名無しさん
2012/07/26(木) 18:24:36.89printfを呼ぶまでに、オーバーロード部分の演算が全て展開されるのは変わらず。
main:
.LFB537:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
cmpb $0, _ZGVZ4mainE2v1(%rip)
je .L5
.L2:
cmpb $0, _ZGVZ4mainE2v2(%rip)
je .L6
.L3:
movaps _ZZ4mainE2v1(%rip), %xmm0
movl $.LC2, %edi
movl $4, %eax
mulps _ZZ4mainE2v2(%rip), %xmm0
movaps %xmm0, _ZZ4mainE2v1(%rip)
movss _ZZ4mainE2v1(%rip), %xmm0
movss _ZZ4mainE2v1+12(%rip), %xmm3
movss _ZZ4mainE2v1+8(%rip), %xmm2
movss _ZZ4mainE2v1+4(%rip), %xmm1
cvtps2pd %xmm0, %xmm0
cvtps2pd %xmm3, %xmm3
cvtps2pd %xmm2, %xmm2
cvtps2pd %xmm1, %xmm1
call printf
0428デフォルトの名無しさん
2012/07/26(木) 18:30:49.24コンパイラ屋ってほんと性格悪いよな
0429デフォルトの名無しさん
2012/07/26(木) 18:33:45.940430デフォルトの名無しさん
2012/07/26(木) 18:39:48.64やめろって何度言われてるかわかってんの?
脳がイカれてんのか?
0431デフォルトの名無しさん
2012/07/26(木) 18:40:25.160432デフォルトの名無しさん
2012/07/26(木) 20:00:14.210433デフォルトの名無しさん
2012/07/26(木) 20:03:45.200434デフォルトの名無しさん
2012/07/26(木) 20:20:14.87オーバーヘッドがあるかどうか生成されたコードを見て検証する
遅くなるかどうかベンチマークをとって検証する。
そんな当たり前のことすらやろうとせずに、
聞きかじっただけの可能性云々で思考停止している時点で、それはただの怠け者。
0435デフォルトの名無しさん
2012/07/26(木) 20:21:58.930436デフォルトの名無しさん
2012/07/26(木) 20:25:38.46可能性を無視するんですか?
どうして検証しようとしないのですか?
あなたには期待していたのに失望しました
0437デフォルトの名無しさん
2012/07/26(木) 20:32:13.86古いのを探せば「可能性」はあるかもしれないんだから、もう少し必死になれ。
0438デフォルトの名無しさん
2012/07/26(木) 20:35:53.630439デフォルトの名無しさん
2012/07/26(木) 20:41:14.990440デフォルトの名無しさん
2012/07/26(木) 21:00:37.74スレ違いだっていってんだろ
スレ違いだっていってんだろ
スレ違いだっていってんだろ
スレ違いだっていってんだろ
スレ違いだっていってんだろ
スレ違いだっていってんだろ
スレ違いだっていってんだろ
いつまで話続けんだよ他所でやれ
0441デフォルトの名無しさん
2012/07/26(木) 21:04:24.28ぼくのパソコンでこうなった論は分かったから、質問に答えなよ
0442デフォルトの名無しさん
2012/07/26(木) 21:04:45.43キチガイ沸いた時困る。
0443デフォルトの名無しさん
2012/07/26(木) 21:08:18.21オーバーロードでパフォーマンスが落ちるコンパイラを出して解決したら、検証結果を張るよ。
まあ、次もCPUによって違うとか言い出すんだろうけど。
0444デフォルトの名無しさん
2012/07/26(木) 21:11:37.56これは素直じゃ無いだけで、
あなた様の言っていることが正しいのは分かりました。
最適化が出来ないコンパイラは見つかりません。
愚かな私めにキャッシュミスについてお教えいただけないでしょうか?
と言っているんだから、教えてやれよ。
0445デフォルトの名無しさん
2012/07/26(木) 21:21:58.150446デフォルトの名無しさん
2012/07/26(木) 21:27:23.23struct vector{
union{__m128 vect;struct{float x,y,z,w;};};
vector(){}
vector(float x,float y,float z,float w)
{vect = _mm_set_ps(w,z,y,x);}
inline vector& operator=(const vector& v)
{vect = v.vect;return *this;}
inline vector operator*(const vector& v) const
{vector result;result.vect = _mm_mul_ps(vect,v.vect); return result;}};
0447デフォルトの名無しさん
2012/07/26(木) 21:27:28.540448デフォルトの名無しさん
2012/07/26(木) 21:33:44.12検証自体がいい加減なことが分かった
ループで百万回ほど回してみ
実測で倍くらいになるから
0449デフォルトの名無しさん
2012/07/26(木) 21:35:34.80そういう抽象的な答えが返ってくると思ってたよ。
何と比較してとか絶対に答えないんだろうなあ。
0450デフォルトの名無しさん
2012/07/26(木) 21:36:21.840451デフォルトの名無しさん
2012/07/26(木) 21:37:34.19>>446じゃなくて>>448
0452デフォルトの名無しさん
2012/07/26(木) 21:42:45.66実測で倍速いコードを張ってみてといっても、
絶対に話をそらして逃げ回るんだろうし。
どうすればいいのさ。
0453デフォルトの名無しさん
2012/07/26(木) 21:43:27.58ありゃ、関数の書き方が解らないのか
参照渡しだよ
for文の使い方は分かるよな?
0454デフォルトの名無しさん
2012/07/26(木) 21:47:23.490455デフォルトの名無しさん
2012/07/26(木) 21:54:34.564x4行列の掛け算とか逆行列の計算とか4x4行列によるベクトルの変換とかの速度のほうが重要ですよね
0456デフォルトの名無しさん
2012/07/26(木) 21:58:27.14事前に予測したとおり、絶対にコードを出さないよね。
そのままごまかして逃げ回るお決まりの行動パターンだろう。
0457デフォルトの名無しさん
2012/07/26(木) 22:01:00.75もちろん行列の乗算が一番重要だよ。
ベクトル乗算の他にスカラが入るから、ベクトルの乗算のみのようにシンプルには書けないけど。
0458デフォルトの名無しさん
2012/07/26(木) 22:06:54.22同じ構造体を参照渡しで計算して値を返す関数を書くだけのことが、そんなに難しいのかね?
君が丸写ししている本のタイトルを挙げてもらった方が早そうだな
0459デフォルトの名無しさん
2012/07/26(木) 22:09:50.680460デフォルトの名無しさん
2012/07/26(木) 22:12:24.36これ以上、どうしろというんだろう?
mov eax, 1000000 ; 000f4240H
npad 1
$LL3@wmain:
dec eax
; Line 35
movaps xmm2, xmm1
mulps xmm0, xmm2
jne SHORT $LL3@wmain
0461デフォルトの名無しさん
2012/07/26(木) 22:20:05.06関数を書くのはいいけど>>460のコード以上の結果を残すのが不可能なんだよ。
直接アセンブラを書いても、あれ以上どうにもならない。
0462デフォルトの名無しさん
2012/07/26(木) 22:21:41.640463デフォルトの名無しさん
2012/07/26(木) 22:26:13.47それとも頭悪いやつは日本語も理解できないの?
0464デフォルトの名無しさん
2012/07/26(木) 22:36:43.49演算結果ならxmm0に入ってるけど、いったい何を言っているんだ?
0465デフォルトの名無しさん
2012/07/26(木) 22:40:47.67アセンブラの出力しか見ていないようだが、ちゃんと計測したか?
/arch:SSE2で1000msecほど差が出るぞ
0466デフォルトの名無しさん
2012/07/26(木) 22:41:52.770467デフォルトの名無しさん
2012/07/26(木) 22:48:52.15実行に1秒かからないプログラムにどうやって1秒差を付けるんだよ?
嘘をつくにしても、もう少しわかりにくい値にすればいいのに。
0468デフォルトの名無しさん
2012/07/26(木) 22:51:18.81書いたら書いたで嘘扱いw
やっぱり適当なこと書いて自己顕示したいだけのカスでした
0469デフォルトの名無しさん
2012/07/26(木) 22:54:05.33もう止めろスレ違いだ
0470デフォルトの名無しさん
2012/07/26(木) 22:55:33.84信じてあげるから実験したCPUを書いてみて。
ちなみに100MHzのCPUでも1秒かからないので、
SSEに対応していて遙かにロークロックな製品を探してくるといいよ。
あったら素直に驚くから。
0471デフォルトの名無しさん
2012/07/26(木) 23:03:08.38どっちも該当するスレがあるので、そちらでやっていただけませんかね。
畑違いのスレじゃないと、お互い誤魔化しきれない感じですか?
平日の昼間から張りついているようなので素性はお察しですけど。
0472デフォルトの名無しさん
2012/07/26(木) 23:07:18.58もしかして、プログラムの実測がCPUだけで決まると思ってる?w
0473デフォルトの名無しさん
2012/07/26(木) 23:09:02.64少年漫画的急展開だね。
ネタでやっているのは分かったから、そろそろ終わりにしよう。
0474デフォルトの名無しさん
2012/07/26(木) 23:34:36.19結局オペレータオーバーロードは遅いの?
0475デフォルトの名無しさん
2012/07/26(木) 23:40:28.69それを人に訊く前に自分で調べろと言うことでは?
0476デフォルトの名無しさん
2012/07/26(木) 23:44:55.47わかった、それが結論ならそうする
スレチではあったが興味ある話ではあったからな
もっとも、あんまりちゃんと追いかける気はなかったが
0477デフォルトの名無しさん
2012/07/26(木) 23:48:30.000478デフォルトの名無しさん
2012/07/26(木) 23:51:48.42あんまりちゃんと追いかける気がなかったのなら、
そもそも何をどう調べればいいのか自分で検討することもできない。
0479デフォルトの名無しさん
2012/07/26(木) 23:55:56.560480デフォルトの名無しさん
2012/07/27(金) 00:07:31.120481デフォルトの名無しさん
2012/07/27(金) 02:55:35.370482デフォルトの名無しさん
2012/07/27(金) 04:54:26.770483デフォルトの名無しさん
2012/07/27(金) 06:10:30.99http://toro.2ch.net/test/read.cgi/tech/1215242849/
0484デフォルトの名無しさん
2012/07/27(金) 20:55:01.930485デフォルトの名無しさん
2012/07/28(土) 13:45:01.470486デフォルトの名無しさん
2012/07/28(土) 18:21:51.100487デフォルトの名無しさん
2012/07/29(日) 13:34:03.900488デフォルトの名無しさん
2012/07/30(月) 18:42:06.730489デフォルトの名無しさん
2012/07/31(火) 09:26:34.08キャラクターの操作中にBGMをかけたいのですが
画像を描画する前にBGMがなり、BGMが終わった後に画像が描画されてしまいます。
PlaySound関数はどこに書き込めばいいですか?
ちなみにGLUTを扱うに当たって以下のサイトを参考にしています。
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
宜しくお願いします。
0490デフォルトの名無しさん
2012/07/31(火) 11:30:21.78SND_ASYNC
0491デフォルトの名無しさん
2012/07/31(火) 11:49:33.23あぁorz
解決しました。ありがとうございました。
0492デフォルトの名無しさん
2012/08/01(水) 22:24:09.42細かいマルチメディア制御のできない体験用のおもちゃだろアレ。
0493デフォルトの名無しさん
2012/08/01(水) 22:25:27.150494デフォルトの名無しさん
2012/08/01(水) 22:25:44.340495デフォルトの名無しさん
2012/08/01(水) 22:27:14.990496デフォルトの名無しさん
2012/08/01(水) 22:43:52.920497デフォルトの名無しさん
2012/08/01(水) 22:52:30.70wglとか使えば、WinAPIのウィンドウにOpenGLの描画領域埋め込んでるだけなんで
全てのイベントが拾えるし、HWNDやHDC、イベント連携を必要とするマルチメディア系APIが全て使える。
0498デフォルトの名無しさん
2012/08/01(水) 22:57:40.79ゲームでも無けりゃ自分でコントロールなんてわざわざ作ってられんからな。
0499デフォルトの名無しさん
2012/08/01(水) 23:04:20.080500デフォルトの名無しさん
2012/08/01(水) 23:13:34.32そういう方法しか無いだろ。ハンドル手に入った所でウィンドウのコントロールとして
OpenGLの領域を組み込めるわけでもない。
0501デフォルトの名無しさん
2012/08/01(水) 23:27:48.72OpenGLならまずQt、みたいな流れを流行らせることが出来ればいいかもしれない
0502デフォルトの名無しさん
2012/08/01(水) 23:41:43.80OPENGLプログラミングは簡単で楽しく出来るって事をGLUTで体験しなければならない
それ以上の事がしたくなったら初めてwglとかに手を出せばいい
0503デフォルトの名無しさん
2012/08/01(水) 23:49:01.23それだと座標とか更新できなくね?
0504デフォルトの名無しさん
2012/08/01(水) 23:59:00.460505デフォルトの名無しさん
2012/08/02(木) 00:01:17.94本格的にやるならglut卒業しろって話だろ
入門時の話はしてない
0506デフォルトの名無しさん
2012/08/02(木) 00:08:18.96glutと同じものを作る意味もないし
0507デフォルトの名無しさん
2012/08/02(木) 00:14:18.38卒業しろっていわれるんだろ
0508デフォルトの名無しさん
2012/08/02(木) 00:24:24.470509デフォルトの名無しさん
2012/08/02(木) 01:05:42.830510デフォルトの名無しさん
2012/08/02(木) 03:09:45.00windowsでだけど描画を別スレッドにしてる。glutじゃできないかも
0511デフォルトの名無しさん
2012/08/02(木) 04:03:02.790512デフォルトの名無しさん
2012/08/02(木) 10:05:35.740513デフォルトの名無しさん
2012/08/02(木) 10:22:58.270514デフォルトの名無しさん
2012/08/02(木) 17:32:15.270515デフォルトの名無しさん
2012/08/02(木) 18:29:32.280516デフォルトの名無しさん
2012/08/02(木) 21:09:20.440517デフォルトの名無しさん
2012/08/02(木) 22:48:22.31Macだと元々CocoaアプリにはNSOpenGLViewがあるし。
0518デフォルトの名無しさん
2012/08/02(木) 23:14:49.710519デフォルトの名無しさん
2012/08/03(金) 01:57:19.56ttp://doc.qt.nokia.com/qq/qq06-glimpsing.html#writingmultithreadedglapplications
Qtにはglutみたいな文字列描画機能があるけど
描画専用スレッドからは使えないのが残念だな
0520デフォルトの名無しさん
2012/08/03(金) 04:16:48.97Qtに合ってる内容だとかチーム全体がQt好きとかなら選択すればいいけど、なんでもかんでも気軽に導入ってわけにもいかんでしょ
0521デフォルトの名無しさん
2012/08/04(土) 02:17:25.45ASDのメガデモはほとんどGLUTで作られている。
0522デフォルトの名無しさん
2012/08/04(土) 02:50:13.520523デフォルトの名無しさん
2012/08/04(土) 19:53:10.75ポトペタしたら描画コード書くだけだぞ
0524デフォルトの名無しさん
2012/08/04(土) 20:01:18.010525デフォルトの名無しさん
2012/08/04(土) 20:50:34.66MSの奴隷専用だろ
0526デフォルトの名無しさん
2012/08/04(土) 20:52:02.910527デフォルトの名無しさん
2012/08/04(土) 21:07:36.280528デフォルトの名無しさん
2012/08/04(土) 21:17:23.42MS以外の環境で開発されてないだろ
Linuxでもmonoで動くけどWindowsの輸入品ばかりで
Linux上で新規開発されたソースなんて配布されてない
0529デフォルトの名無しさん
2012/08/04(土) 21:19:47.500530デフォルトの名無しさん
2012/08/04(土) 21:23:45.930531デフォルトの名無しさん
2012/08/04(土) 21:26:48.570532デフォルトの名無しさん
2012/08/04(土) 21:29:39.07System.WIndowsなしで
0533デフォルトの名無しさん
2012/08/04(土) 21:32:34.010534デフォルトの名無しさん
2012/08/04(土) 21:33:30.18>>533
0535デフォルトの名無しさん
2012/08/04(土) 21:35:36.840536デフォルトの名無しさん
2012/08/04(土) 21:35:41.100537デフォルトの名無しさん
2012/08/04(土) 21:37:20.44Visual Studioありきだからな
他のOSでC#をうまく使える環境がない
0538デフォルトの名無しさん
2012/08/04(土) 21:42:58.050539デフォルトの名無しさん
2012/08/04(土) 21:44:13.460540デフォルトの名無しさん
2012/08/04(土) 21:45:21.960541デフォルトの名無しさん
2012/08/04(土) 21:49:09.940542デフォルトの名無しさん
2012/08/04(土) 22:10:31.09ただそれだけだ。
0543デフォルトの名無しさん
2012/08/04(土) 22:11:45.700544デフォルトの名無しさん
2012/08/04(土) 22:16:13.790545デフォルトの名無しさん
2012/08/04(土) 22:28:32.59windowsならGetOpenFileNameで
0546デフォルトの名無しさん
2012/08/04(土) 22:46:42.570547デフォルトの名無しさん
2012/08/05(日) 05:20:23.65当たり前だが、ちゃんと動くのは素晴らしい。
0548デフォルトの名無しさん
2012/08/05(日) 06:06:11.240549デフォルトの名無しさん
2012/08/05(日) 10:55:50.130550デフォルトの名無しさん
2012/08/05(日) 11:45:39.300551デフォルトの名無しさん
2012/08/05(日) 11:53:07.780552デフォルトの名無しさん
2012/08/05(日) 12:11:11.8564bit環境用にビルドしたDLLを使ったらglutTimerFuncが動作しなかった。
0553デフォルトの名無しさん
2012/08/05(日) 14:01:00.270554デフォルトの名無しさん
2012/08/05(日) 14:31:26.00やってみたけど64bit 32bit関係なしにsrcからビルドすると正しく動かないみたい
binの配布の方は動くんだけど、ソースが違うのかな(コンパイラのせいかも)
win32_util.cのgettimeofdayあたりが原因っぽい
これ使ってるプログラムも保守してるので将来64bit化で嵌らずすんで助かったかも。thx info
0555デフォルトの名無しさん
2012/08/05(日) 15:40:14.21流石に配布されている32bitのほうはビルドせずに使ってたから、それもsrcからビルドすると動かないの気付かんかった。
OpenGL勉強中の素人が嵌った点でもお役に立てたようでなにより。
0556デフォルトの名無しさん
2012/08/06(月) 08:39:45.060557デフォルトの名無しさん
2012/08/06(月) 13:46:49.630558デフォルトの名無しさん
2012/08/06(月) 19:29:39.020559デフォルトの名無しさん
2012/08/06(月) 19:59:16.46一旦CLI使って関数をエクスポートしてC#から利用?
0560デフォルトの名無しさん
2012/08/06(月) 20:08:22.820561デフォルトの名無しさん
2012/08/06(月) 20:14:40.820562デフォルトの名無しさん
2012/08/06(月) 20:30:49.40BitBlt転送で表示とか出来んのかのぅ
0563デフォルトの名無しさん
2012/08/06(月) 21:34:58.32OpenGL用スレッドを作って
フレームバッファオブジェクトにレンダリングして、その内容をGPUのメモリからメインメモリへ転送する事はできる。
後はそのメモリの内容を表示するとかすればいいんだけど何故そんな事したいの?
0564デフォルトの名無しさん
2012/08/06(月) 21:43:48.04ありがと
0565デフォルトの名無しさん
2012/08/06(月) 22:45:32.040566デフォルトの名無しさん
2012/08/06(月) 23:19:27.100567デフォルトの名無しさん
2012/08/07(火) 00:28:37.150569デフォルトの名無しさん
2012/08/07(火) 02:30:47.68ES 3.0はやっとかって感じ。
詳細は読んでいないけど、しかしcompute shaderとはな。同じKhronosなのにOpenCLとかぶるんじゃないか。
0570デフォルトの名無しさん
2012/08/07(火) 07:12:35.56たまにはOpenGLの方から新技術を出して、DirectXに真似させればいいのに。
0571デフォルトの名無しさん
2012/08/07(火) 08:19:28.87確かに使いやすそうだと思う
4.3はもはやそれほど機能追加無いかと思ってたけど意外に新機能多いね
0572デフォルトの名無しさん
2012/08/07(火) 14:12:25.42ttp://blogs.valvesoftware.com/linux/faster-zombies/
Windows7 Direct3D - 270.6 FPS
Windows7 OpenGL - 303.4 FPS
Linux(Ubuntu) OpenGL - 315 FPS
0573デフォルトの名無しさん
2012/08/07(火) 17:00:24.38GLUTの作者がNvidiaにいるらしいぞ
0574デフォルトの名無しさん
2012/08/07(火) 20:42:21.66OpenGLスレにわざわざ出張してステマする奴らに言われたくないだろうな。
0575デフォルトの名無しさん
2012/08/07(火) 21:37:28.690576デフォルトの名無しさん
2012/08/07(火) 22:25:29.31アドバイスいただけないでしょうか.
現在,光源が30程度の環境のレンダリングと
その高速化を行いたいと考えており,これにOpenGLを用いようと考えています.
多くの資料が光源数は最大8個と記述されていますが,一部のサイトで
環境によっては,8個以上の光源も利用できると記述されています.
http://kur.dyndns.org/java/chapter3.html
下記のサイトを見ると,GPUによっては16個可能なようですが,どのような原因で
これが可能なのか,現在の新しいGPUについては記載されていません.
http://delphigl.de/glcapsviewer/statistics_openglcap.php?listreportsbycap=GL_MAX_LIGHTS
どのような環境でそのような設定が可能か,ご存知の方はおられないでしょうか.
研究目的なので,高性能なハードウェアは用意できる環境です.
よろしくお願い致します.
0577デフォルトの名無しさん
2012/08/07(火) 22:43:00.710578デフォルトの名無しさん
2012/08/07(火) 22:44:20.38大抵8なんじゃないかな
それに16じゃ30以下だから足りないんじゃね?
4回合成が2回になって高速化みたいな話かななら
素直にFragmentShader使うばいいかと
0579デフォルトの名無しさん
2012/08/07(火) 22:44:35.400580デフォルトの名無しさん
2012/08/07(火) 22:57:13.340581デフォルトの名無しさん
2012/08/08(水) 00:01:58.47理解が及ばない点があり,申し訳ないのですがいくつか質問させて下さい.
>>577,578
シェーダーというのはGLSLや.Cgでしょうか.
これまで,OpenGLのみしか扱っていなかったので,シェーダー言語についての知識がないのですが,
これらの,拡張言語と組み合わせることで,複数光源が可能になるという理解でよいでしょうか.
また,この場合は,複数回のレンダリングではなく,一度に30個の光源を定義可能ということでしょうか.
>>579
現在のバージョンでは,光源数に制約はないのでしょうか.
バージョンごとの差異がよくわからず,以前利用したことのあった2.x系を利用しています.
>>580
申し訳ないです.ライトマップについての理解が乏しいのですが
テクスチャマッピングのお話でよいでしょうか.
今回想定しているモデルでは,30個の光源に設定した個別の明るさや色を
ある程度忠実に再現したいと考えておりまして
この点につきまして,テクスチャマッピングでは困難であると考えていますが
理解が誤っているでしょうか.
0582デフォルトの名無しさん
2012/08/08(水) 02:51:23.940583デフォルトの名無しさん
2012/08/08(水) 04:09:32.77あーだこーだ言うよりも
ttp://www.opengl.org/registry/doc/glspec43.core.20120806.pdf
ttp://www.opengl.org/registry/doc/GLSLangSpec.4.30.6.pdf
この二つのpdfファイルを読みさえすれば何でもできるようになるぜ。
0584デフォルトの名無しさん
2012/08/08(水) 04:31:17.250585デフォルトの名無しさん
2012/08/08(水) 06:04:08.8830個のライトを同時にレンダリングできる。いまやOpenGLを扱うならシェーダーは必須
研究職でプログラミングは素人でお金が沢山あるなら、ぜひ高性能なプログラマの雇用を
0586デフォルトの名無しさん
2012/08/08(水) 09:31:45.64点を打つ前の色を取得することは可能ですか?
0587デフォルトの名無しさん
2012/08/08(水) 09:46:32.61フラグメントシェーダ
0588デフォルトの名無しさん
2012/08/08(水) 10:38:17.35フレームバッファを直接参照することはできないので
ブレンド前画像をテクスチャにしとく
0589デフォルトの名無しさん
2012/08/08(水) 12:51:22.970590デフォルトの名無しさん
2012/08/08(水) 16:26:28.210591デフォルトの名無しさん
2012/08/08(水) 19:20:10.25ブレンドしたい画像を独立にテクスチャにレンダリングして最後に合成描画が簡単なような
0592デフォルトの名無しさん
2012/08/08(水) 23:11:08.36アルファブレンディングがプログラマブルになったらしい。
詳しくは
>>583
を読んでくれ
0593デフォルトの名無しさん
2012/08/09(木) 23:11:51.590594デフォルトの名無しさん
2012/08/10(金) 00:04:37.850595デフォルトの名無しさん
2012/08/10(金) 00:28:24.470596デフォルトの名無しさん
2012/08/10(金) 08:57:21.40コンピュートシェーダはフラグメントシェーダの後じゃなくて、レンダリングパイプラインに組み込まれずに単体で動くもの
通常の描画をせずにシェーダだけ動かしたいという時に使うものなので、ブレンディングがプログラマブルになったりはしてないよ
コンピュートシェーダでブレンドするにしても結局2枚以上のテクスチャに一旦描画してそれらをシェーダでブレンドするという形になるので、
フラグメントシェーダでやるのとかわらない。というかフラグメントシェーダでやった方が楽だろうな
0597デフォルトの名無しさん
2012/08/10(金) 10:00:36.710598デフォルトの名無しさん
2012/08/11(土) 16:21:49.67レイトレじゃリアルにならんだろ。
パストレとかその系統じゃないと。で、それらだとまだまだ計算速度足りない。
0599デフォルトの名無しさん
2012/08/11(土) 16:37:39.66>>595 の言うレイトレースって、たぶん
パストレとかその系統も含めた大義的な意味だと思うぞ。
要するに、ピクセル毎に何らかの光線を追跡して絵を作る工程全般のことかと。
0600デフォルトの名無しさん
2012/08/11(土) 17:21:18.89って言ってるとしたら相当おかしいだろ
0601デフォルトの名無しさん
2012/08/11(土) 17:32:53.94求める画素数と FPS による。
さすがにフルHDで60FPSを求めると、リアルタイムレンダリングが余裕とは思えんが。
0602デフォルトの名無しさん
2012/08/11(土) 17:34:21.260603デフォルトの名無しさん
2012/08/11(土) 17:36:57.170604デフォルトの名無しさん
2012/08/11(土) 17:42:33.16水面とかもリアルタイムレイトレースでできるのか
おそれいった
0605デフォルトの名無しさん
2012/08/11(土) 17:42:50.92repa という Haskell のライブラリが C で書かれた外部ライブラリの単なるラッパーではなく、
純粋に 100% Haskell で書かれた配列表現ライブラリであるだけに、余計に驚いた。
0606デフォルトの名無しさん
2012/08/11(土) 18:40:16.320607デフォルトの名無しさん
2012/08/11(土) 22:12:10.872008頃のレイトレ。
秒間1フレぐらいだったと思う。
0608デフォルトの名無しさん
2012/08/11(土) 22:20:03.33バカ正直なレイトレースなんて絶対流行らないだろ
物理的に間違ってても綺麗だったらおkな世界なんだし
0609デフォルトの名無しさん
2012/08/11(土) 22:29:56.81例えば水面下のコースティクスや、透明度が複雑に変化する媒体を通る光などは、
素直にレイトレーシングを試みた方が簡単に綺麗な絵ができる。
(この場合、フォトンマップの功績が大きいが)
これらをアニメーションさせるなら、なおさらレイトレーシングの方が騙しやすい。
Zバッファを用いた大量のポリゴンなどで表現しようとすると、
確かに処理速度は段違いに速いが、なかなか騙すが難しい。
0610デフォルトの名無しさん
2012/08/16(木) 11:13:23.150611デフォルトの名無しさん
2012/08/16(木) 23:02:06.36MMX/SSEメインでOpenGL関係ないけど
0612デフォルトの名無しさん
2012/08/20(月) 00:01:10.43水面だからこそリアルタイムにできる。鏡面反射・透過だからな。
拡散面だとあらゆる方向にレイを飛ばしまくらないと計算できないし。
0613デフォルトの名無しさん
2012/08/21(火) 01:34:31.75特に拡散面であれば
オフラインで十分と言えばそれまでだが
Parthenonがライブラリとして使えればいいのに
0614デフォルトの名無しさん
2012/08/22(水) 02:49:53.520615デフォルトの名無しさん
2012/08/22(水) 07:25:50.770616デフォルトの名無しさん
2012/08/22(水) 19:31:16.780617デフォルトの名無しさん
2012/08/22(水) 23:08:58.100618デフォルトの名無しさん
2012/08/22(水) 23:25:39.48例えばOpenGLなどの標準の透視投影変換では、視点に対して正面を向いている長方形のそれぞれの平行な線の組は画面内のどこまで行っても平行ですよね。
しかし現実では視界の端のほうが距離が遠くなるので平行な線の幅が狭まって見えるはずです。
ぱっと想像した方法としては、画面をいくつかのグリッドに区切って、それぞれ対応する方向を「正面」に見てレンダリングした画像をつなぎ合わせる、があります。
何かスマートな方法はありますか?
よろしくお願いします。
0619デフォルトの名無しさん
2012/08/22(水) 23:33:04.830620デフォルトの名無しさん
2012/08/23(木) 00:01:14.64別にグリッドに区切らなくても一度レンダリングしてからそれを湾曲した面にテクスチャとして張ればよさそう
頂点シェーダーだと左端から右端への直線は正面に頂点が無いとまっすぐになっちゃう
0621デフォルトの名無しさん
2012/08/23(木) 00:09:26.98湾曲面に張りつけですか。確かにそれでいけそうな気もしますね。
0622デフォルトの名無しさん
2012/08/23(木) 01:40:01.870623デフォルトの名無しさん
2012/08/23(木) 02:19:59.04普通にピクセルシェーダで座標オフセットしてたな。
曰くポスエフェ。
0624デフォルトの名無しさん
2012/08/23(木) 08:22:14.740625デフォルトの名無しさん
2012/08/23(木) 12:47:12.67> しかし現実では視界の端のほうが距離が遠くなるので平行な線の幅が狭まって見えるはずです。
それを言ったら、現実のカメラにはレンズによる歪みがある。
端の方が距離が遠くなることで起こる歪みよりも、
レンズによる歪みの方がもっと顕著だと思うが。
0626デフォルトの名無しさん
2012/08/23(木) 15:41:21.17透視変換の時に、z 値で割るのではなく頂点の距離で割る。
0627デフォルトの名無しさん
2012/08/23(木) 16:44:03.49だからそれじゃダメだからポストエフェクトでやればって話になってるのだが
0628デフォルトの名無しさん
2012/08/24(金) 12:24:23.74http://www.nikkei.com/article/DGXNASDG2303P_T20C12A8CC1000/
北海道旭川市の西川将人市長は23日の記者会見で、市が運営する旭山動物園から逃げた
ヨーロッパフラミンゴの捕獲作業で、フラミンゴをおびき寄せるために用意したおとり1羽が死に、
1羽が行方不明になったことを陳謝した。
市長は「フラミンゴは1羽25万〜30万円。市民に損害を与えて申し訳ない。
犠牲になったフラミンゴにも申し訳ないと思っている」と述べた。
2羽のフラミンゴはキタキツネに襲われたとみられ、動物園には電話で苦情が約50件寄せられた。
市長は「捕獲して戻すことが重要な役割だ」として捕獲作業を継続する方針を示した。
同時に「寒くなれば南に飛んでしまう可能性があるので、なるべく早く連れ戻したい」と述べた。
紋別市・コムケ湖で今月17〜18日に行われた動物園による捕獲作業では、逃げたフラミンゴの捕獲に失敗し、
おとりで用意した4羽のうち2羽を失った。園は既に、おとりを使った捕獲の中止を決めている。〔共同〕
0629デフォルトの名無しさん
2012/08/24(金) 16:59:02.54glewのインストールがうまくいきません。
本のサンプルのビルド自体はできるのですが
「コンピュータにglew32.dllがないためプログラムを開始できません。」
とシステムエラーをはいてしまいます。
本を参考にしながら
Program Files(x86)\Micro...10.0\VC\include にglew.h
Program Files(x86)\Micro...10.0\VC\lib にglew32.lib,glew32s.lib
windows\system32 にglew32.dll
を入れてます。
同じやり方でglutもインストールしたのですがこちらは問題ないみたいです。
「追加の依存ファイル」にglew32.lib、
環境変数のpathには %SystemRoot%\system32;
を確認しています。
他に確認する項目があれば教えてもらえると助かります。
環境は
windows7 64bit
VC++ 10.0
参考にしている本は「openGL+GLSLによる3D-CGアニメーション」です
よろしくお願いします
0630デフォルトの名無しさん
2012/08/24(金) 17:41:50.78system32じゃなくて、SystemWow6432(失念)とかそんな名前のフォルダに入れないとダメとか?
0631デフォルトの名無しさん
2012/08/24(金) 17:44:38.830632デフォルトの名無しさん
2012/08/24(金) 17:49:09.08pathに%SystemRoot%\system32があるならそこにglew32.dllを入れる
たいていはc:\Windows\System32だけど
0633629
2012/08/24(金) 17:50:20.70おー、ありがとうございます。エラーを吐かなくなりました。
windows¥SysWOW64
にglew32.dllを入れるのが正解みたいです。
助かりました。
0634629
2012/08/24(金) 17:52:12.52ありがとうございます。
system32だとなぜか認識してくれないみたいでした。glutは認識してるんですが。
0635デフォルトの名無しさん
2012/08/24(金) 17:58:47.69理由は64bitWindowsでは32bitアプリが参照するディレクトリはSysWow64で、
64bitアプリはSystem32になるからです。
64bitで開発しないならDLLは基本的に32bit用を使って、インストールするディレクトリ
はSysWow64に。
0636デフォルトの名無しさん
2012/08/24(金) 18:50:30.600637デフォルトの名無しさん
2012/08/24(金) 19:16:27.670638デフォルトの名無しさん
2012/08/24(金) 19:19:10.660639デフォルトの名無しさん
2012/08/24(金) 19:21:57.23同じDLLを使う実行ファイルが複数あったら、
それぞれのフォルダにその同じDLLをコピーするのか?
0640デフォルトの名無しさん
2012/08/24(金) 19:25:07.39配布するならそれが正しいだろうね。
開発時ならvcxprojと同じ階層とかビルド時にexeができる所とかに置くのもありかな。
0641デフォルトの名無しさん
2012/08/24(金) 19:25:49.030642デフォルトの名無しさん
2012/08/24(金) 19:29:39.49スタティックリンクだと自分のコードに問題なくても、リンクしたlibに問題あると全部ビルドし直しになるからなぁ。
0643デフォルトの名無しさん
2012/08/24(金) 19:34:27.390644629
2012/08/24(金) 20:02:33.73ああ、そういう仕組みなんですか。
ありがとうございます
0645デフォルトの名無しさん
2012/08/25(土) 13:49:45.66GTX 280 から GTX 480 のときは、glReadPixels が3倍ほど遅くされたが、
今度はこれかよ。
0646デフォルトの名無しさん
2012/08/28(火) 01:02:20.41androidのopengl esで、↑のようなグリッド(格子線)の上を飛ぶものを作りたいんですけど、
100*100格子程度でもをDrawArrays のGL10.GL_LINESでやると線が乱れたり点滅してしまいます
綺麗に表示したり、どこまでも広がるグリッドを実装するにはどうすればいいんですか?
0647デフォルトの名無しさん
2012/08/28(火) 01:07:35.280648646 一つ目のコード
2012/08/28(火) 01:39:39.28/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurfaceView = new GLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(true);
glSurfaceView.setRenderer(new GLRenderSample1());
setContentView(glSurfaceView);
}
class GLRenderSample1 implements Renderer {
float aspect = 0.0f;
float zPosition = 110f;
int size = 100; //格子サイズ
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
aspect = (float) width / (float) height;
gl.glViewport(0, 0, width, height);
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glColor4f(1.0f, 0, 0, 1.0f);
ここでfloat配列 vertices に頂点座標を入れる
0649一つ目の続き
2012/08/28(火) 01:40:47.20FloatBuffer fb = ByteBuffer.allocateDirect(vertices.length * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
fb.put(vertices);
fb.position(0);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb);
}
//! カメラ転送
{
//! 呼び出さなかった場合の動作を考える
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
//! 転送順番に注意する
GLU.gluPerspective(gl, 90.0f, aspect, 0.001f, 100.0f);
// GLU.gluLookAt(gl, zPosition / 2, -zPosition, zPosition, 0, 0, 0.0f, 0.0f, 1.0f, 0.0f);
GLU.gluLookAt(gl, 0, 20, zp, 0, 0, 0.0f, 0.0f, 1.0f, 0.0f);
//! 標的に近づける
zp -= 1f;
}
//! 描画
gl.glDrawArrays(GL10.GL_LINES, 0, (8*size)+4);
}
}
0650二つ目
2012/08/28(火) 01:46:42.60float aspect = 0.0f;
float zp = 600f;
int posBufferObject = 0;
int size = 1000;
public void onSurfaceCreated(GL10 gl, EGLConfig arg1) {
}
public void onSurfaceChanged(GL10 gl, int w, int h) {
aspect = (float) w / (float) h;
gl.glViewport(0, 0, w, h);
ここでfloat配列 vertices に頂点座標を入れる
ByteBuffer bb = ByteBuffer.allocateDirect(vertices.length * 4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer posBuffer = bb.asFloatBuffer();
posBuffer.put(vertices);
posBuffer.position(0);
0651二つ目続き
2012/08/28(火) 01:48:22.26//! 頂点オブジェクト作成
{
GL11 gl11 = (GL11) gl;
int[] buffers = new int[1];
gl11.glGenBuffers(1, buffers, 0);
posBufferObject = buffers[0];
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, posBufferObject);
gl11.glBufferData(GL11.GL_ARRAY_BUFFER, posBuffer.capacity() * 4, posBuffer, GL11.GL_STATIC_DRAW);
gl11.glVertexPointer(3, GL10.GL_FLOAT, 0, 0);
gl11.glTranslatef(0, 0, 0.1f);
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, 0);
}
}
public void onDrawFrame(GL10 gl) {
gl.glColor4f(1.0f, 0, 0, 0.2f);
//! カメラ転送
{
//! 呼び出さなかった場合の動作を考える
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
//! 転送順番に注意する
GLU.gluPerspective(gl, 90.0f, aspect, 0.01f, 1000.0f);
GLU.gluLookAt(gl, 0, 23.0f, zp, 0, 0, 0.0f, 0.0f, 1.0f, 0.0f);
zp -= 5f;
}
gl.glDrawArrays(GL10.GL_LINES, 0, (8*size)+4);
}
}
0652646
2012/08/28(火) 01:57:12.40二つ目はonSurfaceChanged で VertexBufferObject へ転送しています。
一つ目のコードの変数zPosition と zp は同じものです。ここにコピペするとき間違えました。
0653デフォルトの名無しさん
2012/08/28(火) 01:57:15.520654デフォルトの名無しさん
2012/08/28(火) 02:01:19.38すいません。Eclipse上ではインデントされてます。
0655デフォルトの名無しさん
2012/08/29(水) 00:39:58.06GLU.gluPerspective(gl, 90.0f, aspect, 0.001f, 100.0f);
でnearの距離が近すぎるような気がする。
nearの値が小さ過ぎるとまずい。
glBufferData, glDrawArrays, 配列の初期化で
データが正しく設定されているか確認する。
Depthテストを有効してないのなら, ラインの描画だけなら
Depth bufferをクリアしなくてもいいけど・・・。
0656デフォルトの名無しさん
2012/08/29(水) 23:41:53.79点滅する事も無くちゃんと動くようになりました。
onSurfaceChangedの中で配列の生成、初期化をしてるのが駄目だったみたい。データは問題なかった。
アルファブレンドを有効にしたら、綺麗になりました。
遠くの方の線が重なって塗り潰したようになる症状も大分緩和されたけど、
もっと綺麗になる様にしたいのでdouble buffering を調べてみます。
0657デフォルトの名無しさん
2012/09/02(日) 07:08:26.81black hole 風にするなら、blend func を (ONE, ONE) に。
projection matrix に gluLookAt してるのがなんとなく気持ちわるい。
0658デフォルトの名無しさん
2012/09/02(日) 20:51:11.05少なくともGLSLレベルから見たら右手左手関係ないって理解であってますでしょうか。
0659デフォルトの名無しさん
2012/09/02(日) 21:01:14.33それに正規化デバイス座標って左手系じゃなかったっけ
0660デフォルトの名無しさん
2012/09/02(日) 21:10:29.60今回新たにES2.0ベースでコードを書いてたのですが
デフォルトだとデプステストがGL_LESSらしく左手系に見えて混乱してます。
カメラのユーティリティもないので実装のためにOpenGLの参考資料とか見だすとますます・・・
0661デフォルトの名無しさん
2012/09/02(日) 21:33:23.420662デフォルトの名無しさん
2012/09/02(日) 21:36:55.14むしろ左手系としてみたほうが素直に見えてきたんで・・・
0663デフォルトの名無しさん
2012/09/02(日) 21:43:04.13テクスチャのバイト並びからテクスチャ座標系まで考えると
わけが分からなくなってしまってしまいました。
0664デフォルトの名無しさん
2012/09/02(日) 21:48:56.61ただあくまでそれはユーザーによる頂点の与え方が右手系になるためであって、projection * modelview * vertices後の空間は奥のほうがz値が大きいんじゃなかったっけ。
0665デフォルトの名無しさん
2012/09/02(日) 21:57:48.000666デフォルトの名無しさん
2012/09/02(日) 22:09:29.47・正規化デバイス座標は実際に描画に影響するからこの座標系でx,y,zが-1〜1でなければならない
・普通のウインドウ座標ではこのときのx,yは(-1,-1)が左下(1,1)が右上(これはOpenGLの管轄外?)
・glDepthFuncの初期値はGL_LESS(OpenGL仕様では確認しました)
この事実を考えると、ウインドウで見たときに手前がかかれて欲しいと考えると
正のX軸方向は右
正のY軸方向は上
正のZ軸方向は奥
となって左手系に見えてしまいます。
0667デフォルトの名無しさん
2012/09/02(日) 22:17:09.73その認識の元で、色々なオブジェクトを色々座標変換してレンダリングしてみるのが良い。
指定したパラメータで意図したようにレンダリングされていれば、それで全く問題ない。
もしおかしな結果になったら、何故なのかを考えれば良いし、
その結果と疑問をここで質問すれば良い。
0668デフォルトの名無しさん
2012/09/02(日) 22:47:38.86どういう実装になっているかはわからんけど、標準と似たような実装と仮定して
left -1、right 1、top 1、bottom -1、near面1、far面100のprojection matrix、
視点(0, 0, 3)、注視点(0, 0, 0)、上向きベクトル(0, 1, 0)のLookAt変換で
zが0の左下(-1, -1) - 右上(1, 1)の青色の矩形と、zが-1で赤色の矩形、どっちが前に見える?
もちろんDepthFuncはデフォルトで。
青色が手前なら間違ってないと思うけど。
0669デフォルトの名無しさん
2012/09/02(日) 22:55:02.35ES2.0が前提の話なのに、
>LookAt変換
アホか?
固定機能しか使ったことが無いのなら黙っていれば良いのに。
0670デフォルトの名無しさん
2012/09/02(日) 23:01:08.87だから「標準と似たような実装」っていってるだろうが。アホはお前だ。
0671デフォルトの名無しさん
2012/09/02(日) 23:10:02.87質問者そっちのけで
回答者同士が争うんだろうなw
0672デフォルトの名無しさん
2012/09/02(日) 23:21:14.697. OpenGL does not force left- or right-handedness on any of its coordinates systems.
ってあるのは知ってたんですけど手抜いて日本語サイト中心に検索してると
あまりこの手の話に説得力あるサイトがないんですよね。
とくにキューブマップでさらにXYZからテクスチャひっぱるとカオスになってしまって。
0673デフォルトの名無しさん
2012/09/03(月) 00:04:33.57勉強のためにやってみましたが青色が手前でした。
実際には3Dでやってたときは>>1にあるサイトのcameraMatrixを使ってましたが
perspectiveMatrixを使ってみました。
これも結局シェーダーで自前でいじるのであれですが
一般的な動作の参考になりました。ありがとうございます。
0674デフォルトの名無しさん
2012/09/05(水) 20:38:10.34SJISかUnicodeとかの指定ありますか?
仕様書には何も書いてない気がするのですが・・・
0675デフォルトの名無しさん
2012/09/05(水) 20:41:51.370676デフォルトの名無しさん
2012/09/05(水) 20:46:41.22「GLSL "character set"」でググったら、トップにこなにPDFがあった。
http://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/Chapter_2.pdf
The character set used GLSL is a subset of ASCII, ・・・
だってさ
0677デフォルトの名無しさん
2012/09/05(水) 20:48:55.460678デフォルトの名無しさん
2012/09/05(水) 21:31:55.750679デフォルトの名無しさん
2012/09/06(木) 10:10:36.34rendermonkyのパラメータいじるあれっぽいやつ
0680デフォルトの名無しさん
2012/09/06(木) 12:07:08.740681デフォルトの名無しさん
2012/09/06(木) 17:13:10.550682デフォルトの名無しさん
2012/09/06(木) 19:49:33.97仕方ないね
CLIとかで頑張るか
0683デフォルトの名無しさん
2012/09/06(木) 20:01:52.260684デフォルトの名無しさん
2012/09/06(木) 21:25:46.70http://codepad.org/4ViSsdia
上記はglutを使って線を通常のopenGLで、立方体をglDrawElementを使って描写したものだけど
どうやらアクセス違反で例外が呼ばれている模様
つまり通常のglVertexなどとglDrawElementって併用できなかったりします?
0685デフォルトの名無しさん
2012/09/06(木) 21:48:31.49glNormalPointer(GL_FLOAT,6,3);
0686デフォルトの名無しさん
2012/09/06(木) 22:31:35.71お恥ずかしい
こんなオチですいません
0687デフォルトの名無しさん
2012/09/07(金) 00:35:56.83ポインタがおかしいのかな
0688684
2012/09/07(金) 09:30:47.94やはりここを見てもバイトサイズ指定で問題無いように思えます
別のところに問題があるとするとやはりGPUメモリ上にあるデータとCPUから指定するデータを
行ったり来たりできないということなんでしょうか
0689デフォルトの名無しさん
2012/09/07(金) 10:38:08.54そのままで動いたけど WINDOWS7 + NVIDIA
0690デフォルトの名無しさん
2012/09/07(金) 19:56:41.82ホントですか?ウィンドウをリサイズさせてもちゃんと描写されてます?
ということはグラボ依存性か・・・?うああ
0691デフォルトの名無しさん
2012/09/07(金) 20:15:03.65>ホントですか?ウィンドウをリサイズさせてもちゃんと描写されてます?
リサイズするとき落ちるなんて初耳だが。
つか試してやったのにホントですか?とか言うならもう知らねーよ
0692デフォルトの名無しさん
2012/09/07(金) 20:21:33.41単に驚いたときの常套句だろ
それくらい汲んでやれよ
0693デフォルトの名無しさん
2012/09/07(金) 20:32:12.68すいません、正確に申しますと僕の方でも最初の一回は描写されるんですよ
なので本当にループが回っているかどうかの確認方法の一つとしてウィンドウのりサイズを
お願いしたかったのです。
情報出すのが遅れて申し訳なかったですが、出来ればリサイズしてみてループが回っているかどうか
確認していただけるとありがたいです。
ループが回っている場合ウィンドウのサイズに合わせて中央の箱のサイズも変わりますが
そうでない場合、ウィンドウの縁の部分が断続的に並んでしまう絵になってしまいます
0694デフォルトの名無しさん
2012/09/07(金) 20:48:37.27アクセス違反で例外が起きるんじゃなかったの?
うちの環境ではウィンドウのサイズに合わせて中央の箱のサイズも変わります
箱つっても真っ黒な四角だけどね
そろそろ動かないPC環境とか書きませんか?
0695デフォルトの名無しさん
2012/09/07(金) 20:53:01.45はい、確認ありがとうございます
環境忘れていました
windows7 64bit home premium
AMD Radeon HD7700
AMD特有・・・?
0696デフォルトの名無しさん
2012/09/07(金) 21:15:17.95私のノートPCのRadeonでは動いたよ
resizeしたときdisplay()呼ばれてる?
cubeの部分を全部削除して一本の線だけにすると正しく動く?
なにが原因かもう少し探ってみれば
0697デフォルトの名無しさん
2012/09/07(金) 22:22:16.86最初の1ループだけは何事も無く描写される
次のループからはダメ
キューブ、もしくは線のみにした場合予想通りの動きをしてくれる
もしかするとプロジェクト設定が何か悪さをしているのかもしれませんが
しかしvs2008空のコンソールデフォルトでこうなってしまっています
ちょっとエラーメッセージなども探ってみます(真っ先に探るべきでしたが)
0698デフォルトの名無しさん
2012/09/08(土) 01:54:21.75対応するVBOがないぞ。
0699デフォルトの名無しさん
2012/09/08(土) 03:09:02.93glGetErrorとgluErrorStringでエラーチェックくらいしようよ
0700デフォルトの名無しさん
2012/09/08(土) 05:54:01.58あとはドライバ更新くらいでしょうか
0701デフォルトの名無しさん
2012/09/08(土) 06:30:01.00display()の適当なところにglFinish()でもいれてデバッガで追ってみれば?
(あと描画の度にVBO更新してるけど、最初に1回やればいいんじゃね。まぁそれが原因とも思えないけど)
>>693の
>ウィンドウの縁の部分が断続的に並んでしまう絵になってしまいます
ってのは描画が更新されないときに昔よく見た現象なような気がするんで。
少なくともdisplay()に入っていればglClearくらいはされないとおかしいような。
0702デフォルトの名無しさん
2012/09/08(土) 07:10:44.06sizeof_GLfloat*6,0
を指定してるのはなんでなん?
それで24個の頂点の描画をしたら1個足りなくならん?
0703デフォルトの名無しさん
2012/09/08(土) 07:11:31.832回目のglBufferDataで例外が発生してループを抜けているようです
ということはバッファを上書きするときに何か悪さをしているのかと思い
glBufferDataは一回だけ呼び出し、glBufferSubDataで更新をかけて見ましたが変わらず、です
さらに初回のみバッファに書き込み、以降バッファを更新しないようにしてみましたが
今度は立方体を書く直前のglColor4fで、それも外してみるとglDrawElementで例外が発生しています
(いずれも2回目のループで)
もう訳がわかりません・・・
0704702
2012/09/08(土) 07:13:13.02引数は3つしかなかったね。
そこはstrideか…。
0705デフォルトの名無しさん
2012/09/08(土) 07:16:49.720706デフォルトの名無しさん
2012/09/08(土) 07:25:06.270707デフォルトの名無しさん
2012/09/08(土) 07:31:06.78例外が発生→display関数の最初のブレークポイント
に戻ってきます
64bit版も作っていて、それではプログラムが終了します
0708デフォルトの名無しさん
2012/09/08(土) 07:39:42.33何故やったことを全部書かないのか。
0709デフォルトの名無しさん
2012/09/08(土) 07:44:36.6664bit版だと終了するって、
リサイズすると終了?
何も描画せずに終了?
0710デフォルトの名無しさん
2012/09/08(土) 07:53:20.462ループ目で ***.exeは動作を停止しましたとなりますね
つまり見た目には何も描写しないで終了しています
0711デフォルトの名無しさん
2012/09/08(土) 12:05:04.24glIndexPointer 呼んでないし
0712デフォルトの名無しさん
2012/09/08(土) 13:17:08.04glEnableClientState,glDisableClienatStateをコメントアウト
→32bit;変化なし、64bit:終了しなくなったが、例外は発生している、描写はリサイズを止めると更新
glIndexPointerを読んでみる
→32bit;変化なし, 64bit:上に同じ
いずれも箱は表示されて、線は表示されません
0713デフォルトの名無しさん
2012/09/08(土) 13:21:44.210714デフォルトの名無しさん
2012/09/08(土) 13:31:51.40なのに
glColor4f(1.0,0.0,0.0,1.0);
0715デフォルトの名無しさん
2012/09/08(土) 13:32:57.47上記コードで
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_indexBufferID);
を呼び出せばglEnableClientStateせずともglDrawElementsでインデックスとして参照してもらえるということでしょうか
するとglEnableClientStateが必要なのは、たとえばglBindBuffer(GL_ARRAY_BUFFER,m_indexBufferID)などした場合
glIndexPointerと一緒に、ということでしょうか?
0716デフォルトの名無しさん
2012/09/08(土) 13:48:21.02そう。
>glEnableClientStateが必要なのは、たとえば
http://www.cs.rit.edu/~ncs/Courses/570/UserGuide/OpenGLonWin-15.html
glIndexPointer() specifies the location and data format of an array of color indexes
0717デフォルトの名無しさん
2012/09/08(土) 14:00:22.75元の問題ですが、とりあえず僕の環境以外で起こっていないということで、
僕の環境を見なおしてみます
もちろん上のコードが動いたとか動かなかったなどのレス、
あるいは上記コードそのものに対してのレスは歓迎しますがopenGLそのものの問題ではないような気がしてきましたので
お付き合いくださいありがとうございました。
なんかすっきりしない結果ですいません
0718デフォルトの名無しさん
2012/09/08(土) 14:03:43.560719デフォルトの名無しさん
2012/09/08(土) 15:30:39.89最終的なコードは以下になります
http://codepad.org/4nyn5wkx
最初のコードとの違いは
init関数内でバッファ操作を完結
glEnableClientState(GL_INDEX_ARRAY)および同glDisable~を削除
最終的な症状は>>712です(すべてのopenGLエラーチェックではNo Error)
なお、glewの動的リンクに切り替えられますが、結果は変わりませんでした
0720デフォルトの名無しさん
2012/09/08(土) 15:41:31.360721デフォルトの名無しさん
2012/09/08(土) 16:04:45.430722デフォルトの名無しさん
2012/09/08(土) 18:18:47.320723デフォルトの名無しさん
2012/09/08(土) 18:36:31.970724デフォルトの名無しさん
2012/09/09(日) 01:35:00.620725デフォルトの名無しさん
2012/09/09(日) 02:00:50.720726デフォルトの名無しさん
2012/09/09(日) 04:09:33.22割と大事な視点ですね
過去に痛い目見た奴は、ついでに電源ユニットも買い替える傾向にありますね
割とアレっすよね
0727デフォルトの名無しさん
2012/09/09(日) 05:43:38.42printfとかあやしいし未使用変数とかあるし動かす気あんのか
あと正直コード読む気にならないので何が表示されるかぐらい書いてくれ
法線よりも色が欲しいような気はする
>>721
glBufferSubDataは呼び出し時にコピーを行うようなので
geomのスコープは問題にはならないはず.インデントきもいけど
0728デフォルトの名無しさん
2012/09/09(日) 05:50:53.190729デフォルトの名無しさん
2012/09/09(日) 07:01:21.19何が表示されるかは書いてあるぞ。
それと、確かにコードはきれいとは言わないが試行錯誤の結果にケチつけるのは粋じゃないねぇ。
その程度コードも読めないで文句ばっか言ってんなよ。
0730デフォルトの名無しさん
2012/09/09(日) 10:21:08.742回目のdisplayで不正なメモリアクセスが発生して停止しました。
Win7 64bit
Radeon HD5700(8.982.0.0)
色々とソースを変更して、とりあえず動作するようにしてみました。
・インデックスの型をGL_UNSIGNED_SHORTに変更
・glBufferSubDataをglBufferData(,,GL_STAIC_DRAW)
原因はよくわかりません。
UNSIGNED_BYTEのインデックス描画に問題がありそうですが。
GL_ELEMENT_ARRAY_BUFFERを使用せず
glDrawElementsに直接index配列を渡すとUNSIGNED_BYTEでも正常に動作するようです。
0731デフォルトの名無しさん
2012/09/09(日) 10:59:30.75うおおおおおおありがとうございます!
UNSIGNED_SHORTで動く、直接indexを渡すと動くということは
GPUが扱うメモリ側のバイト詰めの問題だったのでしょうか
こちらでも吟味してみて新しく何かがわかったら報告致します
改めてありがとうございました!
0732デフォルトの名無しさん
2012/09/09(日) 14:09:26.32正のX軸方向は右手中指
正のY軸方向は右手人差し指
正のZ軸方向は右手親指
となって右手系
0733デフォルトの名無しさん
2012/09/09(日) 14:15:40.18ギャグなのか、マジなのか・・・
0734デフォルトの名無しさん
2012/09/09(日) 14:29:19.48左手人指が正Y
左手親指が正Z
で右手系の方が個人的にパッと手で作りやすい
0735デフォルトの名無しさん
2012/09/09(日) 14:37:50.960736デフォルトの名無しさん
2012/09/09(日) 15:06:30.830737デフォルトの名無しさん
2012/09/09(日) 15:50:52.310738デフォルトの名無しさん
2012/09/09(日) 15:54:32.110739デフォルトの名無しさん
2012/09/09(日) 16:02:49.10高校生でもフラミンゴの左手の法則で使うぜ
0740デフォルトの名無しさん
2012/09/09(日) 16:15:20.340741デフォルトの名無しさん
2012/09/09(日) 16:44:59.60左手ってどうなってんだろ
0742デフォルトの名無しさん
2012/09/09(日) 20:22:00.840743デフォルトの名無しさん
2012/09/10(月) 10:48:02.33http://www.nikkei.com/article/DGXNASDG2303P_T20C12A8CC1000/
北海道旭川市の西川将人市長は23日の記者会見で、市が運営する旭山動物園から逃げた
ヨーロッパフラミンゴの捕獲作業で、フラミンゴをおびき寄せるために用意したおとり1羽が死に、
1羽が行方不明になったことを陳謝した。
市長は「フラミンゴは1羽25万〜30万円。市民に損害を与えて申し訳ない。
犠牲になったフラミンゴにも申し訳ないと思っている」と述べた。
2羽のフラミンゴはキタキツネに襲われたとみられ、動物園には電話で苦情が約50件寄せられた。
市長は「捕獲して戻すことが重要な役割だ」として捕獲作業を継続する方針を示した。
同時に「寒くなれば南に飛んでしまう可能性があるので、なるべく早く連れ戻したい」と述べた。
紋別市・コムケ湖で今月17〜18日に行われた動物園による捕獲作業では、逃げたフラミンゴの捕獲に失敗し、
おとりで用意した4羽のうち2羽を失った。園は既に、おとりを使った捕獲の中止を決めている。〔共同〕
0744デフォルトの名無しさん
2012/09/10(月) 13:31:16.39サイコロの6面をマテリアル(シェーダー)を変えながら6回描画した場合、
シェーダーを6回取り替えることになりますが、OpenGLのVertexArrayオブジェクトも6回変えなければならず
単にメッシュを6回レンダリングするのとパフォーマンスに差がない気がします。
ツールなどで見かける「サブメッシュ」にはどういう利点があるのでしょうか?
0745デフォルトの名無しさん
2012/09/10(月) 13:50:34.38ツールによって用語が違うだろうからそれだけでは分からないが、
多分、パフォーマンスを改善するためにそういう仕組みがあるのではなく、
サブメッシュを複数持つ論理的な単位のために存在するのだろう。
モデリングするときには一体のものとして作業したいが、部分によって
マテリアルが違う、というようなときに便利だろう。
0746デフォルトの名無しさん
2012/09/10(月) 16:06:53.30理解した。
ありがとう。
0747デフォルトの名無しさん
2012/09/10(月) 19:52:36.07おっさんになったら手をひねり出す
小学生の時にOpenGLを教えたほうがいい
0748デフォルトの名無しさん
2012/09/11(火) 00:53:12.730749デフォルトの名無しさん
2012/09/11(火) 02:10:29.21どうせシェーダで詰むよ
0750デフォルトの名無しさん
2012/09/11(火) 10:35:44.390751デフォルトの名無しさん
2012/09/11(火) 11:23:48.92GLSL と HLSL はそんなに変わらないから。
0752デフォルトの名無しさん
2012/09/11(火) 11:28:41.980753デフォルトの名無しさん
2012/09/11(火) 12:38:19.55この程度の推論もできんのか
0754デフォルトの名無しさん
2012/09/11(火) 13:14:58.87発達する?
0755デフォルトの名無しさん
2012/09/11(火) 14:06:33.290756デフォルトの名無しさん
2012/09/12(水) 07:22:33.280757デフォルトの名無しさん
2012/09/22(土) 14:35:37.100758デフォルトの名無しさん
2012/09/22(土) 15:32:40.75環境固有の問題が絡むと反応できんがw
0759デフォルトの名無しさん
2012/09/22(土) 16:10:29.68よくこれでまともに動く3Dソフトが作れるもんだな外人は…
0760デフォルトの名無しさん
2012/09/22(土) 16:42:51.95JAVAから叩くのは早々に諦めたが
もちろん俺もマーケットに並んでる3Dゲームには惚けるしかないけどw
数学バカが集結してGPU別に最適化やってそうなイメージ
0761デフォルトの名無しさん
2012/09/22(土) 16:57:43.43ここの glut32.lib を link しています。
winmm.lib に依存するコードは書いていないのに、
LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。
というエラーが出るのですが、なぜでしょう?
環境は VC++ 2008 Express Edition です。
0762761
2012/09/22(土) 17:09:15.630763デフォルトの名無しさん
2012/09/22(土) 17:19:50.70既にGPU性能は春モデルはPS1以上、夏モデルはPS2を凌駕している。
Javaで組むのは論外として、きちんとndkやneonでの最適化はやっているのか?
0764デフォルトの名無しさん
2012/09/22(土) 17:29:22.21NEON使わなくとも。
0765デフォルトの名無しさん
2012/09/22(土) 17:53:34.80PS1レベルから処理コスト考えてるような人じゃないと遅いと感じるのかもね。
0766デフォルトの名無しさん
2012/09/22(土) 20:37:55.11しかもソニー公式
0767デフォルトの名無しさん
2012/09/22(土) 21:52:01.640768デフォルトの名無しさん
2012/09/22(土) 23:00:07.87いやちょっと気になっただけだが
0769デフォルトの名無しさん
2012/09/23(日) 12:38:31.31不安定になってOSごと巻き込んで落ちるのは勘弁してほしい。
これだとほとんどお決まりの処理しか書けないんだよね。
0770デフォルトの名無しさん
2012/09/23(日) 15:00:24.58PCのGPUと比較すると100倍くらい差があるからね・・
リアルタイムレイトースがGLSLでさくさく動く時代だし
0771デフォルトの名無しさん
2012/09/23(日) 15:18:51.17具体的にどのGPUと比較して100倍なのか、前提条件を明確にしろ。
どうせ脳内ソースの妄想だろう。
0772デフォルトの名無しさん
2012/09/23(日) 19:14:41.60HD7870 2.56 TFLOPS
HD7970 3.79 TFLOPS
ハイエンド同士だと100倍どころか300倍違う
0773デフォルトの名無しさん
2012/09/23(日) 19:16:14.29ほとんどの人が持ってないんじゃ意味ないだろう
0774デフォルトの名無しさん
2012/09/23(日) 19:49:07.730775デフォルトの名無しさん
2012/09/23(日) 19:59:09.77なにが気にくわなくて難癖つけてんのか分からんw
0776デフォルトの名無しさん
2012/09/23(日) 20:26:08.630777デフォルトの名無しさん
2012/09/23(日) 20:46:29.09解像度と統一して、依存部分や拡張命令をそれぞれに対応させている以外は、
ほぼ同じソースでFPSは20倍程度の差。
CPUの圧倒的な差を思えば健闘していると思うけどね。
0778デフォルトの名無しさん
2012/09/23(日) 21:00:14.800779デフォルトの名無しさん
2012/09/23(日) 21:15:08.76結局、性能差なんて自分の組んだプログラム次第なんだから。
0780デフォルトの名無しさん
2012/09/23(日) 21:57:28.300781デフォルトの名無しさん
2012/09/23(日) 22:38:05.18この馬鹿は何を言っているんだろう?
0782デフォルトの名無しさん
2012/09/23(日) 22:53:01.080783デフォルトの名無しさん
2012/09/24(月) 00:28:41.960784デフォルトの名無しさん
2012/09/24(月) 02:52:31.39勉強のため、OpenGL ES 2.0をいじっています。
やろうとしていることは
MikuMikuDance(MMD)で使用されるモデル(PMD)とモーションファイル(VMD)を
使用してアニメーションさせるというものです。
ここで質問なのですが、ボーンの情報(回転・移動)をシェーダに渡す際に
テクスチャを使用するのは一般的なものなのでしょうか。
スキニングをシェーダでやりたいと思っていまして
各ボーンの行列をuniform変数として渡すにはボーン数があまりにも多く
どうにかできないものかとググっていたところ下記のサイトがヒットしました。
OpenGLでGPUスキニング【頂点テクスチャ編】
ttp://nullorempry.jimdo.com/2012/07/02/opengl%E3%81%A7gpu%E3%82%B9%E3%82%AD%E3%83%8B%E3%83%B3%E3%82%B0-%E9%A0%82%E7%82%B9%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E7%B7%A8/
このようなやり方は邪道だったりしないのかと思った次第です。
よろしくお願いします。
0785デフォルトの名無しさん
2012/09/24(月) 03:13:38.03テクスチャと命名したときと状況が違いすぎる
0786デフォルトの名無しさん
2012/09/24(月) 07:43:02.60なるほど。
本来とは違う使い方ではあるけれども
大きなデータはテクスチャを使うのが
今となっては普通なんですね。
もやもやが解消されました。
ありがとうございました。
0787デフォルトの名無しさん
2012/09/26(水) 00:28:36.45現在勉強中でやっとシェーダ上でのスキニングとシャドウマップができたところです。
シャドウマップをやっていて気付いたのですが、シェーダ上でボーン処理をすると
シャドウマップ作成などのプリプロセス?でも頂点シェーダを通ってしまいます。
今後ポストエフェクト用にパス数を増やしていきたいのですが
DirectXのマルチレンダーターゲットの様な頂点シェーダは1回で済むみたいな
やり方ってありますでしょうか。
2パスでの描画でしたが予想以上に遅かった
(約5000頂点のモデル1個と地面を描くだけで60fpsをきってしまいました)ので原因が気になってしまいました。
今はVBO使ってなかったのでそっちでどのくらいマシになるかやってます。
0788デフォルトの名無しさん
2012/09/26(水) 00:58:46.15環境はAndroid2.3でNDK+GLES2.0で組んでます
0789デフォルトの名無しさん
2012/09/26(水) 17:09:01.72なんらかのコールバック関数を呼ばせることは出来ますか?
閉じるボタン以外(ESCキーを拾うなど)の方法で次のコードで終了させると
glutDestroyWindow(glutGetWindow());
myfreeresourcefunction(); // 自前のリソース開放部分
exit(0);
リソースの開放が可能ですが
右上の閉じるボタンを押したときは glutMainLoop() の方が
いきなり終了するようでリソースの解放が出来ないのです
0790デフォルトの名無しさん
2012/09/26(水) 17:19:52.31GLUT_BUILDING_LIB
0791デフォルトの名無しさん
2012/09/26(水) 17:25:52.48http://www.glfw.org/
0792デフォルトの名無しさん
2012/09/26(水) 17:32:08.21ttp://msdn.microsoft.com/ja-jp/library/tze57ck3%28v=vs.71%29.aspx
0793デフォルトの名無しさん
2012/09/26(水) 17:47:48.01>>792 さんの方法で出来ました
本当にありがとうございました
0794デフォルトの名無しさん
2012/09/26(水) 20:05:31.13とりあえずうまく行っていたように見えたのですが
atexit() を実行したあとに例外を投げると落ちます
同じコードで atexit() が無い時は例外は捕捉出来ました
また atexit() を実行する前に例外を投げたときも正常です
atexit() で exit() の動きが変わることで
例外が投げられると(catch も出来ずに)落ちるようなのですが
何が原因なんでしょう?
0795デフォルトの名無しさん
2012/09/26(水) 20:07:02.86glutMainLoop() の問題っぽいのですみません
0796デフォルトの名無しさん
2012/09/26(水) 20:39:04.64に一議員票
0797デフォルトの名無しさん
2012/09/26(水) 20:41:59.200798デフォルトの名無しさん
2012/09/26(水) 21:05:29.89それかも知れません
ちょっと調べて来ます
>>797
判らないなら黙っててください
うざいだけです
0799デフォルトの名無しさん
2012/09/26(水) 21:07:34.76その一言が余計なんだよ
黙って無視すること
0800デフォルトの名無しさん
2012/09/26(水) 21:34:35.99( ´∀`)< オマエモナー
( ) \_____
│ │ │
(__)_)
0801デフォルトの名無しさん
2012/09/26(水) 21:47:39.08俺のはいいんだよ、ためになるアドバイスだから
>>798 のは余計な一言だよ
0802デフォルトの名無しさん
2012/09/26(水) 23:14:57.80原因は良く判らないのですが
catch(){ の中に exit(1); }
を書いたら UAE 出さずに終了するようになりました
本当にありがとうございました
0803デフォルトの名無しさん
2012/09/27(木) 00:51:23.720804デフォルトの名無しさん
2012/09/27(木) 03:54:58.350805デフォルトの名無しさん
2012/09/27(木) 07:11:17.77とりあえず妥協してるのかもしれん
ただ、このままでは危険なコードである事は間違いないな
何か知らんけど、最後に +1 したらバグらなくなった、
という類いのコードを放置するのが一番怖い
0806デフォルトの名無しさん
2012/09/27(木) 10:15:00.49atexit() を使うようにしてから
catch(){ の中に exit(1); }
を書くまでのコードについて
まだ条件は絞り込めていないのですが
例外と無関係に落ちているケースがあることが判明しました
場所は main の最後の return で落ちているようです
main の return で終了するときは
atexit() のコールバックは呼ばれないのでしょうか?
どんどん深みにはまっています
0807デフォルトの名無しさん
2012/09/27(木) 10:20:39.75エラーが出る最小化して書こうよ(´・ω・`)
0808デフォルトの名無しさん
2012/09/27(木) 10:23:42.29atexitが呼ばれてるかどうかはatexit先にprintfでも入れておけばわかるんじゃないの
0809デフォルトの名無しさん
2012/09/27(木) 10:43:41.54glutMainLoopから抜け出る機能がある。
そしてまたglutMainLoopに入る事もできる。
atexit()ではそれができない。
0810デフォルトの名無しさん
2012/09/27(木) 10:46:12.17>glutのglutMainLoopつかっててmainのreturnに行く時ってどういう時よ
Idle のコールバックの中で例外をわざと出してみています
main で例外を catch して exit() しなければ return に行くと思っています
>atexitが呼ばれてるかどうかはatexit先にprintfでも入れておけばわかるんじゃないの
これは試しました
呼ばれています
0811デフォルトの名無しさん
2012/09/27(木) 10:47:43.14ちょっと違いますね
例外を出したときだけ呼ばれている感じですが
今自分が混乱しているので
頭の中が整理出来たらまた来ます
0812デフォルトの名無しさん
2012/09/27(木) 10:50:01.86リソースクラスのデストラクタに解放コード入れておけばいいんじゃないの?
0813デフォルトの名無しさん
2012/09/27(木) 10:54:00.86ウィンドウの右上閉じるボタンをクリックで終了すると
デストラクタが呼ばれなかったという・・・
0814デフォルトの名無しさん
2012/09/27(木) 11:21:02.85そうします
しばらくおまちください
>>809
それも検討してみます
とりあえず今作ってしまったものについて原因を知りたいだけです
>>808
●自分で例外を出したときは
main で catch されて glutMainLoop() を抜けて main に戻り
return または exit() するときにリソースのデストラクタが呼ばれています
ただし return の場合は直後に UAE が出ます
exit() の場合は黙って終了します
●右上閉じるボタンで終了したときは
main に戻らず glutMainLoop() 内で exit() されている
→ atexit() で自分で開放することはできる
main 内で生成したリソースのデストラクタは呼ばれていない
です
main 内では
Hoge *hoge = new Hoge();
ではなく
Hoge hoge;
で生成しています
0815デフォルトの名無しさん
2012/09/27(木) 11:34:16.86exit()するとローカル変数のデストラクタは呼ばれない。
グローバル変数もしくはstaticな変数なら呼ばれる
0816デフォルトの名無しさん
2012/09/27(木) 12:05:44.62SAFE_RELEASEくらいしろよ。
0817デフォルトの名無しさん
2012/09/27(木) 13:55:02.64二回開放は防止してるつもりなんですけど・・・
0818デフォルトの名無しさん
2012/09/27(木) 14:02:34.84atexit()の方で使ってるんじゃないかな。
0819デフォルトの名無しさん
2012/09/27(木) 14:15:17.32>>818
たぶんそれですね
とりあえず atexit() の中の方で
危険そうな部分を回避したら
catch 側の exit() 取り除いても
終了時の UAE は出なくなりました
具体的に適切なコードに直す方法は
これから考えます
本当にありがとうございました
0820デフォルトの名無しさん
2012/09/27(木) 14:20:27.690821デフォルトの名無しさん
2012/09/27(木) 14:23:11.420822デフォルトの名無しさん
2012/09/27(木) 14:49:10.46atexitはキャンセル出来ないんだよね
0823デフォルトの名無しさん
2012/09/27(木) 14:50:41.790824デフォルトの名無しさん
2012/09/27(木) 14:59:08.43>>802 の時点でとりあえず動いていた
(動いているように見えた)ので
危うく妥協してしまうところだったのですが
>>804-805 さんたちのおかげで考えを改め
望み通りまともなコードにまで改善することが
出来ました
本当にありがとうございました
0825デフォルトの名無しさん
2012/09/27(木) 15:26:57.66英語の原文のサイトってありますか?
http://opengl.jp/oglfaq/glut.htm#glot0070
0826デフォルトの名無しさん
2012/09/27(木) 16:03:40.56glut のことですか?
0827デフォルトの名無しさん
2012/09/27(木) 16:32:26.34ttp://www.opengl.org/archives/resources/faq/technical/glut.htm
0828デフォルトの名無しさん
2012/09/27(木) 16:34:54.470829デフォルトの名無しさん
2012/09/29(土) 15:25:01.25エッジが強い箇所では1頂点=1法線とはいかずに各面用の複数の法線データが必要になるけど
こういうデータを効率よく頂点バッファで転送する方法ってないのかな?
全く情報が見つからない
やはりそういう箇所でバッファを使うには法線の数だけ頂点を増やすしかない?
0830デフォルトの名無しさん
2012/09/29(土) 16:20:13.95法線やテクスチャ座標が違うということは別の面に属する別の頂点と考えるのが自然だろう
0831デフォルトの名無しさん
2012/09/29(土) 16:23:26.450832デフォルトの名無しさん
2012/09/29(土) 16:31:22.16>>329 はそれは十分理解していると思うぞ。
その場合に、単に属性の数だけ頂点データを転送するのではなく、
もっと効率よく頂点バッファで転送する方法はないものか、と訊いてるのでは?
属性的には別の頂点でも、ジオメトリ的、トポロジ的には一つの頂点なんだから、と。
0833デフォルトの名無しさん
2012/09/29(土) 16:36:41.36本当にありがとうございました。
0834デフォルトの名無しさん
2012/09/29(土) 16:39:57.79そうなのか、余計なことだった、すまん
0835デフォルトの名無しさん
2012/09/29(土) 23:47:35.59コマンドラインのツールはexitしてるの多いけどまともじゃないん
0836デフォルトの名無しさん
2012/09/30(日) 00:01:51.84全世界の全てのまともなソフトの中で、
exit使ってるコマンドラインのツールというのは、
「普通」から外れるのではないだろうか
例外的と言ってもいいような気がする
0837デフォルトの名無しさん
2012/09/30(日) 00:45:46.410838デフォルトの名無しさん
2012/09/30(日) 02:17:33.37はて
0839デフォルトの名無しさん
2012/09/30(日) 03:15:03.030840デフォルトの名無しさん
2012/09/30(日) 09:24:06.63exit は、自分の仕事が終わったら何も言わずにさっと帰って行くヤツ。
main 関数の return で終わるのは、OS に対して「お疲れ様でした」と言って帰るヤツ。
0841デフォルトの名無しさん
2012/09/30(日) 09:24:48.98けどそういう主旨じゃないよね
0842デフォルトの名無しさん
2012/09/30(日) 09:38:08.200843デフォルトの名無しさん
2012/09/30(日) 09:44:35.26いくらなんでもさすがに、そんな餌で釣られるわけが……
ここ腐ってもプログラム板なんで
0844デフォルトの名無しさん
2012/09/30(日) 09:50:49.13じゃあ無視ししとけよ。
0845デフォルトの名無しさん
2012/09/30(日) 10:15:51.970846デフォルトの名無しさん
2012/09/30(日) 10:49:38.010847デフォルトの名無しさん
2012/09/30(日) 12:03:10.590848デフォルトの名無しさん
2012/09/30(日) 12:06:48.760849デフォルトの名無しさん
2012/09/30(日) 15:05:09.62そういうのはDirectXにまかせとけばいいのに
向こうはXPのために何年経っても9がデファクトのままで
OpenGLは少し前の情報がどんどん役に立たなくなっていくとか…
0850デフォルトの名無しさん
2012/09/30(日) 15:24:43.60何言ってんのこのひと
0851デフォルトの名無しさん
2012/09/30(日) 16:05:37.813Dグラフィックスライブラリは実質OpenGLしかなく、
これを使わざるを得ない状況にある。
気に入らない点があるからといって使わないわけにはいかない。
0852デフォルトの名無しさん
2012/09/30(日) 16:34:42.57互換プロファイルもできちゃったし
0853デフォルトの名無しさん
2012/09/30(日) 17:41:10.75エッジのない箇所でも同一頂点に違う法線をどんどん定義したり、同一法線を重複して定義したり
これを頂点共有しない形にベタに展開するとかなり頂点数が増える
PCでは気のせい程度でもAndroidは最適化を詰めないとすぐ重くなる
動作確認に使ってる中華padだと6〜10kポリゴン程度が60fps維持の限界だし
0854デフォルトの名無しさん
2012/09/30(日) 18:26:18.870855デフォルトの名無しさん
2012/09/30(日) 18:39:24.860856デフォルトの名無しさん
2012/09/30(日) 18:53:04.76頂点だけを共有して、法線やUVとかは共有できないわけだから、参照がもっと複雑になるんじゃないかな
0857デフォルトの名無しさん
2012/09/30(日) 18:59:38.580858デフォルトの名無しさん
2012/09/30(日) 19:05:02.78ローポリ化の方で対処した方がいい
0859デフォルトの名無しさん
2012/10/01(月) 19:25:53.38明らかに glpng がメモリ壊してたので
正しいデータでもう一度上書きしたら治った
今日1日つぶれた
0860デフォルトの名無しさん
2012/10/01(月) 19:28:08.470861デフォルトの名無しさん
2012/10/01(月) 19:39:49.81http://www.fifi.org/doc/libglpng-dev/glpng.html
野良ライブラリですかね
0862デフォルトの名無しさん
2012/10/01(月) 19:49:12.680863デフォルトの名無しさん
2012/10/02(火) 00:10:06.200864デフォルトの名無しさん
2012/10/02(火) 00:57:21.270865デフォルトの名無しさん
2012/10/02(火) 05:13:13.75最初試したときは使うのが楽だったのと
ちゃんと動いてたのでそのまま使ってました
最初から使えなかったらさっさと捨ててたのですが
中途半端に動いてる(ように見える)と危険ですね
素直に libpng 使うように軌道修正します orz
0866デフォルトの名無しさん
2012/10/06(土) 15:53:45.050867デフォルトの名無しさん
2012/10/06(土) 17:04:02.141個固定
1個だけ回転させたいのですが
どうすればいい?
0868デフォルトの名無しさん
2012/10/06(土) 17:05:44.26少しは試行錯誤しろ。
0869デフォルトの名無しさん
2012/10/06(土) 17:32:07.230870デフォルトの名無しさん
2012/10/06(土) 18:21:54.820871デフォルトの名無しさん
2012/10/07(日) 14:14:04.95方法はいくつか考えられるのでこれが正解という回答は無い
(A) 四角形A描画→四角形Aの座標そのものに回転行列をかけて更新しまう→四角形A描画
(B) 四角形A描画→GPUに送るmodel行列を回転させる→四角形A描画
GPUの頂点シェーダでは固定機能使用なら描画命令呼び出し時にセットされているパラメータから
プロジェクション行列×モデルビュー行列×頂点座標の計算をしているだけ
0872デフォルトの名無しさん
2012/10/07(日) 15:47:23.270873デフォルトの名無しさん
2012/10/07(日) 18:37:19.78OpenGL 4.0シェーディング言語を使うための実用的なヒント、こつ、テクニック
ttp://www.borndigital.co.jp/book/2020.html
これ日本語版か?
0874デフォルトの名無しさん
2012/10/07(日) 19:23:52.61「表紙は英語版のものです」と書いてあるだろ
0875デフォルトの名無しさん
2012/10/07(日) 19:36:28.00ということは中身日本語訳してあるってことか
やっと日本語のまともなcore profileの本が出るのか
0876デフォルトの名無しさん
2012/10/07(日) 20:15:44.08段階の頁に記述があるGLTools.aが見つかりません。
筆者のサイトのソースにも入っていなかったので困っています。
よろしければ助言ください。
0877デフォルトの名無しさん
2012/10/07(日) 20:20:29.540878デフォルトの名無しさん
2012/10/07(日) 23:14:33.07おまい頭良いな
>>876
http://www.opengl.org/sdk/docs/books/SuperBible/
0879デフォルトの名無しさん
2012/10/08(月) 11:28:21.080880デフォルトの名無しさん
2012/10/09(火) 18:43:26.83UV指定したテクスチャの一部を1枚のポリゴンの中でループするのはどうやったらいいの?
0881デフォルトの名無しさん
2012/10/09(火) 18:54:47.700882デフォルトの名無しさん
2012/10/09(火) 19:02:30.20だがそれは1枚もののテクスチャじゃないとダメでは?
1枚のテクスチャの中に複数のパターンが入ってて,その1つをループさせたいのです
0883デフォルトの名無しさん
2012/10/09(火) 19:27:22.20誰もが「それを早く言え」と言いたくなるんじゃないかな
フラグメントシェーダーで、
テクスチャ座標に対して mod を計算するとかじゃダメ?
0884デフォルトの名無しさん
2012/10/09(火) 19:53:12.270885デフォルトの名無しさん
2012/10/09(火) 20:03:29.230886デフォルトの名無しさん
2012/10/09(火) 20:18:36.08ループってそっちか
0887デフォルトの名無しさん
2012/10/09(火) 21:12:49.160888デフォルトの名無しさん
2012/10/09(火) 21:25:11.890889デフォルトの名無しさん
2012/10/09(火) 21:27:12.580890デフォルトの名無しさん
2012/10/09(火) 21:27:28.040891デフォルトの名無しさん
2012/10/09(火) 21:30:09.850892882
2012/10/09(火) 21:39:02.53889の認識が正解
ループっていうから悪かった GL_REPEATしたいってことです
0893デフォルトの名無しさん
2012/10/09(火) 21:41:46.12それなら前の人が言ってるようにシェーダを使いフレーム数渡してサンプリングの位置変えるだけ
0894882
2012/10/09(火) 22:24:54.18できました
そういう事だったのね
ありがとねー 皆
0895デフォルトの名無しさん
2012/10/10(水) 03:28:16.750896デフォルトの名無しさん
2012/10/14(日) 13:37:42.600897デフォルトの名無しさん
2012/10/15(月) 01:00:43.90リソースはjava側の専用APIでしか読めないからテクスチャもjavaで読むしかない
1MBの画像をたった1枚読込→GPU転送してから破棄するだけで15msもGCで止められてしまう
苦肉の策で初回起動時に外部にコピーして保存してまって直接操作してる人もいるけど管理の面で嫌だし
0898デフォルトの名無しさん
2012/10/15(月) 07:09:36.880899デフォルトの名無しさん
2012/10/15(月) 08:01:26.790900デフォルトの名無しさん
2012/10/15(月) 18:03:21.750901デフォルトの名無しさん
2012/10/15(月) 18:17:44.26firefoxが証明している(キリッ)
0902デフォルトの名無しさん
2012/10/15(月) 22:49:27.15ttp://www.amazon.co.jp/dp/4862461891
0903デフォルトの名無しさん
2012/10/16(火) 01:54:39.06Javaのメモリ確保とGCが暴れている時間が0.15秒
C++側へのデータ転送と展開、GPUへの転送その他で計0.09秒
ファイルの読込自体は0.06秒程だった
内蔵ストレージは思いのほか早かった、やはりjavaの弊害が半端ない
0904デフォルトの名無しさん
2012/10/16(火) 02:25:21.07搭載メモリ量の制限からしょうがないかと。
0905デフォルトの名無しさん
2012/10/16(火) 02:32:37.01結局パフォーマンスつかGCの話題しか出ないし、OpenGLの話か?とちょっと思ったもので。解決策もNDK以外ないよね。間の技術でrenderScriptはあるけど、スレ違いなのは自明だし。
いやもちろんあえてandroid+javaで、という需要があるようなら黙ります。過疎気味だしスレ分ける必要性ないじゃんとかもあるだろし
0906デフォルトの名無しさん
2012/10/16(火) 11:01:17.26とは言え、OpenGLのネタがないのも事実だけれど。
だからと言って、QGLWidgetのネタ出したら元の木阿弥だしw
0907デフォルトの名無しさん
2012/10/20(土) 13:12:07.340908デフォルトの名無しさん
2012/10/20(土) 13:14:28.83テクスチャーをCPU側にコピーする方法を教えてください
glMapBufferはテクスチャーオブジェクトには使えませんでした。
テクスチャー画像を確認する簡単な方法がない気がするのですが・・・
0909デフォルトの名無しさん
2012/10/20(土) 17:00:52.320910デフォルトの名無しさん
2012/10/20(土) 17:02:48.47画面に表示したら?
0911デフォルトの名無しさん
2012/10/20(土) 18:18:55.21glGetTexImage
0912908
2012/10/22(月) 11:56:54.38できたぞ。glGetTexImage()とか存在自体知らんかった。ありがとう
1枚目がカラーバッファーで2枚目がデプスバッファー
http://uploda.cc/img/img5084b2e7426bf.png
http://uploda.cc/img/img5084b2ed960cd.png
>>909
馬鹿には無理という事は、できた俺は馬鹿じゃないと言うことだな!
この調子でDeferred Shadingまで実装するぜ
後々の事も考えるとRGBAf32で出力したいのでまずそれを実装しないと
0913デフォルトの名無しさん
2012/10/22(月) 12:48:09.15出来なかったら馬鹿だけど、出来たからと言って馬鹿じゃないとは限らない。
という解釈が正しい論理。
0914デフォルトの名無しさん
2012/10/22(月) 13:10:29.54達成できないことを意味します。
よって達成できた時点で馬鹿ではあり得ません。
しかし人間は常に変化するものです。
達成できた後に馬鹿になる可能性もあり
今のあなたが馬鹿ではないことを保証するものではありません。
0915デフォルトの名無しさん
2012/10/22(月) 13:21:48.62無理ではなかった時点で
馬鹿ではないことになると思う
もし無理ではなかったのに馬鹿だったら
そもそも馬鹿には無理と矛盾する
0916デフォルトの名無しさん
2012/10/22(月) 13:24:14.320917デフォルトの名無しさん
2012/10/22(月) 13:24:57.08わかってないのは >913 だけだろ
0918デフォルトの名無しさん
2012/10/22(月) 15:59:19.25ある命題が真のときその対偶が真になる、というのは古典論理でしか通用しないルールだしね
0919デフォルトの名無しさん
2012/10/22(月) 16:54:55.500920デフォルトの名無しさん
2012/10/22(月) 17:41:48.060921デフォルトの名無しさん
2012/10/22(月) 19:23:33.320922デフォルトの名無しさん
2012/10/22(月) 19:45:17.830923デフォルトの名無しさん
2012/10/22(月) 20:37:00.03それはそうとdeferred shadingでMSAAとか綺麗にできるのかな
検索したら帯域が超厳しいからやめとけって書いてあるが
ttp://www.opengl.org/discussion_boards/showthread.php/178037-MSAA-with-Deferred-shading
0924デフォルトの名無しさん
2012/10/30(火) 02:19:36.500925デフォルトの名無しさん
2012/10/31(水) 01:04:37.90ポスト処理のAAだと細かいジオメトリがうまく解決できないから、ある程度のMSAAとシェーダによるリゾルブの組み合わせが良いように思う。
http://mynameismjp.wordpress.com/2012/10/28/msaa-resolve-filters/
0926デフォルトの名無しさん
2012/11/03(土) 20:32:11.92freeglut+gluiはファイルダイアログがないし
FLTKは自分でOpenGLのcontext作らないとマルチサンプルできないとかでクロスプラットフォームじゃないし
QtはVS2012のx64で使おうとしたらQt Creatorがnmakeやらclやらを見つけられずコンパイルできないし
0927デフォルトの名無しさん
2012/11/03(土) 21:20:19.940928デフォルトの名無しさん
2012/11/03(土) 21:33:44.15x86にすると見つけてくれるのが謎だ
64bit対応はまだ中途半端ってことなのかもしれないな
ソース見れば分かりそうだが分かったところで直せん
qmake -tp vcでVC用のプロジェクトファイル作って
Qt Creatorはui弄る時だけ使おうとか考えたが
コンパイルが失敗するんでなえなえだわ
VS開発者コンソールからnmakeすればコンパイル通るんだが
実行ファイルがあればデバッグ実行普通にできてたし
我慢すれば問題ないレベルだったかもしれんな
イラッときて全削除しなければ良かった
0929デフォルトの名無しさん
2012/11/04(日) 00:18:20.64ここでそれぞれのコンパイラ使うための環境変数を設定するためにbatファイルの起動コマンドが載ってるんだが
vcvarsall.batの引数がx64とかamd64とかが自動検出されてるけど、引数はx86_amd64じゃないとダメだ
x86でコンパイラが動くのにx64で動かないのはこういう理由だったわけだ
というわけで手動で追加したらコンパイル通るようになった
追加の手順は
Qt Creatorでx64の設定をCloneしてからNameを分かりやすく変更して
%USERPROFILE%AppData/Roaming/Nokia/qtcreator/toolchain.xmlの中をその名前で検索して
<value type="QString" key="ProjectExplorer.MsvcToolChain.VarsBatArg">x64</value>
↑を↓に変更でおk
<value type="QString" key="ProjectExplorer.MsvcToolChain.VarsBatArg">x86_amd64</value>
激しくスレ違いだしニッチすぎて参考にする人がいるかどうかは知らん
0930デフォルトの名無しさん
2012/11/04(日) 01:08:56.500931デフォルトの名無しさん
2012/11/04(日) 09:39:32.550932デフォルトの名無しさん
2012/11/06(火) 23:25:35.19ttp://www1.axfc.net/uploader/so/2665805.zip
三角形をくるくる回すだけのプログラムです
GLThread::run()が描画ループになってるのでUIがいらないならここだけ弄ればおk
まあQt使っててUIいらねえなんてことは絶対ないので
一応UIから回転を止めたり再開したりする機能も付けてみた
bool変数に値セットするだけだから排他制御要らないけど
ちゃんとやるならスレッドセーフなQueueを使ってイベント処理したり
排他制御したりする必要があるだろう
QtはUIスレッドとOpenGLのスレッドを分離できるのが良いな
タイトルバー掴んでも描画が止まらないのが良い
wgl使う場合と同等の自由度もあるのかな
Qt CreatorがVC#とかVBくらいの出来なら最強なんだけどなあ
0933デフォルトの名無しさん
2012/11/07(水) 01:58:03.47VSのクオリティはもはやMS最後の綱
0934デフォルトの名無しさん
2012/11/08(木) 00:32:26.140935デフォルトの名無しさん
2012/11/08(木) 01:15:47.74LGPLについてぐぐっておいで
0936デフォルトの名無しさん
2012/11/08(木) 02:25:35.55なんでよく分からないままに書き散らすんだろ
殺害予告する馬鹿とは社会影響度が違うとはいえ、同レベルで理解できぬ
0937デフォルトの名無しさん
2012/11/08(木) 07:23:06.56LGPLのライブラリを使って作られたアプリとかは、
そのアプリ側のソースは公開する必要はないよ。
ただ、アプリ側のリバースエンジニアリングを禁止してはダメだけど。
0938デフォルトの名無しさん
2012/11/08(木) 11:10:43.30いつ頃だったか、C++Builder からの乗り換え先を探してた時には無かったな。
0939デフォルトの名無しさん
2012/11/08(木) 15:35:55.48GLSLの中でブレイクポイントをはってラインでバッグとか
Uniform変数の値を確認とかってできるのでしょうか?
環境はWindows7でVisualStudio2010です。
AMDかNVIDIAのGPUでお願いします
可能ならC#/.NetアプリからGLSLの値だけでも確認できると嬉しいです
バグが取れません・・・
0940デフォルトの名無しさん
2012/11/08(木) 15:42:34.820941939
2012/11/08(木) 16:42:46.90やりたいことはシェーダーが走った時のUniform変数とAttribute変数です
ライン実行はなくてもいいです
0942デフォルトの名無しさん
2012/11/08(木) 16:52:37.490943デフォルトの名無しさん
2012/11/08(木) 19:15:54.250944デフォルトの名無しさん
2012/11/08(木) 19:26:48.670945デフォルトの名無しさん
2012/11/08(木) 20:12:24.49バッファオブジェクトの中身とかが見れてなにこれすごいって思ったわ
つまりin変数の中身は見れますな
uniform変数も見れるんじゃね
ステップ実行ができるかどうかは分からなかった
あと整数のin変数はglVertexAttrib「I」Pointerじゃないとダメですよね
整数を入力するサンプルとか見たことないので超ハマりましたわ
0946デフォルトの名無しさん
2012/11/09(金) 09:45:09.130947デフォルトの名無しさん
2012/11/10(土) 21:37:33.520948デフォルトの名無しさん
2012/11/10(土) 23:25:08.850949デフォルトの名無しさん
2012/11/11(日) 17:08:05.860950デフォルトの名無しさん
2012/11/11(日) 18:37:10.31じゃあ、お前は書かないほうがイイネ!
0951デフォルトの名無しさん
2012/11/11(日) 22:53:14.230952デフォルトの名無しさん
2012/11/12(月) 18:12:55.430953デフォルトの名無しさん
2012/11/13(火) 09:28:11.18いろいろ考えさせられるが
それをレスると、都合の良い後付けレスさせられるから止めとこ
0954デフォルトの名無しさん
2012/11/21(水) 09:57:52.42XCode(=gDebugger)もNsightもGLSLのシェーダーデバッグはできない
つまりブレークポイントを張って変数の値を確認とかはできない
CPU側のAPIレベルで止めてOpenGLコマンドのトレース(呼び出し履歴)の確認や
テクスチャーやバッファーオブジェクトの確認などはできる
ただシェーダー全盛の時代にAPIレベルでデバッグできた所であまり有益ではない・・・
というわけで今でも地道にテクスチャーにオフラインレンダリングして値を確認するしかない
OpenCLがカーネルデバッグできるんだからOpenGL(GLSL)もできそうなものだが・・・
0955デフォルトの名無しさん
2012/11/21(水) 10:30:59.420956デフォルトの名無しさん
2012/11/21(水) 12:44:58.18954も日本人だろうからOpenGLは使えないのだろう
0957デフォルトの名無しさん
2012/11/21(水) 15:34:15.93満足して終わりの人が多い
0958デフォルトの名無しさん
2012/11/23(金) 02:18:25.060959デフォルトの名無しさん
2012/11/23(金) 07:20:20.02OpenGLじゃないと動かない
あとゲームコンソールはMS以外はOpenGLかOpenGL風のAPIになってるね
日本で箱がほぼ終了してることとPCゲー市場がそもそも死滅してることを考えられる奴なら
Direct3Dなんてオワコンにしがみついたままでいるとは思えないんだけど
0960デフォルトの名無しさん
2012/11/23(金) 09:00:58.62マルチプラットフォーム前提で開発しないといけなかったりするのでopenGL
0961デフォルトの名無しさん
2012/11/23(金) 09:52:59.41間違っては無いが、正しくは無いな。
あんま、薄識広げんなよ
0962デフォルトの名無しさん
2012/11/23(金) 09:56:08.880963デフォルトの名無しさん
2012/11/23(金) 10:04:07.520964デフォルトの名無しさん
2012/11/23(金) 18:26:16.390965デフォルトの名無しさん
2012/11/24(土) 10:18:58.13話をややこしくするな
0966デフォルトの名無しさん
2012/11/24(土) 11:42:07.94透過部分の透過を有効にしたい場合
テクスチャとテクスチャオブジェクトの関連付け(GLUtils.texImage2D()まで)
をしてからglBlendFuncを呼ぶか関連付をする前に呼ぶかどちらにしないと有効にならないとかありますか?
0967デフォルトの名無しさん
2012/11/24(土) 12:00:19.590968デフォルトの名無しさん
2012/11/24(土) 12:32:52.26すみません言い方を間違えました。
glEnable(GL10.GL_BLEND)
glBlendFunc(GL10.GL_SRC_ALPHA,GL10.GL_ONE_MINUS_SRC_ALPHA)
glDisable(GL10.GL_BLEND)
この3つを使って編集して画像に透過を加えた部分がちゃんと透過されるようにしたいです。
これのglBlendFunc()の入れる位置を教えて欲しいです。
0969デフォルトの名無しさん
2012/11/24(土) 13:34:13.450970デフォルトの名無しさん
2012/11/24(土) 15:15:44.60教えて欲しいのはglBlendFunc()の位置です
0971デフォルトの名無しさん
2012/11/24(土) 15:29:55.170972デフォルトの名無しさん
2012/11/24(土) 15:31:44.990973デフォルトの名無しさん
2012/11/24(土) 23:36:22.17OpenGLでは直接文字表示ができないらしいので文字を画像として
貼りたいのですがそのプログラム貼り付けます。
テクスチャとオブジェクトの関連付のみでほかは省略します。
長いので2回に分けて書きます。
gl10.glClear(GL10.GL_COLOR_BUFFER_BIT); //GL10のインスタンスのgl10は初期化済み
gl10.glEnable(GL10.GL_TEXTURE_2D);
gl10.glEnable(GL10.GL_BLEND);
gl10.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
int[] textureIds=new int[1];
gl10.glGenTextures(1,textureIds,0);
int textureId=textureIds[0];
Bitmap bitmap=Bitmap.createBitmap(512,512,Bitmap.Config.ARGB_8888);
Canvas canvas=new Canvas(bitmap);
canvas.drawARGB(0, 0, 0, 0); //文字の画像の背景を透明にする
Paint paint=new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(30);
canvas.drawText(text,canvas.getWidth()/2,170,paint);
0974デフォルトの名無しさん
2012/11/24(土) 23:37:25.72GLUtils.texImage2D(GL10.GL_TEXTURE_2D,0,bitmap,0);
gl10.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_NEAREST);
gl10.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MAG_FILTER,GL10.GL_NEAREST);
bitmap.recycle();
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
gl10.glBindTexture(GL10.GL_TEXTURE_2D,textureId);
gl10.glColor4f(0,0,0,alpha); //alphaは時間が経つたびに減っていく
//これよりあとは描画作業
最後のglColor4fは文字の画像全体を最初は透明にし時間が経つたびにalphaを減らしていき文字が浮かび上がるような感じにするためです。
このプログラムだとこの画像を描画した部分だけ白く表示されます。
どのへんがあやしいですか?
自分的にはglcolor4f()かdrawARGB()あたりだと思うのですが。
0975デフォルトの名無しさん
2012/11/25(日) 00:00:23.860976デフォルトの名無しさん
2012/11/25(日) 00:07:33.200977デフォルトの名無しさん
2012/11/25(日) 00:51:58.730978デフォルトの名無しさん
2012/11/25(日) 16:12:47.840979デフォルトの名無しさん
2012/11/25(日) 23:05:47.56鏡見てこいよww
0980デフォルトの名無しさん
2012/11/26(月) 06:31:41.83この板ではこのスレしか見ないのか?
どんだけ悔しかったのか知らないが、アチコチに適当に投稿される煽りにイチイチ反応するなよ。
0981デフォルトの名無しさん
2012/11/26(月) 21:35:38.60テクスチャーをinternalFormat=RGBA16ui, format=RgbaIntegerで作って、
シェーダーからivec4=0,1,2,3で出力してglGetTexでformat=RgbaInteger, type=UnsigndShortで取得すると
0,1,2,3が0,65535,65535,65535で取得されます
(整数型でない)小数型のフレームバッファーと同様に0〜1が0〜65535に内部変換されているっぽいです
シェーダーで出力した整数値をそのままCPU側で取得するにはどうすればいいのでしょうか
0982デフォルトの名無しさん
2012/11/26(月) 22:06:33.271/65535を掛けろ
0983デフォルトの名無しさん
2012/11/26(月) 22:23:52.18この板ではこのスレしか見ないのか?
「馬鹿には無理」には「自己紹介乙」で返すのが挨拶だろ
挨拶の出来ない人間にろくな人間はいないってな
0984デフォルトの名無しさん
2012/11/27(火) 08:06:30.060985デフォルトの名無しさん
2012/11/27(火) 08:12:13.32何スクリプトに反応してんのwww と煽られたのがそんなに悔しいのか。
0986デフォルトの名無しさん
2012/11/27(火) 10:34:52.020987981
2012/11/27(火) 11:23:19.23そうじゃなくてw
ピクセルシェーダーの出力でivec4を指定した時の値の範囲は
整数型のテクスチャーをバインドした時は0〜1ではなく0〜INT_MAXを期待したのに
そうなってないのは仕様書と照らし合わせてどうなのかと
仕様書のどこを呼んでも該当する項目が見つかりません。
これは仕様的にできないのか単に見落としているだけなのか???
0988デフォルトの名無しさん
2012/11/27(火) 11:29:38.99お前が1コンポーネント辺り16ビット指定してるんじゃん。
0989デフォルトの名無しさん
2012/11/27(火) 13:10:24.380990デフォルトの名無しさん
2012/11/27(火) 17:21:38.73「OpenGLは視点の位置は原点(0,0,0)に固定されていて、注視点もZ軸マイナス方向に固定されています。」
「そのため視点と注視点を決定するのではなく、描画するオブジェクト全体をマトリクス変換によって移動させたり、
回転させたりして視野を設定します。」
と書いてあったのですが、初心者ながらこれはおかしいんじゃないか?…と感じました。
これって本当でしょうか?
0991デフォルトの名無しさん
2012/11/27(火) 17:35:41.920992デフォルトの名無しさん
2012/11/27(火) 17:38:03.42オブジェクトを描画したあとで原点を移動するんです
0993デフォルトの名無しさん
2012/11/27(火) 17:50:49.51カメラの位置や方向を決定するAPIは用意してないけど、
数学的にはオブジェクト全体に変換行列適応するのと同じだから問題ない。
カメラの位置や方向をシミュレートする機能が必要なら自分で作れ
というスタンスです。
0994デフォルトの名無しさん
2012/11/27(火) 17:54:03.52これは意味不明だ
0995デフォルトの名無しさん
2012/11/27(火) 18:35:57.94ただglRotatef()、glTranslatef()をつかったりするよりは
ググった時に見つけたgluLookAt()を使ったほうが便利そうなんですが
どっちがいいとかありますか?
0996デフォルトの名無しさん
2012/11/27(火) 18:45:38.280997デフォルトの名無しさん
2012/11/27(火) 18:59:26.55自分の意図した位置に描画できない人間をそこら中で見かけるのが何とも。
0998デフォルトの名無しさん
2012/11/27(火) 21:56:03.65整数の場合は0〜1にマッピングされる
だから、0〜255な8bitのテクスチャもシェーダの中では0〜1の値になる
0999デフォルトの名無しさん
2012/11/27(火) 22:46:04.001000デフォルトの名無しさん
2012/11/27(火) 22:47:06.91( ) _n_
/ つ 終了|
〜′ /´  ̄|| ̄
∪∪ ||_ε3
゙゙゙゙
長い間ご声援ありがとうございました。
OpenGLスレはこれにて終了です。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。