OpenGL/Vulkanスレ Part22©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
クロスプラットフォームの3D API OpenGL 及び次世代のローレベルAPI Vulkan に関する話題を扱うスレッド。
現在の最新バージョンは4.5
https://www.opengl.org/
https://www.khronos.org/vulkan
== 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
http://peace.2ch.net/test/read.cgi/tech/1409581958/
== 関連スレ ==
【O3D】HTML5用 3D API WebGL 【Canvas:3D】
http://peace.2ch.net/test/read.cgi/tech/1308761577/
OpenGL 2.0 専用スレ
http://peace.2ch.net/test/read.cgi/tech/1126268759/ >>739
一行目必須、BOM禁止。コメント禁止だしね
それ以外もドライバ依存が激しい。
PS4やDSなんかのコンソールやiPhoneなら、それ以外がないから気にならないが
泥の現状はカオス、コキュートスモード 腹が立ってきた。
glはハードウェア実装に特化して作る方ほことを考えてないんだな。
directXが至高と思えてきた。
せめてカレントあたりについては、リファレンスも目的語か「どこに」を書けよ。 自己解決しました。
glGet(Uniform/Resoruce)Indexが返す値が"layout(binding = N)"のNと思い込んでいました。
プログラムオブジェクトに入力するパラメータは必ずバインドしないといけないと思い込んでおりました。
layout(binding = N) と glBindBufferBase(GL_UNIFORM_BUFFER, N, ubo);
が対になっていてglUniformBlockBinding呼ぶ必要ないと。
酒飲んでプログラムすると駄目だなぁ。 単位ベクトル同士の外積は単位ベクトルになるのかと思ってたら違ったでござるよ orz 全ての辺の長さが1の平行四辺形の面積は色々だからな。 |a||b|sinθ
だからな
角度によって面積はゼロに近づく #include <GLFW/glfw3.h>
int main() {
GLFWwindow *window;
if (!glfwInit())
return -1;
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
$ g++ -L/usr/local/lib -lglfw -framework OpenGL main.cpp
$ ./a.out
キタ━━━━(゚∀゚)━━━━!! ES3.2をJavaのみで書ききり、嫌になってバルカンに移行。
泥で触っているんだけど、かなりいいね。使いやすい。
ほとんどDX11と同じ感覚で使える。
バルカンは、普及する感じがした。 泥バルカン。
スワップチェイン、フレームバッファとサーフェスをコアダンプなしで通せたが、
いまだに残るパイプラインとシェーダ。
またまだ続く簡易フレームワークを作る作業。
現在のコード量。6000行 愚痴。バルカンネタ
ようやくディscripter、パイプラインあたりも実装が終わった。
今日あたりになんかのジオメトリを描画できそう。
残りは定数バッファへの値の流し込み。 Vulkanでジオメトリの描画成功記念カキコ
あっけなく描画できた。
Windowsで作った描画フレームワークのジオメトリがあっさり描けた。
ようやくスタートライん。 あっさり描画できましたか
あっさり描画できてよかったですね 最近のバージョンのAndroidはVulkan対応してるらしいけど
使ってるゲームってあるの? ないと思うよ。
2016年末に定まった規格だから対応機種は、その頃以降の機種になると思う。
というか、これからの規格ではないかと。
字形を描画する機能がない。 調べてきた。
APIレベル 23以降。泥6以降。
23以前もsoでどうこうは、恐らく、使えないことを確かめる手段の提供を以て対応の整理だろう。
泥6のシェアは、10%辺り。泥は4が今でも主軸のレガシィ 大事なことを書き忘れた。
スナップドラゴン、エクスペリアXZsでも
ジオメトリシェーダ ×
あとはわかるな OpenGLでもいいんやけどねぇ
OpenGLのどこがいかんのや Vulkanはドライバーが未成熟なせいで
OpenGL ES 3.1より遅いかもと
3DMarkのAndroid版のSling Shot Extremeの説明には書かれている >>765
何で一個人がデータセンターの心配してんの?
貧乏人はGeForce使ってればいいんだよ >>767
は?個人ならGeForce使ったって何の問題も無いんだよ
馬鹿も休み休み言え
ちょっとGeForce集めただけでデータセンター気取りかよw 貧乏人が深層学習やりたかったら、時間貸しのデータセンターしか満足できる速度で実行できないでしょ? 深窓学習は、昔のホストコンピューティンぐへの回帰現象かな
とりま、そこらのDCよりも京の方が安くつく、とすら感じる。
できることも占い程度。 >>762
時代遅れすぎる情報が未だにごされと紹介されている。
もうGLとdxの違いは、深度区画だけなんだから ちなみにGeForceをデータセンター云々の記述はアメリカのサイトには書いてない
だから海外では(今のところ)合法
日本にNVIDIAを激怒させるようなよっぽどの乞食が居たんだろうな
さくらインターネットか?迷惑な話だ その辺の事情がわからんのだが
具体的にさくらインターネットが何をしたん? ドライバに対するライセンス条項
No Datacenter Deployment.
データセンタに配布すんな
The SOFTWARE is not licensed for datacenter deployment,
繰り返すが、このソフトウェアは、データセンタへの配布をライセンスしてない、
except that blockchain processing in a datacenter is permitted.
しかし、データセンタにおけるブロックチェイン計算なら許してやるよ、こじきども(キャハ)
条項よりも、話題の論点がようわからん。 ちな、ブロックチェイン計算とは履歴みたいな奴。
具体的な実装でいえば、イーサリアルだかピットコインなんかが、それだったと思う。
何にしろ、確かにテスラを買わせる為の制限条項との指摘は理解できる。
もっともな指摘だなー、と。 ジオメトリシェーダーって性能が出ないとかで
いらない子扱いされてるらしいけど
なんで? Mayaって昔はQuadroでしか動作保証してなかった気がするけど、仕事で使わせるものには高いやつを売り付けるというNVIDIAの昔からの常套手段だな 1dテクスチャの使い方のサンプルはどこかにありませぬかあ
カラーマップで使いたいんだけど探してもなかなかヒットしませぬ
何卒。。。 テクスチャを作るときのフラグが違うだけだと思う。
シェーダからはUだけ指定。
使ったことないけど。
法線マップのアルファにカラーマスクを仕込んで使った方が立体的に色を当てられるような。
実行時に色を交換したいなら定数バッファにいれた方が楽に思う。 法線マップを圧縮しないならね。
2D ゲーム作ってる可能性もかなりあると思うけど。
定数バッファがいいかどうかは、複数のシェーダで使うのかどうかかな。 いやいやカラーマップ(パレット)って普通テクスチャ毎に必要でしょ
またはオブジェクト毎とか
要するにユーザーが服の色を指定するとかすると必要になる
シェーダー毎とか関係無い グレースケールでデザインさせて、配色をそのつぎに決めるとかなら、あるような。
14なんかはそんな感じにみえる。
あれはユーザが基本色を選べる。
配色数が少ないなら、全通りをテクスチャでもつとかできるかもだが、配色数が多いと読み込みも地獄なら、VRAM要求も地獄になる。
だからパレットだけを一次元でもつのだろうが、配色選択のためならば、やっぱり一次元じゃなく、二次元で持ちたくなると思う。
横に配色、縦にバリエーション(ユーザが選択する軸)と配列して。 0次元 テクスチャ使わないで単に色指定じゃ駄目なんかしら
1次元 線をテクスチャで使うってのは珍しいな 泥はとっくに対応済みなような。7以上だけど。
自分の端末で動かしたから間違いない。 あんま大したネタじゃないが、D3D12とvulkanに特徴的なのは
・DescripterSet
・パイプラインハンドル
・テクスチャロード手続き
・コマンドリスト
かな
一つを使い回さず、目的別に個別に作れと言われている気がした。
D3D9、11、GL、GLESと使ってきたけど、バルカンは使いやすく、GPUを理解しやすい。 ほぉ場合によってはMetalを他所のプラットホームに展開して世界征服なんてのも面白いと思うがそうきたか これ基本Metal APIへの変換レイヤーなだけで別にAppleは何もしてねえのでは Appleは何もしてないぞ
単にMetalのラッパーだな
しかしOpenGL使うよりはCPU負荷は減ると書いてある
知りたいのは直接Metalを使った場合よりどれぐらいオーバーヘッドがあるかだけど分からん バルカンに字形描画はない。
そこをどう折り合うのだろう Vulkanにフォント描画が無ければ実装しないだけじゃないか?
ゲームは普通APIに依存しない形でフォント描画を実装してると思うからそれほど重要ではない気がする ゲーム、動画再生のみバルカン
OS内部はESとvkのデゥアルスタックか。 Vulkanを使ってみたいけど、Amazonで本を探しても英語の本しか出てこないし、その英語の本もレビューを見ると今一だし、どうしたもんか... Vulkanは公式のC++ラッパーが有るのが助かる
これから日本語の書籍を書こうと思っている人は絶対C++11前提で書いてほしい
こんなとこで言っても無駄だろうが… いままで公式の出版物は良書だったからな今後に期待だね でもバルカン理解するには、GPUのアーキテクチャというか、描画パイプラインの知識が大前提な気がする。
簡単なフレームワークを書いたが、理解しにくいのは、
シェーダにポインタを与えるDscripterset
テクスチャロード
まんまパイプラインと名づけられたパイプラインハンドル周辺
テクスチャなんかは、何故、一度ステージにいれてからコマンド投げて転送するのか?
フォーマットをレイアウトする為だが、他のAPIだと透過的にできたことをやらされるので、ディスに使われると思う。 >>810
まあ、そのへんは慣れなんじゃないか?
OpenGL3.0系に初めて触ったとき、「これ使うのにソフトウェアでレンダリングエンジン書ける知識が必要じゃねえか」と衝撃を覚えたし openGLをなに入れればいいのかわからないよ〜、openGLって名前じゃないのもあるからわけわからないよ〜 そのレベルならJuliaとかPythonからglfwを使うのがよい C言語は知識あるからC言語でopenGL使うにはどうすればいいかなって聞こうと思ってたんだよ 諸事情でopenGL触らないといけなくなったんだけど全然分からない……
最終的にwindowsアプリ作るところまで持ってかなきゃいけないんだけど1週間位あーでもないこーでもないやってようやくウインドウに立体を表示させられるくらい
床井先生のところ参考にしたりしてるけど全然だめ。難しすぎないこれ。泣きそう そもそも1週間でマスターできると思ってたのかよ
コンピュータグラフィック舐めすぎだろ ごめん。マスターなんておこがましいことは考えてない。
ただこれまでの課題はそこそこ順調だったもんで急ブレーキになったもんだから
っていうかwindowsプログラミングの難しさもやっぱあんのかなこれ……openglの参考書写経してるときはほうほうなんて思いながらやれたりもするのに 今時のOpenGLを裸で叩いて立体の表示まで行ったのなら、あとはどうとでもなるような気がするが…
ワールド座標から同次行列使ってスクリーン座標にできてるし、シェーダーも動いてるってことだろ? OpenGLで2Dをするか3Dをするかで必要な数学の知識は変わってくる GLで混乱して挫折するのは、
頂点・索引配列絡みとカレントじゃないかな
プロセッサから毎回頂点要素(座標、法線なんか)を送り込む初期のGL方式が未だにWebには最新情報とアフィリエイトされているし。
Google先生もこれをオススメするしね。
あとはWebGLが曲者。
発展途上のAPIはDXのように丸ごと差し替えるのが正解なんだろう。
混乱のもと。 そうだ、ちらうら。
OpenGLとVulkanはデバイス座標系における正数方向の向きが違う。
なんとDirect3Dとも異なる第三の座標系
まあ射影行列の符号が変わるだけだが れんとうすまん。
Yを↓にしたのは、恐らくは、加速度センサーの符号を意識したIoT機器配慮の設計だと理解している。実際の趣旨はしらん。 >>826
主な理由は普通にコンピュータで扱う一般的な座標にあわせただけでしょ PSのコントローラーを箱で使えた時にPSの時と方向が逆転するって昔きたわ >>823
WebGLはまんまOpenGL ES2.0だし絶対に必要な環境
JavaScriptと若干のWebの知識が必要だけど1から3Dの勉強するには最も敷居が低い環境と言える >>826
しかも最後まで右手系のままで一貫してる
だからといって何かメリットがあるわけでもないだろうが 昔作ったopenGLのGLAUXで作ったコードはglutに書き換えた方が良い?今後参考にするためにもそっちの方が良い? >>821
同次行列って何?シェーダーってなんだっけ?レベルなのでお察しください
ファイルから座標読み込んできっちり画面内に収まるように表示させろとか、視点を3次元で回転させるとか、しかもそれをマウスで出来るようにしろとか、オブジェクト選択させろとか……
そもそもMFCすらよく分かんないからもう OpenGLとか低レベルのことは忘れて、ライブラリを使うべき 開発環境準備するの解らなくて、C言語でopenGL使ってしょぼいシューティングゲーム作ろうと思ってるんだけどなに入れた方が良い?
glutだけでいいの?>>1の全部入れておいた方が良い? >>823
さすがにVBOが主流になってから7-8年は経ってるけど、考えてみるとOpenGL3以降に対応した赤本ってまだ日本語版ないんだっけ?
というか、今のはどういう記述になってるんだろう
シェーダー前提の記述になると、三角形を表示するまでがけっこう遠いよな でかい本屋行ったり古本屋みたりして思ったんだけどさopenglって優しい参考書無いの辛い
例えばjavaとかcとかだったらそれこそ具体例なり比喩なりイラストなり駆使してステップバイステップで進めていけるような本いくらでもあるじゃない
もういきなり変換だのなんだの言われても何やってんのかまずそこから丁寧に説明しろやって思う
行列の話で込み入ったことになるというならもっとイメージをつかませてくれるというか…… >>838
日本語は少ないと感じた。
おれはバルカンで0から描画だけは、なんちゃってフレームワークを書き上げたから、GLには戻りたくない。
ジオメトリファイルを読み込むところからスキンメッシュ処理まではバルカンでできる。
今後の課題は、輪郭線の強調にタイムラインアニメーション。
バルカンは使いやすい。分かりやすい。 ■ このスレッドは過去ログ倉庫に格納されています