OpenGLスレ Part21
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2014/09/01(月) 23:32:38.44ID:dTIHrEOX現在の最新バージョンは4.5
http://www.opengl.org/
http://www.opengl.org/wiki/Main_Page
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・GLFW より新しいマルチプラットフォームなツールキット
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
・OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ
・OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe: http://nehe.gamedev.net/
Tutorials for OpenGL 3.3 and later http://www.opengl-tutorial.org/
Learning Modern 3D Graphics Programming http://www.arcsynthesis.org/gltut/
== 前スレ ==
OpenGLスレ Part20
http://peace.2ch.net/test/read.cgi/tech/1379391344/
== 関連スレ ==
【O3D】HTML5用 3D API WebGL 【Canvas:3D】
http://toro.2ch.net/test/read.cgi/tech/1308761577/
OpenGL 2.0 専用スレ
http://peace.2ch.net/test/read.cgi/tech/1126268759/
0002デフォルトの名無しさん
2014/09/01(月) 23:33:08.78ID:dTIHrEOX-- CG入門 --
OpenGL以前の普遍的なCGの概念。
CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。
・コンピュータグラフィックス (CG-ARTS協会)
・ビジュアル情報処理 (CG-ARTS協会)
・ディジタル映像表現 (CG-ARTS協会)
・ゲーム制作者になるための3Dグラフィックス技術
・ビジュアルコンピューティング 3次元CGによる画像生成
-- 初心者用 --
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
・OpenGL ES 2.0 プログラミングガイド
-- 上級者用 --
・OpenGL Shading Language (橙本)
・Shader Xシリーズ
・GPU Gemsシリーズ
・GPU Proシリーズ
0003デフォルトの名無しさん
2014/09/01(月) 23:34:29.38ID:dTIHrEOX-- 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デフォルトの名無しさん
2014/09/01(月) 23:39:05.02ID:AyKprSXJ次スレ立ってると勘違いして埋めてしまったすまんかった
0005デフォルトの名無しさん
2014/09/01(月) 23:43:16.68ID:dTIHrEOX-- 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シリーズ
0006デフォルトの名無しさん
2014/09/01(月) 23:44:29.33ID:dTIHrEOX0007デフォルトの名無しさん
2014/09/01(月) 23:45:21.02ID:dTIHrEOX-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム
-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門
-- 過去の書籍 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)
== チュートリアルサイト2 ==
OpenGL Step By Step: http://ogldev.atspace.co.uk/
OpenGL Samples Pack: http://ogl-samples.g-truc.net/
0008デフォルトの名無しさん
2014/09/01(月) 23:46:11.10ID:dTIHrEOXorz
0009デフォルトの名無しさん
2014/09/02(火) 00:36:47.21ID:fx+cCro80010デフォルトの名無しさん
2014/09/02(火) 03:20:29.60ID:BPdDvDlJ0011デフォルトの名無しさん
2014/09/02(火) 09:45:25.69ID:yjXIz5owシェーダに渡すmat4行列は列オーダーを一次配列にした状態で渡すのでしょうか?
たとえば、OpenGLのx軸の回転行列は、
1 0 0 0
0 cosθ -sinθ 0
0 sin θ cosθ 0
0 0 0 1
なので、
[1, 0, 0, 0, 0, cosθ, -sinθ, 0, 0, sinθ, cosθ, 0, 0, 0, 0, 1]
と詰めて渡すのでしょうか?
0012デフォルトの名無しさん
2014/09/02(火) 11:24:13.59ID:2uuiJteZ> [1, 0, 0, 0, 0, cosθ, -sinθ, 0, 0, sinθ, cosθ, 0, 0, 0, 0, 1]
これは行オーダーだ
0013デフォルトの名無しさん
2014/09/02(火) 11:55:20.45ID:yjXIz5ow1 0 0 0
0 cosθ -sinθ 0
0 sin θ cosθ 0
0 0 0 1
が既に列オーダーの並びなのに、それをまた転置させて配列に入れるんですか?
0014デフォルトの名無しさん
2014/09/02(火) 12:16:28.91ID:2uuiJteZ間違ってるって言ってんのに何で質問で返してんだよ
OpenGLは列オーダーのベクトルで右から掛ける事が前提なのを踏まて
理解出来るまで手で計算してみろよ
0015デフォルトの名無しさん
2014/09/02(火) 12:25:56.67ID:0AbSN9sbそれで合ってる。
0016デフォルトの名無しさん
2014/09/02(火) 12:27:31.46ID:0AbSN9sb[1, 0, 0, 0, 0, cosθ, sinθ, 0, 0, -sinθ, cosθ, 0, 0, 0, 0, 1]
これが正解。
a1 a4 a8 a12
a2 a5 a9 a13
a3 a6 a10 a14
a4 a7 a11 a15
0017デフォルトの名無しさん
2014/09/02(火) 12:28:57.79ID:IhQJ1AsB0018デフォルトの名無しさん
2014/09/02(火) 12:41:03.00ID:yjXIz5ow頂点(1, 2, 3)をx方向に2移動だと
1 0 0 2 1 3
0 1 0 0 x 2 = 2
0 0 1 0 3 3
0 0 0 1 1 1
で、頂点シェーダ内でも MMatrix x Position の順で計算しているから、
この通り配列に入れるということかと思っていたのですが、
OpenGLでは行列配列を渡す時、本来渡したい行列の並びを転置して渡すということなのでしょうか。
0019デフォルトの名無しさん
2014/09/02(火) 12:52:20.45ID:IhQJ1AsB本来渡したい行列をそのままなにもせずに渡すんだよ
それが[ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 1] なの
CPUでもGPUでもこの並びは変わりません
0020デフォルトの名無しさん
2014/09/02(火) 12:58:35.47ID:yjXIz5ow1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
の順だと思ってたのですが、OpenGLは
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
の順で取っていくんですね。
0021デフォルトの名無しさん
2014/09/02(火) 13:14:45.82ID:p3UmGF9E0022デフォルトの名無しさん
2014/09/02(火) 13:48:53.45ID:2uuiJteZ教えてやるよ
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
X Y Z W
軸 軸 軸 軸 (軸は普通単位ベクトルだ)
元の座標系から見た変換後の座標系を表わしてるんだよ
Y軸(0, 1, 0, 0)→(0, cosθ, sinθ, 0)
列オーダーだから(1, 2, 3, 4)と並んでる事に意味があり、(1, 5…)なんて
並べても何の意味もないんだよ
列だ行だ言ってる奴は変換行列が単に16個数字が並んでるとしか考えてないから
そういう発想になる
0023デフォルトの名無しさん
2014/09/02(火) 16:50:45.60ID:Exowytj00024デフォルトの名無しさん
2014/09/02(火) 20:41:25.23ID:9UY20/I7数学の教科書あたりじゃ>>18みたいな表記が一般的だがOpenGLだと座標を行ベクトルに並べたいから変換行列は転置して座標の右からかけるんだよ
0025デフォルトの名無しさん
2014/09/02(火) 21:16:46.48ID:avLIA0Khfor (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
って書いて遅いって文句を言っている奴を思い出した。
0026デフォルトの名無しさん
2014/09/02(火) 22:45:05.66ID:KX7+XVgu関係あるだろ
さらっと嘘言うなよ
0027デフォルトの名無しさん
2014/09/03(水) 00:20:58.48ID:U3mBpUpEあと前スレでDirectXの方が自然とか言ってた人は単に慣れの問題だと思う。
OpenGLばっかり使ってたらオブジェクトを移動して回転してスケールって並びがプログラミング的にも不自然だとは思わないもの。
0028デフォルトの名無しさん
2014/09/03(水) 10:41:14.87ID:148CJHV3じゃあ、DirectXの行列と、OpenGLの行列が、転置でかける順番が逆なのはなんなの?
0029デフォルトの名無しさん
2014/09/03(水) 11:07:04.91ID:ol9sgsE7|v'> = M|v>
自然なことだ。
0030デフォルトの名無しさん
2014/09/03(水) 11:40:39.94ID:4x/mCrGUたとえば>>18の例だと、配列Mには [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 1 ]、配列vには[1, 2, 3, 1]と入っている
これを列オーダーと解釈すれば
1 0 0 2 1 3
0 1 0 0 x 2 = 2
0 0 1 0 3 3
0 0 0 1 1 1
となるが、これを行オーダーと解釈すると
1 0 0 0
1 2 3 1 x 0 1 0 0 = 3 2 3 1
0 0 1 0
2 0 0 1
となる
計算結果はどちらも変わらないし、計算結果の配列も[ 3 2 3 1 ]で同じになる
単に配列のオーダー解釈だけで、メモリ上で転置はしていない
0031デフォルトの名無しさん
2014/09/03(水) 17:12:58.80ID:148CJHV3その結果が、OpenGLの行列形式になるように、一次配列を入れて、OpenGL用に計算順序を合わせれば
正しく変換されるってことですね。
やっと謎が解けた!ありがとうございます!
0032デフォルトの名無しさん
2014/09/03(水) 17:32:01.47ID:4k232O8Q1.0 では glNormal3fv というメソッドで一発で設定できるみたいなんですが、2.0にそういうスマートな方法はないんでしょうか
0033デフォルトの名無しさん
2014/09/04(木) 11:54:05.26ID:5Wa3U2YVオフスクリーンレンダリング等の ES2.0 でしか実現できない機能のために 1.0 から移行したんですが、シェーディングやライティングに関しては固定機能のもので十分なんです
どこかで固定機能を再現したようなシェーダープログラムが公開されていたりしないでしょうか
0034デフォルトの名無しさん
2014/09/04(木) 12:49:36.61ID:a8LqbcNnライトはディレクショナル1つのみでベクトルは固定
スペキュラライトなし
ライトのアンビエント、ディフューズ色は白固定
マテリアルもアンビエント色とディフューズ色のみ
テクスチャ使用不可のグーローシェーダで
モデルビュー行列はES1と同じく統合型
とかな
「ディフューズライト 計算」とかでググったら式は出てくるんだからさ
0035デフォルトの名無しさん
2014/09/04(木) 13:28:35.10ID:5Wa3U2YV1.0で十分というか必要十分という感じだったんです。なので出来るだけ機能を再現したかったんですが、やっぱり地道にやるしかないですか
これ作った人は本当に気がきかないし絶対にもてないですね
0036デフォルトの名無しさん
2014/09/04(木) 13:51:25.33ID:a8LqbcNn地道にっつーか…
上に書いた内容に手間取るのを放置するようなら、いずれ他のシェーダで詰まるのは目に見えてる
なら今の内に覚えて、他のシェーダで詰まる部分を最小限にしとけってことさ
0037デフォルトの名無しさん
2014/09/04(木) 14:10:39.04ID:5Wa3U2YVそうですね
この機会にボンヤリとしか理解してなかった計算方法なんかも勉強しようと思います
0038デフォルトの名無しさん
2014/09/06(土) 00:47:59.87ID:UzdO5T9Z透明にしたらrgbの値まで何故か0,0,0になってるみたいなんですが
0039デフォルトの名無しさん
2014/09/06(土) 01:29:36.52ID:+qWhcUeHDirect3DとOpenGLの行列変換
ttp://junosoft.sblo.jp/article/81557960.html
004038
2014/09/06(土) 08:10:32.60ID:UzdO5T9Zjavaだとアルファを乗算して読み込まれるみたいですクソが
0041デフォルトの名無しさん
2014/09/06(土) 08:12:02.41ID:KnXqXYAB0042デフォルトの名無しさん
2014/09/06(土) 11:14:13.84ID:UzdO5T9ZあとJavaとかいう問題じゃなくて GLUtils.texImage2D でビットマップを読み込むとアルファ乗算されてしまうようです
なので自前でアルファ補完テクスチャを作らなければ駄目みたいなんですが、環境によってエンディアン?が違うとピクセルフォーマットも変わるみたいでまた詰まりました・・・
0043デフォルトの名無しさん
2014/09/06(土) 12:33:23.51ID:oPXlX98A高速化の為に先に掛けておく機能だ
確か有効無効が出来るはずだけよくわからん
0044デフォルトの名無しさん
2014/09/06(土) 12:47:00.30ID:UzdO5T9Zまさにそれです
なんか素敵機能らしいんですが今はすごい邪魔です
0045デフォルトの名無しさん
2014/09/06(土) 13:16:58.79ID:UzdO5T9Z法線マップのアルファ値に高さ情報を持たせるというのは、もとの法線マップ画像のアルファ値を使用するという意味ではなく
作成した法線マップテクスチャのアルファ値に別に読み込んだバンプマップ画像の値を入れてやるという意味でした
おさわがせしました
0046デフォルトの名無しさん
2014/09/07(日) 01:43:49.17ID:ugJ9wSXj0047デフォルトの名無しさん
2014/09/07(日) 03:25:23.45ID:RGNSEmyL同じじゃないです
たとえば点光源の場合だったりポリゴンの頂点の法線が違う場合など、異なる結果になります
0048デフォルトの名無しさん
2014/09/07(日) 10:24:28.44ID:ugJ9wSXjたしかに点光源を近づけてみたらぜんぜん違いました
こんな簡単な方法で高速化できるなら他の誰かがとっくに思いついてるはずですね・・・
0049デフォルトの名無しさん
2014/09/08(月) 16:42:10.06ID:tIwbT5+z0050デフォルトの名無しさん
2014/09/08(月) 16:43:24.29ID:RKyL0kAf0051デフォルトの名無しさん
2014/09/09(火) 09:15:39.14ID:x1buGaVH0052デフォルトの名無しさん
2014/09/09(火) 12:35:48.78ID:SImOqCleあーだこーだいちいち説教くせえな・・・
0053デフォルトの名無しさん
2014/09/09(火) 12:41:08.68ID:7jCsLtro0054デフォルトの名無しさん
2014/09/09(火) 16:13:29.01ID:w4lCWRfu0055デフォルトの名無しさん
2014/09/09(火) 17:13:06.82ID:ftFDwVN30056デフォルトの名無しさん
2014/09/11(木) 10:50:29.53ID:EZFPRwJqコミュ力と運だけ
0057デフォルトの名無しさん
2014/09/13(土) 13:08:53.48ID:DZXhZ56u_CrtIsValidHeapPointerでブレークポイントが発生します
前は普通に動いていました
どういう条件で起こるのか、分かる方いますか?
0058デフォルトの名無しさん
2014/09/15(月) 08:11:53.64ID:RvS3WWua少なくともひとつのピクセルでアルファ>0か、全てのピクセルでアルファ=0かを判別する
方法ってありますか?
今考えられるのはglReadPixelで一旦読み込んで全ピクセルのアルファチェックをするくらいで、
もっと早い方法があれば、教えてください
0059デフォルトの名無しさん
2014/09/15(月) 10:36:05.85ID:5MB81GhoFBOにレンダリングする時、フラグメントシェーダーでアルファが0の場合はdiscardするとかしないとダメかもしれないけど
0060デフォルトの名無しさん
2014/09/15(月) 10:41:45.69ID:9eZiuUcq0061デフォルトの名無しさん
2014/09/15(月) 11:11:40.65ID:RvS3WWua初めて聞く単語です、勉強してまいります
>>60
Frame Buffer Objectです
0062デフォルトの名無しさん
2014/09/15(月) 11:22:47.02ID:alsQLVs9バカ
おたんこなす
の略
0063デフォルトの名無しさん
2014/09/15(月) 11:23:25.75ID:alsQLVs9ふざけんな
バカ
おたんこなす
の略
0065デフォルトの名無しさん
2014/09/15(月) 21:48:50.63ID:lXZtfDF6速くなるかどうかは環境次第だけど、レンダーテクスチャでピンポンしたらいいんじゃないの。
256ピクセルとか一度に扱うシェーダ書いてさ。
これだけで伝わるといいのだが。具体的な話は面倒くさい。
0066デフォルトの名無しさん
2014/09/16(火) 22:31:06.24ID:c3455q6lhttp://msdn.microsoft.com/ja-jp/library/cc372887.aspx
glFrustum
http://msdn.microsoft.com/ja-jp/library/windows/desktop/dd373537(v=vs.85).aspx
glFrustumでえられる行列についてなんですが、上記サイトを見比べたときに、
転置関係であることと右手系、左手系であること、left=-right, bottom=-topであることをを考慮したとしても、
OpenGL(下サイト)の行列Cの分子が far+nearになっているのに対し、Direct3D(上サイト)の3行3列目の式の分子は far だけになっていますが、これはどうしてなのでしょうか。
0067デフォルトの名無しさん
2014/09/17(水) 00:33:38.22ID:zlsxT/ni変換後のz/wを0...1 にするか -1...1にするかの違い
0068デフォルトの名無しさん
2014/09/17(水) 00:37:22.27ID:PPyutAzO0070デフォルトの名無しさん
2014/09/18(木) 09:31:48.64ID:K9nvNHSV007170
2014/09/18(木) 13:19:45.02ID:K9nvNHSV0072デフォルトの名無しさん
2014/09/19(金) 03:15:22.39ID:7FCDfZaC光源位置が悪いのかマテリアルの設定が悪いのか法線の設定が間違ってるのかglLightのパラメータが悪いのか判断するのが難しい
0073デフォルトの名無しさん
2014/09/19(金) 12:00:44.45ID:duRZjctEtexture2Dの座標をずらして参照してもうまくいきませんでした。
0074デフォルトの名無しさん
2014/09/19(金) 12:39:00.15ID:9xig4/Jctexture2Dでうまくいかないのは1をテクスチャ画素数で割ってない予感
0075デフォルトの名無しさん
2014/09/19(金) 13:15:32.41ID:duRZjctEtextureOffsetだと座標を定数しか受け取れないからfor文で書けないんです
0076デフォルトの名無しさん
2014/09/19(金) 15:28:59.90ID:duRZjctE0077デフォルトの名無しさん
2014/09/19(金) 18:11:49.98ID:1hc6Ln2lバッファ毎に同じ値なら createBuffer の時に指定したらいいように思うけど。
それと、type じゃなくて target っていう名前になっている理由も分からない。
バッファのイメージというか、考え方というか、よく分からない;
0078デフォルトの名無しさん
2014/09/19(金) 18:30:24.12ID:x1Ly+gF4「ライト計算済ambient + ライト計算済diffuse + ライト計算済specular」
…で、各ライト計算は「ライト」「マテリアル」「光源や視点との関係によって求まる0〜1の実数」を乗算する
詳しい部分をはしょって書くとそんな感じだ
シェーダーとかやるとその式を丸ごと自分で書くことになるよ
逆に言えば、シェーダーのライト計算について調べれば詳しい式が出てくるかと
0079デフォルトの名無しさん
2014/09/19(金) 18:45:54.82ID:agdMUu9uそんなワケで、作り始めはマテリアルのほうで調整するために
ライトの色は全部 1.0 にしといたほうが楽かと
0080デフォルトの名無しさん
2014/09/20(土) 01:57:21.73ID:g+GCiF/m> 「光源や視点との関係によって求まる0〜1の実数」
1までとは限らんよ
特にspecularなんて簡単に1越えるし、越えなきゃハイライトが出ない
0081デフォルトの名無しさん
2014/09/20(土) 06:01:23.27ID:QUpUX8gOまあ、かなりはしょってるからな
それ言うならambientも言及せにゃならんし
とりあえずのシェーダ知らん人への掴み易さ重視ってことで
0082デフォルトの名無しさん
2014/09/25(木) 00:00:27.37ID:nGMc6Rtxいくつか直す方法はあるみたいだけど
シェーダーに変数を追加して
RTTだけテクスチャ座標を上下反転するのがベスト?
RTTだけ上下反転して描画される理屈は何かよく分からなかった
0083デフォルトの名無しさん
2014/09/25(木) 15:07:47.86ID:7joJL52O0084デフォルトの名無しさん
2014/09/25(木) 15:32:20.87ID:Yl4BUmdN左下が 0,0 だってのはおk?
0085デフォルトの名無しさん
2014/09/25(木) 18:52:31.99ID:rqHbH728http://www.m9-www.com/lwjglgameproject
0086デフォルトの名無しさん
2014/09/25(木) 21:16:51.94ID:NoDUj7qy0087デフォルトの名無しさん
2014/09/25(木) 22:21:46.17ID:iegO7U6cMinecraft知らんから意味不明w
0088デフォルトの名無しさん
2014/09/26(金) 13:26:21.58ID:srmL+qrsそんな物は無いので
ヴァーテックスシェーダーから自分でフラグメントシェーダーにテクスチャ座標を送れ
0089デフォルトの名無しさん
2014/09/27(土) 07:07:00.02ID:HAq6kjKE頂点そのものは頂点バッファに格納されています。
0090デフォルトの名無しさん
2014/09/27(土) 08:03:16.16ID:fUfjEWa50091デフォルトの名無しさん
2014/09/27(土) 09:05:25.74ID:HAq6kjKE0092デフォルトの名無しさん
2014/09/27(土) 11:55:19.92ID:0TauZUvjhttp://monobook.org/wiki/SL_Sharp
0093デフォルトの名無しさん
2014/09/27(土) 14:51:09.41ID:y+SuI5NJそういやニコ動でMinecraftクローン作ってる人いたな
コード見てもHaskelだからC++erな俺にはさっぱりだったけど
0094デフォルトの名無しさん
2014/09/27(土) 18:20:45.94ID:SMpwChck1000×1000ピクセルのウィンドウに格子状に間隔10ピクセルで横に100個、縦に100個、合計で10000個の点を描画したいのですが、どの関数を使えば良いでしょうか?
0095デフォルトの名無しさん
2014/09/27(土) 18:28:38.38ID:ebkNOLYx0096デフォルトの名無しさん
2014/09/28(日) 04:25:15.56ID:GBFbUcRH0,1,2,3,...ってしょーもない配列生成するだなんて……
0097デフォルトの名無しさん
2014/09/28(日) 10:32:31.32ID:ywKQU/yn0098デフォルトの名無しさん
2014/09/28(日) 11:12:04.88ID:LAza/Q620099デフォルトの名無しさん
2014/09/28(日) 16:14:46.43ID:PnvSvw7/glDrawArrays使ってできました
0100デフォルトの名無しさん
2014/09/28(日) 16:28:36.37ID:NvQ4kS4Aデータの局所性とかでメモリアクセスが改善されるそうです(例:[x,y,z,r,g,b...])。自分でも試して
みたのですが、特に差はないように感じました。これって本当に効果があるのですか?
0101デフォルトの名無しさん
2014/09/28(日) 16:34:52.24ID:pb+QfHfj0102デフォルトの名無しさん
2014/09/28(日) 18:00:39.00ID:PSbbVQVx0103デフォルトの名無しさん
2014/09/29(月) 00:14:52.88ID:Oggt0+rq実際は効果ないよ
0104デフォルトの名無しさん
2014/09/29(月) 16:50:37.95ID:s24tvMG+0105デフォルトの名無しさん
2014/09/29(月) 23:06:34.92ID:DwF+s7hpクリップ座標系じゃなくてスクリーン座標系ってことでいいの?
この辺って文書化されてる?
0106デフォルトの名無しさん
2014/10/01(水) 23:39:34.33ID:auoNc3+l単にマイナーなだけなのかな。
https://code.google.com/p/glfx/
使い方
http://ogldev.atspace.co.uk/www/tutorial34/tutorial34.html
0107デフォルトの名無しさん
2014/10/03(金) 14:01:57.36ID:rUYykIaE0108デフォルトの名無しさん
2014/10/03(金) 14:16:32.84ID:wsUsF748マジデ!と思ってフラグメントシェーダーでやってみたけど、該当しない分岐の中は演算してないみたいだが...
どこに書いてあった情報?
0109デフォルトの名無しさん
2014/10/03(金) 14:49:23.02ID:UQll3Ccbマイクロプロセッサ一般で分岐のコストが馬鹿にならんのは事実。
そういう実装があっても不思議ではない。
bvec型があるのは記述を簡単にするためだけじゃない。
0110デフォルトの名無しさん
2014/10/03(金) 15:06:39.22ID:RdNexfru0111デフォルトの名無しさん
2014/10/03(金) 17:14:07.87ID:BlqF2NHpだからループ回数が静的に求められないコード書くとエラーになってたような
0112デフォルトの名無しさん
2014/10/03(金) 19:51:41.56ID:ON3UZZIk不思議ではある
基本的に全部計算してselect命令みたいなので分岐を実装してんだろうなと思われる
0113デフォルトの名無しさん
2014/10/03(金) 23:25:50.98ID:Bn8I2xCFvec4 A = 計算計算計算;
vec4 B = 計算計算計算;
float cond = Aを使う条件の時に1、そうでないときに0になるよう工夫した式;
gl_Color = mix(B, A, cond);
みたいにやってたけど、フツーに IF 書いた方が読みやすいしマシみたいだね。
0114デフォルトの名無しさん
2014/10/03(金) 23:46:39.09ID:BlqF2NHpそんな感じでやる方法もあるにはあるんだけどね
0115デフォルトの名無しさん
2014/10/04(土) 00:56:03.24ID:ZecDQkSo速くなる可能性はありそう
0116デフォルトの名無しさん
2014/10/04(土) 01:19:06.53ID:D42fUjq80117デフォルトの名無しさん
2014/10/04(土) 01:22:58.94ID:ZecDQkSoじゃぁ白黒はっきりした意見をどうぞ
0118デフォルトの名無しさん
2014/10/04(土) 01:31:24.93ID:LNrhVCYPKepler GPUアーキテクチャとプログラム最適化
ttp://news.mynavi.jp/series/kepler_gpu/002/
0119デフォルトの名無しさん
2014/10/04(土) 14:28:28.32ID:yLsnOCiy0120デフォルトの名無しさん
2014/10/05(日) 02:01:02.87ID:Rj73rC+Tこれの反対が無いし、結局最初に最大使う分だけ設定するか
毎フレームチェックして設定するかだろう
これを設定しすぎるとどんだけメモリロスるかも分からんし
それも実装依存だろうけど
0121デフォルトの名無しさん
2014/10/05(日) 14:10:23.58ID:JYy2ec/Aそれの反対って inactive の意味?
それなら要らんだろ
0122デフォルトの名無しさん
2014/10/05(日) 17:44:45.17ID:Rj73rC+T何で?シーンによってテクスチャの数に差がある時にメモリ節約できそうだけど
実際何やってるかは知らんけど
0123デフォルトの名無しさん
2014/10/05(日) 18:04:21.53ID:QxQMnlB+無効にするには、無効にしたいテクスチャユニットごとにglActiveTextureで切り替えてglDisableで無効にする
glActiveTexture(GL_TEXTURE0);
glDisable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE2);
glDisable(GL_TEXTURE_2D);
...
みたいな感じ
0124デフォルトの名無しさん
2014/10/05(日) 18:46:25.37ID:kAlMXFt4glDisableでもシェーダからは参照できるから
使わないことをGPUに通達したい場合は
glActiveTexture(GL_TEXTURE(N));
glBindTexture(GL_TEXTURE_2D,0);
かね
0125122
2014/10/06(月) 11:15:11.26ID:7T5WYEhuで、>>124の方法で使わない事をGPUに伝えられると思われる
glDisable(GL_TEXTURE_2D);も調べてみたけど、これは固定機能にのみ影響があって
シェーダーには無意味だって事は分かった (OepnGL ESには無いし)
0126デフォルトの名無しさん
2014/10/09(木) 16:31:07.40ID:UAdEXg5Z3つの頂点をバッファに詰め込んで三角の大量描画はこれでできました。
gl10.glTexCoordPointer(2,GL10.GL_FLOAT,0,uvBuffer);
gl10.glVertexPointer(3,GL10.GL_FLOAT,0,vertexBuffer);
gl10.glDrawArrays(GL10.GL_TRIANGLES,0,12);
これをGL_TRIANGLE_STRIPに変更して四角の描画にしたいのですが
そのままだと4つ以上の頂点の連続したTRIANGLE_STRIPとして表示されてしまいます。
このデータを4つ区切りでそれぞれ四角の個々のデータと解釈させて表示させる方法ないでしょうか?
0127デフォルトの名無しさん
2014/10/09(木) 16:56:20.15ID:UAdEXg5Zint rect[] = { texX, texY, texWidth, texHeight};
((GL11)gl10).glTexParameteriv(GL10.GL_TEXTURE_2D,GL11Ext.GL_TEXTURE_CROP_RECT_OES, rect, 0);
((GL11Ext)gl10).glDrawTexfOES(pos_x, pos_y, pos_z, width, height);
これは四角毎に毎回個々の頂点与えて描画命令をしてるようですが
これでは遅くならないでしょうか?
バッファで一括してデータ与える方法はないのでしょうか?
0128デフォルトの名無しさん
2014/10/09(木) 17:39:59.52ID:ww6iUB2Z0129デフォルトの名無しさん
2014/10/09(木) 21:20:26.97ID:mP8dxP0A0130デフォルトの名無しさん
2014/10/09(木) 21:34:39.70ID:mP8dxP0Aシェーダ使う前提で
大きさが(ほぼ)一定ならGL_POINTを使う手もある
0131デフォルトの名無しさん
2014/10/09(木) 22:06:57.67ID:RSyF8W3G>>127は無理で>>126はできそうですね。
TRIANGLESとTRIANGLE_STRIP+縮退三角形はどちらが速いか賛否両論のようですが。
GL_TRIANGLE_FANでも四角は扱えそうなので(速度は不明ですが)試してみます。
0132デフォルトの名無しさん
2014/10/10(金) 02:41:34.11ID:t/EXgOkTcuda使うのどっちが速いの?
0133デフォルトの名無しさん
2014/10/10(金) 22:26:12.32ID:yabznd0d0134デフォルトの名無しさん
2014/10/10(金) 22:31:49.18ID:yabznd0d作りたいものは
ある数(100以上)を入力し、その数だけ点を描画するというプログラムです
同じことが出来ればDrawArrayでなくてもオーケーです
0135デフォルトの名無しさん
2014/10/10(金) 22:35:08.19ID:iOH5rkxg0136デフォルトの名無しさん
2014/10/10(金) 23:12:06.89ID:htVEs7IPデータは静的で単に数が変わるだけ
あるいは数に上限があるなら
glDrawArraysでオフセットとカウントを指定すればいいだけ
0137デフォルトの名無しさん
2014/10/10(金) 23:14:46.50ID:htVEs7IPステートレス(参照透過性がある)なら
1回の描画の中で
頂点データの生成とglDrawArraysを交互に繰り返せばいい
0138デフォルトの名無しさん
2014/10/10(金) 23:56:54.47ID:yabznd0dありがとうございます
それで出来そうです、試してみます
>>137
動的です、乱数を使用しているのでおそらくステートレスではありません
0139デフォルトの名無しさん
2014/10/11(土) 17:35:03.87ID:OlHZdekY点を描画する際に関数glutDisplayFanc(display) を使いdisplay() を呼び出し、その中のglDrawArray()を使用します。
なのでmain()で定義した配列をdisplay()まで渡さないといけないのですが、glutDisplayFanc(display) が邪魔をして渡す事が出来ません
この配列は他の関数でも使用するのでdisplay()内で定義する事は考えていません
それに動的なのでグローバルで定義する事も出来ないので困っています
何か良い方法はありませんか?
0140デフォルトの名無しさん
2014/10/11(土) 17:43:02.72ID:n15c+Fci0141デフォルトの名無しさん
2014/10/11(土) 18:36:42.27ID:OlHZdekY動的なのでグローバルではダメなんです
グローバルでの宣言時に要素数を多めに宣言しておくという方法もとれますが出来れば避けたいです
0142デフォルトの名無しさん
2014/10/11(土) 18:41:23.25ID:OlHZdekYコールバック関数の中にmain()で定義した動的な配列やvectorを持って行くにはどうすればいいの?という事です
0143デフォルトの名無しさん
2014/10/11(土) 18:43:39.95ID:F3plGA7WOpenGL関係ないっていい加減気付いたろ?
0144デフォルトの名無しさん
2014/10/11(土) 19:17:32.06ID:/6Csp3ng0145デフォルトの名無しさん
2014/10/11(土) 19:35:22.70ID:/JROqJwp>>140
0146デフォルトの名無しさん
2014/10/11(土) 20:47:37.64ID:OlHZdekY0147デフォルトの名無しさん
2014/10/11(土) 23:45:05.61ID:gDdDFyHG0148デフォルトの名無しさん
2014/10/12(日) 06:38:37.74ID:+PnoJWwU0149デフォルトの名無しさん
2014/10/13(月) 05:46:16.52ID:LIr0Nbiw//UVバッファの生成
private FloatBuffer makeUVBuffer(
int textureW,int textureH,int x,int y,int width,int height) {
//ウィンドウ座標を正規化デバイス座標に変換
float left =(float)x/(float)textureW;
float top =(float)y/(float)textureH;
float right =(float)(x+width)/(float)textureW;
float bottom=(float)(y+height)/(float)textureH;
x+widthでああJavaと同じで幅(+1された)を指定するのかと思ったのですが
よく考えると反転表示する時はleftとrightを入れ替えるので
leftが+1されたとこから始まるのはずれておかしくなるので、正確には
float right =(float)(x+width-1)/(float)textureW;
float bottom=(float)(y+height-1)/(float)textureH;
と幅ではなく実座標で指定するのが正しいのではないかと思ったのですが
どうでしょうか?
0150デフォルトの名無しさん
2014/10/13(月) 11:21:42.80ID:iEUQV8R3言葉で説明するのは難しいが・・・図を描けば分かるんじゃないかな
http://light.dotup.org/uploda/light.dotup.org86555.png
0151デフォルトの名無しさん
2014/10/13(月) 11:56:53.21ID:LIr0Nbiw三角を2つ描くので座標について混乱してたのですが
その図形からよく考えてみると解説サイトのままでいいみたいですね。
わかりました。
0152デフォルトの名無しさん
2014/10/13(月) 12:00:29.50ID:Poh7coEB考えるより実際に実行してみた方が早いし確実なんだよね
まぁ時々ドライバのバグで1pxずれるとかあってハマる訳だが
アドレス計算は1次元離散座標のTBOの方がわかりやすいけど
まだ何処でも使えるって感じじゃないし
0153デフォルトの名無しさん
2014/10/13(月) 12:35:04.53ID:VbIxjgCt0154デフォルトの名無しさん
2014/10/13(月) 13:38:35.89ID:Poh7coEB0155デフォルトの名無しさん
2014/10/13(月) 14:01:33.21ID:VbIxjgCtもはやなんのために配列があるのかわからない…
0156デフォルトの名無しさん
2014/10/13(月) 20:04:40.14ID:VbIxjgCtglslでそういう処理はプレースホルダとか作って動的に書くもんだったんでつね…
0157デフォルトの名無しさん
2014/10/14(火) 14:58:33.44ID:zL9YbEA7配列のインデックスにループカウンタを使っても問題無いぞ
多分コンパイル時に解決出来ない値を使ってんだろう
0158デフォルトの名無しさん
2014/10/14(火) 21:06:55.96ID:bHfZi2Ffどこかで動的にループ回数が決まるのは駄目って見たから
for(int i = 0; i < 5; i++)見たいにしてみたんだけど駄目だったんだよ
コンパイルは通るけど表示がおかしくなる
0159デフォルトの名無しさん
2014/10/14(火) 23:40:50.16ID:KVuAol34uSampler[i]みたいになってるか?
それで駄目だったらドライバのバグと言える
0160デフォルトの名無しさん
2014/10/15(水) 03:09:21.95ID:21BMzVr4[1,1,1,2,2,2...] ではなくて、[1,2...] 形式で3つの頂点ごとに同じ値を適用したいです。
stride,offset では出来ないみたいですが、やはり無理でしょうか?
0161デフォルトの名無しさん
2014/10/15(水) 07:49:48.61ID:ZR9Ve6JZ(1, 1, 1), (2, 2, 2), (3, 3, 3) みたいな座標しか指定できなかったら、特定の直線しか引けないのでは?
0162160
2014/10/15(水) 13:40:47.69ID:21BMzVr4TRIANGLES を描画するときにポリゴン単位で値が共通なんです。座標は各頂点で別なのですが、
それ以外の頂点属性、例えば色とかがそうです。同じ値を3つの頂点に 1,1,1 と指定するのは
メモリの無駄なので、1 と指定して、それを3つの頂点に適用できないか?と思いました。
[1,2] とすると、最初の3つの頂点には1をその次の3つの頂点には2という具合です。
0163デフォルトの名無しさん
2014/10/15(水) 13:46:28.40ID:C781Kzal頂点シェーダでglVertexID的な値があったはず
glVertexID/3にすれば0,0,0,1,1,12,2,2,...となるから・・・
0165デフォルトの名無しさん
2014/10/15(水) 23:00:06.29ID:bo7BQ6h3頂点ごとに属性のインデックスをつければいい気もするが
0166160
2014/10/15(水) 23:21:43.18ID:21BMzVr4確かにそうですね。でもそのインデックスから値を取得するには、どうすればいいでしょうか?
「ある頂点属性の指定インデックスNの値」を動的に取得できれば、かなり改善できそうです。
0167デフォルトの名無しさん
2014/10/15(水) 23:28:29.24ID:bo7BQ6h3テクスチャ使うのが常套手段だけど
0168160
2014/10/15(水) 23:35:02.65ID:21BMzVr4テクスチャをそのように利用できるんですね。グラフィックは最近始めたばかりで、
テクスチャ=画像と固定的に考えていました。ありがとうございました。
0169デフォルトの名無しさん
2014/10/26(日) 11:44:06.56ID:KJUAvVAFとしてテクスチャも作って使用した後、もう使わなくなって
glView=null;
とするとそれまでの作ったテクスチャも全て開放されると思っていいんでしょうか?
テクスチャ開放について調べてみるとqueueEvent使ったりと
結構複雑な手順が必要みたいなんですが。
0170デフォルトの名無しさん
2014/10/26(日) 12:00:03.18ID:42wlBPHa0171デフォルトの名無しさん
2014/10/26(日) 12:09:32.19ID:KJUAvVAF0172デフォルトの名無しさん
2014/10/26(日) 12:48:58.92ID:sxXC7dR90173デフォルトの名無しさん
2014/10/26(日) 13:19:19.61ID:neF7jQ3p0174デフォルトの名無しさん
2014/10/26(日) 15:13:24.95ID:61XmsubMglGenTextures() したものは glDeleteTextures() することで解放します。
その他のことはスレ違いです。
目障りなんでできれば知恵袋とかに行って聞いて下さい。
0175デフォルトの名無しさん
2014/10/26(日) 18:33:34.85ID:tVo8cht93Dモデルで、複数のマテリアルで同じテクスチャを使っているようなモデルの場合、
マテリアルごとにテクスチャを持たせるのはムダですよね?
どうやって持たせたらいいのでしょうか?
0176デフォルトの名無しさん
2014/10/26(日) 19:57:40.18ID:42wlBPHaファイル名等に基づき同じテクスチャを使っていることを表明・検出して
同じテクスチャをシェーダに渡せばいいんじゃないでしょうか
0177デフォルトの名無しさん
2014/10/26(日) 23:37:47.71ID:MdHDQqysここが掃き溜めだ
0178デフォルトの名無しさん
2014/10/27(月) 02:30:56.22ID:9RA2Yb9/どうもです。
結局、マテリアルごとに、テクスチャをバインドしなおしては描画を繰り返さないとダメなんですよね。
0179デフォルトの名無しさん
2014/10/27(月) 06:53:02.94ID:9dCb0Lihすべての頂点にテクスチャ座標をキッチリ設定してやればいい
0180デフォルトの名無しさん
2014/10/27(月) 07:47:50.10ID:9RA2Yb9/0181デフォルトの名無しさん
2014/10/27(月) 08:02:35.26ID:6yWzs+uV0182デフォルトの名無しさん
2014/10/27(月) 11:23:58.32ID:hH9X0IoY0183デフォルトの名無しさん
2014/10/27(月) 12:11:31.52ID:qnYU7yPZ別に貧弱とは思えないけど、もしかしてテクスチャが自動的に共有されないから
そう思ってんの?
0184デフォルトの名無しさん
2014/10/27(月) 20:04:07.43ID:fLU7ODKy低レベルだからこそハードウェアやライブラリに設計の自由度が上がるという面もある
あとテクスチャユニットは2つ以上あることがES 2.0で保証されてるので
テクスチャ1枚にする必要はない
最低動作をどのラインに持ってくるかによるが
今時のGPUなら8個同時に使えると思っていいんじゃね
0185デフォルトの名無しさん
2014/10/27(月) 20:09:27.81ID:fLU7ODKy0186デフォルトの名無しさん
2014/10/27(月) 20:19:08.64ID:a2r310Xq0187デフォルトの名無しさん
2014/10/27(月) 20:27:35.47ID:fLU7ODKyそこから出ないのが一番じゃね
あとは何がしたいかに依る
0188デフォルトの名無しさん
2014/10/27(月) 21:27:33.75ID:CIdLSoWe混乱する要素が少ないから
0189デフォルトの名無しさん
2014/10/27(月) 22:45:04.71ID:YANmdHDQ滅茶苦茶シンプルだし
0190デフォルトの名無しさん
2014/10/28(火) 13:23:34.27ID:/Y9XnqU0glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, texid );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
このグローバルな副作用を前提とする設計がイライラする。
ただ、 gles2 なら iOS でも Android でも動くから、どっちか一つなら gl でいいんじゃないの。あと、VGA が amd/ati なら、公式ツールが gl だから gl がいいと思うよ。
0191デフォルトの名無しさん
2014/10/28(火) 16:00:00.76ID:FzOeccCwグローバルな副作用なんてあったっけ?
普通テクスチャをロードした時に1回やるだけだからあまり気にならない
0192デフォルトの名無しさん
2014/10/29(水) 09:46:02.72ID:kHkGjKUoマルチテクスチャ(テクスチャを重ねてはる)の時なのか、
1つの3Dモデルで複数のテクスチャを使用している(1つのマテリアルにはテクスチャは1つだけ)
なのか、どっちなの?
0193デフォルトの名無しさん
2014/10/29(水) 14:27:13.98ID:+dOdWCkt副作用というプログラム用語がある。
>>192
後者だったら glActiveTexture() 無しで作れるだろ。
0194デフォルトの名無しさん
2014/10/29(水) 15:39:04.65ID:kHkGjKUo調べてましたが、確かに使ってない例も多かったですね。
ありがとうございます。
0195デフォルトの名無しさん
2014/10/29(水) 17:28:25.63ID:kHkGjKUoモデルの手前のポリゴンを奥のポリゴンより先に描画しても、ちゃんと描画されるのでしょうか?
0196デフォルトの名無しさん
2014/10/29(水) 17:33:15.26ID:5ptZSCV3つまり、ブレンドモードを使っていないのであれば
0197デフォルトの名無しさん
2014/10/29(水) 17:46:37.92ID:kHkGjKUoどうもです。
全部半透明で前後関係のあるモデルの場合、
モデルファイル側で、そのままの順番で描画してちゃんと表示されるように並べて作ってあるのかな〜。
0198デフォルトの名無しさん
2014/10/29(水) 21:01:03.86ID:GiyQXeuL基本的に全ポリゴン毎フレーム並べ直さないと駄目だが、重くなり過ぎる場合は
ポリゴンを減らすとか大雑把な単位でしかソートしないとか色々やりようはあるだろうね
0199デフォルトの名無しさん
2014/10/29(水) 23:23:26.96ID:D5QH5rvwステンシル作ってポストエフェクトで半透明処理とか
半透明部分だけ力技でレイトレースとか
本当に色々ある
0200デフォルトの名無しさん
2014/10/29(水) 23:55:41.19ID:oi0tTARdカメラの位置が決まらないと順番決まらないから無理
0201デフォルトの名無しさん
2014/10/30(木) 00:41:07.00ID:2qCOwiZb人体なんか視点やモーションに応じてモデルを切り替える例なんかもある訳で
特定の方向から自然に見えればよい
(多少の破たんには目を瞑る)という設計もありうる
0202デフォルトの名無しさん
2014/10/30(木) 01:28:28.88ID:89p4Ashc「モデルファイル側でちゃんと並べて作ってあるのか?」の答えは「NO」だよね
1ポリゴンだけ半透明があるモデルファイルだって、そのポリゴンが必ず最後にくるような並びになってるとは限らないし
そうなってないといけないなんていうルールは無い
0203デフォルトの名無しさん
2014/10/30(木) 01:54:54.03ID:4GsvotLh普通αブレンド用にマテリアルを分けてそのマテリアルを一番最後にすれば大抵最後に描画される
0204デフォルトの名無しさん
2014/10/30(木) 02:46:14.69ID:fCMA8PeS0205デフォルトの名無しさん
2014/10/30(木) 11:57:59.43ID:X7YwtfwB完璧な見た目を追求すると膨大なパターンになりそうだけど、いい感じに端折れば
大してメモリも食わないし実行時の負荷もほとんど無いはず
0206デフォルトの名無しさん
2014/10/31(金) 09:50:57.93ID:hsxnOFuf頂点、法線、UVのインデックスを1つの配列にしないとダメなの?
0207デフォルトの名無しさん
2014/10/31(金) 12:37:44.93ID:OFeCXJ6g複数必要になるわけ無い
バーテックスバッファがそれらのデータ(頂点、法線、UV)のセットが順に並んでいる配列
インデックスバッファは何個目のセットを選んで描画するかを指定する配列
0208デフォルトの名無しさん
2014/10/31(金) 14:08:52.55ID:qi8WICHZなんか分かり難い表現だな…
1つの配列にする必要はないと言えばいいのに
0209デフォルトの名無しさん
2014/10/31(金) 14:12:29.42ID:hsxnOFuf0210デフォルトの名無しさん
2014/10/31(金) 14:41:48.77ID:qi8WICHZ0211デフォルトの名無しさん
2014/10/31(金) 15:08:39.81ID:uqlnkQHyhttp://stackoverflow.com/questions/11148567/rendering-meshes-with-multiple-indices
>>209-210
D3D10/OpenGL3.xのVertex Texturesを使えば不可能ではないらしいが、速度は遅いとか
こんなややこしい方法を使うより、1つのインデックスバッファに統合した方がよっぽど簡単で高速
0212デフォルトの名無しさん
2014/10/31(金) 16:07:49.29ID:hsxnOFufどうやって1つのインデックスバッファで処理するの?
0213デフォルトの名無しさん
2014/10/31(金) 16:32:49.39ID:hsxnOFuf0214デフォルトの名無しさん
2014/10/31(金) 16:41:57.50ID:lZPBQQs60215デフォルトの名無しさん
2014/10/31(金) 16:52:14.55ID:u9J1NzaB1つのVertex Buffer + 1つのIndex Buffer
だけ
複数のVertex Buffer + 複数のIndex Buffer
は不可
>>213
何でそこまで纏めるのを嫌がるのか
0216デフォルトの名無しさん
2014/10/31(金) 17:45:42.64ID:hsxnOFufまとめるより、その配列を作るのが手間そうだ・・・・。
0217デフォルトの名無しさん
2014/10/31(金) 18:54:05.73ID:u9J1NzaB使いまわすって何言ってんだ
そもそもOpenGLを理解してないんじゃないか
座標、法線、テクスチャ座標(UV)は皆1つの配列に入れるんだよ
メモリ上でfloatが連続している状態なら何でもいいから
普通は単なるfloatの配列ではなく、プログラマーにとって扱いやすいstructの配列をOpenGLに渡す
http://asura.iaigiri.com/OpenGL/gl43.html
http://sourceforge.net/p/irrlicht/code/HEAD/tree/trunk/include/S3DVertex.h
上の例だとstructの中に直にfloatがあるが
Irrlichtの例のようにstructの中にfloatを含むstructを入れても可
0218デフォルトの名無しさん
2014/10/31(金) 19:33:29.68ID:fnu1XhNU皆1つの配列に入れる必要はないしfloatである必要もない
0219デフォルトの名無しさん
2014/11/01(土) 00:20:28.58ID:ROiidneOVertex Texture Fetchと組み合わせたら出来ることは出来るかもね
0220デフォルトの名無しさん
2014/11/01(土) 01:42:39.94ID:xWhOrI96Xファイルなんかだと、
頂点数と法線数はイコールじゃないし、
お互い独自のインデックス番号で表現されているので、
それをそのまま使いたかった
0221デフォルトの名無しさん
2014/11/01(土) 19:41:50.02ID:xWhOrI96って、何度もVBOを作り直して長くもたないってこと?
0222デフォルトの名無しさん
2014/11/01(土) 20:27:26.40ID:gXvkXb65勝手に書き換えられる訳じゃない
頻繁に書き換えるからキャッシュしても無駄だよん
ってヒントを実装に与える
そのヒントをどう使うかは実装次第
0223デフォルトの名無しさん
2014/11/01(土) 21:14:33.98ID:xWhOrI96なるほど。
頻繁に書き換えるならVBOじゃなくて普通のバッファでいいような気もするけど・・・。
毎フレーム書き換えとキャッシュの中間ってところかな。
0224デフォルトの名無しさん
2014/11/02(日) 02:55:22.54ID:+L6WIgLFキャッシュというかGL_STATIC_DRAWでバッファを作成すると2度と内容を更新出来んぞ
仕様としてはヒント的な扱いだけど、実装はどっちでもとりあえず動くとはなってないね
0225デフォルトの名無しさん
2014/11/02(日) 04:15:27.10ID:bQzViPT90226デフォルトの名無しさん
2014/11/02(日) 11:12:34.24ID:5ZVCU8dyglBufferData
0227デフォルトの名無しさん
2014/11/02(日) 15:08:53.77ID:SxFoRZy5GPUとCPUのアクセスがバッティングすると例外発生とか
自前の泥アプリの安定性がいまいちなので
0228デフォルトの名無しさん
2014/11/02(日) 15:36:52.81ID:cbZyttcP同期処理が前提のOpenGLのインターフェイスで
GPUとCPUのアクセスがバッティングするなんてことが
想定される時点で設計がおかしいよ
0229デフォルトの名無しさん
2014/11/02(日) 16:27:56.75ID:SxFoRZy5あるかなと。で、もしかして正しい手続きでもあるのかと。
自分の件は任意なので平気だと思われるけどバックグラウンドで何かや
ってる可能性も。落ちてもエラー吐かないからなんとも。
0230デフォルトの名無しさん
2014/11/02(日) 16:50:46.31ID:cbZyttcPそして使っているライブラリ/ツールの方で聞け
たぶんOpenGL関係ない
「落ちてもエラー吐かない」じゃなくて
エラー吐くようにちゃんとハンドリングしろ
0231デフォルトの名無しさん
2014/11/02(日) 17:13:34.01ID:02WOdBRy0232デフォルトの名無しさん
2014/11/02(日) 17:31:26.90ID:cbZyttcP落ちる直前のログは残っているはずだし
AndroidならTracerも用意されているし
もっと原因を絞り込めるだろと
0233デフォルトの名無しさん
2014/11/03(月) 14:24:00.41ID:i5F5sNZ0ただglBufferDataはGPUが触ってない場所にデータを丸ごとコピーしてるだろうから結局問題は無いだろう
0234デフォルトの名無しさん
2014/11/03(月) 18:17:52.55ID:/knyOzUw0235デフォルトの名無しさん
2014/11/10(月) 18:27:13.85ID:oPn+npUX同じプログラムでもNVIDIA GPUにした時だけ垂直同期待ちの時のCPU使用率がすごくなる
何だこれは?GeForceでは垂直同期使うなって事か?
0236デフォルトの名無しさん
2014/11/10(月) 18:56:23.07ID:5OjKaQwP0237デフォルトの名無しさん
2014/11/10(月) 21:37:43.26ID:oPn+npUX丁度画面が書き換わる前まで待たないといけないが知る方法が無い
ただ単に毎フレーム1ms待つだけとかだと高いまま
どうやらChomeのせいらしい
ChomeのtimeBeginPeriod呼び出しでタイマー精度が1msになったあとに起動するとCPU使用率が凄いことになる
なぜかIntel HD Graphicsだとならない
タイマー精度はClockRes.exeで分かる
Chomeがなくても時々1msになるから
他にも犯人がいそうだが探すのが難しい
これGeForceのドライバーのバグじゃないの
Intelだとならないから
0238デフォルトの名無しさん
2014/11/10(月) 22:39:22.29ID:URK4C/+wOPTIMUS特有の問題かもしれないけど、バグレポしてもいいレベルの問題だな
OPTIMUSはあまり使ってる人がいないから放置されてるのかもしれない
0239デフォルトの名無しさん
2014/11/10(月) 23:22:03.42ID:oPn+npUX精度1msでもCPU使用率が下がる事がある
何故かCPU使用率が高いってのは報告があるんだけど
0240デフォルトの名無しさん
2014/11/10(月) 23:53:16.26ID:jULB9n0Z0241デフォルトの名無しさん
2014/11/12(水) 08:55:41.16ID:vNnvSmwI作っているのは2Dゲームのエンジンで、ステート変更やglDrawElementsの回数を出来るだけ抑えるようになっている
半透明のオブジェクトは別のシェーダーに変わるんだが、
そのシェーダーを一度でも使うと使用率ががくっと下がる
どういう訳か半透明オブジェクトがシーンから消えても使用率はそのまま
OpenGLは非同期で動いていて、コマンドを渡されてもキューに詰め込むだけで、実際にそれを実行するのは後らしい
その関係で使用率が下がったのだろうか?シェーダーを途中で変えるとすぐに実行されるとか?
0242デフォルトの名無しさん
2014/11/12(水) 08:59:59.53ID:vNnvSmwI1フレーム分ぐらいかかるんだが
GeForceは大抵一瞬で戻る
GeForceでプロファイラを使ってパフォーマンスを測定したら
負荷の軽いシーンでもglDrawElementsが上位に来ていた
SwapBuffersが短い分これが増えた?
0243デフォルトの名無しさん
2014/11/12(水) 09:01:44.53ID:KVAuCYtX0244デフォルトの名無しさん
2014/11/12(水) 10:15:44.98ID:z8yiEzrF0245デフォルトの名無しさん
2014/11/12(水) 11:24:51.71ID:D8SggX0A垂直同期は拡張機能使って有効にしておかないと駄目だ
0246デフォルトの名無しさん
2014/11/13(木) 14:09:26.97ID:HtZJ4mIhクラス関数を作れば作るほどベクトルクラス1つ1つが容量食って重くなる?
0247デフォルトの名無しさん
2014/11/13(木) 14:10:21.52ID:HtZJ4mIhX ベクトルクラス1つ1つが
○ インスタンス1つ1つが
0248デフォルトの名無しさん
2014/11/13(木) 14:11:14.93ID:JEk43mot0249デフォルトの名無しさん
2014/11/14(金) 00:44:34.77ID:HvfimxqKglEnableVertexAttribArrayとかはGLuintで受け取るようになってますよね。
結局、アトリビュートの型はGLintとGLuintのどちらにするべきなんでしょう?
GLuint attr = glGetAttribLocation(...);
if ((Glint)attr < 0) {エラー }
glEnableVertexAttribArray(attr, ...)
..
とするべきなのか
GLint attr = glGetAttribLocation(...);
if (attr < 0) { エラー }
glEnableVertexAttribArray((GLuint)attr, ...)
なのか。
0250デフォルトの名無しさん
2014/11/14(金) 01:30:25.57ID:TpJREt3bCの常識で考えれば前者は-1が他の数字に変わってしまうのでダメだと思うけど
unsigned int a = -1
if (a < 0) printf("error\n"); // 絶対に実行されない
とかやってるのと一緒だし
0251デフォルトの名無しさん
2014/11/14(金) 01:31:55.20ID:TpJREt3b忘れてくれ
0252デフォルトの名無しさん
2014/11/15(土) 10:35:35.21ID:Tt18G4Rt垂直同期はGeForceでも有効になってた
60fpsにはなってるし
SwapBuffersではなく他の部分の時間を増やして60fpsにしているのだろう
って書いたじゃん
>>244
効果は無かった。finishやflushは無視してるのか?
0253デフォルトの名無しさん
2014/11/15(土) 17:15:06.23ID:lRkU/JzIglDrawElements(プリミティブの種類、インデックスの数、インデックスの型、データ元) で、
「インデックスのここからここまで」と指定して描画ってできますか?
0254デフォルトの名無しさん
2014/11/15(土) 20:41:35.19ID:vjnAYpco0255デフォルトの名無しさん
2014/11/17(月) 08:56:24.36ID:HShsEG/zありがとうございます!
「インデックスの数」は、「データ元」の「開始オフセット」からいくつ描画するかの数ですよね?
0256デフォルトの名無しさん
2014/11/19(水) 00:18:38.77ID:AQBtgxdShttp://fox.2ch.net/test/read.cgi/poverty/1416286592/
0257デフォルトの名無しさん
2014/11/19(水) 10:48:08.67ID:FqxYFU1Bプログラム側は short型の一次配列で渡せるでしょうか?
0258デフォルトの名無しさん
2014/11/19(水) 15:49:31.20ID:f43OxmWk普通にfloatで渡せば良いのに
何でそんなことをしたいのか
何か勘違いしていそうな悪寒
0259デフォルトの名無しさん
2014/11/19(水) 17:05:52.93ID:cB5WMOho0260257
2014/11/20(木) 12:14:08.50ID:EXFgbP1f結局、floatで送ってシェーダ側でint()でキャストするしかないみたいですね。
0261デフォルトの名無しさん
2014/11/28(金) 06:00:46.52ID:MEPhsPZB0262デフォルトの名無しさん
2014/11/28(金) 07:45:03.46ID:MEPhsPZB0263デフォルトの名無しさん
2014/11/29(土) 20:40:00.69ID:8DYbLWhgAするにはどうすればいい?→Aすればよかった
みたいな滑稽さがあるな
0264デフォルトの名無しさん
2014/11/29(土) 23:24:53.81ID:SoXvwZNw0265デフォルトの名無しさん
2014/11/30(日) 03:23:41.85ID:b4nmdqGsThis lake is the deepest of the three.(この湖は3つの中で一番深い)
This lake is deepst here.(この湖はこの場所が一番深い)
上は「3つの湖」を互いに比較していますが、下の文は「1つの湖の中で深さの違う場所があり、この場所が一番深い」と述べています。
0266デフォルトの名無しさん
2014/11/30(日) 11:09:43.61ID:8MVnYPAC0267デフォルトの名無しさん
2014/11/30(日) 15:01:08.92ID:0H+5CMHi0268デフォルトの名無しさん
2014/11/30(日) 18:05:45.33ID:SjfBxMop0269デフォルトの名無しさん
2014/11/30(日) 20:24:18.81ID:kmsUIJRb0270デフォルトの名無しさん
2014/11/30(日) 23:50:20.18ID:eKHuU7at0271デフォルトの名無しさん
2014/11/30(日) 23:58:57.94ID:8MVnYPAC0272デフォルトの名無しさん
2014/12/01(月) 01:15:53.86ID:vCq5rkmYそのシェーダが走ってる最中に外から打ち切るapiみたいなのってありますかね?
というか無限ループが発生した場合、グラボが死ぬまで待つかPC落とすしかないですか?
0273デフォルトの名無しさん
2014/12/01(月) 07:01:19.58ID:s80cut9o0274デフォルトの名無しさん
2014/12/01(月) 08:36:58.12ID:vCq5rkmY0275デフォルトの名無しさん
2014/12/01(月) 09:44:57.22ID:ikZ1X/ONhttp://qiita.com/shimacpyon/items/e5d2a4e2019273345c37
0276デフォルトの名無しさん
2014/12/01(月) 09:50:20.03ID:ikZ1X/ON烏丸を「からすまる」と呼ぶくらい不自然
0277デフォルトの名無しさん
2014/12/01(月) 10:17:45.28ID:s80cut9oユーザ云々なんて関係ない。
GLSLでそもそもどうやって無限ループを発生させるのか聞いてるんだよ。
0278デフォルトの名無しさん
2014/12/01(月) 12:45:39.38ID:97liHp30とか?driver lostした
0279デフォルトの名無しさん
2014/12/01(月) 12:48:58.26ID:vCq5rkmYまあ>>278です
あるいは
int x = 0;
while(1)
{
// forget to change x
if(x)
{
break;
}
}
みたいな
0280デフォルトの名無しさん
2014/12/01(月) 12:53:03.04ID:vCq5rkmYコードで打ち切り方が変わる?
0281デフォルトの名無しさん
2014/12/01(月) 13:14:29.44ID:q7F8Vl1KハードやOSがタイマー監視して有無をいわさずタイムアウトエラーもしくは強制リセットする
とりあえず Vista以降は2秒でドライバレベルのリセットがかかるらしい
https://web.archive.org/web/20100301191249/http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx
0282デフォルトの名無しさん
2014/12/01(月) 13:16:15.57ID:q7F8Vl1Khttps://web.archive.org/web/20100301191249/http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx
0283デフォルトの名無しさん
2014/12/01(月) 13:32:23.55ID:GrWyVyTuhttp://hayabusa3.2ch.net/test/read.cgi/news/1417266799/
0284デフォルトの名無しさん
2014/12/01(月) 15:12:02.44ID:vCq5rkmYさすがにGPUのapiは存在しない感じですね
ありがとうございます
0285デフォルトの名無しさん
2014/12/01(月) 16:39:57.35ID:QUWqwFWmもう解決したようだが、そもそもシェーダーはギチギチに最適化された
コンパイル済みのコードを実行してんだぞ
無限ループとか割り込みを発生させる事が出来たところで
別のコードを割り込ませるなんて不可能だ
0286デフォルトの名無しさん
2014/12/01(月) 16:43:02.98ID:QUWqwFWmGPGPU使えば高速化出来ると思うけど、消費電力を気にしてんのかね
0287デフォルトの名無しさん
2014/12/01(月) 17:05:47.11ID:97liHp30ユーザーが自由にシェーダーを動的に書けるアプリだったら
別スレッドで描画スレッドを監視して死亡してたらシェーダーエラーを警告してひとつ前のシェーダーに戻して初期化するとかかな
0288デフォルトの名無しさん
2014/12/01(月) 17:21:35.97ID:QUWqwFWmもちろんそれも出来ないけどね
0289デフォルトの名無しさん
2014/12/01(月) 17:27:27.20ID:97liHp30なんでできないの?もっかい立ち上げればいいだけでは
0290デフォルトの名無しさん
2014/12/01(月) 17:37:54.41ID:QUWqwFWm死亡したGPUを初期化するのはOSの仕事でアプリから出来ないと思っただけだ
0291デフォルトの名無しさん
2014/12/01(月) 18:06:49.04ID:97liHp30windowsの場合GPUが死なないようにOSがタイムアウトリセットしてくれる。
web にあるglsl sandboxとかでも無限ループ書くとブラックアウトしてリセットされて回復する(しない場合もあるかもしれないが)
0292デフォルトの名無しさん
2014/12/01(月) 18:15:14.36ID:QUWqwFWmWebGLはOpenGLの拡張を使って若干の速度を犠牲にしてGPUがハングアップしないようにしてるからだな
確かにWebGL用に追加された拡張を使えば出来るな。俺は知らんが
0293デフォルトの名無しさん
2014/12/02(火) 00:08:20.43ID:yGw9j998今でも最新のOpenGLについてのお勧めサイトでしょうか?
0294デフォルトの名無しさん
2014/12/02(火) 03:49:14.89ID:apvFAuXl10年以上前と違ってOpenGLの利用範囲も多岐にわたってるから、自分の知りたい最新トピックが何なのかによって見るページも違ってくると思うよ
0295デフォルトの名無しさん
2014/12/02(火) 04:00:42.47ID:yGw9j998レスありがとうございます。
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・GLFW より新しいマルチプラットフォームなツールキット
という事ですが、glutしか知らない浦島太郎状態なのでまずはGLFWという奴を習得したいです。Windowsです。
0296デフォルトの名無しさん
2014/12/02(火) 04:24:15.73ID:apvFAuXlGLFWのページに行けばドキュメントも使用ガイドもそろってますよ
0297デフォルトの名無しさん
2014/12/02(火) 04:49:54.71ID:yGw9j998レスありがとうございます。
本家のサイトは参考にはしますが、まずは敷居の低い日本語サイトで勉強しようと思ってます。
とりあえず床井さんとこと、本家サイトでやってみます。
0298デフォルトの名無しさん
2014/12/04(木) 20:16:14.42ID:RqHblQpF複数の点が画面の中を飛び回るプログラムを作ったのですが正しく動いてくれません
点の数が500個程度だと正しく描画されるのですが、1000個を超えるような数になると、プログラム開始時に点が一瞬表示された後消えてしまいます
プログラム自体は問題なく動いているので描画に失敗しているようです
原因がわかる方いませんか?
0299デフォルトの名無しさん
2014/12/04(木) 20:20:26.77ID:RqHblQpFglClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glDrawArrays(GL_POINTS, 0, number);
glutSwapBuffers();
描画のところはこんな感じです
pointsが点の位置の配列で、numberが点の数です
0300デフォルトの名無しさん
2014/12/04(木) 20:36:21.63ID:RqHblQpFすみません
表示されていませんでした
0301デフォルトの名無しさん
2014/12/04(木) 20:50:44.60ID:QO7uMJY7を
glDrawArrays(GL_POINTS, 0, 500);
に変えると表示されて、
glDrawArrays(GL_POINTS, 0, 1000);
にすると真っ黒なのか?
描画に失敗してるのではなく、OpenGLとは関係無いところが原因だと思います。
0302デフォルトの名無しさん
2014/12/04(木) 20:57:17.22ID:RqHblQpFそうです
openglに関係ないところですか、もう少し調べてみます
0303デフォルトの名無しさん
2014/12/04(木) 21:17:01.27ID:DdgoFlsT>glVertexPointer(2, GL_DOUBLE, 0, points);
のpointsのメモリ確保やデータ設定のあたりが怪しいんじゃないのかな。
0304デフォルトの名無しさん
2014/12/04(木) 22:02:19.52ID:RqHblQpFありがとうございます
>>303
データに変な値?が入っていたので原因を探ってみたところ、ゼロ徐算をしている部分がありました
点の数が多くなるとエラーになるのは点の数が増えるにつれゼロ徐算の確率が上がっていったということでしょう
0305デフォルトの名無しさん
2014/12/04(木) 23:31:46.34ID:5FDVs5ya徐さんじゃなくて除算だぞ。
0306デフォルトの名無しさん
2014/12/05(金) 09:38:02.30ID:X61S86+L0307デフォルトの名無しさん
2014/12/06(土) 01:25:07.60ID:NEyZXeMrまぁデバッグできるのは事実だが
逆にデバッグできないコードなんてあんのかよと
0308デフォルトの名無しさん
2014/12/06(土) 08:25:34.36ID:bJbTERPH今はそんなに無いと思うが
0309デフォルトの名無しさん
2014/12/06(土) 11:55:09.30ID:2mAad9lk浮動小数点数だと計算結果は値によってNaNや正・負の無限大になるらしい
http://ja.wikipedia.org/wiki/ゼロ除算
0310デフォルトの名無しさん
2014/12/06(土) 18:35:54.95ID:NEyZXeMrFPU(x87)だって例外投げられる
http://msdn.microsoft.com/ja-jp/library/c9676k6h.aspx
今後OpenCLとかの普及で実行ハードウェアが隠蔽されるようになると
デバッグ事情はどうなるか分からんが
ただハードウェア・ドライバで結果が変わるのは今のOpenGLだって同じ
0311デフォルトの名無しさん
2014/12/07(日) 21:25:35.26ID:JkmXnZ9sちゃんとバッファがバインドされているかとか、確認する方法ってないでしょうか?
0312デフォルトの名無しさん
2014/12/08(月) 08:44:37.97ID:qdtwuYGKバインド状態はOS側ならいけるかもしれんがGLでみたことはないな
値は難しいだろうな
定数バッファなら望みがあるけど、頂点やテクスチヤはVRAMから読み出すわけで、パイプラインを途中でブレイクさせたり、排他を行う必要が出たりする
シェーダはインタプリタするエミュレータでデバッグしたほうがまし
0313デフォルトの名無しさん
2014/12/08(月) 12:31:07.49ID:F5WvpTDhシェーダ内はともかく、大抵の場合はデバッガがあるが、プラットフォームごとの話であって OpenGL の話じゃない。
0314デフォルトの名無しさん
2014/12/09(火) 22:39:47.30ID:cj75fTk3glut32.libを開くことが出来ませんってエラーが出る
freeglutにこんなファイルはありましたか?
0315デフォルトの名無しさん
2014/12/09(火) 23:06:31.06ID:mGOoEJnc無ければ自分でビルドすればいいじゃない
0316デフォルトの名無しさん
2014/12/10(水) 00:20:33.68ID:gpjtACknリンク対象から外せばいいんじゃない?
0317デフォルトの名無しさん
2014/12/10(水) 08:21:30.37ID:kNcmqsR30318デフォルトの名無しさん
2014/12/10(水) 18:10:39.28ID:LNrAj2kCそれを聞いちゃいけないのってこのスレのルールなのか、あなた個人の好みなのかどっちなの?
0319デフォルトの名無しさん
2014/12/10(水) 18:11:05.49ID:LNrAj2kCそれを聞いちゃいけないのってこのスレのルールなのか、あなた個人の好みなのかどっちなの?
0320デフォルトの名無しさん
2014/12/10(水) 21:39:57.45ID:7P/sQ89x俺の親切さ。
例えばプラットフォームの名前を含めて検索すれば
android opengles debug
出てくるだろ。
質問でも荒らしでも連投でも、好きなところで好きに投稿したらいいが、ゴールがあるなら合理的にやった方がいいんじゃないかと思ってね。
0321デフォルトの名無しさん
2014/12/10(水) 23:10:29.19ID:XJMud60E多分freeglutを使ったコードってのがglutを使ったコードのコピペで、
#include "glut.h"ってのが入ってんじゃね
もしそうだとinclude pathのどっかにglut.hがあるとその中で glut32.libを#pragmaで使用してる
0322デフォルトの名無しさん
2014/12/10(水) 23:21:19.18ID:bNjJ39pofreeglutだけじゃopenglは使えないんですね
glutもインストールすれば良いということでしょうか?
>>321
glut.hではなくfreeglut.hをインクルードしています
0323デフォルトの名無しさん
2014/12/11(木) 11:43:25.82ID:3hv/AqEgじゃプロジェクトファイルとかmakaファイルとかでglut32.libをリンクしてんじゃないの
どっかでglut32.libを指定してるのは間違いないんだからそれをさがせば
freeglutを使うのにglutが必要なんていうことは無い
0324デフォルトの名無しさん
2014/12/11(木) 18:24:48.28ID:wQRb8mUNありがとうございました
追加ファイルにglut.libかありました
0325デフォルトの名無しさん
2014/12/11(木) 20:43:04.87ID:IkIAqIUeVBOをバインドして実行すると、
ERROR 'attribute' cannot be bool or int
と出るのですがどういうエラーなんでしょうか?
ivec4を vec4にすると動きますが・・・
0326デフォルトの名無しさん
2014/12/11(木) 20:57:50.77ID:KfC7wG75attributeはintかbool(またはそのベクトル型)は不可
0327デフォルトの名無しさん
2014/12/12(金) 07:26:08.23ID:9OX/9EQLどうもです
0328デフォルトの名無しさん
2014/12/12(金) 10:46:32.13ID:9OX/9EQLmat4 a = mat4(0);
でいいのでしょうか?
足し算は、 a += b のように書けますか?(bもmat4)
0329デフォルトの名無しさん
2014/12/12(金) 10:57:30.40ID:8BqNZxMW0330デフォルトの名無しさん
2014/12/12(金) 11:44:49.58ID:9OX/9EQLそこが原因がわからないけど
0331デフォルトの名無しさん
2014/12/12(金) 11:47:09.08ID:rt+9hUOc0332デフォルトの名無しさん
2014/12/12(金) 11:50:01.98ID:SpOFiBVQ何となくスキニングのコードを書いてるように見受けられるが
もしそうならマトリックスを足すんではなくてマトリックスで変換したベクトルを足すべきだな
0333328
2014/12/12(金) 14:52:11.73ID:9OX/9EQLいや、質問のやり方が正しいのか確認したかっただけです。
>>332
いかにもそうなんですが、
マトリックス足すのと、ベクトルを足すのとどう違うのでしょうか?
結果はほぼ一緒で、計算量はマトリックスを足す方が少ないと思うのですが。
またわからなくなったのですが、GLSLのif文で & や && を使うとエラーになったのですが、
複合判定するには ifを2重に書くしかないのでしょうか?
0334デフォルトの名無しさん
2014/12/12(金) 15:02:55.59ID:z5EZhpJA0335デフォルトの名無しさん
2014/12/12(金) 15:08:37.54ID:TR4vJ3E8&&は使える。エラーになったらエラーメッセージ読めよ。
0336デフォルトの名無しさん
2014/12/12(金) 17:11:01.84ID:9OX/9EQL&&はいけたんですか!ありがとうございます!
0337デフォルトの名無しさん
2014/12/12(金) 17:35:07.88ID:SpOFiBVQ> 結果はほぼ一緒で、計算量はマトリックスを足す方が少ないと思うのですが。
実装がどうなってるかなんて知る由もないが一応計算してみた
前提として
マトリックスの演算はベクトル4つ分
マトリックスとベクトルの掛け算は内積4つ分
ベクトルをマトリックスに先に掛けておく場合
(vdot * 4 + vmul + vadd) * num
マトリックスを先に足しておく場合
(mmul + madd) * num + vdot * 4
↓
(vmul * 4 + vadd * 4) * num + vdot * 4
numは平均2とすると
vdot * 8 + vmul * 2 + vadd * 2
vmul * 8 + vadd * 8 + vdot * 4
特別少ないようにも思えない
ただマトリックスの演算がベクトル1つ分と同じ計算量だったら少ないわな
0338名無しさん@そうだ選挙に行こう
2014/12/13(土) 20:56:39.50ID:C+AFUo/30339名無しさん@そうだ選挙に行こう
2014/12/14(日) 18:30:03.28ID:9/s7Ot5X0~1で指定されるUV座標からどのように拡大/縮小の判定が行われているのか分かりません。
たとえば 0.1 ならそのままで、0.12189821 みたいに細かい数値になるほど拡大が行われるということですか?
0340名無しさん@そうだ選挙に行こう
2014/12/14(日) 18:59:26.87ID:UU8SzehV0341デフォルトの名無しさん
2014/12/14(日) 21:18:25.46ID:GvTi4A/L数値が細かいほど拡大って、どうしたらそういう発想が出てくる
0342デフォルトの名無しさん
2014/12/15(月) 02:37:52.31ID:PB1Gwp/2言い方が変だったが、マトリックス使わない方が計算量が少ないと言ってる
0343デフォルトの名無しさん
2014/12/15(月) 12:11:49.36ID:iadYDF3Fどうやったらいいでしょうか?
そういう場合はVBOにしないのでしょうか?
0344デフォルトの名無しさん
2014/12/15(月) 14:06:35.67ID:7YVa0JuN0345デフォルトの名無しさん
2014/12/16(火) 18:47:06.28ID:nn73WYDs展開されるならいいんですけど、動的に関数呼び出しとして処理されるならダメですよね。
0346デフォルトの名無しさん
2014/12/16(火) 21:00:52.76ID:rkKtwYlFインライン展開するぐらいの最適化はするだろう
インライン展開出来ないような再帰関数を作ったらどうなるかと思ったが
GLSLでは再帰がそもそも出来ないようだ
0347デフォルトの名無しさん
2014/12/16(火) 21:09:08.53ID:rkKtwYlF0348デフォルトの名無しさん
2014/12/22(月) 15:32:45.69ID:fI8cdu8hまたパフォーマンスはどうですか?
0349デフォルトの名無しさん
2014/12/22(月) 15:33:52.02ID:fI8cdu8h0350デフォルトの名無しさん
2014/12/22(月) 16:50:24.53ID:Pg2fOaOW0351デフォルトの名無しさん
2014/12/23(火) 01:54:10.16ID:nurK7yoNコンパイルエラーが発生するかGPUが落ちたら負け
ってゲームが浮かんだ
0352デフォルトの名無しさん
2014/12/23(火) 07:54:28.39ID:AH9u1lrA0353デフォルトの名無しさん
2014/12/24(水) 10:06:23.88ID:f3LdlvW9かつてDX9が世に出たばかりの頃、欧州のギーク向けサイトかどっかでHLSLのコーディング大会があって、
HLSLでコナミのフロッガーを(音無しでゲーム本編部分のみだが)移植した猛者が優勝してた。
もちろん初期化やキー入力、一定時間ごとにシェーダ呼ぶのとかはCPU側のプロセスだけど。
だから、GLSLでも頑張ったらできるんじゃなかろうか。
曲芸としてやるならともかく、実用にはならないと思うが。
0354デフォルトの名無しさん
2014/12/24(水) 15:12:10.08ID:wBt42oSo0355デフォルトの名無しさん
2014/12/25(木) 21:25:34.94ID:JxhCA2pxそれをやるなら、OpenCL勉強したほうがいいよ。
0356デフォルトの名無しさん
2014/12/26(金) 06:15:48.24ID:a+0IPXgX0357デフォルトの名無しさん
2015/01/03(土) 19:05:49.71ID:TGyLhjq6どこかにありますか?URLを教えてくだちゃい。(16歳巨乳少女)
0358デフォルトの名無しさん
2015/01/03(土) 19:43:42.38ID:p/hTnXOn0359デフォルトの名無しさん
2015/01/03(土) 19:46:58.51ID:AuGuhWCh0360デフォルトの名無しさん
2015/01/03(土) 21:08:54.45ID:W/QuRkochttp://content.gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System
英語が読めないなんて泣き言言わないように。
難しい言い回しや、話し言葉のような崩した言い回しは使っていないから、
まず読もうとしてくれ。
日本語の資料がほしいのなら適当にググればいい。
でも、紹介した資料が結局のところ一番分かりやすいんじゃないかと思う。
0361デフォルトの名無しさん
2015/01/04(日) 00:41:28.88ID:Bh5Ku2mW0362デフォルトの名無しさん
2015/01/04(日) 00:44:59.24ID:niExLIxN0363デフォルトの名無しさん
2015/01/04(日) 04:38:49.46ID:Yn64Vxy20364デフォルトの名無しさん
2015/01/04(日) 08:19:02.14ID:rPNV6OIsいまだにUBOについてまともに解説してる日本語がないの?
0365デフォルトの名無しさん
2015/01/04(日) 09:13:45.89ID:1ErtEbM30366デフォルトの名無しさん
2015/01/04(日) 10:04:11.21ID:Bh5Ku2mWテクスチャのアップロード時に勝手にスウィズルされるのが止められないのが問題
アップロードが遅くなる
0367デフォルトの名無しさん
2015/01/05(月) 12:16:17.94ID:A9O4oHD7メーカーもちゃんと端末のページに対応している拡張も含めて書いとけと言いたい
0368デフォルトの名無しさん
2015/01/05(月) 14:21:56.76ID:pDg15h7/3.0ならAdreno 300で使えるからそれで我慢
0369デフォルトの名無しさん
2015/01/05(月) 15:15:02.66ID:/IEsoaY+0370デフォルトの名無しさん
2015/01/05(月) 18:01:58.63ID:pDg15h7/インスタンシングとかトランスフォームフィードバックとか?
0371デフォルトの名無しさん
2015/01/05(月) 20:39:29.98ID:IP4LYG3Gここからが質問なのですが、x,x,x,…,y,y,y,…という様に配列の前半をx、後半をyにして頂点を打ちたいのです
どこをどういじればいいのですか?
0372デフォルトの名無しさん
2015/01/06(火) 11:17:02.12ID:ZrMh3HqA3.1は3.0対応GPUならドライバアップデートで対応可能って触れ込みだった気がする
だからマイナーバージョンアップになってるはずだけど、実際はそうなってないんだな…
マーケティング的な問題と面倒だからやんないんだろうな
0373デフォルトの名無しさん
2015/01/06(火) 20:09:20.69ID:QIYM1JY4そんな方法は無い
0374デフォルトの名無しさん
2015/01/06(火) 22:56:15.12ID:a1JT3SDg3Dの上に
あらかじめ透過されてるテクスチャをgldrawtexfoesで2Dで重ねたら、下の3Dが見えなくなるのですがなぜでしょうか
階層の問題なのかブレンドの問題なのか、考えられるミスを教えていただけるとありがたいです。
0375デフォルトの名無しさん
2015/01/06(火) 23:39:35.50ID:a1JT3SDgちなみにglteximage2dで透過画像は使えるようにしてあります
0376デフォルトの名無しさん
2015/01/07(水) 17:15:13.24ID:735nxo/y0377デフォルトの名無しさん
2015/01/07(水) 18:04:45.87ID:rWeBJLPsそもそもglDrawTexはアルファブレンドに対応しているのか?
て言うかなぜglDrawTex?
こっちの方が速いって書いてあるサイトもあるけど
沢山描画するなら1回のglDrawElementsで複数の矩形を描画したほうが良くない?
0378デフォルトの名無しさん
2015/01/08(木) 12:09:06.49ID:hEabaUPcどんな時に効果的に使えるのかよく分からん…うまい使い方とか何かあるのかな?
0379デフォルトの名無しさん
2015/01/08(木) 22:06:31.83ID:6byj37Xn初心者ですみません、ネットに載ってる事をそのまま実行しました。
やりたい事は3dの上にフィルター的なのを重ねたいのですが、
3dの方はdrawElementsで描画してるのですが2DはdrawtexfOESで全画面に描画がしています。
openglについてはまだまだ全然理解できていないのでできれば今のまま解決できるとありがたいです。
ちなみに、drawtex同士を重ねて描画するとちゃんと元テクスチャのアルファを認識しているのですが
drawElementsの3dの上にdrawtexの2dを重ねると下のdrawElementsが表示されません。
多分単純なミスだと思うのですが
考えられる間違いをいくつか上げていただけるとありがたいです。
0380デフォルトの名無しさん
2015/01/08(木) 22:29:43.54ID:6byj37Xnhttp://imgur.com/znfQ8es.png
見せたい事はこんな感じです。
上が見せたい描画で
下が斜めからみた感覚です。
0381デフォルトの名無しさん
2015/01/08(木) 23:51:03.52ID:JAYi2dXHそういうエロ質問には張り切っちゃう回答者がいるから、そうならそうと最初から申告するように
0382デフォルトの名無しさん
2015/01/09(金) 06:28:13.09ID:GHJOtrq40383デフォルトの名無しさん
2015/01/09(金) 11:12:26.63ID:bQFLimh0ビット反転とか
0384デフォルトの名無しさん
2015/01/09(金) 11:47:50.45ID:219uIpK5それはlogical(^^)じゃなくてビット演算(^)の方だ
用途が思いつかんから、一生使いそうに無いなw
0385デフォルトの名無しさん
2015/01/09(金) 13:23:21.29ID:z/2MPZTBif ( (a && !b) || (!a && b) )
だろ?
0386デフォルトの名無しさん
2015/01/09(金) 13:34:28.59ID:219uIpK5bool値が一致しない時ってのは分かるが、このシェーダーを実装する時には使うよってのが
あったら知りたいなと思っただけで
0387デフォルトの名無しさん
2015/01/11(日) 22:20:42.15ID:IYpOpbI62Dゲームだけど、画質が落ちるからパーティクルを大量に描画するのにだけ使ってみようかと思って
画質が落ちたり環境毎に対応している形式が違ったりして使いづらいイメージがあるから使った事が無い
後者は実行時に圧縮テクスチャを作ればいいかもしれないが、ローディングが長くなりそう
0388デフォルトの名無しさん
2015/01/11(日) 22:48:32.86ID:bUWINmynとは言え実測こそが正義でしょ
0389デフォルトの名無しさん
2015/01/11(日) 23:27:02.89ID:BV/S8JIG高速化というより限られたメモリで
解像度や面積(枚数)確保する方が主眼だと思ってた
テクスチャ書き換えながら使うよりは良いというイメージ
開発時は基本的に無圧縮でやるから
無圧縮の状態でパフォーマンス確保できてないと厳しい
0390デフォルトの名無しさん
2015/01/11(日) 23:48:18.66ID:+lmVBpZ5高速化に繋がると思われる
あと重要なのが同じ理由でMIPMAP
0391デフォルトの名無しさん
2015/01/14(水) 03:18:50.49ID:8IreY9YX解決しました
テクスチャを読み込みするときにバッファを初期化したら治りました
お騒がせしました
0392デフォルトの名無しさん
2015/01/22(木) 18:36:46.16ID:zbSdxijOそれにテクスチャを貼り付けるとライティング効果が消えてしまいます。
テクスチャにライティングをつけたい場合はどうすれば良いですか?
0393デフォルトの名無しさん
2015/01/23(金) 06:28:51.84ID:Hr76SqrY0394デフォルトの名無しさん
2015/01/23(金) 08:28:15.32ID:gBl7EXC10395デフォルトの名無しさん
2015/01/23(金) 19:23:01.24ID:aymEf6CRこれで本当によかったの?
http://codepad.org/5Icouxka
0396デフォルトの名無しさん
2015/01/23(金) 19:53:00.89ID:Hr76SqrY0397デフォルトの名無しさん
2015/01/25(日) 10:42:33.02ID:+p9stgEw一度32bitRGBAに変換してからだと正常に描画されるのに
ALPHA8+ALPHA+UNSIGNED_BYTEだと何だかザラザラした画像が出てくる
確かAlphaしかない画像のRGB成分にシェーダーからアクセスすると全部値が1.0になるとかはあった気はするが壊れたが画像が表示されるとかあったっけ
ES2.0も対応しようとすると、フォントキャッシュを入れるテクスチャを高速にリサイズする方法がない
FBOに書き出せば良いか?と思ったが8bitのテクスチャには描画出来ない事が多いらしい
もう4096x4096x32bitで作るかと思ったが、64MBはでか過ぎな気がするし
テクスチャにキャッシュするのは止めようか
0398デフォルトの名無しさん
2015/01/25(日) 22:25:07.56ID:kHXKzg8KRGBAで問題ないなら
RGBのところもαチャンネルとして使ったらダメなん?
0399デフォルトの名無しさん
2015/01/26(月) 16:03:16.04ID:YK5ngGdsテクスチャのフォーマットをGL_ALPHAにし、幅が9ピクセルの画像をglTexSubImape2Dでアップロードしたら、最初の行のデータは合っているのに2行目からずれていることに気付いた
gltexsubimage2d pitch
で検索してみたが、UNPACK_ALIGNMENTと言うのを1に変えれば良いのだろうか
試してみる
RGBAの場合と
ALPHAでも文字によってはちゃんと表示されているのはたまたま幅が4の倍数だったからか?
>>398
シェーダー周りのコードが複雑化するので、ご免それは無しで
0400デフォルトの名無しさん
2015/01/26(月) 16:22:40.17ID:YK5ngGdsGL_UNPACK_ALIGNMENTを初期値のままにしていなかったのが原因だった・・・
8-bitのテクスチャを使う時はこんな所も気を付けないといけなかったのな
0401デフォルトの名無しさん
2015/01/26(月) 16:23:59.99ID:YK5ngGdsUNPACK_ALIGNMENTの初期値は4だから8bitのテクスチャを扱う時は1にしないといけない
0402デフォルトの名無しさん
2015/01/27(火) 18:38:06.98ID:hInLeVTZhttp://snorp.net/2011/12/16/android-direct-texture.html
https://groups.google.com/forum/?nomobile=true#!topic/android-ndk/-_1pM6as-4M
glReadPixelsをEGLを使って高速化する方法?
EGLを使えばES2.0でもテクスチャを高速にリサイズ出来るかと思ったが
難しいし動かない環境が多いようだ
リサイズは諦めるしかない?
最初からテクスチャを大きくしておくか、キャッシュしないかしか無いな
Android4.3以上で対応機種ならES3.0でPBOもあるだろうけど、そんな普及してないし
0403デフォルトの名無しさん
2015/02/01(日) 10:37:13.32ID:2Q//H+SmWindowsは未だにDXVAしか無いみたいだし
調べてみたらIntelとNVIDIAは WGL_NV_DX_interopという拡張でDirectXのバッファを共有できるみたいだが
…AMDは?
0404デフォルトの名無しさん
2015/02/01(日) 10:40:50.26ID:2Q//H+Sm0405デフォルトの名無しさん
2015/02/03(火) 12:24:52.13ID:0ppKh0wXGDCの3/5にglNext(次期OpenGL)の全貌が語られるっぽいな
実際に動くデモも用意されてるようだ
0406デフォルトの名無しさん
2015/02/03(火) 13:51:12.15ID:vbeiF6Sp0407デフォルトの名無しさん
2015/02/04(水) 19:51:17.74ID:o/mE3n2Uvec4.strqだと思ってrを使っててハマる…
0408デフォルトの名無しさん
2015/02/05(木) 04:16:25.46ID:MGibf2Xustd::vector<glm::vec3> v;
に頂点データ入れた場合、
glVertexPointer(3, GL_FLOAT, 0, v.data());
ってできるの?
というかできたっぽいんだけど、
v[0].zとv[1].xの間に隙間あるはずなのになんでできるんだ…?
0409デフォルトの名無しさん
2015/02/05(木) 04:42:16.41ID:NcyMIZRi隙間がないから
0410デフォルトの名無しさん
2015/02/05(木) 06:03:55.41ID:MGibf2Xu確認し直したらなかった。�dクス
アドレス出力してみてたのになにか勘違いしてたみたいだ
0411デフォルトの名無しさん
2015/02/06(金) 20:54:42.33ID:dBSIU1t/0412デフォルトの名無しさん
2015/02/06(金) 21:06:05.08ID:E8JTKxsc0413デフォルトの名無しさん
2015/02/06(金) 21:31:07.77ID:PNoWHx2c0414デフォルトの名無しさん
2015/02/07(土) 00:16:00.28ID:jVkbAda3SIMDのためにメモリブロックの先頭で
16byteアライメント取る必要があるって話なら
ユーザ定義のアロケータを指定すればいい
OpenGL関係ないけど
0415デフォルトの名無しさん
2015/02/07(土) 01:00:43.76ID:4elrtQUt基本的に構造体のアライメントはそこに含まれる最大のメンバに合わせられる。
vec3は3つのメンバが同じサイズだからpaddingを入れる必要がない。
0416デフォルトの名無しさん
2015/02/07(土) 01:08:53.99ID:VhMEhmVK思ったんじゃないかな?
実際SIMD実装になってるとそうなる(というか16byteアライメント必要な事と同義だが)
0417デフォルトの名無しさん
2015/02/07(土) 01:43:43.86ID:fvla7uNl0418デフォルトの名無しさん
2015/02/07(土) 02:09:01.94ID:VhMEhmVKベクトルのsize(というか要素数だよな…)指定ははまり所だ
0419デフォルトの名無しさん
2015/02/07(土) 12:33:43.15ID:5NH5ld2KGL の話題について言えば glVertexAttribPointer() なりで明示的に指定するんだからそれまで。それに渡すデータを格納するコンテナについては GL の埒外であり、>414 の言う通り OpenGL 関係ない。
0420デフォルトの名無しさん
2015/02/07(土) 12:46:32.38ID:VhMEhmVK> GL の話題について言えば glVertexAttribPointer() なりで明示的に指定するんだからそれまで。
コンテナの話しじゃなくてw分のスペースがあるかないかで3か4か変わるんだから関係ある話しだろ
お前が言ってんのはGL_TRIANGLE_STRIPで描画したいけどデータをどう格納したらいいか分からない
ってのをOpenGL関係無いって言ってるようなもんだぞ
0421デフォルトの名無しさん
2015/02/07(土) 14:23:15.60ID:dy/8sxAQ少なくともVisual C++だとそうなる
OpenGLの頂点バッファの各属性はアラインメントが4以上じゃないとダメって制限があるらしいが
それも満たすだろ
https://www.opengl.org/wiki/Vertex_Specification_Best_Practices
0422デフォルトの名無しさん
2015/02/07(土) 14:34:43.37ID:dy/8sxAQこの隙間は他の属性には使えない
という事がそこに書いてある
ushort3つのvec3はVC++でも6バイトだからこの問題は発生するな
と言ってもshort3つのvec3使う事って無くね?
0423デフォルトの名無しさん
2015/02/07(土) 16:44:07.13ID:fvla7uNlvec3 が6バイトでもvector や配列で隙間は「できない」からアライメントに合わないのでvec4を使いましょうってことかな
0424デフォルトの名無しさん
2015/02/07(土) 17:17:35.83ID:dy/8sxAQ間違えたかも
ushort3個の場合は隙間が出来るというより、 __declspec(align(#))でも使ってアラインメントを変更して隙間を「作っておく」か
バイト数が4の倍数になるように代わりにvec4でも使えばって事か
そうしないと正常に動作しない、と
どっちにしてもwは要らなかったのなら
wは使われない無駄な要素になる気がするが
0425デフォルトの名無しさん
2015/02/08(日) 13:39:41.99ID:6slRLnWu> コンテナの話しじゃなくてw分のスペースがあるかないかで3か4か変わるんだから関係ある話しだろ
3か4かで、glVertexAttribPointer() に渡す引数をどうしたらいいかというのは GL の話題だ。
渡すデータをどう用意するかは GL の外の話題だ。
GL 的には、 w があって無駄があったところで、stride が正しければ何の問題もない。
頂点列の要素を直接 SIMD 命令で扱いたいとか、ホスト側でvec4で扱いたいとか、そんな都合は GL には何の関係もない。
> お前が言ってんのはGL_TRIANGLE_STRIPで描画したいけどデータをどう格納したらいいか分からない
> ってのをOpenGL関係無いって言ってるようなもんだぞ
バイナリの並びをどうしたらいいかという質問なら GL 関係あるが、GL としては w 成分なんてあっても無くても構わない。ホストでしか使わないデータがインターリーブされていても構わない。
間違いを認めたくないからと言って無理に話を拡大するな。
もう一度言うけど、stride を正しく渡せばいいだけだ。
0426デフォルトの名無しさん
2015/02/09(月) 00:34:21.93ID:cWsl23IOOpenGLに限ったことじゃないのだけど、>>418の普段触る範囲ではOpenGLだけが難しい操作を要求している、という感覚なのだろうな。
0427デフォルトの名無しさん
2015/02/09(月) 11:45:05.16ID:rmehbRgl> 渡すデータをどう用意するかは GL の外の話題だ。
と
> バイナリの並びをどうしたらいいかという質問なら GL 関係あるが
は言ってる事が矛盾してるぞ
0428デフォルトの名無しさん
2015/02/10(火) 14:22:08.40ID:xcmiAtUyだとしたら君の意見は?
0429デフォルトの名無しさん
2015/02/10(火) 21:23:09.05ID:44JAvZF1悲惨なのはWebGLか
0430デフォルトの名無しさん
2015/02/10(火) 22:22:57.67ID:9R1/otM2毎フレーム変える頂点データにDYNAMICを指定してみたけど効果ないように思える
単なるヒントだって言うけどドライバは何かしてくんないんだろうか
0431デフォルトの名無しさん
2015/02/11(水) 00:08:20.28ID:cHTFVS1e0432デフォルトの名無しさん
2015/02/11(水) 00:42:11.39ID:rYuhkxn/どうせ誰も使わないだろうけど
0433デフォルトの名無しさん
2015/02/11(水) 00:47:34.85ID:OVDw0TNx大概はシェーダで出来ちゃう気がする
0434デフォルトの名無しさん
2015/02/11(水) 00:50:31.85ID:TfFe/slwglNextが出たらマルチスレッドに対応してないOpenGLなんて見向きもされなくなる
DirectX12,Mantle,Metalの最大公約数的なAPIになるのは間違いない
逆に言うとこれらのAPIとさして変わらないものになる
0435デフォルトの名無しさん
2015/02/11(水) 02:29:02.50ID:Ax7d7xjP0436デフォルトの名無しさん
2015/02/11(水) 12:19:06.34ID:qPIj7ERx0437デフォルトの名無しさん
2015/02/11(水) 12:27:56.29ID:cHTFVS1e分かってるだろうけど
glNextが発表瞬間にデバイスがglNext対応になる訳じゃないから
理論上ドライバアップデートで対応できたとしても対応するとは限らないし
見向きしなくて済むのは恵まれた人
見たくなくても見なきゃいけない
つい最近まで固定パイプラインの相手をしなきゃいけなかったように
0438デフォルトの名無しさん
2015/02/11(水) 13:52:40.31ID:HIUxZQ3pとか言っているけど全部STATICでも特に問題は起きた事ない
>>433
パーティクルとか?
ES2だと頂点の移動も全部シェーダーってのは無理じゃない?
0439デフォルトの名無しさん
2015/02/11(水) 14:00:40.56ID:Cq2Zt0wJ0440デフォルトの名無しさん
2015/02/11(水) 14:23:26.41ID:cHTFVS1e衝突判定用のオブジェクトは分けるもんでないの?
0441デフォルトの名無しさん
2015/02/11(水) 14:32:15.60ID:nRKk5Oa40442デフォルトの名無しさん
2015/02/11(水) 16:03:50.67ID:TfFe/slwもちろん保守的な意味でOpenGLは使い続けられるに決まってる
話題にならなくなるってだけだ
>>438
STATICで問題無いのはドライバというかGPUによるな
パーティクルはマトリックスで変形させるからシェーダーで問題無い
衝突は事前にCPUで済ませておけばいい
頂点データをいじるのはGPUに余裕が無い環境のスキニングとモーフィングだ
マルチパスでレンダリングする時は特にそうだ
あとモーフが一部しか変形しない場合はCPUでやってしまった方がメモリ的にも効率がいい
0443デフォルトの名無しさん
2015/02/11(水) 17:17:37.41ID:qPIj7ERxめんどくせーやつだな
0444デフォルトの名無しさん
2015/02/11(水) 18:56:13.75ID:HIUxZQ3pパーティクル一個ごとにglDrawElemetsを使うのか?それはそれであまり良いアイディアとは思えない。
ES2だからインスタンシングはない。
シェーダー変数に複数のマトリックスを入れるとしても入れられる数に限りがあるし、頂点バッファにマトリックスのIDも入れなければ。
VTFと浮動小数点テクスチャ対応なら、テクスチャに変換行列を入れることは出来るが、VTFは古いと対応していないGPUも多い。
殆どGPUでやろうとすると、結局ES3以上が必要になりそう。
全部STATICにして問題が起きるGPUってあんの?
0445デフォルトの名無しさん
2015/02/11(水) 19:41:41.73ID:TfFe/slw> パーティクル一個ごとにglDrawElemetsを使うのか?それはそれであまり良いアイディアとは思えない。
そんなわけない
やり方はある
> 全部STATICにして問題が起きるGPUってあんの?
今確認出来る環境がないがNVIDIAはそうだな
IntelはメインメモリをVRAMに使ってるせいかSTATICで問題無いのは確認した
0446デフォルトの名無しさん
2015/02/11(水) 19:42:44.31ID:TfFe/slw> やり方はある
ES2でっていう意味で(ES1は未確認なんでよく分からん)
0447デフォルトの名無しさん
2015/02/11(水) 20:38:39.83ID:HIUxZQ3pいやGeForceでもちゃんと動くんだけど??
0448デフォルトの名無しさん
2015/02/11(水) 20:54:50.63ID:TfFe/slwGPUでやるというのはマトリックスをGPU内で生成する方法だ
パーティクルのパラメータを頂点バッファに入れてシェーダーで最終的にマトリックスを生成すればいい
0449デフォルトの名無しさん
2015/02/12(木) 01:20:42.60ID:uzrA3DJKSTATICだからといって書き込んだらエラーみたいな話は無いでしょ
とまれ、どうせバッファ作る時に用途不明なんてのは稀なんだから
「俺の知る限りDYNAMICなど役に立たぬ!」なんて余計なこと考えずに
素直にusageを教えて差し上げりゃいいんじゃね
0450デフォルトの名無しさん
2015/02/12(木) 13:33:59.03ID:zzcdV3s/そのglNextってのが出てくるまで保留した方がいいのかな?
今のOpenGLで無駄にならずにそのまま移行できる?
0451デフォルトの名無しさん
2015/02/12(木) 13:46:54.79ID:OWm7+2Wj3月初めだっけ?の発表待つのもありかもしれない
個人的には今まで非推奨(将来的に削除される)機能が
削除される時期に来たかなとは思っているので
あんまり古いopenGLの資料は無駄になるかもしれない
逆に最新のものなら名前が変わるくらいでそうそう大きな変更はないと睨んでいる
0452デフォルトの名無しさん
2015/02/13(金) 02:33:37.82ID:9Kz7Xe65今までGLがやってくれてた部分を自分で実装するための新しい知識が必要になる
だから今まで何が出来てたのか、という知識は持っていて損はない
少なくともプログラマブルシェーダに関してはそのまま通用するし
0453デフォルトの名無しさん
2015/02/13(金) 08:49:53.40ID:BFv0EcSc0454デフォルトの名無しさん
2015/02/13(金) 12:20:43.27ID:8uFAEAYG・3DとComputeAPI(OpenCL)が分離していたのをまとめる
・OpenGLとOpenGL ESが分離していたのをまとめる
・ドライバで隠蔽されていたGPUとCPUの負荷制御をやりやすくする
・マルチスレッド(マルチコア)対応
・シェーダーの中間表現(IR)の導入
・タイルベースレンダリングのGPUもフルサポート
・ドライバのコンフォーマンステスト(適合テスト)の充実
こんなところか
個人的にはIRの導入がうれしい
一応難読化にもなるしオフラインコンパイルだからより最適化されるはず
あとはドライバがどこまで薄くなるかだな
今はOpenGL(ES)1のAPIが使えてるからまだ敷居が低くなってるけど
glNextはそういうのが一切無くなってシェーダーはもちろんだが、レンダーバッファだの
コマンドバッファだの同期とか全部理解しないと素のままだと何も出来なくなるのは間違ない
0455デフォルトの名無しさん
2015/02/13(金) 12:51:44.08ID:iQFp0dMa0456デフォルトの名無しさん
2015/02/13(金) 13:54:35.09ID:8uFAEAYG・ベクトル演算ライブラリ
・GLX、WGL、EGLのような初期化部分
・モデルデータの定義とローダー
この辺は相変わらず勝手にやってね状態なのかね
初期化部分はEGLみたいな共通の手順が用意される可能性は高い
モデルデータはglTFがあるからこれをglNextに対応させればいいだろうな
しかし結局は素で使わないでゲームエンジン経由で使う事が普通になるのかもしれない
0457デフォルトの名無しさん
2015/02/13(金) 19:35:45.91ID:XtjmR1ji0458デフォルトの名無しさん
2015/02/13(金) 19:39:39.98ID:iQFp0dMa0459デフォルトの名無しさん
2015/02/13(金) 19:45:25.16ID:Vn+DEHN90460デフォルトの名無しさん
2015/02/13(金) 19:58:45.32ID:WAp/hlC30461デフォルトの名無しさん
2015/02/13(金) 20:01:59.19ID:gRsKeB2m0462デフォルトの名無しさん
2015/02/13(金) 20:26:42.77ID:8uFAEAYGPS4は「PSSL」(PlayStation Shader Language)を使ってグラフィックスとGPGPUを
同じシェーダーで書けるようになってるようだ
> PS4と同スペックPCがあったとして,その上でDirectX 11.1やOpenGL 4.3ベースの
> グラフィックスプログラムを動作させたものと比べても,PS4のほうが圧倒的に高い性能で動作できる
↑こんな事言ってるし、PS4のAPIと近い感じにするのがglNextの意義だと思う
策定メンバーにはゲームエンジン作ってる人が中心になってるからPS4のAPIを知り尽くしてるだろうし
0463デフォルトの名無しさん
2015/02/13(金) 22:31:07.23ID:v7o1vyZw>・3DとComputeAPI(OpenCL)が分離していたのをまとめる
これComputeShaderだけじゃなくてOpenCLも?どっかに情報出てた?
0464デフォルトの名無しさん
2015/02/14(土) 00:46:15.84ID:5JA3zGZlOpenGLでもコンピュートシェーダーが実装されてるけど、グラフィック無しでは使えないのを
使えるようにするだけかもしれんな
それでもOpenCLがいらなくなる(統合される)とも言えると思う
0465デフォルトの名無しさん
2015/02/14(土) 07:16:29.95ID:ocCjNIfb0466デフォルトの名無しさん
2015/02/14(土) 15:41:51.83ID:SlvD5Eqk0467デフォルトの名無しさん
2015/02/14(土) 16:46:49.45ID:ocCjNIfb0468デフォルトの名無しさん
2015/02/15(日) 05:55:04.06ID:5puPdO/6OpenGLはテクスチャーを画面に送る機能だけにしても良いと思うわ
0469デフォルトの名無しさん
2015/02/15(日) 13:21:22.96ID:SSlwb3yD結局これ、ただの>>454の妄想だったのかね?
それともまさか、ComputeShaderとOpenCLを混同したとか。
0470デフォルトの名無しさん
2015/02/15(日) 13:42:13.43ID:uL6XdEu6普段は8にして
画像の幅のバイト数が8の倍数じゃない時だけ4以下にしようと思う
公式を見るとglReadPixelsを使う時は8にしろとかいてある
https://www.opengl.org/archives/resources/faq/technical/performance.htm
0471デフォルトの名無しさん
2015/02/15(日) 17:35:58.95ID:pAXS9/A00472デフォルトの名無しさん
2015/02/15(日) 18:01:03.11ID:/QGf0Sdgベクター形式画像は
同じ方式だと思うのですが
あってますか?
オープンGLはコンパイルしてあるってだけですよね
0473デフォルトの名無しさん
2015/02/15(日) 18:06:25.21ID:TTUR8i8s0474デフォルトの名無しさん
2015/02/15(日) 19:55:06.89ID:Yeli3JmX0475デフォルトの名無しさん
2015/02/16(月) 01:14:42.87ID:r0eZc6lZオープンGLで書いたプログラムをコンパイルしたものはベクター画像ではありません
0476デフォルトの名無しさん
2015/02/16(月) 01:46:18.56ID:zGKxniVfプログラムをコンパイルしたベクター形式画像と見なせる
(プログラムとも言えるしデータとも言える)
明確な線引きは難しいが
とりあえずOpenGLは
太さxで色cのペンで半径rの角丸長方形(t,l,w,h)を描いて色fで塗りつぶす
みたいな高水準な命令セットではない
とはいえ例えばGLSL Sandboxのスクリプトは
画像フォーマットと言っても通用するかもしれない
0477デフォルトの名無しさん
2015/02/16(月) 02:05:17.84ID:zGKxniVfttp://glslsandbox.com/e#743.2
PostScriptを画像データとするなら
こういったスクリプトが画像データでないとは言えないんじゃなイカ?
0478デフォルトの名無しさん
2015/02/16(月) 03:56:40.51ID:mZ7/C2hiビデオメモリかどっかにコピーされたのが実際のテクスチャメモリなんだよね
0479デフォルトの名無しさん
2015/02/16(月) 09:04:54.44ID:GwqcDOCHそうだけど
VRAMにアップロードしたデータが失われるコンテキストロストに対応するなら取っておかないと
ただコンテキストロストを検出して再アップロードするって
自分で書くとハードルが高いし
環境によっては殆ど起こらないみたいなので
対応しなくても良いかもしれない
0480デフォルトの名無しさん
2015/02/16(月) 10:36:27.19ID:V02mvTKs復帰時に再取得させるか削除しないかだな
0481デフォルトの名無しさん
2015/02/18(水) 07:40:22.98ID:qvl6rHoEそんな状態にしてリソースを保持し続けている方が異常だろ。
0482デフォルトの名無しさん
2015/02/18(水) 09:17:03.38ID:xRyhKuxQ扱いたいとき、どのようなやり方があるのでしょうか。
FBOの書き込み先のテクスチャを作るときに、たとえば
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, data);
こんな感じで深度値に偽装して割り当て、フラグメントシェーダーではout floatとした場合、シェーダーのデータ出力に失敗するようで1286を吐いてしまいます
仕方がないので、現在は
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_FLOAT, data);
として、R値だけを使っているのですが、float1つのためにその三倍のVRAMを確保するのはいかにももったいない気がしてしまいます
悔しいので glTexImage2D(GL_TEXTURE_2D, 0, GL_R32, width, height, 0, GL_R32, GL_FLOAT, data);として赤単色画像にしようとしたら、
GL_R32はまだサポートされていないと怒られてしまいました。
float要素ひとつが1テクセルに対応するような、うまいテクスチャの作り方があれば参考にしたいのですが、
どなたかお知恵を拝借できればありがたいです。
0483デフォルトの名無しさん
2015/02/18(水) 11:05:39.42ID:uTslBAvhはそれで良くて、gl_FragDepthに書き込めばいいんじゃないの?
0484482
2015/02/18(水) 11:32:43.21ID:OpNfKS0Nご回答ありがとうございます
出力変数をoutで指定して出力してたので、
glFragColorとglFragDapthの組み込み変数を使う方法がかえって頭から抜け落ちてました
コードに関しては、R32やR32Fはサポート外だったものの、GL_REDを指定して、データ単位にgl_floatやgl_unsigned_intを指定したら想定通りの動作になったため、他の部分に影響の少ないこちらの方法でいこうと思います
私の初歩的な質問にお手数とっていただきありがとうございました
0485デフォルトの名無しさん
2015/02/18(水) 23:20:13.07ID:Nwu/JC4cGL_LUMINANCE
GL_INTENSITY
0486デフォルトの名無しさん
2015/02/23(月) 20:38:55.72ID:1tXM0xOeES1.1の頃にあったglLineStippleのようなパターンを指定して破線を描画したいのですが、
どういった方法があるでしょうか。
texture2Dでパターン作成→
gl_FragColor = vcolor * texture2D(texture, gl_FragCoord.xy)
のようなことも試してみたのですが斜線や円弧を描画すると、
正しいパターンで出力されず困っています。
良い方法がありましたら教示下さい。
0487デフォルトの名無しさん
2015/02/23(月) 22:08:42.99ID:xmAqWFka0488486
2015/02/23(月) 23:36:20.32ID:tzSWPUMsありがとうございます。
uvを1Dにするとのことですが、uvのどちらかを常に0にして、distance関数で
距離を渡せば良いということでしょうか?
0489デフォルトの名無しさん
2015/02/24(火) 06:31:48.16ID:r2JEjWIDそのどちらかの 0 じゃない方に距離を CPU で計算して入れておく。
0 の方は渡す必要はない。
例えば xyz u xyz u xyz u ... のような頂点列を glVertexAttribPointer() で作成する。
つーか、エスパーって言われてるんだから、もっと必死に説明しない?
答える側よりも質問する側の方が多くの労力を使うべきだとは思わないか?
> 正しいパターンで出力されず困っています。
だってこっちにゃ分からないし、ならまともな助言は困難だ。
例えばどっかに最小限のプロジェクト一式あげればいい。
0490デフォルトの名無しさん
2015/02/26(木) 13:46:22.60ID:c0x9Oh30あとフレームレートを固定するならどんな実装方法あるかな
0491デフォルトの名無しさん
2015/02/26(木) 23:45:22.55ID:3YcdmEPqFPS固定方法はOpenGL関係なし
0492デフォルトの名無しさん
2015/02/27(金) 21:55:42.91ID:jWIxKLNsもう少しすれば、C#みたいに簡単にWindowsソフトが作れるような3Dソフトが
出てくるだろうな.Unityみたいな。
だが、おれはゲームには全く興味がない。Unityに期待するのは物理シミュレーション
と背景がリアリティにできることだ。一応、ベクトルのピッチ,ヨー,ロール角の指定
とクォータニオンが使えそうだがな。しかし,それよりも重要なのはマルチメディア
タイマーの正確なタイマー割り込みだ。OnTimerみたいな糞使えるか!
正式のNetFrameworkは使えるかもしれんが,mono版はどうなのか?
それともマルティメディアタイマーはNetFrameworkやmonoとは独立なものか?
0493デフォルトの名無しさん
2015/02/27(金) 22:48:38.29ID:qLq7jEUd0494デフォルトの名無しさん
2015/02/28(土) 11:51:33.77ID:+PdojbX5スレ違い。
ゲームも物理シミュも背景もベクトル演算もタイマーもUnityも.netも。
マルチメディアタイマーは Win32API。ググれよ。
一行目はFPSの話?なら DirextX は初期化時に指定すると Present() で同期してくれる。スレ違いだけど。
0495デフォルトの名無しさん
2015/03/01(日) 02:32:20.57ID:X0CVxi61あ、そう。知ってて言ってるんだけど。DirectX9でさんざん苦労したからな。
しかし、それがUnityみたいな糞ゲームソフト専用、それもmonoの上で動いてる
状態で使えるのか?と聞いているんだけど。
Windows上の.Netframework,C#で使えるのなら多分使えるでしょうよ。
だけど、monoが組み込まれていると聞くと不安になるじゃん。
0496デフォルトの名無しさん
2015/03/01(日) 08:47:06.93ID:7JAcdBvR何を言ってるのかさっぱり分からん
0497デフォルトの名無しさん
2015/03/01(日) 09:49:41.50ID:6ijce9uo0498デフォルトの名無しさん
2015/03/01(日) 11:45:10.12ID:7mHoCKoz0499デフォルトの名無しさん
2015/03/01(日) 12:11:22.72ID:X0CVxi61お前みたいな池沼にきいてねえよ。黙ってろ
0501デフォルトの名無しさん
2015/03/01(日) 14:17:29.59ID:LlN1UCfi0502デフォルトの名無しさん
2015/03/02(月) 03:59:08.68ID:YXZKaoyM0503デフォルトの名無しさん
2015/03/02(月) 08:08:56.49ID:ZUmh2kSf0504デフォルトの名無しさん
2015/03/02(月) 09:15:03.63ID:nKoS5yNc0505デフォルトの名無しさん
2015/03/02(月) 11:34:57.19ID:LtmuVP82スレ違いだって言ってるだろ。
> 状態で使えるのか?と聞いているんだけど。
Win32API も DirectX も .net Framework じゃねーんだから使えるわけねーだろ。少しは考えるか検索するかしろ。スレ違いだけど。
知ってて言ってるなんて言うなら、スレ違いも間違った知識も書き込まないで欲しいものだ。
つーか半年ROMれ。
0506デフォルトの名無しさん
2015/03/02(月) 19:53:21.90ID:4sJFPc+50507デフォルトの名無しさん
2015/03/03(火) 02:24:44.17ID:Xcc3C+8UglDrawElementsで描写した場合、
glDrawElementsの引数で指定したindicesが入ってくると思ってOk?
0508デフォルトの名無しさん
2015/03/03(火) 11:13:14.14ID:gcsDknOwhttp://www.phoronix.com/scan.php?page=news_item&px=Khronos-Vulkan-Graphics-API
> While Vulkan delivers highly-efficient graphics/compute, OpenGL and OpenGL ES will continue to evolve.
Vulkanは高効率なグラフィックス/コンピュートを提供するが、OpenGLとOpenGL ESは引き続き進化していく。
という事で、OpenGLとは別物という事になったっぽい
0509デフォルトの名無しさん
2015/03/03(火) 12:56:27.28ID:qFeHatvo0510デフォルトの名無しさん
2015/03/03(火) 19:29:30.46ID:C37q5ZeB誰も使わねーよ
0511デフォルトの名無しさん
2015/03/03(火) 20:01:30.34ID:gcsDknOwhttp://www.phoronix.com/scan.php?page=article&item=khronos-vulcan-spirv&num=1
まだ全部読めてないから単なる感想
シェーダーの中間言語はSPIRと言うようでOpenCLと共通になるようだ
(対応言語はGLSLとかC++とか)
あと書いてないけどOpenGLは最終的にはVulkanのラッパーライブラリになりそうだ
その方がドライバーが一つになるしいいと思う
0512デフォルトの名無しさん
2015/03/03(火) 20:20:24.20ID:gcsDknOwhttps://www.khronos.org/vulkan
普通にここ見た方が良かった…
0513デフォルトの名無しさん
2015/03/03(火) 21:38:16.83ID:nEEMYOt+0514デフォルトの名無しさん
2015/03/03(火) 21:52:40.78ID:QODsipDB上げてくれたりするのかな?
0515デフォルトの名無しさん
2015/03/03(火) 23:17:52.17ID:SYPkbviyって言われてたから一度すっきりさせちゃうのかな?
このままダラダラ拡張工事するよりそっちの方がいいのかな
使いやすければみんな移行してくれるだろうし
0516デフォルトの名無しさん
2015/03/03(火) 23:24:45.00ID:Gz+2v5XC互換性が無くなる以外のデメリットは無いだろうね
0517デフォルトの名無しさん
2015/03/04(水) 10:01:45.52ID:5uhGpq540518デフォルトの名無しさん
2015/03/04(水) 11:28:11.34ID:r+Qv6+bpドライバーの実装はシンプルになる訳だし、明日動いてるデモもやるし
Fahrenheitみたいに絵に描いた餅というわけではないよ
しかもSPIRは既にOpenCLで実績もある
0519デフォルトの名無しさん
2015/03/04(水) 12:14:52.72ID:r+Qv6+bphttp://blog.imgtec.com/powervr/trying-out-the-new-vulkan-graphics-api-on-powervr-gpus
VulkanのドライバーをPowerVR上で動かしてるデモ映像があった
下の方にAPIの一部が書いてあったけどプリフィックスはvkか…まぁいいけど
しかし予想してたけどAPIセットはかなり抽象的だ
もはやグラフィック的な命令はなくなってメモリだのコマンドバッファとかキューをいじる事に終始するんだな
OpenGLとはほとんど関係無くなるからVulkanスレが必要かもね
0520デフォルトの名無しさん
2015/03/04(水) 14:36:34.99ID:bYHomauYgDEBuggerでビューポートを1x1にしたり、テクセル取得を無効にすると速くなるから明らかにGPU側のボトルネック
テクスチャを拡大して描画を大量に行うのって遅いの?
最近のGPUなら余裕なのかと思っていた
0521デフォルトの名無しさん
2015/03/04(水) 18:20:51.91ID:x4QEPSD10522デフォルトの名無しさん
2015/03/04(水) 21:56:09.16ID:ash2xzd6http://www.4gamer.net/games/293/G029343/20150304076/
0523デフォルトの名無しさん
2015/03/04(水) 22:54:32.36ID:opxrEqbaという事はPS4(GNM)にかなり近いものになるって事だ
コンソールゲーム機並の薄いレイヤーを使えるのは楽しみだな
0524デフォルトの名無しさん
2015/03/05(木) 13:05:06.02ID:0EnLiuqK0525デフォルトの名無しさん
2015/03/05(木) 13:42:07.96ID:k1/uMwv3モバイルはPowerVRの対応が早いけど、OSのサポートとかも必要だから
対応機種が販売されるのは来年以降だろうな
あと>>523のMetalはMantleの間違い
0526デフォルトの名無しさん
2015/03/05(木) 14:08:27.14ID:0EnLiuqK0527デフォルトの名無しさん
2015/03/05(木) 14:31:09.74ID:qMMvI+32買い替えを促すはず
0528デフォルトの名無しさん
2015/03/05(木) 14:54:52.64ID:k1/uMwv3OpenGLES3.1以上対応してるGPUがターゲットらしいが、
そもそもモバイルだと3.1対応GPUはほとんど出回ってないと思う
0529デフォルトの名無しさん
2015/03/05(木) 16:55:14.46ID:XDn0tq2I能力はあるのにドライバが上位バージョン対応してないってのは結構ある
0530デフォルトの名無しさん
2015/03/06(金) 05:12:36.97ID:5iCVxz3vhttp://www.techpowerup.com/210398/nvidia-frees-physx-source-code.html
0531デフォルトの名無しさん
2015/03/06(金) 11:50:43.72ID:BnNW7/uWこれはOpenGLとは何も関係無いな
0532デフォルトの名無しさん
2015/03/06(金) 12:46:50.45ID:f+3piDkw0533デフォルトの名無しさん
2015/03/06(金) 13:12:46.39ID:UY349KBP0534デフォルトの名無しさん
2015/03/06(金) 13:34:15.27ID:o83AvVMt0535デフォルトの名無しさん
2015/03/06(金) 14:34:34.52ID:O+62yf/F半年ROMって欲しい。
0536デフォルトの名無しさん
2015/03/06(金) 14:45:27.25ID:f7Mlx/7Q0537デフォルトの名無しさん
2015/03/07(土) 08:41:28.11ID:3KyZhNX/https://www.khronos.org/assets/uploads/developers/library/2015-gdc/Khronos-Vulkan-GDC-Mar15.pdf
マルチスレッド対応ということでやっぱりOpenCLと似たような形になったね。
0538デフォルトの名無しさん
2015/03/07(土) 14:18:48.41ID:mxofLn9DLLVMとの変換には対応するつもりですから、いやホント、マジで
ってところにアンビバレンスを感じざるを得ない
GLSLはどうマルチスレッドに対応するのかね
0539デフォルトの名無しさん
2015/03/09(月) 11:55:34.11ID:gYKpluIXシェーダーがマルチスレッドになる訳じゃないぞ
更に言うとVulkanドライバが実行するのはSPIR-V(中間言語)で
GLSLはそれに変換するための1言語に過ぎなくなる
多分GLSLは過渡期に使われるだけでC++(C++14)のサブセットがメインになるはず
0540デフォルトの名無しさん
2015/03/09(月) 15:27:33.35ID:gYKpluIXhttp://vulkan-tutorial.com/assets/Khronos-Vulkan-GDC-Mar15.pdf
こっちの方がより詳しい
つうかファイル名も一緒だし最初こっちの方が見れてた気がするけど
いつの間にか簡単な方に入れ替わってるな…
0541デフォルトの名無しさん
2015/03/09(月) 18:53:09.78ID:p/uzbTQA0542デフォルトの名無しさん
2015/03/09(月) 19:22:30.27ID:gYKpluIXVulkanの方だとGLSLで十分な気がするけど、OpenCLの方では色々な言語で書けた方が便利そうだ
Java(バイトコード)→SPIR-Vなんて絶対有りそう
0543デフォルトの名無しさん
2015/03/10(火) 00:42:37.75ID:1xBIqwIz0544デフォルトの名無しさん
2015/03/10(火) 21:24:05.77ID:g1ZPrZ6Z使用する値を uniform で提供することに、パフォーマンス上の問題はありませんか?単一の値は
uniform で提供することが多いと思いますが、頂点シェーダーでしか使わない場合は、
vertexAttrib で渡すほうが低負荷なのかなと思いました。
0545デフォルトの名無しさん
2015/03/10(火) 21:49:50.71ID:jYuKkuM9普通は頂点によらず一様な値を参照する場合と、頂点毎に違う値を参照する場合だったら
前者のほうが早そうに思うものじゃないのか
0546544
2015/03/10(火) 22:03:24.24ID:g1ZPrZ6Zすみません、説明不足でした。正確には、「頂点シェーダーのみで使用される、
全ての頂点に共通の値を提供する場合に、uniform と vertexAttrib1f等、どちらが
低負荷か」です。vertexAttrib1f を使って共通の単一の値を提供したいです。
0547デフォルトの名無しさん
2015/03/10(火) 23:40:12.38ID:RkF6p7+XVulkanの方で呼び出し規約を合わせてOpenCLカーネルも呼べるようにならないかなぁ。
OpenCLやる気なさそうなNVIDIAもVulkanはフルサポートするだろうし、面倒くさい
Interopやらなくてもグラフィックと連携できるし。
0548デフォルトの名無しさん
2015/03/11(水) 01:22:14.69ID:+uQXnrW7uniform用のメモリは固定的に確保されているんじゃない?
そうだとすればフラグメントシェーダで使うか否かで
頂点シェーダでのパフォーマンスが変わるとは思えない
(気にせずにuniformを使えばいいんじゃね?)
使いどころとしてはこの動画が分かりやすかった
glVertexAttribPointer vs glVertexAttrib
ttps://www.youtube.com/watch?v=oGbMk1tjWHo
0549544
2015/03/11(水) 07:10:30.30ID:zxLoZv06特に問題はないんですね。uniform を使っていきたいと思います。
ありがとうございました。
0550デフォルトの名無しさん
2015/03/11(水) 12:17:39.50ID:TljJJujv頂点毎に違う値を渡す→attribute
全頂点で同じ値→uniform
0551デフォルトの名無しさん
2015/03/11(水) 21:55:54.16ID:XdPBt9Kr今のGPUだと4K,100万ポリゴン程度のレイトレースを30fpsで出来るん?
0552デフォルトの名無しさん
2015/03/11(水) 22:06:20.64ID:DfIYoSYU0553デフォルトの名無しさん
2015/03/11(水) 22:52:29.23ID:XnK+a5S40554デフォルトの名無しさん
2015/03/12(木) 03:17:24.25ID:Uf1LUGUxだからあえてglVertexAttrib1fを使うとどうなのかって
>>546で言ってるんでしょ
結果的にuniformで解決したが
attributeをuniform的に使うのは普通無駄なんだけど
ある時は全頂点で同じ値
ある時は頂点毎違う値を渡したいとすると
使える場面があるかもってのが>>548の動画
同じ値が入った無駄な配列を作ったり
uniform版とattribute版のプログラムを切り替えたりする必要がない
効果の程はわからんが
0555デフォルトの名無しさん
2015/03/12(木) 13:03:17.10ID:Qq6zOeICBlend modeってシェーダで再現できる?
シェーダで再現しようとすると書き込み先のテクスチャーからサンプリングすることになって
これは一般的に出来る保証はされてないはずなんだが
0556デフォルトの名無しさん
2015/03/12(木) 14:30:36.38ID:yGIdqSj4書き込み先はレンダーターゲットテクスチャにしたら良いだけ
0557デフォルトの名無しさん
2015/03/12(木) 15:04:56.44ID:ecEvhiSG0558デフォルトの名無しさん
2015/03/12(木) 16:52:28.23ID:yGIdqSj4特殊なブレンドをする時のために
全ての描画をRTTに行えば良かろう
基本的なのはglBlend*系の関数だけで出来る
0559デフォルトの名無しさん
2015/03/12(木) 18:35:02.08ID:Qq6zOeICopenglでのread/writeは未定義です
ttps://www.opengl.org/wiki/Framebuffer_Object#Feedback_Loops
疑問は
glBlendではこれが達成できているのか?それともいないのか?
ということになるでしょうか(glBlend系の関数をあまり使ったことがない)
0560デフォルトの名無しさん
2015/03/12(木) 19:28:37.25ID:eQxaE5Ys0561デフォルトの名無しさん
2015/03/12(木) 19:49:51.53ID:Qq6zOeICそのためだけにシェーダを捨てるのは現実的じゃあないですしね・・・ありがとうございます。
0562デフォルトの名無しさん
2015/03/12(木) 20:45:13.29ID:yGIdqSj4ポストエフェクトみたいな感じで
0563デフォルトの名無しさん
2015/03/12(木) 21:12:03.46ID:Qq6zOeIC重なった部分はzソートされてたとすると
そこそこ高級なシェーダと、重なりの合成処理は、
シェーダ+glBlend関数でもしやできるのか?というものでしたが
片方しか使えないとなると、そもそも1回のglDrawElementsじゃあ無理そうですね
0564デフォルトの名無しさん
2015/03/12(木) 22:13:58.40ID:Uf1LUGUx片方しか使えないって話がどこから来たのかも分からん
0565デフォルトの名無しさん
2015/03/12(木) 22:56:55.58ID:yGIdqSj4片方しか使えないとは言ってない
0566デフォルトの名無しさん
2015/03/12(木) 23:45:46.55ID:pDIWcnNdピクセルシェーダより後の工程にはstencil処理とかz処理とか入ってる。
シェーダ化されてないハードウェアロジックでの処理というイメージ。
パイプラインの図をどこかで見直してくるといいと思う。
0567デフォルトの名無しさん
2015/03/12(木) 23:54:19.04ID:Qq6zOeIC0568デフォルトの名無しさん
2015/03/13(金) 00:13:23.75ID:kEac2+pB凡人の思い付き程度なら既に誰かやっているはずだし
やられていないなら何らかの問題があると考えるべき
0569デフォルトの名無しさん
2015/03/13(金) 09:06:28.41ID:iHtCqyAoメモリ安いんだしZとフラグメントを10枚ぐらい保存し置いて
最後にがっちゃんこしたら駄目なんだろうか
0570デフォルトの名無しさん
2015/03/13(金) 09:36:56.77ID:Oaowwqwo0571デフォルトの名無しさん
2015/03/13(金) 09:55:56.52ID:5pVd+u900572デフォルトの名無しさん
2015/03/13(金) 19:04:12.65ID:VrEGunLIキャッシュヒットしなくなって遅くなるんじゃないの。
0573デフォルトの名無しさん
2015/03/13(金) 19:46:22.20ID:pgf80lUB0574デフォルトの名無しさん
2015/03/14(土) 13:15:00.07ID:uC43cjWr0575デフォルトの名無しさん
2015/03/14(土) 15:45:53.70ID:/3rV1UbV0576デフォルトの名無しさん
2015/03/14(土) 17:17:05.85ID:/pR8lfEgボリュームレンダリングは医療方面の需要から
この15年くらいでもっと普及するかと思ったけど
そうでもなかった
まぁ医療と娯楽その他では要件が違い過ぎるか
0577デフォルトの名無しさん
2015/03/14(土) 19:28:57.60ID:YhbeU6Hs0578デフォルトの名無しさん
2015/03/15(日) 00:42:23.85ID:zzD8LMvkそうだとすると、メモリに格納した三角形を自動でソートしてほしい。
他のタイルの処理を並列にしとけば追加の処理時間もいらないと思うけど。
ダメかな?
0579578
2015/03/15(日) 00:43:45.09ID:zzD8LMvk0580デフォルトの名無しさん
2015/03/15(日) 10:27:54.29ID:HbtsoE+lhttp://blog.icare3d.org/2010/06/fast-and-accurate-single-pass-buffer.html
0581デフォルトの名無しさん
2015/03/16(月) 17:36:41.11ID:CndUfgZmドリキャスのGPUはPowerVRだったけど確かα付きポリゴンのハードウェアソート機能があったはず
でも結局糞重いのか知らんけどCPUでソートするのが普通だったはず
そんで今のPowerVRにはその機能がなかったはず
全部憶測でスマン
普通は完璧にソートする必要があるのは一部だからCPUでやればいいんだよ
0582デフォルトの名無しさん
2015/03/16(月) 22:54:38.21ID:LIP69G5QCPU側での高速化テクニックが
ことごとく裏目に出る元凶な気がする
0583581
2015/03/17(火) 11:15:07.07ID:hv3bO6s6タイルベースじゃなくなったとは言ってないよ
それと高速化の手法なんて突き詰めればGPU毎にくせとか違う訳だし
PowerVRだけ特殊というわけじゃないと思うよ
0584デフォルトの名無しさん
2015/03/17(火) 13:53:09.10ID:hv3bO6s6http://pc.watch.impress.co.jp/docs/column/kaigai/20150317_693050.html
特に目新しい情報は無い
0585デフォルトの名無しさん
2015/03/17(火) 14:06:25.09ID:9PxdASsP0586デフォルトの名無しさん
2015/03/20(金) 22:14:08.06ID:48uWF2N00587デフォルトの名無しさん
2015/03/20(金) 23:08:37.53ID:hICNPk8K0588デフォルトの名無しさん
2015/03/21(土) 05:33:48.48ID:YhTU6zC60589デフォルトの名無しさん
2015/03/21(土) 19:07:40.92ID:OqDx15kK0590デフォルトの名無しさん
2015/03/23(月) 12:12:27.97ID:ANPHJbRz楽に行かないからこそ意味がある
0591デフォルトの名無しさん
2015/03/23(月) 13:02:31.60ID:ANPHJbRzhttp://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-Drivers-Command-List
Vulkanみたいにドライバーのオーバーヘッドを無くす拡張らしい
ここまでやるなら素直にVulkan使った方がいい気がするが、
OpenGLも進化して行く訳だからこういう方向に進化するんだろうね
0592デフォルトの名無しさん
2015/03/23(月) 22:09:39.56ID:ud9v3JlS楽にできる方がいいに決まってるだろ
意味が分からん
0593デフォルトの名無しさん
2015/03/24(火) 08:41:51.63ID:TeQ0Qq480594デフォルトの名無しさん
2015/03/24(火) 10:58:38.46ID:uj9iIi7gチューニングの捉え方が違うかもしれんが、普通チューニングっていうと
新しいアルゴリズムを考えたり、計算結果を事前にテクスチャに格納したりとか、
それらを全部計測してやっぱり最初のが良かったとかなると思ってた。
それとは別にNVIDIAがドライバ更新で毎回やってるけど、特定のゲームが20%速くなった
とかいうのもチューニングだとは思うが、それのことを言ってんのかね。
0595デフォルトの名無しさん
2015/03/24(火) 11:05:41.00ID:Hc8XM1d90596デフォルトの名無しさん
2015/03/24(火) 11:30:19.76ID:uj9iIi7g俺も最初見たときはDisplayListが復活したのかと思ったけど、DisplayListと
違うのはポインターを直に使えるのと、マトリックスとかを更新できるたりするようだ
根本的にOpenGLを変更してるけど、最近のOpenGLに対応してる場合は移行は簡単かも
しれないし、それでオーバーヘッドを0に出来るならもうこれでいいじゃんと思った。
それとNVIDIA使ってる人はもう試せるな
0597デフォルトの名無しさん
2015/03/24(火) 12:10:55.52ID:G9tATrYCこの辺個人差があるだろうからフレームの元にしかならん気も
ドライバのチューニングは過激なのだと結果まで変えてくるな
0598デフォルトの名無しさん
2015/03/24(火) 18:58:59.26ID:6/m8qIKl0599デフォルトの名無しさん
2015/03/24(火) 20:57:11.65ID:nwsc0Fsb0600デフォルトの名無しさん
2015/03/24(火) 22:27:15.83ID:AaZY5Tk6保守性のためにキャラクター表示数を1減らすとか論外
0601デフォルトの名無しさん
2015/03/24(火) 22:41:13.18ID:nwsc0Fsb> 楽に行かないからこそ意味がある
はこじらせすぎだろ
0602デフォルトの名無しさん
2015/03/24(火) 22:46:28.65ID:kCrbPI5F0603デフォルトの名無しさん
2015/03/24(火) 23:26:28.52ID:r0/0d9G90604デフォルトの名無しさん
2015/03/25(水) 12:16:50.58ID:4Ou36H7x執念とも言うがな
結局妥協して30fpsになるゲームなんて山ほどある
0605デフォルトの名無しさん
2015/03/27(金) 13:45:30.80ID:j+Tm5TZz4つの頂点に対してindices = {0,1,2, 0,2,3}とすると
gl_VertexIDに流れ込んでくるのは
indicesの値 (Radeon 7700)
{0,1,2,3,4,5} (intelHD 3000)
で違ってきてるんだけど、どっちが正しい?
0606デフォルトの名無しさん
2015/03/27(金) 23:09:12.72ID:j+Tm5TZz困るなあ
0607デフォルトの名無しさん
2015/03/28(土) 00:48:18.87ID:P1zMjfqJ0608605
2015/03/30(月) 17:30:24.32ID:IoC6Id9c0609デフォルトの名無しさん
2015/04/10(金) 02:34:57.24ID:UWzVHuW8OpenGL11ExtensionPackとかいうの使えば
OpenGL1.0でFBOできるじゃないかーーーーーーー!!
バカバカバカーーーーーーー!!
0610デフォルトの名無しさん
2015/04/10(金) 07:30:25.29ID:OzPHYRX60611デフォルトの名無しさん
2015/04/10(金) 11:16:43.22ID:82oE2Cxx0612デフォルトの名無しさん
2015/04/10(金) 12:00:41.79ID:lXPBCUxy以前FBOを使ったらIntelだけ落ちるとかあったんだけど
WindowsだとANGLE使ってDirect3Dにした方が安定する?
0613605
2015/04/10(金) 12:18:43.37ID:3eug+mK80614デフォルトの名無しさん
2015/04/11(土) 10:09:38.14ID:IIqKHz7P別にどんなサイズでも表示されるんだが
ガセ情報なんですか?
0615デフォルトの名無しさん
2015/04/11(土) 10:10:31.62ID:pDEVa35O0616デフォルトの名無しさん
2015/04/11(土) 11:11:38.49ID:OUYP+RJe最近のは2の累乗でないサイズのテクスチャも使えるが
パフォーマンスは低下する
メモリの節約より速度が重要な場面では使わないほうがいい
0617デフォルトの名無しさん
2015/04/11(土) 13:06:19.84ID:CBpS9Oeu0618デフォルトの名無しさん
2015/04/11(土) 17:41:23.86ID:yZiB2p6Sエラーが発生したらブレイクポイントで停止するようにしたのですが
いざ停止したらメインスレッドじゃない別のスレッドからコールバックされていて
問題となっているAPIの特定が難しいです。
APIを呼び出した時点で呼ばれるようにしたいのですが
そのような拡張はあるのでしょうか?
0619デフォルトの名無しさん
2015/04/12(日) 01:59:39.98ID:64mkhuLa利用を避けて開発するのに便利な設定方法とかあったら教えて欲しい
0620デフォルトの名無しさん
2015/04/15(水) 13:01:50.15ID:o+Ivw1XYどんなデバッガ使ってるか知らんけど、その停止してるスレッドに切り替えて
コールスタックの内容を見ればいいじゃない
単にデバッガを使いこなせてないだけだ
0621デフォルトの名無しさん
2015/04/15(水) 21:16:13.39ID:5/iNray50622デフォルトの名無しさん
2015/04/15(水) 21:21:28.45ID:B+jzVGXXglDebugMessageInsert でデバッグ情報埋めるのは?
0623デフォルトの名無しさん
2015/04/16(木) 18:18:28.26ID:GvArYVgr一つのモデリングデータだけであらゆるモデルを作ったりできるの?
0624デフォルトの名無しさん
2015/04/16(木) 19:44:36.17ID:4E4NMfdVえ?
スレッドにはメインスレッドと同じように専用のスタックが割り当てられてて
切り替えればいいだけじゃん
デバッガがショボくて切り替えられないってのなら知らんけど
>>622
いや別スレッドのブレークポイントで停止してるって言ってるじゃん
0625デフォルトの名無しさん
2015/04/16(木) 23:14:49.69ID:c6Dsb+ZRブレークで停止したスレッドが原因となるコールを行ったスレッドと違うから
それがどれかわからんと言ってるわけだろ。
OpenGLやマルチスレッドプログラムのデバッグを一度でもしたことがあれば
想像つきそうなもんだが。
0626デフォルトの名無しさん
2015/04/17(金) 07:11:30.87ID:R5VIrnT00627デフォルトの名無しさん
2015/04/17(金) 11:09:04.81ID:8PrTQP0K意味が分からん…
ブレークで停止したけど別スレッドだからコールスタックが辿れず分からん
って言ってるだけだろ
お前こそ経験があるくせに何トンチキな事言ってんのよ
0628デフォルトの名無しさん
2015/04/17(金) 19:02:10.65ID:JLMyhqaWエラーがブロックするならそうだろうけどさ
0629デフォルトの名無しさん
2015/04/17(金) 23:23:31.31ID:S+uJTsvE「ブレークで停止したスレッド」 が 「原因となるコールを行ったスレッド」 と 違うから
それがどれかわからん
こう書かんとわからんか?同じこと言ってるんだが。
0630デフォルトの名無しさん
2015/04/18(土) 11:11:35.84ID:WoePzRxl0631デフォルトの名無しさん
2015/04/18(土) 13:22:43.13ID:62rknHohだからそれは単にブレークを張る場所を間違えてるだけだろ
そうでない事を前提にしないと話にならない
0632デフォルトの名無しさん
2015/04/18(土) 14:27:06.30ID:AO0laqrYおまえら>>618読めよ。
0633デフォルトの名無しさん
2015/04/18(土) 17:49:02.21ID:QlV9QJku(;^ω^)
0634デフォルトの名無しさん
2015/04/19(日) 01:06:48.72ID:Tx8gss7I適切なアルファ合成モードっの係数って存在しない?
0635デフォルトの名無しさん
2015/04/19(日) 15:15:11.04ID:uZuLTj8M半透明テクスチャ「同士」っていっても
普通は半透明テクスチャが合成された不透明な背景との合成だし
マルチテクスチャで1回のパスで描画するって話なら
予め合成しておくことを検討すべきだし
そもそもシェーダ使うのかも分からんし
ライティングの有無でも話は変わるっつーかそんなの定義次第だし
テクスチャもαチャンネルの有無や乗算済みか否かで違うし
まぁ手段が変わるにせよ線型合成なら何とでもなる
オーバーレイとか非線型の合成なら一般には一筋縄ではいかない
0636デフォルトの名無しさん
2015/04/19(日) 16:09:54.42ID:hBGEN71tおまえ良い奴だな。
0637デフォルトの名無しさん
2015/04/19(日) 20:13:29.06ID:Tx8gss7Iすいませんありがとうございます。
問題整理して出なおしてまいります。
0638デフォルトの名無しさん
2015/04/28(火) 02:32:58.24ID:zhPP5Gad日本語の赤本(5版)は過去の書籍ってあって気になったんだけど
最新8版まで出てるらしい英語版の赤本ってどうなん?
0639デフォルトの名無しさん
2015/05/01(金) 14:43:48.77ID:Y4U2/oM3256色じゃダメなんですかあ?
0640デフォルトの名無しさん
2015/05/01(金) 15:17:21.96ID:XJUPDmr70641デフォルトの名無しさん
2015/05/01(金) 16:15:38.99ID:nrhzzZglでも圧縮テクスチャって環境依存で面倒だよね
0642デフォルトの名無しさん
2015/05/02(土) 14:30:21.48ID:4Ymqr4fFライブラリコピペしてるだけだから
ライブラリどこか書き換えないと無理なんですかね
0643デフォルトの名無しさん
2015/05/02(土) 14:45:50.14ID:OQbMYNcT0644デフォルトの名無しさん
2015/05/02(土) 17:28:05.13ID:sc+Lyyxg性能を限界まで引き出したいので無ければ圧縮テクスチャなんて必要ない
RGBA8で十分
0645デフォルトの名無しさん
2015/05/02(土) 17:55:43.00ID:sc+Lyyxgこんな対応をするらしい
https://www.opengl.org/wiki/Common_Mistakes#Paletted_textures
ややこしい事だらけだし
インデックスが混ぜられるから線形補間も出来ない
パフォーマンスも上がるとは言えないかもしれない
やっぱり32bitのテクスチャで良いよな
0646デフォルトの名無しさん
2015/05/02(土) 20:28:13.67ID:8yIitzF4256色PNGのてくすちゃあ貼り付けできました
わけわかりません
PCが故障してたんですかねえ
0647デフォルトの名無しさん
2015/05/03(日) 12:43:19.25ID:0WGoNRfm0648デフォルトの名無しさん
2015/05/03(日) 15:59:53.27ID:dpJZaX8WMantle(溶岩)がオープンに噴出したってことを意味してるんだろうけど
アホか
0649デフォルトの名無しさん
2015/05/03(日) 18:17:20.15ID:fzBqXCrG0650デフォルトの名無しさん
2015/05/04(月) 16:34:49.73ID:3h2niFmfcをkにするのは向こうの人からすると洒落てんだろうね
0651デフォルトの名無しさん
2015/05/05(火) 14:02:42.01ID:28W8yQ5l.NETとか命名した奴氏ねと思った。
0652デフォルトの名無しさん
2015/05/05(火) 15:34:15.45ID:9K31UNd+0653デフォルトの名無しさん
2015/05/05(火) 22:04:49.05ID:i47vmOuDCOMとかな
0654デフォルトの名無しさん
2015/05/07(木) 23:24:43.38ID:IQn5CiTp元ネタはStar Trek
0655デフォルトの名無しさん
2015/05/10(日) 18:21:09.94ID:ct3W+iyaOpenGL語を考えた人はバカですか?それとも意地悪ですか?
やってらんねえんだよ!!!!!!!!!!!!!!!!!!!!!
0656デフォルトの名無しさん
2015/05/10(日) 20:22:35.79ID:mUhFQHEp表示したいだけなら素のOpenGLじゃなくて各種ゲームエンジンやCADエンジンや可視化ツール使ったほうがいいよ
OpenGL使うにしても >>1 にあるようなのないとやってられん
0657デフォルトの名無しさん
2015/05/10(日) 23:03:39.76ID:5K1OjFrO0658デフォルトの名無しさん
2015/05/10(日) 23:04:16.22ID:5K1OjFrO0659デフォルトの名無しさん
2015/05/11(月) 11:48:24.85ID:wiQLtJ5H取っ掛かりが悪くなってるってのを何かで見たな
昔の話だがPS2でポリゴン1つ表示するのに3ヶ月ぐらい掛かったってのも聞いたな
0660デフォルトの名無しさん
2015/05/11(月) 12:28:02.94ID:0dxdb/XXシステムを把握するまでの時間込みでもそんなに要らねえよ
0661デフォルトの名無しさん
2015/05/11(月) 13:53:46.40ID:wiQLtJ5Hいらないってどっちが?
0662デフォルトの名無しさん
2015/05/11(月) 14:32:24.93ID:vdyacT/dにわかはロムってろ
0663デフォルトの名無しさん
2015/05/11(月) 14:41:00.20ID:wiQLtJ5Hもう少し分かり易く言うと色んなリソースの初期化に行数が必要ってことだよ
でやっとこポリゴンを描画出来るようになるまでの初期化に1000行ぐらい必要ってこと
だから1からっていうのはそういう意味
0664デフォルトの名無しさん
2015/05/11(月) 14:45:12.87ID:vdyacT/d何千行も使うわけない
0665デフォルトの名無しさん
2015/05/11(月) 15:31:39.45ID:CFzy8eXu時間つってるんだから分かるだろう?
0666デフォルトの名無しさん
2015/05/11(月) 16:05:50.62ID:B4DHapVyPS2でもポリゴンを表示するだけならそんなにかからない。
GIF 経由ならすぐに出る。一週間もかけたらかけ過ぎ。
最適化を見据えたレンダリングエンジン作っていて、最終形のフローでの最初のポリゴンが出るまでなら、初めての人は三か月かかるかもね。
つかVitaで1000行書く必要があるって、必要かどうかで言えば、サンプル改造なら自分で書く必要はない。
1000行はポリゴンを表示するための準備じゃなくてゲームエンジン全体の初期化の話だろう。
0667デフォルトの名無しさん
2015/05/11(月) 16:19:00.96ID:wiQLtJ5H基本的にその通り
最終形というか3D空間にポリゴンを表示するプロトタイプを全くPS2の知識無しでって事
ゲームエンジン初期化というか1からソース書いてポリゴン表示に至るまでね
0668デフォルトの名無しさん
2015/05/11(月) 16:31:24.18ID:CFzy8eXu最初きいはなだったのに
0669デフォルトの名無しさん
2015/05/11(月) 16:35:50.34ID:apqa0+t00670デフォルトの名無しさん
2015/05/11(月) 17:28:45.07ID:1aKsloCU0671デフォルトの名無しさん
2015/05/11(月) 18:05:17.75ID:wiQLtJ5H単に>>655に過剰反応してしまっただけだ…
0672デフォルトの名無しさん
2015/05/11(月) 18:13:25.45ID:wiQLtJ5H正確に言うとGIF PATH3経由かな
0673デフォルトの名無しさん
2015/05/11(月) 18:35:22.32ID:KlWQmRSe3Dは逆方向に進化してるから。
0674デフォルトの名無しさん
2015/05/11(月) 20:36:48.01ID:XzVfleFJ0675デフォルトの名無しさん
2015/05/12(火) 19:50:14.89ID:8Qouf/ZaPS2はそのSDKがなかったんだぜ
0676デフォルトの名無しさん
2015/05/12(火) 20:42:17.11ID:n8eyP+2l0677デフォルトの名無しさん
2015/05/13(水) 20:16:57.13ID:LZMh5Y9nVulkanもOpenGLより遥かに難しいだろうね
0678デフォルトの名無しさん
2015/05/14(木) 12:08:56.73ID:gHUa6+Seドキュメント見るとディファードレンダリングの時なんかに自前でタイリングして
レンダリングするのをGPUに伝える拡張っぽいな
で、GPU側でタイリング用のメモリというか機能を使うようになるから速くなるって事かな
自前でタイリングしながらレンダリングしてる場合は当然速くなるだろうね
0679デフォルトの名無しさん
2015/05/15(金) 21:19:22.81ID:6sHo0j1Kこれはひどい
STG界隈では有名なメーカーみたいなのに
http://i.imgur.com/QuwG2Mt.png
http://i.imgur.com/cb7wBJg.png
・大量のglDrawArrays+一回ごとに変換行列の設定が、最も動作の重い場面では1000回以上
・VBOを使っていない
・テクスチャの数が必要以上に多くて切り替えも多い
・Average Overdrawが23.12xで、フィルレート限界に到達していると思われる
・圧縮テクスチャを使っていない
https://wiki.mozilla.org/Platform/GFX
モバイルGPUのドローコールはデスクトップのそれよりとても遅いらしい
iOSだと古い機種でもあんまり遅くないらしいけど
・解像度が低いから
・CPUのシングルコア性能が高いから
・TBDRだから
・OpenGLドライバーのオーバーヘッドが少ない?
・フィルレートが高い?
色々考えてみたが正しいんだろうか?
ゲームのスレでも書いては見たが分かってくれる人は少なかった
0680デフォルトの名無しさん
2015/05/15(金) 21:39:39.70ID:6sHo0j1K1920x1080x23って多すぎだよね
でも数々のエフェクトを消さずに軽くする方法って無さそう
敵弾や爆発、数字などだけ低解像度のFBOに描くのはどうか、と思ったけど
最後に画面一枚分はOverdraw増えるよな
0681デフォルトの名無しさん
2015/05/15(金) 22:19:59.59ID:f1rHHBaKひどいとか言うなよ
そういう話はム板よりゲ製板向きじゃね?
0682デフォルトの名無しさん
2015/05/15(金) 22:52:24.49ID:6sHo0j1Kどっちもやったらダメな事って書いてあるのに…
Overdraw23xは俺の端末だとどう考えても処理しきれない量だ
どうにか8xぐらいにしてくれないだろうか
0683デフォルトの名無しさん
2015/05/16(土) 01:10:30.41ID:KeHRGZLDどれも生粋のゲーム屋からすると
ねーよ、ってレベルだな。
0684デフォルトの名無しさん
2015/05/16(土) 11:53:40.35ID:+zZkiY3dDepth-Cull Optimization of 2D Scenes for 3D Graphics Hardware
http://achurch.org/dco2d.pdf
このPDFではいくらかFPSが上がっている
アルファテストをするとか、上のレイヤーをRTTに描いて
そのRTTを元にフラグメントシェーダーでdiscard、とかより
Zテストの方が性能的にマシなんだろうか?
Zテストする方法だとあらかじめ画像の形と一致するポリゴンを用意しなくちゃいけないし
画像によっては使いづらいな
0685デフォルトの名無しさん
2015/05/16(土) 16:23:06.45ID:O0NSZRgCそのゲームとか全然知らんがDrawコールの数とかほとんどエフェクトだろ
普通に大量のエフェクトを表示したらそうなる(毎回マトリックスの設定とかもそう)
もちろん削減する方法はあるけどインスタンシングもないわけだし
遅くないなら別に問題無い
0686デフォルトの名無しさん
2015/05/16(土) 16:26:34.33ID:O0NSZRgC・大量のglDrawArrays+一回ごとに変換行列の設定が、最も動作の重い場面では1000回以上
・テクスチャの数が必要以上に多くて切り替えも多い
・Average Overdrawが23.12xで、フィルレート限界に到達していると思われる
完全にエフェクトの特徴
・VBOを使っていない
多分ビルボード(4頂点)の表示だけだから使ってないんだろう
・圧縮テクスチャを使っていない
エフェクトは圧縮テクスチャを使うと少し汚くなるから使ってないんだろう
0687デフォルトの名無しさん
2015/05/16(土) 16:59:58.62ID:+zZkiY3d>遅くないなら別に問題無い
そんなテキトーなやり方して遅くないわけないだろ・・・
glDraw*はモバイルだと高負荷だと書いたのに読んでないだろ?
0688デフォルトの名無しさん
2015/05/16(土) 17:28:15.75ID:+zZkiY3d敵の画像もエフェクト画像も何故か別のテクスチャになっているものが多く
テクスチャ切り替えを少なくしよう、等とは全く考えていないのが窺える
本当に必要以上に多い
モバイルGPUはフィルレートの制約がかなりきついんだから
それも織り込み済みで演出を考えるべきだ
場合によっては減らす、質を下げることも
0689デフォルトの名無しさん
2015/05/16(土) 17:47:32.37ID:3gCMyzVb「うごいているものをいじるな」という教訓もある
純粋にプログラム技術的な話にしてくれんかね
特定のプログラムにケチつけたいだけなら他所で
0690デフォルトの名無しさん
2015/05/16(土) 19:49:14.14ID:37vZLDD0コストをかけずに既存のフレームワークを使ってSTGを作ったんだと思う
OpenGL直入力なんて絶対やるわけないからな
0691デフォルトの名無しさん
2015/05/16(土) 20:53:17.07ID:S3WBL4DA>>679で
> iOSだと古い機種でもあんまり遅くないらしいけど
って書いてあるんだからそれが嘘ってなら知らんよ
例えDrawコールがCPU負荷の90%を使ってたってそれ以外の負荷は
単純なゲームならほとんど掛からないだろうから問題無い
0692デフォルトの名無しさん
2015/05/16(土) 22:36:37.98ID:+zZkiY3d何でそんな結論になるのか分からない
CPUがそのやり方でやる事と言ったらデータを送ることだけだ
GPUが長い時間をかけてコマンド実行完了するのを待つ事になるから、むしろ使用率は低下するだろ
使用率が下がるとCPUのクロック周波数も下げられ、ますます遅くなる
一度にたくさん送るより遅いのは分かってるから誰もそんなやり方はしないし
俺も試したことは無い
0693デフォルトの名無しさん
2015/05/18(月) 08:45:38.84ID:KQnBVf8z画像の完全に透明な部分もフィルレートを圧迫するよな
かといってアルファテストは重いんだよな
輪っかの中央部分をうまく描画しないようにすれば少しは節約になりそう
複数回に分けて描画とか
0694デフォルトの名無しさん
2015/05/18(月) 12:36:57.08ID:I8sSWQip何が言いたいのか分からんがインスタンシングが無い以上
>>679の状況はエフェクトの表示方法としてはいたって普通だぞ
誰もやらないってなら大量のエフェクトを表示するときに
「みんなが」やる方法を具体的に書いてよ
0695デフォルトの名無しさん
2015/05/18(月) 17:23:48.73ID:KQnBVf8zこういう方法が一般的。ここにあるのは回転に対応していない簡易な物だが。
http://d.hatena.ne.jp/setuna-kanata/touch/20100721/1279731858
Don't use more than a few hundred draw calls per frame on mobiles.
との事でドローコール1000以上は多すぎ。
http://docs.unity3d.com/432/Documentation/Manual/MobileOptimisation.html
ここにTexture Packerというテクスチャを纏めるツールの対応エンジン一覧があるが、描画のバッチ処理をしていない物は無いだろ多分。エンジン名にbatchと付けてググって見るがよろし。
https://www.codeandweb.com/texturepacker
0696デフォルトの名無しさん
2015/05/18(月) 17:40:01.13ID:KQnBVf8zGPUで座標変換したいなら
シェーダー変数に複数の変換行列を入れれば一度のドローコールで複数回描画出来る
入れる所がES2ではあまり無いのが弱点
VTFと浮動小数点テクスチャに対応GPUならテクスチャに変換行列を入れる事も可能
こっちはたくさん入る
いずれにせよ1回のドローコールでオブジェクト一個だけをちまちまと描画し続ける合理的な理由が無い
0697デフォルトの名無しさん
2015/05/18(月) 21:14:06.29ID:I8sSWQip回転しないのは普通のエフェクトと呼べない
2つ目のはCPUで頂点変換しておくってじゃないか?(でDrawコールは1回になるが)
どっちが速いかは計測しないと分からんな
CPUで全パーティクルの頂点変換すると結構な負荷になるからな
>>696
別に減らす方法は無いとは言ってない
VTFやちょっとしかないuniformに行列突っ込むのが普通の方法か?
それと「合理的な理由は無いって」って言葉で表現しても無意味だ
(計測した結果があれば信用する)
0698デフォルトの名無しさん
2015/05/18(月) 22:20:27.21ID:YSjOAlWCまぁ素人さんは理想ばかりを追い求めて現実を見ないからしょうがないか。
0699デフォルトの名無しさん
2015/05/18(月) 22:56:00.18ID:KQnBVf8z遅いからだろ。てか1000回は無理ってさっきも言っただろしつこ過ぎ。
0700デフォルトの名無しさん
2015/05/18(月) 23:06:00.50ID:rX44LKnF>>679をよく見ろ
> iOSだと古い機種でもあんまり遅くないらしいけど
これ以上の情報は無いんだから憶測だけで物を言うな
0701デフォルトの名無しさん
2015/05/19(火) 00:11:28.35ID:7D36a0jB0702デフォルトの名無しさん
2015/05/19(火) 00:15:33.61ID:WNuI4NT50703デフォルトの名無しさん
2015/05/19(火) 00:26:37.21ID:MCnp8QvEglDraw*のパラメータと
渡された頂点バッファと行列を入れるメモリの確保がしんどい
事前に分かんないから呼び出す度にちょっとずつ用意して…こんなのやってられっかよ!
ってなる
それを上回るマシンパワーがあれば平気だが糞実装には変わらんな
0704デフォルトの名無しさん
2015/05/19(火) 01:00:49.32ID:aabNVn49何でglDraw*するたびにメモリ確保の話しが出てくるんだ?
メモリ確保とglDraw*のコール数は何の関係も無い
意味不明
そして>>679以外は計測値を出さずに憶測でモノをいってるのみ
0705デフォルトの名無しさん
2015/05/19(火) 02:49:52.49ID:eV7qdk0/勢い良く伸びて皆楽しく遊んでるみたいでおもしろそうね。ちょっと糞実装ソフトで遊んでみるか
0706デフォルトの名無しさん
2015/05/19(火) 05:28:35.49ID:20rcvciOドローコールが減っても、ほとんどのポリゴンが実際にソコソコの面積で描画されるならドローコールを減らしても割合として大した効果はない。
3Dゲームは遠くにあってほとんど見えないものが多いから、そういう典型的な場合にはドローコール削減は重要。
予定よりもずっとパフォーマンスが出てないなら、
・テクスチャを8枚 bind して頂点属性でどれを使うか指示する(ことでドローコールをまとめやすくする)
・スケールや回転角は頂点属性に突っ込んでシェーダで処理する
・ソートしたりして、同じドローコールにできるものは動的にまとめる
・VBO をダブルバッファにして、次回フレームで使う VBO を今回のフレームで作成して、次回フレームで先頭からフルに GPU を使えるようにする
とか、コストに見合うならやったらいい。
俺がスマホに3Dゲーム移植したときは、低スペックの機種はエンジンの改善でなんとかなるレベルじゃなかったから三段階の解像度モードを用意することで許してもらった。
0707デフォルトの名無しさん
2015/05/19(火) 09:00:07.82ID:MCnp8QvEいつ実行するかは実装次第だが効率化のためにすぐには実行しないのが普通だからコマンドの内容はコピーされる
>>679だとVBOも使ってないらしいから頂点配列のデータもコピーされる
https://wiki.mozilla.org/Platform/GFX/MobileGPUs#Draw-calls_are_expensive
ドローコールにはメモリ確保、コピー、データ処理が必要で
オーバーヘッドは三角形が一個だろうと千個だろうと同じらしいよ
タイルベースGPUだと三角形がどのタイルに属するかを判定してタイルごとのリスト作成なども行うようだ
0708デフォルトの名無しさん
2015/05/19(火) 09:10:13.69ID:MCnp8QvE0709デフォルトの名無しさん
2015/05/19(火) 10:52:53.79ID:CAoLqVwzOpenGLのどのAPIがDrawコールの度にメモリ確保が必須なのか指摘してくれよ
0710デフォルトの名無しさん
2015/05/19(火) 12:47:33.14ID:toTYxQq1そう思うなら自分でテストプログラム書いてみろよw全然速度出ないから
0711デフォルトの名無しさん
2015/05/19(火) 12:55:51.22ID:CAoLqVwz煽るならちゃんとスレ見ろよ
勝手にスレに掛かれてない事を言い出して寒いよ
0712デフォルトの名無しさん
2015/05/19(火) 20:26:22.16ID:oFquhP7Hデータの作り方や使い方が大事なのだよ。
実際それで動いてるゲームだってたくさんあるんだから。
0713デフォルトの名無しさん
2015/05/19(火) 21:49:56.96ID:MCnp8QvE0714デフォルトの名無しさん
2015/05/19(火) 23:51:25.17ID:20rcvciOそれで、仮にオーバーヘッドをゼロにできると何 % 速くなるって言ってるの?
頑張って最適化してもそこが上限だからね。
0715デフォルトの名無しさん
2015/05/20(水) 00:31:48.43ID:aTFChFiVバッチ処理しない版の結果はかなり壊滅的であった
60fpsにしたのとQuadBatchの最大数を1にした以外は、全く素のStarlingフレームワークだ
だが1にすると200個ぐらいでしか60fps出ない
シングルスレッドしか使えないフレームワークという事でStarlingを選択した
そんなゲームなら元々マルチコアに最適化なんてしてないだろうから
Adobe AIRのruntimeをインストールしてから起動して
BenchMark→Start BenchMark
http://i.imgur.com/JXDFpir.jpg
http://i.imgur.com/NFk2WQh.jpg
http://www1.axfc.net/u/3470606
http://www1.axfc.net/u/3470607
Adobe AIR
https://play.google.com/store/apps/details?id=com.adobe.air&hl=ja
0716デフォルトの名無しさん
2015/05/20(水) 00:37:50.85ID:aTFChFiVどれだけドローコール出来るかはCPU速度に依存するみたいね
同じ数しか出来ないなら一度に三角形を沢山送らないなら損でしょ
http://stackoverflow.com/questions/4853856/why-are-draw-calls-expensive
http://www.nvidia.com/docs/IO/8228/BatchBatchBatch.pdf
0717デフォルトの名無しさん
2015/05/20(水) 01:01:08.96ID:hCLFuKIs0718デフォルトの名無しさん
2015/05/20(水) 07:11:49.54ID:dYjOAeEchttp://wccftech.com/dx12-big-improvement-dx11-vulkan/
0719デフォルトの名無しさん
2015/05/20(水) 10:39:10.20ID:LciyTjT2DrawCallにかかるコストなんて10年以上前から知られてたんだし、
それを前提にどうやってエンジンとデータ構造を決めるかなんて出尽くしてる。
DirectXでもまったく一緒なわけだし。
それでもハイエンドなゲームはいくつも作られてきてる。
0720デフォルトの名無しさん
2015/05/20(水) 10:56:18.55ID:tlv9kwdn0721デフォルトの名無しさん
2015/05/20(水) 11:04:22.09ID:tlv9kwdnわざわざ指摘するアホも居るんだな
大量のエフェクトを表示する時にどの程度のDrawコールが許容できるかってな話なんだがな
単純なシューティングなんてDrawコール以外の負荷なんて無いに等しいんだから
別に問題ないだろうという事だ
別の方法としては事前にCPUで全頂点を変換してDrawコール1回にする事が
一般的な方法だろう
uniformに余裕がある場合やVTFが使えるのであればその方がいい
ES3.0以降ではインスタンシングがあるからそれを使う
とりあえずアホみたいな書き込みが続いたからまとめたよ
これでおしまい
0722デフォルトの名無しさん
2015/05/20(水) 15:54:28.82ID:7XNsN9ay0723デフォルトの名無しさん
2015/05/20(水) 16:03:29.23ID:UKJ+96Qhそれに合わせたエンジンの作り方をそのままGLで適用したら、そうなるだろうなぁという感想
0724デフォルトの名無しさん
2015/05/20(水) 17:01:19.90ID:aTFChFiV180 objects with 60fpsなんて激遅な速度じゃシューティングなんか作れないだろ
0725デフォルトの名無しさん
2015/05/20(水) 17:13:19.47ID:9dnMfS7iさもなくば何百万本売れようがそれはクソゲーである。
0726デフォルトの名無しさん
2015/05/20(水) 19:06:32.58ID:34OJAIaS0727デフォルトの名無しさん
2015/05/20(水) 20:00:08.10ID:tlv9kwdn最適化されたプログラムなんて存在しない
なぜなら余程の天才で無い限りはそれ以上に最適化できるから
よって最初から最適化に固執する奴は使えない奴。納期が全て
ディレクターがOKだしたらそれで完成。それ以上はいじらない
凄腕のプログラマーはディレクターが満足するそこそこの速度のを
凄い速度でコーディングする奴
しかし往々にして処理落ちが問題になる事があるが、そこをデータ側で
何とかしてもらえる交渉力がある奴も凄腕のプログラマー
交渉力が無い奴はプログラムで何とかしようとしてドツボにはまって
そしてクソゲーが生まれる
逆にみんなが納得して発売したゲームを、実は糞コードだったなんて
口が裂けても言えないし言ってもいけない
0728デフォルトの名無しさん
2015/05/20(水) 20:07:56.68ID:G5I9lHof0729デフォルトの名無しさん
2015/05/21(木) 02:40:23.45ID:27xowQhJ趣味グラマ、職人、求道者ならべつだが。
0730デフォルトの名無しさん
2015/05/21(木) 11:04:56.57ID:lIJtgEiBしかもcocosの最新版では特に意識しなくても勝手にドローコールのバッチ処理を行うらしい
cocos2dでリングみたいな透明な部分の多い画像を描くにはこれを使えば良いんじゃねって思った
http://discuss.cocos2d-x.org/t/new-feature-meshsprite-polygonsprite-updated/21153
もしくは32x32ぐらいのグリッドで分割して空白じゃない所は描画するというのも簡単にできるだろ
0731デフォルトの名無しさん
2015/05/21(木) 14:44:09.28ID:sPdlXLa10732デフォルトの名無しさん
2015/05/22(金) 06:53:34.02ID:WV27OSUv0733デフォルトの名無しさん
2015/05/22(金) 09:52:23.45ID:itNa7czf0734デフォルトの名無しさん
2015/05/22(金) 11:35:00.95ID:bf5KxQsWスレをちゃんと読め
処理落ちしてなければ問題無いだろ
それでも無駄遣いして駄目だった事例を言ってみろ
お前こそ実績も無い完全に知ったかなのがバレバレだぞ
0735デフォルトの名無しさん
2015/05/22(金) 12:30:58.12ID:VsvT7/vsもしかして処理落ちしてる派と、してない派の争いなのか
0736デフォルトの名無しさん
2015/05/22(金) 12:37:05.70ID:qvR2Cdflその上でレベル低いな
レベル低いのはどこまで許せるのかって話をしてるだけ
0737デフォルトの名無しさん
2015/05/22(金) 15:36:56.55ID:lZkNjMA6やってられんよな。
0738デフォルトの名無しさん
2015/05/22(金) 15:52:51.48ID:pHu2+5U/0739デフォルトの名無しさん
2015/05/22(金) 20:27:11.83ID:caY3MQb+0740デフォルトの名無しさん
2015/05/22(金) 21:15:24.17ID:83tq6zPVスマホはスペックに差がありすぎるから
すべての端末で処理落ちしないのは無理でしょ。
ユーザーが求めてるのも60FPSなんかじゃないし。
0741デフォルトの名無しさん
2015/05/22(金) 21:44:38.29ID:rY22llC20742デフォルトの名無しさん
2015/05/22(金) 22:31:42.88ID:RfQ/XaTp0743デフォルトの名無しさん
2015/05/22(金) 22:59:47.21ID:yWq8/hLr(1). バッファを追加数分用意して全部バインドする方法
と
(2). バッファは1つで、追加数分サイズは大きくし、
中身は追加数分分割されている方法
どっちが正しいの?
0744デフォルトの名無しさん
2015/05/23(土) 09:38:25.79ID:8A5XMO+X両方作ってうpしてみ。多分場面ごとにどちらがいいのか違うだろうけど。
0745デフォルトの名無しさん
2015/06/09(火) 16:34:24.13ID:6lMKPhi4http://www.4gamer.net/games/990/G999003/20150609022/
0746デフォルトの名無しさん
2015/06/09(火) 18:33:12.27ID:UGvL+rzoガラパゴスになる気もするが
0747デフォルトの名無しさん
2015/06/09(火) 19:19:36.20ID:nfTTcfci0748デフォルトの名無しさん
2015/06/10(水) 08:13:55.60ID:4BfUGmvzスレッドとで排他制御しながらひとつのコンテキストを使いまわすような造りにしています。
マルチスレッドの場合はスレッド毎に固有のコンテキストを作ってwglShareListsで共有する
やり方があるというのをどこかで見たんですが、そっちの方が普通なんでしょうか?
0749デフォルトの名無しさん
2015/06/10(水) 19:21:42.63ID:X+sSFCkO(格納値) = floor( (float値) * 256 )
それとも
(格納値) = floor( (float値) * 255 )?
0750デフォルトの名無しさん
2015/06/10(水) 19:33:10.27ID:W0KgL0/J0751デフォルトの名無しさん
2015/06/10(水) 19:34:02.60ID:X+sSFCkOサンクス
0752デフォルトの名無しさん
2015/06/11(木) 10:43:40.39ID:zCMuN9Oq根本的に間違ってるな
floorじゃなくてclampじゃないと結果がおかしな事になるだろ
0753デフォルトの名無しさん
2015/06/11(木) 12:35:06.15ID:vzeJIjTBが正しい希ガス
0754デフォルトの名無しさん
2015/06/12(金) 23:13:59.96ID:5kChOsLLそうじゃないと計算の途中で整数と浮動小数の変換を繰り返した場合に値がずれていく。
0755デフォルトの名無しさん
2015/06/13(土) 00:32:52.56ID:ZkFtP6doそもそも設計を見直した方がいいような・・・
0756デフォルトの名無しさん
2015/06/13(土) 00:39:24.06ID:+HguQo6y元の質問者が言っていないことを勝手に言い出して
話があさっての方向へ向かう
0757デフォルトの名無しさん
2015/06/13(土) 01:12:03.79ID:cxtr1bSF0758デフォルトの名無しさん
2015/06/13(土) 03:29:59.05ID:QLQDRi11それだと255と0に対応するfloatの値域が他の半分になるだろ
逆にずれてくよ
0759デフォルトの名無しさん
2015/06/15(月) 23:09:13.37ID:6T/Otjvohttp://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86
値域が半分だからずれるってのは意味不明。
0760デフォルトの名無しさん
2015/06/15(月) 23:46:05.26ID:DjiqP1ZC255段階もあるとイメージしづらいだろうから 0 〜 3 で考えてみ
0.0 〜 1.0 を取る float x を roundf(x * 3.0) すると
[0.0, 0.16..) → 0
[0.16.., 0.5) → 1
[0.5, 8.33) → 2
[8.33, 1.0] → 3
になるよな。1と2になる場合の方が0と3になる場合の倍ある
これを元のfloatに戻すために / 3.0 すると 0.0, 0.33.., 0.66.., 1.0 と等間隔になるよな
まさに丸め処理のバイアスそのもの
0761デフォルトの名無しさん
2015/06/16(火) 00:27:26.17ID:b0r2uqJr0762デフォルトの名無しさん
2015/06/16(火) 00:45:01.05ID:YKgehLpw0763デフォルトの名無しさん
2015/06/16(火) 00:51:18.34ID:R6aopbCf0.0と1.0は中央じゃねーだろ、しっかりしてくれ
0764デフォルトの名無しさん
2015/06/16(火) 01:17:38.03ID:WoCfaI2V0.00 ± 0.16 → 0
0.33 ± 0.16 → 1
0.66 ± 0.16 → 2
1.00 ± 0.16 → 3
ってことでは
0765デフォルトの名無しさん
2015/06/16(火) 02:26:29.44ID:WoCfaI2Vfloor( x * 255 + 0.5 )かな
0766デフォルトの名無しさん
2015/06/16(火) 03:52:40.40ID:R6aopbCf0.0-0.16 と 1.0+0.16 の分を含めないとその「中央」は意味が無いよ、ってことで
roundf (x * 256 - 0.5) == floor (x * 256 - 0.5 + 0.5) == floor(x * 256) //clampが必要
(ここからclampが必要無いように細工したら>>753)
0767デフォルトの名無しさん
2015/06/16(火) 08:21:47.37ID:b0r2uqJrfloor(x*256)ってのは0.0から1.0の範囲を均等に256レベルに分割するが、
逆に浮動小数に変換するときに難があるから画像処理ではあまり使われない。
そもそもOpenGLでは2^n-1で計算すると決まっている。
0768デフォルトの名無しさん
2015/06/16(火) 11:16:12.09ID:VOUSs81ex * 256って誤差とか以前に完全に間違いだろ…
xが整数(UBYTE)の時は0,1,2,…,254,255で256段階になっている
それをfloatにするには255.0で割る
元の整数に戻すのは当然255.0を掛ける
xが計算後で0.99999とかになってると255にならない場合があるから
気になる場合は適当に0.0001とかを足す
clamp(floor(x * 255.0 + 0.0001), 0.0, 255.0)
0769デフォルトの名無しさん
2015/06/16(火) 12:38:41.76ID:R6aopbCf頼むから勉強してくれ
そりゃグラフィックで1/256の更に小数点以下なんてどうでもいいかもしれんが
unsignedの乱数からfloat経由で任意の範囲の均等な整数の乱数にしたりとか、よくある話だろ
0770デフォルトの名無しさん
2015/06/16(火) 13:31:38.43ID:kj9nHT6oだからお前は何の話をしてんだよ
どこが間違っててどういう結果になるのか例を出せ
0771デフォルトの名無しさん
2015/06/16(火) 13:39:50.82ID:dzgBqGJj君に大きなヒントをやろう
普通の人は迷わない
0772デフォルトの名無しさん
2015/06/16(火) 13:42:47.48ID:WoCfaI2V均等じゃないとしたら...
0773デフォルトの名無しさん
2015/06/16(火) 13:44:33.60ID:kj9nHT6o0---1---...29---30--- (実際は0---1---...29---30)
と目盛りが振ってあると思ってるところ。とりあえず3bitしかないと仮定すると
0---1---2---3---4---5---6---7
となってる。要するに便宜上8段階と言っても隙間は7つしかない
だから0.0〜1.0にマップする場合には7.0で割る
7.0で割ったら当然元に戻すときは7.0を掛ける
0774デフォルトの名無しさん
2015/06/16(火) 13:57:48.73ID:kj9nHT6o>>768>>773は同じだ
0775デフォルトの名無しさん
2015/06/16(火) 14:03:15.75ID:WoCfaI2Vそれだと0,9999は6になっちゃって7になるのは1.0だけ。
実際に0.9 から 1.0までの色をグラデーションで描画すると、255の部分が1本の線だけってことはない
254の半分くらいの幅はある
0776デフォルトの名無しさん
2015/06/16(火) 14:18:11.03ID:kj9nHT6o>>768をちゃんと読め
> xが計算後で0.99999とかになってると255にならない場合があるから
> 気になる場合は適当に0.0001とかを足す
お前が254の幅の方が太いと思ってる当然だろfloorで切り捨ててんだから
254.5の色は254でもないし255でもないのをお前が勝手に254としてるからだろ
気になるなら0.0001じゃなくて0.5を足して四捨五入しろよ
0777デフォルトの名無しさん
2015/06/16(火) 14:38:13.38ID:WoCfaI2V俺はなにもしてないよ
gl_FragColor = vec4(0.999,0.999,0.999,1);
ってやって32bitカラーで画面に表示される色は255だよってだけ
0.5足して切り捨てでいいなら文句ないです
0778デフォルトの名無しさん
2015/06/16(火) 17:40:13.00ID:R6aopbCfint / n → float が領域を等分するのに、丸め(float * n) → intは等分しないって非対称性がある
その補正に0.0001なんてのは論外だが、0.5にしても他にしわ寄せが行ってる(255は勿論0の領域が半分になってる)
0779デフォルトの名無しさん
2015/06/16(火) 17:40:55.69ID:R6aopbCf0780デフォルトの名無しさん
2015/06/16(火) 17:45:24.78ID:kj9nHT6o>>781は責任重大だなw
0と255は両端の極値だ(用語して適切ではないが)
領域とか言ってるのは馬鹿も休み休み言え
0781デフォルトの名無しさん
2015/06/16(火) 18:00:34.32ID:kj9nHT6oOpenGLは
UNSIGNED_BYTE c = (2^8 - 1) * f (f = 0.0〜1.0)
と仕様で決まってる (書いてある)
0(0.0)---1---2---3---4---5---6---7(1.0)
f = c / 7.0 (cは3bitと仮定)
とした時に具体的にどういう数値の時に問題なのか気になるんで教えてくれ
0782デフォルトの名無しさん
2015/06/16(火) 18:36:01.29ID:WoCfaI2Vttp://glslsandbox.com/e#26060.0
0 と 255が半分になってるでしょ
0783デフォルトの名無しさん
2015/06/16(火) 18:55:01.06ID:kj9nHT6o0---1---2---3---4---5---6---7---.←ここを1.0にしろ。だから8.0で割れ
----------------0---1---2---3---4
ってすると、bit拡張した時に理にかなってるって事でしょ
けどOpenGLは(2^n - 1) * fって計算しているのは
シンプルに255⇔1.0、0⇔0.0として表現したいからだと解釈してる
(理屈より直感的な方を選んだと思ってる)
ただUVの指定だと256.0で割らないとまずいから使う状況による問題だった…
>>782
どうも、GPU(OpenGL?)は0.5を足してる事が分かった
0784デフォルトの名無しさん
2015/06/17(水) 14:22:25.64ID:vRtkBJz7お絵かき用途なら理屈抜きで
気に入った結果になるのを選べばいいんじゃね
0785デフォルトの名無しさん
2015/06/17(水) 17:33:07.43ID:wEqRZkAH0786デフォルトの名無しさん
2015/06/17(水) 21:02:15.40ID:smGSGY8aそれを想定しているからこそOpenGLの仕様は今のようになっているわけで。
>>766のように0を含む区間が+寄りになるやり方はやはり使い勝手が悪い。
+がどっちかなんて決まってないし。
0787デフォルトの名無しさん
2015/06/17(水) 22:38:14.56ID:qn0FIGKH>>784は何を想定してんだ?
いい加減くだらん煽りは不要
0788デフォルトの名無しさん
2015/06/18(木) 01:03:48.41ID:LEWEpnKJuv のオフセットとかかな。
法線マップは整数 -> float の片道だけだね。
探せば結構ありそうな気がするな。
0789デフォルトの名無しさん
2015/06/18(木) 11:20:47.14ID:4ooRsfQ9法線マップに限らずカラー値も普通はtexture2Dで取得したら
[0.0, 1.0]になってるから整数を意識することなんて普通無いだろう
uvはVTFでパラメータを読んだり整数値をシェーダーに渡してる場合ぐらいか
0790デフォルトの名無しさん
2015/06/19(金) 03:08:22.31ID:GHDHbS5rその結果ファイルを保存するたびに暗くなる
某有名ペイントソフトが昔あってな・・・
0791デフォルトの名無しさん
2015/06/19(金) 13:30:33.79ID:qhYDhyrm使う事はないだろうが念の為教えてくれ
0792デフォルトの名無しさん
2015/06/19(金) 15:04:18.63ID:FzphauAa0793デフォルトの名無しさん
2015/06/19(金) 23:35:45.46ID:GHDHbS5rpainter
0794デフォルトの名無しさん
2015/06/20(土) 08:59:51.69ID:KT+cKNXK0795デフォルトの名無しさん
2015/06/23(火) 11:00:25.12ID:QzWMGZKV市販の3Dソフトのようにならないのですが
どうすればいいですか?
0796デフォルトの名無しさん
2015/06/23(火) 12:26:58.45ID:y0iv9VtA0797デフォルトの名無しさん
2015/06/23(火) 17:25:12.47ID:jIW5PGn8市販の3Dソフトってのは何だ?
クオリティーが追いつかないのか単に見た目を合わせたいだけなのか
0798デフォルトの名無しさん
2015/06/23(火) 21:29:50.82ID:i587hson0799デフォルトの名無しさん
2015/06/23(火) 23:06:39.18ID:2v8ENXnU0800デフォルトの名無しさん
2015/06/24(水) 12:28:53.37ID:JeGbh1ztライトの向きに関係無く同じ明るさでよければいらないけど
結局ライトには依存する場合がほとんどなのでプログラム側で意識する必要はないだろう
ツール側で全頂点の法線の向きを同じにすればいいだけ
0801デフォルトの名無しさん
2015/06/24(水) 15:03:27.07ID:n9Qummvcフラットシェーディングを有効にしたとき
頂点の法線が参照されるのか?
頂点が法線を含まないとき
フラットシェーディングは効くのか?
ってことだろう。
論理的には無くても良さそうだが。
0802デフォルトの名無しさん
2015/06/24(水) 15:17:02.20ID:7WE3EumL普通は頂点に面ごとで同じな法線を設定して渡すんじゃないの
0803デフォルトの名無しさん
2015/06/24(水) 19:01:16.60ID:n9Qummvcどちらかというと普通だよね
0804デフォルトの名無しさん
2015/06/24(水) 19:15:45.16ID:7WE3EumL0805デフォルトの名無しさん
2015/06/24(水) 19:27:44.48ID:RCx1dp210806デフォルトの名無しさん
2015/06/24(水) 22:04:16.42ID:Jm8cQTrtglProvokingVertex
0807799
2015/06/25(木) 01:37:15.66ID:JsCcSH6I作りかけのプログラムで手軽にライティングを試したくて
フラットなら簡易に出来る機能とかあったりしないかと思ったのですが
フラットであっても頂点毎に法線設定するのが普通なのですね。
ジオメトリシェーダについてはまだ勉強不足ですが機会があれば、
glProvokingVertexは使ったこと無い関数なんで調べてみようと思います。
ご意見ありがとうでした。
0808デフォルトの名無しさん
2015/06/27(土) 18:59:47.33ID:ox7UbnmvgluLookAt( 0.0, 0.0, 0.0,
0.0, 0.0, -100.0,
0.0, 1.0, 0.0 );
にしているとき、ビュー行列の逆行列を以下でもとめて問題なく動作しています。
void inverse(const double src[16], double dst[16])
{
dst[0] = src[0]; dst[1] = src[4]; dst[2] = src[8]; dst[3] = 0;
dst[4] = src[1]; dst[5] = src[5]; dst[6] = src[9]; dst[7] = 0;
dst[8] = src[2]; dst[9] = src[6]; dst[10] = src[10]; dst[11] = 0;
dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1;
}
これをカメラから上方向をX軸又はZ軸にした場合に表示がおかしくなります。
gluLookAt( 0.0, 0.0, 0.0, -100.0, 0.0, 0.0, 0.0, 0.0, 1.0 );
又は
gluLookAt( 0.0, 0.0, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0, 0.0 );
以上でもビルボードとして動作させるには、逆行列をどのように求めたらいいでしょう?
0809デフォルトの名無しさん
2015/06/27(土) 20:48:26.30ID:qdpi4Q0u逆行列がおかしいのは確定してるの? もとの行列(回転成分だけ)と掛けて単位行列にならないことは確認ずみですか?
0810808
2015/06/27(土) 22:44:32.71ID:i3zeQtocもとの行列の回転成分と掛けて単位行列を作るという発想がありませんでした。
逆行列にする関数の問題ではありませんでした。
お騒がせいたしました。本件解決しました。
ありがとうございます。
0811デフォルトの名無しさん
2015/06/28(日) 19:23:30.53ID:TPpQRT7Vビデオカードによって動くものと動かないものがあるのですが
これはドライバ側が仕様に対応できてないと疑った方がいいですか?
0812デフォルトの名無しさん
2015/06/28(日) 19:29:31.04ID:OeLQkQMRどう動かないのか書けよ!
0813デフォルトの名無しさん
2015/06/28(日) 20:08:30.88ID:TPpQRT7Vちょっと正しく動かないのが多すぎて…。
1つ例に取るとmultiscissorだとGeForce GTX 780では正しく動作し
Radeon R7 250では左下の部分しか描画されません。
0814デフォルトの名無しさん
2015/06/28(日) 20:15:41.57ID:TPpQRT7VRadeonでは正しく描画されています。
0815デフォルトの名無しさん
2015/06/28(日) 20:58:21.64ID:OeLQkQMRwindowsかlinuxかgccかvc++か
とかも書けよ!
0816デフォルトの名無しさん
2015/06/29(月) 12:08:07.16ID:3GSeCduUむしろ複数のGPUで動作確認出来てるからいいじゃん
自分の環境だとうまく動いて別のGPUだとちゃんと動かないのは永遠に付きまとう問題だ
ちゃんと原因が分かれば得がたいスキルになりそうだな
0817デフォルトの名無しさん
2015/06/29(月) 12:55:37.34ID:iyfQpF7rどこの銀河系なのかも書けよな!!
あとねーちゃんの歳と3サイズと初体験の感想も書けよ!!
じょーしきねーのかよ
0818デフォルトの名無しさん
2015/06/29(月) 17:32:40.89ID:rhka4QzBスクェアエニックスの最新のデモみても、リアルとは程遠くて。50TFLOPSとかそれぐらい必要なんですかね。
0819デフォルトの名無しさん
2015/06/29(月) 18:38:57.30ID:6rfFQ7VPスペックよりセンスと素材と気力じゃね
0820デフォルトの名無しさん
2015/06/29(月) 18:53:55.42ID:k+90EXgh0821デフォルトの名無しさん
2015/06/29(月) 19:51:09.61ID:rhka4QzB0822デフォルトの名無しさん
2015/06/29(月) 20:10:39.43ID:3GSeCduU次元が違うとは思うけどね
根性が無くてもリアルになるってのがテクノロジーとしてのCGの行き着くところだろう
俺らはそれを理解して使うのみ (最近は理解するのも容易でないが…)
0823デフォルトの名無しさん
2015/06/29(月) 21:20:15.95ID:q/isNj+e映画レベルだと1フレーム1時間とかかけてるから60*60*30倍くらいマシンパワー要るよ
0824デフォルトの名無しさん
2015/06/29(月) 22:29:34.39ID:PjeoFJ6W0825デフォルトの名無しさん
2015/06/30(火) 08:14:25.86ID:cFpqiJzfリアルさはこれぐらいほしいんだけど、市販GPUでリアルタイムは全然無理なのかな。
これは演算量がありそうな髪とかないけど。下半身もないけど。
ゲームと違ってエロ目的なら背景はなくてもいいんだけど。
0826デフォルトの名無しさん
2015/06/30(火) 09:46:28.72ID:P7zpqpfB0827デフォルトの名無しさん
2015/06/30(火) 11:14:17.76ID:9Bck9L4q0828デフォルトの名無しさん
2015/06/30(火) 12:24:04.42ID:yYjQ+GUFglm使ったことがある人がいそうなので質問。
<glm/gtc/quaternion.hpp>で宣言されている
rotate関数の実装(quarternion.inlにある)間違ってない?
具体的に言うと最後returnされる返り値の掛け算の順序が逆な気がする。
#床井さんとこのtrackball.cppと見比べつつ試していて気づいた人
0829デフォルトの名無しさん
2015/06/30(火) 13:39:12.81ID:cam0ly7+それとも間違ってる気がするから調べてくれって話?
0830811
2015/06/30(火) 22:28:37.12ID:3QqcjKp7ロケーションの指定に直値を使用しているものでした。
ということで参考にはするがあまり信用しないようにします。
0831デフォルトの名無しさん
2015/07/01(水) 10:19:52.88ID:pgmfr78S床井さんに聞けば教えてくれるかも
0832デフォルトの名無しさん
2015/07/02(木) 01:53:04.00ID:mmVOJJRQquarternionじゃないんだけど,単純にポリゴンを拡大してから回転したいとき
glm::mat4 m;
m = glm:::rotate(m, angle, axis);
m = glm::scale(m, scale);
って順番で記述してたからそういう仕様だと思ってたよ
0833デフォルトの名無しさん
2015/07/02(木) 01:58:38.89ID:D1cbsXF30834デフォルトの名無しさん
2015/07/02(木) 02:03:06.93ID:mmVOJJRQOpenGLの行列は列優先、C++の行列(というかメモリアクセス)は行優先で互いに転置の関係にあうから
OpenGLのABがC++の(BA)Tと等しい → glmではBAの順に乗算するのではないかと思う
0835デフォルトの名無しさん
2015/07/02(木) 02:10:29.43ID:mmVOJJRQm = glm::translate(m, pos);
m = glm::rotate(m, rot,, axis);
m = glm::scale(m, scale);
平行移動忘れてた
0836デフォルトの名無しさん
2015/07/02(木) 03:08:04.95ID:zTS3C0rHglm::translate(pos) * glm::rotate(rot, axis) * glm::scale(scale)
0837デフォルトの名無しさん
2015/07/02(木) 04:12:48.53ID:8OlLb4+0glm::vector = glm::vec4(0.0,0.0,0.0,1.0);
glm::mat4 T = glm::translate(glm::mat4(1.0), glm::vec3(1, 2, 3));
の時、 vectorをTで移動するには
1. p = vector * T;
2. p = T * vector;
どっちが正しい答えになるかやってみれば
0838デフォルトの名無しさん
2015/07/02(木) 04:16:34.97ID:8OlLb4+0最初の行 vev4抜けてた
glm::vec4 vector = glm::vec4(0.0,0.0,0.0,1.0);
(vectorって変な変数名だった)
0839デフォルトの名無しさん
2015/07/02(木) 11:03:12.91ID:pe4WxkND列優先も行優先も行列のメモリに格納されてる内容は一緒だ
ライブラリ実装者がどっちにみなすかで右から掛けるか左から掛けるかが決まる
OpenGLは通常列優先だから右から掛ける (C++とか無関係)
0840デフォルトの名無しさん
2015/07/02(木) 11:55:33.10ID:bPjjDdQYCGでは普通、回転行列Rと平行移動行列Tがあったら回転してから平行移動させる行列はTRとして表すから
glmとかのライブラリはそういう書き方になるように実装されてるんだろ?
0841デフォルトの名無しさん
2015/07/02(木) 14:03:08.79ID:Vg94xIoY後半は行列の作り方に依存するってだけ
回転行列をRとするか転地Rとするか
それによってかける順が変わる
行優先云々とかとはまた別の話
0842デフォルトの名無しさん
2015/07/02(木) 17:00:12.55ID:8OlLb4+0glmに限って言えば、openGL MathmaticsとあるようにOpenGL、GLSLと同じように記述ができるように実装されている
http://glm.g-truc.net/0.9.6/index.html
全てのライブラリがOpenGLと同じような記述( v' = TRv )で書ける仕様になっているとはかぎらない
0843828
2015/07/04(土) 13:58:18.11ID:1TyiJx/O一応自作プログラムでtrackball.cppと同じ処理をglm等を使って書いて確認したつもり。
なので他の人はどう思うか聞いてみた。
>>832
あーそうか、行列のrotateに合わせたのか。
template<typename T >
detail::tquat< T >
rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
Rotates a quaternion from an vector of 3 components axis and an angle expressed in degrees.
リファレンスに↑あるんでqを更に回転したものを返すと思ったが違ったのか。
0844デフォルトの名無しさん
2015/07/04(土) 14:45:44.27ID:2+Becuj0無論テストが間違っている可能性もあるにせよ
0845デフォルトの名無しさん
2015/07/06(月) 21:42:33.26ID:vbwUxLvAいっちゃん速い方式って、どんなんなるの?
シェーダー書いて全部ピクセル描くのが速いか、一枚分毎をテクスチャにして、
それを数百枚貼るのんが速いか、とにかく速い方式を教えてチョンマゲ
800*600*600のグレスケデータでオンのピクセルは1割くらいっす
0846デフォルトの名無しさん
2015/07/06(月) 21:52:44.95ID:mHUPaf2cどちらが速いのか気になるとりあえずの候補があって、
なおかつ素材もあるのなら、自分で試せるじゃん。
試すためのプログラミング能力が無いとか、か?
0847デフォルトの名無しさん
2015/07/06(月) 21:56:20.01ID:swqGSHIc数百枚のビットマップファイルを連続的に描画して動画を作りたいって言う事か?
0848デフォルトの名無しさん
2015/07/06(月) 22:16:23.96ID:vbwUxLvA連続じゃなくて800*600*600のbitmapデータでオンのピクセルが1割の奴を
ドーンと表示してグリグリ動かしたいのデス!
0849デフォルトの名無しさん
2015/07/06(月) 22:18:56.75ID:vbwUxLvA作るのはテクスチャ版が楽そうなんだけど800*600のテクスチャを600枚
貼ると、なんとなく自分の環境では動かないような気がするのデスよ?
0850デフォルトの名無しさん
2015/07/06(月) 22:37:40.97ID:mHUPaf2cということは、シェーダーの方は問題なかったのか。
後一息じゃん。
テクスチャ貼る方も、気がするだけじゃなく、試してみたら?
0851デフォルトの名無しさん
2015/07/07(火) 08:41:20.08ID:SE5+KWfE0852デフォルトの名無しさん
2015/07/07(火) 08:48:18.41ID:oR9xV2kd>連続じゃなくて800*600*600のbitmapデータでオンのピクセルが1割の奴を
>ドーンと表示してグリグリ動かしたいのデス!
なるほど。物体の表面だけでなく本来は見えない内部のデータもとにかく全部読み込んで表示したいのね?
その後で断念を切り出して内部を見るとかするの?
0853デフォルトの名無しさん
2015/07/07(火) 09:00:19.49ID:w6oTZxTr0854デフォルトの名無しさん
2015/07/07(火) 09:00:31.79ID:Sx9/yLW09Gバイト!?
0855デフォルトの名無しさん
2015/07/07(火) 09:10:39.69ID:oR9xV2kdピクセルに描く方も、そんなにややこしくは無いんじゃない?bitmapのrgbaデータ使って点打つだけじゃない?
800x600x800程度の点群データなら十年位昔にDellの中クラスくらいのパソコンでもスイスイ動かせた経験あるから、
今のパソコンなら全然問題無いんじゃない?
0856デフォルトの名無しさん
2015/07/07(火) 09:19:05.98ID:6BBhWE2Fまあ最近のGPUボードなら収まる範囲か?
0857デフォルトの名無しさん
2015/07/07(火) 09:27:39.73ID:5sz5+1040858デフォルトの名無しさん
2015/07/07(火) 10:33:48.00ID:ma3xuZ7u高速化もへったくれもない
真横とか真上からみたりするには各ポリゴンに3Dテクスチャの設定を
すれば目的は達するんじゃないのか?
0859デフォルトの名無しさん
2015/07/07(火) 13:36:03.34ID:1luuJqtfなんでか32バイトで計算しちまったんだなぁテヘペロ
0860デフォルトの名無しさん
2015/07/07(火) 13:42:46.65ID:6BBhWE2F3dテクスチャ座標を持つ立方体ならサイコロそのもの
3dテクスチャ座標を持つ立方体を分割する様な平面なら、サイコロの分割面が表示される訳か
ボクセルの様な表示はちょっと工夫が必要か?
0861デフォルトの名無しさん
2015/07/07(火) 15:28:18.21ID:w6oTZxTrテスト用に64*64*64くらいの3Dテクスチャをサイズを合わせて立方体に
突っ込んでみたんデスけど…アルファの設定やらがダメダメなへたれ
状態で立方体の内部がうまく見通せないのデス…がっくし
で、ピクセルを全部描いた方がいいんじゃないかと思ったんデスけど…
0862デフォルトの名無しさん
2015/07/07(火) 15:48:48.80ID:Ts1uCmCS0863デフォルトの名無しさん
2015/07/07(火) 15:51:08.50ID:Sx9/yLW0どっちがいいかって言ったらテクスチャのがいいと思うけど
星雲みたいな半透明な雲みたいの表現できるし
0864デフォルトの名無しさん
2015/07/07(火) 18:17:37.62ID:feTeklmA中身が詰まってるモノ用だぞ (星がビローンと延びて表示されるはず)
ポイントスプライトとか別の方法にすべし
0865デフォルトの名無しさん
2015/07/07(火) 18:51:19.87ID:cVOy5SyV0866デフォルトの名無しさん
2015/07/07(火) 20:53:02.17ID:3YG+ylqQ0867デフォルトの名無しさん
2015/07/08(水) 00:26:48.57ID:gALBwwt00868デフォルトの名無しさん
2015/07/08(水) 10:59:54.29ID:NbPZiENdそれを3D的に表示するのに四苦八苦してる訳デス!
0869デフォルトの名無しさん
2015/07/08(水) 13:37:08.85ID:Mzi4j/WW0870デフォルトの名無しさん
2015/07/08(水) 13:42:32.74ID:PAkk6Hqa描画するだけで目的は達成出来るんちゃうん?
0871デフォルトの名無しさん
2015/07/08(水) 21:15:17.17ID:NwJfYym5テクスチャの転送はメインスレッドからやった方が良いだろうか?
最近のPCのOpenGL実装だとglTex(Sub)Image2Dを別スレッドで実行しても、
テクスチャが書き換わる所(ティアリング?)が見えたりしないようになったのか
かなり前にやった時はティアリングが見えたんだけど
今持っているPCだと特にティアリングは見えない
メインスレッドを実行するCPUコアの負荷を減らしつつ、どんなPCでもティアリングをしないようにと、
動画テクスチャのダブルバッファリングのような事をしようとしたが
無意味だったようだ
どうやっても送った通りの順番では描画されなかった
かなり悩んでから「OpenGLのコマンドは送った瞬間に実行されるわけじゃない」
ということを思い出した
2枚しかテクスチャが無かったが、これだとGPUが描画処理を実行中に書き換わるかもしれない
2枚よりを増やせば良いかもしれないけどメモリの無駄にも思える
0872デフォルトの名無しさん
2015/07/08(水) 21:23:13.80ID:51gCtBzDそうなんデスけど…ひたすら点を打つより少しでも速くできる方法はないかと
達人の知恵を借りに来たのデス!
0873デフォルトの名無しさん
2015/07/08(水) 22:34:10.00ID:G7l1BA1kクラスターのサイズが適当に小さくなったところで描画を打ち切れば良いじゃん。
0874デフォルトの名無しさん
2015/07/08(水) 23:11:40.24ID:C7UKQtvBglTexImage1Dでストライドを指定する方法ってありますか?
バッファオブジェクト経由の方法もありますが、できるだけopenglバージョン2で間に合わせたいです
0875デフォルトの名無しさん
2015/07/08(水) 23:37:29.27ID:gALBwwt0ボリュームデータ 可視化 とかでググって勉強した方がいいんじゃない
0876デフォルトの名無しさん
2015/07/09(木) 10:56:29.96ID:ta04dDOaティアリングが無くなったのは2つの理由があると思う
・GPUが速くなって画面書き換え以外の期間に完了するようになった
・ドライバが正しくCPUとGPUのリソース競合を解消するように同期している
GL関数を別スレッドで実行するのは未定義だったと思うけど
どっちにしろティアリングが発生する可能性はあるはず
ダブルバッファリングってテクスチャオブジェクトを2つ作成した?
ちゃんとやれば問題ないと思うしリソース競合が(同期が)無くなるから
パフォーマンスも良くなるはず
0877デフォルトの名無しさん
2015/07/09(木) 11:27:23.88ID:yvZx6GXv良く知らんけれど最近のグラフィックカードならヤッスイ奴でも
毎秒10億点くらい描画出来るんじゃないのか?
0878デフォルトの名無しさん
2015/07/09(木) 11:48:17.21ID:BKywrTZWないか
0879デフォルトの名無しさん
2015/07/09(木) 15:32:11.14ID:DxjX+QFrいまでも glBegin ... glEnd 使ってる本おおいもんな
0880デフォルトの名無しさん
2015/07/09(木) 16:25:04.91ID:yvZx6GXv最近はどうやって沢山の点打つんだ?
0881デフォルトの名無しさん
2015/07/09(木) 16:27:07.95ID:yvZx6GXv0882デフォルトの名無しさん
2015/07/09(木) 16:29:16.30ID:7g9w6aL60883デフォルトの名無しさん
2015/07/09(木) 18:07:40.94ID:ta04dDOa大抵一発目はエラーになったもんだ (で、Makefileやらソースを直す事になる)
それが最近じゃWebGLでみんな作ってあるからすぐ結果が確認出来て
いい時代になった
>>881もWebGLとかも候補に入れてみたら?
多少Webの知識が必要になるけど慣れたら便利だよ
0884デフォルトの名無しさん
2015/07/09(木) 18:50:02.82ID:7g9w6aL6http://wgld.org/
0885デフォルトの名無しさん
2015/07/09(木) 19:54:24.14ID:yvZx6GXvサンキュー。時代は進んでいるんだな。
0886デフォルトの名無しさん
2015/07/09(木) 20:25:19.01ID:aXzlg7or0887デフォルトの名無しさん
2015/07/10(金) 21:50:10.70ID:qznxEiy42つのテクスチャを順番に表示していたが
これだとどうしても表示順がおかしくなり駄目だった
番号の入れ換えではなく、片方にコピーにすれば良かったのかも?
ダブルバッファリングとCPUでのRGB変換をやめて
途中からY、U、V3枚に分けてアップロードし、フラグメントシェーダーでRGB変換もしてみた
そうするとIntelでだけポケモンフラッシュのようになる
glFinishを入れたらマシになるが、それでも画面が一瞬黒くなったりした
YUVに分けた場合は絶対無理だな
やはりメインスレッドからやらないと駄目という結論に達した
0888デフォルトの名無しさん
2015/07/11(土) 04:23:47.82ID:coKbQ2xfglFlush()
0889デフォルトの名無しさん
2015/07/11(土) 09:34:06.33ID:pI7L/MNB0890デフォルトの名無しさん
2015/07/11(土) 14:41:12.76ID:T6RAiQU2glFinish()はGPUの描画完了と同期するからマルチスレッドの場合に効果はあるだろうね
しかし同一コンテキストではマルチスレッドはサポートされてないから
うまく行かなくてもしょうがないね
0891デフォルトの名無しさん
2015/07/11(土) 14:49:16.62ID:T6RAiQU2普通はSwapBuffersをする時に内部で同様の処理がされてるはずだから
明示的に呼ぶ必要はないだろうね
glFinish()も画面をキャプチャするとかGPU負荷を計測するとかじゃないと
こっちも普段使うことはないね
0892デフォルトの名無しさん
2015/07/11(土) 17:54:30.58ID:Xee6MSFW大雑把にCPUとGPUを同期するしか方法がないからねえ
下手にマルチスレッドにするとGPUがら空きで逆効果になりかねんよ
0893デフォルトの名無しさん
2015/07/12(日) 00:35:56.24ID:npPZ86hdあるテクスチャを別のスレッドで書き換える,あるいは利用するためには
コンテキスト作成時にリソースを共有するように設定する…のって当たり前?
0894デフォルトの名無しさん
2015/07/13(月) 20:25:00.97ID://EA2BYtユーザーの見た感じで回転させるか迷ってます。
どっちがわかりやすくて操作しやすいでしょうか?
軸に沿って回転する場合、原点方向をみて時計回り、反時計回りなんでしょうか?
それとも原点と逆方向をみて時計回り、反時計回りなんでしょうか?
見た感じで回転する場合は基本右へ回転し始める方向を時計回りと呼べばいいと
思うのですが、奥と手前に回転する奴は、どっちを時計回りと呼べばいいんでしょうか?
0895デフォルトの名無しさん
2015/07/13(月) 20:27:32.61ID:pkwrWQPL先ず何を回転させたいのか書けよw
0896デフォルトの名無しさん
2015/07/13(月) 22:50:23.34ID://EA2BYtああ、プログラムは基本単純な3Dオブジェクトのビューアなので、ユーザーが
見たい角度からオブジェクトを見られるなら、別に何を回転しても結果は同じ
だと思います。
0897デフォルトの名無しさん
2015/07/13(月) 23:22:09.61ID:wEMFF3Ro0898デフォルトの名無しさん
2015/07/13(月) 23:35:18.07ID:rGLqV9zZオブジェクトが2つ以上ある場合は同じじゃないぞ
ボタンというのが分からんが普通マウスでグリグリやるんじゃないのか?
そんなのモデリングツールとか色々いじって気に入ったのを真似すればいいよ
0899デフォルトの名無しさん
2015/07/14(火) 09:12:03.70ID:J7Aelmzo単純なビューアなのでオブジェクトが複数あっても相対位置は買えないように
しないと意味がないですし、基本ひとまとまりのものしか表示しないです。
> そんなのモデリングツールとか色々いじって気に入ったのを真似すればいいよ
まあ、そうなんですがモデラート化だと言われたように複数のオブジェクトがある
場合とか逆に複雑だったり、ユーザーが見たいものを3D絡みの知識がなくても
操作できる方式がいいと思ったものですから。
0900デフォルトの名無しさん
2015/07/14(火) 13:15:26.35ID:7Tz/sGrk0901デフォルトの名無しさん
2015/07/14(火) 13:24:20.60ID:sVWjNIFt0902デフォルトの名無しさん
2015/07/16(木) 19:37:52.11ID:UthjCfnl0903デフォルトの名無しさん
2015/07/16(木) 21:34:11.07ID:/G583JfU0904デフォルトの名無しさん
2015/07/16(木) 22:07:26.60ID:drk7/ikr0905デフォルトの名無しさん
2015/07/16(木) 22:42:10.05ID:UthjCfnl来てるんですよ、これが。
で、OpenGL的な所は、あんまりやり直したくはないという我侭なんですけどね…
0906デフォルトの名無しさん
2015/07/17(金) 22:54:42.90ID:LEWEDbw3ちょっとしたopenglのプログラム作る程度ならglutで十分じゃないか?
0907デフォルトの名無しさん
2015/07/17(金) 23:06:04.27ID:hDnbbaqIちいさな glut (で閉じた)プログラム資産がたくさんあって、
それを大きなプログラムにまとめて、データ共有だとか
そういう機能を追加したいとかそういうことなんじゃないすかね
0908デフォルトの名無しさん
2015/07/17(金) 23:07:19.33ID:XOKJlMXM0909デフォルトの名無しさん
2015/07/18(土) 11:23:25.27ID:bbXfd9tD大量に動かしてたんだけど、色々もっとマシなシステムにしろって言われてる。
で、OpenGLの描画系は特にギチギチと高速化とかする必要がないんで
その辺りは元々のプログラムから、あんまり弄りたくはないんだよね…
0910デフォルトの名無しさん
2015/07/18(土) 13:11:11.48ID:kq6w1cCK今でもVBOって考えで正しいですか?
VBOより早い表示メソッドって無いですか?
0911デフォルトの名無しさん
2015/07/18(土) 13:43:44.49ID:fqp2uveG億単位なら必ず重なる頂点が出てくる
何をどう表示するかによって変わってくるだろ
0912デフォルトの名無しさん
2015/07/25(土) 19:53:25.82ID:+0kAmbd1結局クォータニオンで実装したからまあいいんだけど、どんだけ流用してんだよ。
出版社1社に間違えてませんかってメール送ったけどガン無視されるしw
行列で回転を実装する人はロドリゲスの回転公式と自分の本と見比べたほうが良いぞ。
ネットでも符号が違う情報も流れてるから。
0913デフォルトの名無しさん
2015/07/25(土) 20:19:26.77ID:TME83wCE0914デフォルトの名無しさん
2015/07/25(土) 20:57:40.68ID:N0xfeapg0915デフォルトの名無しさん
2015/07/26(日) 02:23:03.58ID:FuRY4Nuu本が三冊間違えててネットの解説も符号が違うらしいからいまだ存在しないと
も言える彼が正しいならな
0916デフォルトの名無しさん
2015/07/26(日) 08:24:10.39ID:VOpbEFzOsin-θ=-sinθ
cos-θ=cosθ
ってだけじゃないの?
0917デフォルトの名無しさん
2015/07/26(日) 09:12:26.75ID:mEqpLHZs本
xy(1.0-cosθ) - zsinθ
ロドリゲスの回転公式
xy(1.0-cosθ) + zsinθ
自分の持ってるopen glの本3冊すべて同じ間違い。
実装して挙動がおかしいので、半日試行錯誤。
最終的には数学のサイトで調べた。
0918デフォルトの名無しさん
2015/07/26(日) 09:26:58.43ID:g202HI9E俺が持ってるOpenGLの本にも同じ間違いがある(同じ本なのかも)
0919デフォルトの名無しさん
2015/07/26(日) 09:30:50.84ID:KUIB2BB80920918
2015/07/26(日) 10:09:47.82ID:g202HI9EOpenGLリファレンスマニュアル第2版
のglRotateの説明のところ
まぁ古い本だし、最新版や元の英語版では間違ってない(直ってる)かもだし、出版元(ピアソン?)のホームページには誤植校正一覧があるのかも知れないけどね。
0921デフォルトの名無しさん
2015/07/26(日) 10:29:30.78ID:mEqpLHZs自分の持ってる3冊とは違う。
都合4冊は同じ記述って事ですね。
なんか自分の指摘が間違えてる気がしてきたw
でも9つの行列の要素でそこだけ回転公式と符号が違う。
誰か詳しい人が断言してくれないかなw
0922918
2015/07/26(日) 10:39:55.49ID:g202HI9E本の方の誤記だと思う…けどなぁ。
俺も当時、本の数式を参考にプログラムしてうまく動かなくて、やっぱりネットで調べてそちらに従ってプログラムしたら、想定どおりに動いた。
0923デフォルトの名無しさん
2015/07/26(日) 10:49:10.01ID:mEqpLHZs自分も実際本通り実装して変だったし。
じゃあ自分も本の名前書きますw
初めてのOpenGL ES
マルチプラットフォームのためのOpenGL ES入門基礎編
Android OpenGL ゲームプログラミング
Rotate命令使用するなら関係ないけど、高速化のため一括描画する場合
回転するオブジェクトの座標だけ直にいじるから回転行列を使う人は気を付けよう。
クォータニオンで実装するなら関係ないけど本には書いてないから。
ただ別に本を貶める気はないよ。
情報が少ない中、凄い参考になってるから。
でもこれだけの本で記載が間違えてるとしたら、問題だと思う。
実際自分の持ってるopen glの本全部そうだったから、最初は全く疑ってなかったしw
0924デフォルトの名無しさん
2015/07/26(日) 11:36:01.18ID:GOCA7qcd0925デフォルトの名無しさん
2015/07/26(日) 11:44:43.45ID:VOpbEFzO0926デフォルトの名無しさん
2015/07/26(日) 16:26:36.02ID:KUIB2BB8>>923の最初の2冊は同じ著者。O'REILLYは正誤表のページあるけど載ってないね
古いリファレンスマニュアルが元かも。昔の赤本って結構間違いあったし
0927デフォルトの名無しさん
2015/07/26(日) 17:00:14.05ID:mEqpLHZs確認thx
皆気付いても出版社に報告しないのかね?
それとその中の1社にメール送ってスルーされたけど、他の本もそうだから出版社が正しいと思い込んでるのかも。
さすがに自分は3冊も違うっておかしいと思って書き込んだんだけど。
出版関係者がここ見てて、次からは修正してくれればいいけど。
メール出して返事すら来ないとか、損した気分になったからもう出すつもりないし。
0928デフォルトの名無しさん
2015/07/26(日) 17:41:02.18ID:FlzLI2sd0929デフォルトの名無しさん
2015/07/26(日) 17:56:50.51ID:VOpbEFzO動作確認では誤りは見つけられないんじゃないかな
自然言語の誤字・脱字みたいに
誰でも見つけられるわけじゃないし
0930デフォルトの名無しさん
2015/07/26(日) 21:32:49.76ID:ynXeU1ULまともに動く方が珍しい。
0931デフォルトの名無しさん
2015/07/26(日) 22:13:45.89ID:FuRY4Nuu0932デフォルトの名無しさん
2015/07/26(日) 22:39:43.95ID:ixAy1+UHglTexImage2D関数でGL_DEPTH_COMPONENTの指定などをして描画を行った後
glCopyTexImage2DやglCopyTexSubImage2Dなどを試しに使っているのですが
テクスチャとビューポートにクライアントサイズを越える値を設定すると
期待した結果が得られなくなるようで悩んでます。
テクスチャやビューポートの設定を変えてもクライアント領域外のデプス情報は得られないのでしょうか?
0933デフォルトの名無しさん
2015/07/26(日) 22:43:00.31ID:K+LoRwu60934デフォルトの名無しさん
2015/07/26(日) 23:05:59.11ID:KUIB2BB8FBO使ってる?
0936デフォルトの名無しさん
2015/07/26(日) 23:34:07.89ID:KUIB2BB8じゃクライアント領域外ってのは描画ウィンドウの外って意味?なら無理かと。
0938デフォルトの名無しさん
2015/07/28(火) 13:49:10.16ID:fgbDNgbF効率よく一枚にテクスチャーとして格納する手法って確立されてます?
0939デフォルトの名無しさん
2015/07/28(火) 14:58:39.52ID:icMJAr4cアルゴリズムはいくつかある
0940デフォルトの名無しさん
2015/07/28(火) 16:30:52.63ID:Heo+xNI5MaxRects BinPack
0941デフォルトの名無しさん
2015/07/28(火) 16:49:49.98ID:fgbDNgbFメモ
http://clb.demon.fi/files/RectangleBinPack.pdf
0942デフォルトの名無しさん
2015/07/28(火) 20:32:33.09ID:BeaM1eYkNP困難って書いてあるから最適解を見つける事は不可能って事か
トライアングルストリップ化に通ずるもんがある
0943デフォルトの名無しさん
2015/07/28(火) 21:54:31.12ID:Bfo/a7sv0944デフォルトの名無しさん
2015/07/28(火) 22:24:29.09ID:1mLisDB5https://www.codeandweb.com/texturepacker
0945デフォルトの名無しさん
2015/07/30(木) 14:27:35.97ID:Z/zMIUDwたとえば、0~10, 100~200 を描画するという感じです。
0946デフォルトの名無しさん
2015/07/31(金) 01:16:52.36ID:fyy+mgzd0947デフォルトの名無しさん
2015/07/31(金) 18:09:25.48ID:kkP63GlE以下のようなコードでテクスチャは問題ないのですがVAOだとうまく共有できません。
http://codepad.org/HzKyNBmk
テクスチャを生成したときの出力例
main : 1
main::<lambda_...>::operator () : 2
main : 3
main::<lambda_...>::operator () : 4
main : 5
main::<lambda_...>::operator () : 6
VAOを生成したときの出力例
main : 1
main::<lambda_...>::operator () : 1
main : 2
main::<lambda_...>::operator () : 2
main : 3
main::<lambda_...>::operator () : 3
これはglGenVertexArraysが共有処理に対応できてないでしょうか?
それともglfwMakeContextCurrentなどの使い方がまずいのでしょうか?
0948デフォルトの名無しさん
2015/07/31(金) 18:33:39.48ID:kkP63GlEhttps://www.opengl.org/registry/specs/ARB/vertex_array_object.txt
面倒ですがAPI関連はメインスレッドのみでコールするようにします。
0949デフォルトの名無しさん
2015/07/31(金) 19:43:41.87ID:ApHu1nmqいやマジで
0950デフォルトの名無しさん
2015/07/31(金) 22:47:55.89ID:fyy+mgzd0951デフォルトの名無しさん
2015/08/02(日) 18:26:50.94ID:aL0GyOAl単純な4角形が三角形になってしまうのだが
なんかありがちな理由ある?
0952デフォルトの名無しさん
2015/08/05(水) 13:39:43.34ID:qkwaYiiU0953デフォルトの名無しさん
2015/08/05(水) 17:52:04.42ID:qkwaYiiU<-- src\FTGL\FTFont.h -->
/**
* Render a string of characters.
*
* @param font An FTGLfont* object.
* @param string Char string to be output.
* @param mode Render mode to display.
*/
FTGL_EXPORT void ftglRenderFont(FTGLfont* font, const char *string, int mode);
FTGL_EXPORT void ftglRenderFontW(FTGLfont* font, const wchar_t *string, int mode);
<-- src\FTFont\FTFontGlue.cpp -->
// virtual void Render(const char* string, int renderMode);
extern "C++" {
C_FUN(static FTPoint, _ftglRenderFont, (FTGLfont *f, char const *s, int len, FTPoint pos, FTPoint spacing, int mode),
return static_ftpoint, Render, (s, len, pos, spacing, mode));
C_FUN(static FTPoint, _ftglRenderFontW, (FTGLfont *f, wchar_t const *s, int len, FTPoint pos, FTPoint spacing, int mode),
return static_ftpoint, Render, (s, len, pos, spacing, mode));
}
void ftglRenderFont(FTGLfont *f, const char *s, int mode)
{
_ftglRenderFont(f, s, -1, FTPoint(), FTPoint(), mode);
}
void ftglRenderFontW(FTGLfont *f, const wchar_t *s, int mode)
{
_ftglRenderFontW(f, s, -1, FTPoint(), FTPoint(), mode);
}
0954デフォルトの名無しさん
2015/08/05(水) 17:58:01.55ID:qkwaYiiUFTFont.h
FTFontGlue.cpp
FTLayout.h
FTLayoutGlue.cpp
上記のソースで const char * をレンダーする文字列への引数としている関数をすべて
〜Wという名称で const wchar_t * を取るようにしたものを追加した。
0955デフォルトの名無しさん
2015/08/06(木) 12:43:43.46ID:LJYIEqPTその後uvにそった形で画像を保存する方法がわかりません。
もしご存知の方がおりましたらご教授お願いいたします…
0956デフォルトの名無しさん
2015/08/06(木) 13:03:54.76ID:YP0GqHBQアジの開きみたいに全頂点をまったいらに開く事を言ってるのか?
「UV 展開」とかでググると色々出てくるけど基本的に非常に困難と思われる
0957デフォルトの名無しさん
2015/08/06(木) 13:29:13.55ID:y/VksE8c元のモデルにちゃんとテクスチャが貼ってあれば、そのまま使えばいいじゃん。
なんならダミーを貼っておいてダミーを上書きすればいい。
0958デフォルトの名無しさん
2015/08/06(木) 14:25:06.09ID:fw+KClsguv展開はすでにしてある状態となります…
そこに動的にテクスチャペイントしてペイント結果を画像として保存したいのです…
>>957
すでにuv展開してあるモデルにシェーダー側でtex2dProjで投影しているのですが、その結果を画像として保存する方法がわからないのです…
0959デフォルトの名無しさん
2015/08/06(木) 19:01:32.67ID:YP0GqHBQなんだよ…じゃあテクスチャのピクセルがそれが含まれてるポリゴンの各頂点からの
相対的な位置を割り出して3Dモデルのその位置のペイント結果を参照するだけだろ
0960デフォルトの名無しさん
2015/08/06(木) 19:16:43.59ID:YP0GqHBQプロジェクションマッピングしてたのか…見逃した
UVstpq = M * Pxyzw (Mは作成済みの行列、Pは頂点座標)
M^-1 * UVstpq = Pxyzw
で、テクスチャ座標→ポリゴン座標に出来ると思われる
(やった事ないからうまく行くか分からん…)
0961デフォルトの名無しさん
2015/08/06(木) 19:18:28.89ID:YP0GqHBQPxyzw / Pw する事を忘れずに
0962デフォルトの名無しさん
2015/08/06(木) 23:33:20.10ID:AxSr8tmnありがとうございます…!
教えて頂いたことを含めて再度考えてみたいと思います…
0963デフォルトの名無しさん
2015/08/11(火) 21:25:00.10ID:BRsYvBvuOpenGL ES 3.2 (Android Extension Packに追従)
New GL Extensions (OpenGL はバージョンアップせずに拡張の追加のみ)
AndroidでのVulkanサポート (これで一安心)
0964デフォルトの名無しさん
2015/08/11(火) 21:46:14.35ID:bObsH9SXvalve•sourceengine信者なんでVulkanには普及してもらいたいところ
0965デフォルトの名無しさん
2015/08/12(水) 12:51:48.45ID:Uc2fJvLRhttp://blog.imgtec.com/powervr/gnomes-per-second-in-vulkan-and-opengl-es
Android上のVulkanのデモだけど大量のオブジェクトがある時に差があり過ぎ…
0966デフォルトの名無しさん
2015/08/12(水) 13:15:03.63ID:9IGggRqm0967デフォルトの名無しさん
2015/08/12(水) 15:12:46.72ID:W/Nfuaws0968デフォルトの名無しさん
2015/08/12(水) 17:26:08.45ID:Uc2fJvLRAppleオリジナルなのはIEEE1394ぐらいしか思いつかないけど
単に余計な混乱を巻き起こしただけだったな
0969デフォルトの名無しさん
2015/08/12(水) 17:35:46.68ID:bbP305l/0970デフォルトの名無しさん
2015/08/12(水) 18:11:37.69ID:nbpB5mxg0971デフォルトの名無しさん
2015/08/12(水) 19:55:14.24ID:/hfLX3yr0972デフォルトの名無しさん
2015/08/12(水) 20:33:21.95ID:Uc2fJvLRAppleはSwift+Metalを標準にしたいだろうけどMetalは無理だろう
Swiftは詳しく知らんけど意外といいかもしれん
0973デフォルトの名無しさん
2015/08/12(水) 23:40:57.51ID:8CZX+D950974デフォルトの名無しさん
2015/08/14(金) 15:49:39.33ID:H7q+RB2/エラーが出るのですがデフォですか?
ちなみに1.0です
0975デフォルトの名無しさん
2015/08/14(金) 15:50:20.87ID:FOn6mjy60976デフォルトの名無しさん
2015/08/17(月) 20:59:40.28ID:fqWyJ0EEスマホでも余裕で動く
うちのPCのCPUで1スレッドしか使わないと数万が限度な気がする
WebGL 2.0 particles test
https://github.com/toji/webgl2-particles
0977デフォルトの名無しさん
2015/08/17(月) 21:08:57.15ID:FjhSddeN単なるポイントテクスチャーパーティクル?
0978デフォルトの名無しさん
2015/08/17(月) 21:29:55.47ID:S2KJYKrv0979デフォルトの名無しさん
2015/08/17(月) 21:40:49.48ID:FjhSddeNテクスチャーかバッファオブジェクトかの違いで、構造的には同じような?
0980デフォルトの名無しさん
2015/08/17(月) 21:41:56.34ID:pkruh1if0981デフォルトの名無しさん
2015/08/17(月) 22:34:00.33ID:fqWyJ0EE何で1億って書いちゃったんだろう…
レス数が950を超えています。1000を超えると書き込みができなくなります。