OpenGL vs Direct3D
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG速度・書きやすさの面でどっちが良いのでしょうか?
0002
NGNG最新の機能を使いたいならDX
汎用性ならOpenGL
ラッパー作って両方対応しとけ
0003デフォルトの名無しさん
NGNG0004ラッパのマークの正露丸
NGNGてってけてって、てってけてって、てーれれれ、てってって。
0005デフォルトの名無しさん
NGNGゲーム以外の3D作るならOpenGLの方が良い?
>>2の言う汎用性って?
0006デフォルトの名無しさん
NGNGDirectXは基本的にWindowsのみだからねぇ。
OpenGLはUnix環境などでも使える。
Direct3DとOpenGLは大差ないけど、DirectXは
サウンド、入力、ネットワークもサポートしているので
ゲーム作るならDirectXが無難かも。
0007デフォルトの名無しさん
NGNGあれ、DirectX じゃなくて、Direct3Dの話をしているんじゃないの?
0008デフォルトの名無しさん
NGNG汎用性を持たせるのって無駄なんじゃないか?
パフォーマンスでないし。疲れるし。くたびれるし。
まあ、そういうのが求められる仕事があるのはわかるけど。
0009デフォルトの名無しさん
NGNGその点は、Direct3Dの方がいいかな。
OpenGLの豊富なサンプルが、
日本語コメント付きで有るといいなぁ〜
0010デフォルトの名無しさん
NGNGDirect3Dの情報はゲーム関係ばっかりでちょっと萎える。
0011デフォルトの名無しさん
NGNGまあ、元々DirectXがゲームの為の物でしたからね。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGまあ、汎用性をもたせるってそーゆーことなのかもしれんね。
0016デフォルトの名無しさん
NGNG最近のビデオカードなら、まともに対応しているものが多いので、
一概には比較できないけど、動作速度はDirect3Dとたいして変わりません。
0017デフォルトの名無しさん
NGNGなんで遅かったのかひたすら疑問だったけどね。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG野外露出オナニーショーするならDirect3D
0020デフォルトの名無しさん
NGNGdietrich派ならd3d
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG00241
NGNGなんかDirectXはすごっくめんどくさいのですが、
あれって生産性の面でどうなのでしょうか?
自分はゲームプログラマじゃない、
普通のサラリーマンプログラマなので、
GLにしようかなと思ってます。
GLの方がとっつき易いです。
0025デフォルトの名無しさん
NGNG8になって簡単になった、と言っても敷居は高いよ。
0026yuhei
NGNG深くかいてるし、DirectXは、やばいね、
OpenGLの真似してきてるけど、スマートじゃないね。
0027デフォルトの名無しさん
NGNGGL触ったことないから聞きかじっただけなんだけど、GLってハードウェア
アクセラレーション使いたかったらそれ専用の関数を呼ばなきゃ逝けないんでしょ?
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGあの果てしなく遅いところは本当にドライバ云々か?
0030デフォルトの名無しさん
NGNGG400を使ってた時は、ドライバの問題でダメダメだった
けど、GeForce系に変えてかなり快適。
ビデオカードが古くなければ、基本的にHALだと思っていいです。
MFCを使ってウィンドウを表示するサンプルをカスタムアップ
ウィザードを使って、何度も再利用すると便利だよ。
ちょっとしたテスト用のプログラムを書く時に便利。
0031デフォルトの名無しさん
NGNGジーエルが遅いことには変わらないんじゃないか?
組むのが楽とか云々は始めにライブラリを作ってしまえば問題ないでしょ。
0032デフォルトの名無しさん
NGNG性能は本当にドライバの実装次第、としかいいようが無いん
ですよ。決してOpenGLだから遅いというわけでは決して無い。
ドライバがよければDirectXでいうところのVertexBufferを
使ってDraw*Primitiveを発行するのとほぼ等価な処理ができ
ますし、拡張命令を使えばDirectXより便利な(ただし機種
依存性が高い)機能を使うことが出来る。NVなOpenGLは
このあたりの命令が充実してますね。
#個人的にはどっちでもいーじゃん、って感じですが。
0033デフォルトの名無しさん
NGNGTLVERTEXのような使い方ができるD3Dじゃないとスピード的につらかった。
ところが、GeForceのようなハードウェアT&Lが出てきて、状況が一転した。
OGLは、座標変換も必ず隠蔽されていたから、OGLで作られた古いゲームまで速くなる。
いまはD3DでもOGLでもあまり変わらんと思う。nVidiaの最新の機能を使いたければ、
OpenGL SDK使えばよいわけだし。
0034デフォルトの名無しさん
NGNG003533
NGNGそれって、OpenGLの行列演算飛ばせる? 飛ばせないと、余計遅くなってしまう。
0036デフォルトの名無しさん
NGNGOpenGLの方がいいんでない?
0037デフォルトの名無しさん
NGNGみょうちきりんなgl_EXT_XXXXでハマりたいマゾ嗜好ならGLでもいいけどね。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGNVの場合は逆にOpenGLがネイティブですよ。
D3Dだと仕様でかなりハードの機能が制限されます。
特にレジスタコンバイナは能力が半分くらいに。。。
>>35
>それって、OpenGLの行列演算飛ばせる?
昔ながらのやり方では無理ですよね。
今なら頂点シェーダ使えば可能かと。
004030
NGNG組むのが・・・ていう話だけど、
DXだとちょっとしたポリゴン出すにも、
頂点バッファを作らないといけなかったり
するのがねぇ・・・と思うんだけど、
これも、自作ライブラリでラップしたり
する?
GLだったら、数行で書けるし、ちょっとした
マクロを使えば、2回目以降はディスプレリスト
で描画するようにもできるしね。
004130
NGNGスマソ、気にしないで。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG行列の積は行わない。
0044デフォルトの名無しさん
NGNGまともなドライバ配ってくれよ。えーん。
004533
NGNGがーん。そこまで良くできていたとは・・・
知らなかったからIMとVoodooで作ったよ。何年も昔の話だ(藁
0046デフォルトの名無しさん
NGNG高速に動作していたってこと?
0047デフォルトの名無しさん
NGNGGLが?嘘はやめて・・・
0048デフォルトの名無しさん
NGNGまた嘘が・・・
0049デフォルトの名無しさん
NGNGそれはさておき、普通の人が普通にプログラムすると、GLのほうが遅くなりますね。
パフォーマンスを追求すればD3Dと同じになります。
ただしそのヒントとなる情報が想像以上に少ないので、苦労することでしょう。
っていうかそんなつまらんことに時間を費やすくらいなら、
最初からD3Dでやればいいんだけどね・・・
0050デフォルトの名無しさん
NGNG#39じゃないんですけど、
NVなチップならGLのほうがよりネィティブな機能に触れられますよ。
NV_fenceを使えば、CPUとの非同期な頂点データのGPUへのセットアップ
も出来るし、ピクセルのブレンディングなんかはDirectXのピクセル
シェーダより(NVIDIAの)OpenGLのテクスチャシェーダ+レジスタコンビナ
の方がネィティブハードに近い。と思う。
>>43
それってOpenGLの規格で決まってるんですか?知らなかったヨ。
005130
NGNGサンクス。週末にでも試してみます。
>>48
mesaのソースを読んでみたんだけど、glLoadIdentity
を呼ばれた時は、IDENTITYなるフラグを立ててる・・・
RotateやMultが呼ばれると、DIRTYなるフラグを立てて
たりしてる・・・
あながちウソとも言えないっぽいよ。
005250
NGNGいいのかどうか。
本当に、用途に合わせて使えばいいし、どっちでもいいときは好みの
方を使えばイインジャネーノ?
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGhttp://www.opengl.org/developers/faqs/technical/transformations.htm#tran0040
の事ですか?
#シラナカッタヨ…。
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGあまりにも慎重で遅すぎだけど、
アップデートは確実にされているよ。
>OpenGLのテクスチャシェーダ+レジスタコンビナ
>の方がネィティブハードに近い。と思う。
つかハードウェアの機能そのまんまです。
OpenGLでもD3Dでも使えないハードウェア機能なんて今じゃ無意味だしね。
現状、X-Boxを除けばD3DでNVハード機能を全て使うことはできません。
0062デフォルトの名無しさん
NGNGさすが2chだな
0063デフォルトの名無しさん
NGNG実際使ってるけど…使い出せばどっちも特殊な目的が無い限り
代わり映えしないと思うんですけどねぇ。
#つ〜か、これネタスレでしょ?
0064デフォルトの名無しさん
NGNG市販ソフトには使えん。
0065デフォルトの名無しさん
NGNGLightwave, Softimage, MAYAなんかはOpenGL使ってますが?
もうどうでもいいじゃん。
0066デフォルトの名無しさん
NGNG59が指していたURLには "typical OpenGL implementations ..."
と書いてあるね。
素人はどこで変な知識(しかも嘘)を刷り込まれているか分かったもんじゃないね。
0067デフォルトの名無しさん
NGNG>>64
ハードとセットで売るんです。そうやって儲けるんです。
0068デフォルトの名無しさん
NGNG>ハードが同じなら、いくらがんばっても差が出ない気がするんだけど...
だから
>D3Dだと仕様でかなりハードの機能が制限されます。
>特にレジスタコンバイナは能力が半分くらいに。。。
なんでしょ?
NV_register_combiners を使いこなしたのと同じことしようとすると、
Direct3D ではテクスチャステージ倍は必要です。
使えない機能もありますし。
0069デフォルトの名無しさん
NGNGどこがウソなの?
誰もそれが仕様だとは言ってないし。
0070デフォルトの名無しさん
NGNGは?OpenGLは仕様でしかありませんが?
何を言いたいのかよくわかりません。
0071デフォルトの名無しさん
NGNGそれが必要になるほどのプログラムを作るオタク(藁 であれば、
D3DだろうがOpenGLだろうが同じように使えるでしょう。
そうでない人にとっては、それは些細な違いではないでしょうか。
いまここで、どっち使うかなあ、と考えている人が、
そこまで到達するのにどれくらいかかることやら・・・
もうすこし大局的に見られないものかなあ。必要とされているのは
ハードの限界を垣間見るようなオタッキーな使い方ではない、
と思うんだけどね。
機能とはそれだけじゃないんだし・・・
0072デフォルトの名無しさん
NGNG>D3DだろうがOpenGLだろうが同じように使えるでしょう。
だから。。。
D3Dだとハードの機能がかなり制限される。
使えない機能があるって何度も言ってるんですが?
他は全くもって同感ですよ。
誰も普通に使うのに差が出るとは言ってませんて。
0073デフォルトの名無しさん
NGNGハードの機能を制限することが場合によっては長所にもなり、短所にも
なると思う。より広いターゲットで動かしたい場合はD3Dがいい妥協点に
なる場合もあるわけで。
#現時点ではD3D8もGeforce3しかネイティブには動かせないですが(汗
そもそもレジスタコンビナとかはNVIDIAのベンダ拡張による利点な
わけで、OpenGLそのものの長所でもありますまい。そういう拡張を
許すユルさが長所になるときもあるというだけで。
0074デフォルトの名無しさん
NGNGゲームプログラマはオブジェクト指向が理解できないドキュソばっかりなの?
0075デフォルトの名無しさん
NGNG>D3Dだとハードの機能がかなり制限される。
>使えない機能があるって何度も言ってるんですが?
白痴ですか?
特定ハードの特定機能が使えないこともある、と言った方がいいですよ。
これだとOpenGLのほうが制限がきついですが、
それに利点があるかもしれないのは73さんのおっしゃるとおり。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG>白痴ですか?
72じゃないのですが、それぐらいは文章から読み取れると思いますけど。
72さんの言っている事と、貴方が言っている事は同じだと思いますよ。
0079デフォルトの名無しさん
NGNGさっぱりわかりません。
LPDIRECT3D8 g_pd3d = NULL;
LPDIRECT3DDEVICE8 g_pd3dDev = NULL;
LPDIRECT3DVERTEXBUFFER8 g_pVB = NULL;
g_pd3d = Direct3DCreate8(D3D_SDK_VERSION);
if( g_pd3d == NULL ) return E_FAIL;
D3DDISPLAYMODE disp_mode;
HRESULT hr;
hr = g_pd3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&disp_mode);
if( FAILED(hr) )
return hr;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp,sizeof(D3DPRESENT_PARAMETERS));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = disp_mode.Format;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
hr = g_pd3d->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&g_pd3dDev);
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG仕事にしたい人はDirect3D。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています