OpenGLスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG質問・雑談なんでもいいので、書き込みましょう。(批判もOK)
※OpenGL関連のスレ寿命短すぎ!
とりあえず50目標
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGOpenGLって初期化の仕方から分からないです
教えて?
0004デフォルトの名無しさん
NGNG0005名無し
NGNGすることで、ビルドできるのな
OPENGLでヴァーチャルリアリティっぽい事やってみたいな
0006デフォルトの名無しさん
NGNGを追加することでビルド出来る
0007デフォルトの名無しさん
NGNGphigsでは一旦作成したストラクチャの中のラベルを検索して
エディット出来るんだけどGLにはそれらしいのが無くてちょっと
不便だった。実際少ししか触ってないので間違ったこと言ってるかも。
ずっとewsでやっててWindowsでこの手のプログラムが動いた
時は感動したなぁ。ずいぶん昔の話だけど(w
0008デフォルトの名無しさん
NGNG書き方しちゃうと相互互換性なくなるし..ジレンマだよね。
00091
NGNG完全互換じゃないからMesa名乗っていたような…(あとライセンスの問題とかで)
NURBSのTRIMが出来ないとか(今は知らん)
というかMesa使ったこと無い!(使おうと思ったことはあるけど)
"ほぼ"完全互換なんじゃない?(どっかに90%位って書いてあったな。適当…)
0010マジレスさん
NGNG00111
NGNG4の言うようにglut使ったほうが楽。無かったらどっからか拾ってきて♪
glut使わないなら(winの場合)
1、windows.hインクルードして
2、ウインドウ作る際、WM_CREATE辺りで
3、PIXELFORMATDESCRIPTOR構造体作って、中埋めて
4、ChoosePixelFormatに渡すとそれに近いフォーマットの番号が返るから、
5、SetPixelFormatにその値渡して、デバイスコンテキスト初期化
6、wglCreateContext→wglMakeCurrentやって終了
7、SwapBuffers(ダブルバッファの場合)やって、おお!
って感じ。参考にならないと思いますが…
unix系の場合は…
長くなるのでやめます。
00121
NGNG一回作ったテクスチャの切り替えはglBindTextureで。
ってそういう意味とも違う?
00131
NGNG俺もそれほど詳しくない(;´Д`)
知ってる人、どんどん教えてあげて♪
00141
NGNGじゃぁ70目標ヽ(´ー`)ノ
0015名無しサソ
NGNG自動検索するプログラムって、どこかに落ちてないかな?ちまちまと
最適化するのは苦手だけど、こういう部分なら勝手に速くなって
くれそうだし(藁)
0016デフォルトの名無しさん
NGNGストライプ形状ってどんなやつ?
0018名無しサソ
NGNG使いまくれるモデルを手間無く作りたい、ということね。
どれだけ速くなるかは知らないけど、遅くなることは
無いだろうし。
0019デフォルトの名無しさん
NGNGみんなむずかしくない?
あとで質問させてくださ〜い
002017
NGNGhttp://home.earthlink.net/~mmchow/meshsdk/meshsdk.html
http://www.cs.sunysb.edu/~stripe/
http://www.nvidia.com/Marketing/Developer/DevRel.nsf/bookmark/0B738E907A7DC3A28825693F0065F772
いずれにしろ。ローダ書くのがめんどい。
ヘタレなんで。
00211
NGNG俺はそうでもなかったけど…
どこらへんが?
00221
NGNGテクスチャ光沢ねーぞ。って方はGL_LIGHT_MODEL_COLOR_CONTROL_EXT
OpenGLこれしか機能ねーのかって方はwglGetProcAddress
002319
NGNGテクマプ初体験だから、もーチュウボウ状態です。QUADで書いたつもりでも、
3角形のパターンが出とります。そもそもテクスチャの作り方も悪いかも知れんで
す。
画面に書いた内容をglCopyTexImage*でテクスチャ作ろうとしてるです。詳しくまた
書くですから、聞いてくだせー
0024 1
NGNGGL_QUADS、GL_QUAD_STRIPどっち?
002519
NGNGども!
GL_QUADS 使ってますです。glTexCood の座標っすかー?いちおうその箇所書きますね。
glBegin(GL_QUADS);
glTexCoord2f (0.0, 0.0); glVertex3f (0.0, 0.0, 0.0);
glTexCoord2f (0.0, 1.0); glVertex3f (0.0, 0.0, mapdata->row*10.0 - 0.05);
glTexCoord2f (1.0, 1.0);
glVertex3f ( mapdata->col*10.0 - 0.05, 0.0, mapdata->row*10.0 - 0.05);
glTexCoord2f (1.0, 0.0); glVertex3f ( mapdata->col*10.0 - 0.05, 0.0, 0.0);
glEnd();
これの前にモデルビュー変換として
glRotatef ( 90.0, 1.0, 0.0, 0.0 );
glTranslatef ( mapdata->col * -5.0, -10.0, mapdata->row * -5.0 );
ってやって xz 平面を上からみたようになるようにしてるつもりです。
mapdata->col,rowは 1から3の整数がはいってるだけです。なんかコメントくだせー
00271
NGNGヒント
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST)
002819
NGNG0029名無しサソ
NGNGをを、ありがとう。卒業研究が終わったらチェックしてみるよ。
自分の卒論はDXFをまともに読むだけで7割方使ってるよ(涙)
あと2日でProgressiveMeshの実装。地獄だ・・・
003019
NGNGglHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST)使ってみました。
でも変わらんかったです。
でも他で変化ありました。MAG_FILTER, MIN_FILTER 指定したら、三角形の
ままですがその中でそれらしくでました。
これって必須なんすかね?>MIN_FILTER、MAG_FILTER
うーんでもまだ三角です。大変だわ >OpenGL
003119
NGNGなんかあれこれやったけど、どーもだめっす。なんか、Zの座標値が大きいと(25.0以上)
おかしくなるです。カードのリソースの問題かもなーと思いつつ、もすこしだけ
ねばるっす。ハア
0032デフォルトの名無しさん
NGNGZ座標値が大きいとメモリも多く食うってことはないよ。
mapdata->col、rowを1にしてやってみたけどうまくいったよ。
テクスチャが三角じゃなくポリゴンが三角になってるんじゃない?
デバックしてglVertex3fに渡してる値を調べて見ては?
0033ちゅーぼーですよ
NGNGそれとなく方向性の違う技術のようなきはするのだが。
やはりOpenGL使いのみなのしぅはやはりプラットフォームがWinではない?
003419
NGNGども(少し回復モード)
コメントさんくすです。そうですよね、関係ないすよね。
あの、ほんとすみません。ごめんなさい。あほなとこで問題おこしてたみたいです。
ハハ、ハハ (ごまかしてるつもり
0035名無しサソ
NGNGを買ったので、折角だからこれをOpenGLと併用させることを検討中
だったり。
>>33
DirectXは3D部分も含めて「最新技術をいち早く」というのをモットー
にしているのだと思う。GeForceシリーズやRADEONが持っている最新機能
(CubeEnvMapとか)も使えるし。けど、安定性や使いやすさは2の次に
なっていたりする(8では使い易くなっているけど)。
一方のOpenGLは「3D描画を確実に」というのがモットーだと思う。
バージョンも頻繁には変わらないし、OS間での互換性も高い。
VGAのドライバがしっかりしていれば安定性も高い。けど、最新機能
の一部は使えないし、ちゃんとOpenGLをサポートしている安価な
VGAは結構少ない。
実は、バリバリの最新機能を使うのでなければ、3D描画はたいていは
OpenGLで事足りるのではないかな。Direct3DIMと比べると敷居も低め
だと思うし。
0036デフォルトの名無しさん
NGNGCubeMapだったらOpenGLでも使えるよ。(ビデオやドライバによると思うけど)
他にDirectXで使えてOpenGLでは使えないって機能あるかな?
0037デフォルトの名無しさん
NGNG0038名無しサソ
NGNGアキュームレーションバッファとか使わずに高速に出来たっけ?
それなら更に問題無しなんだけど(笑)でも、G400のEnvBampMap
はDirect3Dのみでサポートされて居いたと思う。自分もG400
持って居るんだけど、これはOpenGLの対応があんまり良くない。
プログラムのデバッグ途中で、ドライバ部分がこけることがあるし、
スピードもD3Dに比べて低い。
GeForceのパワーを手軽に使いたいなら、迷わずOpenGLなんだけどね。
これって、ディスプレイリストに追加するだけでジオメトリエンジンを
自動的に使ってくれるんだよね?前スレでリスト使ったら余計に遅くなった
と言う話を聞いたのだけど、あれはどう言うことだったんだろう。
0039デフォルトの名無しさん
NGNGRADEONとかGeForceとか一部のカードだけだけど、
ハードでサポートしてるよ。CubeMap
オーバーヘッドが大きくて効率悪いけど、
リストにしなくてもジオメトリエンジンは使います。
リストにするだけだと普通頂点バッファがCPU側だから、
Direct3Dよりは遅いです。
拡張機能使えばビデオメモリ側に作れますけど。
0040デフォルトの名無しさん
NGNGgluLookAt() で設定した視点で見たいんですけど、
角度は移動するようなんですが、距離が移動してないみたいなんです。
どうしたら良いのでしょう?
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(left, right, bottom, top, nearZ, farZ);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, m_diff, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
およそこんな感じです。
0041デフォルトの名無しさん
NGNGかえるんじゃやだめなんですか?
0042デフォルトの名無しさん
NGNGGL_PROJECTIONに対して使うものだと思ってた。
GL_MODELVIEWでもいけるの?
0044デフォルトの名無しさん
NGNGPROJECTION は 3D->画面 への変換で、
LookAt は あくまで 3D 空間内のはなし。
だから MODELVIEW
というかバグでなかったんだろか42は...
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGビデオメモリに置くと結構早さ変わりますか?
一応調べてみようぉ
ちなみに拡張機能の何ていうやつです?
004745補足
NGNGglOrthoは平行射影だから視点からモデルが離れても小さくはならないのだよ。
遠近感出したいならglFrustumかgluPerspectiveを使ってPROJECTIONを定義すればよろしいかと。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG総括&補則
GL_PROJECTION
glfrustum or gluperspective <------&gt; glortho
GL_MODELVIEW
glulookat or gltranslate + glrotate <-----&gt; gltranslate + glrotate
でいいんじゃないでしょうか
005040
NGNG説明不足だったみたいで申し訳ありません。
具体的にやりたかったいのは、glOrtho() ※平行射影じゃないとダメなんです。
で設定した空間を拡大縮小すると、視体積からはみ出した部分が表示されない問題を解決したかったんです。
どうか皆さん引き続き、お知恵拝借願えませんでしょうか。
今まで、glScale() の変わりにglOrtho() で表示したい部分 (例えば top / 2., bottom/2., left/2., right/2.)を指定して、
nearZ, farZ をそのままにしたりしてやってみてはいるんですが、空間が歪んで見えるんです…。
glOrtho() って立方体の空間しか指定出来ないのでは?と考えたりしているんですが、ご存知の方情報をお願いします。
参考になりそうな URL でも良いのでよろしくお願いします。
ほんとに他力本願になっちゃってますが、ピアソンの「OpenGL リファレンス」にも
「Win32 OpenGL」プログラムにも具体的に記述しているところがなくて…、
他に OpenGL 関連でこれは読んどけ!みたいな文献も教えていただけるとありがたいです。
00511
NGNG手抜きコードを…
#define VIEWSIZE 100
Reshape(int width,int height)
{
GLdouble aspectx,aspecty;
if(width>height)
aspectx=(GLdouble)width/height,aspecty=1;
else
aspectx=1,aspecty=(GLdouble)height/width;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-VIEWSIZE*aspectx,VIEWSIZE*aspectx,-VIEWSIZE*aspecty,VIEWSIZE*aspecty,-VIEWSIZE,VIEWSIZE);
glMatrixMode(GL_MODELVIEW);
}
って、こういうこととも違う?
00523
NGNGしかしDirectX7のヘルプで
チュートリアル 1 : 単一の三角形をレンダリングする
ステップ 3.1 : ジオメトリを準備する。がコンパイル時にエラ〜になるのです。
DirectX始めて1年に成りますが三角形もろくに描画できない。
私には3Dプログラムは向いてないんですかね。
んでOpenGLを昨日海外からチュートリアルをDLしてやってみたのですが………
3Dプログラムってこんなに簡単だったのですか。
1日でポリゴンを動かしたり拡大したり回転させたり出来る様になっちゃった。
俺の1年っていったい………(泣
00533
NGNGLesson01〜Lesson32まで。
英語だけどソース見れば何となくOpenGLプログラムが分かると思う
http://nehe.gamedev.net/opengl.asp
0054デフォルトの名無しさん
NGNGグリグリ動かしてみようかな。ありがとう>53
0055デフォルトの名無しさん
NGNG結構参考になるね。バンプのやり方も書いてあるし。
さんきゅぅ!
0056デフォルトの名無しさん
NGNGOpenGLでポリゴンキャラをグイグイいわせてるソフトウェアの
ソースコードを公開しているサイトがあったら教えて下さい。
0057名無しサソ
NGNG多分、この辺だと思う。
http://www.nvidia.com/Marketing/Developer/DevRel.nsf/pages/E11F4D0F59900C9E8825681E007B1065
nVidiaのサイト、本当に良いね。とりあえず最新機能を使いたい時は
要チェックかも。あと、Direct3Dのベンチマークで試してみたんだけど、
実はVRAMに置くのとシステムRAMに置くのではそこまでの違いはないみたい
(状況によって変わると思うけど)。それよりも驚いたのが、Strip描画の
効果。一番効かせた時と全く効かせない時との比較だけど、2.5倍くらい
ポリゴン数に差が出たよ。環境にも依存せずに速くしたいなら、やっぱり
これかも。
005846
NGNGん〜。リンク先のpdfファイルにはそれらしいのが見つからなかったんだけど…
ほかの奴にあるNV_fenceっていうやつでしょうか?
0059名無しサソ
NGNGゴメソ。忙しいからまだ詳しくチェックしてない。
出来れば逆に教えて欲しいくらい(爆)。そこに何らか
の情報があるのは確かだと思うので・・・。
006040
NGNGえー、アスペクト比とは違ったんですけど自己解決しました。
結局 glOrtho() で歪むとか言ってたのは、私のミスで歪みませんでした。
(回転に手抜きして glMultMatrix() 使ってたせい)
その他の皆様も色々とご教授下さってありがとうございました。
結果:glOrtho() だけで見たい部分を拡大縮小すればいい。
に落ち着きました。お騒がせしましたー。
今後もこのスレッド読み直して勉強させてもらいます。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGEXT_compiled_vertex_array
NV_vertex_array_range
NV_fence
あと
wglAllocateMemoryNV()
とかかなー
0063デフォルトの名無しさん
NGNG俺はwindowsで書きなおしたら速度の差に凹んだぞ
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGどっちが速いってこと?
0066デフォルトの名無しさん
NGNGぶっちぎりでWindows
0067デフォルトの名無しさん
NGNG書き直す必要あんの? glut つかってないつうこと?
どんくらいちがうの?
006863
NGNGglut使ってたけど、俺の書き方が悪いのか、
再描画とかでやたらちらついたのでやめた。
それとWindowsプログラミング初めてだったんで
MFCを使ってみたかったってのもある。
ちなみにずっとアニメーションさせるプログラムね。
006963
NGNGWindowsマシンのほうがあらゆるスペックは劣るが速度差は数倍?
開発環境も違うし全くの体感速度なんでかなり曖昧。
マシンのことは詳しいことは知らないけど
ドライバとかそういう問題なんだろう。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG>ドライバとかそういう問題なんだろう。
Linuxだと3Dのハードウェアアクセラレーションが効く環境がかなり限られる
からね。カーネル2.2以上にしてDRマネージャを有効にして、XFree86 4.0以上
でDRIを有効にすればそれなりに速くなるはず。でも、市場の大きさから考えて
ドライバの出来(チューニング度合い)はWindows用の方が上でしょう。
今、2.4.1のカーネルで確かめたら、カーネルのDRMがサポートしてるチップは
banshee/voodoo3, GMX2000, rage128, radeon, i810, G200/G400らしい。
でも、XFree86のradeonのドライバがジオメトリエンジンに対応してるとは思えん。
0072デフォルトの名無しさん
NGNGあと nVidia だとドライバ出してくれてるんですがね。これはそんなに変わらん(Windowsとはずです。
0074デフォルトの名無しさん
NGNG使い方を教えてください。
0075デフォルトの名無しさん
NGNGnot 2D ?
0076デフォルトの名無しさん
NGNG1.2にglTexImage3Dあります。が、使い方が…
nVidiaのドライバ1.2正式に対応してるのかな??(winの話)
0077デフォルトの名無しさん
NGNG0078あげます!
NGNGMagicianやGL4Java、国産(?)のJSparrow等いろいろあるようで、
いまいちそれぞれがどう違うのかよくわかりません。
なにか情報持ってる方、お教えください。
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG別にライブラリがあれば関係無いんじゃない?
0081デフォルトの名無しさん
NGNG8Bitのbmpをテクスチャとして使いたいのですが、うまくいきません。
glColorTable(GL_TEXTURE_2D,GL_RGBA8,256,GL_BGRA_EXT,GL_UNSIGNED_BYTE,ColorTable);
glTexImage2D(GL_TEXTURE_2D,0,GL_COLOR_INDEX8_EXT,Width,Height,0,GL_COLOR_INDEX,GL_UNSIGNED_BYTE,Pixels);
↑を実行するとglColorTableがGL_INVALID_OPERATIONを返します。
何か間違ってますか?教えてください。
008281
NGNG0083デフォルトの名無しさん
NGNG具体的には、ウィンドウの大きさを変えると一部が黒くなるんですよ。
やっぱしWin98とNTでなきゃだめなのかな。
0084デフォルトの名無しさん
NGNGglutMainLoop呼んだらウインドウ閉じてもmainに戻ってこないのですが、
終了時に処理をさせる方法は無いのでしょうか?
メモリ開放や、ハンドルを閉じる場合はどうするでしょう?
0085デフォルトの名無しさん
NGNGGL4Javaを使うのがよろしいかと。
Magicianはフリーで使うにも(簡単な)ライセンス取らないとキャンバス
の右下にemotionだかなんだか忘れたけどウザい文字が出る。
JSpallowも商用は何かしらのライセンスが必要だった気がする。
GL4JavaはLGPLだからその辺は大丈夫。ソースも落とせるから勉強になるし。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG↓のがあるしね。
http://codeguru.earthweb.com/opengl/index.shtml
0089デフォルトの名無しさん
NGNGビデオドライバーの問題じゃないかい?
#W2KでG400使ってるんだけど最近のドライバーで
#やっとテクスチャがきちんと表示されるようになった。
0090デフォルトの名無しさん
NGNG参考書はOpenGL Programming Guideでいいの?
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGやっぱ金無いんでwebとあの無料配布のpdfでやってます。
0093デフォルトの名無しさん
NGNGアクセラレーションを有効にする方法に触れないのが謎なスレッドだ
標準で付いてくるOpenGLのスクリーンセーバがビデオカードを何にしようと
速度が変わらない理由が分かってるのだろうか
0094デフォルトの名無しさん
NGNG教えてほしけれりゃそう言やあいいのに
00951
NGNG確かに、OpenGLスクリーンセーバ遅いね。なんであれはハードが有効にならんのかな。
あのソース見たこと無いからなんとも言えんが、自分で似たようなもん作ったら、数倍早かった。
>94
俺も知りたい。
0096デフォルトの名無しさん
NGNGハードウェアアクセラレーションをかける手段が一様でないからでは?
#大体あのOpenGLスクリーンセーバがつくられた頃なんて、ディスプレイリスト
#くらいしかアクセラレート手段がなかったのでは?
ディスプレイリストやgl*Pointerを使えばImmediateModeよりは早くなるけど、
wglAllocateMemoryNVみたいにローカルなアクセラレーション方法しか
ハードウェアの機能を最大限に生かす方法がないからねぇ。
BTW,昨日NVIDIAのOpenGL拡張のドキュメントが更新されたから見て見たんだけど、
専用命令を使えば、DirectX8よりもOpenGL(_NV)の方がGeforce3をしゃぶり
尽くせそう。移植性とかは全くなくなるけど。(W
0097デフォルトの名無しさん
NGNGOpenGLスクリーンセーバは
ハードウェアが効かないだけではなく、
ウェイトも入っていたような記憶が。
#勘違いかも知れません
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGどゆ意味??
opengl32.lib をリンクしといたら,
実行環境のICD設定で勝手に使われるけど.
0100デフォルトの名無しさん
NGNGディスプレイリストって実は速度的なメリットってそんなに無いみたい。
OpenGLの最適化のドキュメントを必死に読んでたんだけど、ディスプレイ
リストに関してはプログラムの手間を軽減位にしか触れられて無かった。
頂点配列は最近では特に高速化されるみたい。
でもこの話はハードウェアアクセラレーションとはあんまり関係無いね。
nvidiaの拡張命令は便利そうなんだけど野暮ったいんだよなあ。
シャドウマップとかバンプマップの例を見てると結構面白そうなんだけど
nvidiaのカード専用じゃ一般のアプリとしては使えないよなあ。
もしハードウェアアクセラレ=ションを効かせたいならOpenGLの
コンテキストを作る際にそれに合ったピクセルフォーマットを選べばOK。
ここん所はプラットフォームによってコードはまちまち、wglとかaglとか。
0101デフォルトの名無しさん
NGNGほとんど同意なんだけど、nvidiaのカードでも
頂点配列よりはディスプレイリストの方が速いよ。
どちらも普通システムメモリに作られるから、
最適化フォーマットに予めコンパイルできるディスプレイリストの方が有利。
ハードウェアメモリにバッファを作る拡張機能を使うなら話は別だけどねー。
■ このスレッドは過去ログ倉庫に格納されています