「ん~、知らない人は今まで損してたってこと?」 はい、今まで普通に利用していた人は損してます。今回「無料でさら…

OpenGL/VulkanスレPart22

1デフォルトの名無しさん2015-08-27 18:12:52

クロスプラットフォームの3D API OpenGL 及び次世代のローレベルAPI Vulkan に関する話題を扱うスレッド。

現在の最新バージョンは4.5

Deploying and developing royalty-free open standards on cross-platform technology for graphics, parallel computing, vision processing, and dynamic media

== 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スレ Part21

== 関連スレ ==

【O3D】HTML5用 3D API WebGL 【Canvas:3D】

OpenGL 2.0 専用スレ

6デフォルトの名無しさん2015-08-28 02:07:15

>>1乙

7デフォルトの名無しさん2015-08-28 11:34:06

>>1乙!

5デフォルトの名無しさん2015-08-28 00:40:52

今、点と線を描くプログラム↓を書いています

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0.0, 1.0, 1.0);

glEnableClientState(GL_VERTEX_ARRAY);

glVertexPointer(2, GL_DOUBLE, 0, point_data);

glDrawArrays(GL_POINTS, 0, point_num);

glutSwapBuffers();

そこでline_data[]内にある頂点データを使っていくつかの直線を描く関数を上のプログラムに追加したいのですが、どうすればいいでしょうか?

8デフォルトの名無しさん2015-08-28 12:42:16

>>5

点のはちゃんと動いてんの?だったら9割方出来てんじゃん…

9デフォルトの名無しさん2015-08-28 15:20:20

>>8

はい、点の方はちゃんと動いています!

ここに線を加えようとしても上手くいかず困っています

10デフォルトの名無しさん2015-08-28 18:33:28

>>9

ほとんどエスパー状態だが…LINESとLINE_STRIPの区別できてる?

30デフォルトの名無しさん2015-09-20 10:17:30

その分ハードウェアの癖が出やすくなったりしないのかね

ま、どうせチューニングせざるを得ないなら薄いほうが良いな

31デフォルトの名無しさん2015-09-20 11:37:36

OpenGL ESのドライバ実装の違いによる不具合ってどう言うのがあるんだろう

WindowsデスクトップではANGLEに違いを吸収してもらうとして

問題はスマホなんだが

この2つは知ってる

・iOSで勝手にミップマップ用のメモリを確保するバグがあったらしい

・NVIDIAだと他社ドライバではコンパイル出来ないGLSLのプログラムがコンパイル通る

iOS Textures Taking 33% Extra Memory – Stack Overflow

I was testing my iOS game and noticed a discrepancy between how much memory it was taking up and how much it thought it should be taking up. Eventually I narro...

>>30

OpenGLみたいにぶ厚い方が

ドライバ依存の部分が多くなって予測不可能な動作をしやすい気がするが

33デフォルトの名無しさん2015-09-20 14:57:05

>>31

自分が当たったのは

Adreno 205でdiscardの後にtexture使うとOSごとクラッシュ

Adreno320でUBOの変数をそのまま計算に使用するとshaderコンパイル時にアプリクラッシュ(なぜか一時変数に代入してから使用するとクラッシュしない)

Adrenoはエラーログ出さずにすぐ死ぬからマジでデバッグが地獄

しかも今Androidで一番使われてるシリーズ

ほかはここに色々

Official Dolphin Emulator Website - Dolphin Emulator and OpenGL drivers - Hall of Fame/Shame DolphinというGC/Wiiエミュレーターの開発者が、各種プラットフォームにおけ...

薄かろうがAdrenoがまともなドライバを作れるとは思えない

34デフォルトの名無しさん2015-09-21 00:42:42

>>33

その駄目AMDがいまやPC系のOpenGLでは最も安定動作し性能が良いんだからな

おかげでOpenCLのスタンダードになり、そして、Vulkanを後続規格に出来たんだからな

35デフォルトの名無しさん2015-09-21 01:27:51

>>34

Adrenoは元AMD(ATI)でしょ

今はQualcommが作ってる

Qualcommはドライバーを軽視してる感がある

36デフォルトの名無しさん2015-09-21 06:53:50

>>35

性能はいいけど・・・って感じだよね、

nVIdiaとVulkanはMantle的に相性は悪いがそれでも今のスマホGPUよりかはよっぽどましな挙動をすると思う

59デフォルトの名無しさん2015-10-26 23:38:53

多分、色々と食い潰してる。

どうでもいいが「重い」とか言っときながら、まさかプロセスやリソースの状態も

調べてないとか言い出すなよ?

60デフォルトの名無しさん2015-10-26 23:48:03

リッチなデバッガ、プロファイラのある環境で作ってEmscriptenで変換

61デフォルトの名無しさん2015-10-26 23:51:14

あ、WGLってWebGLじゃなくてWinGLの事か。

62デフォルトの名無しさん2015-10-27 00:20:30

>>59

デバッグ用の拡張命令とかも調べつつなんでお察しください…

>>60

JavaScriptとかよく分からないんだけど…C++コード弄るの飽きたら試してみるわ

>>61

不安になってググってみたらWinGLもなんか違うな…wglCreateContext関数とか使うやつだわ

63デフォルトの名無しさん2015-10-27 00:46:02

最近のVisual Studioは無料版でもプロファイラが付いているからまずそれを使う

後はOpenGLデバッガのgDEBuggerを使うとか

>>62

それがWGLでしょう。

65572015-10-27 02:09:35

>>63

VSのプロファイラは使ってるけどgDEBuggerってのは使ってなかったので試してみるよ ありがとう

104デフォルトの名無しさん2015-11-16 11:45:42

ディファードレンダリングにして各GPUにどのタイルをレンダリングするかを

割り当てれば割と簡単に分散は出来そうだな

ただ頂点処理はかなり重複する事になるから多ポリゴンをレンダリングする

目的には1GPUの時とあまり変わらずに結局向かないと思うよ

111デフォルトの名無しさん2015-11-20 10:33:55

105の件解決(?)しました

4頂点の単純な板ポリで試してたんだけど四隅が全部黒の値拾っていた、

トーラスの頂点数の多い物で試したらキチンと反映していた

UVが1.0の値補完か何かで0.0位置の色を拾ってたくさいw

112デフォルトの名無しさん2015-11-20 11:35:21

>>111

VTFを数値データとして使うなら普通0.5足してピクセル中央をフェッチするんだよ

113デフォルトの名無しさん2015-11-20 12:50:56

>>112

もしかしてUVの画像位置と合わせて頂点を凸凹させる時も?

114デフォルトの名無しさん2015-11-20 13:35:46

>>113

すまん>>112は書き方が変だったので訂正しておく

0.5というのはu = (x + 0.5) / 1024 のようにするという事を言いたかった

だから最終的に足されるのは0.5とは限らない

要するにテクセルの値を取得する時にはそうすべきというだけで

2つのテクセルのフィルタリングされた値が欲しければする必要はないだろう

115デフォルトの名無しさん2015-11-20 13:44:41

>>114

やっと理解したかも、補完かからない対策ですね

、1ドットの中心をアクセスすれば安全って事ですか?

116デフォルトの名無しさん2015-11-20 13:51:59

>>115

そうだ

あとFILTERの値もNEARESTにする

117デフォルトの名無しさん2015-11-20 13:53:31

>>116

ありがとう!たすかる

131デフォルトの名無しさん2015-12-12 00:20:10

LGPLはおおまかには、静的リンクか動的リンクかでソース公開の義務が変わる

133デフォルトの名無しさん2015-12-12 00:49:12

>>131

そういう事言うからLGPLが敬遠されるんだろうな

スタティックリンクでもソース公開の義務は無いよ

最悪*.oを公開するだけだ

それもゲーム機とか家電用の場合は実行ファイル自体が非公開だから*.oすら公開する必要はないけどな

134デフォルトの名無しさん2015-12-24 06:59:52

>>133

適当なこと言ってると後で痛い目見るよ

GPLって名前が入ってるものには一切手を触れないのが一番

135デフォルトの名無しさん2015-12-24 12:14:42

>>134

適当な事ってなんだよw

Wikiのこんな簡単な文章すら理解できないのかよ

176デフォルトの名無しさん2016-01-22 02:55:20

>>135

読んだら解ると思うけど、LGPLのライブラリを静的にリンクして生成されたオブジェクトコード(実行バイナリーも含む)

151デフォルトの名無しさん2016-01-07 15:16:07

日本は何でもかんでも文献が少ないか、古すぎる

原因の一つとして、大学が悪いんだよな

アメリカの大学は即戦力の知識を教えている

日本の大学は基礎しか教えていないので企業でまた学び直す必要がある

