トップページ⇒tech
981コメント322KB

OpenGLスレ Part21

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2014/09/01(月) 23:32:38.44ID:dTIHrEOX
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在の最新バージョンは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
>>1乙
次スレ立ってると勘違いして埋めてしまったすまんかった
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:dTIHrEOX
あれ? 必読書2が貼れない…。
0007デフォルトの名無しさん2014/09/01(月) 23:45:21.02ID:dTIHrEOX
== 必読書2 ==

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

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

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

== チュートリアルサイト2 ==
OpenGL Step By Step:    http://ogldev.atspace.co.uk/
OpenGL Samples Pack:    http://ogl-samples.g-truc.net/
0008デフォルトの名無しさん2014/09/01(月) 23:46:11.10ID:dTIHrEOX
何回も同じレス貼り付けてすまんかった…。
orz
0009デフォルトの名無しさん2014/09/02(火) 00:36:47.21ID:fx+cCro8
なんかすまんかった。
0010デフォルトの名無しさん2014/09/02(火) 03:20:29.60ID:BPdDvDlJ
いいってことよ
0011デフォルトの名無しさん2014/09/02(火) 09:45:25.69ID:yjXIz5ow
OpenGLは列オーダーと言う事ですが、
シェーダに渡す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
>>11
> [1, 0, 0, 0, 0, cosθ, -sinθ, 0, 0, sinθ, cosθ, 0, 0, 0, 0, 1]
これは行オーダーだ
0013デフォルトの名無しさん2014/09/02(火) 11:55:20.45ID:yjXIz5ow
>>12
1 0 0 0
0 cosθ -sinθ 0
0 sin θ cosθ 0
0 0 0 1

が既に列オーダーの並びなのに、それをまた転置させて配列に入れるんですか?
0014デフォルトの名無しさん2014/09/02(火) 12:16:28.91ID:2uuiJteZ
>>13
間違ってるって言ってんのに何で質問で返してんだよ
OpenGLは列オーダーのベクトルで右から掛ける事が前提なのを踏まて
理解出来るまで手で計算してみろよ
0015デフォルトの名無しさん2014/09/02(火) 12:25:56.67ID:0AbSN9sb
>>11
それで合ってる。
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:IhQJ1AsB
列オーダーなんだから、[ 第1列、 第2列、 第3列、 第4列 ]の順に入れる。ただそれだけのことだろ
0018デフォルトの名無しさん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
>>18
本来渡したい行列をそのままなにもせずに渡すんだよ
それが[ 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:yjXIz5ow
行列を一次配列に変換するということは

1 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:p3UmGF9E
それが列オーダーということなんでしょう
0022デフォルトの名無しさん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:Exowytj0
行列を配列にどう格納してるかって話で列だの行だの関係ないよな
0024デフォルトの名無しさん2014/09/02(火) 20:41:25.23ID:9UY20/I7
t(AB) = tBtA じゃん
数学の教科書あたりじゃ>>18みたいな表記が一般的だがOpenGLだと座標を行ベクトルに並べたいから変換行列は転置して座標の右からかけるんだよ
0025デフォルトの名無しさん2014/09/02(火) 21:16:46.48ID:avLIA0Kh
画像データを処理するのに、
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
って書いて遅いって文句を言っている奴を思い出した。
0026デフォルトの名無しさん2014/09/02(火) 22:45:05.66ID:KX7+XVgu
>>23
関係あるだろ
さらっと嘘言うなよ
0027デフォルトの名無しさん2014/09/03(水) 00:20:58.48ID:U3mBpUpE
column-major orderとrow-major orderは行列を配列にして表すときにどう並べるかって話であって行列そのものを転置するわけじゃないからな。

あと前スレでDirectXの方が自然とか言ってた人は単に慣れの問題だと思う。
OpenGLばっかり使ってたらオブジェクトを移動して回転してスケールって並びがプログラミング的にも不自然だとは思わないもの。
0028デフォルトの名無しさん2014/09/03(水) 10:41:14.87ID:148CJHV3
列オーダーが、OpenGLに渡す配列の形だというのはわかったけど、
じゃあ、DirectXの行列と、OpenGLの行列が、転置でかける順番が逆なのはなんなの?
0029デフォルトの名無しさん2014/09/03(水) 11:07:04.91ID:ol9sgsE7
<v'| = <v|M
|v'> = M|v>

自然なことだ。
0030デフォルトの名無しさん2014/09/03(水) 11:40:39.94ID:4x/mCrGU
>>28
たとえば>>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の行列形式になるように、一次配列を入れて、OpenGL用に計算順序を合わせれば
正しく変換されるってことですね。

やっと謎が解けた!ありがとうございます!
0032デフォルトの名無しさん2014/09/03(水) 17:32:01.47ID:4k232O8Q
今openGL ES 2.0 でプログラマブルシェーダに挑戦中なんですが、面法線を設定するには面を構成する各頂点に同じ向きの法線ベクトルを与えるというやり方であってるんでしょうか?
1.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
ES1より低機能なの書けばええやん

ライトはディレクショナル1つのみでベクトルは固定
スペキュラライトなし
ライトのアンビエント、ディフューズ色は白固定
マテリアルもアンビエント色とディフューズ色のみ
テクスチャ使用不可のグーローシェーダで
モデルビュー行列はES1と同じく統合型

とかな
「ディフューズライト 計算」とかでググったら式は出てくるんだからさ
0035デフォルトの名無しさん2014/09/04(木) 13:28:35.10ID:5Wa3U2YV
>>34
1.0で十分というか必要十分という感じだったんです。なので出来るだけ機能を再現したかったんですが、やっぱり地道にやるしかないですか
これ作った人は本当に気がきかないし絶対にもてないですね
0036デフォルトの名無しさん2014/09/04(木) 13:51:25.33ID:a8LqbcNn
>>35
地道にっつーか…
上に書いた内容に手間取るのを放置するようなら、いずれ他のシェーダで詰まるのは目に見えてる
なら今の内に覚えて、他のシェーダで詰まる部分を最小限にしとけってことさ
0037デフォルトの名無しさん2014/09/04(木) 14:10:39.04ID:5Wa3U2YV
>>36
そうですね
この機会にボンヤリとしか理解してなかった計算方法なんかも勉強しようと思います
0038デフォルトの名無しさん2014/09/06(土) 00:47:59.87ID:UzdO5T9Z
バンプマップのアルファ値に高さ情報を持たせるってどうやるんですか?
透明にしたらrgbの値まで何故か0,0,0になってるみたいなんですが
0039デフォルトの名無しさん2014/09/06(土) 01:29:36.52ID:+qWhcUeH
>>28
Direct3DとOpenGLの行列変換
ttp://junosoft.sblo.jp/article/81557960.html
0040382014/09/06(土) 08:10:32.60ID:UzdO5T9Z
すいません
javaだとアルファを乗算して読み込まれるみたいですクソが
0041デフォルトの名無しさん2014/09/06(土) 08:12:02.41ID:KnXqXYAB
アクティブテクスチャーが複数ある予感
0042デフォルトの名無しさん2014/09/06(土) 11:14:13.84ID:UzdO5T9Z
確かに通常のテクスチャと法線マップの二種類を使用してますがなにか影響があるんでしょうか

あとJavaとかいう問題じゃなくて GLUtils.texImage2D でビットマップを読み込むとアルファ乗算されてしまうようです
なので自前でアルファ補完テクスチャを作らなければ駄目みたいなんですが、環境によってエンディアン?が違うとピクセルフォーマットも変わるみたいでまた詰まりました・・・
0043デフォルトの名無しさん2014/09/06(土) 12:33:23.51ID:oPXlX98A
premultiplied alphaかな
高速化の為に先に掛けておく機能だ
確か有効無効が出来るはずだけよくわからん
0044デフォルトの名無しさん2014/09/06(土) 12:47:00.30ID:UzdO5T9Z
>>43
まさにそれです
なんか素敵機能らしいんですが今はすごい邪魔です
0045デフォルトの名無しさん2014/09/06(土) 13:16:58.79ID:UzdO5T9Z
すいません。物凄い勘違いをしていました
法線マップのアルファ値に高さ情報を持たせるというのは、もとの法線マップ画像のアルファ値を使用するという意味ではなく
作成した法線マップテクスチャのアルファ値に別に読み込んだバンプマップ画像の値を入れてやるという意味でした
おさわがせしました
0046デフォルトの名無しさん2014/09/07(日) 01:43:49.17ID:ugJ9wSXj
光の減衰率ってもしかしてフラグメントシェーダ側じゃなくて頂点シェーダで計算してから渡してやっても結果は同じなんですか?
0047デフォルトの名無しさん2014/09/07(日) 03:25:23.45ID:RGNSEmyL
>>46
同じじゃないです
たとえば点光源の場合だったりポリゴンの頂点の法線が違う場合など、異なる結果になります
0048デフォルトの名無しさん2014/09/07(日) 10:24:28.44ID:ugJ9wSXj
>>47
たしかに点光源を近づけてみたらぜんぜん違いました
こんな簡単な方法で高速化できるなら他の誰かがとっくに思いついてるはずですね・・・
0049デフォルトの名無しさん2014/09/08(月) 16:42:10.06ID:tIwbT5+z
ひょっとしてAndroidのOpenGL ESでFBXファイルって読めない?
0050デフォルトの名無しさん2014/09/08(月) 16:43:24.29ID:RKyL0kAf
そんな質問してるうちは無理やな
0051デフォルトの名無しさん2014/09/09(火) 09:15:39.14ID:x1buGaVH
そこは自分で作るわけだから、あらゆるファイルが読み込める
0052デフォルトの名無しさん2014/09/09(火) 12:35:48.78ID:SImOqCle
fbxのsdkが対応してるかどうか聞いただけなんだが・・・
あーだこーだいちいち説教くせえな・・・
0053デフォルトの名無しさん2014/09/09(火) 12:41:08.68ID:7jCsLtro
こいつはまさに>>50-51だなあ
0054デフォルトの名無しさん2014/09/09(火) 16:13:29.01ID:w4lCWRfu
OpenGL勉強したら就職できるの?
0055デフォルトの名無しさん2014/09/09(火) 17:13:06.82ID:ftFDwVN3
その頭の悪さじゃ無理だな。
0056デフォルトの名無しさん2014/09/11(木) 10:50:29.53ID:EZFPRwJq
就職できるかどうかに技術力はほとんど関係ない
コミュ力と運だけ
0057デフォルトの名無しさん2014/09/13(土) 13:08:53.48ID:DZXhZ56u
glfwInitのときに、_glfwPlatformGetMonitorsのfreeしてるところで
_CrtIsValidHeapPointerでブレークポイントが発生します
前は普通に動いていました
どういう条件で起こるのか、分かる方いますか?
0058デフォルトの名無しさん2014/09/15(月) 08:11:53.64ID:RvS3WWua
fboを使ってテクスチャーにレンダリングされたイメージが
少なくともひとつのピクセルでアルファ>0か、全てのピクセルでアルファ=0かを判別する
方法ってありますか?
今考えられるのはglReadPixelで一旦読み込んで全ピクセルのアルファチェックをするくらいで、
もっと早い方法があれば、教えてください
0059デフォルトの名無しさん2014/09/15(月) 10:36:05.85ID:5MB81Gho
やったことないから適当だが、Occlusion Queryってやつが使えるんじゃないかな
FBOにレンダリングする時、フラグメントシェーダーでアルファが0の場合はdiscardするとかしないとダメかもしれないけど
0060デフォルトの名無しさん2014/09/15(月) 10:41:45.69ID:9eZiuUcq
FBOってなに
0061デフォルトの名無しさん2014/09/15(月) 11:11:40.65ID:RvS3WWua
>>59
初めて聞く単語です、勉強してまいります

>>60
Frame Buffer Objectです
0062デフォルトの名無しさん2014/09/15(月) 11:22:47.02ID:alsQLVs9
ぶけんな
バカ
おたんこなす
の略
0063デフォルトの名無しさん2014/09/15(月) 11:23:25.75ID:alsQLVs9
やり直し

ふざけんな
バカ
おたんこなす
の略
0064602014/09/15(月) 11:37:12.23ID:9eZiuUcq
>>61
2.0より上位の機能だったのかサンクス

>>62, >>63
ぶけんなよ
0065デフォルトの名無しさん2014/09/15(月) 21:48:50.63ID:lXZtfDF6
>>58
速くなるかどうかは環境次第だけど、レンダーテクスチャでピンポンしたらいいんじゃないの。
256ピクセルとか一度に扱うシェーダ書いてさ。
これだけで伝わるといいのだが。具体的な話は面倒くさい。
0066デフォルトの名無しさん2014/09/16(火) 22:31:06.24ID:c3455q6l
D3DXMatrixPerspectiveLH
http://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
>>66
変換後のz/wを0...1 にするか -1...1にするかの違い
0068デフォルトの名無しさん2014/09/17(水) 00:37:22.27ID:PPyutAzO
near..far を 0..1 にするか -1..1 にするかの違い。
0069662014/09/17(水) 00:59:16.80ID:RLZivPFZ
>>67-68
ああ、そういうことだったんですね。納得いきました。ありがとう
0070デフォルトの名無しさん2014/09/18(木) 09:31:48.64ID:K9nvNHSV
シェーダのファイルって改行いれなくても大丈夫なの?
0071702014/09/18(木) 13:19:45.02ID:K9nvNHSV
大丈夫でした。
0072デフォルトの名無しさん2014/09/19(金) 03:15:22.39ID:7FCDfZaC
Lightの実装がいまいちよくわからん
光源位置が悪いのかマテリアルの設定が悪いのか法線の設定が間違ってるのかglLightのパラメータが悪いのか判断するのが難しい
0073デフォルトの名無しさん2014/09/19(金) 12:00:44.45ID:duRZjctE
GLSLでtextureOffset以外を使って隣の画素を参照する方法ないですか?
texture2Dの座標をずらして参照してもうまくいきませんでした。
0074デフォルトの名無しさん2014/09/19(金) 12:39:00.15ID:9xig4/Jc
なんでtextureOffsetじゃ嫌なの?

texture2Dでうまくいかないのは1をテクスチャ画素数で割ってない予感
0075デフォルトの名無しさん2014/09/19(金) 13:15:32.41ID:duRZjctE
画素数で割ってます。
textureOffsetだと座標を定数しか受け取れないからfor文で書けないんです
0076デフォルトの名無しさん2014/09/19(金) 15:28:59.90ID:duRZjctE
なんかドライバが変だったようです
0077デフォルトの名無しさん2014/09/19(金) 18:11:49.98ID:1hc6Ln2l
バッファ操作で target を毎回指定するのはなんで?例えば、gl.ARRAY_BUFFERとか。
バッファ毎に同じ値なら createBuffer の時に指定したらいいように思うけど。
それと、type じゃなくて target っていう名前になっている理由も分からない。
バッファのイメージというか、考え方というか、よく分からない;
0078デフォルトの名無しさん2014/09/19(金) 18:30:24.12ID:x1Ly+gF4
>>72
「ライト計算済ambient + ライト計算済diffuse + ライト計算済specular」
…で、各ライト計算は「ライト」「マテリアル」「光源や視点との関係によって求まる0〜1の実数」を乗算する
詳しい部分をはしょって書くとそんな感じだ

シェーダーとかやるとその式を丸ごと自分で書くことになるよ
逆に言えば、シェーダーのライト計算について調べれば詳しい式が出てくるかと
0079デフォルトの名無しさん2014/09/19(金) 18:45:54.82ID:agdMUu9u
>>72
そんなワケで、作り始めはマテリアルのほうで調整するために
ライトの色は全部 1.0 にしといたほうが楽かと
0080デフォルトの名無しさん2014/09/20(土) 01:57:21.73ID:g+GCiF/m
>>78
> 「光源や視点との関係によって求まる0〜1の実数」
1までとは限らんよ
特にspecularなんて簡単に1越えるし、越えなきゃハイライトが出ない
0081デフォルトの名無しさん2014/09/20(土) 06:01:23.27ID:QUpUX8gO
>>80
まあ、かなりはしょってるからな
それ言うならambientも言及せにゃならんし
とりあえずのシェーダ知らん人への掴み易さ重視ってことで
0082デフォルトの名無しさん2014/09/25(木) 00:00:27.37ID:nGMc6Rtx
OpenGL ES2.0で、レンダーターゲットのテクスチャだけ上下反転して描画される

いくつか直す方法はあるみたいだけど
シェーダーに変数を追加して
RTTだけテクスチャ座標を上下反転するのがベスト?

RTTだけ上下反転して描画される理屈は何かよく分からなかった
0083デフォルトの名無しさん2014/09/25(木) 15:07:47.86ID:7joJL52O
gl_TexCoord[0].xyがver440だと使えないんですが、テクスチャ座標取得したい場合どうしてますか?
0084デフォルトの名無しさん2014/09/25(木) 15:32:20.87ID:Yl4BUmdN
>>82
左下が 0,0 だってのはおk?
0085デフォルトの名無しさん2014/09/25(木) 18:52:31.99ID:rqHbH728
JavaのOpenGLライブラリ、lwjglでMinecraftのような世界を描いてみた
http://www.m9-www.com/lwjglgameproject
0086デフォルトの名無しさん2014/09/25(木) 21:16:51.94ID:NoDUj7qy
これはようできてる。
0087デフォルトの名無しさん2014/09/25(木) 22:21:46.17ID:iegO7U6c
>>85
Minecraft知らんから意味不明w
0088デフォルトの名無しさん2014/09/26(金) 13:26:21.58ID:srmL+qrs
>>83
そんな物は無いので
ヴァーテックスシェーダーから自分でフラグメントシェーダーにテクスチャ座標を送れ
0089デフォルトの名無しさん2014/09/27(土) 07:07:00.02ID:HAq6kjKE
drawElements で指定されない頂点は、頂点シェーダは実行されませんか?
頂点そのものは頂点バッファに格納されています。
0090デフォルトの名無しさん2014/09/27(土) 08:03:16.16ID:fUfjEWa5
されたら困るな
0091デフォルトの名無しさん2014/09/27(土) 09:05:25.74ID:HAq6kjKE
ですよね。されないということで。ありがとうございました
0092デフォルトの名無しさん2014/09/27(土) 11:55:19.92ID:0TauZUvj
だれかジオメトリシェーダー部分を書いて下さい
http://monobook.org/wiki/SL_Sharp
0093デフォルトの名無しさん2014/09/27(土) 14:51:09.41ID:y+SuI5NJ
>>85
そういやニコ動でMinecraftクローン作ってる人いたな
コード見てもHaskelだからC++erな俺にはさっぱりだったけど
0094デフォルトの名無しさん2014/09/27(土) 18:20:45.94ID:SMpwChck
点の描画についての質問です。
1000×1000ピクセルのウィンドウに格子状に間隔10ピクセルで横に100個、縦に100個、合計で10000個の点を描画したいのですが、どの関数を使えば良いでしょうか?
0095デフォルトの名無しさん2014/09/27(土) 18:28:38.38ID:ebkNOLYx
glBegin(GL_POINTS)
0096デフォルトの名無しさん2014/09/28(日) 04:25:15.56ID:GBFbUcRH
ES 2.0で大量に格子描こうと思ったらgl_VertexIDが無くて泣いた
0,1,2,3,...ってしょーもない配列生成するだなんて……
0097デフォルトの名無しさん2014/09/28(日) 10:32:31.32ID:ywKQU/yn
ピクセルシェーダで格子書けんの?
0098デフォルトの名無しさん2014/09/28(日) 11:12:04.88ID:LAza/Q62
テクスチャにパターンを作って、パターンがループするようにテクスチャ座標をセットすればいいだけの話。
0099デフォルトの名無しさん2014/09/28(日) 16:14:46.43ID:PnvSvw7/
>>94です
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+QfHfj
お前がそう思うんならそうなんだろ
0102デフォルトの名無しさん2014/09/28(日) 18:00:39.00ID:PSbbVQVx
実測こそが正義だよ
0103デフォルトの名無しさん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
gl_PointSizeって頂点シェーダ内なのに
クリップ座標系じゃなくてスクリーン座標系ってことでいいの?
この辺って文書化されてる?
0106デフォルトの名無しさん2014/10/01(水) 23:39:34.33ID:auoNc3+l
GLFXって便利そうな割にまったく日本語のサイトがみつからないんだけど、
単にマイナーなだけなのかな。
https://code.google.com/p/glfx/

使い方
http://ogldev.atspace.co.uk/www/tutorial34/tutorial34.html
0107デフォルトの名無しさん2014/10/03(金) 14:01:57.36ID:rUYykIaE
GLSLのifでは、該当しない分岐の中まですべて演算して最後に結果を廃棄するそうですが、なんでこんな仕様なんでしょうか。
0108デフォルトの名無しさん2014/10/03(金) 14:16:32.84ID:wsUsF748
>>107
マジデ!と思ってフラグメントシェーダーでやってみたけど、該当しない分岐の中は演算してないみたいだが...
どこに書いてあった情報?
0109デフォルトの名無しさん2014/10/03(金) 14:49:23.02ID:UQll3Ccb
言語仕様にはそんなこと書いてないと思うけど
マイクロプロセッサ一般で分岐のコストが馬鹿にならんのは事実。
そういう実装があっても不思議ではない。
bvec型があるのは記述を簡単にするためだけじゃない。
0110デフォルトの名無しさん2014/10/03(金) 15:06:39.22ID:RdNexfru
実装はベンダー毎に違うかもね
0111デフォルトの名無しさん2014/10/03(金) 17:14:07.87ID:BlqF2NHp
確か、昔のHLSLは分岐やループを展開する仕様だったかな
だからループ回数が静的に求められないコード書くとエラーになってたような
0112デフォルトの名無しさん2014/10/03(金) 19:51:41.56ID:ON3UZZIk
GPUってSIMDプロセッサしか乗ってない印象があるから、むしろ分岐が出来る事自体が
不思議ではある
基本的に全部計算してselect命令みたいなので分岐を実装してんだろうなと思われる
0113デフォルトの名無しさん2014/10/03(金) 23:25:50.98ID:Bn8I2xCF
そうなのか。IF文=すごく遅いってイメージがあったから、
vec4 A = 計算計算計算;
vec4 B = 計算計算計算;
float cond = Aを使う条件の時に1、そうでないときに0になるよう工夫した式;
gl_Color = mix(B, A, cond);
みたいにやってたけど、フツーに IF 書いた方が読みやすいしマシみたいだね。
0114デフォルトの名無しさん2014/10/03(金) 23:46:39.09ID:BlqF2NHp
左右を黒白に塗り分けNEARESTに設定したテクスチャとか
そんな感じでやる方法もあるにはあるんだけどね
0115デフォルトの名無しさん2014/10/04(土) 00:56:03.24ID:ZecDQkSo
OpenGLって基本的に実行時にコンパイルするから、素直なコードの方が最新の環境だと
速くなる可能性はありそう
0116デフォルトの名無しさん2014/10/04(土) 01:19:06.53ID:D42fUjq8
曖昧なヤツラだなぁ
0117デフォルトの名無しさん2014/10/04(土) 01:22:58.94ID:ZecDQkSo
>>116
じゃぁ白黒はっきりした意見をどうぞ
0118デフォルトの名無しさん2014/10/04(土) 01:31:24.93ID:LNrhVCYP
元ネタはこの記事にあるようなことかな

Kepler GPUアーキテクチャとプログラム最適化
ttp://news.mynavi.jp/series/kepler_gpu/002/
0119デフォルトの名無しさん2014/10/04(土) 14:28:28.32ID:yLsnOCiy
そもそも抽象レイヤーなんだから曖昧で当然
0120デフォルトの名無しさん2014/10/05(日) 02:01:02.87ID:Rj73rC+T
あいまいなので言えば、glActiveTexture()とか
これの反対が無いし、結局最初に最大使う分だけ設定するか
毎フレームチェックして設定するかだろう

これを設定しすぎるとどんだけメモリロスるかも分からんし
それも実装依存だろうけど
0121デフォルトの名無しさん2014/10/05(日) 14:10:23.58ID:JYy2ec/A
>>120
それの反対って inactive の意味?

それなら要らんだろ
0122デフォルトの名無しさん2014/10/05(日) 17:44:45.17ID:Rj73rC+T
>>121
何で?シーンによってテクスチャの数に差がある時にメモリ節約できそうだけど
実際何やってるかは知らんけど
0123デフォルトの名無しさん2014/10/05(日) 18:04:21.53ID:QxQMnlB+
glActiveTextureはアクティブなテクスチャユニットを切り替えるわけだが、アクティブなテクスチャユニットとは、glBindTextureとかを呼んだときにそのバインド先として参照されるテクスチャユニットのこと
無効にするには、無効にしたいテクスチャユニットごとに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:kAlMXFt4
メモリ解放するかどうかはベンダー次第だろうけど
glDisableでもシェーダからは参照できるから
使わないことをGPUに通達したい場合は
glActiveTexture(GL_TEXTURE(N));
glBindTexture(GL_TEXTURE_2D,0);
かね
01251222014/10/06(月) 11:15:11.26ID:7T5WYEhu
俺が少し勘違いしてた…glActiveTexture()は最初に呼べばいいってもんじゃなかった…

で、>>124の方法で使わない事をGPUに伝えられると思われる

glDisable(GL_TEXTURE_2D);も調べてみたけど、これは固定機能にのみ影響があって
シェーダーには無意味だって事は分かった (OepnGL ESには無いし)
0126デフォルトの名無しさん2014/10/09(木) 16:31:07.40ID:UAdEXg5Z
2Dでテクスチャ付きの四角を大量に描画したいのですが
3つの頂点をバッファに詰め込んで三角の大量描画はこれでできました。

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:UAdEXg5Z
あとglDrawTexfOESの方も資料少ないですがwebで見てみたのですが

int 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:ww6iUB2Z
残念ながら…
0129デフォルトの名無しさん2014/10/09(木) 21:20:26.97ID:mP8dxP0A
degenerate stripでググれ
0130デフォルトの名無しさん2014/10/09(木) 21:34:39.70ID:mP8dxP0A
あとOpenGL 3より前ならGL_QUADSがある

シェーダ使う前提で
大きさが(ほぼ)一定なら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/EXgOkT
パーティクルの計算はトランスフォームフィードバック使うのと
cuda使うのどっちが速いの?
0133デフォルトの名無しさん2014/10/10(金) 22:26:12.32ID:yabznd0d
DrawArrayを使うとき、配列Glfloat Vertex[i]などを定義しますが、この要素数iをキーボードからの入力で決定したいのですが何か方法はないでしょうか?
0134デフォルトの名無しさん2014/10/10(金) 22:31:49.18ID:yabznd0d
書き忘れです
作りたいものは
ある数(100以上)を入力し、その数だけ点を描画するというプログラムです
同じことが出来ればDrawArrayでなくてもオーケーです
0135デフォルトの名無しさん2014/10/10(金) 22:35:08.19ID:iOH5rkxg
openGL関係なく、動的な配列確保って知ってる?それじゃダメ?
0136デフォルトの名無しさん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
>>135
ありがとうございます
それで出来そうです、試してみます

>>137
動的です、乱数を使用しているのでおそらくステートレスではありません
0139デフォルトの名無しさん2014/10/11(土) 17:35:03.87ID:OlHZdekY
>>138です
点を描画する際に関数glutDisplayFanc(display) を使いdisplay() を呼び出し、その中のglDrawArray()を使用します。
なのでmain()で定義した配列をdisplay()まで渡さないといけないのですが、glutDisplayFanc(display) が邪魔をして渡す事が出来ません

この配列は他の関数でも使用するのでdisplay()内で定義する事は考えていません
それに動的なのでグローバルで定義する事も出来ないので困っています
何か良い方法はありませんか?
0140デフォルトの名無しさん2014/10/11(土) 17:43:02.72ID:n15c+Fci
よくわからんけど、グローバルなstd::vector使っとけ
0141デフォルトの名無しさん2014/10/11(土) 18:36:42.27ID:OlHZdekY
>>140
動的なのでグローバルではダメなんです


グローバルでの宣言時に要素数を多めに宣言しておくという方法もとれますが出来れば避けたいです
0142デフォルトの名無しさん2014/10/11(土) 18:41:23.25ID:OlHZdekY
>>139が分かりにくい様なので簡単に言うと
コールバック関数の中にmain()で定義した動的な配列やvectorを持って行くにはどうすればいいの?という事です
0143デフォルトの名無しさん2014/10/11(土) 18:43:39.95ID:F3plGA7W
初心者スレ行けよ
OpenGL関係ないっていい加減気付いたろ?
0144デフォルトの名無しさん2014/10/11(土) 19:17:32.06ID:/6Csp3ng
std::vector(静的)
0145デフォルトの名無しさん2014/10/11(土) 19:35:22.70ID:/JROqJwp
>>141
>>140
0146デフォルトの名無しさん2014/10/11(土) 20:47:37.64ID:OlHZdekY
自己解決しました
0147デフォルトの名無しさん2014/10/11(土) 23:45:05.61ID:gDdDFyHG
最初から答え書かれてるんだから自己もクソもねえ
0148デフォルトの名無しさん2014/10/12(日) 06:38:37.74ID:+PnoJWwU
自己(の勘違いを諭されて)解決しました
0149デフォルトの名無しさん2014/10/13(月) 05:46:16.52ID:LIr0Nbiw
2Dテクスチャの貼り付けである解説サイト見ていて、UVの部分指定でこうあったのですが
//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
>>149
言葉で説明するのは難しいが・・・図を描けば分かるんじゃないかな
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:VbIxjgCt
glslって配列のインデックスにループカウンタ使ってもおかしくなるんだけど、どうすればいいのこれ
0154デフォルトの名無しさん2014/10/13(月) 13:38:35.89ID:Poh7coEB
アンロール
0155デフォルトの名無しさん2014/10/13(月) 14:01:33.21ID:VbIxjgCt
めんどくさいからそれは嫌ぁ
もはやなんのために配列があるのかわからない…
0156デフォルトの名無しさん2014/10/13(月) 20:04:40.14ID:VbIxjgCt
なんか根本的に勘違いしてました
glslでそういう処理はプレースホルダとか作って動的に書くもんだったんでつね…
0157デフォルトの名無しさん2014/10/14(火) 14:58:33.44ID:zL9YbEA7
>>153
配列のインデックスにループカウンタを使っても問題無いぞ
多分コンパイル時に解決出来ない値を使ってんだろう
0158デフォルトの名無しさん2014/10/14(火) 21:06:55.96ID:bHfZi2Ff
>>157
どこかで動的にループ回数が決まるのは駄目って見たから
for(int i = 0; i < 5; i++)見たいにしてみたんだけど駄目だったんだよ
コンパイルは通るけど表示がおかしくなる
0159デフォルトの名無しさん2014/10/14(火) 23:40:50.16ID:KVuAol34
>>158
uSampler[i]みたいになってるか?
それで駄目だったらドライバのバグと言える
0160デフォルトの名無しさん2014/10/15(水) 03:09:21.95ID:21BMzVr4
同じ頂点属性の値を複数の頂点に適用できますか?たとえば3つの頂点ごとに値が共通な場合に、
[1,1,1,2,2,2...] ではなくて、[1,2...] 形式で3つの頂点ごとに同じ値を適用したいです。
stride,offset では出来ないみたいですが、やはり無理でしょうか?
0161デフォルトの名無しさん2014/10/15(水) 07:49:48.61ID:ZR9Ve6JZ
>>160
(1, 1, 1), (2, 2, 2), (3, 3, 3) みたいな座標しか指定できなかったら、特定の直線しか引けないのでは?
01621602014/10/15(水) 13:40:47.69ID:21BMzVr4
>>161
TRIANGLES を描画するときにポリゴン単位で値が共通なんです。座標は各頂点で別なのですが、
それ以外の頂点属性、例えば色とかがそうです。同じ値を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,...となるから・・・
01641602014/10/15(水) 22:43:19.53ID:21BMzVr4
>>163
ありがとうございます。添字はそれで問題なさそうなので、また調べてみます。
0165デフォルトの名無しさん2014/10/15(水) 23:00:06.29ID:bo7BQ6h3
その属性が複数の「ポリゴン」で共有されるなら
頂点ごとに属性のインデックスをつければいい気もするが
01661602014/10/15(水) 23:21:43.18ID:21BMzVr4
>>165
確かにそうですね。でもそのインデックスから値を取得するには、どうすればいいでしょうか?
「ある頂点属性の指定インデックスNの値」を動的に取得できれば、かなり改善できそうです。
0167デフォルトの名無しさん2014/10/15(水) 23:28:29.24ID:bo7BQ6h3
多くのGPUで動作するという点では
テクスチャ使うのが常套手段だけど
01681602014/10/15(水) 23:35:02.65ID:21BMzVr4
>>167
テクスチャをそのように利用できるんですね。グラフィックは最近始めたばかりで、
テクスチャ=画像と固定的に考えていました。ありがとうございました。
0169デフォルトの名無しさん2014/10/26(日) 11:44:06.56ID:KJUAvVAF
glView=new GLSurfaceView(this);
としてテクスチャも作って使用した後、もう使わなくなって
glView=null;
とするとそれまでの作ったテクスチャも全て開放されると思っていいんでしょうか?

テクスチャ開放について調べてみるとqueueEvent使ったりと
結構複雑な手順が必要みたいなんですが。
0170デフォルトの名無しさん2014/10/26(日) 12:00:03.18ID:42wlBPHa
前置きもなくAndroidの話してんじゃねぇよ
0171デフォルトの名無しさん2014/10/26(日) 12:09:32.19ID:KJUAvVAF
ああ言語・機種はAndroidです。
0172デフォルトの名無しさん2014/10/26(日) 12:48:58.92ID:sxXC7dR9
androidって標準的なOpenGLラッパーがあるの?
0173デフォルトの名無しさん2014/10/26(日) 13:19:19.61ID:neF7jQ3p
ラッパー…GLSurfaceView, GL10, GL11, GLES20辺りのことか?
0174デフォルトの名無しさん2014/10/26(日) 15:13:24.95ID:61XmsubM
解放されません。
glGenTextures() したものは glDeleteTextures() することで解放します。
その他のことはスレ違いです。
目障りなんでできれば知恵袋とかに行って聞いて下さい。
0175デフォルトの名無しさん2014/10/26(日) 18:33:34.85ID:tVo8cht9
Android OpenGL ES2.0ですが、
3Dモデルで、複数のマテリアルで同じテクスチャを使っているようなモデルの場合、
マテリアルごとにテクスチャを持たせるのはムダですよね?
どうやって持たせたらいいのでしょうか?
0176デフォルトの名無しさん2014/10/26(日) 19:57:40.18ID:42wlBPHa
OpenGL ESに所謂マテリアルという高級な概念は存在しません

ファイル名等に基づき同じテクスチャを使っていることを表明・検出して
同じテクスチャをシェーダに渡せばいいんじゃないでしょうか
0177デフォルトの名無しさん2014/10/26(日) 23:37:47.71ID:MdHDQqys
知恵袋のステマはやめろ
ここが掃き溜めだ
0178デフォルトの名無しさん2014/10/27(月) 02:30:56.22ID:9RA2Yb9/
>>176
どうもです。
結局、マテリアルごとに、テクスチャをバインドしなおしては描画を繰り返さないとダメなんですよね。
0179デフォルトの名無しさん2014/10/27(月) 06:53:02.94ID:9dCb0Lih
それが嫌なら、ひとつの大きなテクスチャに1シーンで使う全ての画像を詰め込み
すべての頂点にテクスチャ座標をキッチリ設定してやればいい
0180デフォルトの名無しさん2014/10/27(月) 07:47:50.10ID:9RA2Yb9/
それって3Dモデル作ってるときにかなり無理ある
0181デフォルトの名無しさん2014/10/27(月) 08:02:35.26ID:6yWzs+uV
OpenGLって意外とテクスチャ面は貧弱なんだな
0182デフォルトの名無しさん2014/10/27(月) 11:23:58.32ID:hH9X0IoY
バインド、座標セット、描画を個々でやってたら結構FPS落ちちゃいそう
0183デフォルトの名無しさん2014/10/27(月) 12:11:31.52ID:qnYU7yPZ
>>181
別に貧弱とは思えないけど、もしかしてテクスチャが自動的に共有されないから
そう思ってんの?
0184デフォルトの名無しさん2014/10/27(月) 20:04:07.43ID:fLU7ODKy
DirectXだって今はXファイルサポート無くなったし似たようなもんだと思うが

低レベルだからこそハードウェアやライブラリに設計の自由度が上がるという面もある

あとテクスチャユニットは2つ以上あることがES 2.0で保証されてるので
テクスチャ1枚にする必要はない
最低動作をどのラインに持ってくるかによるが
今時のGPUなら8個同時に使えると思っていいんじゃね
0185デフォルトの名無しさん2014/10/27(月) 20:09:27.81ID:fLU7ODKy
あ、8個同時はフラグメントシェーダの話ね
0186デフォルトの名無しさん2014/10/27(月) 20:19:08.64ID:a2r310Xq
現状でDirectXとOpenGL、初心者が入りやすいのはどっちなの?
0187デフォルトの名無しさん2014/10/27(月) 20:27:35.47ID:fLU7ODKy
DirectXとOpenGLに両方対応したフレームワークから入って
そこから出ないのが一番じゃね

あとは何がしたいかに依る
0188デフォルトの名無しさん2014/10/27(月) 21:27:33.75ID:CIdLSoWe
今からならD3Dの方がいい
混乱する要素が少ないから
0189デフォルトの名無しさん2014/10/27(月) 22:45:04.71ID:YANmdHDQ
OpenGLES2.0でいいじゃん
滅茶苦茶シンプルだし
0190デフォルトの名無しさん2014/10/28(火) 13:23:34.27ID:/Y9XnqU0
gl の bind が気に食わないから、その点では d3d がいいと思う。
glActiveTexture( 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
>>190
グローバルな副作用なんてあったっけ?
普通テクスチャをロードした時に1回やるだけだからあまり気にならない
0192デフォルトの名無しさん2014/10/29(水) 09:46:02.72ID:kHkGjKUo
glActiveTextureで、( GL_TEXTURE1 )以降を使うのって、
マルチテクスチャ(テクスチャを重ねてはる)の時なのか、
1つの3Dモデルで複数のテクスチャを使用している(1つのマテリアルにはテクスチャは1つだけ)
なのか、どっちなの?
0193デフォルトの名無しさん2014/10/29(水) 14:27:13.98ID:+dOdWCkt
>>191
副作用というプログラム用語がある。

>>192
後者だったら glActiveTexture() 無しで作れるだろ。
0194デフォルトの名無しさん2014/10/29(水) 15:39:04.65ID:kHkGjKUo
>>193
調べてましたが、確かに使ってない例も多かったですね。
ありがとうございます。
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
>>196
どうもです。

全部半透明で前後関係のあるモデルの場合、
モデルファイル側で、そのままの順番で描画してちゃんと表示されるように並べて作ってあるのかな〜。
0198デフォルトの名無しさん2014/10/29(水) 21:01:03.86ID:GiyQXeuL
>>197
基本的に全ポリゴン毎フレーム並べ直さないと駄目だが、重くなり過ぎる場合は
ポリゴンを減らすとか大雑把な単位でしかソートしないとか色々やりようはあるだろうね
0199デフォルトの名無しさん2014/10/29(水) 23:23:26.96ID:D5QH5rvw
ソートをせずに
ステンシル作ってポストエフェクトで半透明処理とか
半透明部分だけ力技でレイトレースとか
本当に色々ある
0200デフォルトの名無しさん2014/10/29(水) 23:55:41.19ID:oi0tTARd
>>197
カメラの位置が決まらないと順番決まらないから無理
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
>>202
普通αブレンド用にマテリアルを分けてそのマテリアルを一番最後にすれば大抵最後に描画される
0204デフォルトの名無しさん2014/10/30(木) 02:46:14.69ID:fCMA8PeS
半透明で前後関係の入れ替わるポリゴンをレンダリングするのは簡単ではないようで、色々手法が開発されてるよね
0205デフォルトの名無しさん2014/10/30(木) 11:57:59.43ID:X7YwtfwB
見る角度毎にインデックス配列を用意しておくのが一番最適だろう
完璧な見た目を追求すると膨大なパターンになりそうだけど、いい感じに端折れば
大してメモリも食わないし実行時の負荷もほとんど無いはず
0206デフォルトの名無しさん2014/10/31(金) 09:50:57.93ID:hsxnOFuf
OpenGLってインデックスバッファって1つで、
頂点、法線、UVのインデックスを1つの配列にしないとダメなの?
0207デフォルトの名無しさん2014/10/31(金) 12:37:44.93ID:OFeCXJ6g
>>206
複数必要になるわけ無い

バーテックスバッファがそれらのデータ(頂点、法線、UV)のセットが順に並んでいる配列

インデックスバッファは何個目のセットを選んで描画するかを指定する配列
0208デフォルトの名無しさん2014/10/31(金) 14:08:52.55ID:qi8WICHZ
>>207
なんか分かり難い表現だな…
1つの配列にする必要はないと言えばいいのに
0209デフォルトの名無しさん2014/10/31(金) 14:12:29.42ID:hsxnOFuf
vertexBuffer, normalBuffer, uvBuffer と分けてある状態で、インデックスバッファは使えない?
0210デフォルトの名無しさん2014/10/31(金) 14:41:48.77ID:qi8WICHZ
もちろん使える
0211デフォルトの名無しさん2014/10/31(金) 15:08:39.81ID:uqlnkQHy
Rendering meshes with multiple indices - Stack Overflow
http://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:hsxnOFuf
頂点、法線、UVを1頂点データにまとめたものを自作するしかないの?
0214デフォルトの名無しさん2014/10/31(金) 16:41:57.50ID:lZPBQQs6
重複した属性を持たせるようにして同じインデックスにする。
0215デフォルトの名無しさん2014/10/31(金) 16:52:14.55ID:u9J1NzaB
>>211のリンクで書いてあるように、描画に使えるのは基本的に

1つのVertex Buffer + 1つのIndex Buffer

だけ

複数のVertex Buffer + 複数のIndex Buffer

は不可

>>213
何でそこまで纏めるのを嫌がるのか
0216デフォルトの名無しさん2014/10/31(金) 17:45:42.64ID:hsxnOFuf
同じインデックスを使いまわすということは、頂点、UV、法線を同じ配列数にしないといけないってことだよね?

まとめるより、その配列を作るのが手間そうだ・・・・。
0217デフォルトの名無しさん2014/10/31(金) 18:54:05.73ID:u9J1NzaB
>>216
使いまわすって何言ってんだ
そもそも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
ようわからんけど>>160みたいなことなんでしょ

皆1つの配列に入れる必要はないしfloatである必要もない
0219デフォルトの名無しさん2014/11/01(土) 00:20:28.58ID:ROiidneO
>>218
Vertex Texture Fetchと組み合わせたら出来ることは出来るかもね
0220デフォルトの名無しさん2014/11/01(土) 01:42:39.94ID:xWhOrI96
>>217
Xファイルなんかだと、
頂点数と法線数はイコールじゃないし、
お互い独自のインデックス番号で表現されているので、
それをそのまま使いたかった
0221デフォルトの名無しさん2014/11/01(土) 19:41:50.02ID:xWhOrI96
VBOで、GL_DYNAMIC_DRAW: データは頻繁に書き換えられる
って、何度もVBOを作り直して長くもたないってこと?
0222デフォルトの名無しさん2014/11/01(土) 20:27:26.40ID:gXvkXb65
書き換えるのはユーザだよ
勝手に書き換えられる訳じゃない

頻繁に書き換えるからキャッシュしても無駄だよん
ってヒントを実装に与える
そのヒントをどう使うかは実装次第
0223デフォルトの名無しさん2014/11/01(土) 21:14:33.98ID:xWhOrI96
>>222
なるほど。
頻繁に書き換えるならVBOじゃなくて普通のバッファでいいような気もするけど・・・。
毎フレーム書き換えとキャッシュの中間ってところかな。
0224デフォルトの名無しさん2014/11/02(日) 02:55:22.54ID:+L6WIgLF
>>222
キャッシュというかGL_STATIC_DRAWでバッファを作成すると2度と内容を更新出来んぞ
仕様としてはヒント的な扱いだけど、実装はどっちでもとりあえず動くとはなってないね
0225デフォルトの名無しさん2014/11/02(日) 04:15:27.10ID:bQzViPT9
っていうかVBOの内容の更新ってどうやるの
0226デフォルトの名無しさん2014/11/02(日) 11:12:34.24ID:5ZVCU8dy
>>225
glBufferData
0227デフォルトの名無しさん2014/11/02(日) 15:08:53.77ID:SxFoRZy5
もしかして直接頂点バッファを書き換えちゃダメですか
GPUと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:02WOdBRy
OpenGLはデフォのままだと黙って落ちるな
0232デフォルトの名無しさん2014/11/02(日) 17:31:26.90ID:cbZyttcP
黙って落ちようが
落ちる直前のログは残っているはずだし
AndroidならTracerも用意されているし
もっと原因を絞り込めるだろと
0233デフォルトの名無しさん2014/11/03(月) 14:24:00.41ID:i5F5sNZ0
GL_DYNAMIC_DRAWだとCPUがバッファを更新してる間にGPUがそのデータを転送中の可能性はある
ただglBufferDataはGPUが触ってない場所にデータを丸ごとコピーしてるだろうから結局問題は無いだろう
0234デフォルトの名無しさん2014/11/03(月) 18:17:52.55ID:/knyOzUw
ありがとうございます、とりあえずログ取得して潰していきます。
0235デフォルトの名無しさん2014/11/10(月) 18:27:13.85ID:oPn+npUX
NVIDIAとIntelのGPUが入ってるノートを使っているけど
同じプログラムでもNVIDIA GPUにした時だけ垂直同期待ちの時のCPU使用率がすごくなる

何だこれは?GeForceでは垂直同期使うなって事か?
0236デフォルトの名無しさん2014/11/10(月) 18:56:23.07ID:5OjKaQwP
垂直同期待ちの時にsleepしてないんだろ?
0237デフォルトの名無しさん2014/11/10(月) 21:37:43.26ID:oPn+npUX
>>236
丁度画面が書き換わる前まで待たないといけないが知る方法が無い
ただ単に毎フレーム1ms待つだけとかだと高いまま

どうやらChomeのせいらしい
ChomeのtimeBeginPeriod呼び出しでタイマー精度が1msになったあとに起動するとCPU使用率が凄いことになる
なぜかIntel HD Graphicsだとならない

タイマー精度はClockRes.exeで分かる

Chomeがなくても時々1msになるから
他にも犯人がいそうだが探すのが難しい

これGeForceのドライバーのバグじゃないの
Intelだとならないから
0238デフォルトの名無しさん2014/11/10(月) 22:39:22.29ID:URK4C/+w
>>237
OPTIMUS特有の問題かもしれないけど、バグレポしてもいいレベルの問題だな
OPTIMUSはあまり使ってる人がいないから放置されてるのかもしれない
0239デフォルトの名無しさん2014/11/10(月) 23:22:03.42ID:oPn+npUX
やっぱ関係ないかも…
精度1msでもCPU使用率が下がる事がある

何故かCPU使用率が高いってのは報告があるんだけど
0240デフォルトの名無しさん2014/11/10(月) 23:53:16.26ID:jULB9n0Z
ポーリング状態なら高くなるどころか100%に近くなるはずだが
0241デフォルトの名無しさん2014/11/12(水) 08:55:41.16ID:vNnvSmwI
GeForceでも、フラグメントシェーダーを一度でも変更したらそれ以降はCPU使用率が下がる事がわかった

作っているのは2Dゲームのエンジンで、ステート変更やglDrawElementsの回数を出来るだけ抑えるようになっている

半透明のオブジェクトは別のシェーダーに変わるんだが、
そのシェーダーを一度でも使うと使用率ががくっと下がる
どういう訳か半透明オブジェクトがシーンから消えても使用率はそのまま

OpenGLは非同期で動いていて、コマンドを渡されてもキューに詰め込むだけで、実際にそれを実行するのは後らしい
その関係で使用率が下がったのだろうか?シェーダーを途中で変えるとすぐに実行されるとか?
0242デフォルトの名無しさん2014/11/12(水) 08:59:59.53ID:vNnvSmwI
Intel HD Graphicsだと垂直同期時のSwapBuffersは
1フレーム分ぐらいかかるんだが
GeForceは大抵一瞬で戻る

GeForceでプロファイラを使ってパフォーマンスを測定したら
負荷の軽いシーンでもglDrawElementsが上位に来ていた
SwapBuffersが短い分これが増えた?
0243デフォルトの名無しさん2014/11/12(水) 09:01:44.53ID:KVAuCYtX
なるほど
0244デフォルトの名無しさん2014/11/12(水) 10:15:44.98ID:z8yiEzrF
glFinish入れたらどうなるんだ?
0245デフォルトの名無しさん2014/11/12(水) 11:24:51.71ID:D8SggX0A
なんだよ垂直同期無視で凄い勢いでループ回してただけかよ
垂直同期は拡張機能使って有効にしておかないと駄目だ
0246デフォルトの名無しさん2014/11/13(木) 14:09:26.97ID:HtZJ4mIh
Androidで自前でベクトルクラスとか行列クラスとか作った場合、
クラス関数を作れば作るほどベクトルクラス1つ1つが容量食って重くなる?
0247デフォルトの名無しさん2014/11/13(木) 14:10:21.52ID:HtZJ4mIh
>>246
X ベクトルクラス1つ1つが
○ インスタンス1つ1つが
0248デフォルトの名無しさん2014/11/13(木) 14:11:14.93ID:JEk43mot
OpenGLに関係のない話題は他所でどうぞ
0249デフォルトの名無しさん2014/11/14(金) 00:44:34.77ID:HvfimxqK
glGetAttribLocation の戻り値はGLintで-1がエラーコードになってますが、
glEnableVertexAttribArrayとかは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:TpJREt3b
>>249
Cの常識で考えれば前者は-1が他の数字に変わってしまうのでダメだと思うけど
unsigned int a = -1
if (a < 0) printf("error\n"); // 絶対に実行されない
とかやってるのと一緒だし
0251デフォルトの名無しさん2014/11/14(金) 01:31:55.20ID:TpJREt3b
すまん、>>250は嘘
忘れてくれ
0252デフォルトの名無しさん2014/11/15(土) 10:35:35.21ID:Tt18G4Rt
>>245
垂直同期はGeForceでも有効になってた
60fpsにはなってるし

SwapBuffersではなく他の部分の時間を増やして60fpsにしているのだろう
って書いたじゃん

>>244
効果は無かった。finishやflushは無視してるのか?
0253デフォルトの名無しさん2014/11/15(土) 17:15:06.23ID:lRkU/JzI
VBOにしたindexBufferを
glDrawElements(プリミティブの種類、インデックスの数、インデックスの型、データ元) で、
「インデックスのここからここまで」と指定して描画ってできますか?
0254デフォルトの名無しさん2014/11/15(土) 20:41:35.19ID:vjnAYpco
「データ元」のところに「開始オフセット」を指定すればいいんじゃなかったけ?
0255デフォルトの名無しさん2014/11/17(月) 08:56:24.36ID:HShsEG/z
>>254
ありがとうございます!
「インデックスの数」は、「データ元」の「開始オフセット」からいくつ描画するかの数ですよね?
0256デフォルトの名無しさん2014/11/19(水) 00:18:38.77ID:AQBtgxdS
医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止
http://fox.2ch.net/test/read.cgi/poverty/1416286592/
0257デフォルトの名無しさん2014/11/19(水) 10:48:08.67ID:FqxYFU1B
Android ES2.0 で attribute vec4 に値を渡したいんだけど、
プログラム側は short型の一次配列で渡せるでしょうか?
0258デフォルトの名無しさん2014/11/19(水) 15:49:31.20ID:f43OxmWk
>>257
普通にfloatで渡せば良いのに
何でそんなことをしたいのか
何か勘違いしていそうな悪寒
0259デフォルトの名無しさん2014/11/19(水) 17:05:52.93ID:cB5WMOho
メモリ不足は気にするな
02602572014/11/20(木) 12:14:08.50ID:EXFgbP1f
頂点データではなく、整数値でパラメータも送りたかったんで・・・。
結局、floatで送ってシェーダ側でint()でキャストするしかないみたいですね。
0261デフォルトの名無しさん2014/11/28(金) 06:00:46.52ID:MEPhsPZB
Android OpenGL ES2.0で GLSurfaceViewをRendererも兼ねるようにするにはどういう作りにすればいいでしょうか?
0262デフォルトの名無しさん2014/11/28(金) 07:45:03.46ID:MEPhsPZB
自己解決しました。implementsすればいいだけでした
0263デフォルトの名無しさん2014/11/29(土) 20:40:00.69ID:8DYbLWhg
言いたいことは分かるが
Aするにはどうすればいい?→Aすればよかった
みたいな滑稽さがあるな
0264デフォルトの名無しさん2014/11/29(土) 23:24:53.81ID:SoXvwZNw
simple is the best
0265デフォルトの名無しさん2014/11/30(日) 03:23:41.85ID:b4nmdqGs
1つのものの範囲内での比較においてはbestは純粋な形容詞のままなのでtheをつけません。次の例も見てください。

This lake is the deepest of the three.(この湖は3つの中で一番深い)
This lake is deepst here.(この湖はこの場所が一番深い)

上は「3つの湖」を互いに比較していますが、下の文は「1つの湖の中で深さの違う場所があり、この場所が一番深い」と述べています。
0266デフォルトの名無しさん2014/11/30(日) 11:09:43.61ID:8MVnYPAC
(yahoo知恵袋より転載)
0267デフォルトの名無しさん2014/11/30(日) 15:01:08.92ID:0H+5CMHi
知恵袋を頼りにするのなら、なんで「best、the best 両者共にいい」というアンサーは無視するの?
0268デフォルトの名無しさん2014/11/30(日) 18:05:45.33ID:SjfBxMop
まあ>>265-267はともかくとして>>264はアホ英語
0269デフォルトの名無しさん2014/11/30(日) 20:24:18.81ID:kmsUIJRb
別に普通に通じるだろ
0270デフォルトの名無しさん2014/11/30(日) 23:50:20.18ID:eKHuU7at
All your base is blong to us.並みには通じるかもね。
0271デフォルトの名無しさん2014/11/30(日) 23:58:57.94ID:8MVnYPAC
OpenGL is the best.
0272デフォルトの名無しさん2014/12/01(月) 01:15:53.86ID:vCq5rkmY
glslで、例えば無限ループが中に書いてあったとして
そのシェーダが走ってる最中に外から打ち切るapiみたいなのってありますかね?
というか無限ループが発生した場合、グラボが死ぬまで待つかPC落とすしかないですか?
0273デフォルトの名無しさん2014/12/01(月) 07:01:19.58ID:s80cut9o
そもそもどうやって無限ループを作るつもりなんだ?
0274デフォルトの名無しさん2014/12/01(月) 08:36:58.12ID:vCq5rkmY
たとえば、ユーザがシェーダをカスタムできるようなプログラムを作る場合、ですね
0275デフォルトの名無しさん2014/12/01(月) 09:44:57.22ID:ikZ1X/ON
OpenGL な UI を作るライブラリ一覧
http://qiita.com/shimacpyon/items/e5d2a4e2019273345c37
0276デフォルトの名無しさん2014/12/01(月) 09:50:20.03ID:ikZ1X/ON
>>264
烏丸を「からすまる」と呼ぶくらい不自然
0277デフォルトの名無しさん2014/12/01(月) 10:17:45.28ID:s80cut9o
>>274
ユーザ云々なんて関係ない。
GLSLでそもそもどうやって無限ループを発生させるのか聞いてるんだよ。
0278デフォルトの名無しさん2014/12/01(月) 12:45:39.38ID:97liHp30
for(int i=0;i<10;i+=0) gl_FragColor.x += 0.1;

とか?driver lostした
0279デフォルトの名無しさん2014/12/01(月) 12:48:58.26ID:vCq5rkmY
>>277
まあ>>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:q7F8Vl1K
URL失敗した
https://web.archive.org/web/20100301191249/http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx
0283デフォルトの名無しさん2014/12/01(月) 13:32:23.55ID:GrWyVyTu
ドワンゴ「急募!FPGA機器開発経験者!」 ニコニコ動画をFPGAで高速化、ハード技術者を募集中
http://hayabusa3.2ch.net/test/read.cgi/news/1417266799/
0284デフォルトの名無しさん2014/12/01(月) 15:12:02.44ID:vCq5rkmY
>>281
さすがにGPUのapiは存在しない感じですね
ありがとうございます
0285デフォルトの名無しさん2014/12/01(月) 16:39:57.35ID:QUWqwFWm
>>284
もう解決したようだが、そもそもシェーダーはギチギチに最適化された
コンパイル済みのコードを実行してんだぞ
無限ループとか割り込みを発生させる事が出来たところで
別のコードを割り込ませるなんて不可能だ
0286デフォルトの名無しさん2014/12/01(月) 16:43:02.98ID:QUWqwFWm
>>283
GPGPU使えば高速化出来ると思うけど、消費電力を気にしてんのかね
0287デフォルトの名無しさん2014/12/01(月) 17:05:47.11ID:97liHp30
>>284
ユーザーが自由にシェーダーを動的に書けるアプリだったら
別スレッドで描画スレッドを監視して死亡してたらシェーダーエラーを警告してひとつ前のシェーダーに戻して初期化するとかかな
0288デフォルトの名無しさん2014/12/01(月) 17:21:35.97ID:QUWqwFWm
>>287
もちろんそれも出来ないけどね
0289デフォルトの名無しさん2014/12/01(月) 17:27:27.20ID:97liHp30
>>288
なんでできないの?もっかい立ち上げればいいだけでは
0290デフォルトの名無しさん2014/12/01(月) 17:37:54.41ID:QUWqwFWm
>>289
死亡したGPUを初期化するのはOSの仕事でアプリから出来ないと思っただけだ
0291デフォルトの名無しさん2014/12/01(月) 18:06:49.04ID:97liHp30
>>290
windowsの場合GPUが死なないようにOSがタイムアウトリセットしてくれる。
web にあるglsl sandboxとかでも無限ループ書くとブラックアウトしてリセットされて回復する(しない場合もあるかもしれないが)
0292デフォルトの名無しさん2014/12/01(月) 18:15:14.36ID:QUWqwFWm
>>291
WebGLはOpenGLの拡張を使って若干の速度を犠牲にしてGPUがハングアップしないようにしてるからだな
確かにWebGL用に追加された拡張を使えば出来るな。俺は知らんが
0293デフォルトの名無しさん2014/12/02(火) 00:08:20.43ID:yGw9j998
床井さんのHPは昔(10年以上前)よく見ていたのですが、
今でも最新のOpenGLについてのお勧めサイトでしょうか?
0294デフォルトの名無しさん2014/12/02(火) 03:49:14.89ID:apvFAuXl
>>293
10年以上前と違ってOpenGLの利用範囲も多岐にわたってるから、自分の知りたい最新トピックが何なのかによって見るページも違ってくると思うよ
0295デフォルトの名無しさん2014/12/02(火) 04:00:42.47ID:yGw9j998
>>294
レスありがとうございます。
・glut:   クロスプラットフォームなツールキット。でもさすがに古くさい
・GLFW   より新しいマルチプラットフォームなツールキット
という事ですが、glutしか知らない浦島太郎状態なのでまずはGLFWという奴を習得したいです。Windowsです。
0296デフォルトの名無しさん2014/12/02(火) 04:24:15.73ID:apvFAuXl
>>295
GLFWのページに行けばドキュメントも使用ガイドもそろってますよ
0297デフォルトの名無しさん2014/12/02(火) 04:49:54.71ID:yGw9j998
>>296
レスありがとうございます。
本家のサイトは参考にはしますが、まずは敷居の低い日本語サイトで勉強しようと思ってます。
とりあえず床井さんとこと、本家サイトでやってみます。
0298デフォルトの名無しさん2014/12/04(木) 20:16:14.42ID:RqHblQpF
質問です
複数の点が画面の中を飛び回るプログラムを作ったのですが正しく動いてくれません
点の数が500個程度だと正しく描画されるのですが、1000個を超えるような数になると、プログラム開始時に点が一瞬表示された後消えてしまいます
プログラム自体は問題なく動いているので描画に失敗しているようです
原因がわかる方いませんか?
0299デフォルトの名無しさん2014/12/04(木) 20:20:26.77ID:RqHblQpF
>>298
glClear(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, number);
を
glDrawArrays(GL_POINTS, 0, 500);
に変えると表示されて、
glDrawArrays(GL_POINTS, 0, 1000);
にすると真っ黒なのか?

描画に失敗してるのではなく、OpenGLとは関係無いところが原因だと思います。
0302デフォルトの名無しさん2014/12/04(木) 20:57:17.22ID:RqHblQpF
>>301
そうです
openglに関係ないところですか、もう少し調べてみます
0303デフォルトの名無しさん2014/12/04(木) 21:17:01.27ID:DdgoFlsT
>>299
>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+L
ゼロ除算で強制終了はVisualStudioでデバッグ出来るよね
0307デフォルトの名無しさん2014/12/06(土) 01:25:07.60ID:NEyZXeMr
どこにも強制終了なんて書いてないのに

まぁデバッグできるのは事実だが
逆にデバッグできないコードなんてあんのかよと
0308デフォルトの名無しさん2014/12/06(土) 08:25:34.36ID:bJbTERPH
昔のDirectXSDK使ったプログラムのエラーはデバッグできないのがあったぞ
今はそんなに無いと思うが
0309デフォルトの名無しさん2014/12/06(土) 11:55:09.30ID:2mAad9lk
ゼロ除算で例外が投げられるのは整数だけだった

浮動小数点数だと計算結果は値によってNaNや正・負の無限大になるらしい
http://ja.wikipedia.org/wiki/ゼロ除算
0310デフォルトの名無しさん2014/12/06(土) 18:35:54.95ID:NEyZXeMr
だからデバッグできるっつってんだろ
FPU(x87)だって例外投げられる
http://msdn.microsoft.com/ja-jp/library/c9676k6h.aspx

今後OpenCLとかの普及で実行ハードウェアが隠蔽されるようになると
デバッグ事情はどうなるか分からんが

ただハードウェア・ドライバで結果が変わるのは今のOpenGLだって同じ
0311デフォルトの名無しさん2014/12/07(日) 21:25:35.26ID:JkmXnZ9s
EclipseのOpenGLES2.0で、シェーダの値とかデバッグ出力とかできないのでしょうか?
ちゃんとバッファがバインドされているかとか、確認する方法ってないでしょうか?
0312デフォルトの名無しさん2014/12/08(月) 08:44:37.97ID:qdtwuYGK
>>311
バインド状態はOS側ならいけるかもしれんがGLでみたことはないな
値は難しいだろうな
定数バッファなら望みがあるけど、頂点やテクスチヤはVRAMから読み出すわけで、パイプラインを途中でブレイクさせたり、排他を行う必要が出たりする
シェーダはインタプリタするエミュレータでデバッグしたほうがまし
0313デフォルトの名無しさん2014/12/08(月) 12:31:07.49ID:F5WvpTDh
>>311
シェーダ内はともかく、大抵の場合はデバッガがあるが、プラットフォームごとの話であって OpenGL の話じゃない。
0314デフォルトの名無しさん2014/12/09(火) 22:39:47.30ID:cj75fTk3
freeglutを使ったコードをビルドすると
glut32.libを開くことが出来ませんってエラーが出る
freeglutにこんなファイルはありましたか?
0315デフォルトの名無しさん2014/12/09(火) 23:06:31.06ID:mGOoEJnc
>>314
無ければ自分でビルドすればいいじゃない
0316デフォルトの名無しさん2014/12/10(水) 00:20:33.68ID:gpjtACkn
関数が見つからないんじゃなくlibファイルが見つからないだけなら
リンク対象から外せばいいんじゃない?
0317デフォルトの名無しさん2014/12/10(水) 08:21:30.37ID:kNcmqsR3
VSにGLUTは同梱されていないと記憶している
0318デフォルトの名無しさん2014/12/10(水) 18:10:39.28ID:LNrAj2kC
>>313
それを聞いちゃいけないのってこのスレのルールなのか、あなた個人の好みなのかどっちなの?
0319デフォルトの名無しさん2014/12/10(水) 18:11:05.49ID:LNrAj2kC
>>313
それを聞いちゃいけないのってこのスレのルールなのか、あなた個人の好みなのかどっちなの?
0320デフォルトの名無しさん2014/12/10(水) 21:39:57.45ID:7P/sQ89x
>>318
俺の親切さ。
例えばプラットフォームの名前を含めて検索すれば
android opengles debug
出てくるだろ。
質問でも荒らしでも連投でも、好きなところで好きに投稿したらいいが、ゴールがあるなら合理的にやった方がいいんじゃないかと思ってね。
0321デフォルトの名無しさん2014/12/10(水) 23:10:29.19ID:XJMud60E
>>314
多分freeglutを使ったコードってのがglutを使ったコードのコピペで、
#include "glut.h"ってのが入ってんじゃね

もしそうだとinclude pathのどっかにglut.hがあるとその中で glut32.libを#pragmaで使用してる
0322デフォルトの名無しさん2014/12/10(水) 23:21:19.18ID:bNjJ39po
>>314です
freeglutだけじゃopenglは使えないんですね
glutもインストールすれば良いということでしょうか?

>>321
glut.hではなくfreeglut.hをインクルードしています
0323デフォルトの名無しさん2014/12/11(木) 11:43:25.82ID:3hv/AqEg
>>322
じゃプロジェクトファイルとかmakaファイルとかでglut32.libをリンクしてんじゃないの

どっかでglut32.libを指定してるのは間違いないんだからそれをさがせば
freeglutを使うのにglutが必要なんていうことは無い
0324デフォルトの名無しさん2014/12/11(木) 18:24:48.28ID:wQRb8mUN
>>323
ありがとうございました
追加ファイルにglut.libかありました
0325デフォルトの名無しさん2014/12/11(木) 20:43:04.87ID:IkIAqIUe
バーテックスシェーダに attribute ivec4 を定義して、
VBOをバインドして実行すると、

ERROR 'attribute' cannot be bool or int

と出るのですがどういうエラーなんでしょうか?

ivec4を vec4にすると動きますが・・・
0326デフォルトの名無しさん2014/12/11(木) 20:57:50.77ID:KfC7wG75
そのままだろ
attributeはintかbool(またはそのベクトル型)は不可
0327デフォルトの名無しさん2014/12/12(金) 07:26:08.23ID:9OX/9EQL
対応してないってことですかー
どうもです
0328デフォルトの名無しさん2014/12/12(金) 10:46:32.13ID:9OX/9EQL
GLSLでmat4のゼロ行列での初期化って
mat4 a = mat4(0);
でいいのでしょうか?

足し算は、 a += b のように書けますか?(bもmat4)
0329デフォルトの名無しさん2014/12/12(金) 10:57:30.40ID:8BqNZxMW
聞く前にためせ
0330デフォルトの名無しさん2014/12/12(金) 11:44:49.58ID:9OX/9EQL
やったけど反応が思わしくないので聞いてます
そこが原因がわからないけど
0331デフォルトの名無しさん2014/12/12(金) 11:47:09.08ID:rt+9hUOc
で、どう思わしくないのかはエスパーしろと?
0332デフォルトの名無しさん2014/12/12(金) 11:50:01.98ID:SpOFiBVQ
>>328
何となくスキニングのコードを書いてるように見受けられるが
もしそうならマトリックスを足すんではなくてマトリックスで変換したベクトルを足すべきだな
03333282014/12/12(金) 14:52:11.73ID:9OX/9EQL
>>331
いや、質問のやり方が正しいのか確認したかっただけです。

>>332
いかにもそうなんですが、
マトリックス足すのと、ベクトルを足すのとどう違うのでしょうか?
結果はほぼ一緒で、計算量はマトリックスを足す方が少ないと思うのですが。


またわからなくなったのですが、GLSLのif文で & や && を使うとエラーになったのですが、
複合判定するには ifを2重に書くしかないのでしょうか?
0334デフォルトの名無しさん2014/12/12(金) 15:02:55.59ID:z5EZhpJA
matrix は掛けるもの
0335デフォルトの名無しさん2014/12/12(金) 15:08:37.54ID:TR4vJ3E8
>>333
&&は使える。エラーになったらエラーメッセージ読めよ。
0336デフォルトの名無しさん2014/12/12(金) 17:11:01.84ID:9OX/9EQL
>>335
&&はいけたんですか!ありがとうございます!
0337デフォルトの名無しさん2014/12/12(金) 17:35:07.88ID:SpOFiBVQ
>>333
> 結果はほぼ一緒で、計算量はマトリックスを足す方が少ないと思うのですが。
実装がどうなってるかなんて知る由もないが一応計算してみた
前提として
マトリックスの演算はベクトル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/3
特別少なくなくても大量の頂点扱えば差は出てくる
0339名無しさん@そうだ選挙に行こう2014/12/14(日) 18:30:03.28ID:9/s7Ot5X
テクスチャの拡大/縮小について、どういった場合にこれらの処理が行われるのですか?
0~1で指定されるUV座標からどのように拡大/縮小の判定が行われているのか分かりません。
たとえば 0.1 ならそのままで、0.12189821 みたいに細かい数値になるほど拡大が行われるということですか?
0340名無しさん@そうだ選挙に行こう2014/12/14(日) 18:59:26.87ID:UU8SzehV
違う。エスパーすると0.000001みたいに小さい値を指定すると拡大される
0341デフォルトの名無しさん2014/12/14(日) 21:18:25.46ID:GvTi4A/L
>>339
数値が細かいほど拡大って、どうしたらそういう発想が出てくる
0342デフォルトの名無しさん2014/12/15(月) 02:37:52.31ID:PB1Gwp/2
>>338
言い方が変だったが、マトリックス使わない方が計算量が少ないと言ってる
0343デフォルトの名無しさん2014/12/15(月) 12:11:49.36ID:iadYDF3F
VBOに送った頂点を、任意のループフレームで移動したいのですが、
どうやったらいいでしょうか?
そういう場合はVBOにしないのでしょうか?
0344デフォルトの名無しさん2014/12/15(月) 14:06:35.67ID:7YVa0JuN
シェーダ
0345デフォルトの名無しさん2014/12/16(火) 18:47:06.28ID:nn73WYDs
シェーダーで独自関数を大量に使っても問題無いですか?コンパイルで普通のコードに
展開されるならいいんですけど、動的に関数呼び出しとして処理されるならダメですよね。
0346デフォルトの名無しさん2014/12/16(火) 21:00:52.76ID:rkKtwYlF
>>345
インライン展開するぐらいの最適化はするだろう

インライン展開出来ないような再帰関数を作ったらどうなるかと思ったが
GLSLでは再帰がそもそも出来ないようだ
0347デフォルトの名無しさん2014/12/16(火) 21:09:08.53ID:rkKtwYlF
そもそもGLSLは実行する時にコールスタックなんか使っていないんじゃないか?
0348デフォルトの名無しさん2014/12/22(月) 15:32:45.69ID:fI8cdu8h
GLSLのみでゲーム作ることは可能ですか?
またパフォーマンスはどうですか?
0349デフォルトの名無しさん2014/12/22(月) 15:33:52.02ID:fI8cdu8h
もちろんインプットなどはuniformを通して使います
0350デフォルトの名無しさん2014/12/22(月) 16:50:24.53ID:Pg2fOaOW
そういう意味不明な質問をしている時点で、ゲームを作ることは不可能。
0351デフォルトの名無しさん2014/12/23(火) 01:54:10.16ID:nurK7yoN
プレイヤーが順番にシェーダを書き足していき
コンパイルエラーが発生するかGPUが落ちたら負け
ってゲームが浮かんだ
0352デフォルトの名無しさん2014/12/23(火) 07:54:28.39ID:AH9u1lrA
ラフゲーム
0353デフォルトの名無しさん2014/12/24(水) 10:06:23.88ID:f3LdlvW9
>>348
かつてDX9が世に出たばかりの頃、欧州のギーク向けサイトかどっかでHLSLのコーディング大会があって、
HLSLでコナミのフロッガーを(音無しでゲーム本編部分のみだが)移植した猛者が優勝してた。
もちろん初期化やキー入力、一定時間ごとにシェーダ呼ぶのとかはCPU側のプロセスだけど。
だから、GLSLでも頑張ったらできるんじゃなかろうか。
曲芸としてやるならともかく、実用にはならないと思うが。
0354デフォルトの名無しさん2014/12/24(水) 15:12:10.08ID:wBt42oSo
mmeにテトリスなかったっけ?
0355デフォルトの名無しさん2014/12/25(木) 21:25:34.94ID:JxhCA2px
>>348
それをやるなら、OpenCL勉強したほうがいいよ。
0356デフォルトの名無しさん2014/12/26(金) 06:15:48.24ID:a+0IPXgX
お前ばかだろ
0357デフォルトの名無しさん2015/01/03(土) 19:05:49.71ID:TGyLhjq6
3Dフィギィアにポーンを入れて自在に動かしたいんですが、くわしい資料が見つかりません。
どこかにありますか?URLを教えてくだちゃい。(16歳巨乳少女)
0358デフォルトの名無しさん2015/01/03(土) 19:43:42.38ID:p/hTnXOn
何者でちゅか?
0359デフォルトの名無しさん2015/01/03(土) 19:46:58.51ID:AuGuhWCh
ポーンはチェスの駒の一種で、歩兵を表している。(wikipediaより)
0360デフォルトの名無しさん2015/01/03(土) 21:08:54.45ID:W/QuRkoc
>>357
http://content.gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System

英語が読めないなんて泣き言言わないように。
難しい言い回しや、話し言葉のような崩した言い回しは使っていないから、
まず読もうとしてくれ。

日本語の資料がほしいのなら適当にググればいい。
でも、紹介した資料が結局のところ一番分かりやすいんじゃないかと思う。
0361デフォルトの名無しさん2015/01/04(日) 00:41:28.88ID:Bh5Ku2mW
WebGLって何でBGRAに対応してないの?
0362デフォルトの名無しさん2015/01/04(日) 00:44:59.24ID:niExLIxN
シェーダが基本だから自分でスウィズルしろってことじゃね
0363デフォルトの名無しさん2015/01/04(日) 04:38:49.46ID:Yn64Vxy2
スウィズル演算子ってコストは極小だと考えて良いのかな
0364デフォルトの名無しさん2015/01/04(日) 08:19:02.14ID:rPNV6OIs
なんでネットにも本にも
いまだにUBOについてまともに解説してる日本語がないの?
0365デフォルトの名無しさん2015/01/04(日) 09:13:45.89ID:1ErtEbM3
英語で十分だから
0366デフォルトの名無しさん2015/01/04(日) 10:04:11.21ID:Bh5Ku2mW
>>362
テクスチャのアップロード時に勝手にスウィズルされるのが止められないのが問題
アップロードが遅くなる
0367デフォルトの名無しさん2015/01/05(月) 12:16:17.94ID:A9O4oHD7
OpenGL ES 3.1 対応端末とかまとめてる奴は神だな
メーカーもちゃんと端末のページに対応している拡張も含めて書いとけと言いたい
0368デフォルトの名無しさん2015/01/05(月) 14:21:56.76ID:pDg15h7/
Adrenoは400以上しかES3.1に対応してないから現状ほとんど使えない
3.0ならAdreno 300で使えるからそれで我慢
0369デフォルトの名無しさん2015/01/05(月) 15:15:02.66ID:/IEsoaY+
es3.0はそもそも仕様がわからない
0370デフォルトの名無しさん2015/01/05(月) 18:01:58.63ID:pDg15h7/
>>369
インスタンシングとかトランスフォームフィードバックとか?
0371デフォルトの名無しさん2015/01/05(月) 20:39:29.98ID:IP4LYG3G
今までglVertexPointerで頂点を打つとき、配列にはx,y,x,y,x,y,…とxとyを交互に入れていました
ここからが質問なのですが、x,x,x,…,y,y,y,…という様に配列の前半をx、後半をyにして頂点を打ちたいのです
どこをどういじればいいのですか?
0372デフォルトの名無しさん2015/01/06(火) 11:17:02.12ID:ZrMh3HqA
>>368
3.1は3.0対応GPUならドライバアップデートで対応可能って触れ込みだった気がする
だからマイナーバージョンアップになってるはずだけど、実際はそうなってないんだな…
マーケティング的な問題と面倒だからやんないんだろうな
0373デフォルトの名無しさん2015/01/06(火) 20:09:20.69ID:QIYM1JY4
>>371
そんな方法は無い
0374デフォルトの名無しさん2015/01/06(火) 22:56:15.12ID:a1JT3SDg
初心者なんですが
3Dの上に
あらかじめ透過されてるテクスチャをgldrawtexfoesで2Dで重ねたら、下の3Dが見えなくなるのですがなぜでしょうか
階層の問題なのかブレンドの問題なのか、考えられるミスを教えていただけるとありがたいです。
0375デフォルトの名無しさん2015/01/06(火) 23:39:35.50ID:a1JT3SDg
>>374
ちなみにglteximage2dで透過画像は使えるようにしてあります
0376デフォルトの名無しさん2015/01/07(水) 17:15:13.24ID:735nxo/y
巨乳美少女(自称)なのにボーンとはね
0377デフォルトの名無しさん2015/01/07(水) 18:04:45.87ID:rWeBJLPs
>>374
そもそもglDrawTexはアルファブレンドに対応しているのか?

て言うかなぜglDrawTex?
こっちの方が速いって書いてあるサイトもあるけど
沢山描画するなら1回のglDrawElementsで複数の矩形を描画したほうが良くない?
0378デフォルトの名無しさん2015/01/08(木) 12:09:06.49ID:hEabaUPc
今更ながらGLSLに&&と||の他に^^(logical exclusive or)なんていうのがある事に気づいた
どんな時に効果的に使えるのかよく分からん…うまい使い方とか何かあるのかな?
0379デフォルトの名無しさん2015/01/08(木) 22:06:31.83ID:6byj37Xn
>>377
初心者ですみません、ネットに載ってる事をそのまま実行しました。
やりたい事は3dの上にフィルター的なのを重ねたいのですが、

3dの方はdrawElementsで描画してるのですが2DはdrawtexfOESで全画面に描画がしています。

openglについてはまだまだ全然理解できていないのでできれば今のまま解決できるとありがたいです。
ちなみに、drawtex同士を重ねて描画するとちゃんと元テクスチャのアルファを認識しているのですが
drawElementsの3dの上にdrawtexの2dを重ねると下のdrawElementsが表示されません。

多分単純なミスだと思うのですが
考えられる間違いをいくつか上げていただけるとありがたいです。
0380デフォルトの名無しさん2015/01/08(木) 22:29:43.54ID:6byj37Xn
>>379
http://imgur.com/znfQ8es.png
見せたい事はこんな感じです。
上が見せたい描画で
下が斜めからみた感覚です。
0381デフォルトの名無しさん2015/01/08(木) 23:51:03.52ID:JAYi2dXH
なるほどカメラフレームを足して ●REC をやりたいと言うんだな
そういうエロ質問には張り切っちゃう回答者がいるから、そうならそうと最初から申告するように
0382デフォルトの名無しさん2015/01/09(金) 06:28:13.09ID:GHJOtrq4
それこそGLSLで^^(logical exclusive or)使えば解決する場面かもな
0383デフォルトの名無しさん2015/01/09(金) 11:12:26.63ID:bQFLimh0
>>378
ビット反転とか
0384デフォルトの名無しさん2015/01/09(金) 11:47:50.45ID:219uIpK5
>>383
それはlogical(^^)じゃなくてビット演算(^)の方だ
用途が思いつかんから、一生使いそうに無いなw
0385デフォルトの名無しさん2015/01/09(金) 13:23:21.29ID:z/2MPZTB
フラグ変数のどっちか片方だけだろ?使うことあるんじゃないか。
if ( (a && !b) || (!a && b) )
だろ?
0386デフォルトの名無しさん2015/01/09(金) 13:34:28.59ID:219uIpK5
>>385
bool値が一致しない時ってのは分かるが、このシェーダーを実装する時には使うよってのが
あったら知りたいなと思っただけで
0387デフォルトの名無しさん2015/01/11(日) 22:20:42.15ID:IYpOpbI6
圧縮テクスチャって使うと本当に描画速くなんの?
2Dゲームだけど、画質が落ちるからパーティクルを大量に描画するのにだけ使ってみようかと思って

画質が落ちたり環境毎に対応している形式が違ったりして使いづらいイメージがあるから使った事が無い
後者は実行時に圧縮テクスチャを作ればいいかもしれないが、ローディングが長くなりそう
0388デフォルトの名無しさん2015/01/11(日) 22:48:32.86ID:bUWINmyn
帯域の削減につながるから理屈の上では速くなる。特にUMAでは
とは言え実測こそが正義でしょ
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
>>380
解決しました
テクスチャを読み込みするときにバッファを初期化したら治りました

お騒がせしました
0392デフォルトの名無しさん2015/01/22(木) 18:36:46.16ID:zbSdxijO
正二十面体にライティングすると陰影がつくのですが、

それにテクスチャを貼り付けるとライティング効果が消えてしまいます。

テクスチャにライティングをつけたい場合はどうすれば良いですか?
0393デフォルトの名無しさん2015/01/23(金) 06:28:51.84ID:Hr76SqrY
かりんg
0394デフォルトの名無しさん2015/01/23(金) 08:28:15.32ID:gBl7EXC1
3dって難しいね
0395デフォルトの名無しさん2015/01/23(金) 19:23:01.24ID:aymEf6CR
>>513
これで本当によかったの?
http://codepad.org/5Icouxka
0396デフォルトの名無しさん2015/01/23(金) 19:53:00.89ID:Hr76SqrY
>>395
0397デフォルトの名無しさん2015/01/25(日) 10:42:33.02ID:+p9stgEw
2.0でfreetypeを使って描画したフォントをテクスチャにキャッシュしつつ表示したいのだが難しい
一度32bitRGBAに変換してからだと正常に描画されるのに
ALPHA8+ALPHA+UNSIGNED_BYTEだと何だかザラザラした画像が出てくる

確かAlphaしかない画像のRGB成分にシェーダーからアクセスすると全部値が1.0になるとかはあった気はするが壊れたが画像が表示されるとかあったっけ

ES2.0も対応しようとすると、フォントキャッシュを入れるテクスチャを高速にリサイズする方法がない
FBOに書き出せば良いか?と思ったが8bitのテクスチャには描画出来ない事が多いらしい

もう4096x4096x32bitで作るかと思ったが、64MBはでか過ぎな気がするし
テクスチャにキャッシュするのは止めようか
0398デフォルトの名無しさん2015/01/25(日) 22:25:07.56ID:kHXKzg8K
何が起きているのか分からないけど
RGBAで問題ないなら
RGBのところもαチャンネルとして使ったらダメなん?
0399デフォルトの名無しさん2015/01/26(月) 16:03:16.04ID:YK5ngGds
gDEBuggerでアップロードされた画像データの並びを良く見てみた

テクスチャのフォーマットをGL_ALPHAにし、幅が9ピクセルの画像をglTexSubImape2Dでアップロードしたら、最初の行のデータは合っているのに2行目からずれていることに気付いた

gltexsubimage2d pitch
で検索してみたが、UNPACK_ALIGNMENTと言うのを1に変えれば良いのだろうか
試してみる

RGBAの場合と
ALPHAでも文字によってはちゃんと表示されているのはたまたま幅が4の倍数だったからか?

>>398
シェーダー周りのコードが複雑化するので、ご免それは無しで
0400デフォルトの名無しさん2015/01/26(月) 16:22:40.17ID:YK5ngGds
やっぱり
GL_UNPACK_ALIGNMENTを初期値のままにしていなかったのが原因だった・・・
8-bitのテクスチャを使う時はこんな所も気を付けないといけなかったのな
0401デフォルトの名無しさん2015/01/26(月) 16:23:59.99ID:YK5ngGds
逆だった
UNPACK_ALIGNMENTの初期値は4だから8bitのテクスチャを扱う時は1にしないといけない
0402デフォルトの名無しさん2015/01/27(火) 18:38:06.98ID:hInLeVTZ
http://cygx.mydns.jp/blog/?arti=416
http://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+Sm
WindowsでビデオをOpenGLのテクスチャに直接ハードウェアデコードする方法って無いよね
Windowsは未だにDXVAしか無いみたいだし

調べてみたらIntelとNVIDIAは WGL_NV_DX_interopという拡張でDirectXのバッファを共有できるみたいだが
…AMDは?
0404デフォルトの名無しさん2015/02/01(日) 10:40:50.26ID:2Q//H+Sm
よく見たらAMDも対応したって書いてある所あった
0405デフォルトの名無しさん2015/02/03(火) 12:24:52.13ID:0ppKh0wX
http://schedule.gdconf.com/session/glnext-the-future-of-high-performance-graphics-presented-by-valve
GDCの3/5にglNext(次期OpenGL)の全貌が語られるっぽいな
実際に動くデモも用意されてるようだ
0406デフォルトの名無しさん2015/02/03(火) 13:51:12.15ID:vbeiF6Sp
やったねたえちゃん、うんこが増えるよ!
0407デフォルトの名無しさん2015/02/04(水) 19:51:17.74ID:o/mE3n2U
GLSLあるある
vec4.strqだと思ってrを使っててハマる…
0408デフォルトの名無しさん2015/02/05(木) 04:16:25.46ID:MGibf2Xu
glmを初めて使ったんだけど、
std::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
>>408
隙間がないから
0410デフォルトの名無しさん2015/02/05(木) 06:03:55.41ID:MGibf2Xu
>>409
確認し直したらなかった。�dクス
アドレス出力してみてたのになにか勘違いしてたみたいだ
0411デフォルトの名無しさん2015/02/06(金) 20:54:42.33ID:dBSIU1t/
これって処理系によって変わったりしないの
0412デフォルトの名無しさん2015/02/06(金) 21:06:05.08ID:E8JTKxsc
C++の話になるけど.dataがあるvectorはメモリが連続している
0413デフォルトの名無しさん2015/02/06(金) 21:31:07.77ID:PNoWHx2c
連続してようがアライメントによって変わってくるだろ
0414デフォルトの名無しさん2015/02/07(土) 00:16:00.28ID:jVkbAda3
strideを0にしなきゃいいだけでは?

SIMDのためにメモリブロックの先頭で
16byteアライメント取る必要があるって話なら
ユーザ定義のアロケータを指定すればいい
OpenGL関係ないけど
0415デフォルトの名無しさん2015/02/07(土) 01:00:43.76ID:4elrtQUt
>>410
基本的に構造体のアライメントはそこに含まれる最大のメンバに合わせられる。
vec3は3つのメンバが同じサイズだからpaddingを入れる必要がない。
0416デフォルトの名無しさん2015/02/07(土) 01:08:53.99ID:VhMEhmVK
>>408はSIMDだとvec3でもfloat4つ分あるはずだからzとxの間に隙間があると
思ったんじゃないかな?
実際SIMD実装になってるとそうなる(というか16byteアライメント必要な事と同義だが)
0417デフォルトの名無しさん2015/02/07(土) 01:43:43.86ID:fvla7uNl
OpenGLと関係無い話はなぜか伸びるのな
0418デフォルトの名無しさん2015/02/07(土) 02:09:01.94ID:VhMEhmVK
おもいっきり関係あるじゃん
ベクトルのsize(というか要素数だよな…)指定ははまり所だ
0419デフォルトの名無しさん2015/02/07(土) 12:33:43.15ID:5NH5ld2K
3Dプログラミングには関係があるが、OpenGL と SIMD にはほぼ関係がないだろう。特定の実装の話題くらいか。
GL の話題について言えば glVertexAttribPointer() なりで明示的に指定するんだからそれまで。それに渡すデータを格納するコンテナについては GL の埒外であり、>414 の言う通り OpenGL 関係ない。
0420デフォルトの名無しさん2015/02/07(土) 12:46:32.38ID:VhMEhmVK
>>419
> GL の話題について言えば glVertexAttribPointer() なりで明示的に指定するんだからそれまで。
コンテナの話しじゃなくてw分のスペースがあるかないかで3か4か変わるんだから関係ある話しだろ

お前が言ってんのはGL_TRIANGLE_STRIPで描画したいけどデータをどう格納したらいいか分からない
ってのをOpenGL関係無いって言ってるようなもんだぞ
0421デフォルトの名無しさん2015/02/07(土) 14:23:15.60ID:dy/8sxAQ
vec3がfloat3つならsizeofは12バイトになるので隙間はできない
少なくともVisual C++だとそうなる

OpenGLの頂点バッファの各属性はアラインメントが4以上じゃないとダメって制限があるらしいが
それも満たすだろ

https://www.opengl.org/wiki/Vertex_Specification_Best_Practices
0422デフォルトの名無しさん2015/02/07(土) 14:34:43.37ID:dy/8sxAQ
Unsigned Shortが3つのvec3だと2x3=6バイトになって、これだと4バイトのバイト境界に合わないからパディングされて隙間が出来るし
この隙間は他の属性には使えない
という事がそこに書いてある

ushort3つのvec3はVC++でも6バイトだからこの問題は発生するな

と言ってもshort3つのvec3使う事って無くね?
0423デフォルトの名無しさん2015/02/07(土) 16:44:07.13ID:fvla7uNl
>>422
vec3 が6バイトでもvector や配列で隙間は「できない」からアライメントに合わないのでvec4を使いましょうってことかな
0424デフォルトの名無しさん2015/02/07(土) 17:17:35.83ID:dy/8sxAQ
>>423
間違えたかも

ushort3個の場合は隙間が出来るというより、 __declspec(align(#))でも使ってアラインメントを変更して隙間を「作っておく」か
バイト数が4の倍数になるように代わりにvec4でも使えばって事か
そうしないと正常に動作しない、と

どっちにしてもwは要らなかったのなら
wは使われない無駄な要素になる気がするが
0425デフォルトの名無しさん2015/02/08(日) 13:39:41.99ID:6slRLnWu
>>420
> コンテナの話しじゃなくて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:cWsl23IO
そもそも>>418あたりでstrideとsize(要素数)をごちゃごちゃにしてるあたり、こういう操作に慣れてないんだろう
OpenGLに限ったことじゃないのだけど、>>418の普段触る範囲ではOpenGLだけが難しい操作を要求している、という感覚なのだろうな。
0427デフォルトの名無しさん2015/02/09(月) 11:45:05.16ID:rmehbRgl
>>425
> 渡すデータをどう用意するかは GL の外の話題だ。
と
> バイナリの並びをどうしたらいいかという質問なら GL 関係あるが
は言ってる事が矛盾してるぞ
0428デフォルトの名無しさん2015/02/10(火) 14:22:08.40ID:xcmiAtUy
>>427
だとしたら君の意見は?
0429デフォルトの名無しさん2015/02/10(火) 21:23:09.05ID:44JAvZF1
glNextでOpenGLは終わるんだけど
悲惨なのはWebGLか
0430デフォルトの名無しさん2015/02/10(火) 22:22:57.67ID:9R1/otM2
GL_STATIC_DRAWとGL_DYNAMIC_DRAWのどちらかを使うかで性能って変わる?
毎フレーム変える頂点データにDYNAMICを指定してみたけど効果ないように思える

単なるヒントだって言うけどドライバは何かしてくんないんだろうか
0431デフォルトの名無しさん2015/02/11(水) 00:08:20.28ID:cHTFVS1e
>>224みたいな話もあるらしいよ
0432デフォルトの名無しさん2015/02/11(水) 00:42:11.39ID:rYuhkxn/
glNextって何かもう情報出てるの
どうせ誰も使わないだろうけど
0433デフォルトの名無しさん2015/02/11(水) 00:47:34.85ID:OVDw0TNx
そもそも毎フレーム頂点データ弄る必要あるのってどんな処理だっけ
大概はシェーダで出来ちゃう気がする
0434デフォルトの名無しさん2015/02/11(水) 00:50:31.85ID:TfFe/slw
>>432
glNextが出たらマルチスレッドに対応してないOpenGLなんて見向きもされなくなる
DirectX12,Mantle,Metalの最大公約数的なAPIになるのは間違いない
逆に言うとこれらのAPIとさして変わらないものになる
0435デフォルトの名無しさん2015/02/11(水) 02:29:02.50ID:Ax7d7xjP
新しいのは今までのOpenGLと互換性あるの?
0436デフォルトの名無しさん2015/02/11(水) 12:19:06.34ID:qPIj7ERx
まだなんもわからんんだから>>405をちゅうししとけ
0437デフォルトの名無しさん2015/02/11(水) 12:27:56.29ID:cHTFVS1e
>>434
分かってるだろうけど
glNextが発表瞬間にデバイスがglNext対応になる訳じゃないから

理論上ドライバアップデートで対応できたとしても対応するとは限らないし

見向きしなくて済むのは恵まれた人
見たくなくても見なきゃいけない
つい最近まで固定パイプラインの相手をしなきゃいけなかったように
0438デフォルトの名無しさん2015/02/11(水) 13:52:40.31ID:HIUxZQ3p
>>431
とか言っているけど全部STATICでも特に問題は起きた事ない

>>433
パーティクルとか?
ES2だと頂点の移動も全部シェーダーってのは無理じゃない?
0439デフォルトの名無しさん2015/02/11(水) 14:00:40.56ID:Cq2Zt0wJ
シェーダで頂点変形させたら衝突判定とかどうすんの?
0440デフォルトの名無しさん2015/02/11(水) 14:23:26.41ID:cHTFVS1e
描画用のオブジェクトと
衝突判定用のオブジェクトは分けるもんでないの?
0441デフォルトの名無しさん2015/02/11(水) 14:32:15.60ID:nRKk5Oa4
その前に衝突の話はOpenGLと分けるべき
0442デフォルトの名無しさん2015/02/11(水) 16:03:50.67ID:TfFe/slw
>>437
もちろん保守的な意味でOpenGLは使い続けられるに決まってる
話題にならなくなるってだけだ

>>438
STATICで問題無いのはドライバというかGPUによるな

パーティクルはマトリックスで変形させるからシェーダーで問題無い
衝突は事前にCPUで済ませておけばいい

頂点データをいじるのはGPUに余裕が無い環境のスキニングとモーフィングだ
マルチパスでレンダリングする時は特にそうだ
あとモーフが一部しか変形しない場合はCPUでやってしまった方がメモリ的にも効率がいい
0443デフォルトの名無しさん2015/02/11(水) 17:17:37.41ID:qPIj7ERx
>>441
めんどくせーやつだな
0444デフォルトの名無しさん2015/02/11(水) 18:56:13.75ID:HIUxZQ3p
>>442
パーティクル一個ごとにglDrawElemetsを使うのか?それはそれであまり良いアイディアとは思えない。

ES2だからインスタンシングはない。
シェーダー変数に複数のマトリックスを入れるとしても入れられる数に限りがあるし、頂点バッファにマトリックスのIDも入れなければ。

VTFと浮動小数点テクスチャ対応なら、テクスチャに変換行列を入れることは出来るが、VTFは古いと対応していないGPUも多い。

殆どGPUでやろうとすると、結局ES3以上が必要になりそう。

全部STATICにして問題が起きるGPUってあんの?
0445デフォルトの名無しさん2015/02/11(水) 19:41:41.73ID:TfFe/slw
>>444
> パーティクル一個ごとにglDrawElemetsを使うのか?それはそれであまり良いアイディアとは思えない。
そんなわけない
やり方はある

> 全部STATICにして問題が起きるGPUってあんの?
今確認出来る環境がないがNVIDIAはそうだな
IntelはメインメモリをVRAMに使ってるせいかSTATICで問題無いのは確認した
0446デフォルトの名無しさん2015/02/11(水) 19:42:44.31ID:TfFe/slw
>>445
> やり方はある
ES2でっていう意味で(ES1は未確認なんでよく分からん)
0447デフォルトの名無しさん2015/02/11(水) 20:38:39.83ID:HIUxZQ3p
>>445
いやGeForceでもちゃんと動くんだけど??
0448デフォルトの名無しさん2015/02/11(水) 20:54:50.63ID:TfFe/slw
ちなみにマトリックスをCPUで生成するのであれば、頂点の座標変換もCPUでやった方がいいだろう
GPUでやるというのはマトリックスをGPU内で生成する方法だ
パーティクルのパラメータを頂点バッファに入れてシェーダーで最終的にマトリックスを生成すればいい
0449デフォルトの名無しさん2015/02/12(木) 01:20:42.60ID:uzrA3DJK
話の最初の方でとっくに出てるけどあくまでパフォーマンス上での実装へのヒントだから
STATICだからといって書き込んだらエラーみたいな話は無いでしょ

とまれ、どうせバッファ作る時に用途不明なんてのは稀なんだから
「俺の知る限りDYNAMICなど役に立たぬ!」なんて余計なこと考えずに
素直にusageを教えて差し上げりゃいいんじゃね
0450デフォルトの名無しさん2015/02/12(木) 13:33:59.03ID:zzcdV3s/
ゲーム作ろうと思ってOpenGL今から勉強しようと思ってたけど
そのglNextってのが出てくるまで保留した方がいいのかな?
今のOpenGLで無駄にならずにそのまま移行できる?
0451デフォルトの名無しさん2015/02/12(木) 13:46:54.79ID:OWm7+2Wj
なんとも言えない
3月初めだっけ?の発表待つのもありかもしれない

個人的には今まで非推奨(将来的に削除される)機能が
削除される時期に来たかなとは思っているので
あんまり古いopenGLの資料は無駄になるかもしれない
逆に最新のものなら名前が変わるくらいでそうそう大きな変更はないと睨んでいる
0452デフォルトの名無しさん2015/02/13(金) 02:33:37.82ID:9Kz7Xe65
glNextはハイパフォーマンス寄り、低レベル実装寄りになるはずだから
今までGLがやってくれてた部分を自分で実装するための新しい知識が必要になる
だから今まで何が出来てたのか、という知識は持っていて損はない
少なくともプログラマブルシェーダに関してはそのまま通用するし
0453デフォルトの名無しさん2015/02/13(金) 08:49:53.40ID:BFv0EcSc
glNextって既存のGPUでも動くの?
0454デフォルトの名無しさん2015/02/13(金) 12:20:43.27ID:8uFAEAYG
glNextの特徴まとめ
・3DとComputeAPI(OpenCL)が分離していたのをまとめる
・OpenGLとOpenGL ESが分離していたのをまとめる
・ドライバで隠蔽されていたGPUとCPUの負荷制御をやりやすくする
・マルチスレッド(マルチコア)対応
・シェーダーの中間表現(IR)の導入
・タイルベースレンダリングのGPUもフルサポート
・ドライバのコンフォーマンステスト(適合テスト)の充実

こんなところか
個人的にはIRの導入がうれしい
一応難読化にもなるしオフラインコンパイルだからより最適化されるはず
あとはドライバがどこまで薄くなるかだな
今はOpenGL(ES)1のAPIが使えてるからまだ敷居が低くなってるけど
glNextはそういうのが一切無くなってシェーダーはもちろんだが、レンダーバッファだの
コマンドバッファだの同期とか全部理解しないと素のままだと何も出来なくなるのは間違ない
0455デフォルトの名無しさん2015/02/13(金) 12:51:44.08ID:iQFp0dMa
OSに常駐するFoundationみたいなのはそれぞれ別個に存在するような感じなんですかね?
0456デフォルトの名無しさん2015/02/13(金) 13:54:35.09ID:8uFAEAYG
Foundationと言うかまだ不明確な要素は
・ベクトル演算ライブラリ
・GLX、WGL、EGLのような初期化部分
・モデルデータの定義とローダー

この辺は相変わらず勝手にやってね状態なのかね
初期化部分はEGLみたいな共通の手順が用意される可能性は高い
モデルデータはglTFがあるからこれをglNextに対応させればいいだろうな

しかし結局は素で使わないでゲームエンジン経由で使う事が普通になるのかもしれない
0457デフォルトの名無しさん2015/02/13(金) 19:35:45.91ID:XtjmR1ji
スマホだと既存のアプリも動かないと導入されにくいだろうな新旧共存出来ないと
0458デフォルトの名無しさん2015/02/13(金) 19:39:39.98ID:iQFp0dMa
既存のスマホもglNextがアップデートされるような形になるんだろうか
0459デフォルトの名無しさん2015/02/13(金) 19:45:25.16ID:Vn+DEHN9
OpenCLまで取り込むのか
0460デフォルトの名無しさん2015/02/13(金) 19:58:45.32ID:WAp/hlC3
そこでNVIDIAからそっぽを向かれたり・・・しないよな?
0461デフォルトの名無しさん2015/02/13(金) 20:01:59.19ID:gRsKeB2m
OpenCLとGLSLってなんであんなに色々違うんだろ
0462デフォルトの名無しさん2015/02/13(金) 20:26:42.77ID:8uFAEAYG
http://www.4gamer.net/games/990/G999024/20130329015/
PS4は「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
>>454
>・3DとComputeAPI(OpenCL)が分離していたのをまとめる

これComputeShaderだけじゃなくてOpenCLも?どっかに情報出てた?
0464デフォルトの名無しさん2015/02/14(土) 00:46:15.84ID:5JA3zGZl
>>463
OpenGLでもコンピュートシェーダーが実装されてるけど、グラフィック無しでは使えないのを
使えるようにするだけかもしれんな
それでもOpenCLがいらなくなる(統合される)とも言えると思う
0465デフォルトの名無しさん2015/02/14(土) 07:16:29.95ID:ocCjNIfb
なんだその謎解釈w 結局ただの憶測か。
0466デフォルトの名無しさん2015/02/14(土) 15:41:51.83ID:SlvD5Eqk
グラフィックなしでは使えないっつーけどグラフィックなくていいならそれこそOpenCLでいいだろう
0467デフォルトの名無しさん2015/02/14(土) 16:46:49.45ID:ocCjNIfb
OpenCLに描画機能を追加すりゃそれでいいんだよな。むこうの方が仕様が整理されているし。
0468デフォルトの名無しさん2015/02/15(日) 05:55:04.06ID:5puPdO/6
必ずテクスチャーに描画する事にしてそこまでをOpenGLから分離
OpenGLはテクスチャーを画面に送る機能だけにしても良いと思うわ
0469デフォルトの名無しさん2015/02/15(日) 13:21:22.96ID:SSlwb3yD
>>463
結局これ、ただの>>454の妄想だったのかね?
それともまさか、ComputeShaderとOpenCLを混同したとか。
0470デフォルトの名無しさん2015/02/15(日) 13:42:13.43ID:uL6XdEu6
UNPACK_ALIGNMENTを大きくしたらテクスチャのアップロードは早く終わる?
普段は8にして
画像の幅のバイト数が8の倍数じゃない時だけ4以下にしようと思う

公式を見るとglReadPixelsを使う時は8にしろとかいてある

https://www.opengl.org/archives/resources/faq/technical/performance.htm
0471デフォルトの名無しさん2015/02/15(日) 17:35:58.95ID:pAXS9/A0
環境による。
0472デフォルトの名無しさん2015/02/15(日) 18:01:03.11ID:/QGf0Sdg
オープンGLのプログラムの書き方と
ベクター形式画像は
同じ方式だと思うのですが
あってますか?
オープンGLはコンパイルしてあるってだけですよね
0473デフォルトの名無しさん2015/02/15(日) 18:06:25.21ID:TTUR8i8s
日本語で
0474デフォルトの名無しさん2015/02/15(日) 19:55:06.89ID:Yeli3JmX
ベクター画像の描画にOpenGLを使うことはあたかもしれない
0475デフォルトの名無しさん2015/02/16(月) 01:14:42.87ID:r0eZc6lZ
>>472
オープンGLで書いたプログラムをコンパイルしたものはベクター画像ではありません
0476デフォルトの名無しさん2015/02/16(月) 01:46:18.56ID:zGKxniVf
PDF(PostScriptの拡張)とかEMF(GDI32)とかは
プログラムをコンパイルしたベクター形式画像と見なせる
(プログラムとも言えるしデータとも言える)

明確な線引きは難しいが
とりあえずOpenGLは
太さxで色cのペンで半径rの角丸長方形(t,l,w,h)を描いて色fで塗りつぶす
みたいな高水準な命令セットではない

とはいえ例えばGLSL Sandboxのスクリプトは
画像フォーマットと言っても通用するかもしれない
0477デフォルトの名無しさん2015/02/16(月) 02:05:17.84ID:zGKxniVf
背後注意
ttp://glslsandbox.com/e#743.2

PostScriptを画像データとするなら
こういったスクリプトが画像データでないとは言えないんじゃなイカ?
0478デフォルトの名無しさん2015/02/16(月) 03:56:40.51ID:mZ7/C2hi
glTexImage2D()する際に渡したイメージメモリのポインタってすぐに削除しちゃっていいんだよね
ビデオメモリかどっかにコピーされたのが実際のテクスチャメモリなんだよね
0479デフォルトの名無しさん2015/02/16(月) 09:04:54.44ID:GwqcDOCH
>>478
そうだけど
VRAMにアップロードしたデータが失われるコンテキストロストに対応するなら取っておかないと

ただコンテキストロストを検出して再アップロードするって
自分で書くとハードルが高いし
環境によっては殆ど起こらないみたいなので
対応しなくても良いかもしれない
0480デフォルトの名無しさん2015/02/16(月) 10:36:27.19ID:V02mvTKs
うちの開発用泥端末だと電源オフ(待ち受け状態)から復帰で必ず壊れる
復帰時に再取得させるか削除しないかだな
0481デフォルトの名無しさん2015/02/18(水) 07:40:22.98ID:qvl6rHoE
>>480
そんな状態にしてリソースを保持し続けている方が異常だろ。
0482デフォルトの名無しさん2015/02/18(水) 09:17:03.38ID:xRyhKuxQ
テクスチャをRGBやRGBAではなくて、テクセルあたりfloatやintの単独要素として
扱いたいとき、どのようなやり方があるのでしょうか。

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
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, data);
はそれで良くて、gl_FragDepthに書き込めばいいんじゃないの?
04844822015/02/18(水) 11:32:43.21ID:OpNfKS0N
>>483
ご回答ありがとうございます
出力変数をoutで指定して出力してたので、
glFragColorとglFragDapthの組み込み変数を使う方法がかえって頭から抜け落ちてました

コードに関しては、R32やR32Fはサポート外だったものの、GL_REDを指定して、データ単位にgl_floatやgl_unsigned_intを指定したら想定通りの動作になったため、他の部分に影響の少ないこちらの方法でいこうと思います
私の初歩的な質問にお手数とっていただきありがとうございました
0485デフォルトの名無しさん2015/02/18(水) 23:20:13.07ID:Nwu/JC4c
GL_ALPHA
GL_LUMINANCE
GL_INTENSITY
0486デフォルトの名無しさん2015/02/23(月) 20:38:55.72ID:1tXM0xOe
ES2.0、Androidで開発しています。
ES1.1の頃にあったglLineStippleのようなパターンを指定して破線を描画したいのですが、
どういった方法があるでしょうか。

texture2Dでパターン作成→
gl_FragColor = vcolor * texture2D(texture, gl_FragCoord.xy)
のようなことも試してみたのですが斜線や円弧を描画すると、
正しいパターンで出力されず困っています。

良い方法がありましたら教示下さい。
0487デフォルトの名無しさん2015/02/23(月) 22:08:42.99ID:xmAqWFka
エスパーすると、uv を 1d にして、始点からの描画距離を渡す。
04884862015/02/23(月) 23:36:20.32ID:tzSWPUMs
>>487
ありがとうございます。

uvを1Dにするとのことですが、uvのどちらかを常に0にして、distance関数で
距離を渡せば良いということでしょうか?
0489デフォルトの名無しさん2015/02/24(火) 06:31:48.16ID:r2JEjWID
> uvのどちらかを常に0にして
そのどちらかの 0 じゃない方に距離を CPU で計算して入れておく。
0 の方は渡す必要はない。
例えば xyz u xyz u xyz u ... のような頂点列を glVertexAttribPointer() で作成する。

つーか、エスパーって言われてるんだから、もっと必死に説明しない?
答える側よりも質問する側の方が多くの労力を使うべきだとは思わないか?
> 正しいパターンで出力されず困っています。
だってこっちにゃ分からないし、ならまともな助言は困難だ。
例えばどっかに最小限のプロジェクト一式あげればいい。
0490デフォルトの名無しさん2015/02/26(木) 13:46:22.60ID:c0x9Oh30
glfw3のウィンドウサイズって変更不可にできない?
あとフレームレートを固定するならどんな実装方法あるかな
0491デフォルトの名無しさん2015/02/26(木) 23:45:22.55ID:3YcdmEPq
こそのくらいぐぐろう→GLFW_RESIZABLE
FPS固定方法はOpenGL関係なし
0492デフォルトの名無しさん2015/02/27(金) 21:55:42.91ID:jWIxKLNs
まあ,DirectXもOpenGLもMFCのレベルだろうな。

もう少しすれば、C#みたいに簡単にWindowsソフトが作れるような3Dソフトが
出てくるだろうな.Unityみたいな。

だが、おれはゲームには全く興味がない。Unityに期待するのは物理シミュレーション
と背景がリアリティにできることだ。一応、ベクトルのピッチ,ヨー,ロール角の指定
とクォータニオンが使えそうだがな。しかし,それよりも重要なのはマルチメディア
タイマーの正確なタイマー割り込みだ。OnTimerみたいな糞使えるか!

正式のNetFrameworkは使えるかもしれんが,mono版はどうなのか?

それともマルティメディアタイマーはNetFrameworkやmonoとは独立なものか?
0493デフォルトの名無しさん2015/02/27(金) 22:48:38.29ID:qLq7jEUd
リアルな背景とか機能じゃなくてアルゴリズムだから自分でやるしかないんだよね
0494デフォルトの名無しさん2015/02/28(土) 11:51:33.77ID:+PdojbX5
>>492
スレ違い。
ゲームも物理シミュも背景もベクトル演算もタイマーもUnityも.netも。
マルチメディアタイマーは Win32API。ググれよ。

一行目はFPSの話?なら DirextX は初期化時に指定すると Present() で同期してくれる。スレ違いだけど。
0495デフォルトの名無しさん2015/03/01(日) 02:32:20.57ID:X0CVxi61
>>494

あ、そう。知ってて言ってるんだけど。DirectX9でさんざん苦労したからな。

しかし、それがUnityみたいな糞ゲームソフト専用、それもmonoの上で動いてる
状態で使えるのか?と聞いているんだけど。

Windows上の.Netframework,C#で使えるのなら多分使えるでしょうよ。
だけど、monoが組み込まれていると聞くと不安になるじゃん。
0496デフォルトの名無しさん2015/03/01(日) 08:47:06.93ID:7JAcdBvR
こいつの脳内で完結しちゃってて
何を言ってるのかさっぱり分からん
0497デフォルトの名無しさん2015/03/01(日) 09:49:41.50ID:6ijce9uo
同意します
0498デフォルトの名無しさん2015/03/01(日) 11:45:10.12ID:7mHoCKoz
Unityアンチ君はゲ製板から出てくるなよ
0499デフォルトの名無しさん2015/03/01(日) 12:11:22.72ID:X0CVxi61
>>496

お前みたいな池沼にきいてねえよ。黙ってろ
0500デフォルトの名無しさん2015/03/01(日) 12:13:32.16ID:X0CVxi61
>>497

弱い犬は黙ってろ

>>498

お前馬鹿か
0501デフォルトの名無しさん2015/03/01(日) 14:17:29.59ID:LlN1UCfi
マジ基地ワロタ
0502デフォルトの名無しさん2015/03/02(月) 03:59:08.68ID:YXZKaoyM
句読点の打ち方が気持ち悪い
0503デフォルトの名無しさん2015/03/02(月) 08:08:56.49ID:ZUmh2kSf
キチガイというよりは高機能自閉って感じ
0504デフォルトの名無しさん2015/03/02(月) 09:15:03.63ID:nKoS5yNc
診察w
0505デフォルトの名無しさん2015/03/02(月) 11:34:57.19ID:LtmuVP82
>>495
スレ違いだって言ってるだろ。
> 状態で使えるのか?と聞いているんだけど。
Win32API も DirectX も .net Framework じゃねーんだから使えるわけねーだろ。少しは考えるか検索するかしろ。スレ違いだけど。

知ってて言ってるなんて言うなら、スレ違いも間違った知識も書き込まないで欲しいものだ。
つーか半年ROMれ。
0506デフォルトの名無しさん2015/03/02(月) 19:53:21.90ID:4sJFPc+5
木曜日まだかよ
0507デフォルトの名無しさん2015/03/03(火) 02:24:44.17ID:Xcc3C+8U
glslのgl_VertexIDには
glDrawElementsで描写した場合、
glDrawElementsの引数で指定したindicesが入ってくると思ってOk?
0508デフォルトの名無しさん2015/03/03(火) 11:13:14.14ID:gcsDknOw
NextGLの名前はVulkanになった
http://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:qFeHatvo
APIがマシになってればそれでいい
0510デフォルトの名無しさん2015/03/03(火) 19:29:30.46ID:C37q5ZeB
バルカン?
誰も使わねーよ
0511デフォルトの名無しさん2015/03/03(火) 20:01:30.34ID:gcsDknOw
Khronos Group Announces Vulkan, OpenCL 2.1, SPIR-V
http://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:gcsDknOw
一次ソース
https://www.khronos.org/vulkan
普通にここ見た方が良かった…
0513デフォルトの名無しさん2015/03/03(火) 21:38:16.83ID:nEEMYOt+
Vulcan ってバルカン半島 (Balkan -) かと思ったが火の神ウルカヌスか
0514デフォルトの名無しさん2015/03/03(火) 21:52:40.78ID:QODsipDB
NVIDIAのOpenCLはSPIR対応してなかったはずだが、ここで一気にOpenCLのバージョンも
上げてくれたりするのかな?
0515デフォルトの名無しさん2015/03/03(火) 23:17:52.17ID:SYPkbviy
前々からカオスな状態なんとかしろ!
って言われてたから一度すっきりさせちゃうのかな?

このままダラダラ拡張工事するよりそっちの方がいいのかな
使いやすければみんな移行してくれるだろうし
0516デフォルトの名無しさん2015/03/03(火) 23:24:45.00ID:Gz+2v5XC
ドライバーもシンプルになるし、使う方も多分OpenGLより分かり易くなるはずだから
互換性が無くなる以外のデメリットは無いだろうね
0517デフォルトの名無しさん2015/03/04(水) 10:01:45.52ID:5uhGpq54
Fahrenheitと同じ臭いがする
0518デフォルトの名無しさん2015/03/04(水) 11:28:11.34ID:r+Qv6+bp
>>517
ドライバーの実装はシンプルになる訳だし、明日動いてるデモもやるし
Fahrenheitみたいに絵に描いた餅というわけではないよ
しかもSPIRは既にOpenCLで実績もある
0519デフォルトの名無しさん2015/03/04(水) 12:14:52.72ID:r+Qv6+bp
Trying out the new Vulkan graphics API on PowerVR GPUs
http://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:bYHomauY
2Dで大量の画像を拡大して描画するととても遅い

gDEBuggerでビューポートを1x1にしたり、テクセル取得を無効にすると速くなるから明らかにGPU側のボトルネック

テクスチャを拡大して描画を大量に行うのって遅いの?
最近のGPUなら余裕なのかと思っていた
0521デフォルトの名無しさん2015/03/04(水) 18:20:51.91ID:x4QEPSD1
テクせるフィルレートも順当に上がっているはずだがな
0522デフォルトの名無しさん2015/03/04(水) 21:56:09.16ID:ash2xzd6
[GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに - 4Gamer.net
http://www.4gamer.net/games/293/G029343/20150304076/
0523デフォルトの名無しさん2015/03/04(水) 22:54:32.36ID:opxrEqba
Metalは収束する代わりにVulkanがMetalベースになるんだな
という事はPS4(GNM)にかなり近いものになるって事だ
コンソールゲーム機並の薄いレイヤーを使えるのは楽しみだな
0524デフォルトの名無しさん2015/03/05(木) 13:05:06.02ID:0EnLiuqK
このVulkanが普通に使えるようになるのはどれくらい先なんだろう?
0525デフォルトの名無しさん2015/03/05(木) 13:42:07.96ID:k1/uMwv3
ベースがMantleだからAMDの最新GPUでのサポートは早そうだ、遅くとも今年中かな
モバイルはPowerVRの対応が早いけど、OSのサポートとかも必要だから
対応機種が販売されるのは来年以降だろうな
あと>>523のMetalはMantleの間違い
0526デフォルトの名無しさん2015/03/05(木) 14:08:27.14ID:0EnLiuqK
ということは現行のモバイル機器は未対応なのかな
0527デフォルトの名無しさん2015/03/05(木) 14:31:09.74ID:qMMvI+32
アップデートで対応できないことはないだろうがしないだろう
買い替えを促すはず
0528デフォルトの名無しさん2015/03/05(木) 14:54:52.64ID:k1/uMwv3
>>526
OpenGLES3.1以上対応してるGPUがターゲットらしいが、
そもそもモバイルだと3.1対応GPUはほとんど出回ってないと思う
0529デフォルトの名無しさん2015/03/05(木) 16:55:14.46ID:XDn0tq2I
OpenGL ES 3.0に対応していればハードウェア的には3.1もいけるから
能力はあるのにドライバが上位バージョン対応してないってのは結構ある
0530デフォルトの名無しさん2015/03/06(金) 05:12:36.97ID:5iCVxz3v
NVIDIA Frees PhysX Source Code | techPowerUp
http://www.techpowerup.com/210398/nvidia-frees-physx-source-code.html
0531デフォルトの名無しさん2015/03/06(金) 11:50:43.72ID:BnNW7/uW
>>530
これはOpenGLとは何も関係無いな
0532デフォルトの名無しさん2015/03/06(金) 12:46:50.45ID:f+3piDkw
あ、原理主義者湧いた
0533デフォルトの名無しさん2015/03/06(金) 13:12:46.39ID:UY349KBP
PhysX は普通にスレチじゃん
0534デフォルトの名無しさん2015/03/06(金) 13:34:15.27ID:o83AvVMt
他人がミスしたときに鬼のように攻撃して来るやつ嫌い
0535デフォルトの名無しさん2015/03/06(金) 14:34:34.52ID:O+62yf/F
スレ違いも嫌いだ。
半年ROMって欲しい。
0536デフォルトの名無しさん2015/03/06(金) 14:45:27.25ID:f7Mlx/7Q
お前が出ていくんやで
0537デフォルトの名無しさん2015/03/07(土) 08:41:28.11ID:3KyZhNX/
VulkanのAPIが紹介されてる。
https://www.khronos.org/assets/uploads/developers/library/2015-gdc/Khronos-Vulkan-GDC-Mar15.pdf

マルチスレッド対応ということでやっぱりOpenCLと似たような形になったね。
0538デフォルトの名無しさん2015/03/07(土) 14:18:48.41ID:mxofLn9D
もうLLVMに縛られないZE!
LLVMとの変換には対応するつもりですから、いやホント、マジで

ってところにアンビバレンスを感じざるを得ない

GLSLはどうマルチスレッドに対応するのかね
0539デフォルトの名無しさん2015/03/09(月) 11:55:34.11ID:gYKpluIX
>>538
シェーダーがマルチスレッドになる訳じゃないぞ
更に言うとVulkanドライバが実行するのはSPIR-V(中間言語)で
GLSLはそれに変換するための1言語に過ぎなくなる
多分GLSLは過渡期に使われるだけでC++(C++14)のサブセットがメインになるはず
0540デフォルトの名無しさん2015/03/09(月) 15:27:33.35ID:gYKpluIX
>>537
http://vulkan-tutorial.com/assets/Khronos-Vulkan-GDC-Mar15.pdf

こっちの方がより詳しい
つうかファイル名も一緒だし最初こっちの方が見れてた気がするけど
いつの間にか簡単な方に入れ替わってるな…
0541デフォルトの名無しさん2015/03/09(月) 18:53:09.78ID:p/uzbTQA
SPIR-Vを出力する、様々な言語が生まれるかも?
0542デフォルトの名無しさん2015/03/09(月) 19:22:30.27ID:gYKpluIX
それは間違いないだろうね
Vulkanの方だとGLSLで十分な気がするけど、OpenCLの方では色々な言語で書けた方が便利そうだ
Java(バイトコード)→SPIR-Vなんて絶対有りそう
0543デフォルトの名無しさん2015/03/10(火) 00:42:37.75ID:1xBIqwIz
バーチャルメモリに対応してるから、CPUとGPGPUでポインタ使ったプログラムを簡単に作れるといいんだけど
0544デフォルトの名無しさん2015/03/10(火) 21:24:05.77ID:g1ZPrZ6Z
opengl を勉強しています。気になったことがあるので教えて下さい。頂点シェーダーのみで
使用する値を uniform で提供することに、パフォーマンス上の問題はありませんか?単一の値は
uniform で提供することが多いと思いますが、頂点シェーダーでしか使わない場合は、
vertexAttrib で渡すほうが低負荷なのかなと思いました。
0545デフォルトの名無しさん2015/03/10(火) 21:49:50.71ID:jYuKkuM9
どうしてそう思った
普通は頂点によらず一様な値を参照する場合と、頂点毎に違う値を参照する場合だったら
前者のほうが早そうに思うものじゃないのか
05465442015/03/10(火) 22:03:24.24ID:g1ZPrZ6Z
>>545
すみません、説明不足でした。正確には、「頂点シェーダーのみで使用される、
全ての頂点に共通の値を提供する場合に、uniform と vertexAttrib1f等、どちらが
低負荷か」です。vertexAttrib1f を使って共通の単一の値を提供したいです。
0547デフォルトの名無しさん2015/03/10(火) 23:40:12.38ID:RkF6p7+X
>>542
Vulkanの方で呼び出し規約を合わせてOpenCLカーネルも呼べるようにならないかなぁ。
OpenCLやる気なさそうなNVIDIAもVulkanはフルサポートするだろうし、面倒くさい
Interopやらなくてもグラフィックと連携できるし。
0548デフォルトの名無しさん2015/03/11(水) 01:22:14.69ID:+uQXnrW7
>>546
uniform用のメモリは固定的に確保されているんじゃない?

そうだとすればフラグメントシェーダで使うか否かで
頂点シェーダでのパフォーマンスが変わるとは思えない
(気にせずにuniformを使えばいいんじゃね?)

使いどころとしてはこの動画が分かりやすかった
glVertexAttribPointer vs glVertexAttrib
ttps://www.youtube.com/watch?v=oGbMk1tjWHo
05495442015/03/11(水) 07:10:30.30ID:zxLoZv06
>>548
特に問題はないんですね。uniform を使っていきたいと思います。
ありがとうございました。
0550デフォルトの名無しさん2015/03/11(水) 12:17:39.50ID:TljJJujv
uniformとattributeは全く別物
頂点毎に違う値を渡す→attribute
全頂点で同じ値→uniform
0551デフォルトの名無しさん2015/03/11(水) 21:55:54.16ID:XdPBt9Kr
>>552
今のGPUだと4K,100万ポリゴン程度のレイトレースを30fpsで出来るん?
0552デフォルトの名無しさん2015/03/11(水) 22:06:20.64ID:DfIYoSYU
走査回数が一度で良ければ余裕だが
0553デフォルトの名無しさん2015/03/11(水) 22:52:29.23ID:XnK+a5S4
これはw
0554デフォルトの名無しさん2015/03/12(木) 03:17:24.25ID:Uf1LUGUx
>>550
だからあえてglVertexAttrib1fを使うとどうなのかって
>>546で言ってるんでしょ

結果的にuniformで解決したが

attributeをuniform的に使うのは普通無駄なんだけど
ある時は全頂点で同じ値
ある時は頂点毎違う値を渡したいとすると
使える場面があるかもってのが>>548の動画

同じ値が入った無駄な配列を作ったり
uniform版とattribute版のプログラムを切り替えたりする必要がない

効果の程はわからんが
0555デフォルトの名無しさん2015/03/12(木) 13:03:17.10ID:Qq6zOeIC
ちらっと気になったんだけど
Blend modeってシェーダで再現できる?
シェーダで再現しようとすると書き込み先のテクスチャーからサンプリングすることになって
これは一般的に出来る保証はされてないはずなんだが
0556デフォルトの名無しさん2015/03/12(木) 14:30:36.38ID:yGIdqSj4
>>555
書き込み先はレンダーターゲットテクスチャにしたら良いだけ
0557デフォルトの名無しさん2015/03/12(木) 15:04:56.44ID:ecEvhiSG
read/writeで同時にバインドできたっけ?
0558デフォルトの名無しさん2015/03/12(木) 16:52:28.23ID:yGIdqSj4
>>557
特殊なブレンドをする時のために
全ての描画をRTTに行えば良かろう

基本的なのはglBlend*系の関数だけで出来る
0559デフォルトの名無しさん2015/03/12(木) 18:35:02.08ID:Qq6zOeIC
話噛み合ってない気がしますね
openglでのread/writeは未定義です
ttps://www.opengl.org/wiki/Framebuffer_Object#Feedback_Loops

疑問は
glBlendではこれが達成できているのか?それともいないのか?
ということになるでしょうか(glBlend系の関数をあまり使ったことがない)
0560デフォルトの名無しさん2015/03/12(木) 19:28:37.25ID:eQxaE5Ys
唯一glBlendだけがそれをできる。可能な操作はglBlendFuncで指定したものだけ。シェーダーは介入できない
0561デフォルトの名無しさん2015/03/12(木) 19:49:51.53ID:Qq6zOeIC
やっぱりそうですか
そのためだけにシェーダを捨てるのは現実的じゃあないですしね・・・ありがとうございます。
0562デフォルトの名無しさん2015/03/12(木) 20:45:13.29ID:yGIdqSj4
glBlendじゃ無理な合成をシェーダーでやるつもりじゃなかったのか。
ポストエフェクトみたいな感じで
0563デフォルトの名無しさん2015/03/12(木) 21:12:03.46ID:Qq6zOeIC
例えば重なった半透明ポリゴンを1回のglDrawElementsで描写するとする
重なった部分はzソートされてたとすると
そこそこ高級なシェーダと、重なりの合成処理は、
シェーダ+glBlend関数でもしやできるのか?というものでしたが
片方しか使えないとなると、そもそも1回のglDrawElementsじゃあ無理そうですね
0564デフォルトの名無しさん2015/03/12(木) 22:13:58.40ID:Uf1LUGUx
そこそこ高級なシェーダってのが何なのか分からん
片方しか使えないって話がどこから来たのかも分からん
0565デフォルトの名無しさん2015/03/12(木) 22:56:55.58ID:yGIdqSj4
>>563
片方しか使えないとは言ってない
0566デフォルトの名無しさん2015/03/12(木) 23:45:46.55ID:pDIWcnNd
glBlendは、ピクセルシェーダより後の工程。
ピクセルシェーダより後の工程にはstencil処理とかz処理とか入ってる。
シェーダ化されてないハードウェアロジックでの処理というイメージ。
パイプラインの図をどこかで見直してくるといいと思う。
0567デフォルトの名無しさん2015/03/12(木) 23:54:19.04ID:Qq6zOeIC
なるほど、丁寧にありがとうございます。
0568デフォルトの名無しさん2015/03/13(金) 00:13:23.75ID:kEac2+pB
半透明処理なんて数十年と検討されてきているのだから
凡人の思い付き程度なら既に誰かやっているはずだし
やられていないなら何らかの問題があると考えるべき
0569デフォルトの名無しさん2015/03/13(金) 09:06:28.41ID:iHtCqyAo
21世紀にもなって半透明の書き込み順に頭を悩ますとか狂ってるよな
メモリ安いんだしZとフラグメントを10枚ぐらい保存し置いて
最後にがっちゃんこしたら駄目なんだろうか
0570デフォルトの名無しさん2015/03/13(金) 09:36:56.77ID:Oaowwqwo
同意せざるを得ない
0571デフォルトの名無しさん2015/03/13(金) 09:55:56.52ID:5pVd+u90
むしろ半透明オブジェクトは10枚で済むのか
0572デフォルトの名無しさん2015/03/13(金) 19:04:12.65ID:VrEGunLI
>>569
キャッシュヒットしなくなって遅くなるんじゃないの。
0573デフォルトの名無しさん2015/03/13(金) 19:46:22.20ID:pgf80lUB
バスがきつくなりそう
0574デフォルトの名無しさん2015/03/14(土) 13:15:00.07ID:uC43cjWr
ハードウェアZソート
0575デフォルトの名無しさん2015/03/14(土) 15:45:53.70ID:/3rV1UbV
A-Bufferの話か?
0576デフォルトの名無しさん2015/03/14(土) 17:17:05.85ID:/pR8lfEg
やるなら前後関係が正確なだけでなく「中身」がないとなぁ

ボリュームレンダリングは医療方面の需要から
この15年くらいでもっと普及するかと思ったけど
そうでもなかった

まぁ医療と娯楽その他では要件が違い過ぎるか
0577デフォルトの名無しさん2015/03/14(土) 19:28:57.60ID:YhbeU6Hs
マインクラフトはボリュームレンダリング
0578デフォルトの名無しさん2015/03/15(日) 00:42:23.85ID:zzD8LMvk
モバイル系GPUだと、ジオメトリをタイル分割して、いったんメモリに格納しているって理解なんだけど正しいかな?
そうだとすると、メモリに格納した三角形を自動でソートしてほしい。
他のタイルの処理を並列にしとけば追加の処理時間もいらないと思うけど。
ダメかな?
05795782015/03/15(日) 00:43:45.09ID:zzD8LMvk
あ、だめか。ごめん。
0580デフォルトの名無しさん2015/03/15(日) 10:27:54.29ID:HbtsoE+l
オフラインレンダリングでは30年前には提案されてるし、制限はあるがOpenGL版もある
http://blog.icare3d.org/2010/06/fast-and-accurate-single-pass-buffer.html
0581デフォルトの名無しさん2015/03/16(月) 17:36:41.11ID:CndUfgZm
>>578
ドリキャスのGPUはPowerVRだったけど確かα付きポリゴンのハードウェアソート機能があったはず
でも結局糞重いのか知らんけどCPUでソートするのが普通だったはず
そんで今のPowerVRにはその機能がなかったはず
全部憶測でスマン
普通は完璧にソートする必要があるのは一部だからCPUでやればいいんだよ
0582デフォルトの名無しさん2015/03/16(月) 22:54:38.21ID:LIP69G5Q
今でもPowerVRといえばTBDRだよ

CPU側での高速化テクニックが
ことごとく裏目に出る元凶な気がする
05835812015/03/17(火) 11:15:07.07ID:hv3bO6s6
>>582
タイルベースじゃなくなったとは言ってないよ
それと高速化の手法なんて突き詰めればGPU毎にくせとか違う訳だし
PowerVRだけ特殊というわけじゃないと思うよ
0584デフォルトの名無しさん2015/03/17(火) 13:53:09.10ID:hv3bO6s6
Khronosの次期グラフィックスAPI「Vulkan」
http://pc.watch.impress.co.jp/docs/column/kaigai/20150317_693050.html

特に目新しい情報は無い
0585デフォルトの名無しさん2015/03/17(火) 14:06:25.09ID:9PxdASsP
GPUのチューニングはホント手間かかるもんな。
0586デフォルトの名無しさん2015/03/20(金) 22:14:08.06ID:48uWF2N0
これ使えるのいつになるの
0587デフォルトの名無しさん2015/03/20(金) 23:08:37.53ID:hICNPk8K
イマイチ流行る気がしない
0588デフォルトの名無しさん2015/03/21(土) 05:33:48.48ID:YhTU6zC6
GPU毎にチューニングしなければいけないとかならダルいな
0589デフォルトの名無しさん2015/03/21(土) 19:07:40.92ID:OqDx15kK
いくつかのテストデータをレンダリングするだけで勝手にチューニングしてくれると楽なんだが
0590デフォルトの名無しさん2015/03/23(月) 12:12:27.97ID:ANPHJbRz
ゲームだったらレンダリング速度は価値のあるものだからな
楽に行かないからこそ意味がある
0591デフォルトの名無しさん2015/03/23(月) 13:02:31.60ID:ANPHJbRz
NVIDIA Command-List Support In Newest Drivers To Lower GL Overhead
http://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
>>590
楽にできる方がいいに決まってるだろ

意味が分からん
0593デフォルトの名無しさん2015/03/24(火) 08:41:51.63ID:TeQ0Qq48
CommandListは現代版のdisplaylistでは無いんだよな?
0594デフォルトの名無しさん2015/03/24(火) 10:58:38.46ID:uj9iIi7g
>>592
チューニングの捉え方が違うかもしれんが、普通チューニングっていうと
新しいアルゴリズムを考えたり、計算結果を事前にテクスチャに格納したりとか、
それらを全部計測してやっぱり最初のが良かったとかなると思ってた。

それとは別にNVIDIAがドライバ更新で毎回やってるけど、特定のゲームが20%速くなった
とかいうのもチューニングだとは思うが、それのことを言ってんのかね。
0595デフォルトの名無しさん2015/03/24(火) 11:05:41.00ID:Hc8XM1d9
変な奴やなお前
0596デフォルトの名無しさん2015/03/24(火) 11:30:19.76ID:uj9iIi7g
>>593
俺も最初見たときはDisplayListが復活したのかと思ったけど、DisplayListと
違うのはポインターを直に使えるのと、マトリックスとかを更新できるたりするようだ

根本的にOpenGLを変更してるけど、最近のOpenGLに対応してる場合は移行は簡単かも
しれないし、それでオーバーヘッドを0に出来るならもうこれでいいじゃんと思った。
それとNVIDIA使ってる人はもう試せるな
0597デフォルトの名無しさん2015/03/24(火) 12:10:55.52ID:G9tATrYC
例えるならMSAA, SSAAを起点とした、FXAAやSMAAはチューニングなのか否か?って感じだと思うが
この辺個人差があるだろうからフレームの元にしかならん気も

ドライバのチューニングは過激なのだと結果まで変えてくるな
0598デフォルトの名無しさん2015/03/24(火) 18:58:59.26ID:6/m8qIKl
楽に行かないことにどのような意味があるのかが分からない
0599デフォルトの名無しさん2015/03/24(火) 20:57:11.65ID:nwsc0Fsb
ゲーム業界の一部はヒューリスティックによるややこしい最適化大好き
0600デフォルトの名無しさん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:kCrbPI5F
根性論こそ全て
0603デフォルトの名無しさん2015/03/24(火) 23:26:28.52ID:r0/0d9G9
最適化に根性使うとこなんかどこにもないけどな
0604デフォルトの名無しさん2015/03/25(水) 12:16:50.58ID:4Ou36H7x
コンシューマーゲームを敢えて60fpsで作るのは根性以外の何者でもないな
執念とも言うがな
結局妥協して30fpsになるゲームなんて山ほどある
0605デフォルトの名無しさん2015/03/27(金) 13:45:30.80ID:j+Tm5TZz
glDrawElementsで直角二等辺三角形を2つ書いて正方形にする場合
4つの頂点に対して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
この場合intelHD3000がglDrawElementsを内部でglDrawArrayに変換してる予感がしてきた
困るなあ
0607デフォルトの名無しさん2015/03/28(土) 00:48:18.87ID:P1zMjfqJ
ノートPCに搭載されてるSandyBridge世代のGPU,HD何かわからないんだけどVAOがEBO保持しなくて苦しんだ覚えがある
06086052015/03/30(月) 17:30:24.32ID:IoC6Id9c
VBOとIBOにしたらRadeon側の動作に統一できたっぽい
0609デフォルトの名無しさん2015/04/10(金) 02:34:57.24ID:UWzVHuW8
OpenGL2.0じゃなくても
OpenGL11ExtensionPackとかいうの使えば
OpenGL1.0でFBOできるじゃないかーーーーーーー!!
バカバカバカーーーーーーー!!
0610デフォルトの名無しさん2015/04/10(金) 07:30:25.29ID:OzPHYRX6
バカゎぉ前十ニ"ょ
0611デフォルトの名無しさん2015/04/10(金) 11:16:43.22ID:82oE2Cxx
知らずに苦労した自分を責めてる、よくある言い回しだろ。
0612デフォルトの名無しさん2015/04/10(金) 12:00:41.79ID:lXPBCUxy
OpenGLってGPUのドライバによっては変なバグあったりする?
以前FBOを使ったらIntelだけ落ちるとかあったんだけど

WindowsだとANGLE使ってDirect3Dにした方が安定する?
06136052015/04/10(金) 12:18:43.37ID:3eug+mK8
はい
0614デフォルトの名無しさん2015/04/11(土) 10:09:38.14ID:IIqKHz7P
テクスチャーは2のべき乗じゃないと表示しないとかいうブログをたまに見かけるけど
別にどんなサイズでも表示されるんだが
ガセ情報なんですか?
0615デフォルトの名無しさん2015/04/11(土) 10:10:31.62ID:pDEVa35O
大昔の情報だなそりゃ
0616デフォルトの名無しさん2015/04/11(土) 11:11:38.49ID:OUYP+RJe
>>614
最近のは2の累乗でないサイズのテクスチャも使えるが
パフォーマンスは低下する

メモリの節約より速度が重要な場面では使わないほうがいい
0617デフォルトの名無しさん2015/04/11(土) 13:06:19.84ID:CBpS9Oeu
PowerVRとかじゃないの
0618デフォルトの名無しさん2015/04/11(土) 17:41:23.86ID:yZiB2p6S
glDebugMessageCallbackでコールバック関数を設定して
エラーが発生したらブレイクポイントで停止するようにしたのですが
いざ停止したらメインスレッドじゃない別のスレッドからコールバックされていて
問題となっているAPIの特定が難しいです。

APIを呼び出した時点で呼ばれるようにしたいのですが
そのような拡張はあるのでしょうか?
0619デフォルトの名無しさん2015/04/12(日) 01:59:39.98ID:64mkhuLa
vcとwgl使ってプログラム書いてるのですが古くて非推奨とされてるAPIの
利用を避けて開発するのに便利な設定方法とかあったら教えて欲しい
0620デフォルトの名無しさん2015/04/15(水) 13:01:50.15ID:o+Ivw1XY
>>618
どんなデバッガ使ってるか知らんけど、その停止してるスレッドに切り替えて
コールスタックの内容を見ればいいじゃない
単にデバッガを使いこなせてないだけだ
0621デフォルトの名無しさん2015/04/15(水) 21:16:13.39ID:5/iNray5
別スレッドだったらスタック辿れんだろ
0622デフォルトの名無しさん2015/04/15(水) 21:21:28.45ID:B+jzVGXX
非同期処理なのにデバッガの使い方もないんじゃ
glDebugMessageInsert でデバッグ情報埋めるのは?
0623デフォルトの名無しさん2015/04/16(木) 18:18:28.26ID:GvArYVgr
OpenGLの達人はテッセレーションと ディスプレイスメントマッピングを駆使して
一つのモデリングデータだけであらゆるモデルを作ったりできるの?
0624デフォルトの名無しさん2015/04/16(木) 19:44:36.17ID:4E4NMfdV
>>621
え?
スレッドにはメインスレッドと同じように専用のスタックが割り当てられてて
切り替えればいいだけじゃん
デバッガがショボくて切り替えられないってのなら知らんけど

>>622
いや別スレッドのブレークポイントで停止してるって言ってるじゃん
0625デフォルトの名無しさん2015/04/16(木) 23:14:49.69ID:c6Dsb+ZR
>>624
ブレークで停止したスレッドが原因となるコールを行ったスレッドと違うから
それがどれかわからんと言ってるわけだろ。
OpenGLやマルチスレッドプログラムのデバッグを一度でもしたことがあれば
想像つきそうなもんだが。
0626デフォルトの名無しさん2015/04/17(金) 07:11:30.87ID:R5VIrnT0
?
0627デフォルトの名無しさん2015/04/17(金) 11:09:04.81ID:8PrTQP0K
>>625
意味が分からん…
ブレークで停止したけど別スレッドだからコールスタックが辿れず分からん
って言ってるだけだろ
お前こそ経験があるくせに何トンチキな事言ってんのよ
0628デフォルトの名無しさん2015/04/17(金) 19:02:10.65ID:JLMyhqaW
>>627
エラーがブロックするならそうだろうけどさ
0629デフォルトの名無しさん2015/04/17(金) 23:23:31.31ID:S+uJTsvE
>>627

「ブレークで停止したスレッド」 が 「原因となるコールを行ったスレッド」 と 違うから
それがどれかわからん

こう書かんとわからんか?同じこと言ってるんだが。
0630デフォルトの名無しさん2015/04/18(土) 11:11:35.84ID:WoePzRxl
諦めてシングルスレッドで再設計
0631デフォルトの名無しさん2015/04/18(土) 13:22:43.13ID:62rknHoh
>>629
だからそれは単にブレークを張る場所を間違えてるだけだろ
そうでない事を前提にしないと話にならない
0632デフォルトの名無しさん2015/04/18(土) 14:27:06.30ID:AO0laqrY
>>630>>631
おまえら>>618読めよ。
0633デフォルトの名無しさん2015/04/18(土) 17:49:02.21ID:QlV9QJku
>>631
(;^ω^)
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
>>635
おまえ良い奴だな。
0637デフォルトの名無しさん2015/04/19(日) 20:13:29.06ID:Tx8gss7I
>>635
すいませんありがとうございます。
問題整理して出なおしてまいります。
0638デフォルトの名無しさん2015/04/28(火) 02:32:58.24ID:zhPP5Gad
テンプレの必読書2に英語のSuperBibleが紹介されてて
日本語の赤本(5版)は過去の書籍ってあって気になったんだけど
最新8版まで出てるらしい英語版の赤本ってどうなん?
0639デフォルトの名無しさん2015/05/01(金) 14:43:48.77ID:Y4U2/oM3
ぽりごんにはりつけるてくすちゃあって
256色じゃダメなんですかあ?
0640デフォルトの名無しさん2015/05/01(金) 15:17:21.96ID:XJUPDmr7
いいよ
0641デフォルトの名無しさん2015/05/01(金) 16:15:38.99ID:nrhzzZgl
GL_PALETTE8_RGBA8_OESとか?

でも圧縮テクスチャって環境依存で面倒だよね
0642デフォルトの名無しさん2015/05/02(土) 14:30:21.48ID:4Ymqr4fF
256色のPNGでテクスチャ作るとなぜかエラーになるんですよね
ライブラリコピペしてるだけだから
ライブラリどこか書き換えないと無理なんですかね
0643デフォルトの名無しさん2015/05/02(土) 14:45:50.14ID:OQbMYNcT
その様だと、お前にゃ無理だな。諦めろ。
0644デフォルトの名無しさん2015/05/02(土) 17:28:05.13ID:sc+Lyyxg
普通にRGBA8 32bitの画像に変換しろよ

性能を限界まで引き出したいので無ければ圧縮テクスチャなんて必要ない
RGBA8で十分
0645デフォルトの名無しさん2015/05/02(土) 17:55:43.00ID:sc+Lyyxg
パレット付きのテクスチャは最近のGPUは対応していなくて
こんな対応をするらしい

https://www.opengl.org/wiki/Common_Mistakes#Paletted_textures

ややこしい事だらけだし
インデックスが混ぜられるから線形補間も出来ない
パフォーマンスも上がるとは言えないかもしれない

やっぱり32bitのテクスチャで良いよな
0646デフォルトの名無しさん2015/05/02(土) 20:28:13.67ID:8yIitzF4
なんだか知らないけどPC再起動したら
256色PNGのてくすちゃあ貼り付けできました
わけわかりません
PCが故障してたんですかねえ
0647デフォルトの名無しさん2015/05/03(日) 12:43:19.25ID:0WGoNRfm
おおぷんじいえるって複雑ですよねえ
0648デフォルトの名無しさん2015/05/03(日) 15:59:53.27ID:dpJZaX8W
VulkanってVulkano(噴火)から名付けてるんだろうけど
Mantle(溶岩)がオープンに噴出したってことを意味してるんだろうけど
アホか
0649デフォルトの名無しさん2015/05/03(日) 18:17:20.15ID:fzBqXCrG
なんで?
0650デフォルトの名無しさん2015/05/04(月) 16:34:49.73ID:3h2niFmf
Khronos(Chronos)みたいに、Mantleに関係のある神話の神(Vulcan)を意味してる
cを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:i47vmOuD
>>651
COMとかな
0654デフォルトの名無しさん2015/05/07(木) 23:24:43.38ID:IQn5CiTp
>>650
元ネタはStar Trek
0655デフォルトの名無しさん2015/05/10(日) 18:21:09.94ID:ct3W+iya
なんで画像1枚表示するのに何10行もプログラム書かないといけないんですか?
OpenGL語を考えた人はバカですか?それとも意地悪ですか?
やってらんねえんだよ!!!!!!!!!!!!!!!!!!!!!
0656デフォルトの名無しさん2015/05/10(日) 20:22:35.79ID:mUhFQHEp
固定パイプライン時代遅れになって自由度増した代わりに更に面倒になってるんで
表示したいだけなら素のOpenGLじゃなくて各種ゲームエンジンやCADエンジンや可視化ツール使ったほうがいいよ
OpenGL使うにしても >>1 にあるようなのないとやってられん
0657デフォルトの名無しさん2015/05/10(日) 23:03:39.76ID:5K1OjFrO
前にゲームプログラミングも3DCGもあんま興味ないがAndroidでSurfaceView学んだついでにGLSurfaceView学ぼうとしたけどそっと本を閉じた。
0658デフォルトの名無しさん2015/05/10(日) 23:04:16.22ID:5K1OjFrO
Vulkanから本気を出す
0659デフォルトの名無しさん2015/05/11(月) 11:48:24.85ID:wiQLtJ5H
Vitaだと1からポリゴン1つ表示するのに1000行ぐらい書く必要があって
取っ掛かりが悪くなってるってのを何かで見たな
昔の話だがPS2でポリゴン1つ表示するのに3ヶ月ぐらい掛かったってのも聞いたな
0660デフォルトの名無しさん2015/05/11(月) 12:28:02.94ID:0dxdb/XX
本当にポリゴンを表示するだけなら
システムを把握するまでの時間込みでもそんなに要らねえよ
0661デフォルトの名無しさん2015/05/11(月) 13:53:46.40ID:wiQLtJ5H
>>660
いらないってどっちが?
0662デフォルトの名無しさん2015/05/11(月) 14:32:24.93ID:vdyacT/d
図形を描画するのにそんな行数が必要な訳ないだろ
にわかはロムってろ
0663デフォルトの名無しさん2015/05/11(月) 14:41:00.20ID:wiQLtJ5H
>>662
もう少し分かり易く言うと色んなリソースの初期化に行数が必要ってことだよ
でやっとこポリゴンを描画出来るようになるまでの初期化に1000行ぐらい必要ってこと
だから1からっていうのはそういう意味
0664デフォルトの名無しさん2015/05/11(月) 14:45:12.87ID:vdyacT/d
普通は開発用のSDK使うから初期化なんてヘッダ読み込んで設定するだけだろ
何千行も使うわけない
0665デフォルトの名無しさん2015/05/11(月) 15:31:39.45ID:CFzy8eXu
>>661
時間つってるんだから分かるだろう?
0666デフォルトの名無しさん2015/05/11(月) 16:05:50.62ID:B4DHapVy
>>659
PS2でもポリゴンを表示するだけならそんなにかからない。
GIF 経由ならすぐに出る。一週間もかけたらかけ過ぎ。
最適化を見据えたレンダリングエンジン作っていて、最終形のフローでの最初のポリゴンが出るまでなら、初めての人は三か月かかるかもね。
つかVitaで1000行書く必要があるって、必要かどうかで言えば、サンプル改造なら自分で書く必要はない。
1000行はポリゴンを表示するための準備じゃなくてゲームエンジン全体の初期化の話だろう。
0667デフォルトの名無しさん2015/05/11(月) 16:19:00.96ID:wiQLtJ5H
>>666
基本的にその通り
最終形というか3D空間にポリゴンを表示するプロトタイプを全くPS2の知識無しでって事
ゲームエンジン初期化というか1からソース書いてポリゴン表示に至るまでね
0668デフォルトの名無しさん2015/05/11(月) 16:31:24.18ID:CFzy8eXu
ニワカが調子づいてきて笑える
最初きいはなだったのに
0669デフォルトの名無しさん2015/05/11(月) 16:35:50.34ID:apqa0+t0
1000行だか数千行だかしらないが、どーせコピペなんだからすぐできるだろ
0670デフォルトの名無しさん2015/05/11(月) 17:28:45.07ID:1aKsloCU
コードも一切出さずに語った気になんなよ…
0671デフォルトの名無しさん2015/05/11(月) 18:05:17.75ID:wiQLtJ5H
まぁスレチだし妄想なんで気にしないでくれ
単に>>655に過剰反応してしまっただけだ…
0672デフォルトの名無しさん2015/05/11(月) 18:13:25.45ID:wiQLtJ5H
>>666
正確に言うとGIF PATH3経由かな
0673デフォルトの名無しさん2015/05/11(月) 18:35:22.32ID:KlWQmRSe
最近のプログラミングってどんどん簡単になってオモチャ化してるけど
3Dは逆方向に進化してるから。
0674デフォルトの名無しさん2015/05/11(月) 20:36:48.01ID:XzVfleFJ
やること、やりたいことが多様化してるから仕方ない
0675デフォルトの名無しさん2015/05/12(火) 19:50:14.89ID:8Qouf/Za
>>664
PS2はそのSDKがなかったんだぜ
0676デフォルトの名無しさん2015/05/12(火) 20:42:17.11ID:n8eyP+2l
QCOM_tiled_renderingって使うと速くなんの?
0677デフォルトの名無しさん2015/05/13(水) 20:16:57.13ID:LZMh5Y9n
DirextX12は11よりも格段に難しくなってるらしいね
VulkanもOpenGLより遥かに難しいだろうね
0678デフォルトの名無しさん2015/05/14(木) 12:08:56.73ID:gHUa6+Se
>>676
ドキュメント見るとディファードレンダリングの時なんかに自前でタイリングして
レンダリングするのをGPUに伝える拡張っぽいな
で、GPU側でタイリング用のメモリというか機能を使うようになるから速くなるって事かな
自前でタイリングしながらレンダリングしてる場合は当然速くなるだろうね
0679デフォルトの名無しさん2015/05/15(金) 21:19:22.81ID:6sHo0j1K
ゴシックは魔法乙女スレっていうゲームをAdreno Profilerで分析した結果だけど
これはひどい
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:6sHo0j1K
大量のドローコール問題を解決してもフィルレートの問題が残りそう
1920x1080x23って多すぎだよね
でも数々のエフェクトを消さずに軽くする方法って無さそう

敵弾や爆発、数字などだけ低解像度のFBOに描くのはどうか、と思ったけど
最後に画面一枚分はOverdraw増えるよな
0681デフォルトの名無しさん2015/05/15(金) 22:19:59.59ID:f1rHHBaK
効果が保証された改善案もないのに
ひどいとか言うなよ

そういう話はム板よりゲ製板向きじゃね?
0682デフォルトの名無しさん2015/05/15(金) 22:52:24.49ID:6sHo0j1K
>>681
どっちもやったらダメな事って書いてあるのに…

Overdraw23xは俺の端末だとどう考えても処理しきれない量だ
どうにか8xぐらいにしてくれないだろうか
0683デフォルトの名無しさん2015/05/16(土) 01:10:30.41ID:KeHRGZLD
>>679
どれも生粋のゲーム屋からすると
ねーよ、ってレベルだな。
0684デフォルトの名無しさん2015/05/16(土) 11:53:40.35ID:+zZkiY3d
Zテストを利用してオーバードローを削減する方法

Depth-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
>>679
そのゲームとか全然知らんがDrawコールの数とかほとんどエフェクトだろ
普通に大量のエフェクトを表示したらそうなる(毎回マトリックスの設定とかもそう)
もちろん削減する方法はあるけどインスタンシングもないわけだし
遅くないなら別に問題無い
0686デフォルトの名無しさん2015/05/16(土) 16:26:34.33ID:O0NSZRgC
>>679
・大量のglDrawArrays+一回ごとに変換行列の設定が、最も動作の重い場面では1000回以上
・テクスチャの数が必要以上に多くて切り替えも多い
・Average Overdrawが23.12xで、フィルレート限界に到達していると思われる
完全にエフェクトの特徴

・VBOを使っていない
多分ビルボード(4頂点)の表示だけだから使ってないんだろう

・圧縮テクスチャを使っていない
エフェクトは圧縮テクスチャを使うと少し汚くなるから使ってないんだろう
0687デフォルトの名無しさん2015/05/16(土) 16:59:58.62ID:+zZkiY3d
>>685
>遅くないなら別に問題無い
そんなテキトーなやり方して遅くないわけないだろ・・・
glDraw*はモバイルだと高負荷だと書いたのに読んでないだろ?
0688デフォルトの名無しさん2015/05/16(土) 17:28:15.75ID:+zZkiY3d
敵・敵弾・爆発・スコア表示などを全てglDrawArrays(四頂点だけ)の繰り返しだけで描画するなんて以ての外

敵の画像もエフェクト画像も何故か別のテクスチャになっているものが多く
テクスチャ切り替えを少なくしよう、等とは全く考えていないのが窺える
本当に必要以上に多い

モバイル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
>>687
>>679で
> iOSだと古い機種でもあんまり遅くないらしいけど
って書いてあるんだからそれが嘘ってなら知らんよ

例えDrawコールがCPU負荷の90%を使ってたってそれ以外の負荷は
単純なゲームならほとんど掛からないだろうから問題無い
0692デフォルトの名無しさん2015/05/16(土) 22:36:37.98ID:+zZkiY3d
>>691
何でそんな結論になるのか分からない
CPUがそのやり方でやる事と言ったらデータを送ることだけだ

GPUが長い時間をかけてコマンド実行完了するのを待つ事になるから、むしろ使用率は低下するだろ
使用率が下がるとCPUのクロック周波数も下げられ、ますます遅くなる

一度にたくさん送るより遅いのは分かってるから誰もそんなやり方はしないし
俺も試したことは無い
0693デフォルトの名無しさん2015/05/18(月) 08:45:38.84ID:KQnBVf8z
マジカルリングなどと言うシステムがあって自機や近づいた敵に輪っかが表示されるが
画像の完全に透明な部分もフィルレートを圧迫するよな
かといってアルファテストは重いんだよな

輪っかの中央部分をうまく描画しないようにすれば少しは節約になりそう
複数回に分けて描画とか
0694デフォルトの名無しさん2015/05/18(月) 12:36:57.08ID:I8sSWQip
>>692
何が言いたいのか分からんがインスタンシングが無い以上
>>679の状況はエフェクトの表示方法としてはいたって普通だぞ
誰もやらないってなら大量のエフェクトを表示するときに
「みんなが」やる方法を具体的に書いてよ
0695デフォルトの名無しさん2015/05/18(月) 17:23:48.73ID:KQnBVf8z
>>694
こういう方法が一般的。ここにあるのは回転に対応していない簡易な物だが。
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:KQnBVf8z
ES 2.0でもドローコールを減らす方法は他にもある

GPUで座標変換したいなら
シェーダー変数に複数の変換行列を入れれば一度のドローコールで複数回描画出来る
入れる所がES2ではあまり無いのが弱点

VTFと浮動小数点テクスチャに対応GPUならテクスチャに変換行列を入れる事も可能
こっちはたくさん入る

いずれにせよ1回のドローコールでオブジェクト一個だけをちまちまと描画し続ける合理的な理由が無い
0697デフォルトの名無しさん2015/05/18(月) 21:14:06.29ID:I8sSWQip
>>695
回転しないのは普通のエフェクトと呼べない
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
山ほどglDrawArraysするのがそんな素晴らしいのなら何故どのエンジンも使っていないのか

遅いからだろ。てか1000回は無理ってさっきも言っただろしつこ過ぎ。
0700デフォルトの名無しさん2015/05/18(月) 23:06:00.50ID:rX44LKnF
>>699
>>679をよく見ろ
> iOSだと古い機種でもあんまり遅くないらしいけど
これ以上の情報は無いんだから憶測だけで物を言うな
0701デフォルトの名無しさん2015/05/19(火) 00:11:28.35ID:7D36a0jB
つまんねーネタ引っ張り過ぎだから
0702デフォルトの名無しさん2015/05/19(火) 00:15:33.61ID:WNuI4NT5
なんか本人が居るように思えるのは気のせいか?
0703デフォルトの名無しさん2015/05/19(火) 00:26:37.21ID:MCnp8QvE
何が重いかって
glDraw*のパラメータと
渡された頂点バッファと行列を入れるメモリの確保がしんどい

事前に分かんないから呼び出す度にちょっとずつ用意して…こんなのやってられっかよ!
ってなる
それを上回るマシンパワーがあれば平気だが糞実装には変わらんな
0704デフォルトの名無しさん2015/05/19(火) 01:00:49.32ID:aabNVn49
>>703
何でglDraw*するたびにメモリ確保の話しが出てくるんだ?
メモリ確保とglDraw*のコール数は何の関係も無い
意味不明
そして>>679以外は計測値を出さずに憶測でモノをいってるのみ
0705デフォルトの名無しさん2015/05/19(火) 02:49:52.49ID:eV7qdk0/
>>679のスレのあるスマホアプリ板覗いてみたけど
勢い良く伸びて皆楽しく遊んでるみたいでおもしろそうね。ちょっと糞実装ソフトで遊んでみるか
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
>>704
いつ実行するかは実装次第だが効率化のためにすぐには実行しないのが普通だからコマンドの内容はコピーされる

>>679だとVBOも使ってないらしいから頂点配列のデータもコピーされる

https://wiki.mozilla.org/Platform/GFX/MobileGPUs#Draw-calls_are_expensive

ドローコールにはメモリ確保、コピー、データ処理が必要で
オーバーヘッドは三角形が一個だろうと千個だろうと同じらしいよ

タイルベースGPUだと三角形がどのタイルに属するかを判定してタイルごとのリスト作成なども行うようだ
0708デフォルトの名無しさん2015/05/19(火) 09:10:13.69ID:MCnp8QvE
どれだけ遅いかはともかくメモリ確保はするだろ、適当な事言うなよ
0709デフォルトの名無しさん2015/05/19(火) 10:52:53.79ID:CAoLqVwz
>>708
OpenGLのどのAPIがDrawコールの度にメモリ確保が必須なのか指摘してくれよ
0710デフォルトの名無しさん2015/05/19(火) 12:47:33.14ID:toTYxQq1
glDrawArraysのオーバーヘッドが無視出来る小ささだって言って暴れてんのこいつ?

そう思うなら自分でテストプログラム書いてみろよw全然速度出ないから
0711デフォルトの名無しさん2015/05/19(火) 12:55:51.22ID:CAoLqVwz
>>710
煽るならちゃんとスレ見ろよ
勝手にスレに掛かれてない事を言い出して寒いよ
0712デフォルトの名無しさん2015/05/19(火) 20:26:22.16ID:oFquhP7H
>>710
データの作り方や使い方が大事なのだよ。
実際それで動いてるゲームだってたくさんあるんだから。
0713デフォルトの名無しさん2015/05/19(火) 21:49:56.96ID:MCnp8QvE
あってもクソゲーだけでしょ?
0714デフォルトの名無しさん2015/05/19(火) 23:51:25.17ID:20rcvciO
>>710
それで、仮にオーバーヘッドをゼロにできると何 % 速くなるって言ってるの?
頑張って最適化してもそこが上限だからね。
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
少しずつデータを転送するとGPUがすぐに前処理終えてアイドル状態になってしまうから一度に沢山送れって事らしいよ

どれだけドローコール出来るかは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:hCLFuKIs
何いまさらこんな当たり前の話で揉めてるの
0718デフォルトの名無しさん2015/05/20(水) 07:11:49.54ID:dYjOAeEc
Magicka 2 Dev: "DX12 Big Improvement Over DX11; Vulkan Might Be Even Better"
http://wccftech.com/dx12-big-improvement-dx11-vulkan/
0719デフォルトの名無しさん2015/05/20(水) 10:39:10.20ID:LciyTjT2
最近勉強を始めた初学者がいるんじゃないかな。
DrawCallにかかるコストなんて10年以上前から知られてたんだし、
それを前提にどうやってエンジンとデータ構造を決めるかなんて出尽くしてる。
DirectXでもまったく一緒なわけだし。
それでもハイエンドなゲームはいくつも作られてきてる。
0720デフォルトの名無しさん2015/05/20(水) 10:56:18.55ID:tlv9kwdn
スレをちゃんと読まずに短絡的なレスする奴が多いな
0721デフォルトの名無しさん2015/05/20(水) 11:04:22.09ID:tlv9kwdn
Drawコールの負荷が高い事なんて最初から前提で話が進んでるのに
わざわざ指摘するアホも居るんだな
大量のエフェクトを表示する時にどの程度のDrawコールが許容できるかってな話なんだがな
単純なシューティングなんてDrawコール以外の負荷なんて無いに等しいんだから
別に問題ないだろうという事だ

別の方法としては事前にCPUで全頂点を変換してDrawコール1回にする事が
一般的な方法だろう
uniformに余裕がある場合やVTFが使えるのであればその方がいい
ES3.0以降ではインスタンシングがあるからそれを使う
とりあえずアホみたいな書き込みが続いたからまとめたよ
これでおしまい
0722デフォルトの名無しさん2015/05/20(水) 15:54:28.82ID:7XNsN9ay
指摘がすべて正しいとしてもなぜここに書いてしまったのか
0723デフォルトの名無しさん2015/05/20(水) 16:03:29.23ID:UKJ+96Qh
つい最近まで68000のアセンブリコードを手書きしてて、かつハードウェアスプライトを使っていたようなとこだからな
それに合わせたエンジンの作り方をそのままGLで適用したら、そうなるだろうなぁという感想
0724デフォルトの名無しさん2015/05/20(水) 17:01:19.90ID:aTFChFiV
負荷がかかるよりアイドル時間が増えるのが問題だって言ってるのにまた無視して

180 objects with 60fpsなんて激遅な速度じゃシューティングなんか作れないだろ
0725デフォルトの名無しさん2015/05/20(水) 17:13:19.47ID:9dnMfS7i
プロなんだから俺たちの考える最適化されたプログラムでゲームを提供するのは当然のこと。
さもなくば何百万本売れようがそれはクソゲーである。
0726デフォルトの名無しさん2015/05/20(水) 19:06:32.58ID:34OJAIaS
LinuxはCPU使用率が低いから高性能!みたいな話ですかね。
0727デフォルトの名無しさん2015/05/20(水) 20:00:08.10ID:tlv9kwdn
>>725
最適化されたプログラムなんて存在しない
なぜなら余程の天才で無い限りはそれ以上に最適化できるから
よって最初から最適化に固執する奴は使えない奴。納期が全て
ディレクターがOKだしたらそれで完成。それ以上はいじらない
凄腕のプログラマーはディレクターが満足するそこそこの速度のを
凄い速度でコーディングする奴
しかし往々にして処理落ちが問題になる事があるが、そこをデータ側で
何とかしてもらえる交渉力がある奴も凄腕のプログラマー
交渉力が無い奴はプログラムで何とかしようとしてドツボにはまって
そしてクソゲーが生まれる
逆にみんなが納得して発売したゲームを、実は糞コードだったなんて
口が裂けても言えないし言ってもいけない
0728デフォルトの名無しさん2015/05/20(水) 20:07:56.68ID:G5I9lHof
商売なら売れるものがいいものだよ。
0729デフォルトの名無しさん2015/05/21(木) 02:40:23.45ID:27xowQhJ
プロなら実装内容より売れることが重要だろw
趣味グラマ、職人、求道者ならべつだが。
0730デフォルトの名無しさん2015/05/21(木) 11:04:56.57ID:lIJtgEiB
エンジンはcocos2dを使っていたらしいがcocos2dは標準でバッチ機能あるのに使わないのは・・・ただの知識不足だな

しかもcocosの最新版では特に意識しなくても勝手にドローコールのバッチ処理を行うらしい

cocos2dでリングみたいな透明な部分の多い画像を描くにはこれを使えば良いんじゃねって思った
http://discuss.cocos2d-x.org/t/new-feature-meshsprite-polygonsprite-updated/21153
もしくは32x32ぐらいのグリッドで分割して空白じゃない所は描画するというのも簡単にできるだろ
0731デフォルトの名無しさん2015/05/21(木) 14:44:09.28ID:sPdlXLa1
マ板でやってね
0732デフォルトの名無しさん2015/05/22(金) 06:53:34.02ID:WV27OSUv
これこそム板じゃないのか?
0733デフォルトの名無しさん2015/05/22(金) 09:52:23.45ID:itNa7czf
ドローコール無駄遣いしても別に問題ないだろうって言ってた知ったかの人はどこ行っちゃったの
0734デフォルトの名無しさん2015/05/22(金) 11:35:00.95ID:bf5KxQsW
>>733
スレをちゃんと読め
処理落ちしてなければ問題無いだろ
それでも無駄遣いして駄目だった事例を言ってみろ
お前こそ実績も無い完全に知ったかなのがバレバレだぞ
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
処理落ちしまくりのパズドラ・モンストが世界収益トップ3入りだもんな。
やってられんよな。
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
>>737
スマホはスペックに差がありすぎるから
すべての端末で処理落ちしないのは無理でしょ。
ユーザーが求めてるのも60FPSなんかじゃないし。
0741デフォルトの名無しさん2015/05/22(金) 21:44:38.29ID:rY22llC2
60fpsに拘ると電池食いまくりのゲームになりやすいらしい
0742デフォルトの名無しさん2015/05/22(金) 22:31:42.88ID:RfQ/XaTp
こだわらないとこのスレの先輩方は認めないでしょ
0743デフォルトの名無しさん2015/05/22(金) 22:59:47.21ID:yWq8/hLr
モデルの追加OPENのやり方って、
(1). バッファを追加数分用意して全部バインドする方法
と
(2). バッファは1つで、追加数分サイズは大きくし、
   中身は追加数分分割されている方法
どっちが正しいの?
0744デフォルトの名無しさん2015/05/23(土) 09:38:25.79ID:8A5XMO+X
勝手な用語作るな。
両方作ってうpしてみ。多分場面ごとにどちらがいいのか違うだろうけど。
0745デフォルトの名無しさん2015/06/09(火) 16:34:24.13ID:6lMKPhi4
Apple,次期OS X「El Capitan」でグラフィックスAPI「Metal」を採用。次期iOS「iOS 9」ではiPadで画面左右2分割が可能に - 4Gamer.net
http://www.4gamer.net/games/990/G999003/20150609022/
0746デフォルトの名無しさん2015/06/09(火) 18:33:12.27ID:UGvL+rzo
内蔵GPUはイマイチと思っていたが逆手にとって上手いことやるね
ガラパゴスになる気もするが
0747デフォルトの名無しさん2015/06/09(火) 19:19:36.20ID:nfTTcfci
20年戦えるAPIなど必要ないからさ
0748デフォルトの名無しさん2015/06/10(水) 08:13:55.60ID:4BfUGmvz
マルチスレッドのOpenGL(Windows)アプリケーションで、今は描画スレッドとテクスチャなどを準備する
スレッドとで排他制御しながらひとつのコンテキストを使いまわすような造りにしています。
マルチスレッドの場合はスレッド毎に固有のコンテキストを作ってwglShareListsで共有する
やり方があるというのをどこかで見たんですが、そっちの方が普通なんでしょうか?
0749デフォルトの名無しさん2015/06/10(水) 19:21:42.63ID:X+sSFCkO
シェーダでfloat値をUBYTEで格納する場合って
(格納値) = floor( (float値) * 256 )
それとも
(格納値) = floor( (float値) * 255 )?
0750デフォルトの名無しさん2015/06/10(水) 19:33:10.27ID:W0KgL0/J
255
0751デフォルトの名無しさん2015/06/10(水) 19:34:02.60ID:X+sSFCkO
すると255の値が入ってくるのはfloat値が1以上の場合か
サンクス
0752デフォルトの名無しさん2015/06/11(木) 10:43:40.39ID:zCMuN9Oq
>>751
根本的に間違ってるな
floorじゃなくてclampじゃないと結果がおかしな事になるだろ
0753デフォルトの名無しさん2015/06/11(木) 12:35:06.15ID:vzeJIjTB
floor(x * 255.999...) //floatで表現可能な256未満で最大の数
が正しい希ガス
0754デフォルトの名無しさん2015/06/12(金) 23:13:59.96ID:5kChOsLL
一応規格では0への丸めも認められているようだが、普通は255をかけて最近接丸めじゃないかな。
そうじゃないと計算の途中で整数と浮動小数の変換を繰り返した場合に値がずれていく。
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:cxtr1bSF
整数のバッファにfloatで演算かけるってのは普通にやると思うが
0758デフォルトの名無しさん2015/06/13(土) 03:29:59.05ID:QLQDRi11
>>754
それだと255と0に対応するfloatの値域が他の半分になるだろ
逆にずれてくよ
0759デフォルトの名無しさん2015/06/15(月) 23:09:13.37ID:6T/Otjvo
値がずれていくってのは丸め処理のバイアスのことだろう?
http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86
値域が半分だからずれるってのは意味不明。
0760デフォルトの名無しさん2015/06/15(月) 23:46:05.26ID:DjiqP1ZC
>>759
255段階もあるとイメージしづらいだろうから 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:b0r2uqJr
はぁ?どこにバイアスが?0, 0.33, 0.66, 1.0 ってのは各区間の中央だぞ。
0762デフォルトの名無しさん2015/06/16(火) 00:45:01.05ID:YKgehLpw
すまないが、ガンダムでたとえてくれないか?
0763デフォルトの名無しさん2015/06/16(火) 00:51:18.34ID:R6aopbCf
>>761
0.0と1.0は中央じゃねーだろ、しっかりしてくれ
0764デフォルトの名無しさん2015/06/16(火) 01:17:38.03ID:WoCfaI2V
761じゃないが

0.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:WoCfaI2V
>>749は
floor( x * 255 + 0.5 )かな
0766デフォルトの名無しさん2015/06/16(火) 03:52:40.40ID:R6aopbCf
>>764
0.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:b0r2uqJr
なんで0.0-0.16と1.0+0.16の分を含めないと思っちゃうのかね。clampするのに。
floor(x*256)ってのは0.0から1.0の範囲を均等に256レベルに分割するが、
逆に浮動小数に変換するときに難があるから画像処理ではあまり使われない。
そもそもOpenGLでは2^n-1で計算すると決まっている。
0768デフォルトの名無しさん2015/06/16(火) 11:16:12.09ID:VOUSs81e
>>766
x * 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
>>767-768
頼むから勉強してくれ
そりゃグラフィックで1/256の更に小数点以下なんてどうでもいいかもしれんが
unsignedの乱数からfloat経由で任意の範囲の均等な整数の乱数にしたりとか、よくある話だろ
0770デフォルトの名無しさん2015/06/16(火) 13:31:38.43ID:kj9nHT6o
>>769
だからお前は何の話をしてんだよ
どこが間違っててどういう結果になるのか例を出せ
0771デフォルトの名無しさん2015/06/16(火) 13:39:50.82ID:dzgBqGJj
>>749
君に大きなヒントをやろう

普通の人は迷わない
0772デフォルトの名無しさん2015/06/16(火) 13:42:47.48ID:WoCfaI2V
>>769
均等じゃないとしたら...
0773デフォルトの名無しさん2015/06/16(火) 13:44:33.60ID:kj9nHT6o
>>769が馬鹿なのは、例えば30cmの定規が
0---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
あれ?IDが変わってる…
>>768>>773は同じだ
0775デフォルトの名無しさん2015/06/16(火) 14:03:15.75ID:WoCfaI2V
>>773
それだと0,9999は6になっちゃって7になるのは1.0だけ。
実際に0.9 から 1.0までの色をグラデーションで描画すると、255の部分が1本の線だけってことはない
254の半分くらいの幅はある
0776デフォルトの名無しさん2015/06/16(火) 14:18:11.03ID:kj9nHT6o
>>775
>>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
>>776
俺はなにもしてないよ
gl_FragColor = vec4(0.999,0.999,0.999,1);
ってやって32bitカラーで画面に表示される色は255だよってだけ
0.5足して切り捨てでいいなら文句ないです
0778デフォルトの名無しさん2015/06/16(火) 17:40:13.00ID:R6aopbCf
>>781が答えに到達してる
int / n → float が領域を等分するのに、丸め(float * n) → intは等分しないって非対称性がある
その補正に0.0001なんてのは論外だが、0.5にしても他にしわ寄せが行ってる(255は勿論0の領域が半分になってる)
0779デフォルトの名無しさん2015/06/16(火) 17:40:55.69ID:R6aopbCf
sc経由でずれた、>>775
0780デフォルトの名無しさん2015/06/16(火) 17:45:24.78ID:kj9nHT6o
>>778
>>781は責任重大だなw
0と255は両端の極値だ(用語して適切ではないが)
領域とか言ってるのは馬鹿も休み休み言え
0781デフォルトの名無しさん2015/06/16(火) 18:00:34.32ID:kj9nHT6o
>>778
OpenGLは
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:WoCfaI2V
>>778
ttp://glslsandbox.com/e#26060.0
0 と 255が半分になってるでしょ
0783デフォルトの名無しさん2015/06/16(火) 18:55:01.06ID:kj9nHT6o
>>778の言いたい事は
0---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
そして[-1.0,1.0]になると更に混乱!

お絵かき用途なら理屈抜きで
気に入った結果になるのを選べばいいんじゃね
0785デフォルトの名無しさん2015/06/17(水) 17:33:07.43ID:wEqRZkAH
適当でいいわけないだろ。捨て台詞にしてももうちょっと考えろや
0786デフォルトの名無しさん2015/06/17(水) 21:02:15.40ID:smGSGY8a
>>784
それを想定しているからこそOpenGLの仕様は今のようになっているわけで。
>>766のように0を含む区間が+寄りになるやり方はやはり使い勝手が悪い。
+がどっちかなんて決まってないし。
0787デフォルトの名無しさん2015/06/17(水) 22:38:14.56ID:qn0FIGKH
カラー値以外に整数⇔floatの変換をする事なんてそうそうないだろ
>>784は何を想定してんだ?
いい加減くだらん煽りは不要
0788デフォルトの名無しさん2015/06/18(木) 01:03:48.41ID:LEWEpnKJ
> カラー値以外に整数⇔floatの変換をする事なんてそうそうないだろ
uv のオフセットとかかな。
法線マップは整数 -> float の片道だけだね。
探せば結構ありそうな気がするな。
0789デフォルトの名無しさん2015/06/18(木) 11:20:47.14ID:4ooRsfQ9
>>788
法線マップに限らずカラー値も普通はtexture2Dで取得したら
[0.0, 1.0]になってるから整数を意識することなんて普通無いだろう
uvはVTFでパラメータを読んだり整数値をシェーダーに渡してる場合ぐらいか
0790デフォルトの名無しさん2015/06/19(金) 03:08:22.31ID:GHDHbS5r
>>784
その結果ファイルを保存するたびに暗くなる
某有名ペイントソフトが昔あってな・・・
0791デフォルトの名無しさん2015/06/19(金) 13:30:33.79ID:qhYDhyrm
>>790
使う事はないだろうが念の為教えてくれ
0792デフォルトの名無しさん2015/06/19(金) 15:04:18.63ID:FzphauAa
jpeg圧縮繰り返して劣化しただけとか
0793デフォルトの名無しさん2015/06/19(金) 23:35:45.46ID:GHDHbS5r
>>791
painter
0794デフォルトの名無しさん2015/06/20(土) 08:59:51.69ID:KT+cKNXK
見たことも触ったこともないが有名所じゃん
0795デフォルトの名無しさん2015/06/23(火) 11:00:25.12ID:QzWMGZKV
ライティングがどうしても
市販の3Dソフトのようにならないのですが
どうすればいいですか?
0796デフォルトの名無しさん2015/06/23(火) 12:26:58.45ID:y0iv9VtA
まず256で割ります
0797デフォルトの名無しさん2015/06/23(火) 17:25:12.47ID:jIW5PGn8
>>795
市販の3Dソフトってのは何だ?
クオリティーが追いつかないのか単に見た目を合わせたいだけなのか
0798デフォルトの名無しさん2015/06/23(火) 21:29:50.82ID:i587hson
プロも絵の具の値段は一緒。
0799デフォルトの名無しさん2015/06/23(火) 23:06:39.18ID:2v8ENXnU
フラットシェーディングのような表示をする場合でも頂点に法線情報必要でしょうか?
0800デフォルトの名無しさん2015/06/24(水) 12:28:53.37ID:JeGbh1zt
>>799
ライトの向きに関係無く同じ明るさでよければいらないけど
結局ライトには依存する場合がほとんどなのでプログラム側で意識する必要はないだろう
ツール側で全頂点の法線の向きを同じにすればいいだけ
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:7WE3EumL
フラットシェーディングにする時は共有しないほうがいいね
0805デフォルトの名無しさん2015/06/24(水) 19:27:44.48ID:RCx1dp21
曲面じゃなければ頂点の共有はしないでしょ
0806デフォルトの名無しさん2015/06/24(水) 22:04:16.42ID:Jm8cQTrt
>>799
glProvokingVertex
08077992015/06/25(木) 01:37:15.66ID:JsCcSH6I
>>800-806
作りかけのプログラムで手軽にライティングを試したくて
フラットなら簡易に出来る機能とかあったりしないかと思ったのですが
フラットであっても頂点毎に法線設定するのが普通なのですね。
ジオメトリシェーダについてはまだ勉強不足ですが機会があれば、
glProvokingVertexは使ったこと無い関数なんで調べてみようと思います。
ご意見ありがとうでした。
0808デフォルトの名無しさん2015/06/27(土) 18:59:47.33ID:ox7Ubnmv
360度回転するビルボードを作りたいのですが、カメラから上方向をY軸を上
gluLookAt( 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
>>808
逆行列がおかしいのは確定してるの? もとの行列(回転成分だけ)と掛けて単位行列にならないことは確認ずみですか?
08108082015/06/27(土) 22:44:32.71ID:i3zeQtoc
>>809さん
もとの行列の回転成分と掛けて単位行列を作るという発想がありませんでした。
逆行列にする関数の問題ではありませんでした。
お騒がせいたしました。本件解決しました。
ありがとうございます。
0811デフォルトの名無しさん2015/06/28(日) 19:23:30.53ID:TPpQRT7V
OpenGL SuperBibleのExample Codeってどの程度信用できるものなのでしょうか?
ビデオカードによって動くものと動かないものがあるのですが
これはドライバ側が仕様に対応できてないと疑った方がいいですか?
0812デフォルトの名無しさん2015/06/28(日) 19:29:31.04ID:OeLQkQMR
>>811
どう動かないのか書けよ!
0813デフォルトの名無しさん2015/06/28(日) 20:08:30.88ID:TPpQRT7V
>>812
ちょっと正しく動かないのが多すぎて…。
1つ例に取るとmultiscissorだとGeForce GTX 780では正しく動作し
Radeon R7 250では左下の部分しか描画されません。
0814デフォルトの名無しさん2015/06/28(日) 20:15:41.57ID:TPpQRT7V
bumpmappingだと逆にGeForceではシェーダのコンパイルに失敗し、
Radeonでは正しく描画されています。
0815デフォルトの名無しさん2015/06/28(日) 20:58:21.64ID:OeLQkQMR
>>814
windowsかlinuxかgccかvc++か
とかも書けよ!
0816デフォルトの名無しさん2015/06/29(月) 12:08:07.16ID:3GSeCduU
>>813
むしろ複数のGPUで動作確認出来てるからいいじゃん
自分の環境だとうまく動いて別のGPUだとちゃんと動かないのは永遠に付きまとう問題だ
ちゃんと原因が分かれば得がたいスキルになりそうだな
0817デフォルトの名無しさん2015/06/29(月) 12:55:37.34ID:iyfQpF7r
日本語OSかどうかも書けよ!
どこの銀河系なのかも書けよな!!
あとねーちゃんの歳と3サイズと初体験の感想も書けよ!!
じょーしきねーのかよ
0818デフォルトの名無しさん2015/06/29(月) 17:32:40.89ID:rhka4QzB
リアルな人間のCGをミドルレンジクラスのGPUで動かすなんてまだ先の話?好きな女の子を全裸にして楽しみたいのですが、後何年くらい必要でしょうか?
スクェアエニックスの最新のデモみても、リアルとは程遠くて。50TFLOPSとかそれぐらい必要なんですかね。
0819デフォルトの名無しさん2015/06/29(月) 18:38:57.30ID:6rfFQ7VP
ヌルヌル動くかは別にして本物と見分けが付かないCGなんか前からあるじゃん
スペックよりセンスと素材と気力じゃね
0820デフォルトの名無しさん2015/06/29(月) 18:53:55.42ID:k+90EXgh
同意
0821デフォルトの名無しさん2015/06/29(月) 19:51:09.61ID:rhka4QzB
なるほど、気力とセンスか。まだ、誰でも簡単にサクっとはいかないのか。
0822デフォルトの名無しさん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:PjeoFJ6W
1フレ1時間で出来てしまうのか
0825デフォルトの名無しさん2015/06/30(火) 08:14:25.86ID:cFpqiJzf
http://gigazine.net/news/20141012-chrisj-3d-movie/
リアルさはこれぐらいほしいんだけど、市販GPUでリアルタイムは全然無理なのかな。
これは演算量がありそうな髪とかないけど。下半身もないけど。
ゲームと違ってエロ目的なら背景はなくてもいいんだけど。
0826デフォルトの名無しさん2015/06/30(火) 09:46:28.72ID:P7zpqpfB
Lightwaveで800時間って作者のブログにあるね
0827デフォルトの名無しさん2015/06/30(火) 11:14:17.76ID:9Bck9L4q
OpenGL 以外の話はそれにふさわしい板やスレでやって頂きたい。電波お花畑板とか。
0828デフォルトの名無しさん2015/06/30(火) 12:24:04.42ID:yYjQ+GUF
OpenGLの話題ではなくて申し訳ないが、
glm使ったことがある人がいそうなので質問。

<glm/gtc/quaternion.hpp>で宣言されている
rotate関数の実装(quarternion.inlにある)間違ってない?
具体的に言うと最後returnされる返り値の掛け算の順序が逆な気がする。

#床井さんとこのtrackball.cppと見比べつつ試していて気づいた人
0829デフォルトの名無しさん2015/06/30(火) 13:39:12.81ID:cam0ly7+
間違った結果になることはプログラムを作って確認したの?
それとも間違ってる気がするから調べてくれって話?
08308112015/06/30(火) 22:28:37.12ID:3QqcjKp7
1つ1つ調べていたのですがバグの原因は主に未初期化の変数を使用したり
ロケーションの指定に直値を使用しているものでした。
ということで参考にはするがあまり信用しないようにします。
0831デフォルトの名無しさん2015/07/01(水) 10:19:52.88ID:pgmfr78S
>>828
床井さんに聞けば教えてくれるかも
0832デフォルトの名無しさん2015/07/02(木) 01:53:04.00ID:mmVOJJRQ
>>828
quarternionじゃないんだけど,単純にポリゴンを拡大してから回転したいとき
glm::mat4 m;
m = glm:::rotate(m, angle, axis);
m = glm::scale(m, scale);
って順番で記述してたからそういう仕様だと思ってたよ
0833デフォルトの名無しさん2015/07/02(木) 01:58:38.89ID:D1cbsXF3
可換じゃないのかその変換
0834デフォルトの名無しさん2015/07/02(木) 02:03:06.93ID:mmVOJJRQ
間違ってたら間違ってるって指摘ほしいけど
OpenGLの行列は列優先、C++の行列(というかメモリアクセス)は行優先で互いに転置の関係にあうから
OpenGLのABがC++の(BA)Tと等しい → glmではBAの順に乗算するのではないかと思う
0835デフォルトの名無しさん2015/07/02(木) 02:10:29.43ID:mmVOJJRQ
glm::mat4 m;
m = glm::translate(m, pos);
m = glm::rotate(m, rot,, axis);
m = glm::scale(m, scale);
平行移動忘れてた
0836デフォルトの名無しさん2015/07/02(木) 03:08:04.95ID:zTS3C0rH
式で書くとこうだね
glm::translate(pos) * glm::rotate(rot, axis) * glm::scale(scale)
0837デフォルトの名無しさん2015/07/02(木) 04:12:48.53ID:8OlLb4+0
>>834
glm::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
>>837
最初の行 vev4抜けてた
glm::vec4 vector = glm::vec4(0.0,0.0,0.0,1.0);
(vectorって変な変数名だった)
0839デフォルトの名無しさん2015/07/02(木) 11:03:12.91ID:pe4WxkND
>>834
列優先も行優先も行列のメモリに格納されてる内容は一緒だ
ライブラリ実装者がどっちにみなすかで右から掛けるか左から掛けるかが決まる
OpenGLは通常列優先だから右から掛ける (C++とか無関係)
0840デフォルトの名無しさん2015/07/02(木) 11:55:33.10ID:bPjjDdQY
この話が出るたびに分かんなくなるんだけど、行列の内容や掛ける順序は同じでメモリに格納する順番が変わるんだよな?
CGでは普通、回転行列Rと平行移動行列Tがあったら回転してから平行移動させる行列はTRとして表すから
glmとかのライブラリはそういう書き方になるように実装されてるんだろ?
0841デフォルトの名無しさん2015/07/02(木) 14:03:08.79ID:Vg94xIoY
前半は一般的にはそう
後半は行列の作り方に依存するってだけ
回転行列をRとするか転地Rとするか
それによってかける順が変わる
行優先云々とかとはまた別の話
0842デフォルトの名無しさん2015/07/02(木) 17:00:12.55ID:8OlLb4+0
>>840
glmに限って言えば、openGL MathmaticsとあるようにOpenGL、GLSLと同じように記述ができるように実装されている
http://glm.g-truc.net/0.9.6/index.html

全てのライブラリがOpenGLと同じような記述( v' = TRv )で書ける仕様になっているとはかぎらない
08438282015/07/04(土) 13:58:18.11ID:1TyiJx/O
>>829
一応自作プログラムでtrackball.cppと同じ処理をglm等を使って書いて確認したつもり。
なので他の人はどう思うか聞いてみた。

>>832
あーそうか、行列のrotateに合わせたのか。

template<typename T >
detail::tquat< T >
rotate (detail::tquat< T > const &amp;q, typename detail::tquat< T >::value_type const &amp;angle, detail::tvec3< T > const &amp;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
3次元のbitmap、つまり数百枚のbitmapデータを描画する場合に
いっちゃん速い方式って、どんなんなるの?
シェーダー書いて全部ピクセル描くのが速いか、一枚分毎をテクスチャにして、
それを数百枚貼るのんが速いか、とにかく速い方式を教えてチョンマゲ

800*600*600のグレスケデータでオンのピクセルは1割くらいっす
0846デフォルトの名無しさん2015/07/06(月) 21:52:44.95ID:mHUPaf2c
>>845
どちらが速いのか気になるとりあえずの候補があって、
なおかつ素材もあるのなら、自分で試せるじゃん。

試すためのプログラミング能力が無いとか、か?
0847デフォルトの名無しさん2015/07/06(月) 21:56:20.01ID:swqGSHIc
>>845
数百枚のビットマップファイルを連続的に描画して動画を作りたいって言う事か?
0848デフォルトの名無しさん2015/07/06(月) 22:16:23.96ID:vbwUxLvA
動画じゃなくて3次元のbitmapだよ?
連続じゃなくて800*600*600のbitmapデータでオンのピクセルが1割の奴を
ドーンと表示してグリグリ動かしたいのデス!
0849デフォルトの名無しさん2015/07/06(月) 22:18:56.75ID:vbwUxLvA
>>846
作るのはテクスチャ版が楽そうなんだけど800*600のテクスチャを600枚
貼ると、なんとなく自分の環境では動かないような気がするのデスよ?
0850デフォルトの名無しさん2015/07/06(月) 22:37:40.97ID:mHUPaf2c
>>849
ということは、シェーダーの方は問題なかったのか。

後一息じゃん。
テクスチャ貼る方も、気がするだけじゃなく、試してみたら?
0851デフォルトの名無しさん2015/07/07(火) 08:41:20.08ID:SE5+KWfE
単純にARGB各8bitとして9GBやん
0852デフォルトの名無しさん2015/07/07(火) 08:48:18.41ID:oR9xV2kd
>>848
>連続じゃなくて800*600*600のbitmapデータでオンのピクセルが1割の奴を
>ドーンと表示してグリグリ動かしたいのデス!

なるほど。物体の表面だけでなく本来は見えない内部のデータもとにかく全部読み込んで表示したいのね?
その後で断念を切り出して内部を見るとかするの?
0853デフォルトの名無しさん2015/07/07(火) 09:00:19.49ID:w6oTZxTr
断念はしないけど断面はやりたいデスね!
0854デフォルトの名無しさん2015/07/07(火) 09:00:31.79ID:Sx9/yLW0
>>851
9Gバイト!?
0855デフォルトの名無しさん2015/07/07(火) 09:10:39.69ID:oR9xV2kd
>>849
ピクセルに描く方も、そんなにややこしくは無いんじゃない?bitmapのrgbaデータ使って点打つだけじゃない?
800x600x800程度の点群データなら十年位昔にDellの中クラスくらいのパソコンでもスイスイ動かせた経験あるから、
今のパソコンなら全然問題無いんじゃない?
0856デフォルトの名無しさん2015/07/07(火) 09:19:05.98ID:6BBhWE2F
800 x 600 x 600 x 4で1Gちょっとか
まあ最近のGPUボードなら収まる範囲か?
0857デフォルトの名無しさん2015/07/07(火) 09:27:39.73ID:5sz5+104
Texture3Dとは違うのか?
0858デフォルトの名無しさん2015/07/07(火) 10:33:48.00ID:ma3xuZ7u
真正面から見るだけなら2枚のテクスチャを重みつけてブレンドするだけだろ
高速化もへったくれもない

真横とか真上からみたりするには各ポリゴンに3Dテクスチャの設定を
すれば目的は達するんじゃないのか?
0859デフォルトの名無しさん2015/07/07(火) 13:36:03.34ID:1luuJqtf
>>854
なんでか32バイトで計算しちまったんだなぁテヘペロ
0860デフォルトの名無しさん2015/07/07(火) 13:42:46.65ID:6BBhWE2F
サイコロのデータの3dテクスチャがあるとして
3dテクスチャ座標を持つ立方体ならサイコロそのもの
3dテクスチャ座標を持つ立方体を分割する様な平面なら、サイコロの分割面が表示される訳か
ボクセルの様な表示はちょっと工夫が必要か?
0861デフォルトの名無しさん2015/07/07(火) 15:28:18.21ID:w6oTZxTr
実わデスね、銀河とか球状星団とかの星雲を描いてみたいのデス!
テスト用に64*64*64くらいの3Dテクスチャをサイズを合わせて立方体に
突っ込んでみたんデスけど…アルファの設定やらがダメダメなへたれ
状態で立方体の内部がうまく見通せないのデス…がっくし

で、ピクセルを全部描いた方がいいんじゃないかと思ったんデスけど…
0862デフォルトの名無しさん2015/07/07(火) 15:48:48.80ID:Ts1uCmCS
そういう用途なら立方体じゃなくポイントスプライトじゃね
0863デフォルトの名無しさん2015/07/07(火) 15:51:08.50ID:Sx9/yLW0
アルファの設定をちゃんとやればいいじゃない

どっちがいいかって言ったらテクスチャのがいいと思うけど
星雲みたいな半透明な雲みたいの表現できるし
0864デフォルトの名無しさん2015/07/07(火) 18:17:37.62ID:feTeklmA
3Dテクスチャは隙間は単なる線形補完だから星雲には向かないだろ
中身が詰まってるモノ用だぞ (星がビローンと延びて表示されるはず)

ポイントスプライトとか別の方法にすべし
0865デフォルトの名無しさん2015/07/07(火) 18:51:19.87ID:cVOy5SyV
それだったらPoint Spriteでも良さそうな気がする
0866デフォルトの名無しさん2015/07/07(火) 20:53:02.17ID:3YG+ylqQ
ラスタライズじゃなくてレイマーチングとかじゃないの?
0867デフォルトの名無しさん2015/07/08(水) 00:26:48.57ID:gALBwwt0
MarchingCubesとかで等値面作るのじゃだめなの?
0868デフォルトの名無しさん2015/07/08(水) 10:59:54.29ID:NbPZiENd
えっとデスね?星の位置や色とかは800*600のbmpファイル600枚で作るんデスよ?
それを3D的に表示するのに四苦八苦してる訳デス!
0869デフォルトの名無しさん2015/07/08(水) 13:37:08.85ID:Mzi4j/WW
それを座標と色データに落とし込めばいいじゃん
0870デフォルトの名無しさん2015/07/08(水) 13:42:32.74ID:PAkk6Hqa
点に色付けて三次元のグリッド状に多数
描画するだけで目的は達成出来るんちゃうん?
0871デフォルトの名無しさん2015/07/08(水) 21:15:17.17ID:NwJfYym5
動画をテクスチャ化したものをOpenGLで表示しようとしてるんだけど
テクスチャの転送はメインスレッドからやった方が良いだろうか?

最近のPCのOpenGL実装だとglTex(Sub)Image2Dを別スレッドで実行しても、
テクスチャが書き換わる所(ティアリング?)が見えたりしないようになったのか
かなり前にやった時はティアリングが見えたんだけど
今持っているPCだと特にティアリングは見えない

メインスレッドを実行するCPUコアの負荷を減らしつつ、どんなPCでもティアリングをしないようにと、
動画テクスチャのダブルバッファリングのような事をしようとしたが
無意味だったようだ
どうやっても送った通りの順番では描画されなかった

かなり悩んでから「OpenGLのコマンドは送った瞬間に実行されるわけじゃない」
ということを思い出した
2枚しかテクスチャが無かったが、これだとGPUが描画処理を実行中に書き換わるかもしれない
2枚よりを増やせば良いかもしれないけどメモリの無駄にも思える
0872デフォルトの名無しさん2015/07/08(水) 21:23:13.80ID:51gCtBzD
>>870
そうなんデスけど…ひたすら点を打つより少しでも速くできる方法はないかと
達人の知恵を借りに来たのデス!
0873デフォルトの名無しさん2015/07/08(水) 22:34:10.00ID:G7l1BA1k
点をクラスタライズして、ルートから描画していって、
クラスターのサイズが適当に小さくなったところで描画を打ち切れば良いじゃん。
0874デフォルトの名無しさん2015/07/08(水) 23:11:40.24ID:C7UKQtvB
ある構造体の、あるfloat成分だけ1次元配列にしてシェーダーに渡したいのですが
glTexImage1Dでストライドを指定する方法ってありますか?
バッファオブジェクト経由の方法もありますが、できるだけopenglバージョン2で間に合わせたいです
0875デフォルトの名無しさん2015/07/08(水) 23:37:29.27ID:gALBwwt0
>>868
ボリュームデータ 可視化 とかでググって勉強した方がいいんじゃない
0876デフォルトの名無しさん2015/07/09(木) 10:56:29.96ID:ta04dDOa
>>871
ティアリングが無くなったのは2つの理由があると思う
・GPUが速くなって画面書き換え以外の期間に完了するようになった
・ドライバが正しくCPUとGPUのリソース競合を解消するように同期している

GL関数を別スレッドで実行するのは未定義だったと思うけど
どっちにしろティアリングが発生する可能性はあるはず

ダブルバッファリングってテクスチャオブジェクトを2つ作成した?
ちゃんとやれば問題ないと思うしリソース競合が(同期が)無くなるから
パフォーマンスも良くなるはず
0877デフォルトの名無しさん2015/07/09(木) 11:27:23.88ID:yvZx6GXv
>>872
良く知らんけれど最近のグラフィックカードならヤッスイ奴でも
毎秒10億点くらい描画出来るんじゃないのか?
0878デフォルトの名無しさん2015/07/09(木) 11:48:17.21ID:BKywrTZW
glBegin とかやってたりしてw

ないか
0879デフォルトの名無しさん2015/07/09(木) 15:32:11.14ID:DxjX+QFr
>>878
いまでも glBegin ... glEnd 使ってる本おおいもんな
0880デフォルトの名無しさん2015/07/09(木) 16:25:04.91ID:yvZx6GXv
>>879
最近はどうやって沢山の点打つんだ?
0881デフォルトの名無しさん2015/07/09(木) 16:27:07.95ID:yvZx6GXv
それと今はglutに代わる新しいツールキット有るのか?昔しか知らない浦島太郎な俺に教えてくれよ。
0882デフォルトの名無しさん2015/07/09(木) 16:29:16.30ID:7g9w6aL6
http://d.hatena.ne.jp/nurs/20111008/1318092130
0883デフォルトの名無しさん2015/07/09(木) 18:07:40.94ID:ta04dDOa
昔はOpenGLのサンプルを実行しようにもソースをコンパイルすると
大抵一発目はエラーになったもんだ (で、Makefileやらソースを直す事になる)
それが最近じゃWebGLでみんな作ってあるからすぐ結果が確認出来て
いい時代になった

>>881もWebGLとかも候補に入れてみたら?
多少Webの知識が必要になるけど慣れたら便利だよ
0884デフォルトの名無しさん2015/07/09(木) 18:50:02.82ID:7g9w6aL6
話し出たついでなので
http://wgld.org/
0885デフォルトの名無しさん2015/07/09(木) 19:54:24.14ID:yvZx6GXv
>>882
サンキュー。時代は進んでいるんだな。
0886デフォルトの名無しさん2015/07/09(木) 20:25:19.01ID:aXzlg7or
白髪も増えた
0887デフォルトの名無しさん2015/07/10(金) 21:50:10.70ID:qznxEiy4
>>876
2つのテクスチャを順番に表示していたが
これだとどうしても表示順がおかしくなり駄目だった
番号の入れ換えではなく、片方にコピーにすれば良かったのかも?

ダブルバッファリングとCPUでのRGB変換をやめて
途中からY、U、V3枚に分けてアップロードし、フラグメントシェーダーでRGB変換もしてみた

そうするとIntelでだけポケモンフラッシュのようになる
glFinishを入れたらマシになるが、それでも画面が一瞬黒くなったりした
YUVに分けた場合は絶対無理だな

やはりメインスレッドからやらないと駄目という結論に達した
0888デフォルトの名無しさん2015/07/11(土) 04:23:47.82ID:coKbQ2xf
>>887
glFlush()
0889デフォルトの名無しさん2015/07/11(土) 09:34:06.33ID:pI7L/MNB
http://stackoverflow.com/questions/2143240/opengl-glflush-vs-glfinish
0890デフォルトの名無しさん2015/07/11(土) 14:41:12.76ID:T6RAiQU2
>>888
glFinish()はGPUの描画完了と同期するからマルチスレッドの場合に効果はあるだろうね
しかし同一コンテキストではマルチスレッドはサポートされてないから
うまく行かなくてもしょうがないね
0891デフォルトの名無しさん2015/07/11(土) 14:49:16.62ID:T6RAiQU2
glFlush()はGPUへ描画コマンドを発行して描画開始に同期するもんだけど
普通はSwapBuffersをする時に内部で同様の処理がされてるはずだから
明示的に呼ぶ必要はないだろうね

glFinish()も画面をキャプチャするとかGPU負荷を計測するとかじゃないと
こっちも普段使うことはないね
0892デフォルトの名無しさん2015/07/11(土) 17:54:30.58ID:Xee6MSFW
確実にやるならどちらのスレッドからもglFinishやらglFenceSyncやらで
大雑把にCPUとGPUを同期するしか方法がないからねえ
下手にマルチスレッドにするとGPUがら空きで逆効果になりかねんよ
0893デフォルトの名無しさん2015/07/12(日) 00:35:56.24ID:npPZ86hd
OpenGLのカレントコンテキストはスレッドローカルだから
あるテクスチャを別のスレッドで書き換える,あるいは利用するためには
コンテキスト作成時にリソースを共有するように設定する…のって当たり前?
0894デフォルトの名無しさん2015/07/13(月) 20:25:00.97ID://EA2BYt
UIで回転のボタンをつけようと思うのですが、XYZの軸に沿って回転させるか
ユーザーの見た感じで回転させるか迷ってます。
どっちがわかりやすくて操作しやすいでしょうか?

軸に沿って回転する場合、原点方向をみて時計回り、反時計回りなんでしょうか?
それとも原点と逆方向をみて時計回り、反時計回りなんでしょうか?

見た感じで回転する場合は基本右へ回転し始める方向を時計回りと呼べばいいと
思うのですが、奥と手前に回転する奴は、どっちを時計回りと呼べばいいんでしょうか?
0895デフォルトの名無しさん2015/07/13(月) 20:27:32.61ID:pkwrWQPL
>>894
先ず何を回転させたいのか書けよw
0896デフォルトの名無しさん2015/07/13(月) 22:50:23.34ID://EA2BYt
何を?
ああ、プログラムは基本単純な3Dオブジェクトのビューアなので、ユーザーが
見たい角度からオブジェクトを見られるなら、別に何を回転しても結果は同じ
だと思います。
0897デフォルトの名無しさん2015/07/13(月) 23:22:09.61ID:wEMFF3Ro
視点、それともオブジェクト?
0898デフォルトの名無しさん2015/07/13(月) 23:35:18.07ID:rGLqV9zZ
>>896
オブジェクトが2つ以上ある場合は同じじゃないぞ
ボタンというのが分からんが普通マウスでグリグリやるんじゃないのか?
そんなのモデリングツールとか色々いじって気に入ったのを真似すればいいよ
0899デフォルトの名無しさん2015/07/14(火) 09:12:03.70ID:J7Aelmzo
>>888
単純なビューアなのでオブジェクトが複数あっても相対位置は買えないように
しないと意味がないですし、基本ひとまとまりのものしか表示しないです。

> そんなのモデリングツールとか色々いじって気に入ったのを真似すればいいよ
まあ、そうなんですがモデラート化だと言われたように複数のオブジェクトがある
場合とか逆に複雑だったり、ユーザーが見たいものを3D絡みの知識がなくても
操作できる方式がいいと思ったものですから。
0900デフォルトの名無しさん2015/07/14(火) 13:15:26.35ID:7Tz/sGrk
「時計回り」とかじゃなくて、アイコンにしなさいよ
0901デフォルトの名無しさん2015/07/14(火) 13:24:20.60ID:sVWjNIFt
ボタンの回転だけ別に自分で座標計算してもいいんだよ
0902デフォルトの名無しさん2015/07/16(木) 19:37:52.11ID:UthjCfnl
久しぶりにGLFWを弄ったら、なんかどんどん不便になっている…
0903デフォルトの名無しさん2015/07/16(木) 21:34:11.07ID:/G583JfU
sdlより何がいいんだよ
0904デフォルトの名無しさん2015/07/16(木) 22:07:26.60ID:drk7/ikr
Qt
0905デフォルトの名無しさん2015/07/16(木) 22:42:10.05ID:UthjCfnl
いや、glutで作った資産が大量にあって機能の統合や現代化の御要望が
来てるんですよ、これが。
で、OpenGL的な所は、あんまりやり直したくはないという我侭なんですけどね…
0906デフォルトの名無しさん2015/07/17(金) 22:54:42.90ID:LEWEDbw3
>>905
ちょっとしたopenglのプログラム作る程度ならglutで十分じゃないか?
0907デフォルトの名無しさん2015/07/17(金) 23:06:04.27ID:hDnbbaqI
>>906
ちいさな glut (で閉じた)プログラム資産がたくさんあって、
それを大きなプログラムにまとめて、データ共有だとか
そういう機能を追加したいとかそういうことなんじゃないすかね
0908デフォルトの名無しさん2015/07/17(金) 23:07:19.33ID:XOKJlMXM
モダン化するなら大改造になると思うが
0909デフォルトの名無しさん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
4K解像度でも1000万画素無いんだから
億単位なら必ず重なる頂点が出てくる
何をどう表示するかによって変わってくるだろ
0912デフォルトの名無しさん2015/07/25(土) 19:53:25.82ID:+0kAmbd1
Androidで座標の回転実装しようと思ったら、自分の持ってる本3冊の回転行列の記載が全部間違えてて笑ったw
結局クォータニオンで実装したからまあいいんだけど、どんだけ流用してんだよ。

出版社1社に間違えてませんかってメール送ったけどガン無視されるしw
行列で回転を実装する人はロドリゲスの回転公式と自分の本と見比べたほうが良いぞ。
ネットでも符号が違う情報も流れてるから。
0913デフォルトの名無しさん2015/07/25(土) 20:19:26.77ID:TME83wCE
馬鹿には自分が間違っていないと考えるという共通点がある
0914デフォルトの名無しさん2015/07/25(土) 20:57:40.68ID:N0xfeapg
間違っているのは、この世界か自分か?
0915デフォルトの名無しさん2015/07/26(日) 02:23:03.58ID:FuRY4Nuu
不思議なんだが座標の回転方法はつい最近まで検索してもひっかからなかった
本が三冊間違えててネットの解説も符号が違うらしいからいまだ存在しないと
も言える彼が正しいならな
0916デフォルトの名無しさん2015/07/26(日) 08:24:10.39ID:VOpbEFzO
符号が逆って
sin-θ=-sinθ
cos-θ=cosθ
ってだけじゃないの?
0917デフォルトの名無しさん2015/07/26(日) 09:12:26.75ID:mEqpLHZs
回転行列1列目の2行目
本
 xy(1.0-cosθ) - zsinθ

ロドリゲスの回転公式
 xy(1.0-cosθ) + zsinθ

自分の持ってるopen glの本3冊すべて同じ間違い。
実装して挙動がおかしいので、半日試行錯誤。
最終的には数学のサイトで調べた。
0918デフォルトの名無しさん2015/07/26(日) 09:26:58.43ID:g202HI9E
>>917
俺が持ってるOpenGLの本にも同じ間違いがある(同じ本なのかも)
0919デフォルトの名無しさん2015/07/26(日) 09:30:50.84ID:KUIB2BB8
書籍名どうぞ
09209182015/07/26(日) 10:09:47.82ID:g202HI9E
俺のは
OpenGLリファレンスマニュアル第2版
のglRotateの説明のところ

まぁ古い本だし、最新版や元の英語版では間違ってない(直ってる)かもだし、出版元(ピアソン?)のホームページには誤植校正一覧があるのかも知れないけどね。
0921デフォルトの名無しさん2015/07/26(日) 10:29:30.78ID:mEqpLHZs
>>920

自分の持ってる3冊とは違う。
都合4冊は同じ記述って事ですね。

なんか自分の指摘が間違えてる気がしてきたw
でも9つの行列の要素でそこだけ回転公式と符号が違う。
誰か詳しい人が断言してくれないかなw
09229182015/07/26(日) 10:39:55.49ID:g202HI9E
>>921
本の方の誤記だと思う…けどなぁ。
俺も当時、本の数式を参考にプログラムしてうまく動かなくて、やっぱりネットで調べてそちらに従ってプログラムしたら、想定どおりに動いた。
0923デフォルトの名無しさん2015/07/26(日) 10:49:10.01ID:mEqpLHZs
>>922
自分も実際本通り実装して変だったし。
じゃあ自分も本の名前書きますw

初めてのOpenGL ES
マルチプラットフォームのためのOpenGL ES入門基礎編
Android OpenGL ゲームプログラミング

Rotate命令使用するなら関係ないけど、高速化のため一括描画する場合
回転するオブジェクトの座標だけ直にいじるから回転行列を使う人は気を付けよう。
クォータニオンで実装するなら関係ないけど本には書いてないから。

ただ別に本を貶める気はないよ。
情報が少ない中、凄い参考になってるから。
でもこれだけの本で記載が間違えてるとしたら、問題だと思う。
実際自分の持ってるopen glの本全部そうだったから、最初は全く疑ってなかったしw
0924デフォルトの名無しさん2015/07/26(日) 11:36:01.18ID:GOCA7qcd
転置になってんの?九つのうちのそこだけ違ってんの?
0925デフォルトの名無しさん2015/07/26(日) 11:44:43.45ID:VOpbEFzO
>>921
0926デフォルトの名無しさん2015/07/26(日) 16:26:36.02ID:KUIB2BB8
本屋寄ったので>>923の2冊だけ見てみたら確かに違ってた
>>923の最初の2冊は同じ著者。O'REILLYは正誤表のページあるけど載ってないね
古いリファレンスマニュアルが元かも。昔の赤本って結構間違いあったし
0927デフォルトの名無しさん2015/07/26(日) 17:00:14.05ID:mEqpLHZs
>>926
確認thx

皆気付いても出版社に報告しないのかね?
それとその中の1社にメール送ってスルーされたけど、他の本もそうだから出版社が正しいと思い込んでるのかも。

さすがに自分は3冊も違うっておかしいと思って書き込んだんだけど。

出版関係者がここ見てて、次からは修正してくれればいいけど。
メール出して返事すら来ないとか、損した気分になったからもう出すつもりないし。
0928デフォルトの名無しさん2015/07/26(日) 17:41:02.18ID:FlzLI2sd
動作確認もせずに本書いて売る香具師がこんなに多いとはね
0929デフォルトの名無しさん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:FuRY4Nuu
うーん誤植は多いな
0932デフォルトの名無しさん2015/07/26(日) 22:39:43.95ID:ixAy1+UH
影表示のプログラムを参考にデプス情報をテクスチャに利用しようと思い
glTexImage2D関数でGL_DEPTH_COMPONENTの指定などをして描画を行った後
glCopyTexImage2DやglCopyTexSubImage2Dなどを試しに使っているのですが
テクスチャとビューポートにクライアントサイズを越える値を設定すると
期待した結果が得られなくなるようで悩んでます。
テクスチャやビューポートの設定を変えてもクライアント領域外のデプス情報は得られないのでしょうか?
0933デフォルトの名無しさん2015/07/26(日) 22:43:00.31ID:K+LoRwu6
ハードかドライバが相当古くない?
0934デフォルトの名無しさん2015/07/26(日) 23:05:59.11ID:KUIB2BB8
>>932
FBO使ってる?
09359322015/07/26(日) 23:24:13.43ID:ixAy1+UH
>>934
手近な資料が古いものだったのでVBOとかFBOは使ってないんだ…
0936デフォルトの名無しさん2015/07/26(日) 23:34:07.89ID:KUIB2BB8
>>935
じゃクライアント領域外ってのは描画ウィンドウの外って意味?なら無理かと。
09379322015/07/26(日) 23:42:55.82ID:ixAy1+UH
>>936
FBO使ったプログラム参考に改造してみます、ご指摘ありがとう。
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+xNI5
>>938
MaxRects 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:BeaM1eYk
>>941
NP困難って書いてあるから最適解を見つける事は不可能って事か
トライアングルストリップ化に通ずるもんがある
0943デフォルトの名無しさん2015/07/28(火) 21:54:31.12ID:Bfo/a7sv
bindless拡張で全部別のテクスチャのままで扱うのってどう?
0944デフォルトの名無しさん2015/07/28(火) 22:24:29.09ID:1mLisDB5
そんなあなたにTexturePacker
https://www.codeandweb.com/texturepacker
0945デフォルトの名無しさん2015/07/30(木) 14:27:35.97ID:Z/zMIUDw
drawElements などで同一バッファーの複数の範囲を一度に描画することは出来ませんか?
たとえば、0~10, 100~200 を描画するという感じです。
0946デフォルトの名無しさん2015/07/31(金) 01:16:52.36ID:fyy+mgzd
縮退させれば?
0947デフォルトの名無しさん2015/07/31(金) 18:09:25.48ID:kkP63GlE
windows+glfw+glewでマルチスレッド対応をしています。
以下のようなコードでテクスチャは問題ないのですが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:kkP63GlE
すんません前スレでも出てましたが共有できないみたいでした。
https://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+mgzd
俺も昔はまった記憶がある
0951デフォルトの名無しさん2015/08/02(日) 18:26:50.94ID:aL0GyOAl
テッセレーションなんだけど
単純な4角形が三角形になってしまうのだが
なんかありがちな理由ある?
0952デフォルトの名無しさん2015/08/05(水) 13:39:43.34ID:qkwaYiiU
FTGLでCインターフェイスから日本語表示するには、どうしたらいいの?
0953デフォルトの名無しさん2015/08/05(水) 17:52:04.42ID:qkwaYiiU
半日掛かって自己解決、以下の様にレンダー系のエントリを追加した〜Wが追加したエントリ

<-- 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:qkwaYiiU
これ以外にも何か所かあったけど、弄ったソースは
FTFont.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
>>955
アジの開きみたいに全頂点をまったいらに開く事を言ってるのか?
「UV 展開」とかでググると色々出てくるけど基本的に非常に困難と思われる
0957デフォルトの名無しさん2015/08/06(木) 13:29:13.55ID:y/VksE8c
>>955
元のモデルにちゃんとテクスチャが貼ってあれば、そのまま使えばいいじゃん。
なんならダミーを貼っておいてダミーを上書きすればいい。
0958デフォルトの名無しさん2015/08/06(木) 14:25:06.09ID:fw+KClsg
>>956
uv展開はすでにしてある状態となります…
そこに動的にテクスチャペイントしてペイント結果を画像として保存したいのです…

>>957
すでにuv展開してあるモデルにシェーダー側でtex2dProjで投影しているのですが、その結果を画像として保存する方法がわからないのです…
0959デフォルトの名無しさん2015/08/06(木) 19:01:32.67ID:YP0GqHBQ
>>958
なんだよ…じゃあテクスチャのピクセルがそれが含まれてるポリゴンの各頂点からの
相対的な位置を割り出して3Dモデルのその位置のペイント結果を参照するだけだろ
0960デフォルトの名無しさん2015/08/06(木) 19:16:43.59ID:YP0GqHBQ
>>958
プロジェクションマッピングしてたのか…見逃した
UVstpq = M * Pxyzw (Mは作成済みの行列、Pは頂点座標)
M^-1 * UVstpq = Pxyzw
で、テクスチャ座標→ポリゴン座標に出来ると思われる
(やった事ないからうまく行くか分からん…)
0961デフォルトの名無しさん2015/08/06(木) 19:18:28.89ID:YP0GqHBQ
>>960
Pxyzw / Pw する事を忘れずに
0962デフォルトの名無しさん2015/08/06(木) 23:33:20.10ID:AxSr8tmn
>>961
ありがとうございます…!
教えて頂いたことを含めて再度考えてみたいと思います…
0963デフォルトの名無しさん2015/08/11(火) 21:25:00.10ID:BRsYvBvu
SIGGRAPHで↓の発表があった
OpenGL ES 3.2 (Android Extension Packに追従)
New GL Extensions (OpenGL はバージョンアップせずに拡張の追加のみ)
AndroidでのVulkanサポート (これで一安心)
0964デフォルトの名無しさん2015/08/11(火) 21:46:14.35ID:bObsH9SX
これでglNextもといVulkanの未来は安泰...なんかね?

valve•sourceengine信者なんでVulkanには普及してもらいたいところ
0965デフォルトの名無しさん2015/08/12(水) 12:51:48.45ID:Uc2fJvLR
Appleがまだ対応を表明してないけど、まぁ対応せざるを得ないだろう
http://blog.imgtec.com/powervr/gnomes-per-second-in-vulkan-and-opengl-es
Android上のVulkanのデモだけど大量のオブジェクトがある時に差があり過ぎ…
0966デフォルトの名無しさん2015/08/12(水) 13:15:03.63ID:9IGggRqm
AppleはMetalでいくだけじゃろ
0967デフォルトの名無しさん2015/08/12(水) 15:12:46.72ID:W/Nfuaws
あらゆる標準を独自規格でぶち壊してきたのがApple
0968デフォルトの名無しさん2015/08/12(水) 17:26:08.45ID:Uc2fJvLR
何か壊したものってあったっけ?
AppleオリジナルなのはIEEE1394ぐらいしか思いつかないけど
単に余計な混乱を巻き起こしただけだったな
0969デフォルトの名無しさん2015/08/12(水) 17:35:46.68ID:bbP305l/
Objective Cは絶対許さない
0970デフォルトの名無しさん2015/08/12(水) 18:11:37.69ID:nbpB5mxg
イミフ
0971デフォルトの名無しさん2015/08/12(水) 19:55:14.24ID:/hfLX3yr
Objective-C が主語
0972デフォルトの名無しさん2015/08/12(水) 20:33:21.95ID:Uc2fJvLR
Objective-CもAppleが起源じゃないけど、今は完全Apple専用だな
AppleはSwift+Metalを標準にしたいだろうけどMetalは無理だろう
Swiftは詳しく知らんけど意外といいかもしれん
0973デフォルトの名無しさん2015/08/12(水) 23:40:57.51ID:8CZX+D95
姐さん次スレの季節です。
0974デフォルトの名無しさん2015/08/14(金) 15:49:39.33ID:H7q+RB2/
正方形の画像オブジェクトを長方形に書き換えようとすると
エラーが出るのですがデフォですか?
ちなみに1.0です
0975デフォルトの名無しさん2015/08/14(金) 15:50:20.87ID:FOn6mjy6
デフォ
0976デフォルトの名無しさん2015/08/17(月) 20:59:40.28ID:fqWyJ0EE
GPU使うと一億個のパーティクルを同時に動かす事ができるのか
スマホでも余裕で動く

うちの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:S2KJYKrv
WebGL 2.0からのTransform Feedback
0979デフォルトの名無しさん2015/08/17(月) 21:40:49.48ID:FjhSddeN
それってなんかありがたいんだろうか
テクスチャーかバッファオブジェクトかの違いで、構造的には同じような?
0980デフォルトの名無しさん2015/08/17(月) 21:41:56.34ID:pkruh1if
WebGL2の環境が無い場合はVTF使ってるって書いてるから別にWebGL1でも出来るよ
0981デフォルトの名無しさん2015/08/17(月) 22:34:00.33ID:fqWyJ0EE
million=百万だった
何で1億って書いちゃったんだろう…
レス数が950を超えています。1000を超えると書き込みができなくなります。