OpenGL/Vulkanスレ Part23
クロスプラットフォームの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/Vulkanスレ Part22
https://mevius.5ch.net/test/read.cgi/tech/1440666771/
== 関連スレ ==
【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について質問したかったのですがスレが無かったので立てました。 早速質問ですが、
OpenGLを使いたいのですが、お勧めの書籍はありますでしょうか。
やりたいことは、C++から出力した3Dデータ(頂点座標と色情報)を表示することです。
GUIと3D表示は同じウィンドウ上に配置したいと思っています。
マウスで回転や拡大縮小、指定したオブジェクトを半透明化などの機能も必要です。
例えばですが、↓のサイトのような表示です。
https://3d-cad.tokyo/strength
プラットフォームはWindowsです。 今からOpenGLを始めるなら、GLFWを使うのが良さそうだと思っています。
GLFWで3D表示と同一ウィンドウに、Windowsの標準コントロール(ボタンやテキストボックス)を
表示することは可能ですか? >>7
>>3
GLFWも古いからお薦めはしないが
標準とはちょっと違うが
そういう用途なら
wxWidgetsとwxGLが楽
wxGLでもGLFW使えたと思う >>8
返信ありがとうございます。
GLFWは、2022年7月が最新版で、
バージョン3.4が開発中みたいですが、古いのですか?
日本語の書籍がほしかったのですが、
一応英語のGLFWの書籍が売っていたのでこれを買ってやってみようと考えています。
https://www.perlego.com/book/800672/learn-opengl-beginners-guide-to-3d-rendering-and-game-development-with-opengl-and-c-pdf
wxWidgetsは調べてみたのですが、3Dというより、
マルチプラットフォームで2Dグラフィックを扱うのがメインの目的みたいな気がしています。
マルチプラットフォームは考えていないので、GUIはWindows APIの
CreateWindow関数で配置できれば良いと考えていました。
GUIの作成は、専用エディタを使う人が多いみたいですが、
自分は、普段、手入力でCreateWindowに座標を指定して行っていました。
DirectX 9で2Dポリゴン表示+CreateWindowでGUI表示はやったことがあります。 初心者なのですがモデリングツールみたいにポリゴンの頂点を選択して移動するみたいな処理にOpenGLとかVulkanとかって関係ありますか?
OpenGLもVulkanもDXも外部からのモデルを表示するとかチュートリアルでかなり見ますが頂点をクリックして移動するみたいな例がないように思いまして… OpenGLやVulkanは描画するだけだからね。モデルの頂点の編集とかは普通のGUIの知識との組み合わせ。 >>12
なるほどサンキューです
なんかそういうサンプルコード乗ってるサイトや教本なんかご存知でしょうか? 失礼を承知でお伺いします
WinUI3やWPFにOpenGLのビューを埋め込んだユーザーコントロールを作りたいのですがやり方が全くわかりません
https://github.com/dotnet/Silk.NET/discussions/1330
OpenGLContextやGetProcAdress関数が理解できれば簡単と言われたのですが…
サンプルが無いのでどう使えばいいのかさえわかりません… >>14
>OpenGLContextやGetProcAdress関数が理解できれば簡単
理解しろ このスレ立てたのも質問してるのも MAUI H S かω >>15
理解したらわかりますか?
ちなみに理解できません GL_LINE_STRIP を複数回実行して線を描画していて遅いのですが、
GL_LINE_STRIP 複数回分を1回の描画命令で実行するようなことはできませんか >>22
glPrimitiveRestartIndex OpenGL4ですかね。1.0で何とかなりませんか OpenGL3だったと思う。
OpenGL1.0に効率的に命令を実行する機能はあまり無かった気がする。
display listぐらいはあったかも。
てか何でOpenGL1.0限定なの?
OpenGL3がでてからもう十年以上経ってるし。 最近勉強し出して0からOpenGLを生で触ってスマホアプリ作ってます
シェーダー難しいです
とりあえず、GL_LINE_STRIPを諦めてGL_LINESでやるしか手がなさそうです。与える座標の数は倍になりますが。。 GL_LINESで描画すると線と線の間が空いてギザギザになったり
太さが一定でなかったりしているんですがどうしたらいいですか
GL_LINE_SMOOTHとかは一通り設定してます
OPENGLのバージョンを上げると良い感じになるのでしょうか >>27
OpenGL1.0だとシェーダが動かないしスマホで対応している機種もあんまりないだろ。
推測だがOpenGLとOpenGL ESっていう異なる規格を勘違いしてそう。
ラインがギザギザなのはピクセルという格子状のものに単色で線を描こうとしているから。
滑らかに描画する方法はMSAAとかいろいろあるが"opengl antialiassing multisampling"で検索してよさそうな方法を使えばいいと思うよ。 すいません。OpenGL ES 1.0 でした。antialiasing調べてみます OpenGL ES1.0と2.0を混在させることはできますか
例えば画像は1.0で描画してLINEは2.0で描画する
それができれば段階的に移行ができるので助かります OpenGL ES 2.0の中に1.0のAPIも含まれているんじゃないの? 画像の描画が遅いのですが画像一枚につき glDrawArrays するのではなくて複数画像を一度の描画命令で描画することは出来ますか 無理
テクスチャアトラスでクグレ
っていうかドローコールを何回してんの?
GLESのドローコールはそんなに重くないから、余程の回数じゃないと重いとは感じないぞ 一枚の大きな画像に全部の画像を詰め込んで切り出して使う感じですね
ただ、作ろうとしているものがアプリ起動後に動的に画像を取得してきて描画する感じなのでちょっと使いにくいかもですね
100個くらい同時に描画する感じですね precision highp float;
と書くと精度が上がるようなのですが
glUniform1f()する時にtoFloat()してから渡すので結局意味無い気がするのですが
doubleは渡せませんか >>35
ロード時にテクスチャアトラスを作るしかないな
それかちょっとずつ画像を表示していくしかないな
ちょっとずつ表示されるのとか見たことあるだろう
そんな感じだ 一旦画像を描画した後、再描画することなくドラッグで表示位置を移動させることって可能ですか ETC1が良さそうなのですが実行時にプログラムでpngから変換することはできますかAndroidです AndroidのOpenGL ES2.0でGL_LINE_STRIPで線を引くと斜めの時だけ線が細くなっている気がします。どうしたらいいですか