企業で学んだことは他者に教えてはならないという強迫観念があるので広がらない

177デフォルトの名無しさん2016-01-22 03:01:14

途中で書き込んでしまった

静的にリンクして生成されたオブジェクトコード(実行バイナリーも含む)の配布に制限をかけてはならないので、

もしプログラムを販売したとして、それを買った人がプログラムをコピーして転売とかネットにアップロードして再配布とか制限出来ないって事だからな

実行バイナリ以外のリソースがあってそれがないと意味をなさないプログラムであれば(それらのリソースにはLGPLは波及しないので)実質問題無いかも知れないがね

178デフォルトの名無しさん2016-01-22 12:42:23

>>177

>>135までの流れはソース公開の有無についてでオブジェクトの再配布については

何も触れてはいなかったけど、確かに言われてみればそうだな

ちなみにゲーム機のOSにはLGPLなライブラリも沢山使われてるけど

そういうのは全部動的にロードするタイプのものばかりだな

それに改変して使ってるLGPLなライブラリのソースはちゃんと公開されてるし

186デフォルトの名無しさん2016-02-17 12:12:46

QualcommはSnapdragon820からだな

これが搭載されたスマホが出るなんてかなり先になりそうだ

190デフォルトの名無しさん2016-02-18 01:09:41

>>186

なに、つまり今のQualcommものはVulkanサポートしないってことか

スマホの方が普及速度が速いって思ってんだが

194デフォルトの名無しさん2016-02-20 23:35:12

>>186

OSがVulkan描写だとかなり軽くなるだろうなあ・・・

iOSに快適さで負けてるのはOS部分の重さってのはよく言われてるし

191デフォルトの名無しさん2016-02-18 21:56:39

すいません

ここで聞いていいのかどうかわからないんですが

OpenGLでプログラミングして生成系の動画を作りたいと思っています

PCのみでプログラミングから動画書き出しまでできる環境って何がありますか?

192デフォルトの名無しさん2016-02-19 03:22:59

>>191

Processing

193デフォルトの名無しさん2016-02-19 22:01:40

>>192

190です

ありがとうございます

195デフォルトの名無しさん2016-02-21 23:41:58

>>190

Androidは他のベンダーもだけど一度製品として出したらドライバまったく更新しないからな。

ドライバに変更が必要だから対応されないんだろう。ハードウェア的に対応できるものだったとしてもね。

>>194

ないない。

Androidが重いのはJavaのフレームワークの質の問題

201デフォルトの名無しさん2016-02-25 13:30:07

>>195

2重苦3重苦ならせめて描画関係を最適化してJavaの処理に集中させるべきだと思うわ

どっちみち無駄が多いAPIを通して余計な電力をさらに余計に消費して描画してるのは事実だし

196デフォルトの名無しさん2016-02-22 21:57:08

iOSのアプリはネイティブコードで動いてるからそりゃAndroidより速いに決まってる

逆にネイティブコード動かしてよくセキュリティが保たれてるなと思う

iOSの事はよく知らんけど

197デフォルトの名無しさん2016-02-23 12:26:10

>>196

知らないのかよw

AndroidもNDKで99%ネイティブコードのアプリは作れるじゃん

ネイティブコード使おうがアプリは権限で許可されたことしか出来ないから安全

近年はVMの改善で割とヌルヌル動くし

198デフォルトの名無しさん2016-02-23 13:03:30

>>197

知ってるよ

セキュリティホールというのは許可されてない機能の穴の事だろ

Javaだとそういう事がやりづらいがネイティブコードだと

セキュリティホールを突くコードを書きやすい

202デフォルトの名無しさん2016-02-25 20:27:45

OpenGLの後継となるグラフィックAPI「Vulkan」について、Khronos Groupが「Vulkan 1.0」を正式に策定しました。LowレベルAPIとしてはDirectX 12以上に汎

微妙すぎ

205デフォルトの名無しさん2016-02-26 12:58:45

>>202

CPU負荷とGPU負荷を分けて表示させない時点でお察しだろ

Vulkanは主にCPU負荷を減らす為のモンだからな、CPUがスカスカなゲームには効果無い

243デフォルトの名無しさん2016-04-19 07:54:33

etheriumで描画コモディティ先物市場まだできてねーのかよ

244デフォルトの名無しさん2016-04-22 20:03:01

>>243

