クロスプラットフォームの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/
探検
OpenGL/Vulkanスレ Part22©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/08/27(木) 18:12:51.54ID:VxmGCqDu
2015/08/27(木) 18:13:59.79ID:Ifj661nZ
== 必読書 ==
-- 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シリーズ
-- 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シリーズ
2015/08/27(木) 18:14:34.65ID:Ifj661nZ
== 必読書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/
-- モダンな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/
2015/08/27(木) 18:43:34.00ID:N4V/w5+H
2015/08/28(金) 00:40:51.72ID:J/FclS9C
今、点と線を描くプログラム↓を書いています
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[]内にある頂点データを使っていくつかの直線を描く関数を上のプログラムに追加したいのですが、どうすればいいでしょうか?
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[]内にある頂点データを使っていくつかの直線を描く関数を上のプログラムに追加したいのですが、どうすればいいでしょうか?
2015/08/28(金) 02:07:15.11ID:Ev5A+taN
>>1乙
2015/08/28(金) 11:34:06.01ID:1j3Jp4TC
>>1乙!
2015/08/28(金) 12:42:16.17ID:PU1M3ZK/
>>5
点のはちゃんと動いてんの?だったら9割方出来てんじゃん…
点のはちゃんと動いてんの?だったら9割方出来てんじゃん…
2015/08/28(金) 15:20:19.68ID:J/FclS9C
2015/08/28(金) 18:33:28.46ID:PU1M3ZK/
>>9
ほとんどエスパー状態だが…LINESとLINE_STRIPの区別できてる?
ほとんどエスパー状態だが…LINESとLINE_STRIPの区別できてる?
2015/08/28(金) 20:15:55.51ID:J/FclS9C
>>10
はい、繋がっていない線をいくつか描きたいのでLINESの方を使いたいです
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);
glVertexPointer(2, GL_DOUBLE, 0, line_data);
glDrawArrays(GL_LINES, 0, line_num);
glutSwapBuffers();
↑のように付け加えてみましたが、この書き方はだめなようです
直線を描くにはどういう書き方をすればいいのでしょう?
はい、繋がっていない線をいくつか描きたいのでLINESの方を使いたいです
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);
glVertexPointer(2, GL_DOUBLE, 0, line_data);
glDrawArrays(GL_LINES, 0, line_num);
glutSwapBuffers();
↑のように付け加えてみましたが、この書き方はだめなようです
直線を描くにはどういう書き方をすればいいのでしょう?
2015/08/28(金) 20:24:29.73ID:PU1M3ZK/
>>11
line_dataに2×線の数だけ座標が入ってるか?
line_dataに2×線の数だけ座標が入ってるか?
2015/08/28(金) 20:40:54.15ID:J/FclS9C
2015/09/03(木) 01:28:36.62ID:NZelf7lm
シェーダ初心者です
フラグメントシェーダで出力するベクトルはwが変わるとxyzにも影響が出るものでしょうか?
gl_FragData[2] = vec4( pos.xyz, w );
上のようにFBOを利用してテクスチャに座標情報を渡してみようと思い
フラグメントの出力に頂点シェーダから受け取ったポジションを渡して
余ったwに適当なデータを含めて試していたのですが
続く描画パスで出力結果のテクスチャを参照してwに触れずxyzのみ参照する場合でも
前の描画パスでwに設定した値が変わると最終的な描画結果が変わってしまうようで
シェーダの仕様かプログラムのバグかも分からず参ってます。
フラグメントシェーダで出力するベクトルはwが変わるとxyzにも影響が出るものでしょうか?
gl_FragData[2] = vec4( pos.xyz, w );
上のようにFBOを利用してテクスチャに座標情報を渡してみようと思い
フラグメントの出力に頂点シェーダから受け取ったポジションを渡して
余ったwに適当なデータを含めて試していたのですが
続く描画パスで出力結果のテクスチャを参照してwに触れずxyzのみ参照する場合でも
前の描画パスでwに設定した値が変わると最終的な描画結果が変わってしまうようで
シェーダの仕様かプログラムのバグかも分からず参ってます。
2015/09/03(木) 01:58:45.78ID:7WrobgbO
>>14
GL_BLENDがEnableになっててブレンドされてたりして
GL_BLENDがEnableになっててブレンドされてたりして
1614
2015/09/04(金) 01:06:59.54ID:WA4Vuouz2015/09/07(月) 23:59:15.25ID:zlL3a7qU
FBO使う場合にRBOかテクスチャか関連付けて使いますよね?
後から効果付けるの便利なのでテクスチャばかり使ってて
RBOってどういう時に使えばいいのか分からないのですが 上手い使い分け方とかあります?
後から効果付けるの便利なのでテクスチャばかり使ってて
RBOってどういう時に使えばいいのか分からないのですが 上手い使い分け方とかあります?
18デフォルトの名無しさん
2015/09/11(金) 11:35:53.77ID:fr07wZLl >>17
https://www.opengl.org/wiki/Renderbuffer_Object
今後描画結果をOpenGLで使うつもりがあるならテクスチャ
そうでなければレンダーバッファ
カラーにはテクスチャを使うが
デプスにはレンダーバッファを使う事なら普通にある
テクスチャはレンダーターゲットとして使うのには最適じゃない事があるかもしれないが
レンダーバッファはレンダーターゲットとして使うのに最適なものになっているという
https://www.opengl.org/wiki/Renderbuffer_Object
今後描画結果をOpenGLで使うつもりがあるならテクスチャ
そうでなければレンダーバッファ
カラーにはテクスチャを使うが
デプスにはレンダーバッファを使う事なら普通にある
テクスチャはレンダーターゲットとして使うのには最適じゃない事があるかもしれないが
レンダーバッファはレンダーターゲットとして使うのに最適なものになっているという
2015/09/11(金) 14:22:16.05ID:jg8fOB+V
デプスをテクスチャにするにはES2.0だと拡張機能が必要だな
20デフォルトの名無しさん
2015/09/12(土) 15:22:12.26ID:HMzU4nPJ Chrome 45.0.2454.85のANGLEを使うと
Intel HD Graphicsでだけテクスチャが変になるな
昔懐かしのR5G6B5の16bitカラーテクスチャみたいな色になる
44.0.2403.157だと普通
Intel HD Graphicsでだけテクスチャが変になるな
昔懐かしのR5G6B5の16bitカラーテクスチャみたいな色になる
44.0.2403.157だと普通
2015/09/14(月) 19:52:48.19ID:nW8KHDe7
スレタイにVulkanが入っているので質問したいのですが、
これから3Dグラフィックを独学で勉強し始める場合、
OpenGLをやった方がいいのでしょうか?それとも、
いきなりVulkanをやっても大丈夫でしょうか
別の言い方をすると、Vulkanというのは、OpenGLを使えることを
前提としているのでしょうか?それとも、新しいAPI体系なのでしょうか?
3Dグラフィックスの知識はありません。
学部レベルの数学は大丈夫です
これから3Dグラフィックを独学で勉強し始める場合、
OpenGLをやった方がいいのでしょうか?それとも、
いきなりVulkanをやっても大丈夫でしょうか
別の言い方をすると、Vulkanというのは、OpenGLを使えることを
前提としているのでしょうか?それとも、新しいAPI体系なのでしょうか?
3Dグラフィックスの知識はありません。
学部レベルの数学は大丈夫です
2015/09/14(月) 20:00:27.33ID:ni7Sx5as
Vulkanはまだ資料もすくないから必要がなければとっつくこともないかと
そもそお3Dの知識なしには多分キツイはず
OpenGLは覚えること多いけど、資料も多いから勉強するならこっち
そもそお3Dの知識なしには多分キツイはず
OpenGLは覚えること多いけど、資料も多いから勉強するならこっち
2015/09/14(月) 20:17:07.23ID:nW8KHDe7
2015/09/14(月) 20:36:34.75ID:AlOlEiNV
25デフォルトの名無しさん
2015/09/15(火) 23:37:01.54ID:iBP99bbY Vulkan対応ドライバやOSがまだそもそも出てなくね?
2015/09/16(水) 02:04:27.03ID:JciVp4Nw
仕様もまだ正式に出てない
2015/09/19(土) 18:56:08.54ID:YQpUAMED
製品出始めて暫くはドライバの問題で地獄だろうしな
特にモバイル
特にモバイル
2015/09/19(土) 20:00:14.04ID:DcCV9f4N
Vulkanは薄いレイヤーだからドライバに優しい仕様だ
OpenGLドライバよりは楽だろう
OpenGLドライバよりは楽だろう
2015/09/20(日) 10:17:29.98ID:ppyDSJna
その分ハードウェアの癖が出やすくなったりしないのかね
ま、どうせチューニングせざるを得ないなら薄いほうが良いな
ま、どうせチューニングせざるを得ないなら薄いほうが良いな
2015/09/20(日) 11:37:36.41ID:W0H8rt0f
OpenGL ESのドライバ実装の違いによる不具合ってどう言うのがあるんだろう
WindowsデスクトップではANGLEに違いを吸収してもらうとして
問題はスマホなんだが
この2つは知ってる
・iOSで勝手にミップマップ用のメモリを確保するバグがあったらしい
・NVIDIAだと他社ドライバではコンパイル出来ないGLSLのプログラムがコンパイル通る
iOS Textures Taking 33% Extra Memory - Stack Overflow
http://stackoverflow.com/questions/9438009/ios-textures-taking-33-extra-memory
>>29
OpenGLみたいにぶ厚い方が
ドライバ依存の部分が多くなって予測不可能な動作をしやすい気がするが
WindowsデスクトップではANGLEに違いを吸収してもらうとして
問題はスマホなんだが
この2つは知ってる
・iOSで勝手にミップマップ用のメモリを確保するバグがあったらしい
・NVIDIAだと他社ドライバではコンパイル出来ないGLSLのプログラムがコンパイル通る
iOS Textures Taking 33% Extra Memory - Stack Overflow
http://stackoverflow.com/questions/9438009/ios-textures-taking-33-extra-memory
>>29
OpenGLみたいにぶ厚い方が
ドライバ依存の部分が多くなって予測不可能な動作をしやすい気がするが
2015/09/20(日) 12:34:08.41ID:9sOZdp6w
異なるハードウェアの差異はOpenGLのレイヤーで吸収
それ以上に低層で扱いたい場合はVulkan
それ以上に低層で扱いたい場合はVulkan
2015/09/20(日) 14:57:05.05ID:LJD7mjJ9
>>30
自分が当たったのは
Adreno 205でdiscardの後にtexture使うとOSごとクラッシュ
Adreno320でUBOの変数をそのまま計算に使用するとshaderコンパイル時にアプリクラッシュ(なぜか一時変数に代入してから使用するとクラッシュしない)
Adrenoはエラーログ出さずにすぐ死ぬからマジでデバッグが地獄
しかも今Androidで一番使われてるシリーズ
ほかはここに色々
ttp://cpplover.blogspot.jp/2013/09/dolphinopengl.html?m=1
薄かろうがAdrenoがまともなドライバを作れるとは思えない
自分が当たったのは
Adreno 205でdiscardの後にtexture使うとOSごとクラッシュ
Adreno320でUBOの変数をそのまま計算に使用するとshaderコンパイル時にアプリクラッシュ(なぜか一時変数に代入してから使用するとクラッシュしない)
Adrenoはエラーログ出さずにすぐ死ぬからマジでデバッグが地獄
しかも今Androidで一番使われてるシリーズ
ほかはここに色々
ttp://cpplover.blogspot.jp/2013/09/dolphinopengl.html?m=1
薄かろうがAdrenoがまともなドライバを作れるとは思えない
2015/09/21(月) 00:42:42.41ID:Kj2opw9V
2015/09/21(月) 01:27:50.66ID:xJnGLVr2
2015/09/21(月) 06:53:50.45ID:14VyAGI9
2015/09/21(月) 19:09:44.31ID:0lL32CsL
しかもモバイルのドライバ更新されないからな
Nexus5使ってるけどOSの更新はされてるけどドライバのバグずっとそのまま
まぁ、AndroidはOSの更新すらされないデバイスだらけだから一部の端末だけ更新されて新たなバグ埋め込まれても困るけど
Nexus5使ってるけどOSの更新はされてるけどドライバのバグずっとそのまま
まぁ、AndroidはOSの更新すらされないデバイスだらけだから一部の端末だけ更新されて新たなバグ埋め込まれても困るけど
2015/09/22(火) 15:49:19.14ID:FtZHMHGY
Vulkanはドライバーがシェーダーをコンパイルする必要がないから
それだけでも安定性は増すはず
それとkhronos自体がデバッグしやすくする為のツールを作ったりしてるから期待できる
当然GPUの状態を取得する為のAPIも追加されてるはず
あとドライバがアプリが想定しているバージョンより古いと自動的にダウンロードして
更新するみたいな事をするとチラッと見た
それだけでも安定性は増すはず
それとkhronos自体がデバッグしやすくする為のツールを作ったりしてるから期待できる
当然GPUの状態を取得する為のAPIも追加されてるはず
あとドライバがアプリが想定しているバージョンより古いと自動的にダウンロードして
更新するみたいな事をするとチラッと見た
2015/09/24(木) 00:46:56.91ID:r/3RmciX
https://www.khronos.org/assets/uploads/developers/library/2015-cedec/Vulkan-CEDEC2015-DMP_Aug15.pdf
VulkanのOverviewが日本語に翻訳されてた
しかもVulkanAPIの解説付きだからこれでVulkanの全貌が把握出来る
VulkanのOverviewが日本語に翻訳されてた
しかもVulkanAPIの解説付きだからこれでVulkanの全貌が把握出来る
2015/09/24(木) 01:10:48.32ID:r/3RmciX
ドキュメント読むとハードルめちゃ高いなー
早くVulkanのプログラムしたいけどGPUも買い換えないといけないのかなぁ…
NVIDIAだけど既存のGPUもサポートしてくれる事を祈る
早くVulkanのプログラムしたいけどGPUも買い換えないといけないのかなぁ…
NVIDIAだけど既存のGPUもサポートしてくれる事を祈る
2015/09/24(木) 02:47:19.21ID:F12mSHo9
2015/09/24(木) 02:52:10.66ID:F12mSHo9
http://peace.2ch.net/test/read.cgi/tech/1440666771/38
38 名前:デフォルトの名無しさん[sage] 投稿日:2015/09/24(木) 00:46:56.91 ID:r/3RmciX [1/2]
https://www.khronos.org/assets/uploads/developers/library/2015-cedec/Vulkan-CEDEC2015-DMP_Aug15.pdf
VulkanのOverviewが日本語に翻訳されてた
しかもVulkanAPIの解説付きだからこれでVulkanの全貌が把握出来る
なんとなくVulkanもMaxwell2と相性悪そうな気がする
38 名前:デフォルトの名無しさん[sage] 投稿日:2015/09/24(木) 00:46:56.91 ID:r/3RmciX [1/2]
https://www.khronos.org/assets/uploads/developers/library/2015-cedec/Vulkan-CEDEC2015-DMP_Aug15.pdf
VulkanのOverviewが日本語に翻訳されてた
しかもVulkanAPIの解説付きだからこれでVulkanの全貌が把握出来る
なんとなくVulkanもMaxwell2と相性悪そうな気がする
2015/09/24(木) 02:52:42.00ID:F12mSHo9
誤爆
2015/09/27(日) 17:17:31.03ID:UvPGCZi1
テクスチャフォーマットについて
2Dで表示するものは各8bitのRGBA(アルファ不要ならRGB)
3Dや多少の見た目の劣化が許容できるものはDXT1,3,5
こんな感じの使い分けがベターだと思ってるんだけど
詳しく解説されてるの見たことがないのでより良い選択肢があれば教えて欲しい
2Dで表示するものは各8bitのRGBA(アルファ不要ならRGB)
3Dや多少の見た目の劣化が許容できるものはDXT1,3,5
こんな感じの使い分けがベターだと思ってるんだけど
詳しく解説されてるの見たことがないのでより良い選択肢があれば教えて欲しい
4443
2015/09/27(日) 17:20:16.60ID:UvPGCZi1 補足
動作環境はwindowsのデスクトップPCを想定してます
動作環境はwindowsのデスクトップPCを想定してます
2015/09/27(日) 23:51:56.33ID:hiI0CHA6
>>43
αの扱いによってDXT1〜5を選択するだけで素のRGBAは有り得ない
αの扱いによってDXT1〜5を選択するだけで素のRGBAは有り得ない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
