OpenGL 2.0 専用スレ
OpenGL 2.0 専用スレ。
ここでは、OpenGL の猛者のみが生き残る――― OpenGLnのmain関数をスレッドで呼び出して使おうと思っているのだが、display()関数のオブジェクトカラーを引数で渡した値で更新したいんだ。
マルチスレッドで値を渡すことはできるのだが、OpenGL側でどうやって、display()関数に値を綿したらいいのかわらかない。
つまり、
プログラム1 --> OpenGLプログラム(スレッドで生成)
▼ ▼
値の更新 色変更
▼ ▼
値の更新 色変更
… …
ってことをしたいんだ。 glRotatef(90,1,0,0);
glutSolidCube(1.0);
このあとに
glTranslatefかglrotatefを適当にいれて
glSolidSphere(1.0,10,10);
より立方体の回転起動に垂直の起動で球が回転するようにするには
どうやればいいですか? glRotatefとglTranslatefを組み合わせてx軸周りの回転移動をy軸周りの回転に
させることはできますか?
glPopMatrix()とglPushMatrix()を使わないで GLSLで色を出力するとき、というか、OpenGLの質問なんですが、
OpenGLでは各色の値の範囲が0〜1ですが、これってGDI上での0〜255の範囲に
リニアに一致する訳じゃないのでしょうか?
256*256のコンテキストを作り、全面ぴったりのポリゴンを張って、フラグメントシェーダーから
gl_FragColor = vec4(gl_TexCoord[0].s, gl_TexCoord[0].s, gl_TexCoord[0].s, gl_TexCoord[0].t);
として色とアルファの増え方を見てみたのですが、どうもジャギっててきれいに0〜255の範囲で
増えてるわけではないみたいなのですが…
コンテキストと同じサイズのGL_NEARESTなテクスチャを張った場合はちゃんと256*256の範囲
全体が張られているのでテクスチャ座標がずれてるわけでもないみたいです。 あだ、ここGL "2.0"スレだった orz
GLスレの方に行ってきます orz
スレ汚しすみませんでした… DirectX ばっかりで OpenGL なんて一生触ることは無いと思ってたが
Linux絡みでJOGLで開発することになった
調べてみたら、OpenGL も色々面白そうだな 名前が違うだけで、実行するハードウェアの中身に対するフォーマットは一緒だからな。 OpenGL Vertex Buffer Objectについての質問があります。
glBufferData()で,頂点データをグラフィックボードのメモリに転送(確保?)した後,
プログラム側の頂点データが更新されたとします。
この更新された頂点データを,グラフィックボードのメモリに転送するわけですが,どのようにすればよいのでしょうか?
いったんglDeleteBuffer()でバッファを消して,新たにバッファを作成し,glBufferData()で転送しなおすのでしょうか?
それとも,既に確保されている領域に上書きするような方法があるのでしょうか?
・glBufferDataでもう一回転送する
・glMapBufferでDMA転送する
・glMapBufferRangeで更新が必要な部分だけDMA転送する
・いっそデータの更新をCPU側でなくTransform Feedbackを使ってGPU側で行う glTexSubImage()でテクスチャの一部を書き換えられるのと同じように、
VBOにも glBufferSubData() があるよ。 書き忘れ。
Buffer全体を書き換えたい、あるいはBufferのサイズを変えたいなら、
わざわざDeleteしなくても、普通に glBufferData() で上書きしてやればいいよ。
これも考え方はテクスチャと同じ。サイズが変わるとパフォーマンスは落ちるでしょうね。 なるほど。色々な手段があるのですね。
ありがとうございました。 例えば、direct x使ったPCゲームで全画面表示に切り替わるけど、
openglでも同じことできる?
シミュレータが作りたいんだけど。 最近は、アフィン変換はつかわずにクォータニオンってのが主流なの? 試しにZ軸によるs度の回転(右手座標系)を計算してみたら
sin(s)*y-2*(x/2-(cos(s)*x)/2)+x,-2*(y/2-(cos(s)*y)/2)+y-sin(s)*x
簡約すると
x' = sin(s)*y+cos(s)*x
y' = cos(s)*y-sin(s)*x
z' = z
となって普通の回転行列の計算と同じになた
普通に軸にそって回転するだけなら
通常の回転行列を使う方が良いのかな 軸まわりの回転ならsin、cosの手計算でもいいと思うが、任意の軸まわり回転をオイラー角でやるとジンバルロックっていう問題が出てくる。
あとクォータニオンを使う一番のメリットは2つの回転位置の補完を球面線形補完による演算で求められることじゃないかと思う。 いまさらopen glとかVRMLとか意味あるの? OpenGLとVRMLを並列で語るとか意味あるの? VRMLは後継が出てたはずだよね、名前忘れたけど
まあ今更OpenGLとかDirect3Dとか言っても意味ないわな
中身ほとんどいっしょだし 流れとはまったく関係ないどころかスレとも関係ないが
PowerVRがなんだかんだでまた注目されつつあるな その PowerVR について質問させて下さい。
iPhone3GS や iPod touch 3G で使われているらしい PowerVR SGX を内蔵し、
Vaio Type P や Dell Inspiron Mini 10/12 等のネットブックで採用されている
intel GMA500 ですが、
カタログスペック上は OpenGL2.0 対応を謳っているものの、Windows XP/Vista 上では
glGetString(GL_VENDER) が Microsoft、
glGetString(GL_RENDERER) が GDI Generic、
glGetString(GL_VERSION) が 1.1.0 を返してきます。
Intel で配布されている開発者向けの 2009/9/13 時点の最新ドライバを入れても同じです。
Vista 32bit 用: ttp://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17995&lang=jpn
XP 32bit用: ttp://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17992&lang=jpn
http://software.intel.com/en-us/blogs/2008/10/22/where-can-you-find-a-mid/
こちらの阿鼻叫喚スレのように、GMA500 での Windows 向けドライバによる
OpenGL2.0 サポートは「ない」と言うしかないのでしょうか…。
また、今後のサポート予定について事情をどなたかご存知でしたら教えて頂けると嬉しいです。 ちゃんとOpenGLのコンテキストを設定した後でglGetStringを実行してるんだろうな?
GDI Genericじゃ2.0以前にソフトウェアレンダリングだぞ。 >>663
はい、ChoosePixelFormat(), SetPixelFormat(), wglCreateContext(), wglMakeCurrent() が
成功したことを確認してから glGetString() を実行しています。
(しないと手元の環境では NULL が返ってきました)
ttp://udetaco.ddo.jp/OpenGL-desktop-overlay-test/
VisualStudio2005用プロジェクト一式とバイナリをこちらに置いてみましたので、
ご確認頂ければ幸いです。
testDesktopOverlay-20090913.7z を解凍した後、
testDesktopOverlay\application\RetrieveOpenGLInfo.cpp 内の
RetrieveOpenGLInfo::retrieve() をご覧下さい。
glInfo.exeとかでチェックしても、GMA500はGDI Genericを返すよね・・・ オンボーロどころかまともな素材をダメにするとは・・・Intel始まりすぎだろ。 GMA500はタイミングによってはテクスチャのバインドに失敗する
(glBindTextureが正常に動かない)こともあったりして、最悪だよ。
OpenGL2.0サポート?無理無理。
あれはOpenGL1.1すらまともにサポートできてない。 ttp://www.gamedev.net/community/forums/topic.asp?topic_id=545140
こちらでも OpenGL 開発を期待して netbook を買った人が
ドライバの GL 未サポートに怒ってる模様…。
>>667
glGetString(GL_RENDERER) は GDI Generic よりマシな名前を返してきますか?
Mac OS Xでやってる方はいらっしゃいませんでしょうか?
テクスチャの扱いが違っていて困っています。 自己解決しました。
非2^nサイズのテクスチャの生成に
GL_TEXTURE_RECTANGLE_EXT
を使っていたのですが、これを使うとだめだったようです。 >>671
2.0以降なら2^nでなくても良かったような。
GL_TEXTURE_RECTANGLE_EXT はMIPMAP生成出来ないから
GL_TEXTURE_MIN_FILTER を GL_NEAREST にしないと駄目だったような。 OpenGL 3.2はやんないの?
機能省略かれちゃった奴 3.2はどっちかというと省かれるはずだったのが戻ってきちゃったんじゃないか? ですな。非推奨だが互換性を確保した、というような趣旨のアップデート。 >>675
考えて見れば、三角形一枚書くのにシェーダ書いてVBO作って…じゃ、
CG屋やゲーム屋以外の、「単に可視化プログラムを書きたい研究者や技術者」が
使わなくなってしまうからなあ。
自分もそのタイプのプログラマなんだが、OpenGLはそういう方面の需要がDirectXに比べて大きいと思う。 「単に可視化プログラムを書きたい研究者や技術者」
はopenGLを直接使わずにハイレベルなライブラリ(open scene graph等)を使えばええんでない?
Compatibility Profilesは古いコードを使うためとか
openglを勉強し直すのが面倒な人とかのためにあるんじゃないだろうか。 最近OpenSceneGraphさわり始めたけど、ホントGLUTとかで遊んでた全てが無駄に見えてきたよ。 OpenSceneGraphによる「手抜き」OpenGL入門
が必要になるな OpenGLで図を作成して、latexの論文に導入したい者ですが、質問よろしいでしょうか?
GL2PSというものを用いて、epsで図を出力することには成功したのですが、
文字列も一緒に描画したいと思い、gl2psTextという関数をつかってみたところ、
フォントがしょぼくて、論文に用いるには抵抗があります。
Times New Roman で文字列を描画したいのですが、どなたか解決法をご存知ないでしょうか?
GL2PSがマイナーなのか、ぐぐっても中々情報が出てきません。
よろしくお願いします。 サーセン。自己解決しました
GLint gl2psText( const char *string, const char *fontname, GLint fontsize );
が宣言なので、
GLint gl2psText( "X", "Times-Roman", 24 );
みたいに使うみたいです。
なんでDirectX使わないの?
このスレの人たちは何をターゲットにしてる人なの? Direct3DはWindows以外だと使えないからなあ
Windowsでしかプログラミングしないぜってなら別にいいんだが gles2.0で
glPushMatrixやると落ちるんだけど
なくなったの? うん、無いよ
標準の行列自体が無いから全部シェーダのuniform変数に渡して使う すみません、OpenGL(GLSL)のシェーダプログラムの質問したいのですが、ここでしても良いですか? objファイルを読み込んで使いたいのですが、
自分でライブラリ書くしかないのでしょうか・・? objローダはもう3回くらい書いたなぁ・・・
パーサ部分はまぁ再利用できるとしても、読込先が変わると、ね。 どうしてる?といいますと?
普通に、mtlファイルも読んどりますよ。 俺はめんどくせぇと思ってモデルだけ
読み込んでほったらかしてるわ・・・。
そのあたりもきっちりしとかんとなぁ。 用途によっては放ったらかしでも良いと思うけど、
マテリアルもテクスチャも適用した方がモチベーション上がるよね。
ていうかmtlの読み込みよりテクスチャ画像の読み込みの方がメンドクサイ。 AMD(AMD RADEON HD6xx0/HD5xx0)
OpenGL4.1 DirectX11
NVIDIA(NVIDIA GeForce 5xx/4xx)
OpenGL4.1 DirectX11
S3(S3 Chrome 5400E)
OpenGL3.1 DirectX10.1
(intel HD graphics 3000/2000)
Intel OpenGL3.0 DirectX10.1
Matrox(Matrox M-Series)
OpenGL2.0 DirectX9c
3Dlabs(Wildcat Realizm)
OpenGL2.0 DirectX9
XGI(Volari XP10)
OpenGL1.5 DirectX9
androidプログラムのスレで惨敗したので、こちらでも質問させて下さい
Android(OS 2.3)のjavaで直接OpenGL ES 2.0を使おうと思ってます。
しかし、javaではポインタと言う概念がないのでAPIの引数が微妙にAndroid専用になっています。
(配列の先頭アドレスが引数だと、javaのBufferObjectに変わってる等)
で、普通にC++/ARM/PowerVR SGX環境で動いていたコードの一部を移植したのですが
(2Dシェーダーで、頂点とカラーだけでポリゴン描画)
頂点とカラー情報のメモリをズレて使用されている感じです
で、答えは自分で解決したいのですが、参考になるサイトが全然見つかりません
Android Developers の公式でさえAIPの定義をただ羅列しているだけで
Androidがラッパーしている部分の解説がありません
英語でも良いので、javaでOpenGL ES 2.0(NDKでJNIを使わない)を説明してるサイトを知ってる方いませんか?
こっちはあまり活発じゃないのでこっちにいきな。
OpenGLスレ Part17
ttp://hibari.2ch.net/test/read.cgi/tech/1321350331/
>>700
Androidのことはよく知らないんですが、
http://developer.android.com/reference/android/opengl/GLES20.html
とか見ると、BufferObjectってのはjava.nio.Bufferのことかと思いますけど、
byte[] b = new byte[n];
// bの内容を設定する。
ByteBuffer bb = ByteBuffer.wrap(b);
とかしたのを渡したらダメなんですか?
私はJOGLでそんな感じでやってます。 ByteBufferで書くよりFloatBufferで書いた方が良かったか。
まあちょっとエスパーしてみると、頂点とカラーを同じ配列に入れてるなら、
Bufferのpositionを適切に設定してsliceしないとズレるかもね。 あとはマイクロソフトがWebGLをサポートしてくれればな・・・
今までも、そしてこれからも、ブラウザシェアはIEがトップだろうし。
まあ、無理っぽいけどさ。 冒険しないからこその価値もあるんだよ
IEはただのブラウザじゃなくて膨大な業務クライアントを動かす超重要なプラットフォームなんだから もうOpenGL 4まで出てるだろうにいつまで2.0スレなんだろうか。
次スレは3.0になるわけ? 2.0専用スレなんだから
3とか4とかは別途立てればいいんじゃね
需要があるかどうかは知らんがw SL#(えすえるしゃーぷ)とは、GPUで実行されるプログラマブルシェーダーを、超高級言語である
C#で書けてしまうという夢のようなオープンソースのフレームワークである。
http://monobook.org/wiki/SL_Sharp 8年経ってもスレが生き延びスレタイ変更機能もつかないまま
などという簡単なことすら予想できない無能 それが >>1 流石に2005年から今まで続くとは予想外だったんだろうなぁ
逆にもっと前のGL1.1なら、WindowsSDK付属のだけでやり続けるスレになってたんだろうが… Windowsに標準で入っているOpenGLのバージョンっていくつなの NHK提携シークレットサロン
NHK提携シークレットサロン
NHK提携シークレットサロン >大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。
島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて廃人になってしもうた僕が言うんやから、
まちがいないで。僕のほかにも、イジメが原因で精神病になったりひきこもりになったりした子が何人もおる。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。イジメに加担する教師すらおった。
誰かがイジメを苦にして自殺しても、「本校にイジメはなかった」と言うて逃げるんやろうなあ。
島本町の学校の関係者は、僕を捜し出して口封じをするな
子供の時に受けた酷いイジメの体験は、一生癒えない深い傷になる
「暴力とイジメと口裏合わせと口封じ」の町やそういう町に巣食うヤクザ・チンピラ・ゴロツキ・不良・
いじめっ子・殺人鬼・ダニ・ノミ・シラミなどを監視して非難するのは暮らしやすい町を作るのに必要だ OpenGL ES 3.0の一部機能をES2.0だけで再現する互換レイヤーってもう作られてない?
サンプラーオブジェクトとか、オーバーヘッドを気にしなければES2でも再現できそうではある。
Regalっていうライブラリがかつて開発されたいようだが、もう見捨てられていた