IoTのメガトレンド化でこの業界にもおこぼれの資本が流れてきてほしいね

252デフォルトの名無しさん2016-05-24 07:23:41

openglで、3Dモデルの断面だけを表示したいのですが、

以下のやり方だと視点変更時にちらつきが起こってしまいます。

glClipPlane(GL_CLIP_PLANE0, 平面);

glClipPlane(GL_CLIP_PLANE1, 平面(逆向き));

ちらつきを回避する方法をご存じの方、いらっしゃるでしょうか。

0,1で指定する平面を少し離すとちらつきは起きなくなるのですが、

拡大すると幅が見えてしまうので、平面は(向き以外は)1つにしたい

と思っています。

257デフォルトの名無しさん2016-05-24 17:16:48

このクリッピングプレーンって

カメラ座標系らしいが

任意の傾きでクリッピングしてくれるんだろうか?

カメラ視線と平行でなくても良いなら

どういう仕組みだろうか

258デフォルトの名無しさん2016-05-24 23:13:35

C#で、OpenGLリソースの解放忘れても.NETのファイナライザで解放されるようにしたいのだが

調べていたらファイナライザは別スレッドで実行される仕様っぽい事が分かった

コンテキストを有効にできるのは1つのスレッドだけらしいから問題

ミューテックスをロック

コンテキストをMakeCurrent

OpenGLのコマンドを実行

MakeCurrentで現在有効なコンテキストをNULLに

ロック解除

これで何とかなる?

ただロックしたり、何度もMakeCurrent

したりするのは速度的にどうなんだろ

同じコンテキストなら平気?

コマンドをキューから取り出して消費するスレッドを作れば1スレッドでOpenGLコマンドを実行する事も可能かもしれないがそれは複雑そう

260デフォルトの名無しさん2016-05-25 07:55:57

>>252

縦横16倍で書いて、バイリニアで四回縮小するか256texelサンプルするシェーダで平均を取る。

>>257

面方程式が分からないなんて情けないこと言わないでくれよ。

>>258

消去リクエストキューとか作ればいいんじゃないの。

262デフォルトの名無しさん2016-05-25 15:27:31

>>260

じゃあ、その面方程式を書いてみてよ

263デフォルトの名無しさん2016-05-25 16:03:06

>>262

教えてくださいお願いしますだろ

266デフォルトの名無しさん2016-05-25 23:30:12

>>263

アホか、お前が知らなそうだから聞いてみたんだよ

図星だったんだなw

265デフォルトの名無しさん2016-05-25 16:42:46

方程式方程式うるせーな

その次のフェーズを言ってるんだよ

その方程式でポリゴンのクリップする境界を特定したとして

どうやってそれを描画するのかってこと

269デフォルトの名無しさん2016-05-26 15:31:01

>>265

デプスバッファとかアルファリファレンスで discard することを理解できるなら、面方程式でのクリップなんて、内積とって大小比較して discard するだけなんだから、分からない理由がわからない。

285デフォルトの名無しさん2016-06-03 20:26:38

OpenGL(ES)のバージョンを指定で使いたいんだけど、

getコンテキストなんたらで、バージョン指定すりゃいいの?

2.0指定してみたけど、読み出したら3.0になってるんだが・・・

286デフォルトの名無しさん2016-06-03 20:43:22

>>285

2のプログラムそのまま動くから3で問題ないよ

312デフォルトの名無しさん2016-07-06 12:27:48

OpenGLでガンヴァロウ

そんなAPIやってられん

315デフォルトの名無しさん2016-07-08 12:23:32

>>312

そのOpenGLの中身をVulkanにしよう動きが既に出ている

効率を上げないとしんどいインディーがすごく増えたし

スマホゲームにおいてVulkanを積極的にやらんとMetal持ってるiOSに負ける

317デフォルトの名無しさん2016-07-08 15:17:40

>>315

OpenGLをVulkanで実装したところで効率が良くなるとは思えんが…

むしろ間接的になるから効率は悪くなるだろ

OpenGLは仕様上色々ドライバがチェックすべき事が多いからDrawコールが重いんだろう

Vulkanで実装したところでやるべき事は一緒だ

388デフォルトの名無しさん2016-08-16 20:15:59

1から勉強する場合はDirectXとOpenGLとVulkan、どれがいいのん?

389デフォルトの名無しさん2016-08-16 20:50:06

>>388

DirectX(D3D11)安定

