OpenGL 2.0 専用スレ
OpenGL 2.0 専用スレ。
ここでは、OpenGL の猛者のみが生き残る――― GLUIで日本語を使おうとすると痛い
GLUI便利そうなのに話題に上がんないね c#とopentkをはじめたのですが、チュートがほぼないですよね
外国語でもいいのでおすすめ教えてください
エディタはvs2017です ていうか OpenGL の2スレ目とかかと思ったら
マジで OpenGL 2.0 のスレかよ
たまげた そういや落ちたまま誰も立てなかったね。
OpenGL/Vulkanスレ Part22(c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1440666771/ OpenGLって文字表示できないのかとあきらめていたが
Canvas使えば簡単に表示できたのか
アホや opentkって情報ないんですが、どこ見ればいいですか(´;ω Android版3dMarkのVulkanスコア改善したってよ Windows環境ではVRAMにアクセスするには
WINAPIを通さないといけないと聞いたんだが
OpenGLもWINAPIを使ってるってことなんか? 乗算使うと白っぽくなっちゃうんですけど何とかなりませんか?
赤とか青にしたいんですけど >>782
カーネルをコールして、ドライバに処理をさせる、という意味では、
API呼び出しをしていると言えるけど…それは Direct X でも同じ 別にメインメモリにアクセスするのだってwin32通さないと出来ないがな OpenGL.dll とかの関数を呼ぶのは
ドライバを使ってると言えるのか
それとも Win32API を使ってると言うべきか ウディタみたいな2dエンジンにもopenglは使うんですか? 2Dの描画にOpenGL(or Direct3D)を直接使うのはAPIが複雑すぎるけど、それ以外にGPUを使う術がない
その代わりそれらをラップしたDirect2DやDXLibとか使えば良いと思うよ rpgみたいなピクセル絵を表示するだけでもopenglのようなものが必要なんですか?
プログラミング言語だけではできないんでしょうか 言語のデフォルトの機能だけではピクセル絵くらいのものということですよね >794
ピクセルが描ければポリゴンもベクタグラフィックスも描けますよ >>795
それはそうですけど、それがめんどうだからopenglがあるんですかね? >>796
OpenGLもめんどうだからいろんなライブラリがあるんですよ GLその他使わないで直接GPUいじって書いてもいいよ それが出来たらやりたいw
IntelはGPUの仕様を全て公開してるから出来なくはないけど容易じゃない… C++ を使っても綺麗にならない
C++ を使ってる意味が無い ねじれた四角形を使うのは良くないのでしょうか?
うまくシェダーできないと
どこかで見た記憶があります
でもどこで見たのか思い出せません
探して下さい
おながいしまつ シェーディングは出来るが、最終的には2つの三角形に分割されるが、それが2通りあって意図しない分割になる可能性があるってだけ GL_QUADS て廃止なったんじゃなかったっけ?
・・と思ってスレタイみたら OpenGL 2.0 専用スレだった・・なんてこった >>806
CW/CCW気にしない用途ならいけるが
裏で消えるのが困るとかなら無理
理由は >>807 さんの通り なるほど深いですね
だとすると四角形の表示速度は三角形2つ分の速度になるのかもしれませんね
無理に四角形を多用してポリゴン数を減らしても
あまり速度的には意味がないのかもしれませんね
四角を使うか三角を使うかは
作業的な部分で優先させるのが得策かもしれませんね
かもしれませんね つうかモデリングする人は普通に四角ポリゴンでデータを出力する
出力時点で三角に分割されるか、何らかのツールに通して分割するかは様々 なるほど深すぎますね
対策としては四角形を使うときは
どの三角形に分割されても形が変わらない四角形を使うべきですね
某ツールの隣り合う三角形を四角形にするは使わないほうがいいですね
ですね GL_POLYGON と GL_TRIANGLE_STRIP どっちが効率良いですか vulkanはジャップ版の解説書、刊行予定すらないのな
日本人はOpenGLやれってことなんだろうな GL2のスレみたいだけど他にないからGL4の話していい? OpenGL/Vulkanスレが無くなったからここが後継スレでいいんじゃない? WGL→WindowsのOpenGL用API
???→WindowsのVulkan用API for文内で値が連続的に増加していく変数xの値を連続的にテキストファイルもしくはエクセルに出力したいのですが方法がわかりません
どなたかアドバイスをお願いします テクスチャに文字フォント置いてxの内容をレンダしそれを
キャプチャした後OCRでテキスト変換してエクセルにコピペ汁 3つほど質問させてください
OpenGLで2D描画をしてますがピクセル座標を指定するには
i(0 〜 例えば639) → f(-1.0 〜 +1.0) を計算してglVertex2d(fx, fy)を使うのであってますか?他に良い方法がありますか
上のやりかただと環境(Windows10, Linux on VirtualBoxの違い)や描画対象(GL_POINTS, GL_LINES, GL_POLYGONの違い)で同じ座標を指定しても
描画されるピクセル座標がずれるのですが、どうやって処理するのが定番なんでしょうか
GL_POLYGONで画面に対して傾いていない四角形を描画した場合サイズが1ピクセル分小さくなったり
GL_LINESで終点が描画されないのは仕様でしょうか
以上、知っていたら教えて下さい >glVertex2d
使ったこと無いので憶測になるがこれを使用禁止にして
Z軸固定でいいから常に3次元指定すれば治るんじゃね
ドットが欠けるのは視点の角度や距離でなってるのか描
画指示が間違ってんのかGL仕様なのか
ズレてる状態じゃ検証も無理なので治ったら自分で考えて glVertex3d (z=0.0, +1.0, -1.0) で試してみましたが変化ありませんでした
一応、計算式はこんな感じです(yは左下ではなく左上を原点にするために符号を逆転しています)
●最初に試したもの、ポリゴンの配置が描画エリア中心で大きく歪む
fx = ((x / (double)(SCREEN_W - 1)) * 2.0) - 1.0
fy = -1.0 * (((y / (double)(SCREEN_H - 1)) * 2.0) - 1.0)
●上記歪みはなくなるが GL_POINTS GL_LINES で位置がずれる
fx = ((double)x - ((double)SCREEN_W / 2.0)) / ((double)SCREEN_W / 2.0)
fy = (((double)SCREEN_H - (double)y) - ((double)SCREEN_H / 2.0)) / ((double)SCREEN_H / 2.0)
●GL_POINTS GL_LINES の代わりに GL_POLYGON で位置がずれる
fx = ((double)x - ((double)SCREEN_W / 2.0)) / ((double)SCREEN_W / 2.0) + (1.0 / (double)SCREEN_W)
fy = (((double)SCREEN_H - (double)y) - ((double)SCREEN_H / 2.0)) / ((double)SCREEN_H / 2.0) - (1.0 / (double)SCREEN_H)
描画は glBegin(GL_POLYGON等) → glVertex[2d/3d](fx, fy [,0.0])… → glEnd() で特に奇をてらっていません
基本的な所なので初心者にありがちなミスかやってる人には常識のバグ・仕様があるかと尋ねてみたのですが
そうでもないようなのでおま環として自分で調べる事にします
ありがとうございました OpenGLのピクセルセンターは(0.5, 0.5)にあって、そこが含まれてないとピクセルが打ち込まれない
だから639みたいに指定しても最後のピクセルが描画されないのはそういうこと
しかしDirectXは(0, 0)なんでOpenGLをDirectXに変換して実行してるようなVirtualBoxは描画されたりするんじゃないの?知らんけど
方眼紙に三角形を書いてピクセルの真ん中を通っているかを確認してどうやって描画されるから予想したものと実際の描画結果を見比べて見れば勉強になるだろう 初期設定の不備でシステム別にデフォルト値の違いがあって表示が乱れてるって事じゃないの
おれスマホしかやらんからPCは判らんけど Desktop OpenGL 4.1 以降には OpenGL ES 互換モードがあるけど、実は、
OpenGL ES や WebGL の関数群は、Desktop OpenGL 1.0 には無かっただけで、
Desktop OpenGL 2.0 には全く同じものがあって、違いは、恐らく
Shader 言語 GLSL に厳密な互換性があるかどうかだけらしい。
厳密な互換性がない場合でも、基本的な互換性はあるように思える。知らないけど。 >>833
OpenGL 2.0 の、glVertexAttribIPointer, glUseProgram, glLinkProgram,
glCreateProgram, glBindBuffer, glBufferData などは、glext.h で宣言
されており、gl.h には入っていない。
Windows SDK 10 などには、gl.h の方しか入っていないので注意が必要。
cygwin の D:\cygwin\usr\include\w32api\GL
/usr/include/w32api/GL
には、gl.h, glu.h, glaux.h と共に glext.h も入っている。 >>834
結論的に言うと、OpenGL 1.2 以降は、拡張 OpenGL と呼ばれ、
Windows では、MSは原則的に公式サポートはしておらず、
nVidia, AMD(ATI), Intel などが主導して統一(ARB という組織?)された
規格なんだそうだ。なので、ドライバは各社のものを使う必要がある。
しかし、新品のパソコンやMotherBoardを買ってきたりした場合、
予めドライバがインストールされていたり、ドライバの光学メディア
が付いてくると思うのでドライバは改めてインストールする必要は無いようだ。
なお、MSも、wglGetProcAddress() という API はサポートしていて、
それを使うとそれらの関数アドレスを統一して取得することは出来るようになって
いるので、拡張 OpenGL を使い始めるのに各社各様の方法を使う必要はない。
なお、glew というフリーのライブラリがあり、それを使うと、
wglGetProcAddress() を使ってくれて、あたかも最初から、
拡張 OpenGL の関数群がライブラリ関数としてあったかのように
使うことが出来る。 >>831
OpenGL 1.0 では、ピクセルセンターの位置も変更できました。
拡張 OpenGL では分かりません。 >>835
補足すると、DirectXなどでも、ハードウェアに近いドライバは、
ハードウェア会社が用意していることが多い。しかし、DirectXの上位層
はMSが最初から用意している。なお、ドライバは層を成しており、
マザーボードとGPUの接続のためのドライバと、GPUのCoreUnit
を制御するためのドライバは別だったりするが、その話は置いておく
(もっと細かく分かれている可能性も有るが詳しくは分からない。)。
一方、OpenGLの場合は、上位層までハードウェアベンダーなどの
MS以外のサードパーティーが用意しているということ。ただし、
それだけだとアプリケーションからの呼び出しが余りにも不便になるので、
MS も wglGetProcAddress() だけは用意しているということになる。 OpenGLのバージョンがどんなに上がっても
1.0は使えるということでOK? Android kotlinでopenGL やろうとしてるんだけどcontextがViewのrendrereに渡せず四苦八苦しています
touch eventの情報は渡せたけど加速度センサーの値が渡せない
洋書でもいいので何か参考になる資料があれば教えてください 遅レスだが
うちの設計だがレンダラの管轄的に描画関連 頂点 テクスチャ 視点のみ持たせてる
タッチイベントやセンサーなんかはメインプログラムが持っていてそれらを渡すのではなく
逆にメインがレンダラの描画関連配列の参照をもらうだけにしてる 思ったよりVulkan普及しないね
OpenGL系はもうオワコンかな PCじゃともかくモバイルでは今のとこOpenGL以外選択肢ないから >>843
Mobileでは、3DといえばOpenGLだし、Webの3DであるところのWebGLも、
OpenGL ESとほぼ同じもので、OpenGL ESは、OpenGL 1.2 とほぼ同じ流儀。
なので、今は、OpenGL 1.2 と同じ書き方をしていれば、全てのプラットフォームで
グラフィックが描けるほど、OpenGLは、流行っている。
むしろ、Direct3Dの方が廃れていると言えるほど。 Vulkanとかボルツマンイニシアチブとか次々と矢継早に出てきたと思ったら急になにも動きが
なくなったね。AMDでもCUDA互換コードが動くとか期待してたんだが。
ありゃあ何だったんだろう。 >>847
それだよな、iOS対応が滞っちゃったのが一番の敗因だわ
Vulkan自体は面白いんだけどなぁ
なんでこんなクソ囲い込みOSが普及しちゃうんだksg >>849
別に負けてないぞ
iOSでもやりたいヤツはmetalもやれ!ってだけだろ >>849
普及した理由は、iOSだけは、ハードをAppleだけが出していて、
デバイスの形状や穴の位置が少数に限定されるため、デバイスの保護ケース(入れ物)
の選択肢が増え、女子高生達が欲しがるような「かわいいケース」
が使えることが一番大きいと見ている。
逆にAndroidデバイスでは、デバイスの形状がメーカーによってまちまちなため、
合うケースが機種ごとに分かれてしまうため、自分が持っている機種に対する
ケースは結果的に選択肢が少なくなってしまう。
そのため、女子高生が好むような「かわいいケース」が選べない事態となっている。
iPhoneの場合は、アリエルが背面に描かれたケースを友達が持っているとする。
それと同じものが、Androidでは似たものはあっても、デザインの品質が
悪かったりする。または、良いものが有ったとしても、たまたま自分の
持っているデバイスには形状が合わなかたりする。
店に行ったとしよう。iOS用のケースは、40種類置いてあるとする。Androidの
場合は、メーカーが10有るので、1つのメーカーでは、4つしか選択肢がない。 openGLってほんと今後どうなる?
Appleだけが非推奨にしたからといって消えるものでもないだろうけど M1MacでもまだOpenGL使えるらしい
もし使えなくなっても、MetalやVulkan上で動かすライブラリが有るから何も気にしないでいい
ほぼ永久に使える
ただ、最高性能を引き出すことは出来ないけどね 普通に考えるとそうなんだが、アップルはキチガイだから
ときどき囲い込みを完成するために急にえげつない施策をやってくるから要注意
たとえばMetalを使うアプリには特別に審査が必要、としておいて審査でOpenGLの
ラッパーつかってるものは全部リジェクトする、とかね それは無理だろう
スタティックリンクすれば始めからMetal使ってるものとの区別がつかない 過去にMetalラッパーが非公式API使ってたからラッパー使ってるとリジェクト!
ってのはあったけどまあちょっと違う話ではあるかな
とはいえ実際にサード製のラッパーでしか動かせなくなったら
何も気にしなくていいって言えるほど安心はできないけどね Appleが使わないのはどうでもいいけど
M1で使えないってなったら困るかもな いまさらopenGLはじめました
100個くらい同じ三角形を表示させると落ちる、、、
書き方なんだろうけど頑張ります 動かさず並べるだけなら余裕で1000個表示できた
移動させるときの変数の扱い方が悪いみたいだな…
Array使って中の変数の数値変えてるだけなんだけど
もう少し精進してみます その程度で落ちることは無いと思う
書き方が悪いとしたら
メモリリークかな 1回だけでいい処理を繰り返し実行してるかもしれない
毎回bufferを生成してるとか >>861
あ、それやっちゃってます…
三角形描く関数の中でバッファ作ってて、表示位置変えてその関数を何度も実行させて処理してますね…
見直ししてみます
ありがとです GLのBufferはサイズが不定だから最初ちょっと引っ掛かった
最大サイズが決まってる箱じゃなくて紙を好きなだけ挟めるファイル(バインダー)を
イメージするといいかもしれない androidのopenGL ESやってるけど
5年くらい前の機種だとメモリなのかCPUなのかとにかく足らない android 5.0 使ってる人まだまだいるのよ メモリーリークはどこかしらコードが間違ってる可能性高いよ
例えばglDelete忘れてるとかありがち カメラの位置 gluLookAt なんだけど
視点から注視点と、視点から頭の方向の2つのベクトルは直行してなくてもいいんだよね?