391デフォルトの名無しさん2016-08-16 21:45:25

>>389,389

レスありがとう

やっぱ日本語の情報が沢山ある方がやる気にも繋がるよね

393デフォルトの名無しさん2016-08-17 11:03:06

OpenGLとD3D9は古い手法が混ざっていて混乱の元

VulkanとD3D12は周辺知識が余計に要る

413デフォルトの名無しさん2016-09-07 08:27:53

ボードが既にスマホよりでかいのにな

419デフォルトの名無しさん2016-09-07 14:20:38

サルは「永遠」に人類を超えられない、と言ってる事が一緒だなw

サルには無事で人類にだけ感染する致命的な病気で人類が絶滅する可能性があったり

知能指数が低い子供しか生まれなくなる可能性もある

「永遠」とか簡単に言って納得してる奴ってプログラマとしては致命的だな

438デフォルトの名無しさん2016-10-02 01:29:36

馬鹿るん♪

439デフォルトの名無しさん2016-10-03 01:52:59

>>438

OpenGL1の赤本と同じだと思ってるお前の方がバカだろw

英語読めないのかよww

468デフォルトの名無しさん2016-11-02 12:27:09

少なくともスマホではvulkan使う価値ないみたいね

>以上を踏まえて,私が出した結論は「Vulkanは絶対に触るべきではない」です

wwwwww

496デフォルトの名無しさん2016-11-04 11:13:21

>>468

お前らが叩くから記事消えちゃったじゃん

478デフォルトの名無しさん2016-11-03 03:16:04

多分「低レベル」の意味を勘違いしてる素人

480デフォルトの名無しさん2016-11-03 03:23:08

>>478

なんだ、そういうことかw

ローレベルって言えば通じるのかな?日本語って難しいなw

499デフォルトの名無しさん2016-11-05 01:13:00

>>496

クソワロタww

消すような記事最初から書くなよw

530デフォルトの名無しさん2016-11-21 09:44:08

Deploying and developing royalty-free open standards on cross-platform technology for graphics, parallel computing, vision processing, and dynamic media

WebVulkanは出ないけど

Vulkanっぽい機能を追加したWebGL3は有り得る感じ?

534デフォルトの名無しさん2016-11-21 21:41:01

>>530

WebGL3があるならES4.0が実装されるはずだけどそもそもリリースされるのかね?

もはやES3.2で完成してんじゃないかとすら思えるけどね

535デフォルトの名無しさん2016-11-21 23:35:13

>>534

OpenGLそのままでもVulkanそのままでも無い何かが作られるなら

WebGL3って言い方は適切じゃなかったな

実装にはVulkan使えば良いだろう

536デフォルトの名無しさん2016-11-21 23:43:32

>>535

それ言ったらWindows版ブラウザのWebGL実装は全部DirectXを呼び出してるよ

それがVulkanになるのは時間の問題だろうね

WebGL→DirectXは右手系左手系とかシェーダーの違いとか苦労してるみたいだからVulkanの方が親和性は高いはず

上っ面のAPIはずっとWebGLのままだと思う

555デフォルトの名無しさん2017-01-18 21:02:08

>>536

横からだが、座標系の違いはシェーダ時代だと存在自体がユーザの好みじゃないかな

GLとXの座標系の違いは固定機能が原因で、

シェーダだと座標系変換行列が吸収する。

少なくとも、俺が書いたDirectXのシェーダは、右手座標のモデルを入力して実現できている。

632デフォルトの名無しさん2017-04-10 01:57:45

シェーダー使わんの?

633デフォルトの名無しさん2017-04-10 21:03:21

>>632

レス遅くなってすみません

シェーダー使うのもありですが、framebufferからreadpixelsする変わりにシェーダーで対応ってのがどうゆうことか理解できてません

とりあえずNDK側でガリガリ作った画をJava側に60fpsで渡す方法があれば何でも試します

649デフォルトの名無しさん2017-04-12 11:50:27

>>633

遅いのはJAVAとかNDKとか以前にreadpixelじゃないの?

650デフォルトの名無しさん2017-04-12 12:54:48

>>649

そうです。

その代替案を探してるだけなんですが、描画と処理のスレッド別なので、テスクチャIDやフレームバッファを共有できない(EGLコンテキスト共有できない)と思ってましたが方法ありそうですね

シェアする

  • このエントリーをはてなブックマークに追加

フォローする