OpenGLスレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
立てました。
質問・雑談なんでもいいので、書き込みましょう。(批判もOK)

※OpenGL関連のスレ寿命短すぎ!
 とりあえず50目標
2デフォルトの名無しさん:2001/02/02(金) 02:15
MESAってOpenGL完全互換なの?
3デフォルトの名無しさん:2001/02/02(金) 02:40
>>1
OpenGLって初期化の仕方から分からないです
教えて?
4デフォルトの名無しさん:2001/02/02(金) 02:44
glutInit( &argc, argv );
5名無し:2001/02/02(金) 02:51
OPENGL ってさライブラリとかDDLとかが、VC++ のリンク設定
することで、ビルドできるのな
OPENGLでヴァーチャルリアリティっぽい事やってみたいな
6デフォルトの名無しさん:2001/02/02(金) 02:53
opengl32.lib glu32.lib glut32.lib
を追加することでビルド出来る
7デフォルトの名無しさん:2001/02/02(金) 02:56
ずーとphigsやってて、GLはちょこっとだけやった。
phigsでは一旦作成したストラクチャの中のラベルを検索して
エディット出来るんだけどGLにはそれらしいのが無くてちょっと
不便だった。実際少ししか触ってないので間違ったこと言ってるかも。
ずっとewsでやっててWindowsでこの手のプログラムが動いた
時は感動したなぁ。ずいぶん昔の話だけど(w
8デフォルトの名無しさん:2001/02/02(金) 03:05
glut は便利だね。ただちょっと機能は限られるみたいけど。Window システム依存の
書き方しちゃうと相互互換性なくなるし..ジレンマだよね。
91:2001/02/02(金) 07:01
>2
完全互換じゃないからMesa名乗っていたような…(あとライセンスの問題とかで)
NURBSのTRIMが出来ないとか(今は知らん)
というかMesa使ったこと無い!(使おうと思ったことはあるけど)
"ほぼ"完全互換なんじゃない?(どっかに90%位って書いてあったな。適当…)
10マジレスさん:2001/02/02(金) 07:18
志が低いぞ。アリス萌へぇ。
111:2001/02/02(金) 07:27
>3
4の言うようにglut使ったほうが楽。無かったらどっからか拾ってきて♪
glut使わないなら(winの場合)
1、windows.hインクルードして
2、ウインドウ作る際、WM_CREATE辺りで
3、PIXELFORMATDESCRIPTOR構造体作って、中埋めて
4、ChoosePixelFormatに渡すとそれに近いフォーマットの番号が返るから、
5、SetPixelFormatにその値渡して、デバイスコンテキスト初期化
6、wglCreateContext→wglMakeCurrentやって終了
7、SwapBuffers(ダブルバッファの場合)やって、おお!
って感じ。参考にならないと思いますが…
unix系の場合は…
長くなるのでやめます。
121:2001/02/02(金) 07:31
>7
一回作ったテクスチャの切り替えはglBindTextureで。
ってそういう意味とも違う?
131:2001/02/02(金) 07:32
OpenGLのことなら俺に聞け!っていうタイトルじゃないことからお分かり通り、
俺もそれほど詳しくない(;´Д`)
知ってる人、どんどん教えてあげて♪
141:2001/02/02(金) 07:53
>10
じゃぁ70目標ヽ(´ー`)ノ
15名無しサソ:2001/02/02(金) 08:43
 OpenGLに限った話ではないけれど、3Dモデルからストライプ形状を
自動検索するプログラムって、どこかに落ちてないかな?ちまちまと
最適化するのは苦手だけど、こういう部分なら勝手に速くなって
くれそうだし(藁)
16デフォルトの名無しさん:2001/02/02(金) 11:19
>>15
ストライプ形状ってどんなやつ?
17ボログラマー:2001/02/02(金) 13:11
>>15
ストリップ(strip)だろ?
俺もきぼーん。
18名無しサソ:2001/02/02(金) 14:41
 あ、間違えた。ゴメソ。要はトライアングルストリップが
使いまくれるモデルを手間無く作りたい、ということね。
どれだけ速くなるかは知らないけど、遅くなることは
無いだろうし。
19デフォルトの名無しさん:2001/02/02(金) 23:13
今テキスチャマッピングやろうとしてます。むづかしいです。わがら〜ん
みんなむずかしくない?
あとで質問させてくださ〜い
2017:2001/02/02(金) 23:38
211:2001/02/03(土) 01:06
>19
俺はそうでもなかったけど…
どこらへんが?
221:2001/02/03(土) 01:10
余談
テクスチャ光沢ねーぞ。って方はGL_LIGHT_MODEL_COLOR_CONTROL_EXT
OpenGLこれしか機能ねーのかって方はwglGetProcAddress
2319:2001/02/03(土) 01:34
>>21
テクマプ初体験だから、もーチュウボウ状態です。QUADで書いたつもりでも、
3角形のパターンが出とります。そもそもテクスチャの作り方も悪いかも知れんで
す。

画面に書いた内容をglCopyTexImage*でテクスチャ作ろうとしてるです。詳しくまた
書くですから、聞いてくだせー


24 1:2001/02/03(土) 02:03
ただ単にglTexCoordの座標が違うだけだったりして?
GL_QUADS、GL_QUAD_STRIPどっち?
2519:2001/02/03(土) 02:31
>>23
ども!
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の整数がはいってるだけです。なんかコメントくだせー
2619:2001/02/03(土) 02:33
271:2001/02/03(土) 02:45
>25
ヒント
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST)
2819:2001/02/03(土) 02:55
あんがとー。眠いから明日報告すんねー
29名無しサソ:2001/02/03(土) 04:34
>>20
 をを、ありがとう。卒業研究が終わったらチェックしてみるよ。
自分の卒論はDXFをまともに読むだけで7割方使ってるよ(涙)
あと2日でProgressiveMeshの実装。地獄だ・・・
3019:2001/02/03(土) 11:17
ども!

glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST)使ってみました。
でも変わらんかったです。
でも他で変化ありました。MAG_FILTER, MIN_FILTER 指定したら、三角形の
ままですがその中でそれらしくでました。
これって必須なんすかね?>MIN_FILTER、MAG_FILTER

うーんでもまだ三角です。大変だわ >OpenGL


3119:2001/02/03(土) 23:31
ども(疲れモード)

なんかあれこれやったけど、どーもだめっす。なんか、Zの座標値が大きいと(25.0以上)
おかしくなるです。カードのリソースの問題かもなーと思いつつ、もすこしだけ
ねばるっす。ハア
32デフォルトの名無しさん:2001/02/04(日) 00:42
>25,31
Z座標値が大きいとメモリも多く食うってことはないよ。
mapdata->col、rowを1にしてやってみたけどうまくいったよ。
テクスチャが三角じゃなくポリゴンが三角になってるんじゃない?
デバックしてglVertex3fに渡してる値を調べて見ては?
33ちゅーぼーですよ:2001/02/04(日) 13:50
あのう、OpenGLとDirectXてどう違うの、端的におしえてちょ。
それとなく方向性の違う技術のようなきはするのだが。
やはりOpenGL使いのみなのしぅはやはりプラットフォームがWinではない?
3419:2001/02/04(日) 14:14
>>32
ども(少し回復モード)

コメントさんくすです。そうですよね、関係ないすよね。
あの、ほんとすみません。ごめんなさい。あほなとこで問題おこしてたみたいです。

ハハ、ハハ (ごまかしてるつもり
35名無しサソ:2001/02/06(火) 18:16
 下がってるので上げとくよ。最近ヘッドトラッキング機能付きHMD
を買ったので、折角だからこれをOpenGLと併用させることを検討中
だったり。

>>33
 DirectXは3D部分も含めて「最新技術をいち早く」というのをモットー
にしているのだと思う。GeForceシリーズやRADEONが持っている最新機能
(CubeEnvMapとか)も使えるし。けど、安定性や使いやすさは2の次に
なっていたりする(8では使い易くなっているけど)。
 一方のOpenGLは「3D描画を確実に」というのがモットーだと思う。
バージョンも頻繁には変わらないし、OS間での互換性も高い。
VGAのドライバがしっかりしていれば安定性も高い。けど、最新機能
の一部は使えないし、ちゃんとOpenGLをサポートしている安価な
VGAは結構少ない。

 実は、バリバリの最新機能を使うのでなければ、3D描画はたいていは
OpenGLで事足りるのではないかな。Direct3DIMと比べると敷居も低め
だと思うし。
36デフォルトの名無しさん:2001/02/07(水) 07:16
>35
CubeMapだったらOpenGLでも使えるよ。(ビデオやドライバによると思うけど)
他にDirectXで使えてOpenGLでは使えないって機能あるかな?
37デフォルトの名無しさん:2001/02/07(水) 07:49
OpenGLのセレクション便利
38名無しサソ:2001/02/07(水) 09:15
>>36
 アキュームレーションバッファとか使わずに高速に出来たっけ?
それなら更に問題無しなんだけど(笑)でも、G400のEnvBampMap
はDirect3Dのみでサポートされて居いたと思う。自分もG400
持って居るんだけど、これはOpenGLの対応があんまり良くない。
プログラムのデバッグ途中で、ドライバ部分がこけることがあるし、
スピードもD3Dに比べて低い。
 GeForceのパワーを手軽に使いたいなら、迷わずOpenGLなんだけどね。
これって、ディスプレイリストに追加するだけでジオメトリエンジンを
自動的に使ってくれるんだよね?前スレでリスト使ったら余計に遅くなった
と言う話を聞いたのだけど、あれはどう言うことだったんだろう。
39デフォルトの名無しさん:2001/02/07(水) 10:35
>38
RADEONとかGeForceとか一部のカードだけだけど、
ハードでサポートしてるよ。CubeMap

オーバーヘッドが大きくて効率悪いけど、
リストにしなくてもジオメトリエンジンは使います。
リストにするだけだと普通頂点バッファがCPU側だから、
Direct3Dよりは遅いです。

拡張機能使えばビデオメモリ側に作れますけど。
40デフォルトの名無しさん:2001/02/07(水) 14:44
glOrtho() で設定した視体積の中を
gluLookAt() で設定した視点で見たいんですけど、
角度は移動するようなんですが、距離が移動してないみたいなんです。
どうしたら良いのでしょう?

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);

およそこんな感じです。
41デフォルトの名無しさん:2001/02/07(水) 19:46
よく意味がわからんです(理解力不足ゆえ)が、Ortho のパラメータ変えて大きさ
かえるんじゃやだめなんですか?
42デフォルトの名無しさん:2001/02/07(水) 23:31
gluLookAt使ったこと無いから良くわからないけど、
GL_PROJECTIONに対して使うものだと思ってた。
GL_MODELVIEWでもいけるの?
43(,,゚Д゚)?:2001/02/07(水) 23:50
>>42
GL_PROJECTION には gluPerspective 使ってるけど…
44デフォルトの名無しさん:2001/02/08(木) 00:02
Projection カンケーない。< gluLookAt
PROJECTION は 3D->画面 への変換で、
LookAt は あくまで 3D 空間内のはなし。
だから MODELVIEW
というかバグでなかったんだろか42は...

45デフォルトの名無しさん:2001/02/08(木) 00:15
glOrthoだから距離変わっても見た目わからんのだよ。たぶん
46デフォルトの名無しさん:2001/02/08(木) 00:20
>39
ビデオメモリに置くと結構早さ変わりますか?
一応調べてみようぉ
ちなみに拡張機能の何ていうやつです?
4745補足:2001/02/08(木) 00:25
>40
glOrthoは平行射影だから視点からモデルが離れても小さくはならないのだよ。
遠近感出したいならglFrustumかgluPerspectiveを使ってPROJECTIONを定義すればよろしいかと。
48デフォルトの名無しさん:2001/02/09(金) 00:27
いいスレだ。あげとこう
49デフォルトの名無しさん:2001/02/09(金) 01:58
>>40-47
総括&補則

GL_PROJECTION
glfrustum or gluperspective <------&gt; glortho

GL_MODELVIEW
glulookat or gltranslate + glrotate <-----&gt; gltranslate + glrotate

でいいんじゃないでしょうか
5040:2001/02/09(金) 15:27
色々と皆さんありがとうございます。
説明不足だったみたいで申し訳ありません。
具体的にやりたかったいのは、glOrtho() ※平行射影じゃないとダメなんです。
で設定した空間を拡大縮小すると、視体積からはみ出した部分が表示されない問題を解決したかったんです。

どうか皆さん引き続き、お知恵拝借願えませんでしょうか。

今まで、glScale() の変わりにglOrtho() で表示したい部分 (例えば top / 2., bottom/2., left/2., right/2.)を指定して、
nearZ, farZ をそのままにしたりしてやってみてはいるんですが、空間が歪んで見えるんです…。
glOrtho() って立方体の空間しか指定出来ないのでは?と考えたりしているんですが、ご存知の方情報をお願いします。

参考になりそうな URL でも良いのでよろしくお願いします。

ほんとに他力本願になっちゃってますが、ピアソンの「OpenGL リファレンス」にも
「Win32 OpenGL」プログラムにも具体的に記述しているところがなくて…、
他に OpenGL 関連でこれは読んどけ!みたいな文献も教えていただけるとありがたいです。
511:2001/02/10(土) 00:15
>50
手抜きコードを…
#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);
}
って、こういうこととも違う?
523:2001/02/11(日) 04:59
Direct3Dでやっとシーンを作る事が出来るようになりました。
しかしDirectX7のヘルプで
チュートリアル 1 : 単一の三角形をレンダリングする
ステップ 3.1 : ジオメトリを準備する。がコンパイル時にエラ〜になるのです。
DirectX始めて1年に成りますが三角形もろくに描画できない。
私には3Dプログラムは向いてないんですかね。

んでOpenGLを昨日海外からチュートリアルをDLしてやってみたのですが………
3Dプログラムってこんなに簡単だったのですか。
1日でポリゴンを動かしたり拡大したり回転させたり出来る様になっちゃった。

俺の1年っていったい………(泣
533:2001/02/11(日) 05:05
ちなみに海外のチュートリアルってのがここの、
Lesson01〜Lesson32まで。
英語だけどソース見れば何となくOpenGLプログラムが分かると思う
http://nehe.gamedev.net/opengl.asp
54デフォルトの名無しさん:2001/02/11(日) 05:55
[Setting Up OpenGL In MacOS X Using GLUT:]もあるのね。Mac OS Xで3Dを
グリグリ動かしてみようかな。ありがとう>53
55デフォルトの名無しさん:2001/02/11(日) 08:05
>53
結構参考になるね。バンプのやり方も書いてあるし。
さんきゅぅ!
56デフォルトの名無しさん:2001/02/13(火) 02:50
http://www.nk-exa.co.jp/~andoh/opengl/faq/openglfaq.html

OpenGLでポリゴンキャラをグイグイいわせてるソフトウェアの
ソースコードを公開しているサイトがあったら教えて下さい。
57名無しサソ:2001/02/13(火) 03:03
>>46
 多分、この辺だと思う。

http://www.nvidia.com/Marketing/Developer/DevRel.nsf/pages/E11F4D0F59900C9E8825681E007B1065

 nVidiaのサイト、本当に良いね。とりあえず最新機能を使いたい時は
要チェックかも。あと、Direct3Dのベンチマークで試してみたんだけど、
実はVRAMに置くのとシステムRAMに置くのではそこまでの違いはないみたい
(状況によって変わると思うけど)。それよりも驚いたのが、Strip描画の
効果。一番効かせた時と全く効かせない時との比較だけど、2.5倍くらい
ポリゴン数に差が出たよ。環境にも依存せずに速くしたいなら、やっぱり
これかも。
5846:2001/02/13(火) 23:58
>57
ん〜。リンク先のpdfファイルにはそれらしいのが見つからなかったんだけど…
ほかの奴にあるNV_fenceっていうやつでしょうか?
59名無しサソ:2001/02/14(水) 12:39
>>58
 ゴメソ。忙しいからまだ詳しくチェックしてない。
出来れば逆に教えて欲しいくらい(爆)。そこに何らか
の情報があるのは確かだと思うので・・・。
6040:2001/02/14(水) 16:11
>>51

えー、アスペクト比とは違ったんですけど自己解決しました。
結局 glOrtho() で歪むとか言ってたのは、私のミスで歪みませんでした。
(回転に手抜きして glMultMatrix() 使ってたせい)
その他の皆様も色々とご教授下さってありがとうございました。

結果:glOrtho() だけで見たい部分を拡大縮小すればいい。
に落ち着きました。お騒がせしましたー。

今後もこのスレッド読み直して勉強させてもらいます。
61デフォルトの名無しさん:2001/02/17(土) 02:30
glAge()
62デフォルトの名無しさん:2001/02/19(月) 02:10
なんとなく関係ありそなエクステンション
EXT_compiled_vertex_array
NV_vertex_array_range
NV_fence
あと
wglAllocateMemoryNV()
とかかなー
63デフォルトの名無しさん:2001/02/19(月) 09:35
linuxでやってる奴はいねがー

俺はwindowsで書きなおしたら速度の差に凹んだぞ
64デフォルトの名無しさん:2001/02/19(月) 11:13
呼んだ?
65デフォルトの名無しさん:2001/02/19(月) 13:07
>>63
どっちが速いってこと?
66デフォルトの名無しさん:2001/02/19(月) 13:31
>>65
ぶっちぎりでWindows
67デフォルトの名無しさん:2001/02/19(月) 16:41
>>63
書き直す必要あんの? glut つかってないつうこと?
どんくらいちがうの?
6863:2001/02/19(月) 17:04
>>67
glut使ってたけど、俺の書き方が悪いのか、
再描画とかでやたらちらついたのでやめた。
それとWindowsプログラミング初めてだったんで
MFCを使ってみたかったってのもある。

ちなみにずっとアニメーションさせるプログラムね。
6963:2001/02/19(月) 17:11
速度に関してはマシンが違うので正確な比較はできないが、
Windowsマシンのほうがあらゆるスペックは劣るが速度差は数倍?
開発環境も違うし全くの体感速度なんでかなり曖昧。

マシンのことは詳しいことは知らないけど
ドライバとかそういう問題なんだろう。
70デフォルトの名無しさん:2001/02/19(月) 17:56
ちゃんとアクセラ対応してる X 使った?
71デフォルトの名無しさん:2001/02/19(月) 18:09
>>69
>ドライバとかそういう問題なんだろう。
Linuxだと3Dのハードウェアアクセラレーションが効く環境がかなり限られる
からね。カーネル2.2以上にしてDRマネージャを有効にして、XFree86 4.0以上
でDRIを有効にすればそれなりに速くなるはず。でも、市場の大きさから考えて
ドライバの出来(チューニング度合い)はWindows用の方が上でしょう。

今、2.4.1のカーネルで確かめたら、カーネルのDRMがサポートしてるチップは
banshee/voodoo3, GMX2000, rage128, radeon, i810, G200/G400らしい。
でも、XFree86のradeonのドライバがジオメトリエンジンに対応してるとは思えん。

72デフォルトの名無しさん:2001/02/19(月) 18:47
>>69
あと nVidia だとドライバ出してくれてるんですがね。これはそんなに変わらん(Windowsとはずです。
7363:2001/02/19(月) 21:08
>>71
>カーネル2.2以上にしてDRマネージャを有効にして..
そうそう速くなった。
でもなんか不安定になった(ワラ
74デフォルトの名無しさん:2001/02/19(月) 23:47
glTexImage3Dってどういう機能なんですかね?
使い方を教えてください。
75デフォルトの名無しさん:2001/02/20(火) 01:19
>>74
not 2D ?
76デフォルトの名無しさん:2001/02/20(火) 01:38
>75
1.2にglTexImage3Dあります。が、使い方が…
nVidiaのドライバ1.2正式に対応してるのかな??(winの話)
77デフォルトの名無しさん:2001/02/21(水) 12:54
そろそろ息切れかー?age
78あげます!:2001/02/22(木) 06:05
JavaでOpenGLやりたいんですが、
MagicianやGL4Java、国産(?)のJSparrow等いろいろあるようで、
いまいちそれぞれがどう違うのかよくわかりません。
なにか情報持ってる方、お教えください。
79デフォルトの名無しさん:2001/02/23(金) 09:34
.NET で OpenGL サポートはどうなるの?
80デフォルトの名無しさん:2001/02/23(金) 13:57
>>79
別にライブラリがあれば関係無いんじゃない?
81デフォルトの名無しさん:2001/02/23(金) 23:59
GL_EXT_paletted_textureについて質問です。
8Bitの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を返します。
何か間違ってますか?教えてください。
8281:2001/02/24(土) 02:13
glColorTableをglColorTableEXTにしたらなおりますた。(謎)
83デフォルトの名無しさん:2001/02/24(土) 08:38
Win2KでGLUTの動作が変になりませんか?
具体的には、ウィンドウの大きさを変えると一部が黒くなるんですよ。
やっぱしWin98とNTでなきゃだめなのかな。
84デフォルトの名無しさん:2001/02/28(水) 01:23
GLUTについて質問です
glutMainLoop呼んだらウインドウ閉じてもmainに戻ってこないのですが、
終了時に処理をさせる方法は無いのでしょうか?
メモリ開放や、ハンドルを閉じる場合はどうするでしょう?
85デフォルトの名無しさん:2001/02/28(水) 01:56
>>78
GL4Javaを使うのがよろしいかと。
Magicianはフリーで使うにも(簡単な)ライセンス取らないとキャンバス
の右下にemotionだかなんだか忘れたけどウザい文字が出る。
JSpallowも商用は何かしらのライセンスが必要だった気がする。
GL4JavaはLGPLだからその辺は大丈夫。ソースも落とせるから勉強になるし。
8678:2001/02/28(水) 22:04
>>85
レスありがとうございます。早速試してみます。
87デフォルトの名無しさん:2001/03/02(金) 04:06
OpenGLはVCとBCBのどっちが向いてる?
88デフォルトの名無しさん:2001/03/02(金) 12:44
もち、VC。
↓のがあるしね。
http://codeguru.earthweb.com/opengl/index.shtml
89デフォルトの名無しさん:2001/03/02(金) 17:30
>>83
ビデオドライバーの問題じゃないかい?
#W2KでG400使ってるんだけど最近のドライバーで
#やっとテクスチャがきちんと表示されるようになった。
90デフォルトの名無しさん:2001/03/03(土) 00:06
ありがとう。じゃあBorlandC++Compilerでやります。
参考書はOpenGL Programming Guideでいいの?
91デフォルトの名無しさん:2001/03/03(土) 12:38
赤本の内容勉強すんならコンパイラなんてなんだっていいんじゃないの?
92デフォルトの名無しさん:2001/03/03(土) 23:12
ありがとう。
やっぱ金無いんでwebとあの無料配布のpdfでやってます。

93デフォルトの名無しさん:2001/03/03(土) 23:44
ハードの対応がどうのと言う割には
アクセラレーションを有効にする方法に触れないのが謎なスレッドだ
標準で付いてくるOpenGLのスクリーンセーバがビデオカードを何にしようと
速度が変わらない理由が分かってるのだろうか
94デフォルトの名無しさん:2001/03/04(日) 01:00
>>93
教えてほしけれりゃそう言やあいいのに
951:2001/03/04(日) 02:01
>93
確かに、OpenGLスクリーンセーバ遅いね。なんであれはハードが有効にならんのかな。
あのソース見たこと無いからなんとも言えんが、自分で似たようなもん作ったら、数倍早かった。

>94
俺も知りたい。
96デフォルトの名無しさん:2001/03/04(日) 12:11
>>95
ハードウェアアクセラレーションをかける手段が一様でないからでは?
#大体あのOpenGLスクリーンセーバがつくられた頃なんて、ディスプレイリスト
#くらいしかアクセラレート手段がなかったのでは?
ディスプレイリストやgl*Pointerを使えばImmediateModeよりは早くなるけど、
wglAllocateMemoryNVみたいにローカルなアクセラレーション方法しか
ハードウェアの機能を最大限に生かす方法がないからねぇ。

BTW,昨日NVIDIAのOpenGL拡張のドキュメントが更新されたから見て見たんだけど、
専用命令を使えば、DirectX8よりもOpenGL(_NV)の方がGeforce3をしゃぶり
尽くせそう。移植性とかは全くなくなるけど。(W
97デフォルトの名無しさん:2001/03/04(日) 12:33
>>96
OpenGLスクリーンセーバは
ハードウェアが効かないだけではなく、
ウェイトも入っていたような記憶が。
#勘違いかも知れません
98デフォルトの名無しさん:2001/03/04(日) 14:23
ハード使うなら、VCに付いてるライブラリリンクしても無駄だよ
99デフォルトの名無しさん:2001/03/04(日) 15:05
>>98
どゆ意味??
opengl32.lib をリンクしといたら,
実行環境のICD設定で勝手に使われるけど.
100デフォルトの名無しさん:2001/03/05(月) 14:33
>>96
ディスプレイリストって実は速度的なメリットってそんなに無いみたい。
OpenGLの最適化のドキュメントを必死に読んでたんだけど、ディスプレイ
リストに関してはプログラムの手間を軽減位にしか触れられて無かった。
頂点配列は最近では特に高速化されるみたい。
でもこの話はハードウェアアクセラレーションとはあんまり関係無いね。
nvidiaの拡張命令は便利そうなんだけど野暮ったいんだよなあ。
シャドウマップとかバンプマップの例を見てると結構面白そうなんだけど
nvidiaのカード専用じゃ一般のアプリとしては使えないよなあ。
もしハードウェアアクセラレ=ションを効かせたいならOpenGLの
コンテキストを作る際にそれに合ったピクセルフォーマットを選べばOK。
ここん所はプラットフォームによってコードはまちまち、wglとかaglとか。
101デフォルトの名無しさん:2001/03/06(火) 01:29
>>100
ほとんど同意なんだけど、nvidiaのカードでも
頂点配列よりはディスプレイリストの方が速いよ。
どちらも普通システムメモリに作られるから、
最適化フォーマットに予めコンパイルできるディスプレイリストの方が有利。
ハードウェアメモリにバッファを作る拡張機能を使うなら話は別だけどねー。
102デフォルトの名無しさん:2001/03/06(火) 01:38
glRotatefとかglRotatefを使ってるとよくフリーズするんだけど
何か知ってることがあったら教えてください。
元のソースは捨ててしまってないんだけど、こんな感じだったとおもう。
一応視点との距離が0にはなってなかった。

void display(void)
{

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glTranslatef( 10.0, 0.0, 0.0 );
glRotatef( 5, 1.0, 0.0, 0.0 );
drawbox(-10, -50, -50, 20, 100, 100);

glRotatef( 5, 1.0, 0.0, 0.0 );
drawbox(80,-20,-20, 40, 40, 40);

glutSwapBuffers();
}

void drawbox(float x, float y, float z, float w, float h, float d)
{
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(x, y, z);glVertex3f(x, y+h, z);glVertex3f(x+w, y+h, z);glVertex3f(x+w, y, z);
glColor3f(0.0, 1.0, 0.0);
glVertex3f(x, y, z);glVertex3f(x+w, y, z);glVertex3f(x+w, y, z+d);glVertex3f(x, y, z+d);
glColor3f(0.0, 0.0, 1.0);
glVertex3f(x, y, z);glVertex3f(x, y, z+d);glVertex3f(x, y+h, z+d);glVertex3f(x, y+h, z);
glColor3f(1.0, 1.0, 0.0);
glVertex3f(x+w, y, z);glVertex3f(x+w, y+h, z);glVertex3f(x+w, y+h, z+d);glVertex3f(x+w, y, z+d);
glColor3f(1.0, 0.0, 1.0);
glVertex3f(x, y+h, z);glVertex3f(x, y+h, z+d);glVertex3f(x+w, y+h, z+d);glVertex3f(x+w, y+h, z);
glColor3f(0.0, 1.0, 1.0);
glVertex3f(x, y, z+d);glVertex3f(x+w, y, z+d);glVertex3f(x+w, y+h, z+d);glVertex3f(x, y+h, z+d);
glEnd();
}
103102:2001/03/06(火) 01:55
えっと、どんなんかっていうと上のとかなり違うけど
glutIdleFuncでglutPostRedisplayを呼んで
変数を-100〜100の間をうろうろさせて、
それをglTranslatefのx方向とglRotatefの角度に入れて動かしてました。
あ、それからglPushMatrixとglPopMatrixで挟んで
二つの直方体を動かしてました。
コンパイラはbccです。

あと、コンパイルのときに-DWIN32を付ける必要あるんでしょうかね。


とりあえず、目標はquakeです。今世紀中に完成させたいです。
104デフォルトの名無しさん:2001/03/06(火) 02:01
>今世紀中に完成させたいです
ヲイ;
105デフォルトの名無しさん:2001/03/06(火) 02:08
>104
寿命が伸びているから十分可能かと。
106102(89歳):2001/03/06(火) 02:53
VC++とかで作るとOSごと落ちる可能性は減りますかね?
bccのはDOSと直結してるっぽくてそれがよくない感じなんですけど
そうでもないのかね?
107デフォルトの名無しさん:2001/03/06(火) 03:54
>>100-101
NVIDIAのOpenGL_Perf_FAQによると、(処理時間の順に)
Imm mode > DrawElements > DrawElements using CVA > Display lists >
DrawElements Using wglAllocateMemoryNV
みたい。wglAllocateMemoryNVではAGPメモリにAllocateするより、
VideoメモリにAllocateするほうが(当然)早いみたい。
ま、でもここいらへんはローカル/ドライバの仕様次第って事で。

>>100
わたしはNVIDIA拡張萌え〜です。バンプマップとか特定の要件を
みたせばいいだけならATIのDOT3みたいな単刀直入なやつがいいかな
と思うんですが、レジスタコンバイナは結構使い道がありそうに
思えてしまうところが趣味プログラムには最適だったり。(W
もっとも
>nvidiaのカード専用じゃ一般のアプリとしては使えないよなあ。
というのはおっしゃる通り、というかゲーム以外の実用はほぼありえない
ですね。(^^;
108デフォルトの名無しさん:2001/03/06(火) 23:52
>102
BCBのコンソールでやってみたがOSごと落ちることはなかったなぁ。
でも動作があやしい。main→WinMainで再度確認してみるつもり。
glutIdleFuncでglutPostRedisplay呼ぶよりそのままdisplay呼んだ方がいいかもね。
109デフォルトの名無しさん:2001/03/07(水) 01:24
デモ見たけどバンプマップのやり方がよーわからん。
NormalMapとNormalCubeMapのdot3やったけどうまくいかん。
簡単な流れでいいからおしえて♪
110102:2001/03/07(水) 01:32
考えるとglutPostRedisplayって必要無い感じじゃない?
そのままdisplayを呼べば全て物足りると思うんだけれど。
違いがあるのかな?

> カレントウィンドウのノーマルプレーンを,再描画の必要に応じてマークする.
> 次の相互作用として,glutMainLoopを通じて,
> ウィンドウのディスプレイ・コールバック関数が
> ウィンドウのノーマル・プレーンを再表示するために呼ばれる.
> 次のディスプレイ・コールバックの前に複数の glutPostRedisplay が
> コールされても,ひとつの再描画コールバックしか有効にならないだろう.
> glutPostRedisplayはウィンドウのディスプレイまたは
> オーバーレイの表示コールバック関数内から,再表示のためにそのウィンドウを
> 再マークするために呼ばれるかもしれない.
> 論理的には,あるウィンドウに対するノーマルプレーンのダメージの知らせは,
> ダメージを受けたウィンドウ上のglutPostRedisplayとして扱われる.
> ウィンドウシステムから報告されたダメージと異なり,
> glutPostRedisplay は(glutLayerGet(GLUT_NORMAL_DAMAGED)によって
> 返される)ノーマルプレーンのダメージ・ステータスを真に設定しない.
> glutPostOverlayRedisplayも参照のこと.

The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3より
111デフォルトの名無しさん:2001/03/07(水) 02:39
>>108
WinMainを使うとGLUTの意味が無いんじゃ・・・ん?
112デフォルトの名無しさん:2001/03/07(水) 18:16
113デフォルトの名無しさん:2001/03/07(水) 19:44
うわ、すげー量。
Nvidiaにはついていけんわ。
geforce3の技術、完全に把握してる奴おるのか?
114108:2001/03/08(木) 00:50
>111
端末が出ないだけだでは?

NVIDIA拡張使いづらい。
ドライバ寄りというか…
115デフォルトの名無しさん:2001/03/08(木) 00:53
話はそれるが、
3Dプログラミングやってる人にとってgeforce3は買いなんだろうか?
116デフォルトの名無しさん:2001/03/08(木) 01:25
>>112
おとしたけどほとんどのサンプルがうごかねぇ。
早くR10ドライバをリリースすれ。>NVIDIA

>>115
・DirectX8対応ハードのみで動くアプリを作りたい人
・NV1Xのレジスタコンバイナでは機能不足な人
・Dependentテクスチャの機能が使いたくて仕方がない人
・金が余って仕方がない人
は買いだと思う。
117デフォルトの名無しさん:2001/03/08(木) 02:23
>116
どの条件も当てはまらん…
Dependentテクスチャというのがよく分からんが、
それ以外はどうでもいいと言えばどうでもいいなー
MXで別にスピード文句ないし。
118デフォルトの名無しさん:2001/03/08(木) 02:43
>>116
・NV1Xのレジスタコンバイナでは機能不足な人
はどう考えても当てはまると思うけど…
119デフォルトの名無しさん:2001/03/08(木) 04:15
>>118
スペキュラを (N・H)^m とかやりたい人なら欲しい感じ?
120デフォルトの名無しさん:2001/03/08(木) 07:25
>>119
その程度ならNV1Xで十分じゃん
121デフォルトの名無しさん:2001/03/08(木) 08:17
122デフォルトの名無しさん:2001/03/08(木) 09:56
>>118
レジスタなんちゃらの機能はほとんどかわってないよ
8ステージ使えるようになった量的変化
123デフォルトの名無しさん:2001/03/08(木) 10:05
geforce3は買いだがすぐ値が下がるだろう。しばらくは待ち。
NV1XでもR10で使用可能になる機能もあるし。
124デフォルトの名無しさん:2001/03/09(金) 07:54
アクティブに出来るテクスチャの数が増えたのは魅力だ。
コンバイナってそんなに使う?
125デフォルトの名無しさん:2001/03/09(金) 08:17
コンバイナはバンプマッピングでは必須。
ゲーム向け。
126デフォルトの名無しさん:2001/03/09(金) 13:09
>>121
R10落としてみたけど、VERTEX PROGRAMのエミュレーションが
うまくいってない気がするのは自分だけ?
127デフォルトの名無しさん:2001/03/09(金) 23:29
もうVERTEX PROGRAMに手をつけてる人がいるとは驚き!
128100:2001/03/11(日) 00:26
俺は自分で言うのもなんだけど勉強はしている方だと思うけど、
レジスタコンバイナやVertexShaderとかPixelShaderとかの使い方を
理解してOpenGLの最適化についても知識があり、ちゃんとそれらの手法を
マネージメント出来るレベルの人がいたら凄いと思う。
このスレには何人かいそうな気がするけどもっとアピールしていったほうが
いいと思う。
俺も大した知識は無いけど、無いなりにアピールしてたらその筋の偉い人と
話が出来るようになったし。
129デフォルトの名無しさん:2001/03/11(日) 12:02
みなさんの開発環境は?
やっぱり on Windowsがいいのかなぁ。
130デフォルトの名無しさん:2001/03/12(月) 11:13
>>129
Mac&Javaっす。仕事だとWindowsか。
最新のエクステンションを使いたいならWindowsがいいでしょう。
nvidiaのOpenGLSDKもWindows用だった・・・。
131デフォルトの名無しさん:2001/03/12(月) 12:29
>>130
基本的にはエクステンション+GLUT等で作られたサンプルが多いみたい
(全部見てないっす、スマソ)だから、他のプラットフォームに
移植するのもそんなに難しくないと思う。もちろん言うは易しですが。
132129:2001/03/12(月) 12:40
>130
今、OpenGLは初めてなのですが、bcc + GLUTでプログラミングしています。

Javaってことは、JSparrowとか、GL4Javaとか・・?
(i386だけでしたっけ。)
133デフォルトの名無しさん:2001/03/12(月) 15:00
>>132
JSparrowもGL4JavaもWin,Mac,Linux他で動きますよ。
結構オススメな開発環境です。
GLUTよりもクロスプラットフォーム性が高いですし、
awtのイベントモデルが使えるのは楽ですよ。
問題はビデオカードベンダー特有とか特殊なエクステンションには
対応していない事ぐらいですが、大抵のヤツには対応してますから
試してみるといいでしょう。
134132:2001/03/12(月) 15:59
>133
あ、本当だー。ありがとー。
135デフォルトの名無しさん:2001/03/12(月) 18:29
>>100
ディスプレイリストはNV_evaluatorがらみで重要になってくるカモ
136100:2001/03/12(月) 18:44
>>135
ディスプレイリスト、使い所が難しいなあ。
DrawElementsはディスプレイリストには入れられなかった。
あとポリゴン一枚をディスプレイリストで表示させたらメッチャ
遅くなった。当たり前か〜。
でもいろいろ資料をみたらやはりディスプレイリストが速いって
書いてあるのでこれから使っていこうと思います。
そこらへんの速度関係はどのビデオカードでも一緒ですよね?
で、どのように重要なんでしょうか?nvidia関係の資料は一通り
目を通したんですけど気がつかなかったです。

あ、あと全然関係ないけどRage128はline描画が凄く遅かった。ポリゴン
描画より全然重い。
137デフォルトの名無しさん:2001/03/12(月) 23:31
サーバークライアント型を考慮した作りになってるんじゃない?
138デフォルトの名無しさん:2001/03/13(火) 23:24
>>128
どの筋の偉い人?
139似非:2001/03/16(金) 19:04
>>136
憶測なんだけど。
[ディスプレイリスト/直描画]って描画自体の速度は変わらないと思うのね。
ディスプレイリストにしておくとCPUと描画が並列化されるってことじゃないのかな。
だから、ディスプレイリスト描画開始後、即glFinish()とかをやったら
まるで意味がないってことじゃないのかな。

だったらテメーが実験しろって言うのは勘弁。
140デフォルトの名無しさん:2001/03/17(土) 02:45
>>139
並列処理にも相当効果があるけど、
元々は137の言うようにサーバクライアントを意識したからだよ。

ディスプレイリストを一回サーバ側に作ってしめば、
後は何番を実行しろってコマンドを遅るだけで済む。
だからネットワーク上でも3Dアプリを高速に動かせる訳。

ディスプレイリストが無いと
頂点データを全部ネットワーク転送しなきゃならない。
glxプロトコルすら無かったMesaは、描画した後の画像を
ネットワーク転送するしかなかったから、死ぬほど遅かった。
141デフォルトの名無しさん:2001/03/17(土) 05:37
VRAM とメインめもりの関係も client/server に似てるな。
先進的というより結果オーライな仕様だったのか。
142139:2001/03/17(土) 12:36
>>140
たしかに元がSGIだってことを考えるとアーキテクチャは
サーバークライアントになるのも頷けるね。
ただ、136はどうもスタンドアロンな環境らしいので、
ちょっと別なレベルの話じゃないかと。

作ったリストをビデオカードが抱えてくれれば
スタンドアロンな環境でもc/sな風味になっていいかも。
143デフォルトの名無しさん:2001/03/17(土) 12:38
C#でやってみたいんですけど,どうやってやったらいいのか見当も
つきません。どなたか教えていただけないでしょうか?
144デフォルトの名無しさん:2001/03/18(日) 00:05
wglSwapIntervalEXT(0)
145名無しさん@お腹いっぱい。:2001/03/19(月) 16:40
VC6で凹型ポリゴンのテセレーション(タイリング)を使われた方、
いらっしゃいますか?。(GLUバージョン1.2)

VC6で凹型ポリゴンをテセレーションしようとしたのですが、
gluTessEndPolygonでGLU32.DLLで落ちてしまいます。

ネットを探したのですが、テセレーションに関するサンプルが見つかりません。
よろしくお願いいたします。
146デフォルトの名無しさん:2001/03/23(金) 03:54
参考書籍、参考サイト等ありましたら教えて下さいまし。
本屋に行っても Direct3D(だっけ?)本ばっかりで非 Windowsユーザには
辛い物があります。この間なんか不注意から、VC,VBで学ぶ OpenGL本を買って
しまいました。お救いくだされ。
147デフォルトの名無しさん:2001/03/23(金) 05:59
赤本でいいじゃん
148デフォルトの名無しさん:2001/03/23(金) 12:54
OS/2版のOpenGLってまだ生きてるの?
149OGL:2001/03/23(金) 23:51
>>146
赤本がいいでしょう。英文ならオンラインでも読めるし。ver 1.1だけど。
俺はこれで勉強したですよ。
150146 赤本とは、、、:2001/03/24(土) 01:12
http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG/

これのことでござりますな。かたじけのうござる。精進しまする。
151OGL:2001/03/24(土) 01:44
そそ。そこにも書いてあるけど5章まで読めば基本的なものはできるし、あとは
徐々に手をひろげていくのがいいかと。俺もまだすこしやり残してるけど。
152デフォルトの名無しさん:2001/03/24(土) 02:41
赤本3版の日本語版はいつ?
153OGL:2001/03/27(火) 00:23
以前だれかも言ってたけど、vertex array って使っても変わらんねえ。ほとんど
同じか逆転するときもあったりする… おかしいかな?

いちおう VIDEO MEMORY に確保してるんだけど…

ちなみに環境は linux + GeForce2 MX だけど、ちゃんとコンパイルリンク通ってるし
なあ…


154age:2001/03/27(火) 18:05
age
155OGL:2001/03/30(金) 23:52
前言訂正。
どうも解像度、トライアングル数によって話が変わってくるみたいです。
トライアングル数が多いほど、解像度が小さいほど、パフォーマンスがあがる傾向
のようです。

例えば、1200x900、58KTri/frame だと、VAR ON, OFF どちらでも、約45 fpsで
2.6MTri/secですが、約182KTri/frame だとそれぞれ28fps, 23 fpsで
5MTri/sec 対 4.186MTri/secとなります。

さらに、800x600では、58KTri/frameだとどちらも 78fpsで4.5MTri/secですが
182KTri/frameだと それぞれ 38fps, 27.4 fpsで 6.916MTri/sec 対 4.986MTri/sec
となります。カメラの向きでまた変化するし、コードの書き方によっても
ちがってくるだろうし、おおざっぱな数値ですが確かに効果はあるようです。

いいかげんなこと言ってすみませんでした>nVIDIA様。
156デフォルトの名無しさん:2001/04/11(水) 00:25
大きな画像を分割してテクスチャを作成、ポリゴンに貼り付け連結し、
2Dスプライトのように使うということをやっているのですが、
GL_LINEAR でテクスチャを作ると繋ぎ目が出てしまいます。
(GL_NEAREST だと繋ぎ目が出ないのですが、回転が綺麗じゃないです)

綺麗に出力できて繋ぎ目を目立たなくする方法、
もしくは他に何か良い方法はないでしょうか?
157デフォルトの名無しさん:2001/04/11(水) 00:57
>>156
ボーダーとか使うのわ?
158デフォルトの名無しさん:2001/04/11(水) 01:17
>>156
分割してたら無理っしょ。
UVを0.5テクセルずらすとかじゃ駄目か?
159156:2001/04/11(水) 03:17
3Dは初めてで、53 の nehe のサンプル見ながら OpenGL 触って
一週間くらいで、まだ UV とかちょっとよく分かりません。
(現在、Lesson9くらいまで読みました)

3Dハードの半透明機能などが使いたいだけなので、
簡単に実現できそうでなければ GL_NEAREST で
妥協しようかなと思っているのですが。(^-^;
160デフォルトの名無しさん:2001/04/11(水) 22:28
age
1611:2001/04/12(木) 00:42
HDDの中身全て消えて、やるき無し無しな1です。
>156
まったく関係無いと思うけど一応、
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_FASTEST);

ほかの手、(使い方は良くしらん)
POLYGON_SMOOTH
accume buffer
pbuffer?
使ってぼかす。処理重そう。
1621:2001/04/12(木) 00:54
それか、
LINEARだと隣のピクセルも必要になるから
テクスチャに重複する部分を持たせる。
データ  012 123 234 456 …
ポリゴン  1  2  3  .4 .…(実際に表示させる部分)

意味不明な説明だけどわかった?
これでうまくいくかは保証無し。
1631:2001/04/12(木) 01:13
ほかいろいろ。
164デフォルトの名無しさん:2001/04/12(木) 01:26
>>161
全部見当違い
165156:2001/04/12(木) 02:29
色々試してみましたが、ことごとく失敗に終わりました。。。
とりあえず LINEAR 使うのは
もう少し OpenGL 理解するまで我慢することにします。
1661:2001/04/12(木) 23:40
(;゚Д゚)ガーン!
167デフォルトの名無しさん:2001/04/13(金) 10:42
>>156
テクスチャ座標を0.5ピクセル分内側にずらしてみそ。

168デフォルトの名無しさん:2001/04/13(金) 16:37
VC6 使ってます。
gluTessCallback のヘルプのサンプルにあるとおりに、

gluTessCallback(tess, GLU_TESS_BEGIN, glBegin);
gluTessCallback(tess, GLU_TESS_VERTEX, glVertex3dv);
gluTessCallback(tess, GLU_TESS_END, glEnd);

って、記述したら
error C2664: 'gluTessCallback' : 3 番目の引数を 'void (unsigned int)' から 'void (__stdcall *)(void)' に変換できません。 (新しい機能 ; ヘルプを参照)
って、怒られました。
どうしたらよいのでしょーー。
169デフォルトの名無しさん:2001/04/13(金) 17:43
gluTessCallback(tess, GLU_TESS_BEGIN, (void (__stdcall *) (void))glBegin);
gluTessCallback(tess, GLU_TESS_END, (void (__stdcall *) (void))glEnd);
gluTessCallback(tess, GLU_TESS_VERTEX, (void (__stdcall *) (void))glVertex3dv);

170デフォルトの名無しさん:2001/04/13(金) 20:17
>>169 榕タ
171デフォルトの名無しさん:2001/04/17(火) 13:12
困ってます。

WinNT4.0sp5 VC++6 で今まで開発してたんですが、
Win2000 に変えたとたんに(クリーンインストール)OpenGL の描画が遅くなってしまいました。
ビデオは IBM のオンボードで、Win2000 の sp1, VS6 の sp5 をあててみましたが
何の改善もされませんでした…。

>>83 さんの症状とは違う様です。
どなたか、こんな症状を解決した方、解決策ご存知の方教えて下さい。
172デフォルトの名無しさん:2001/04/17(火) 13:44
>>171
IBMのオンボードって何だ?
IBM製のカードでオンボードってあったか?
173デフォルトの名無しさん:2001/04/17(火) 13:46
やっぱりPCで比較的安価にOpenGLというと、nVIDIAなのかな?
RADEONやKYROはどうなんでしょう?
174171:2001/04/17(火) 13:54
>>172

すんません。IBM のマザーボードにオンボードのビデオ出力っつう事です。
RAM から勝手に 6M 使って描画するバカ野郎の事。
175デフォルトの名無しさん:2001/04/17(火) 14:17
そりゃWin2000用のICDが無いんでは?
チップの種類が判らないと何とも言えないが。
176171:2001/04/17(火) 17:11
>>175

[ディスプレイ]

名前 Intel Corporation 810 Graphics Controller Hub
PNP デバイス ID PCI\VEN_8086&DEV_7123&SUBSYS_71238086&REV_02\3&13C0B0C5&0&08
アダプタの種類 Intel810, Intel Corporation 互換
アダプタの説明 Intel Corporation 810 Graphics Controller Hub
アダプタ RAM 4.00 MB (4,194,304 バイト)
インストールされているドライバ i81xdnt5.dll
ドライバ バージョン 5.11.01.0133.3-NT5 Eng. Sample 03:01AM
INF ファイル i81xnt5.inf (i81x セクション)
カラー プレーン 1
カラー テーブル 65536
解像度 1280 x 1024 x 60 ヘルツ
ビット/ピクセル 16

こんな感じです。6M つってたけど 4M だった…
他の表示に関しては問題なくて、OpenGL の場合だけなんで、
ディスプレイドライバとか関係なさそうな気がするんです。
しかも VC++ から実行した場合のみ。(Debug Release 問わず)
exe をダブルクリックで実行したら遅くないんです。
何が原因として考えられるのでしょう。
177デフォルトの名無しさん:2001/04/17(火) 18:38
>>171
ビデオドライバを最新のものに更新してみては?
多分3Dアクセラが効いていない。

178171:2001/04/17(火) 19:05
>>177

分かりました。やってみます。
ありがとうございました。
179デフォルトの名無しさん:2001/04/17(火) 20:10
>>176
画面が広すぎてメモリが足りないんじゃないの?
でも810なら結局ドライバの手抜きか
180171:2001/04/18(水) 10:17
>>177 >>179

171 です。ドライバ更新してみました。
なんで VC++ から実行した時だけなのか理解不能だったのですが、スピードは改善されました。
ありがとうございました。

View の上にもう一つ View 貼り付けてサブ画面みたいな事してるので、
タイムラグ自体は眼に見えますが、質問した時の "1~2 秒後" って事が無くなったので、
これで良しとしておきます。マシン自体 セレロン 500 MHz ですし…。
(ちなみにメモリ 192M で 1280 * 1024 16bit カラーです)

まがりなりにも 3D の開発なのに、P4 1.3GHz もビデオボードも稟議通りませんでした…。
メモリも 64M は、所長の機械から黙って抜いたモノです。 << まだ気づかれてない(藁
181デフォルトの名無しさん:2001/04/18(水) 15:08
>P4 1.3GHz もビデオボードも稟議通りませんでした…。
だからって普通、i810になるか?
182171:2001/04/19(木) 11:23
>だからって普通、i810になるか?
普通ぢゃないのか…鬱死。
183GL名無し:2001/04/22(日) 03:10
定期age
184デフォルトの名無しさん:2001/04/22(日) 15:37
GL_EXT_vertex_weightingってどういう具合につかうものなのでしょうか?

あと、頂点配列をスキン変形させたいときって、ハードウエアでいけますか?
今現在、スキンとかモーフィングとかソフトウエアで計算してるんですが、
ハードでいければいいな
185デフォルトの名無しさん:2001/04/22(日) 15:51
>>184
GL_EXT_vertex_weightingがスキン用ですね。

使い方忘れてしまったんですが、
モデルビュー行列のモードがもう1つ用意されていて、
これに適切な行列をセットしておいて、
頂点データにウェイトをつけるという簡単な使い方だったかと。
186184:2001/04/22(日) 18:15
>>185 レスありがとう
ということは、

glMatrixMode( MODEL_VIEW0 );
glVertexWeightEXT( weight0 );
glVertex3fv( v );
glMatrixMode( MODEL_VIEW1 );
glVertexWeightEXT( weight1 );
glVertex3fv( v );

みたいになるのかな?
そうだとしたら使いにくそ−・・・

DX8には、それぞれの頂点に行列のインデックス保持して
いっきに計算できるように見えるんですがOGLでそんなことできないのかな?

OGL拡張って、どっちかというとレンダリングクオリティに力入れてるのかな・・
187デフォルトの名無しさん:2001/04/23(月) 00:14
>>186
俺も使い方忘れたが、
イチイチMatrixMode変えてglVertexやる必要なかったと思った。

MODEL_VIEW0や1を適当にいじって、
glBegin(GL_LINE_STRIP);
for(GLfloat i=0;i<1;i+=.1)
{
 glVertexWeightfEXT(i));
 glVertex3fv(i*100-50,0,0);
}
glEnd();
やってみると分かりやすいかもね。
188デフォルトの名無しさん:2001/04/23(月) 00:55
>>186
187が書かれているように、
行列は最初に一度だけセットしておけばOKです。

>DX8には、それぞれの頂点に行列のインデックス保持して
GL_NV_vertex_program (VertexShader) を使うとか。
面倒ですけど。
189デフォルトの名無しさん:2001/04/23(月) 20:23
任意図形でのクリッピングってどう実現できますか?
まず考えられるのはステンシルマスクで書きたいところだけマスクする
って所だけど、ハードウェアに高級なものを要求しちゃうからなるべく
軽い(安カードで実現できる)方法を考えてます。
190184:2001/04/24(火) 00:13
>>187
ありがとうございます。
やってみますね。

>>188
シェーダー、魅力的だけどある程度普及してくれないときびしーですね・・・

このスレ、普通によいスレですね
191デフォルトの名無しさん:2001/04/28(土) 05:38
WildCat4000,4100でOpenGLプログラム
実行したら変にならないですか?

FireGLとかGeforceとかのマシンだときちんと表示されるのに
WildCat4000,4100だとだめなんです。。

例えば・・

WildCat4000なら
テクスチャマッピングがうまく張られない。
張られてるんだけどあきらかにおかしい張られ方してる。
(gluBuild2DMipmaps() 使ってます)

WildCat4100なら
何故かセレクションが手前でなく一番奥の
ポイントがセレクトされてしまう。。

それぞれ最新ドライバをいれています。
知ってる方がいたら教えて欲しいです。
192デフォルトの名無しさん:2001/04/28(土) 08:21
GEFORCE3はようやく今日発売らしー
5万円弱
193デフォルトの名無しさん:2001/04/29(日) 00:36
>>192
5万円弱か〜。微妙な値段だな…
7万だったら絶対買わないけど。
とりあえず様子見
194デフォルトの名無しさん:2001/04/30(月) 01:09
texture map, bump map, texture map + separate specular を経験してる
人に聞きたいんですが、パフォーマンスはそれぞれどの位でしょうか?

単なる texture map が一番早いとは思いますが、他はそれに比べて我慢できる
程度のものでしょうか?
195デフォルトの名無しさん:2001/05/02(水) 06:31
age
196デフォルトの名無しさん:2001/05/02(水) 12:24
>>189
いろいろあると思うけど、任意図形をアルファ値だけのテクスチャ
にしておいて、ソースアルファテストつきで描画→
ディスティネーションアルファテスト付きでモデル描画とか、
ディスティネーションアルファが使えなければ、図形の反転した
部分だけを(ソースアルファテストを使って)Z値だけ埋めていき、
あとはZテスト使って普通に描画とか。

>>194
ハードによるんじゃない?NV_vertex_program(ATI_vertex_transform)
とかを使えばバンプマップの接線座標系のトランスフォームも
ハードウェア支援が受けられるし、そこそこ使えるのでは?(ハード依存するけど)
#もっとも我慢できるかどうかは忍耐力に依存しそうだ。
197194:2001/05/02(水) 13:53
>>196
回答ありがとうございます。

ハードウエアの支援方法を勉強しようと思います。(NV_vertex_program)
198デフォルトの名無しさん:2001/05/02(水) 18:36
>>196
バンプマップはマルチテクスチャーで描画した方がいいような。
vertex programは頂点を増やしたりすることは出来ないし、
細かくしようと思うとただの四角ポリゴンに何百っていう
頂点数が必要だし。
ただ問題は、テクセルのブレンドにdotが使えないとダメって点
かな。と言うか、もしかしてOpenGLでそれ対応してるのってnvidiaだけ?

あ、あと>>189に対する返事サンキューです。
ディスティネーションアルファは恐らく使えないんで、後は
Depth Bufferしかないんだけど、任意でクリッピングした領域の中
でDepthTestとかしたいんですよ。とは言え最早これしか方法は無い
んだろうか・・・。
199デフォルトの名無しさん:2001/05/02(水) 19:59
>>198
vertex_programは今までバンプマップをする時にCPUでやっていた
接線座標系のトランスフォームをGPUでやるって意味です。
(決して頂点を増やすって意味ではないです〈汗)
この方法でも、もちろんマルチテクスチャ、DOT3等は使います。
#判りにくくてゴメソ。
あと、ATIもOpenGLでDOT3に対応してたと思う(こっちは使ったこと
無いので詳しいことは知らないですがEXT_texture_env_dot3とか
があるみたいです)

> 任意でクリッピングした領域の中でDepthTestとかしたいんですよ。
任意でクリップした領域の上にDepthBufferを上書きしていけば
大丈夫でわ?(なんか誤解してたらすまんス)
200デフォルトの名無しさん:2001/05/03(木) 01:53
>>199
そう言えばテクスチャベースのバンプマップってポリゴン毎にライトの座標系
をポリゴンのローカル座標系に変換する必要がありましたね。
ここん所をパイプライン分断せずに処理できたら強そうだ。
しかしNV_なんたらとかやってないでOpenGL1.3の標準機能とかにして欲しいっス。マジ。

>任意でクリップした領域の上にDepthBufferを上書きしていけば
>大丈夫でわ?(なんか誤解してたらすまんス)
そうすると任意クリッピング用のDepthBufferが壊れててしまいませんか?
一つの解法として、DepthRangeでクリッピング用のレンジを設定してやれば
無理無くできる気がしています。精度が落ちるけど。
201デフォルトの名無しさん:2001/05/03(木) 21:49
age
202デフォルトの名無しさん:2001/05/10(木) 16:59
原因がわからないので教えて下さい。

環境は WinNT4.0 VC++6.0 で、

hogeView::OnDraw(CDC* pDC) {
  // この辺で wglMakeCurrent( pDC->m_hDC, m_hRC );
  // CreatePointFont(…); SelectObject(…);
  // は成功してると思って下さい

  if (!wglUseFontBitmaps( pDC->m_hDC, 0, 256, 1000 )) { // この戻り値が FALSE
    GLenum err = glGetError(); // この値が GL_NO_ERROR
    // これを DWORD err = GetLastError() にしても戻り値は 0
  }
  DrawWithOpenGL( pDC );

  // wglMakeCurrent( pDC->m_hDC, NULL );
  // DeleteObject(); glDeleteLists(0, 1000);
  // とかもちゃんとやってると思って
}

問題というのは、wglUseFontBitmaps() の戻り値が FALSE の時、
GetLastError() とか glGetError() やっても戻り値が 0 なんです。
そのせいか、無理やり後の DrawWithOpenGL(実際の描画) しても、
フォント以外の要素(GL_LINE)も描画されないんです。

だれか原因あるいは究明方法ご存知の方、教えて下さい。お願いします。
203デフォルトの名無しさん:2001/05/11(金) 00:27
>>202
あまり使ったこと無いから適当に言うけど、
・使ってるフォントが悪い。違うの使ってみる。
・ちゃんとpDC->m_hDCにフォントを選択しているか。
・ちゃんとglGenLists使う。(はて、関係あったか?)
・ただ単に字が小さい。または、大きい。
・glCallList(s)で違うリストを呼んでいる。
ソースを見た感じ、
wglUseFontBitmaps(pDC->m_hDC, 0, 256,1000)は、
先頭0番目から256個の文字をリスト1000から順番に入れていく。ってのは分かってると思うけど、
描画する時、ちゃんと文字を入れたリスト1000以降をCallしてる?
glCallLists(6,GL_UNSIGNED_BYTE,"OpenGL")見たいな呼び方してるならglListBaseは必要。
glDeleteListsが必要だったかは良くわからんが、glDeleteLists(0,1000)はおかしい。
使ったフォントを消したいなら、glDeleteLists(1000,256)。(リスト1000から256個削除)

多分、使ってるフォントが悪いか、glGenListsかだと思う。
ところでリスト0って定義出来たっけ?
ダラダラ書いたが、全てがあやふやなので聞き流してくれ。
中に当りがあったら明日は晴れだ。
204デフォルトの名無しさん:2001/05/11(金) 00:32
あほな質問だけどOpenGLって何がOpenなの?
総称ってOpen Graphics Library?
205デフォルトの名無しさん:2001/05/11(金) 10:09
>>203

ありがとうございます。
glDeleteLists(0,1000) は書き込みの後で気付いて訂正しました。
glGenLists() はやってないので試してみます。
フォントは Courier New 使ってるので大丈夫だと思います。
206203 = 205:2001/05/11(金) 12:04
ごめんなさい。>>203
解決しました。OpenGL とは全然関係ないところで、0 除算してたのが原因デシタ…。
申し訳ないっす。でも参考になりました。ありがとうございました。

デワ逝ってキマス…
207203:2001/05/11(金) 23:11
>>206
 (\     ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  \\/ (・∀・)<  逝かなくてもいいよ!
   ( 。 /U U  \_____________
   U⌒U
208デフォルトの名無しさん:2001/05/13(日) 20:05
Savege4でOpenGL動いてますか?
209Take:2001/05/13(日) 20:42
>>208
私の環境(Win2000 + VC++6.0 )でボードはDiamondのStealth540ですが
ちゃんと動いてますよ。確かチップはSavege4だったと思うんですけど。
210デフォルトの名無しさん:2001/05/16(水) 14:40
勉強になるなあ。
211デフォルトの名無しさん:2001/05/16(水) 23:16
auxSolid**
系の関数使うとメモリリークするんですけど。

このバグフィックスしたバージョンのものの存在、どなたかご存知ないですか?
212デフォルトの名無しさん:2001/05/16(水) 23:50
俺はglutがメモリリークするよ。
213208:2001/05/17(木) 13:54
>>209
サブ画面用にレンダリングコンテキストを作り直すとSavage4だけ落ちます
モバイルSavageは初期化で落ちます
214208:2001/05/18(金) 21:22
G450でもレンダリングコンテキスト作り直しで落ちた
ドライバのバージョンを最新の一つ前にしたら落ちなくなった
鬱だ
215デフォルトの名無しさん:2001/05/18(金) 23:19
GLfloat、GLdoubleどっちで使ってる?
216デフォルトの名無しさん:2001/05/18(金) 23:26
>>215
full auto
217名無しさん:2001/05/19(土) 00:17
age
218名無しさん:2001/05/19(土) 00:17
age
219名無しさん:2001/05/19(土) 00:17
age
220名無しさん:2001/05/19(土) 00:18
age
221名無しさん:2001/05/19(土) 00:18
age
222デフォルトの名無しさん:2001/05/21(月) 02:25
full autoって?
223デフォルトの名無しさん:2001/05/21(月) 10:49
MFCのsplitwndにopenglviewを貼り付けてます。
しかし1番目のウインドー以外正しい位置でレンダリングされません。
4つのウインドーはそれぞれのRCをもちwglShareListで共有してます。
OnDrawでは、大まかですが
wglMakeCurrent( dc , rc );
glMatrixMode(GL_PROJECTION )
glLoadIdetinty();
glViewport(w,h);
glFrustum(...);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
.................
SwapBuffer(..)
wglMakeCureent(0,0);
のようになっています。1画面だとうまくいっているようなんですが、
どこがいけないんでしょう?・・・・
こういうサンプルもなくかなり悩んでます…
224223:2001/05/21(月) 17:19
自己レスです・・・
レンダリングコンテキストを共有したら、うまくいっているように見える。
これでええの?^^;
225デフォルトの名無しさん:2001/05/21(月) 18:51
>>223
http://www.gamedev.net/reference/programming/features/3dmfc/
参考にならなかったらスマソ。
226223:2001/05/22(火) 00:29
>>225
お〜まさしくそのものですね。
ありがとうございます。
227デフォルトの名無しさん:2001/05/22(火) 23:53
PBUFFERってどう言う使い道ある?
ただ見えないバッファ作るってだけで、用途が無いような気がするんですけど。
それとレンダリングコンテキスト二つ用意するのと違いってあるの?
228デフォルトの名無しさん:2001/05/23(水) 00:16
>>227
ゲームとかでマルチパスレンダリングしたいとき
(動的に環境テクスチャを作るとか、シャドウマップを行うときとか)
に使うんじゃないかな?
#シャドウマップに限るならGeforce3ならSGIX_depth_textureとか
#つかうのかな?
229デフォルトの名無しさん:2001/05/23(水) 01:12
>>228
直接テクスチャとして使えるんですか?
glCopyTexImage2Dで吸い上げるんなら、ダブルバッファにして裏に書いたら良いような気も?
230デフォルトの名無しさん:2001/05/23(水) 02:26
>>229
結局glCopyTex[Sub]Image2Dとかで吸い上げるんだけど、(違う方法
もあったらゴメソ)スクリーンサーフェースと違う解像度、Pixel Format
等でレンダリングできるのがウリみたい。
231デフォルトの名無しさん:2001/05/23(水) 03:05
>>229
あと、吸い上げるつーてもハードウェアメモリ間で
コピーされるからかなり速いよ。
無論直接テクスチャとして使えた方がもっと嬉しいけど。
232デフォルトの名無しさん:2001/05/23(水) 04:26
実際にはコピーすらしてない場合もあるから速いらしい。
そこはドライバ次第らしい。
でもトリッキーなので新しい仕様が練られてるらしい。
233デフォルトの名無しさん:2001/05/23(水) 10:24
>>232
おお、そうだったのか!
234227:2001/05/24(木) 00:50
>>228-233
ん〜。便利そうな気もしますが、
わざわざバッファ用意してテクスチャ位しか使い道ないってのも…。(されどテクスチャ?)
他に用途はあります?
とりあえず、物は試しで使ってみます。
235デフォルトの名無しさん:2001/05/27(日) 21:22
open-glで3Dの文字の書き方教えてください
cでlinuxをつかってやってます
236デフォルトの名無しさん:2001/05/27(日) 21:55
GLUTにアルファベット文字のデータ入ってなかったけ?
237デフォルトの名無しさん:2001/05/27(日) 22:04
わからないです
はいってるんですか?
どうやってつかうんですか?
238デフォルトの名無しさん:2001/05/27(日) 22:07
>>237
教えてクソ、10分調べただけで質問すんなや。
239デフォルトの名無しさん:2001/05/27(日) 22:13
>>235
http://reality.sgi.com/mjk/glut3/glut3.html からGLUTの3.7のパッケージをダウンロード
・progs/contrib/text3D.cをコンパイル
・実行する→ウマー

#でもこれくらい自分で調べようよ…
240初心者:2001/05/28(月) 16:20
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
241初心者:2001/05/28(月) 16:21
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
242初心者:2001/05/28(月) 16:32
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
243デフォルトの名無しさん:2001/05/28(月) 16:35
3回も聞く人には教えてあげません
244初心者:2001/05/28(月) 16:48
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
245デフォルトの名無しさん:2001/05/28(月) 18:32
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
スライダーバーで各種変数を変化させ、それをリアルタイムで
OpenGLで表示させたいのだが、Invalidateを入れると画面がチカチカ
してしまいます。

数値が変化したときだけ、画面を更新させる方法はないですか?
246デフォルトの名無しさん:2001/05/28(月) 22:08
ダブルバッファにしてもちらつきますか?
247デフォルトの名無しさん:2001/05/29(火) 00:50
InvalidateじゃなくSwapBuffersでいいんでねーの??
248245:2001/05/30(水) 14:16
>246
>247

遅レスなってスイマセン。
お二方の書かれたとおりにプログラムを書きましたら
できました。非常によい助言ありがとうございます!
249デフォルトの名無しさん:2001/06/07(木) 05:57
たまには、
250名無しさん@OPENGL:2001/06/26(火) 16:04
あげてみるか。
251デフォルトの名無しさん:2001/06/26(火) 17:49
vrmlファイル読み込んで快適に表示&モデル制御できてるやついるかゴラァ!
cybervrml97は読み込み(シーングラフの構築)にカナーリ時間かかるぞ
252デフォルトの名無しさん:2001/06/27(水) 16:32
QvTraverseを後悔しよう!
253ななしさん:2001/06/27(水) 21:24
QUAD/Vertexでルービックキューブ(3x3x3)作って
Light/MaterialでAlphaチャネルいじって全透過で見たいんだけど
端っこの4個がどうしても透過がうまくいかないんだ。
どうしょう。ちなみにOpenGL4Javaっす。
うみゅ。
254デフォルトの名無しさん:2001/06/28(木) 01:52
「端っこの4個」の意味がよくわかりませんが、
透過を綺麗にやろうとすれば3x3x3の立方体を描画
する順番をきちんと考えて制御しないとだめっすよ。
255ななしさん:2001/06/28(木) 19:22
>>254

gl.glDepthFunc(GL_ALWAYS)
入れたら上手く透過できました。デフォルト(GL_LESS)だったようです。
アクリル版で作ったルービックキューブ(ちょっと青色)みたいで
グルグル回して涼しいですぅ。
256ななしさん:2001/06/28(木) 20:58
ふと思ったこと。
GL4Javaってauxライブラリ使える?
257デフォルトの名無しさん:2001/06/30(土) 00:19
Teapot!
258デフォルトの名無しさん:2001/07/01(日) 04:09
windowsプログラムなのになぜmainから始まりますか?
259デフォルトの名無しさん:2001/07/05(木) 21:32
むしろCプログラムなのになぜmainから始まりませんかという感じ
260  :2001/07/06(金) 13:22
Win2K+GL4Javaでセレクション上手くうごかないょぅ。
261デフォルトの名無しさん:2001/07/07(土) 00:15
windowsで赤青めがねを使った立体視したいんですが、参考になるようなページがあれば教えていただけないでしょうか。
262デフォルトの名無しさん:2001/07/08(日) 03:44
>>256
ふと目にはいったんでレス。
使えないよ。gluとglutの一部は使える。
263256:2001/07/09(月) 14:46
>>262
ありがと。
なんとなく使えない気がしてたよ。
264デフォルトの名無しさん:2001/07/11(水) 15:47
定期アゲでしょ。勉強になる!
265デフォルトの名無しさん:2001/07/17(火) 06:57
NURBSバリバリ使いこなしてる人いる?
266デフォルトの名無しさん :2001/07/28(土) 00:30
画面上の物体を常にワールド座標で回転させるにはどうすればいいんでしょうか。
(物体にどんな回転がかかった後でも、ワールド座標系のx軸、y軸、z軸で回転させたい)
267デフォルトの名無しさん:2001/07/28(土) 01:51
>>266
前に回転した行列をとっておいて、その行列にワールド座標系の
回転行列を左から掛ければよいです。時々正規化しましょう。
268デフォルトの名無しさん:2001/07/28(土) 02:36
>>267
レスどうもです。
行列をとっておくのはglPushMatrix()ですよね。
その行列の左から新しい行列を掛け合わせるにはどうすればいいんでしょうか。
glPopMatrix()で取り出した後にglRotatef()とかやると、右側から掛けることになっちゃいますよね。
269デフォルトの名無しさん:2001/07/29(日) 03:34
>>268
姿勢の制御用にOpenGLの行列操作を利用してはダメです。自前でクラスなり
を作りましょう。
例えば、オブジェクト座標系の行列をMo、ワールド座標系の回転行列をMrと
すれば、ワールド座標系での回転は、Mr x Moで表現できる。
左から掛けるというのは単に計算の順番をいれかえてやるだけです。
270デフォルトの名無しさん:2001/07/31(火) 23:28
MFCのCSpritterWndで4つのOpenGLビューウィンドウ
を作ったんですが これらのウィンドウのバーの部分に
メニューをつける方法ってあるんでしょうか?
メタセコイアとかマヤみたいに。
この方法をご存知の方、よければ教えてください。
271デフォルトの名無しさん:2001/08/01(水) 23:21
>前に回転した行列をとっておいて、その行列にワールド座標系の
>回転行列を左から掛ければよいです。時々正規化しましょう。

時々正規化する。というところがわかりません。
こうしないとどうなるのでしょうか?
272デフォルトの名無しさん:2001/08/02(木) 23:32
Libretto買おうと思ってるんだけど
ttp://www.watch.impress.co.jp/pc/docs/article/20010802/toshiba.htm

これについているSavageIX(8MB)ってOpenGL対応しているのでしょうか?DirectX
もそれなりに速ければなお良いのですが。

あとWindows2000だとOpenGLの一部でDirectX使っているというのは本当ですか?
273デフォルトの名無しさん:2001/08/03(金) 00:24
>>272
対応しているよ。
実装がヘボいらしいけれど・・・。
274!=267:2001/08/03(金) 00:45
>>271
行列が正規直行から外れてだんだんオブジェクトの形が崩れてくる
ただし目で見て分かるのは何年も連続稼動したあとだと思う
275デフォルトの名無しさん:2001/08/03(金) 01:41
正規化は外積2回取るのでいいのかな?
276デフォルトの名無しさん:2001/08/03(金) 23:24
>>275

正規化って単位行列にすることかと思ってた。
外積2回取るとどうなるの?
277デフォルトの名無しさん:2001/08/04(土) 05:03
>>272
SavageIXは一見動作しているようなフリをしてOSごとフリーズするから嫌い。
278デフォルトの名無しさん:2001/08/04(土) 08:11
>>272
現行のノートPC用のチップにOpenGLを期待すること自体が無意味だと思われ。

そういやモバイル用Geforceチップの話はどこにいったんだ。
東芝あたりが搭載したノートを4月に出したはずだが、国外オンリーだしYO。
279デフォルトの名無しさん:2001/08/04(土) 16:43
ノートでちゃんと使えるのはGeForce2 Goチップだけ
280デフォルトの名無しさん:2001/08/04(土) 16:50
>>278
DELLもTOSHIBAもgeforce2 goを乗っけたマシン国内向けに売っているけれど、
それじゃなくて?
281デフォルトの名無しさん:2001/08/04(土) 16:51
>>277
落ちたことないけれどなあ・・・。
282272:2001/08/06(月) 23:13
LibrettoでOpenGLしている人いない?
そろそろノートでも3Dしたいですよね。
283デフォルトの名無しさん:2001/08/07(火) 14:17
俺リブでGLやってます。(先日買った)
なんかダブルバッファOnにすると表示が乱れる現象があって困り者。
ダブルバッファ使わなければ問題無いがなんかな〜。
ドライバ更新を待つしかないのか・・・・
284283:2001/08/07(火) 14:23
画面の色数変えたら直った。
285デフォルトの名無しさん:2001/08/07(火) 20:19
>>280
まじで?情報サンクス。探してみるわ。
286デフォルトの名無しさん:2001/08/07(火) 20:20
ところで、GeForce2 Goって性能どんくらいなん?
287デフォルトの名無しさん:2001/08/08(水) 18:09
テクスチャバッファを取得する方法って無いのでしょうか?
フレーム毎にテクスチャ自体を書き換えたいのですが・・

やっぱ、
毎フレームglTexImage2D()をコールしないとダメでしょうか?
288デフォルトの名無しさん:2001/08/08(水) 23:00
>>287
glTexSubImage2D のほうがよい
最近のカードであれば期待した動作になるはず
289やっと半年:2001/08/09(木) 07:09
OpenGLで描いた画面を印刷したいんだけど、プリンタに対してはOpenGL命令は無効なの?
自分で試した限りではダメでした。
こういう場合はビットマップに描いてからそれをプリンタに出力しかないのかなぁ?
290287:2001/08/09(木) 10:18
>>288
ありがとうございます。

glTexSubImage2Dで既存のテクスチャを置き換える関数が
わざわざ用意されているということは、
glTexImage2D()を毎フレームコールすると、イメージが
どんどん追加されていくのでしょうか?
それとも、単なるパフォーマンスの違いでしょうか?
291デフォルトの名無しさん:2001/08/10(金) 00:13
>>290
glTexImage2Dはテクスチャオブジェクトを新規生成する。
glTexSubImage2Dは既存のテクスチャオブジェクトのピクセルだけを書き換える。
なんとなく前者が重い処理に思えるでしょ。え?思えない?

最近のドライバは後者のために最適化されていたりするらしいので、
頻繁に書き換えるのが前提であるなら glTexSubImage2D の利用を考えてみては。

蛇足ですが、レンダリング結果をそのままテクスチャにする、なんてことをやるには、
これと同系統の命令を使います。命令名失念。glCopyなんとか。

ちとズレますがDirectXでも同様です。
DirectXだとサーフェスをロックしてカキコですね。
転送フォーマットを考えないでいい分、OpenGLのほうが楽ですけど・・・
292287:2001/08/10(金) 09:34
>>288,>>291
ご丁寧にありがとうございます。
当初の目的を達成できました。

全然話が変わるのですけど、GeForce3でVRAM to SYSTEMの
イメージ転送(レンダリングイメージ等)をすると、
OpenGLだとそこそこの速度で転送できるのに、
DirectX8だとまるでパフォーマンスがでません。
どういうカラクリなんだろう・・?
DX8でレンダリングターゲットをロックして
単純なメモリアクセス
*sys++ = *vram++;
でも、めちゃくちゃオーバーヘッドがかかります。
CopyRect使っても変わらないですね。640x480x32の転送で30fps位・・
そういう理由でOpenGLを選択したんですけど、
他のカードではどうなんでしょう?
G450だとDX8でもVtoS転送は速いです。
これは、nVIDIAのせいか?

・・・って、スレ違い?
293デフォルトの名無しさん:2001/08/11(土) 00:18
SYSTEM to VRAMじゃなくて、VRAM to SYSTEMなんですね。
やったことないスマソ

レンダリングターゲットから一旦外してみてはどうでしょう。
(あるいはターゲットを別サーフェスにする)
ターゲットされてる間は、特別扱いになってる気がしないでもないです。

>・・・って、スレ違い?

そろそろやばいかな〜
294デフォルトの名無しさん:2001/08/13(月) 05:32
OpenGLで3Dモデルファイルを扱う場合はどのような形式がお勧めでしょうか?
あるいは主流でしょうか?
XGLとかはすでに死んだフォーマットなのでしょうか?
295デフォルトの名無しさん:2001/08/16(木) 21:44
>>294
vrml
296デフォルトの名無しさん:2001/08/24(金) 23:51
>>295

なんで?
297デフォルトの名無しさん:2001/08/25(土) 00:10
bsp
298デフォルトの名無しさん:01/08/27 23:33 ID:rH3n9S2o
bspするのみvrmlを使うのがよいということでしょうか?
よくわからないのですが。
299デフォルトの名無しさん:01/08/27 23:34 ID:rH3n9S2o
のみ→ために
300デフォルトの名無しさん:01/08/28 01:03 ID:tmNas1cA
OpenGLでトーンシェーディングやっているソースってないでしょうか?
301デフォルトの名無しさん:01/08/29 23:28 ID:A6szD0bQ
302デフォルトの名無しさん:01/08/30 23:04 ID:KzLfL2Es
>301

Thanx!gdmagのやつだね。
303デフォルトの名無しさん:01/08/30 23:49 ID:4x/VOGOc
304k:01/09/08 01:53
読むの楽だからあげさせてもらいます。
305デフォルトの名無しさん:01/09/08 17:07
海外に比べて国内だとOpenGLよりDirectXが使われる機会が多いような
気がしますがそれはなぜでしょうか?

OpenGL使ったゲームとかすくないよね。

日本語の資料が少ないせいかな?
OpenGLでゲーム作りたいのですが市場が許さない?
306デフォルトの名無しさん:01/09/08 17:20
>>305
あなたの現在の立場は?
307デフォルトの名無しさん:01/09/08 18:01
>>306

新人ゲームプログラマです。普段はコンシューマゲーム機でゲーム作っています。
PCで出すならOpenGL使いたいかなって思っているところです。
308デフォルトの名無しさん:01/09/08 18:29
>>307
PCのビデオカードがnVidiaだけならOpenGLもありだとは思う。が、
いかんせん他のビデオカードでの対応が悪すぎて、使えない。

まあ、DX7以降はD3DとOpenGLとの差異が少なくなってきてるから、
"一般に配る"プログラムなら、どっちで作ってもあんまり変わらんよ。
(このスレに時折でてくるGL厨房の妄言は無視しようね☆)

それ以前に、
PCゲーム市場に金を出してくれる人がいないという問題もあるけど。
309デフォルトの名無しさん:01/09/09 00:36
>PCゲーム市場に金を出してくれる人がいないという問題もあるけど。

この件を考えないでいいとして質問。
同じゲームでDirectX使って作ったものとOpenGL使って作ったもの
あなたならどっち買う?
310デフォルトの名無しさん:01/09/09 00:49
面白いほう。
311デフォルトの名無しさん:01/09/09 00:52
>310

たしかにそうだな。
面白さも同じならどっち選ぶ?
買う側にとっては 310 の言うようにどっちでもいいよね。
むしろ、聞き慣れない得体の知れないライブラリ(?)を使われると
「うごかねーんじゃねーの」と敬遠される理由になりかねない。

>>311
「まともに動きそうな方」になるでしょうね。
消費者もバカじゃないから、動かない可能性は排除したがるみたいです。
313デフォルトの名無しさん:01/09/09 01:29
コインでも投げて決める。
そもそもどんなテクノロジーが使われてるかなんて
一般消費者から見てどうでもいいことなんか選択基準に
なりようがない。
>>311
手持ちのハードウェアで確実に動くほうでしょ。

で、そんなことで悩みたくないから PS2 のゲームを買う。
315デフォルトの名無しさん:01/09/09 10:03
みんないろいろありがとう。
とりあえずOpenGLでやってみます。
OpenGLってグラフィックのみだからなぁ
DirectXはグラフィック、サウンド、入出力まで揃ってるし
OpenGL採用してるゲームってWin以外にも移植性考えてるからじゃないの?
Win以外って何があるんだよ
318デフォルトの名無しさん:01/09/09 11:44
Macかな?金になりそうなのは。Linuxは金にならんかも。
研究用ならマルチプラットフォームの方がいいけどね。
319デフォルトの名無しさん:01/09/09 11:47
>サウンド、入出力まで揃ってるし

サウンドぐらいは機種別に何とかするとして
GLUTでジョイスティック見れなかったけ?

やっぱSDLになるなぁ。
320デフォルトの名無しさん:01/09/09 11:51
研究用ならOpenGLの方がうけいられやすいの?
SIGGRAPHで発表するのが最終目標なんだけどOpenGLでやっぱやるべき?
DirectXはゲーム用なので馬鹿にされる?
>>320
研究内容がOpenGL依存であるなら、OpenGLで行うべき。
そんな研究が存在するのか謎だけど、自己満足ならアリかも(藁

むしろ研究する環境からの要請で「使わざるを得ない」ということのほうが多いと思うけどね。
標準のライブラリが揃っているとか、他の人と一緒にやるから、とか。
OpenGL詳しくは知らんけど、DirectXだと計算精度は速度重視なんで単精度
OpenGLだと実装次第でもっと高い精度も可能じゃないの?
323デフォルトの名無しさん:01/09/09 18:03
Quake3 Arena
324_:01/09/09 18:18
>>322
Direct3Dは倍精度も可能だよ。
パフォは落ちるけど。
やっぱC++&COMが好きな奴はDirectX
Cが好きな奴はOpenGLになるんでないの?
>>323
特例を持ち出しても意味ないって
しかし、個人的にはGlideが・・・(以下略
327デフォルトの名無しさん:01/09/10 00:07
Quakeは確かに特例っぽいね。他にOpenGLゲームある?
何かあったっけねえ?
329デフォルトの名無しさん:01/09/10 01:06
X-planeってのがあるらしい。最近のMacのは全部OpenGLか?
http://www.apple.co.jp/opengl/

あとMayaとかSoftImageは内部でOpenGL使ってんじゃないの。
330デフォルトの名無しさん:01/09/10 01:13
MSってOpenGLサポートやめんの?うちだとWindows2000でもちゃんと動いているよ。
http://www.zdnet.co.jp/macwire/9912/02/c_register.html

-Id Softwareの中心的プログラマーであり,OpenGLの熱心な支持者であるJohn Carmack氏

Carmachファンだから俺はOpenGLでゲーム作るぞ!
331デフォルトの名無しさん:01/09/10 01:52
つうかQuakeのこいつがOpenGLを選んでなきゃ
今頃、コンシューマーボードのOpenGLサポートも
昔のまんま稚拙なものだったかもしれないね。
それが良い事なのか、そうじゃないのかは微妙。
個人的には、OpenGLなんていらないし。
332バード大佐:01/09/10 02:05
unrealもいちおうOpenGL対応
333k:01/09/10 12:17
クエークIIIのエンジン使ってるゲームって
多いからそれらもOpenGLではないの?
アリスインナイトメアとか。
QuakeエンジンならそのままOpenGL対応になるよ
あとQuake系でない独自エンジンのSerious Samとか

OpenGLのサポートって基本的にビデオメーカーに依るので
対応の良いとこ(nVidia)とか悪いとこ(Matrox)とかでかなり差が出ると
思われる。
335デフォルトの名無しさん:01/09/11 08:57
つうか洋げーの一部でOpenGLが使われているのはCarmachの影響を
うけているだけ?日本のゲームでOpenGLが使われないのはCarmach
を知らないから。
336デフォルトの名無しさん:01/09/13 00:47
OpenGL初心者です。

OpenGLの射影変換で正射影を使うケースってどんなときでしょうか?
透視射影は普通に使うと思うのですが・・・。
337デフォルトの名無しさん:01/09/13 00:51
あと
glLoadIdentity()は何をやっているのでしょうか?
マトリックスのリセット?
338デフォルトの名無しさん:01/09/13 09:07
>>336
CADやShadeなんかのの3面図書くときとかいっぱい使うことあるでしょよ。
339デフォルトの名無しさん:01/09/13 12:45
>338

なるほど!3面図は確かにそうですね。
340デフォルトの名無しさん:01/09/14 10:12
glutKeyboardFunc();
に登録するコールバック関数の2,3番目の引数x,yにはなにが入っているの?
キーがタイプされたときのマウスの位置。
342デフォルトの名無しさん:01/09/14 13:26
ある環境で光源が8つ以上使えるかどうか調べるには
どうすればいいのでしょうか?
>>330
Carmachなんて書いてるようではファン失格!
気になってたけど、Carmachってなに?
345デフォルトの名無しさん:01/09/14 21:28
ファンのみなさん、すみません。
John Cramackでした。

>344

Doom作った天才プログラマです。
>>342
glGet* で固有の定数もゲットできる
347デフォルトの名無しさん:01/09/15 04:35
Carmachあげ
348デフォルトの名無しさん:01/09/15 10:16
カーマッハ?
349デフォルトの名無しさん:01/09/15 12:59
2ちゃんでは  ジョン・カーマハ  なのです
350デフォルトの名無しさん:01/09/17 03:55
宿題で曲線を描くプログラムを書いてるのですが
glMap1とgluNurbsCurveを使わないといけないのです。
使い方の説明を見てもいまいちわからないのですが
どこかにそれらを使ったサンプルプログラムはありませんか?
実際に使われているものを見れば分かる気がするのですが。

当方、openGLはこれが初めてのプログラムになります。
351デフォルトの名無しさん:01/09/17 12:58
age
352デフォルトの名無しさん:01/09/17 13:06
Mesaをインストールする時点で挫折しました。
353デフォルトの名無しさん:01/09/20 13:08
質問させて下さい。

VC++ で OpenGL を使っているのですが、画面に描画されたイメージを印刷するには、
どうしたらいいのでしょうか?
できれば白黒の2値にして、反転もさせたいのですが…。
印刷の方法だけでも良いので、どなたか教えて下さい。
そりゃVC++のスレに逝った方がいいな。
355デフォルトの名無しさん:01/09/29 09:55
ずいぶん前になるが、
OpenGLとDirectXが一緒になるって話はどこ逝った。
さがりすぎあげ。
>>355
逝った。
OpenGLって日本語表示できないの?
358デフォルトの名無しさん:01/09/30 00:43
用途にもよるがGLUIの日本語化はこちらで
http://www.aya.or.jp/%7Esanami/peace/
>>353

この辺のサンプルでどうでしょう?
http://www.asahi-net.or.jp/~yw3t-trns/opengl/samples/index.htm
360デフォルトの名無しさん:01/10/04 02:22
良スレage
361デフォルトの名無しさん:01/10/04 08:17
nVIDIAやATIが対応し始めたOpenGL 1.3ってなにがかわるの?
ねたふりあげ。
>>361
何も変わらない
363353:01/10/05 10:12
>>359

久しぶりに見てみたら…ありがとうございます!
参考にさせて頂きます。
ほんとにココ良スレ。age!
>>361

基本的には、現在広く使われている ARB や EXT の拡張機能を統合しただけのようです。
365金穴:01/10/06 01:40
質問君ですまんが、
みんなはなにでモデリングして、どーやって読み込んでるのよ?
ファイル読み込むAPIとかってglutとかにあるの?
やっぱ赤本買わないとだめ?
>みんなはなにでモデリングして、どーやって読み込んでるのよ?
ローダー書け。OpenGLが世話してくれるのは描くとこだけ。
VRMLとかOBJとか読んでくれるライブラリもないわけじゃないが、
カスタマイズしにくいし、俺はあんま使わんな。
367デフォルトの名無しさん :01/10/06 23:04
単純に2次元の文字列を表示させたいんですが、わかんないです。
(例えば「速度:〜」とか)
3次元空間でグリグリ動かせる文字列の作り方はわかるんですが、
それだと視点が変わるとダメだし…
>367
別のDIBに描画してBltするんじゃダメ?
もっといい方法があれば私も教えてほしい。
>>367
>3次元空間でグリグリ動かせる文字列
ってwglUseFontOutlines?
だったら
wglUseFontBitmaps
>それだと視点が変わるとダメだし…
とりあえず glLoadIdentity() 後すぐに描けばそれっぽく見えるのでは。
371デフォルトの名無しさん:01/10/13 20:39
質問させてください。

Windows上でglutを使って書いています。
今マウスの動作をCTRLキーで変更したいのですが、修飾キー(CTRL,SHIFT,ALT)のみの
入力はglutKeyboardFunc()が拾ってくれません。具体的には、マウスをクリックした状態で
画面にマウスポインタを囲む形で円を描き、CTRLキーを押すとその円が大きく、
CTRLキーを離すと小さくなるという感じの動作です。
なんとかならないでしょうか。
>>371
CTRLとかはglutSpecialFuncだったかなぁ?
373デフォルトの名無しさん:01/10/15 00:14
OpenGLでPS2の設定画面のキューブみたいな屈折の表現ってどうやってやるのでしょうか?
工学迷彩みたいなの(?)やってみたいです。
374371:01/10/15 00:49
>>372
サンクス。CTRL,SHIFT,ALTはglutSpecialFuncではなく
glutGetModifiersでとれるのですが、
このglutGetModifiersをglutKeyboardFuncの中に置いても、
他のキーも一緒に押されないとglutKeyboardFunc自体が呼ばれないので
駄目なのです。

glutDisplayFuncの中でglutGetModifiersを毎回呼んで値を
覚えておくしかないのかなぁ・・・。
375sage:01/10/15 01:08
>>365
赤本はやめとけョ
376371:01/10/15 01:28
>>374
> glutDisplayFuncの中でglutGetModifiersを毎回呼んで値を
> 覚えておくしかないのかなぁ・・・。

駄目ジャン。
>>375
何故ダメなんだ?
378371:01/10/15 20:50
>>377
376の駄目ジャンのことですか?
glutGetModifiersって『修飾』って書いてあるだけあって、
他のイベントと組み合わせないといけないようなので、
たとえ常に呼び続けたとしても例えばCTRLキーが単体で押された場合には
それを検出できないので駄目ということです。
マウス操作+CTRLキーってのはよくある組み合わせだと思うけどなぁ。
>>371
素直に自作した方が良いかもね。
俺はホイール使いたくて自作。ショボイけど。
381 :01/10/17 18:49
3次元の閉じたオブジェクトをある角度から見たときの可視領域を、
一目瞭然にするプログラムを考えてるんですけど、
たとえば、デフォルトの視点からの可視領域だけ、色を変えて
オブジェクトを再描画・・・とかは出来ないんでしょうか?誰かおしえて。
382デフォルトの名無しさん:01/10/17 18:51
>381
なぜにそれをOpenGLで??
383381:01/10/17 19:08
卒論用のプログラムをOpenGLを使って組んでいて、
上で述べたような機能をもたせる必要があるんです。
何分勉強不足なもんで、的を得ていなかったらごめんなさいでした。
384デフォルトの名無しさん:01/10/18 01:20
glutCreateWindowで、
GLUT: Fatal Error in test: failed to create OpenGL rendering context.

とでてしまいウィンドウが作れません。他のマシンでは起動できるのですが・・・
もしかしてビデオカードによっては起動すら出来ない場合ってあるのでしょうか?

環境 Win2000 + 3DP4500 ( KYROII )
よくある
>>381
「シャドウマップ」が参考になるかもしれません。
387デフォルトの名無しさん:01/10/18 01:42
>381
 「デフォルトの視点」に点光源を対応づければ、この要求は
いわばオブジェクトにシャドウをつける事の逆をやろうとして
いると考えることが出来ます。
 ですので、OpenGLでの影付けの技術から何かが応用できるん
じゃないでしょうか。

 個人的には対象となるオブジェクトが比較的単純であれば
Stencilを使ったShadow Volumeを使うと思います。
 とりあえず、この辺に出ている文章を参考にしては?

 developer.nvidia.com/view.asp?IO=Stencil_Buffer_Tutorial
388387:01/10/18 01:47
あう、かぶった
389 :01/10/22 05:45
ageとこ。
390デフォルトの名無しさん:01/10/23 10:08
bitmapを読み込んでテクスチャを張るにはどうすればいいの
392デフォルトの名無しさん:01/10/23 15:26
ここレベル低いなぁ。Bio100あたりの過去ログ見たら?
技術的な話が無いのは確か。
皆、初めで挫折してしまうのかな?
394デフォルトの名無しさん:01/10/24 13:43
あげ
環境マップは大体理屈がわかりました。屈折マップに関してOpenGLのソース
つきで解説しているような サイト or 本 などないでしょうか?
396 :01/10/25 20:12
ageたりして。
NV_texgen_reflection?
398デフォルトの名無しさん:01/10/26 00:29
opengl32.dllとかglut32.dllなどのファイルは非商用or商用でもアプリケーションに
添付して配布してもかまわないのでしょうか?
399デフォルトの名無しさん:01/10/26 00:31
>>397

特殊なハードウェアがないと駄目なのでしょうか?
>>399
俺もよく分からんから適当に言うけど、
REFLECTION_MAPだったら大抵どれでも出来るんじゃない?
nVidiaだったらglext.h、AtiだったらglAti.hをサイトから取ってきたら、
それインクルードして、
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP_EXT);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP_EXT);
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP_EXT);
でOk。
そんなことを聞いてるんじゃねーよってことなら無視しておくれ。
本当に適当でスマン。
401 :01/10/26 05:43
あーげよ。
402デフォルトの名無しさん:01/10/27 03:46
反射はreflection、屈折はrefractionっつー事で。
Nvidiaのデベロッパーサイトを漁れば例なりソースなり
出てくる様な気がします。
403400:01/10/27 12:08
間違った。逝ってくる。
404デフォルトの名無しさん:01/10/29 01:46
Open GLで曲線を書きたいです。あと線の太さもかえたいのですが
教えてください。初心者なのでサンプルプログラムなどあると助かるのですが。
線の太さはglLineWidthで。
(曲線はglEvalなんとかしか使ったこと無いのでNURBSは知らん。)
406デフォルトの名無しさん:01/10/30 01:10
2つのViewportに描画しているようなサンプルないでしょうか?
レースゲームのバックミラーとかマップ表示とか立体視の左右分割画面
見たいなののサンプルが見たいのです。
>>404
ひじょーに短いサンプル
GLfloat cpt[][3]={{-10,-10,0},{5,20,0},{15,-10,0}};
glEnable(GL_MAP1_VERTEX_3);
glMapGrid1f(10,0,1);
glMap1f(GL_MAP1_VERTEX_3,0,1,3,3,&cpt[0][0]);
glEvalMesh1(GL_LINE,0,10);
というか探せばすぐ見つかると思うが…
406見て思ったんだけど、
画面の一部だけデプスバッファクリアってどうやるの?
glClearじゃ画面全体消えるよね?
適当に面で塗りつぶすしか無いのかなぁ。
409名無しサソ:01/11/01 01:23
>406
 別の解決法として一言。テクスチャサーフィスに
レンダリングするという手もあるよ。ただ、互換性を
重視するとglCopyTexImage2D()を使ってバックバッファ
に描画した物をテクスチャサーフィスに転送する必要
があって遅くなるけど。
410デフォルトの名無しさん:01/11/03 17:04
いいスレなのでage
411 :01/11/03 18:13
>>406 >>408
glEnable(GL_SCISSOR_TEST) と glScissor()
に決まっとるやろボケがー!
クリア範囲を決めます。
412デフォルトの名無しさん:01/11/03 18:22
こんな感じ?

glEnable(GL_SCISSOR_TEST);

//カメラ一個め
glScissor(x1,y1,sizex1,sizey1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(x1,y1,sizex1,sizey1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(Pers, sizex1/sizey1, NearClip, FarClip);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

//色々描画

//カメラ二個め
glScissor(x2,y2,sizex2,sizey2);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(x2,y2,sizex2,sizey2);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(Pers, sizex2/sizey2, NearClip, FarClip);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

//色々描画

SwapBuffers(hDC);
413408:01/11/03 21:52
glScissorでglClearをクリップ出来ないんだけど。俺だけ?
ステンシルバッファじゃだめなの?
それが一番効率がいいと思う.
いろいろな形でくり抜けるし.
415デフォルトの名無しさん:01/11/04 00:00
416408:01/11/04 01:19
画面の更新する部分だけバッファクリアできれば効率いいのになぁと思っただけ。
>>414
ステンシルがベターだとは思うけど、ステンシルを他のことにも使いたい
となったときに処理が複雑になるなぁ。

ちなみに406ではありませんので。
417デフォルトの名無しさん:01/11/04 01:27
>416
確かにそうですな.
ステンシル値がぐちゃぐちゃになりそう.
GL_NORMAL_MAP_EXTって何に使うんですか?
419デフォルトの名無しさん:01/11/08 01:10
良スレage
420デフォルトの名無しさん:01/11/08 01:37
glFlush()とglFinish()との違いが良くわかりません。
この二つはどう違うのでしょうか?
421デフォルトの名無しさん:01/11/08 05:17
                                 /
  ⊂二 ̄⌒\               ノ)      <  >>420 それは愛さ。1さんへの。
     )\   ( ∧_∧        / \        \
   /__   ) ´Д`)    _ //^\)
  //// /       ⌒ ̄_/
 / / / // ̄\      | ̄
/ / / (/     \    \___
((/         (       _  )
            /  / ̄ ̄/ /
           /  /   / /   .
         / /   (  /    
        / /     ) /     
      / /      し′      
    (  /                 
     ) /       ...::::::..:::...:...:..  ........
     し′   .....:::::::::::::::::::::::::::.::::::
     ..::::.::::::::::::::::::::::..::::::::::::::'
答えになってない
423420:01/11/08 05:40
>>421
そういうことだったのか!
Thanx!
>>420

glFlush()が描画コマンドバッファを全部転送して空にする関数。
glFinish()は描画終了待ちするglFlush()かな。
425レプタリアン教授:01/11/09 02:06
OpenGLでバンプマッピングはできたっけ・・
どうせどっかにextensionがあるんでないの。
427レプタリアン教授:01/11/09 02:17
どのサイトに行ってもGLUTの説明ばっかで萎える・・
しばらくGLUTで頑張ったけど、フォントとか、GUI周りの機能がショボ過ぎて・・・
428レプタリアン教授:01/11/09 02:29
>>425

擬似的な物なら出来る。

ハードウエアで実現する場合、機種依存の機能拡張に頼らざるを得ないのでは?
バンプマッピングにでも挑戦してみるかなぁ

ttp://www.opengl.org/
431デフォルトの名無しさん:01/11/10 01:24
GLUT新しいのデタ!
http://www.xmission.com/~nate/glut.html
>>431
機能的には変わってないんでしょ?
433デフォルトの名無しさん:01/11/13 01:11
>431

\demos\sysview

がVCでコンパイルできません。どうすればよいのでしょうか?
glut-3.7.6-bin.zipの方使えば?っていうのはダメ?
435デフォルトの名無しさん:01/11/13 12:54
>434

いえデモプログラムのコンパイルがしたいのです。
progs\demos\sysview\
以下なんですが
>429
バンプマッピング.
OpenGL1.3からサポートされるって噂はデマ?
>>435

sysview.cを見れば分かると思いますがIRIX(SGI社のUNIX)依存のコードのようですね。
カーネルの動作状況を可視化しているようですので、Windowsで動くように書き直してみるとか?
438レプタリアン教授:01/11/16 00:44
衝突検出は面の交差を判断する方法(面の方程式に代入してDの符号の差異で判断するヤツ)を用いるんでしょうか?
439デフォルトの名無しさん:01/11/17 01:40
視点からの距離でフォグ生成って出来ない?
OpenALのことはここで聞いてもよいどすか。
フォグの意味からするとそれが普通のフォグだと思うんだけど・・・
実際のインプリでは距離じゃなくて深度値で決まるのかな。
442名無しサソ:01/11/17 10:06
>441
 頂点フォグとピクセルフォグというのがあるよ。頂点に距離毎
でフォグの色を付加していく奴と、描画時にZ値の値に応じて
付加していく奴。というのはあくまでD3Dの話なんだけど(笑)
OpenGLではどうなのかな?誰か捕捉プリーズ(役立たず)
443 :01/11/18 19:25

256*256サイズのビットマップのテクスチャーをglTexImage2Dで作ろうとしたら、
エラーメッセージが出ちゃった。
ビットマップを取り出すにはどうすればいいの?
エラーの内容がわからんとなんともいえんよ。
445デフォルトの名無しさん:01/11/18 22:36
ビットマップはテクスチャーとして使えないよ。
ちなみにDrawPixelsでもGL_BITMAPはカラーインデックスと
ステンシルインデックスとしてしか使えない。
446デフォルトの名無しさん:01/11/18 23:06
レジスタコンバイナの勉強ってなにを見て勉強したらいいですか?
>>446
使ったこと無いからまたまた適当にいうけど、
NVShaderAidで適当にいじってコード吐いて見るとか。
448446:01/11/19 02:06
ありがとうございます。
NVShaderAid調べてみます。
でも、nVIDIAのDeveloperがつながらない......。
449デフォルトの名無しさん:01/11/20 12:49
次の目標500
OpenGLで、Mouseが動いたかどうか調べる方法は無いですか。
>>450
OpenGLそのものにそんな機能は無いYO!
452名無しサソ:01/11/23 08:41
>450
 そんな分けでGLUTを使うべし。GLUTって何ですか?
というのは聞くの禁止。
451>>452>>
ありがとう。
glutMotionFunc()とかの一般的なものしか使った事が無いので、
緑本で調べてみる。
間違えた!
>>451>>452
ありがとう。
glutMotionFunc()とかの一般的なものしか使った事が無いので、
緑本で調べてみる。
緑本ってのがあるとはしらなんだ。
赤本
緑本
青本
その他たくさん。
457レプタリアン教授:01/11/26 19:57
Win32APIもやっぱり覚えなきゃダメなのかぁ・・・
>>457
簡単なウインドウを作れるレベルは覚えた方がいいかも。
glutでは物足りないっていうならなお更。
そこらへんはDirectXでもたぶん同じでしょう。
WGL関連も若干Win32APIの知識が必要だし。
459レプタリアン教授:01/11/27 00:42
プログラムの勉強があっちいったりこっちいったりで・・・ハァ。

C→C++→MFC(途中で断念)→OpenGL(途中でWin32APIの知識を要求された)→Win32API    (独学で)
                  ↓
                   →C++、アセンブリ(casl)                           (大学で)

Win32APIを勉強してて思う事は、Win32APIを知らずしてMFCを学ぶのは自殺行為、というか俺には合わなかったなぁ、という事だ。
下で何が行なわれてるのか分からずにMFC使ってプログラム組んでた時はかなり気持ち悪かった。
Win32APIで、メニューIDとかも自分で整数値振ったりして(リソースエディタ使えよ!)、
実際の動作が理解できるというのは何か心地良い感じ。初心者な意見でスマソ。
>>459
アウトピなのでsage.
VC++の新規作成ウィザードの初期カーソル位置がMFCになっているから
C++→MFCといって一旦挫折する人が多いみたいね。
MFCはWin32とC++の設計(デザインパターンとか)を一度マスターしてから
戻ってくると以外に心地よかったりするよ。
俺もあっちいったりこっちいったりで脱線しまくり。
(;´Д`)ハァハァ…
462デフォルトの名無しさん:01/11/29 20:00
すみません、基本的な質問かもしれませんが、
デフォルトのカメラ位置、つまり glLookAt を自分で設定する前の
パラメータというのは、どこで得られるのでしょうか?
>>462
ちょっと意味がわからんのだが、、、
もしかして行列以前の問題か??
464デフォルトの名無しさん:01/11/29 23:18
OpenGL赤本p.99にはgluLookAt()を呼び出さない場合は

「カメラは原点に位置し、負のZ方向を指し、上方向ベク
トル(0,1,0)を持っています」

とかかれています。
これで答えになっているでしょうか?

カメラ位置は自分で変数に保存して覚えておけばよいのではないでしょうか?
>>464
まさにそれです。ありまとう。

ていうか、やっぱり赤本とかいう資料ナシにOpenGLプログラミングするのは
無謀ですね‥‥。
他人のプログラムにちょっと手を加えるだけ、と思ってたんですが、
やっぱり網羅的な資料がないと辛いや。
>>462
英語で良ければ、
ttp://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG
英語に自信が無ければ素直に買ったほうが良いかも。

ちなみに俺は、コンパイラについてた英語のマニュアル
翻訳ソフトにかけてなんとか勉強してたよ。
それにどれくらいの月日を費やしたことか…(;´Д`)
結局、赤本、青本どっちも買った。
467デフォルトの名無しさん:01/11/30 03:27
gluProject();について質問させてください。

現在、ビューウィンドウ上をマウスクリックした時に
ビューウィンドウで選択されたオブジェクトの位置に
対応したスクリーン座標を取得しようとしているのですが
正しい値を取得できません。

ソースの中身は以下のようになっています。
...
int viewport[4]; //GL_MODELVIEW
double modelview[16]; //GL_PROJECTION
double projection[16];//ビューポート
double ox, oy, oz; // オブジェクトのワールド座標
double wx, wy, wz; // 選択オブジェクトの位置に対応したスクリーン座標
...
オブジェクトのワールド座標値(ox,oy,oz)の取得処理
...
// GL_MODELVIEW, GL_PROJECTIONマトリクス,ビューポートの取得
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glGetIntegerv(GL_VIEWPORT, viewport);

// 選択されているオブジェクトの位置に
// 対するスクリーン座標がwx, wy, wz に入るはず・・
gluProject(ox, oy, oz, modelview, projection, viewport, &wx, &wy, &wz);

以上のような処理をすると本来はWidth 440 Height 310のスクリーンなので
wx 0-440 wy 0-310の範囲の値が入るはずなのに

ox oy oz 43.590000 0.000000 -13.436000
wx wy wz 5845.257067 149.000000 0.507703
とか
ox oy oz 9.217000 0.000000 5.178000
wx wy wz -456.657639 149.000000 0.496399

といったようなとんでもない値が返ってきて期待通りの値が
取得できません。赤本,青本を見てやっているのですが
どうにもよく分かりません。どなたかご存知の方がいれば教えて下さい。
お願いします。
468467:01/11/30 03:30
途中で切れたので連続で書き込みさせてもらいます。
...
以上のような処理をすると本来はWidth 440 Height 310のスクリーンなので
wx 0-440 wy 0-310の範囲の値が入るはずなのに

ox oy oz 43.590000 0.000000 -13.436000
wx wy wz 5845.257067 149.000000 0.507703
とか
ox oy oz 9.217000 0.000000 5.178000
wx wy wz -456.657639 149.000000 0.496399

といったようなとんでもない値が返ってきて期待通りの値が
取得できません。赤本,青本を見てやっているのですが
どうにもよく分かりません。どなたかご存知の方がいれば教えて下さい。
お願いします。
469レプタリアン教授:01/11/30 10:19
ビューが歪んでいるのだよ。
やっぱ通は「プンG」と呼ぶのか?
471レプタリアン教授:01/11/30 18:57
俺は「んぐぅ」と呼んでるぞ。
472デフォルトの名無しさん:01/11/30 19:05
>>467
レンダリングコンテキストをカレントに設定してる?
通はOpenGLを「アイリス」と呼んでる。
>>467
GL_MODELVIEWって_MATRIX付け忘れるって間違いだったらよくあるけど、
それでもなさそうだしね。
やり方は合ってると思うから、
glGetで取ってるマトリックスがおかしいんじゃない?
YとZはそれっぽい値になってるから、Xに関係ある部分を調べましょう。

それでもだめならint double→GLint GLdouble 多分関係ないと思うが、、、
475デフォルトの名無しさん:01/12/01 00:06
>>467
gluUnProjectの間違いではないですかね?間違ってたらゴメソ。

参考までに↓
http://www.sys.wakayama-u.ac.jp/~tokoi/opengl/faq.html
「おぺんぐる」じゃないの?
477475:01/12/01 00:09
あ、UnProjectじゃないっすね…、ボケてました。
478デフォルトの名無しさん:01/12/01 00:15
( ´_ゝ`)フーン
http://www.watch.impress.co.jp/pc/docs/article/20011130/nec2.htm
ま、漏れには縁の無い世界の話だなと。
479467:01/12/01 04:47
みなさん、ご親切なレスありがとうございます。

MFCのCSplitterWndクラスを使ってViewWindowを
4分割しているためにおかしな値がはいってくるのでしょうか・・

その後試しに、475さんのおっしゃっていた
glUnProjectでマウス座標からワールド座標を拾ってこれるか
どうかを試してみたところ、2回に一度は正しい値を拾ってこれる
事がわかりました。しかし半分はglProject();同様とんでもなく
大きな値がはいってきます。。どうなっているんでしょうか。。

>469さん
 ビューガ歪んでいる」とはどういうことなのでしょうか?
 良ければ詳しく教えて下さい。

>472さん
 はい。そのようにしています。現に選択されたオブジェクト
 の座標は正しい値が拾ってこれています。
480467:01/12/01 05:37
すみません。↑の書き込みの訂正です。

glUnProject(); → gluUnProject();
glProject(); → gluProject();
481デフォルトの名無しさん:01/12/01 20:42
DirectXみたいに3,4,5...と上がっていくのが目に見えてて萎え
>>479
OpenGLのViewが一つでも同様の現象は起きますか?

>>481
いいだしっぺの3Dlabsは仕様にみあったビデオカードを出すことができるんだろ〜か?
ところでNVSDK使ってる人いる?
485デフォルトの名無しさん:01/12/04 23:24
>484

今ダウンロードしています。

nvOpenGL_sdk.exe (OpenGLのみ)
NVSDK511FullInstaller.exe (上のにDirectXのやつも一緒になっている)

と理解してよいのですか?フレッツISDNだと一晩以上かかりそうだぁ。
コンパイルでエラーが…
古いVCだとダメか。
487デフォルトの名無しさん:01/12/06 00:19
なかなか興味深いサンプルですね。
ぜひ英語に訳してほしいなぁ。STLの勉強もしないと。
488デフォルトの名無しさん:01/12/06 12:53
↑のOpenGLSDKですが
ソースコード管理プロジェクトceveritt-98へ接続できません。と怒られてしまいます。
なんなんでしょうかコレは?
489デフォルトの名無しさん:01/12/09 01:50
初歩的な質問で申し訳ないのですが、

glDepthFunc(GL_LEQUAL);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);

glBegin(GL_QUADS);
 // 前面
 glNormal3f(0.0f,0.0f,1.0f);
 glMaterialfv(GL_FRONT,GL_DIFFUSE,front_color);
 glVertex3f(1.0f,1.0f,1.0f); glVertex3f(1.0f,-1.0f,1.0f);
 (省略)
 // 背面
 glNormal3f(0.0f,0.0f,-1.0f);
 glMaterialfv(GL_FRONT,GL_DIFFUSE,back_color);
 (省略)
 // 同様に上面, 底面, 右面, 左面を記述
glEnd();

のように各面が各色のmaterialを持った立方体を作り、
ライトを当てた上でブレンディングしたいのですがうまくいきません。
ブレンディングするだけならばGL_BLENDをEnableに、GL_DEPTH_TESTを
Disableにすればいいのですが、そこでGL_LIGHTINGをEnableにすると
一部の面しか描画されない状態になります。
なんとかうまく処理する方法はないでしょうか。
490489:01/12/09 02:29
ごめんなさい。できました。
立方体を描画する前に
glDisabel(GL_LIGHTING)
glDisabel(GL_DEPTH_TEST)
glEnabel(GL_BLEND)
して、描画した後に
glDisable(GL_BLEND)
glEnable(GL_LIGHTING)
glEnable(GL_DEPTH_TEST)
すればいいんだね。
491489:01/12/09 02:41
ごめんなさい。
やっぱり勘違い。できませんでした。あぅー。
492デフォルトの名無しさん:01/12/09 14:27
・「一部の面しか描画されない」って具体的にどんな症状ですか?
・そもそもGL_BLENDをDisableのままでGL_LIGHT・GLDEPTH_TESTを
 Enableにして、ちゃんと描画されますか?
・そもそも、光源を最低一個は作成していますか?
・その光源を忘れずに有効にしていますか?
・光源のAlphaは1.0になっていますか?
・頂点の描画順は大丈夫ですか?
・表裏で異なるマテリアルを使うのであれば、GL_FRONTとGL_BACKに
 マテリアルを定義してカリングを無効にすれば良いのでは?
>>488
Visual Source Safeの設定が残っていると思われ。
気にしなくてもOKよ。
494489:01/12/10 00:20
>>492
どうもです。上から応えます。
・立方体の6面のうち2面しか描画されていない状態です。
・GL_BLEND(Disable)、GL_LIGHT(Enable)、GLDEPTH_TEST(Enable)で
 きちんと描画されています。
・光源(Diffuse)は一個です。
・光源は有効です。GL_BLEND(Disable)、GLDEPTH_TEST(Enable)の状態で
 立方体にちゃんと影が出来ています。
・AMBIENT、DIFFUSEともにアルファは1.0fになっています。
・頂点の描画順というのはちょっとよく判りません。各面の頂点が適切に
 置かれているかということであれば大丈夫です。それとも画面の深さに
 関連したことでしょうか?
・表裏のマテリアルはとくに考えていないのですが、とりあえず作りたいものは
 アクリルのように半透明でカラフルな面を持った立方体に光を当てて
 明るい面と暗い面を作りたいという感じです。
495デフォルトの名無しさん:01/12/14 20:24
VB で OpenGL を使って、ActiveX コントロールをつくっている。
ファイルのデータを3次元で表示するやつを。

3次元の座標に文字を書く時、GLUT の

glutBitmapCharacter

を使っている。引数の、GLUT_BITMAP_HELVETICA_?? は勝手に 2 と書いている。

とりあえず動きます。

VB & OpenGLで の、glut の正式な初期化の仕方と、文字の書き方が分からない。

だれか、教えて下さい。
>>494
(´-`).。oO(GL_LIGHT_MODEL_TWO_SIDE)
497デフォルトの名無しさん:01/12/15 12:19
赤本のサンプルコード拾えるトコって↓以外にありませんか?

ftp://sgigate.sgi.com/pub/opengl/xjournal/GLUT/glut-i.j.tar.Z

なぜか↑ではDLできない・・・
499497:01/12/16 08:24
>>498
多謝
500デフォルトの名無しさん:01/12/16 11:30
OpenGLはVCのデバックモードって使えるの?
ChoosePixelFormatやSetPixelFormatで止められるだけど。
2000でVC6でやってます。
501名無しサソ:01/12/16 14:00
>500
 ビデオカードに依るのかも。
うちのG400だと、デバッグモードで
不規則に落ちる。他のカードでは
落ちない。謎。
502494:01/12/17 09:43
>>498
ありがとう。やってみます。
503494:01/12/17 18:06
やはり駄目なので質問なんですが、
そもそもGL_DEPTH_TESTがDisableな状態でGL_LIGHTINGをEnableにすることに
問題はないのでしょうか?
# なぜ描画の際にGL_DEPTH_TESTをDisableにしているかというと
# 簡単にブレンディングをするためなのですが・・・。

つまり

glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glEnable(GL_LIGHTING);
glCallList(cube); // 法線とマテリアル指定のQUADSで立方体を描画
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glDisable(GL_LIGHTING);

こういう書き方で正常に描画されることは期待できないのでしょうか?
何度も出てきてるページだけど。

>>503
それっぽいことやってる。
http://nehe.gamedev.net/tutorials/lesson08.asp

>>495
上記ページにVBのサンプルがあったよ。役立つかわからんけど。
505494:01/12/17 21:16
>>504
解決しました!
そのサイトのサンプルと比べると基本的には同じ手順を踏んでいたんですが、
違う点は私のプログラムがテクスチャを使わずにMaterialの設定をしている点でした。
Materialに渡していた色を調べるとRGBになってました・・・。
結局、それをRGBA(A=1.0f)にした上でパラメータ名をGL_AMBIENT_AND_DIFFUSEにしたら
それっぽいのができました。どうもありがと〜。
506sabo:01/12/20 16:43
ロボットのシミュレータでプロセスを二つに分けて
親プロセスはOpenGL表示プロセス、
子プロセスはロボットの動作(座標指定)プロセス。
ってやっていたら変数が渡せません。
共有メモリ等いろいろ試しましたがどうもうまく行きません。
なにかいい方法を教えてください、お願いします。
507デフォルトの名無しさん:01/12/20 19:41
なぜプロセスを分けるのかが良くわかりません。
おれも。
509デフォルトの名無しさん:01/12/21 01:29
みんなOpenGLで何作ってるの?

ゲーム?ツール?物理シミュ?
>>507-508
シミュレーションと画面更新を非同期にやってるんぢゃ?
511デフォルトの名無しさん:01/12/21 20:12
>>509
スクリーンセイバー
スクリーンセーバー
スクリンセイバ
514デフォルトの名無しさん:01/12/21 20:55
スクーリンセバーー
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧η∧   <   ーバイセンーリクス
  (,,・Д・)     \__________
 ミ__ノ
wglChoosePixelFormatARBやると落ちるんだけど何でだろう…。
517デフォルトの名無しさん:01/12/22 08:16
>510

それはわかるのですがプロセスを分ける必要性は感じません。
thread ni sinaino?
ChoosePixelFormatでAccess Violation発生するんだけど、
誰かこの症状について詳しい人いない?
520519:01/12/22 18:12
誰か教えてage
その部分のコードでも載せれば?
522519:01/12/23 13:58
調べた結果、wglChoosePixelFormatARB使うと、2回目以降の起動で
ChoosePixelFormatだけでなくSetPixelFormatもエラーになるようです。
なのでwglChoosePixelFormatARBのソースを…

int i=0;
attributes[i*2]=WGL_DRAW_TO_PBUFFER_ARB;
attributes[i*2+1]=true;
i++;
  〜略〜
attributes[i*2]=0;

HDC hdc;
int iPixelFormat;
UINT nformats;
hdc=wglGetCurrentDC();
wglChoosePixelFormatARB(hdc,attributes,NULL,1,&iPixelFormat,&nformats);

どこがおかしいですかね?
今のところ違う方法でエラーは回避してますが、、、
523デフォルトの名無しさん:01/12/24 12:28

OpenGLの関数をつかって日本語を書きたいのですが、できますか?
glutBitmapCharacter みたいな関数で。
windowsだったら、GDIで書くか、それとも
wglUseFontBitmapsか、wglUseFontOutlines使う。
525デフォルトの名無しさん:01/12/25 22:44
エラーコードは?
あと、同一ウィンドウに対し、SetPixelFormatは二回以上呼べなかったと思う。
chooseは呼べてもいいと思うけど。
526519:01/12/26 00:40
一回そのプログラムを終了した後、また起動すると、不正な処理と出る。
デバックすると、ChoosePixelFormatでデバックが勝手に終了してしまうもので、
エラーを調べようにも調べられない。
GDI32.DLLのロード辺りでAccess Violationって出てるんでそれが問題では無いかと。
ドライバーのバクなのかなぁ。
そりゃバグだわさ。
これの追求が現在のタスクでない限り、無駄に時間を費やさないためにも、
ビデオカードを替えることを勧めます。
528519:01/12/26 01:13
>>527
買えたばっかりなのに…。(;´Д`)
>>519
参考までに、ビデオカードとOSをおしえてくれたもうれ
530519:01/12/26 01:25
>>529
GeForce3Ti200でWin98です。

OSの問題だったりして…
誰かVERTEX_PROGRAMやってる?
532デフォルトの名無しさん:01/12/30 08:36
glut を Borland C++ Builder に付属の bcc32 で使ってるんですけど,
glut.h と stdlib.h をインクルードすると
>エラー E2337 test2.cpp 3811: オーバーロード関数群の中の 1 つだけしか "C" にできない
というコンパイラエラーがでて困ってます.
他の方はどうやって回避してますか ?
533デフォルトの名無しさん:01/12/30 10:17
>>519
NVIDIAは頻繁にドライバーをアップデートしているから
ドライバーを変えれば直る可能性が大
>>532
#define _STDCALL_SUPPORTED 1
#include<GL/glut.h>
やってみそ。
535デフォルトの名無しさん:01/12/30 11:27
>>534 さん
ありがとうございます.
#define _STDCALL_SUPPORTED
ですよね(1 はいらないのではないかと)?
やってみましたが, まったく状況は変わりませんでした.
>>535
関係なかったか、、、スマソ。
>>532
> >エラー E2337 test2.cpp 3811: オーバーロード関数群の中の 1 つだけしか "C" にできない
その3811行目ってなに。
538532:01/12/30 12:43
すみません, 問題を探るためにプリプロセッサを通した後のファイルをコンパイル
してたのを忘れててました. test2.cpp の 3811 行目ではなんの情報もなかったですね.
ソースはGl/glut.h, stdlib.h の順でインクルードしたものです.
そのときのコンパイルエラーは
>エラー E2337 stdlib.h 584: オーバーロード関数群の中の 1 つだけしか "C" にできない
です. そして stdlib.h の 584 行目は
> using std::exit;
です. stdlib.h は C++ Builder Ver. 5.0, Build12.34, Update Pack 1 に
付属のもので Revision 9.20.1.0 となっています.
539532:01/12/30 12:51
自己レスです.
ようやく気づいた.
glut.h の 146 行目の exit() に関するところを
namespace std {
extern _CRTIMP void __cdecl exit(int);
}
using std::exit;
に直したら, とりあえずコンパイルは通るようになりました.
こんな感じの修正でいいのかな ?
>>538-539
Revisionはわからないんだけど、手元にあるGL/glut.hはMesa-3.4に入ってた
奴で

#include <stdlib.h> /* for exit() */

となってる。ちなみに日付は2001/03/18。
541デフォルトの名無しさん:01/12/31 06:11
デフォルトのクリッピング平面を無効にすることって出来ますか?
あと、デフォのままだとニアクリップが遠すぎませんか?
>>541
デフォルトのクリップ平面はオフに出来ないよ。
それが出来てしまったら、本来描画されないはずの部分も描画されまくってしまうよ。
凸ポリゴンも守れなくなってしまうし。
ニアクリップが遠すぎって射影行列の設定次第じゃないか?
どういう設定にしてるかわからんが。
543デフォルトの名無しさん:02/01/10 22:18
age
544 :02/01/15 06:56
age
545デフォルトの名無しさん:02/01/15 09:23
いきなりコンパイルできません。
LIBやインクルードも設定しています。opengl32.libが見つかりませんという
エラーがでます。心当たりのある人おしえてください。
前に進みません。
LIBパスがおかしい
547デフォルトの名無しさん:02/01/15 18:19
教えてクンですいません。質問させて下さい。

OpenGL1.3対応で現在お薦めのグラフィックカードって何かありませんか?
予算は3万以内で、メチャクチャ早く無くていいです。
とりあえず現在のオンボードビデオから脱却さえ出来れば(・∀・)イイ!!(涙)
AGP 64M ぐらいで動作安定してて、サポートが結構しっかりしてると嬉しいです。

よろしくお願いします。
548デフォルトの名無しさん:02/01/15 19:12
OPENGLについて、非常に初歩的な質問をさせてよ。

とりあえず、OPENGLってなに? C言語のライブラリなの?
OPENGLの売り文句に、ハードやOSに依存しないってのがあるじゃない?
けど、一方で、OPENGL対応のビデオボードってのもあるだろ? これって
矛盾してるだろ。 ハードに依存しないくせに、特定のビデオボードがOPEN
GL対応ってどういうこっちゃ? なめとんか、ボゲェ。 OPENGLのライブラリ
関数の中には、ハードやOSに依存しない関数もあれば、特定のハードに特化し
た関数もあるってことなのか?
549レプタリアン教授 ◆ox4ILOLI :02/01/15 19:17
>>54
死ね
>>548
そーだな、とりあえずSGIのページにでも行って、IrisGLでもしらべたら?
>>548
>OPENGLってなに? C言語のライブラリなの?

see
http://opengl.org/developers/faqs/technical/gettingstarted.htm#gett0010

>OPENGLの売り文句に、ハードやOSに依存しないってのがあるじゃない?
>けど、一方で、OPENGL対応のビデオボードってのもあるだろ? これって
>矛盾してるだろ。 ハードに依存しないくせに、特定のビデオボードがOPEN
>GL対応ってどういうこっちゃ? なめとんか、ボゲェ。 OPENGLのライブラリ
>関数の中には、ハードやOSに依存しない関数もあれば、特定のハードに特化し
>た関数もあるってことなのか?

OpenGL自体は特定のハードウェア、OSの実装に依存しないつくりになっています
が、ハードウェアでその中の機能の一部、あるいは全部を肩代わりする事で高速化
しているハードウェアがあります。それを俗にOpenGL対応ハードウェアと呼んで
いることがあるようです。OpenGLの仕様自体は決められているのですが、実装
そのものについては各ビデオカードベンダーに任されているようで、特定のハード
ウェア、ビデオチップでしか動作しない命令なども現在では多々あり、
それらを統合するためのOpenGLAPIの再構築が今、議論されています。
552デフォルトの名無しさん:02/01/17 17:55
>>551
あんがちょ。 だいぶん良く分かった。 あんた詳しいね。 
553 :02/01/21 01:26
age
554デフォルトの名無しさん:02/01/21 02:14
とあるモデルを真っ二つに切るような処理はどうやって行えば良いでしょうか?
FFの戦闘シーンでそういったシーンがあるらしいのですが。
>>554
斬鉄剣?  
>>554
glClipPlane使って2回描くとか。適当スマソ。
557レプタリアン教授 ◆ox4ILOLI :02/01/22 04:06
最初から割ったのをくっ付けとけ(w
558 :02/01/22 06:56
openGLはVC++とセットで世界一!!
DXなんて糞じゃ!!
559デフォルトの名無しさん:02/01/24 01:45
GL_NORMALIZE入れてるのに
さらにGL_RESCALE_NORMALも入れるのって無意味?
560 :02/01/25 07:06
pentiumPro200 X2
MEM 64
VB ELSA 511(GFMX400-32MB)PCIを手に入れたんですけど
HDD promiseATA-100+20GB

この構成にNTをインストールしてVC++でOpenGLのプログラミングの入門機
として動作させるのはちときついかな?
561デフォルトの名無しさん:02/01/25 10:00
>>557
それがいい
ラクだし
562はじめてのOpenGLらー:02/01/25 13:10
はじめまして。
私も、ものすごい初心者で、これからOpenGLを試してみたいと思っています。目的は、服飾関係で画像を作ってみること。

大昔、IndyのIRIXでOpenGLをかじろうとしたことがありましたが、
OpenGL向けのOSやハードウェアで一番ポピュラーなものはどれでしょうか?
まずは機種を買い揃えたいなと・・・(^^ゞ

アドバイスいただけますか?

ちなみに、今持っているのは、Intel Solaris8 を乗せた中古のHPのベクトラ2台と、Redhat Linux7。 
>>551さんの示されたWebページも少し眺めてみましたが、MesaとかFree OpenGLがあるようですが、まずは初心者としてはじめやすいのはどれがいいんでしょうか? 次に、仕事で作るようになるとしたら、どんな上級機種・OSが適任なんでしょうかね?

一番使われているものを使いたいです。

よろしくお願いします。
563はじめてのOpenGLらー:02/01/25 13:11
>>562

すみません、追加で、MacOS XもOpenGL使えるのかな・・・?
ClassicなMacOSすらOpenGLは使えたと思うが
移植性だけなら最強
OpenGLアプリを作成するんですが、このマシンなら動くってのを
スペックで言うのが難しくて困ってます。
どのカード+どのクラスのCPUだとOKっていえるのか情報
探したいんだけどなんかありますか?あったら教えてください!
お礼は結果で払います
仕事のジャンルによるだろうけど、
PCなら、3DlabsのWildcatシリーズやNECのTEシリーズがいいです。
(つーかそれくらいの安PCしか使ったことないのですけど)
↓このへんのを使ってる人いる?
http://www.sgi.co.jp/products/


入門ならNVIDIAのGeforceシリーズやATIのRADEONシリーズ
がいいんでないかい?赤本にかいてあるくらいの事なら大抵コレくらい
のシリーズで十分学習できるよ。
568う〜ん…。:02/01/26 03:16
初めてテクスチャ使ったもので、分からなくって困ってます。
背景としてテクスチャマッピングを使って、その手前に立体(立方体とか)を
表示させたいのですが、テクスチャの方が常に手前に表示されてしまいます。
デプスバッファはちゃんと機能してるはずなのに…。
それぞれの描画部分は簡単に書くと、

glBindTexture(GL_TEXTURE_2D, texid[0]);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, 0.0, -1.0);
glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 0.0, 1.0);
glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 0.0, 1.0);
glTexCoord2f(1.0, 0.0); glVertex3f(0.0, 0.0, -1.0);
glEnd();

glutSolidCube(0.5);

です。
よくあるミスとか、ちょっとでも考えられる原因ってありますでしょうか。
座標変換部を省略してる可能性もあるので外してるかもしれないけど・・・

テクスチャうんぬんの前に
 glutSolidCube(0.5);
がどこに(座標の事ね)描画されるかを教えてくだされ。
背景として使うんだったらテクスチャの所だけ
デプスバッファ使わんようにしたら?
571565:02/01/26 13:16
ごめん。ローエンドなんだけど、なんて言えば
いいでしょうか?特に2000、XPなんてドライバサポートされて
ないし、文言に困るんです。CPU、カード、OSの
組み合わせでこれならOKってのはどうやって言えばいいんで
しょうか〜。
教えて君でごめんなさい。
ゲーム用だけど例えば
CPU: 1GHz以上
VGA: Geforce3以上、Radeon8500以上(LE不可
OS: Win98/2000/XP
とか

って別に動作確認したものを書いておけばよいのでは?
573568:02/01/26 15:25
>>569>>570 お返事ありがとうございます。
glutSolidCube(0.5);は、(0.0, 0.0, 0.0)に書いてます。
568に書いたのでは、なぜかテクスチャの方がx軸(マイナス)方向にちょいずれてますが、
特に理由はないです。
回転してどこから見ても、視点から見て重なる部分にはやはりテクスチャが表示されるんです。

あと、背景と言いましたが、立体がテクスチャを突き抜けることもしたいので、
デプスバッファは外せない模様です…。
テクスチャDisableにするとちゃんと見えるの?
575568:02/01/26 17:52
>>574
え〜とすみません…テクスチャDisableとは?
glDisable(GL_DEPTH_TEST)の時に、テクスチャが見えてるかってことでしょうか?
そのことで言えば、見えてます。
ただやはりその場合は、テクスチャの奥にあるはずの立体も
手前に(というか上描きされて)表示されるんですが。
>>575
いやいや、テクスチャ使ってない状態ではきちんと表示されるの?
ってことを聞きたかっただけ。
577568:02/01/26 23:11
>>576 ごめんなさ〜い。
テクスチャなしでもうまくいってませんでした。
なんでだろーー??うーん、情けない…。
578デフォルトの名無しさん:02/01/28 11:24
テクスチャの歪みをとるという
GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST
を使っているのに歪みが取れません。
パースペクティブコレクションが効かないなんか
理由とかあるんでしょうか?
579デフォルトの名無しさん:02/01/28 12:39
OpenGLで作った動画or画像をWebで公開する方法はありますでしょうか?
サーバはLinux + Apacheです。もし可能であればOpenGLをこれから学びたい
と思ってます。
>>568
背景として使うポリゴンだけにテクスチャを適用したいのであれば、

glBindTexture(GL_TEXTURE_2D, texid[0]);
glBegin(GL_QUADS);
省略;
glEnd();

glDisable( GL_TEXTURE_2D );
glutSolidCube(0.5);
glEnable( GL_TEXTURE_2D );

のようにしないとイカンのでは?
(もしくは GL_QUADS のところにだけテクスチャON にするとか)
そーしないといらん所にまでテクスチャが適用されてしまうと思うが。

>>578
GL_NICEST で試した?

>>579
残念だがそれは激しくスレ違いと言わざるを得ない。
OpenGL を利用して作られた画像かどうかって、全然関係ないじゃん。
581578:02/01/29 01:13
>>580
GL_NICEST とGL_FASTESTの両方で試してみたんすけど
変化ナシでした…。
>>581
GL_DONT_CAREとGL_NICESTで違いでる?

座標の指定が変なだけか、意外とミップマップがおかしいとか。
583568:02/01/30 21:31
>>580 ありがと!
実は原因としては、gluPerspectiveのトコでした。
でも他の問題として、立方体の色がどうしても白色になってしまってて、
その原因は580さんの通りでした。
extension周りの話が無いないなぁ。誰も使ってないのか?
585デフォルトの名無しさん:02/01/31 00:45
ageだった。
586  :02/02/01 07:08
あげ
587デフォルトの名無しさん:02/02/02 13:58
Mesa4.0.1をインストールしたのですが、make後のmake check時に
undefined reference to `gluTessBeginPolygon`
というエラーがいくつか出ます。それで`gluTessBeginPolygon`を探したところ
#define gluTessBeginPolygon mgluTessBeginPolygon
となっていたのですが、`mgluTessBeginPolygon`はどこにも見当たりませんでした。ようはmake checkが成功すればいいのですが、どうすればよいでしょうか。
588デフォルトの名無しさん:02/02/02 14:30
>>587
自分で考え、自分で決めろ。
自分が今、何をすべきなのか。
ま、後悔のないようにな。
カジさんカコイイ
>>589
よくきずたな
591デフォルトの名無しさん:02/02/02 22:28
>>588
意味がさっぱり分からないのですが。。。
>591
気にするな。
588はオタ。それを判ってしまったオレもオタ。
593デフォルトの名無しさん:02/02/02 23:09
glut32.dllって再配布していいのでしょうか?
594デフォルトの名無しさん:02/02/02 23:21
Rubyを同梱すること。
glCopyTexImage2D()を使いテクスチャを作成したんですけど、
なぜか暗くて、オブジェクト以外は真っ暗。
背景色はコピーされないんでしょうか?
画面をglCopyTexImage2D()を使いテクスチャを作成し、
立方体の一面に貼ろうと思うんですけど、
なぜか暗くて、オブジェクト以外は真っ暗。(オブジェクトも暗い)
背景色はコピーされないんでしょうか?
あれ!
2回送ってしまってすいません。
>>595
背景色とか関係無、く画面に描かれているイメージをそのままテクスチャに吸い上げる。
コピーするサイズが2^nになってるか?

それ以前に、ミップマップ理解してるか?
理解していないなら、とりあえず、glTexParameterのGL_TEXTURE_MIN_FILTERを
GL_NEARESTかGL_LINEARにしとけ。
>>598
メモリを128*128*4確保して、
128*128の画面をglCopyTexImage2D()でコピーして、
そのまま貼ればよいだけですよね?
GL_TEXTURE_MIN_FILTERはGL_NEARESTかGL_LINEARです。
訂正>GL_TEXTURE_MIN_FILTERはGL_NEARESTかGL_LINEARです。

GL_TEXTURE_MIN_FILTERはGL_LINEARです。

そのままコピペしてあっさり間違えてるところからみて
ソースを落ち着いて見直したほうがいいと思われ
>>598
>メモリを128*128*4確保して、
何を確保しているんだ?
PBufferか?

glCopyTexImage2DでなくglTexImage2D使ってみて、
テクスチャがちゃんと張られてるか確認してみ。
603600:02/02/03 22:23
>>601>>602
オッチョなんでライトの影響を消すの忘れてました( ̄□ ̄;)!!
どうもすいませんでした。<(゚ロ゚;)> うわぁぁぁぁ
あと、glutでGetCursorPos()の様な機能の物が、
見当たらないんですけど、無いんでしょうか?
>>603
glutMotionFunc、glutPassiveMotionFuncでとるべい。
605603:02/02/04 03:05
>>604
glutMotionFuncとかは、マウスがドラッグされた時しか
入らないんじゃ?
マウスが動いたかどうか判断できるんでしょうか?
606 :02/02/04 04:42
OpenGL始めようと思っています。
おすすめの入門書とはどういうものでしょうか?
よろしくお願いします。
607 :02/02/04 10:28
ずっと疑問だったんですが、OpenGLとかDirectXとかって、
座標を1〜−1内で表現するのが一般的みたいに感じるんですが、
これって何故なんですかね?
画面端の座標が(1,1)とかって扱いにくくないですか?
608デフォルトの名無しさん:02/02/04 10:35
>>607
では、どんな値だったら扱いやすいと思いますか?
>607
拡大・縮小・回転するのに物理的な座標をいちいち計算するほうが扱いにくい。
610  :02/02/04 14:37
今からOPENGL勉強するのならQuador DDC搭載のELSAのカードがおすすめ。
CPUはP4の2.2かアスロンXPのデュアル。
俺は、
xp1900x2
ELSAのQUADOR DDC
メモリ1Gの安物ハイエンド?で快適で安定動作する環境を構築したよ!!
>>605
ボタン押されている時はglutMotionFunc
押されていない時はglutPassiveMotionFuncが呼ばれるんじゃなかったか?

>>606
赤本(OpenGL プログラミングガイド)
意外と奥が深いぞ。

>>610
そこまで揃えておいて挫折するなよ。
612605:02/02/05 03:18
>>611
その通りでした。
ありがとう御座いました。
613606:02/02/05 19:40
>>611
ありがとうございました。


614 :02/02/05 19:43
OpenGLにおいて定番のサイトは
どういうところがあるのでしょうか?
よろしくお願いします。

私はこれからはじめようと思っているので特に
入門的な解説があるサイトを紹介していただきたいです。
615615:02/02/05 19:54
>>614 えぬけーえくさ
616デフォルトの名無しさん:02/02/05 20:13
OpenGLMLのアーカイブとかリンクとか無くなってわからなくなっちゃった。
だれか助けて。
>>615
どーでもいーことですが、IBMの子会社になってエクサにかわりました。

>>614
ググルで「日本語のページを検索」でOpenGLをキーワードにして検索。
619デフォルトの名無しさん:02/02/05 23:35
windows上で、OpenGL+GLUTでウォークスルー型の
プログラムを一から作ろうと思っているのですが、
参考になるC++のソースのあるサイトないでしょうか?
620デフォルトの名無しさん:02/02/07 01:53
GLとMFCでポリゴンビューア作ってるものです。

CGアプリによくある,ビューウィンドウ上の
ある位置に固定して座標軸とか"Front","Top"
とか言う文字列を表示したいのですが
実装方法が良く分かりません。。
あれはどのように実装しているのでしょうか?

ビューウィンドウのある位置に固定して表示する
便利な関数とかあるんでしょうか?
無知な僕に教えてプリーズです。
>>620
文字描画用にPROJECTION_MATRIX持てば?
OpenGLで物理やってるホムペ知ってる人!
623カウンター:02/02/09 03:35
>>622
ここだけの話、
"OpenGL"ということでこのスレ聞くよりも、
"物理"ということで違うスレで聞いて回った方が速いかもぁ。
(この手の質問にはあまり反応が無いようで…)
そういうこと言う俺は、当然のことながら、知らん!
624デフォルトの名無しさん:02/02/09 14:31
質問です。
RGB値をフレームバッファから、α値をファイル(PNGとか)から取ったテクスチャを作りたいんですが、
glCopyTexSubImage2D とかで特定の値だけを書き換えたりはできないですか?
バックバッファに書いて合成する っていう方法しかないですか?

光学迷彩をカメラの視線に対して垂直に固定された物体に使いたいのです。
一応、Windows でやってます。
>>624
それかマルチテクスチャだろな。
626624:02/02/09 17:27
>>625
ありがとです。
627  :02/02/12 11:59

OpenGL専用のビデオボードは高すぎて手が届きません。
Geforce4TI4600 か RADEON8500の購入を考えています。
どちらがおすすめでしょうか?
628デフォルトの名無しさん:02/02/12 18:28
>>266 さんと同じことがしたいんですけど、
>>269 さんのレスでは自前でしないといけないとのこと。
自前で作るのが面倒(責めないで・・・)なので、
どこかにそれらしいことしてるソースか解説って落ちてないでしょうか。

で、何がしたいかというと、
平面のテクスチャを使って↓のように似非パーティクルを描いておいて、
カーソルキーでグリングリン回したいんです(base_pos,base_rotの値を変える)。
# ↓はパーティクルのテクスチャ面がいつも投影面を向くようにしています。

for (Particle p=particle_begin(); i!=particle_end(); ++p) {
 glLoadIdentity(); // 初期化
 glTranslatef(base_pos.x,base_pos.y,base_pos.z); // 基準の位置
 glRotatef(base_rot.x, 1.0f,0.0f,0.0f); // 基準の回転角 (1)
 glRotatef(base_rot.y, 0.0f,1.0f,0.0f); // 基準の回転角 (2)
 glRotatef(base_rot.z, 0.0f,0.0f,1.0f); // 基準の回転角 (3)
 glTranslatef(p.pos.x,p.pos.y,p.pos.z); // パーティクルの相対位置
 glRotatef(-base_rot.z, 0.0f,0.0f,1.0f); // 回転したテクスチャの向きを戻す (-3)
 glRotatef(-base_rot.y, 0.0f,1.0f,0.0f); // 回転したテクスチャの向きを戻す (-2)
 glRotatef(-base_rot.x, 1.0f,0.0f,0.0f); // 回転したテクスチャの向きを戻す (-1)
 p.draw_particle(); // パーティクルの描画
}

でも、これだと回転軸が投影面に対して一致しないのでうれしくないと。
結構需要ありそうな処理なのでどこかにありそうなもんなんですが・・・。
glTranslate... // 適当に変換
GLfloat m[16];
glGetFloatv(GL_MODELVIEW_MATRIX,m);
glLoadIdentity();
glRotatef... // ワールドで回転
glMultMatrixf(m);
だめだっけ?
>>628
宇治社中改のサンプルとか。
631628:02/02/13 13:58
どもです。
ちと当たって見ます。
632628:02/02/13 19:38
ん〜。板に絵を張って騙す方法はビルボードと呼ばれているのか。
知らなかった・・・。ビルボードで検索したらいろいろ出てくるなぁ。

>>629さん
結果は>>628と同じになりました。

>>630さん
原理的な説明はいろいろあったんですが、
これだと結局自前ですることになりそうです。
もう少し超簡単な方法がないか探してみます。
>>628
いや、
3D補講 - #13-平面への影の投影
にあるサンプルのソースの 3dmath.cpp とかではダメなの?
634628:02/02/13 20:16
あ、それ見てませんでした。
ありがと〜。
635デフォルトの名無しさん:02/02/15 23:55
アルファ値のある画像フォーマットを読み込むためのローダーで、お勧めなの教えて!!
>>628
何所かで手取り足取りのとこ見たような・・・。
GTK+でOpenGLやってる所知ってる方いらして。
ちなみにVC++でGTK出来るか知ってる方いらして。
c言語スレから紹介されたものです。
glutで文字を出したいんですけど・・・。
glutBitmapCharacter(void *font, int len);

byte bitmaps[][12] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},



とあるのを
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
display_num=glGenLists(127);
for (i=32; i<127; i++){
glNewList(display_num+i,GL_COMPILE);
int len = ????
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, len);
glEndList();
}
としたいんですがlenの部分がどの様に変換したら良いか
悩んでいます。何か良い方法が在りましたら、お願いします。m(__)m





639デフォルトの名無しさん:02/02/28 10:12
>>638
質問の意味がいまいち分からん。
glutBitmapCharacter()の第二引数は表示したい文字だろ?

 glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'A');

自分で作ったビットマップフォントを表示したいということか?
>>639
そうです・・・。
>>640
glBitmap()使え
SCRNSAVE.LIBを使ってOpenGLでスクリーンセイバを
作りたいんですけど、GLの設定などは何所で書けば良
いのでしょうか?
>>642
普通にWM_CREATEを拾えばいいのでは。
あの〜、Quake2で採用されている、QuakeGLっていうOpenGLの
サブセットラッパーライブラリがあるんですけど、これの使い方
を説明したサイトとかないでしょうか。

これを使えば間接的ながらも、Glide/SGL/D3D/OpenGLそれぞれに
同じインタフェースでアクセスできるのでめちくちゃ気になってます。

Quake2はソースがフルで公開されてますが、巨大過ぎて自分にはどこから
たどっていけばいいのか見当もつきません。



645デフォルトの名無しさん:02/03/04 01:31
Direct3Dのように、Zバッファを複数作って
Zバッファ同士で内容を高速に転送させることはできるのでしょうか。
age
>>645
遅いので良ければglCopyPixels,glDrawPixels
高速なのはわからんなぁ。
extensionでも調べてくれ。
ただ入れ替えだけだったら他に方法があるかも。
648デフォルトの名無しさん:02/03/07 02:18
>>648
おぉ、そっちだった。

使ったことは無いがWGL_ARB_buffer_regionはどうだろう。
650デフォルトの名無しさん:02/03/08 00:00
>>647-649
ありがとうございます。

実はまだOpenGLは触ったことがないのですが、>>645に書いたことが出来るなら、
自作ソフトをOpenGLにも対応させるためにこれから勉強しようと思ってました。

でもハードウェアで高速に転送してくれるような機能は標準ではなさそうですね。
勉強しようかどうしようか・・・。
もうちょっと悩んでみます。
>>650
拡張機能の利用をためらってると OpenGL じゃなんもできんわよ。
   ||
   ||
 ∧||∧   モウ・・・ナヤムノ ヤメタ
(  ⌒ ヽ
 ∪  ノ
  ∪∪
   ||     ⊂⊃
   ||    ∧ ∧
   ||    (  ⌒ ヽ
 ∧||∧   ∪  ノ
(  ⌒ ヽ 彡  V
 ∪  ノ  フワーリ
  ∪∪
PyOpenGLっどうなの?
655 :02/03/12 13:59
今Neheのサイトで勉強しているんですが、何か他にいいサイト知りませんか?
できれば(違ってもいいけど)wglを用いてるところがいいかもです。
656フェイフェイ:02/03/12 14:44
OpenGLとかの参考書って英語が多いけど
日本語の参考書で赤本以外で使えそうなのってない?
>>655
wglの使い方ならmsdnで調べれば?
658655:02/03/13 11:23
msdn?見たけど無かったです・・NeHeサイトに対する評価ってどれくらいです?
http://www.gamedev.net/community/contest/physics/entries.asp
物理現象シミュレーションコンテスト、どれも凄過ぎです・・
AquaDemoと Physics Demo と SandBox がお気に入りです。
659!657:02/03/13 11:33
英語のほうね > msdn
660655:02/03/13 11:46
了解しました。
にしてもAquaDemoで球体から球体が分離して、またくっつくってな芸当を見せてくれたんですが、
どうやってるんでしょうか。ワイヤーフレームなんで、余計気持ちが悪い動きを見せてくれます。
PhysicsDemoレベルになってくると、物理学先攻じゃないと太刀打ちできないっぽいです・・
661655:02/03/13 11:50
上のコンテスト作品の中で、幾つかfullscreen modeを無力化する前にwindowをDestoyしてるものがあるので、
グラフィックボードによっては終了時に不正動作する事があるかもしれません。
>>660
ただのメタボールのようだが。別にphysicsとは関係ないぞ。
むしろ今時何故メタボール?
リンク先のphysicsdemo見たけど、凄いなぁ
>>658
よりによって最も技術的に面白くない3つを選んでるような……。
(他のも特に真新しいのないけど)
655はいままでdemoというものを見たことがないに一票。
有名なdemo見せたら、655はひっくりかえるに一票。
何かいいデモあったら教えてくれ>666
メタボールつくりてーな
2Dなら簡単だよね
3DもVoxel使って力技でなら楽そう
670デフォルトの名無しさん:02/03/14 10:47
671671:02/03/17 20:45
VC++6.0のSplitterWndでウインドウを左右に分けてそれぞれにOpenGLviewを貼
り付けようとすると、片方のウインドウに2つのviewが貼り付けられてしまい途
方にくれています。どなたかどのようにすればよいか教えてください。
お願いします。
672デフォルトの名無しさん:02/03/18 00:35
そのviewがactivateされるたびにカレントのglコンテキストを使うように指示すればいんでない?
673671:02/03/18 13:47
レスありがとうございます。早速やってみます。
>>671
素直に子ウィンドウ作れ
675672:02/03/20 02:35
あぁごめん、勘違いしてとんちんかんな答えをしてた
676フェイフェイ:02/03/20 20:35
ここのサイト、何らかの参考になるといいけど。
http://www.gametutorials.com/
メタボール作ってみたがショボショボだった。
寝る。
(´-`)。oO(ショボいメタボールってどんなんだろ)
>>678

(´-`)。oO(微妙にしおれてるんじゃない?)
(´-`)。oO(バンプマップでしおしおメタボール?)
681677:02/03/26 00:23
>>678-680
marching cubesって特許あるっぽいから、
他の方法で何とかならないかと考えたが…
使い物にならなかった。
寝る。
glRasterPos3d(0.0, 0.0, 0.0);
って意味あるの?
glRasterPos2d(0.0, 0.0, 0.0);
となんら変わらないが・・・。
>>682
glRasterPos2d(0.0, 0.0);
じゃないか?
684デフォルトの名無しさん:02/03/30 09:53
>>682
glRasterPos2dってglRasterPos3dのwrapperで
zに適当な値を入れて放り込んでるだけじゃない?

682はglRasterPos3dのzに0.0以外の値を入れて
回転させてみて、結果を2時間以内に報告すること。
glRasterPosの座標もMODELVIEWとPROJECTIONで変換されるわけだよ。
たまにはage
687デフォルトの名無しさん:02/03/31 22:53
DelphiかC#でOpenGL初期導入方法を解説しているサイトとか無いかな・・・
C#は無いと思うけど。
>>687
Delphi知らないが
http://www.delphi3d.net/
が良く引っかかるな。
689MUI:02/04/05 14:47
WindowsでOpenGLのソフト作ってるんですけど、
glutCreateMenuで作ったメニューって、バグってません?
(一応最新のglut3.7.6使ってます)

メニューバーでクリック。
メニューがプルダウンする。
メニュー以外のところをクリック。
メニューが消える。(ここまでは良いとします)
んで、メニュー以外をクリック。
なぜかメニューが出現?
繰り返してるとエラー。

エラーの場所はmui.cの
void muiSetLocate(muiObject *obj, int state)
{
obj->locate = (short) state;
}

objが無いからエラーになってるっぽいので、
if文ではじくように定義(一応2通り試した)
if(obj == 0x000000) return;
if(obj == NULL) return;
ですが、はじいてくれません。
悩んでおります...。(--;


>>689
そのobjの値を調べてみるってのはどうよ。
691デフォルトの名無しさん:02/04/11 12:06
私も3Dのメタボールを描いてみたいです.
Cマガの99年5月に載っていたんですが、
DirectXでした.自分なりにOpenGLにしたんですが、
表示できませんでした。

何か、他に参考になるような情報はあるでしょうか?
692691:02/04/11 16:50
自己フォロー
まっくろくろすけが表示されるので、
法線ベクトルを逆向きにしてみたら表示されました。

DirectXとOpenGLじゃ法線ベクトルの向きが逆?
>>691
ttp://astronomy.swin.edu.au/~pbourke/modelling/polygonise/
marching cubesって特許有りそうなので注意かも。
Cマガに載ってたのってどんな方法?
695691:02/04/11 22:29
>>693
有難うございます.微妙に,いや,結構違うんですね.
たまたま上手くいってラッキーでしたが,謎が解けそうです.

>>694
う〜ん,私がみたところ,全く同じアルゴリズムで,実装も同じです.
参考文献としておけば大丈夫ですよね?
>>695
デモとかで結構使われてるから金取らなきゃ大丈夫だと思うけど…(無責任)
よくよく考えるとメタボール自体ゲームで使われてるのって見たことないよねぇ。
興味があるならmarching cubes patentで検索掛けてみれば?
三角形で区切る方法もあるらしいがそっちほうはどうなんかな?
ぷよぷよメタボールで表現できたら面白そうだと思ったんだけどな
698さんでぇ:02/04/17 22:37
OpenGL拡張のglTexImage3DEXTを使いたいのですが、ビルドするとエラーになってしまいます。
glGetString(GL_EXTENSIONS)でハードがGL_EXT_texture3Dをサポートしていることは確認済みです。
OpenGL拡張関数を使用する場合には特別なヘッダとかライブラリをリンクしないといけないのでしょうか?

699デフォルトの名無しさん:02/04/18 00:51
>>698
うーん。Extension は使ったことがないので分からないけど、
どういうエラーが出たかもうちょっと詳しく書いてみた方が良いのでは?

単にコンパイラの吐いたエラーをコピペするだけでも
(読む側にとっては)大分情報が得られると思うんだけど。
700デフォルトの名無しさん:02/04/18 00:54
mov word ptr [700],⊂(`Д´⊂ )⊃ <うおー700hゲット!!
>>698
簡単に説明(windowsの場合)
nVidiaからglext.h持ってくる。(AtiだったらglAti.h?)

include<glext.h>

PFNGLTEXIMAGE3DEXTPROC glTexImage3DEXT;

glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC) wglGetProcAddress("glTexImage3DEXT");

glTexImage3DEXT(...)呼ぶ。

(;´Д`)ハァハァ・・・
702さんでぇ:02/04/18 23:08
>>701
有難うございました。
説明していただいた通り行ったらビルドできるようになりました。
感謝です。


3か月弱で 700 レスかー。
結構 OpenGL やってる人いるんだなー。





って、2001 年の2月からかよっ!!

これからタマにお世話になります。
どうぞよろしく。
漏れも昨日からGLの仕事に戻りましたヨロ
高度なことはやりませんがね
C#でもやれるんだったらやってみようかな。
706デフォルトの名無しさん:02/04/25 01:15
マルチプラットフォームなGUIツールキットで、
glutと相性の良いものはどれですかね?
今、GLUI、FLTK、FOXをインストールして試してるんですが・・・
未だ、どれが良いか感触がつかめてません。

GLUIだと既存のソースに組み込みやすいんですが、スライダとかが無いのが惜しいですねぇ
上記3点以外にも良さげなツールキットをご存じでしたら教えていただけると有り難いです。
707厨房:02/05/02 03:12
赤本買う金なんてないんだぁ〜!!
だれか赤本にかわる素晴らしいHPを教えて下さい。
いやーけっきょく赤本に戻ると思うよ
K&Rみたいなもんかも。
710デフォルトの名無しさん:02/05/02 04:55
だれか glut にファイル選択のダイアログとか付けてくれんだろうか.
glut のシンプルさは好きなんだけどなあ.
せめてテキスト入力欄だけでも...
711デフォルトの名無しさん:02/05/02 05:39
>>710
glutにそういう機能を組み込んじゃうと、シンプルさが失われるのでは?

テキスト入力だけで良いならGLUIが簡単で良いかも。
ttp://www.cs.unc.edu/~rademach/glui/

ファイル選択ダイアログとかだと、FLTKやFOX、wxWindowsを使わないとダメかなぁ・・
712デフォルトの名無しさん:02/05/02 15:45
GL初心者なのですがライトとスケールの関係について
詳しい方はいらっしゃいますでしょうか?

モデル行列にスケールを掛けれるようにしてスケール値をいじると
(元は1.0,1.0,1.0を0.5,0.5,0.5に変更等)
面の明るさが変わってしまうのですが、こういうものなのでしょうか?

ライトはGL_POSITIONなライトが視点のずっと手前に1つあるだけです。
スケールを小さくすると明るくなり、大きくすると暗くなります・・・

流れ的には
glMatrixMode(GL_PROJECTION);glLoadIdentity();glPerspective();
glMatrixMode(GL_MODELVIEW);glLoadIdentity();ライト設定
モデルの座標、回転、スケール設定;モデル描画;
という感じなのですが・・・ (T-T)
713デフォルトの名無しさん:02/05/02 15:50
当掲示板はフーゾクで働く現役、元AV女優の情報の交換
を目指すものであります。
http://jbbs.shitaraba.com/sports/1923/avkafuzoku.html
え?
>>712
glEnable(GL_NORMALIZE);
を呼ぶとか。
それほど詳しくもないけどレス。

>>712
単に、スケールを大きくすると、視点が光源から離れるから暗くなるだけでは?
モデルから反射光量が少なくなると言うか・・・なんと言ったらいいのかな。。

的はずれだったらスマソ
717デフォルトの名無しさん:02/05/02 20:10
>>715 >>716
早速お返事ありがとうございます!
まさに glEnable(GL_NORMALIZE) を付けたら直りました!

与えている法線自体は Normalize してある値だったのですが
スケールが法線の値に対しても影響している。ということなのですね。
納得いたしましたです。ありがとうございます。

質問ばかりでは申し訳ありませんのでちょっと考察&速度比較をば。

glEnabel(GL_NORMALIZE) は毎法線 Normalize していそうなので
けっこうコストが高いのかなぁと思ってみたりしたのですが・・・

Enable/Disableを
試してみましたところ検出できる程度の速度差が出ませんでした・・・
テスト環境が GeForce なのでハードで処理されているのかもしれません。
ハードウェアのサポートが受けられない環境では
スケール値が 1.0,1.0,1.0 でない場合のみ glEnable(GL_NORMALIZE)
の方が親切なのでしょうか・・・

となるとハードウェアのサポートが受けられる環境では
CPUで動的に法線を生成しているような場合は
CPUでわざわざ Normalize しないほうが早くなりそうなですね・・・

また何かありましたら教えを乞いに参上するかもしれません・・・
718デフォルトの名無しさん:02/05/02 20:24
結構スケールいじったり法線いじったりしそうなので
glEnable(GL_NORMAL) しっぱなしで行こうと思います。

今後ともよろしくおねがいします。(^-^;
>>711
>glutにそういう機能を組み込んじゃうと、シンプルさが失われるのでは?
確かに, おっしゃるとおりです(w. が, 欲しくなるのは単なるわがまま ?
glui は 1 度断念したんだけど, 理由が思い出せず.
>>719
>が, 欲しくなるのは単なるわがまま ?

テキスト入力やファイル選択はGraphic Libraryの範疇じゃないので、
別にするべきだと思いますけど。

>glui は 1 度断念したんだけど, 理由が思い出せず.

gluiがダメだとなると、FLTKその他を使うのは難しいかも、、。
721デフォルトの名無しさん:02/05/04 18:07
OpenGLでちゃんと使っているはずの
ディスプレイリストをglDeleteListsで
消去してもメモリが解放されないのですが。
こんなものなんでしょうか?
>>719
ファイル選択ダイアログ程度なら各OSのAPIを直接呼んだ方がいい気が
しますけど…。なにか理由があるのかな?

>>721
どういう環境で、どこのメモリをチェックしてます?
(そして、そこはその環境下ディスプレイリストが作られる場所ですか?)
>>721
G400だったりする?
>>721
暇なのでやってみた。
作ったリストは、再帰の回数を増やすとだんだんキレイな球体になっていくやつ。
8*(4^3) ポリゴンでは変化が見られなかった。
8*(4^6) ポリゴンでシステムメモリに2MB程度の変化が起きたよ。
GeForce3Ti200@WIN98
メモリは極窓のVer情報で確認したので、ちょと大雑把だと思う。

よくわからないけど、>>721の作ったリストが容量を食わなかったとか。
リストを「作る⇔消す」じゃなく「作る⇔作らない」での変化も見てみたらどうでしょ。
ちなみに、ゲー作の方も見てますがなんとなくこっちに(藁
725722:02/05/04 22:39
補足、ディスプレイリストがどこに確保されるかは現在のところ実装依存に
なっているということね。(OpenGL2.0ではその問題は解決されるらしい)

http://opengl.org/developers/faqs/technical/displaylist.htm#0140
726724:02/05/04 22:50
気になったので、ビデオメモリも計ってみた。
これはN-BenchVer2 の起動画面で。
ビデオメモリには変化無かったです。
Windows ならそうかもしれないですけど,
Unix にはそういうものがない気が.
あ, readdir() とかでディレクトリをなめて自作しろってことですか ?
>>727
あなたの環境下で提供されている適当な任意のツールキットを使ってください。:)
Win32と違い、Unixそれ自身も、OpenGLも(あなたの期待するような)ツールキット
の機能を提供していません。特定のAPI体系がなぜそこに切り分けられているか
をよくよく考えてみることです。

もし、WindowsでもUnix系のOSでも通るようなソースを御気楽に書きたいなら、
GLUIかFLTKでも使われることをお勧めします。公約数的なGUIなのであまり
使い勝手がいいとはいえませんが…。またはそれらのツールキットはソースが
提供されているので、ソースコードを見て御自分で使いやすいように書き換えるとか。
>Win32と違い、Unixそれ自身も、OpenGLも(あなたの期待するような)ツールキット
>の機能を提供していません。特定のAPI体系がなぜそこに切り分けられているか
>をよくよく考えてみることです。

何の話してんの ?
730:02/05/05 03:03
OpenGLのヴァージョンって今1.3だよね?
マルチテクスチャのチュートリアルサンプルとかないかなぁ。
>>729
>>710のレスから流れを追ってみてくだされ。
>>731
719 までは glut とか glui への GUI の機能拡張の話で,
720 が何の脈略もなく Graphic Libraryの話を持ち出して.
以下話がかみ合ってないように読めるが ...
>>720は、単に、
 「Graphic libraryであるGLUTに、ファイル選択や
  テキスト入力の機能を入れるのはおかしい」
と言ってるだけでは?

>>728の、
 「特定のAPI体系がなぜそこに切り分けられているかを
  よくよく考えてみることです」
も同じようなことを言ってるように思えますが。
734デフォルトの名無しさん:02/05/05 04:34
Open GLってどこで手に入るんでしょうか?
教えてください。
735デフォルトの名無しさん:02/05/05 04:44
>>734
OSは?
たいていの情報はttp://www.opengl.orgで見つけられます
>>733
ああ, なるほど.
多分 glut を toolkit と考えた 719 と Graphic library と
考えた 720 の間では, 話はかみ合わんと見た.
737デフォルトの名無しさん:02/05/05 05:57
>734
windowsだったら95以外は標準で入っている。
開発するなら話は別だが。
738デフォルトの名無しさん:02/05/05 08:12
>>735,737
OSはWin98です。
>>735さんの教えてくれた所見たら何とかなりそうみたいです。
ありがとうございました。
ちなみに、OpenGLって、C++分かってる必要あるのでしょうか。
解説書2冊ほど目次だけ見たら、どっちもVisual C++が出てたので。
739デフォルトの名無しさん:02/05/05 11:02
>>722 - >>726
回答ありがとうございます。
え〜と、システムはWindows XP,2000で
Geforce3とかGeforce2MX400とかです。
FoxというGUI ToolKitをVisual C++でコンパイルしてます。
またメモリはタスクマネージャーの
メモリ使用量で見てるだけです。
それでデータはdouble型
36000点の3次元頂点と、7万ポリゴンくらいを
ディスプレイリストで作っています。
このデータだけなら10MB程度のメモリ使用
するのですが、
ディスプレイリストを作るとさらに70MBくらい
メモリを使用します。
でも同じデータをもう一個読み込んでも10MB
増えるくらいで、再び70MB取ることはないです。
この状態でデータをクリアしても、20MB分は
解放されるのですが、ディスプレイリストで
確保されたメモリは解放されないようです。

下のような理由なのかな〜。
ttp://www.gimlay.org/~andoh/opengl/oglfaq/displaylist.htm#0140
glut のウィンドウやメニュを生成する機能とか
キーボード, マウスのイベントを捕まえる機能を graphic library と
言い切るのは変だろ,
glutって、メニュー作れたっけ?
>>740
glutはもともと"グラフィックライブラリ"ではないと思うけど。

>>741
glutCreateMenu, glutAddMenuEntry, glutAttachMenu
で一応メニューが作れます。
>>742
710のレスから流れを追ってみてくだされ.
特に 720 と 733.
openglのコマンドって、スレッドまたぐと一切利かなくなるのね。
コンテキストハンドルをグローバル変数にしたり、いろいろやったが駄目だった。

こまったのぉ・・・
>>745
スレッドごとにカレントコンテキストがありますよん。
おそらく排他処理されてるだろうけど・・・あまりお勧めしない
747745:02/05/06 21:28
スレッド自体の排他制御(制御順序)はこっちでコントロールしているから
問題ないはずなんだが。

glの複数のコンテキストをwglMakeCurrent()とか使って
ひとつのwinデバイスコンテキストに統合できないかなぁ。
うーん、ひょっとすると、コンテキストってそれを生成したスレッドでしか
使えなかったりしないかねえ。
>>722
>ファイル選択ダイアログ程度なら各OSのAPIを直接呼んだ方がいい気が
>しますけど…。なにか理由があるのかな?

そういうAPIにしまりのない奴のソースを見ると、
いきなり DWORD とか書いてあって萎えることが多い。
で、しまいには「GLUT使いにくいよ! Win32API で書こうよ!」
とか言うんだ。

……いや、被害妄想なのはわかってる。聞き流してくれ
フルスクリーンGLなアプリじゃOSのAPI使いようがないわな
そうじゃなければモジュールきっちり分ければ良いし
751デフォルトの名無しさん:02/05/08 22:28
glDrawPixelsで画像を描画する際に、任意のRGBプレーンのみを描画したいのですが、
そのような命令は標準で用意されていますか?
描画前に、必要なプレーンのみのデータを含むバッファを用意しないと無理なのでしょうか?
>>751
glColorMaskとかそういうこと?
>>752
あ、そのまんまの名前の関数があったんですね・・(汗
glColorMaskで希望通りの描画を実現出来ました。

どうもありがとうございました。m( )m
754デフォルトの名無しさん:02/05/09 14:18
そろそろPBufferでも実装しようと思っていますが、
GEFORCE256とかでもハード対応してますか?
( CopyPixelsがソフトエミュレーションになってしまった
  記憶があったので、見込み薄に思いましたが、、、)。
755デフォルトの名無しさん:02/05/09 15:49
マルチテクスチャはそれぞれの色要素が乗算されて重なると考えてよいのでしょうか?
だとしたら、これを加算に変更する事や別のブレンドモードにする事は可能ですか?
OpenGLのマルチテクスチャはあんまりカッコよくないから嫌い
757デフォルトの名無しさん:02/05/10 00:15
>>754
Geforceだけではなく、TNTまでもPBufferをサポートしているらしい。
http://developer.nvidia.com/view.asp?IO=gdc2001_pixelbuffers
758デフォルトの名無しさん:02/05/10 12:51
>>757
確かにそう記載されてますね、、以外でした。
俄然、やる気出て来た(W
ありがとう。
759デフォルトの名無しさん:02/05/10 16:42
訂正)以外でした>意外でした

素で間違えてるぅ・・・。
760デフォルトの名無しさん:02/05/10 17:43
RGBテクスチャをRチャンネルだけ抜き出して描写することって出来ますか?
つまりt(R,G,B)と色をもっているテクスチャをt(R,R,R)で描写するとか(結果赤成分だけのモノクロ)。
nVidia限定やProgramableShaderの利用でもかまいません。
最近 GL_QUADS で一個だけ四角をFILLしたときに
斜めに対角線みたいな線が一本出ちゃうことがあるんですが
これ何が間違ってるんでしょうか。

scale上げてってポリゴンが画面からはみ出すと、その線が増殖するんですよ。
とっても醜くて困っちゃいます。
>>760
ただglColorで表示したい色1にして書けばいいのでは?
763デフォルトの名無しさん:02/05/10 23:18
>>760
glPixelMap(),glColorMask()辺りでどーぞ。

>>761
見たこと無いな、、ボード何?

>>762-763
>>760の希望は、例えば赤成分だけをグレイスケールで
表示したいということなので、マスクしただけではダメなんじゃないかな?
マスクしただけだと、赤色の濃淡表示だけになってしまふ。
765デフォルトの名無しさん:02/05/10 23:44
>>764
そのためにglPixelMap()って書いてるのに〜・・・。
766762:02/05/11 00:04
勘違いしてますた。グレイスケールなのね。
767デフォルトの名無しさん:02/05/11 00:10
便乗質問です。
RGBのうち、RG成分だけをグレイスケールで表示するには
どうしたらいいんでしょう?
glPixelMap()って、RGBどれか一つだけしかINDEXにできませんよね?
勘違いしてたらスマソ。
#コーディング例も載せて頂けると大変嬉しいです・・・。
768デフォルトの名無しさん:02/05/11 00:30
>>767
う〜ん、そーだったかも・・・。
今、赤本が手元に無いので、家帰ったら見てきます。
769デフォルトの名無しさん:02/05/11 00:55
>>763
>見たこと無いな、、ボード何?
えと、TNTとGeForceで出ちゃうんですよ。
ただ昔は出なかった記憶があるんですよね。
なのでコーディングの仕方に問題あるかもーと思って質問しました。
770デフォルトの名無しさん:02/05/11 01:58
>>768
複数カラーバッファ間の変換手段は無い
・・・と思う(弱気
アクセラレーションの範疇で、
モノクロ化出来る方法があるのなら、ぜひ俺も知りたいけど。
>>767
もう少し詳しく聞きたいのだけど、

>RGBのうち、RG成分だけをグレイスケールで表示

というのは、レンダリングした、もしくはレンダリングするR, Gの色をグレースケール化
( 明度 = 0.299 * R + 0.587 * G でレンダリング、みたいな)って事ですか?

# 一度描画したものを取り出して…とかではないアクセラレーションの範疇なら、
# ベンダ拡張使う(NVIDIA社のRegister Combinersとか)とかしかないのかなぁ…
# クソレスですまん。
>>769
GL_TRIANGLE_FAN で word around してみてはどうでしょう
>>767
ピクセレシェーダーなら簡単だYO!
774デフォルトの名無しさん:02/05/11 21:51
>773
ピクセルシェーダってアルファ以外の各チャンネルを個別に操作できったけ?
操作する方法があれば教えてYO!
>>772
すいません、word around ってなんでしょうか。
workaroundですな。あー恥ずかしい・・・
ある手段がうまく行かないときに用意しておく手段、という意味のつもりです。

この場合は、GL_QUADSの代わりにGL_TRIANGLE_FANを使うということを意味します。
つまり
glBegin(GL_QUADS)
 glVertex() * 4
glEnd()

glBegin(GL_TRIANGLE_FAN)
 glVertex() * 4
glEnd()
に置きかえるということです。
777デフォルトの名無しさん:02/05/13 21:52
>>767
見て来ました。
やっぱり、 カラー指標>カラー指標
      カラー指標>R
      R>R
だけですね、、、
勘違いでした、スマンでち。
カラー指標>カラー指標ならモノクロ化は出来るけど、価値は無し、、、(終)。
778761:02/05/15 22:09
>>776
すいません、GL_POLYGON_SMOOTHを使わないようにしたら
fill時の変な線は出なくなりました。
かなり無関係な問題のようで、どうもすみません。
779age:02/06/07 20:36
age
780デフォルトの名無しさん:02/06/08 15:19
OpenGLのマルチテクスチャってglActiveTexture()を発行するたびに
カレントのマルチテクスチャを切り替えるっていう手法じゃないですか。
これってglActiveTexureを発行した後にマルチじゃないテクスチャを
操作したい(マルチテクスチャを無効にしたい)場合ってどうすれば良いんでしょう?
マルチテクスチャについての日本語ドキュメントは何に等しい状態だし、
自分の認識が間違っていてトンデモかもしれませんが・・・。
チマチマglActiveTexureして一つ以外無効にする。
EXT_texture_env_combine等でチテクスチャの結合設定を変える。
よく知らんから、くらいしか思いつかんなぁ。
782デフォルトの名無しさん:02/06/14 23:04
Nvidiaがまた変なのだしちゃったよ。
またもやOpenGLがベンダー依存に…。
まぁ、アマチュアプログラマには良いけど。
ベンダー依存環境で囲い込み、これ最強。
GLより生産性いいの?
内容見た人いたらplz
>>784
基本的にはシェーダーアセンブラを置き換えるものであって、
3DAPIと置き換わるものではないよ。
現時点のDirectX8レベルのシェーダーアセンブラでは必要ない
んだろうけど、今後複雑化するにしたがってこういった仕組みが
必要になるだろうから、今回のβリリースはその予告編…って
感じかな。(他のベンダへの牽制って意味もあるだろうけど)

しかしcodeplayのオトナゲない対応には藁った。
http://www.codeplay.com/press/cg_rel.html
openglってみんなつかってる?
これってC言語で使えるんだよね?
VCとかBCとかで
787デフォルトの名無しさん:02/07/02 21:50
sageだと誰も見ないかも
>>786
仕事で使ってるよ。ゲームじゃないから高度なことはやらんけど、3Dなアプリ作るのに便利。
>>788
サンクス

100レスまでさらっと読んだんだけど,
おすすめの書籍ってありますか?
VC++でC言語のみ使えるんですが
いちおうY座標は,上は正の値くらいはわかるんですが
790デフォルトの名無しさん:02/07/02 23:58
GeForceとかRADEONの3Dテクスチャって全部ビデオカードのビデオメモリに入りきらないと
利用できないんでしょうか?分割するしかないですか?
AGPメモリに入れればよいのかと思ってwglAllocMemoryとか使ってみましたがアウツでした。
>>789
VC++だけで一応アプリは書けるです。
本は読んだことないけど基礎的なことはネット上サーチすると、
やさしいチュートリアルとかいっぱいある。
個々のAPIはVCのヘルプ見まくり。
おれはライトとかマテリアルの使い方が未だによく分かってないけど、
その辺はちゃんと本でも読まないとダメかも。
まぁGL自体よりも算数とか忘れきってて悩むことの方が多い感じw
>>789
OpenGLは、そのまま使うよりも、glutを使う方が便利です。

で、glutを手っ取り早く使いたいと思うのなら、
GLUTによる「手抜き」OpenGL入門がオススメです。
ttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
793デフォルトの名無しさん:02/07/03 10:41
Teapot表示すんの飽きたんで、メタセコのモデル読み込もうとしてます。
で、ポリゴン表示してテクスチャをペチョっと貼るトコまでは来たんですが、
アルファ画像指定してあるポリゴンの表示でつまづいてます。(髪の毛とか)

とりあえず目標は ↓の女騎士を表示するコトです。
ttp://www.geocities.co.jp/Playtown-Spade/7188/3d/down_mqo.html

で、
■テクスチャ画像見るとUV駆使して一枚になってる
■アルファ画像も同様
■モデルの部分毎に材質分けされてない
こーゆー場合にあるポリゴンが不透明か半透明かを判定するのって、
どーしたらいーでしょう?それとも何か他の方法があるんでしょーか?
794デフォルトの名無しさん:02/07/03 10:58
793 つづき

■ 調べたり考えたりしてみた方法その1(失敗)

不透明のポリゴンを全部描いてから、glDepthMask( GL_FALSE )して
半透明のポリゴンを描画する。
不透明か半透明かが判定できてないので無理だった。

■ 調べたり考えたりしてみた方法その2(やり方ワカラン)

一番奥のポリゴンから順番にBLEND付きで全部描画する。
向きとか変わると順番が入れ替わるので、やり方ワカラン。

何か別のエレガントな方法とかあったら是非教えてください。
>>791-792
ありがとう

とりあえず日曜日にしょうてん見ながらやろうかと思います
ちょっと質問を良いでしょうか?

OpenGLでは、現在の各変換行列の中身を取り出すことは出来ないのでしょうか?
行列出入力関係のOpenGL関数は、glLoadMatrixで変換行列を置き換え、
glMultiMatrixで変換行列の掛け算を行う物位しか無いみたいなのですが。
797デフォルトの名無しさん:02/07/04 17:09
age忘れました。すみません。
キーワードはglGetFloatvとGL_MODELVIEW_MATRIXっすな。
>>798
おおおお!ありがとうございます!!

ちゃんとあるんですね。当然と言えば当然か・・・。
でも、国内のOpenGL系のサイトを当たっていても、ほとんど
自前で行列を扱っているところが見あたらないのが厳しいですね。
Win32のOpenGL本にも全然出てこなくて、げんなり来ていました。

なまじ平行移動とか回転とかあると、みんな使ってしまうのかな・・・。
はっきり言って3次元で何かしらの姿勢計算を自前でしたい場合は、
直接行列を扱わないことにはどうにもならないのに。とにかく助かり
ました。どうもです。
>>800
当たり前すぎて、説明しないだけ。
もっとも行列すらわからないやつもいないけどな。
>>800
余計なお世話かもしれないけど,
「国内のOpenGL系のサイト」「Win32のOpenGL本」という探し方がまずい.
まずは赤本を見ないと.
803デフォルトの名無しさん:02/07/08 18:36
glLoadIdentityとかでカレントマトリクスにセットした値を
float型の配列に書き戻す関数or手段はありますか?
10件分も見ない奴が居るとは、正直驚きだよ
まあまあ。東大デモクラシーと言いますし。
806デフォルトの名無しさん:02/07/11 22:55
wingdi.hにwglSwapMultipleBuffersが追加されとるが使い方がわからんぞい
807まんせー:02/07/12 01:49
OpenManse-Library
OpenManse-Libraryに該当するページが見つかりませんでした。
809デフォルトの名無しさん:02/07/14 19:11
ATI-RAGE/128使ってるんですけど
32x32より大きい(64とか)のテクスチャを90°(270)回転すると倍くらいスピード落ちます
環境はマックiBook/300でopenGLとQT3Dでこの現象を確認したので
カードのせいかなとか思ってますが、なんか知ってる方教えて下さい。
へー、rage128ってそういう石なんだあ
テクスチャのメモリからの読み込みが非効率になるとか。いや、知らんけど。
812デフォルトの名無しさん:02/07/16 22:37
age
813デフォルトの名無しさん:02/07/16 22:44
もしかしてOpenGLって頂点に色設定する方法で
テクスチャの色より明るくできないの?
glLightModelf (GL_LIGHT_MODEL_COLOR_CONTROL_EXT,GL_SEPARATE_SPECULAR_COLOR_EXT);
815デフォルトの名無しさん:02/07/17 09:53
age
816デフォルトの名無しさん:02/07/18 07:50
あで
間違ってた?
818デフォルトの名無しさん:02/07/18 23:08
それってどう有意味
>>814これ
820デフォルトの名無しさん:02/07/19 00:29
Register Combiner で割り算か逆数ってなんとかできませんか?
821813:02/07/19 11:11
819>一応4ー5時間程やって炊けどわかんないので
おとなしくなるべく明るい手エクス茶を使う、どうしてもやりたきゃ
半透明白ポリゴン重ねるってことで妥協してる。一応ありがとう
検索かければ一発だと思うんだが。
823デフォルトの名無しさん:02/07/19 17:57
どっかいいサイトしょうかいsして〜
英語がいやっていうなら、あなたにつける薬はありません。
825デフォルトの名無しさん:02/07/20 00:34
そんな事いついった?
>>824の脳内いべんつ
しかし正直英語モウマンタイなら「どっかいいサイトしょうかいsして〜」は
変だぞ。普通に検索してトップじゃん・・・
828デフォルトの名無しさん:02/07/20 03:17
NeHeってとことOpenGLSDKのサンプルみたけど
それらしいもんはみつかんなかった
確かに匿名の掲示板じゃ甘えがでてるかもな
自分で何とかするわ
age
sage
831デフォルトの名無しさん:02/07/31 15:02
質問です。

Win2000+VC++6の環境で開発してたんですが、
WinNt4.0、Win98で実行するとエラー(glGenListsがGL_INVALID_OPERATION)が出て、
OpenGL32.dllのバージョンの違いかなと思い、
2000からOpenGL32.DLLをコピーしてみました。
すると、NTでは重たいものの何とか動作するようになったんですが、Win98では、
「OpenGL32.DLLは欠落エクスポートGDI32.DLL:GdiSwapBuffersにリンクされています」
というエラーが出てしまい困っています。
WinNT4.0、Win98でOpenGL周りのDLLをアップデートする一番スマートな方法って、
どうしたら良いんでしょうか?
DL先など調べてみたんですがMSのサイトにも無いようで、どなたかご存知の方教えて下さい。
>>831
Win98でもglGenLists普通に動いてるけど?
>>831
他のところでエラーが出てるかも知れないよ。
ちゃんとエラーフラグクリアしてからglGenLists呼んだ?
>>831
OpenGL32.dllはビデオカードのドライバごとに変わる。
NT/2000なら何とか互換性はあるけど、Win98何かに入れたら
動かなくなるのは当たり前。生兵法なんてせずに、大人しく
ビデオカードのドライバを最新にすれ。
>>832-834

分かりました。ぞれぞれやってみます。
ありがとうございました。
836デフォルトの名無しさん:02/08/04 23:43
BCCでgluiを使いたいんですけど、VC++での

opengl32.lib glu32.lib glut32.lib glui32.lib を
「プロジェクト」→「設定」→「リンク」タブ内に追加

ってのはBCCではどうやればいいんでしょうか。できるんでしょうか。
その前に glui32.lib が見つからないし、VC++が無いとダメなんでしょうか。
「glui32.lib」をGoogleにかけたら2件しかヒットしないし・・・。
いろいろ試したのですが何分アホアホ君なので光明見えずといった感じです・・・。
方法を知ってる方いたら教えてください。お願いします。
>>836
glui以前にglutは使えてるわけ???
glut32.lib glui32.libはVC++にも付いてないよ

内容からしてBCCの勉強の方が先のような気が…
838836:02/08/05 03:46
>837
glutは使えてます。

>内容からしてBCCの勉強の方が先のような気が…
おっしゃる通りです。Cの勉強自体最近始めたので・・・
自分でも背伸びだよなーとは思ってるんですが。

はっきり言って初心者には不向きでしょうか・・・。
おとなしく先送りした方がいいですか?
>>838
とりあえず、glui.lib見つけてきて、ソースに
#pragma comment(lib,"glui32.lib")とでも追加してみれば?
840836:02/08/06 03:08
>839
ありがとうございます。試してみます。

と思ったら glui.lib がありません・・・。
やっぱVC++使うかgluiを諦めるかでしょうかねえ・・・。
841836:02/08/06 06:47
1 bcc32 -c *.c
2 .rspファイルを作る
3 tlib glui32.lib @glui32.rsp

とやったら51KBの glui32.lib ができたんですがこれでいいんでしょうか?
>>841
すまん、実はgluiもBCCも使ったことない。勘で答えてるだけ。
だが、51KBは小さすぎ。間違ってるような気がする。
一応使えるかどうか試してみれば?
あとglui32.libあるよ??ウェブ全体から検索しなされ。
VC++用のライブラリでBCCでは使えないのであれば、
implib(だったかな?)で変換

日本ではOpenGL自体使ってる人が少ない上にgluiとなると・・・
843836:02/08/07 22:20
>842
レス&情報どうもです。

glui32.libも見つけて試したんですがどうにもこうにも使えないので、
やっぱりC自体とBCCに詳しくなるか
VCを使うようになるまで見送ることにしました。

先にCとglutを習得することにします。

このスレでもgluiの話題は少ししか出てないようですし、
みなさん様子見なんでしょうか。。。
844デフォルトの名無しさん:02/08/17 16:59
今更遅いかもしれないけど.

もし VC 用の glui32.dll とかがあれば, implib して
Builder の Lib フォルダ以下の Platform SDK とかにつっこんどけば
デフォルトで見てくれないか ?

様子見というより, あまり glui を使ってもうれしくない気がする.
あと OpenGL を使っている人はたくさんいると思うけど, このスレとか
ML とかは活気がない. 新しくはじめる人は DirectX に流れてるのかな.
OpenGLの初心者向け入門書がないからねえ。
解説本はあっても、やけにマニアックだったりSGIマンセーM$イってヨシ
とかいうノリだったりするし。
OpenGL入門 著:エドワードエンジェル

って奴はそれなりによい感じですた。
847OpenGL!:02/08/17 19:10
保守あげ
848デフォルトの名無しさん:02/08/18 14:07
シャドウマップって拡張仕様無しでできますか?
849デフォルトの名無しさん:02/08/18 14:32
glRotetef と glTranslatef の実装方法を知りたいのですがどこを調べたらいいでしょう?
Linux用移植版のmesaのソース見てもどこが該当するか分からなかったです・・
一般的な3Dのアフィン(affine)変換だと物体に対する変換なので、glRotetefみたいな
座標系に対する変換は実現できませんよね?

例えばx軸周りに30度回転させてy軸周りに15度回転させるというのはアフィン変換だと
回転の順序を変えられないけど、glRotetefだと順序は関係なく変換できますよね?

ここんところかなりはまっています。誰かお助けを。
850デフォルトの名無しさん:02/08/18 14:38
>>849
式は赤本に書いてある。
式の解説は"任意軸" "回転"をキーワードに探せば見付かると思うけど。
851デフォルトの名無しさん:02/08/18 14:45
>>850
レスありがとう。
任意軸周りの回転といえばQuaternionですが、それとは違う式ですか?
852デフォルトの名無しさん:02/08/18 14:54
赤本だとAppendex Fの同次系で解説されている内容ですよね?
http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG/@Generic__BookTextView/37451

この式だとアフィン変換と同じなのに結果が違うとは。。
本当に
>>glRotetefだと順序は関係なく変換できますよね
なの ? まずそこから疑うべきでは.
854デフォルトの名無しさん:02/08/27 07:31
conservate.
いきなり質問で恐縮ですが
OpenGLってバックバッファを直接いじれるんですか?
できれば合法的に..w
856デフォルトの名無しさん:02/08/30 16:06
VRML形式のファイルから数値を読み出し
OpenGlを使って、画面に表示したいのですが

VRML側            OpenGl側
translation 10 10 10    → glTranslatef(10,10,10)
rotation 10 10 10 3.14 → glRotatef(180,10,10,10)
scale 10 10 10    → glScale(10,10,10)

上記の関数はそのまま書き換えて、同じ結果が得られるのでしょうか?
もしだめな場合はどうすればよいのでしょうか?

よろしくお願いします。

856>やってみたの? 大丈夫だと思うよ
>>855
glDrawPixels/glReadPixels
858 >
おお!ありがとう試してみます
860859:02/08/31 09:07
直接とは少し違いますねw>glDrawPixels/glReadPixels
言い方が悪かったみたいです。
バックバッファのポインタを取得したいって事でした。
なら合法は無理だろうねえ・・・
OpenGLの仕組みからして、APIを跨ってメモリ空間を共有することは無いんじゃないかな。
基本的に、OpenGLが持つメモリ空間は、アプリケーションからは
独立していると考えたほうがいいと思う。

そういうDirectアクセスが最初はウリだった"Direct" Xも
最近は直アクセスをしない方向に向ってるからねえ。

つーか、何がしたいの?(笑)
862859:02/08/31 14:51
何がしたいの?>
モザイクとか主に視覚効果ですね。具体的にはまだ決めてませんけど
できたら自由度が広がるなって事でw
863859:02/08/31 14:55
862> 一応補足 もちろんリアルタイムね
モザイクだったらテクスチャ使えば?
すき放題に弄りたいわけね・・・それは厳しいかもしれない。
どうしてもやるなら glReadPixels→弄る→glDrawPixels ということになる
けど、相当なペナルティになると思う(嘘かもしれないから実験してね)。

モザイクだったらテクスチャにレンダリングしてnearestフィルタで・・・
とか思いつくけど、例えばセピア色にするとかだとTextureShader使わないと
無理かもしれん。白黒テクスチャにレンダリングして色ブレンドでもいいか?
866859:02/08/31 17:41
モザイクは単に一例を挙げただけなんですがw
テクスチャ>必要範囲の原画像取ってきて加工してポリゴン描画ですか?
867859:02/08/31 18:08
パフォを気にしないのならglReadPixels→弄る→glDrawPixelsで解決するんですけどね
うん。パフォーマンスを殺したくないなら、TextureShaderなどをゴリゴリ
組み合わせて「全てビデオカード上で」やるしかないよ。組み合わせが
トリッキーになるけど、速度は最高だと思う。
869859:02/08/31 21:06
分かりました。TextureShaderとやらを勉強してみます
長々と有り難うございました。
870デフォルトの名無しさん:02/09/02 02:20
GLUTあげ
871デフォルトの名無しさん:02/09/03 15:50
誰か赤本と青本の中古品知りませんか・・・・
両方新品を買うと首吊りそうです
>>871
買うのならとりあえず、赤本だけでいいと思うけど。
リファレンスは
http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/
このあたりで見ればいいんじゃない?
(リファレンスとして使えるのは UNIXの manコマンドなど他にもあるし)
873デフォルトの名無しさん:02/09/03 16:27
>>872ありがとう!
赤本だけでいいんですか。
サンコク。
874デフォルトの名無しさん:02/09/03 16:48
青本の英語ならVCやBCBに付いてる
876デフォルトの名無しさん:02/09/04 02:15
DirectX比較してOpenGLって何が凄いのですか?
利点と欠点教えてください〜
一応ageときます
利点:とりあえず、動く環境が多い。
欠点:Windowsゲームに特化してるわけではない。音関連などは含まれていない。
age
hoshu
glReadPixels(0,0,width1,height1,GL_RGB,GL_BITMAP,Hairetsu1);
とかやってウインドウをメモリに保存しようと必死なんですが
初期化したままの配列が返って来て泣きそうです。
マニュアルにglBeginとglEndの間に使うなとか書いてあった気がしましたが
外に何か気をつける事あるでしょうか。おしえてくださいお願いします〜
>>880
glReadBufferは大丈夫?
GL_RGBで指定してGL_BITMAPって・・・
GL_BITMAPとwindowsのビットマップとは違うって分かってるよね?
glGetErrorやってもエラー帰ってこない?
GL_UNSIGNED_BYTEに変えても取れない?
とりあえず(´・ω・`)ショボーン
882デフォルトの名無しさん:02/09/13 21:09
glGetErrorやってエラー返って来てました
GL_UNSIGNED_BYTEに変えたら取れました
どうもありがとうございました!

ヽ(´ー`)ノ初心者は赤本の前にglGetErrorだ
d
884お願いします。:02/09/21 17:33
画面上をマウスクリックした、そのポイントをワールド座標に
変換したいんですけど、どうやればいいのかさっぱりです。
誰か教えてください。
クリックを空間内にもってくと
視点からの半直線あるいは三角錐になると思うですが
そのへんの認識はどうですか
ただオブジェクト座標に落とすだけならgluUnProjectがあるよ。
オブジェクト選択には、glSelectBufferという便利なのがあるよ。
俺が言えるのはそれだけ。
887お願いします。:02/09/21 21:24
>885さん
>886さん
ありがとうごさいます。
えっと、CPointでマウスクリックした点は取れるじゃないですか
そのポイント例えば、CPoint(150,150)などをワールド座標に
変換したいんですよ。スクリーン座標からワールド座標の変換ですね.
DirectXを使わないでやりたいんです。


888デフォルトの名無しさん:02/09/21 21:28
MFCを使って作ったウィンドウにOpenGLで描画したいのですが、ドウスレバヨロシイでしょうか?
>>887
885 の言ってることは理解してるか?
890お願いします。:02/09/21 22:03
>889さん
すいません、どうにもうまくいかないので
できれば、誰かサンプルソースなどを上げてくださる
とありがたいのですが
モロにFAQなので
886 が言ってる関数を使ったサンプルをweb等で探すとよいよ
あとは赤本、青本をあたるとか
>>888
MFC使ったことないので分からんのだが
普通(?)の初期化と描画方法じゃ駄目なわけ?
いままでglutしか使ったことなくて、
初期化や描画方法そのものが分からないっていうのならVCのヘルプに付いてる
Platform SDK→OpenGL→Win32 Extensions To OpenGLを参考に
Platform SDK→OpenGL→A Porting Sample→The Program Ported to Win32
のソースをMFCに当てはめて考えてみては。
素直にgoogleで調べた方が速いような気もする
そんなんじゃないよーって言うならこれ→(・ε・)

>>890
変換だけなら手抜きソースを・・・
GLdouble winx,winy,winz,model[16],proj[16],x,y,z;
GLint view[4];
glGetDoublev(GL_MODELVIEW_MATRIX,mode;); // 現行モデルビューをゲト
glGetDoublev(GL_PROJECTION_MATRIX,proj;); // 現行プロジェクションをゲト
glGetIntegerv(GL_VIEWPORT,view);
winx = 150;
winy = 150;
winz = 0.5; //深さ 通常0〜1?
gluUnProject(winx,winy,winz,,winz,model,proj,view,&x,&y,&z);
そんなんじゃないよーって言うならこれ→(・ε・)
893デフォルトの名無しさん:02/09/21 22:48
>>888
普通にCViewの派生クラスのOnCreateあたりで初期化すればよいと思う。
もしMFCのサンプルをさがしているのなら、

http://www.gamedev.net/reference/programming/features/3dmfc/

を参考にしてみれ。
894888=2^3*3*37:02/09/22 15:54
>>892,>>893
返答どうもでふ。参考にしてみまふ。
895デフォルトの名無しさん:02/09/26 15:27
ビュワーつくってるんですが、
オブジェクトの移動とかビューの回転とか
ビュワーを作る上で最低限必要な関数とかをまとめた
ライブラリorサンプルソースってあります?

SorceForge探したけどいいのがありませんでした。
896デフォルトの名無しさん:02/09/27 20:36
オブジェクト作成後(球など)
ワールド座標で領域を指定して(立方体など)
切り抜くことって可能ですか?
素のOpenGLにはそういう機能はないと思うよ
opengl CSG
あたりで検索してみては
898デフォルトの名無しさん:02/09/27 23:04
>>897
ありがとうございます。調べてみます。
ほsひゅ
900ゲト
901初心者:02/10/09 04:57
先生!! 質問です。

OpenGLで作ったテクスチャをジョイステックで操作するって可能なんでしょうか?
具体的には画面上に作ったサイコロをジョイステックの動きに合わせてグリグリ回すようなプログラムなのですが
902初心者:02/10/09 05:09
また質問なのでが…

作ったプログラムをMACにも移植可能にせねばならないので、開発をDirectXからOpenGLにしたのですが、この判断は正しいでしょうか?
うる覚えですがDirectXはWINDOWS上でしか動かせられないと聞いたので…
>>901
OpenGLはレンダリングしかしない。よってスレ違い。

>>902
おそらく正解。機種依存部分について考慮しながら設計するとよい。
904デフォルトの名無しさん:02/10/13 13:12
最近、曲線の生成にGL_NV_evaluatorsを使っていたんだけど、こんど廃止になるらしいやん。
それで、これにかわる機能ってありません? GLUのNURBSインターフェイスはパフォーマンス悪そうやし、マルチテクスチャに対応してない。nVidia依存で結構です。手軽な曲面生成ようの機能ってありませんか?
glEvalMesh
906デフォルトの名無しさん:02/10/14 09:47
glEvalMeshなんてみんな使っているの?
907デフォルトの名無しさん :02/10/16 17:08
スクリーン座標を指定して2次元プリミティブを描画
することってできますか?
ウィンドウの右端に縦のラインを引くとか。
あがぇ
glOrthoでそういう行列作るくらいしか思いつかんなぁ
頂点の変換が絡むんで
正確にそのポイントを塗りつぶすのは難しそう
>>909
なーるほど。glOrtho()かぁ。
1ドットもズレちゃいかんてことないので
うまくやればできそうですね。サンクス
しまた。あげちた。
>>909 ヤターできたよ! ありがと
913デフォルトの名無しさん:02/10/23 00:59
nvidia の bump map の pdf 読んだ人いる?今読んでるけど
むずいねー。よく tangent space とか出て来るけどこれどういう
意味かわかる?あと half angle もよく分からんけど、わかる?

>>913
読んだ。半分分かった。
half angleはスペキュラー計算するのに使うんでんでない?
ライティングの式見ればわかるよ。
tangent spaceは…
曲面で考えた場合にu,v,法線方向をaxis(軸)に見立てて
そのローカル座標にライトの位置を変換してやると、
曲面に貼られているテクスチャに対するライトの位置が手に入ると。
(テクスチャは曲面のu,v方向に貼られているという条件で)
俺はこんな解釈でいるけど違うかもしれん…
915デフォルトの名無しさん:02/10/27 16:27
cg_toolkitをdownloadしたいんだけど、nvidiaのftpから落とせない…。
これはATIからの使者の攻撃ですか?
916913:02/10/28 23:12
>>914
遅レスになったけど、もう一かい見てみる。でついでに聞くけど
このなかで単に product って出て来るけどこれって他の赤本
なんかでcross product って読んでるもんなのかねえ?

917デフォルトの名無しさん:02/10/29 08:00
OpenGLでキーボードの上矢印と右矢印の同時押しを検出したいのですが、
glutSpecialFuncのコールバック関数で分岐させると片方しか検出してくれません。
どのようにすれば両方を検出してくれるのでしょうか。

OSはVine Linuxです。
918デフォルトの名無しさん:02/10/30 00:20
普通、コールバックは一つのキィしか検出できないだろう。
両方のカーソルキィの状態をグローバルか何かで保持しておき、&&で同時だと認定知るのはどうだ?
あと、イヴェントの処理はフレームワークの仕様であって、OpenGLの問題ではない。
> フレームワーク
フレイムワーク
920917:02/11/01 07:36
>>918
>両方のカーソルキィの状態をグローバルか何かで保持

OpenGLの範疇では無さそうですが、この方法を教えていただけないでしょうか。
X11について調べてみたのですが、調べ方が悪いのか良い資料が見付かりませんでした。
921デフォルトの名無しさん:02/11/01 20:40
918 が言ってるのは, あるキーが押されたことを単純にグローバル変数とかに
格納しておけ, っていうことでは. あと static な変数でもいいかも.
922914:02/11/03 15:43
>>916
返しがあったとは知らなんだ
どのpdf読んだのかわからんけど内積(dot product)のことじゃないですかね?
ピクセル単位で内積取りますよってことで。
適当だけど…
923913:02/11/06 23:29
つまんない話につき合わせて悪いねえ。俺が見てたのは タイトルが
a practical and robust ...てやつだけど、どうも俺には無理めなんで
他をあたろうかと思ってるけど、ほかもむずけりゃあきらめます。
(レス不要
924デフォルトの名無しさん:02/11/20 21:57
保守
GLで使えるテクスチャって256色までなんですか?
>>925
んなこたーない
927デフォルトの名無しさん:02/11/24 02:10
glDrawPixelsで、127x127とか中途半端な画像がちゃんと表示されないのですが、
回避する方法はあるのでしょうか?

画像の2ラインめ以降が、数pixelずつずれてしまいます。
描画先が128x128なんでないの
>>927
glPixelStorei(GL_PACK_ALIGNMENT
930927:02/11/24 11:21
レスありがとうございます。>>928-929

>>928
↓の様にglDrawPixelsを呼んでるんですが、width, heightが
元画像と同じであることはprintfで確認してます。

glDrawPixels( width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, img );

127x127 以外にも、61x99, 513x129, 257x129 などもうまく表示されません。
128x128, 320, 240, 512x512, 640x480, 1024x1024などは問題無く表示できます。

>>929
↓を試してみましたが、状況は変りませんでした。
glPixelStorei(GL_PACK_ALIGNMENT, 1);

--
読みこんだデータがおかしい可能性も考えて、バッファ(上記の"img")を
pnm型式で出力して、ElectricEyesなどで確認しましたが、ちゃんと表示されました。
なので、glDrawPixels関連の問題だと思うのですが・・。
>>930
ごめん。GL_UNPACK_ALIGNMENT デス。
932927:02/11/24 12:45
>>931
できましたー!!!

せっかく、"PACK" "ALIGNMENT"というヒントを>>929で戴いていたのに、
UNPACK まで辿り着けなかったのは私の力不足ですね・・。もっと修業します。

みなさん、ありがとうございました。m( )m
933デフォルトの名無しさん:02/11/24 15:52
934デフォルトの名無しさん:02/11/24 22:28
GLUTをうまいことC++で包む方法ってないですか?
うーむうまくいかない。
一般的にWGLとGLUTってどっちが高速なんでしょうか?
GLUTってgl,glu,wglなんかの上に構築されてんでないの
そうなんですか、ありがとうございます
とりあえずWGLで組んでみることにします
938デフォルトの名無しさん:02/11/26 16:41
glDrawPixelsで画像を表示しているのですが,透過色を指定することはできるのでしょうか?
赤本キボン!
940デフォルトの名無しさん:02/11/28 19:30
OpenGLで、座標(x,y,z)に半径rの一色で塗りつぶされた球を無数に描きたいのですが、
どのような手法をとればよいんでしょうか??

今までにやってきた数値計算の結果を視覚的に見られれば・・・と思いOpenGLに挑戦したのですが挫折してしまいました・・・
>>940
glPushMatrix();
glTranslatef(x,y,z);
glColor3d(色);
glutSolidSphere(r,8,4);
glPopMatrix();
を繰り返してみたら?
>>938
glDrawPixelsにブレンド効くのかなぁ。やったこと無いから分からないけど。
GL_ALPHA_TEST,GL_BLEND,glAlphaFunc,glBlendFuncあたりをやってみそ。

>>939
英語のサイトなら知ってたが見れなくなっとる。

>>940
glut使ってないなら、gluSphereでもよいぞよ。
赤本って、Onyxとかに英語版が入ってたねぇ・・
一度印刷したけど、体裁がおかしくてすぐ捨てちゃった。
今は"Conputer Graphics using OpenGL"と"手抜きGLUT入門" で
なんとかカバーしてます。
944教えてクン:02/12/01 23:13
教えてください。お願いします。
一つのウインドウの中に
二つ以上のビューポートを同時に
表示する方法ってありますか?



glViewport(0, 0, w/2, h/2);
glViewport(w/2, 0, w/2, h/2);


としても二つ目のglViewport()しか読み込まれないのですが。
コンテキストについてビューポートは同時には一つだわな。

おそらく所望のことは
glViewport(左半分)
drawTeapot();
glViewport(右半分)
drawTeapot();
でできると思う。
946944の教えてクン:02/12/01 23:39
>>945 
即レスありがとうございます!

何もしない状態だと一つしか写らないのですが
マウスでドラッグすると交互に二つ表示されるようになりました。

(マウスでドラッグすると物体が回転するようにしてあります)
交互にではなく同時に表示したいのですが、
どうしたらよいでしょうか。

ちなみにやりたい事は一つのウインドウの中に
ウォークスルー画面を二つ同時に表示したいのです。
クリアする領域を明示するとか・・・かな
948944の教えてクン:02/12/01 23:56
>>947
どうやるんでしょう?
クリアする領域って指定できるんですか?

あとクワッドバッファステレオ(?)
を使うためにはどうしたらよいのでしょうか
すいませんおしえてください。
>>944
glViewport(左半分)
glClear(なんとか);
drawTeapot();
glViewport(右半分);
glClear(なんとか);
drawTeapot();
ってやってるでしょ?もしかして。
glClearはビューポート関係なくバッファ全体クリアしちゃうから、
glClear(なんとか);
glViewport(左半分)
drawTeapot();
glViewport(右半分);
drawTeapot();
でよいよ。ちがってたらごめん。
あとクワッドバッファステレオ(?) ってどんなやつ??
ディスプレイのプロパティでもRivaTunerでもGTUでも、ディフォルトでONにしてるのに
どんなゲームでも垂直同期がまったくされていない。何故なんだ…
951938:02/12/04 14:19
>>942
ブレンドできました!ありがとうございました!
gluPerspectiveでつくった視野内に、GL_LINE_LOOPでワイヤーフレームのモデルを
作ったんですが、glRotatefで回転するとモデルの結構な部分が欠けてしまいます。
何が原因なんでしょうか?
953デフォルトの名無しさん:02/12/12 00:27
今大学3年でWGLを独学で必死にやってんだけどよ、大丈夫なのかなぁ?
WGLの文献って洋書ばっかだから読むペース遅いし。Direct3Dの方が良かったかなぁ。
WGL(に限らずOpenGL)をやるメリットがあったらキボンヌ。
Direct系は詳しく知らないので、適当に読んで欲しいんだが・・

Direct3D(に限らず、MSのAPI):
OpenGLよりもお手軽な関数が沢山用意されてる。→ プログラミングが比較的楽?
バージョン毎に仕様が変わりまくり → 新バージョンが出るたびに勉強し直し
Windows専用。

OpenGL:
基本的な関数しか用意されてない。→ 逆に言うと、かゆいところに手が届く。
一度覚えてしまえば、(たぶん)ずーっと使える。
マルチプラットフォーム。

こんな感じ? 間違ってたら識者のフォロー希望。
955954:02/12/12 05:56
どこが『逆に言うと』なんだか・・・

OpenGL:
基本的な関数しか用意されてない。→複雑な処理をするには、沢山コーディングしないといけない。
→ 逆に言うと、かゆいところに手が届く。
(以下同文)
ってな感じでした。
956デフォルトの名無しさん:02/12/12 06:27
Xbox -> DirectX
Gamecube -> OpenGL
Dreamcast -> ?
Playstation2 -> Renderware?

知ってる人補完希望
>>953
WGLってこのまま勉強していいのか!
http://pc3.2ch.net/test/read.cgi/tech/1039613603/

このスレはもうほったらかしなのかい?
>>953
ああごめんごめん。誘導されてきたのね。
ちゃんと削除依頼だしとけよ。
tech:プログラム技術[スレッド削除]
http://qb.2ch.net/test/read.cgi/saku/1027372992/
>>952
zNear,zFarの範囲にモデルが納まってないとか、
適用するマトリックスモードが違うとか(glMatrixMode)。

>>953
俺なんか英語だめだめだから、翻訳ソフトに掛けてコチコチ覚えた。
メリット・デメリットは>>954と同じ。
時間があれば両方覚えてそんは無い(たぶん)。
どっち使った方が良いかは用途による。
>956
激しく勘違い
961デフォルトの名無しさん:02/12/12 13:53
>>934
こんなのはどう?
GLT - OpenGL C++ Toolkit
ttp://www.nigels.com/glt/
>>961
げっ。こんなもんがあるとは・・・。
俺の作ったGlutWindowが無駄になっちまったな。鬱
963デフォルトの名無しさん:02/12/12 20:56
glutなんかやってる馬鹿いるのか
>>963
どういうこと?pure GLでやれって意味?
965デフォルトの名無しさん:02/12/12 22:13
GLUTなんてやってるのか?ここもレベル低い馬鹿が紛れてるもんだ
>>965
アホ?
967デフォルトの名無しさん:02/12/12 23:11
GLUTなんてやる馬鹿いねーだろ
単に、DirectX信者が荒してるだけだろ?
スルー、スルー。
次スレ行っとく?
なんかやけに人少ないけどさ。
>>956
OpenGLはN64でしょう.

でもこの選択が大失敗だったらしい.

>>965
GLUTでなんでだめなの?







次スレに続く.
971デフォルトの名無しさん:02/12/13 08:38
次スレってこれじゃないよな??
http://pc3.2ch.net/test/read.cgi/tech/1039613603/

テンプレ作ってからでも遅くは無いだろう。
とりあえず適当なリンク集めるか。
http://www.opengl.org/
http://developer.nvidia.com/view.asp?PAGE=opengl
http://www.ati.com/developer/indexsc.html#opengl
http://nehe.gamedev.net/
http://www.flipcode.com/
http://www.gamedev.net/
http://romka.demonews.com/opengl/index_eng.htm
http://www.mesa3d.org/

ver1.0の赤本(英語)
http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG
ここらへんにもありそう↓
http://romka.demonews.com/opengl/doc/index_eng.htm
青本はVCに付いてるし。

glutはここらへんか??使ってないからわからん。
http://www.opengl.org/developers/documentation/glut.html

他にC#でも使えるような奴があったような…。
ほとんどopengl.orgからだどれるけど。
日本語で便利なサイトなーい?
ここまで来たなら一思いに1000まで埋めてくれ!
>>971
>他にC#でも使えるような奴があったような…。

http://csgl.sourceforge.net/

追加キボン
974デフォルトの名無しさん:02/12/13 13:36
>>971
GLUTの日本語つったらここだろ
http://www.exa-corp.co.jp/mmtech/OpenGLEdu/
赤本買えない奴はこれしかねぇ!!

後、個人的におすすめは
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
あとは英語サイトだけど
http://nehe.gamedev.net/
ここはイイ \(゚∀゚)/
975デフォルトの名無しさん:02/12/13 14:00
glutをいくらやってもゲームは作れない。ユーザインタフェースも作れない。メガデモもつくれない。
WGLやれ。
( ゜Д゜)ポカーン
OpenGLと組み合わせて使えるライブラリ & Toolkit

GLUI
http://www.cs.unc.edu/~rademach/glui/

wxWindows
http://www.wxwindows.org/

FLTK
http://www.fltk.org/
978デフォルトの名無しさん:02/12/13 18:09
>>953が言ってるWGLってwglMakeCurrentとかのことか??
必死になるほどのものだっけ?拡張関数まで覚えてるなら分からんでもないが…。
それ以前にglコマンドそのものを知らなさそうだが。
>>956
PS2は特にライブラリに束縛されてない。
ちなみに某所ではPS2上で動くOpenGLがある。

RenderWareはPCやGC版も出てる。

GCやN64はOpenGLライクだけど、やっぱり全然違う物。
DCはしらん。ニンジャライブラリとかいうのがあるんだっけ?
>>980
> ちなみに某所ではPS2上で動くOpenGLがある。
そんなに勿体ぶらなくても、
OpenGLガワ作ってるのはめずらしいことじゃないでしょ。
http://www.dataplus.co.jp/OpenGL4ps2.html
とか、gamasutraかgame developer magazineあたりにも
PS2用OpenGL作ってゲーム作った話が載ってたし。
98216:02/12/14 19:07
質問です。
ファイルからビットマップを読み込んでOpenGL使ってそれを回転させたいんですが、
どういった手順でやればいいのか全くわかりません。
ちなみにWinでコンパイラはVisual Studioです。
よろしくお願いします。
1004
>>982

コマンドプロンプトから

echo OpenGL > 表示したいマップ
>>982
手順ねぇ・・・
(1) OpenGLを準備(初期化とか)
(2) ファイルからビットマップを読み込む
(3) 読み込んだビットマップをテクスチャに設定
(4) モデルビュー行列に回転を加える
(5) 四角形ポリゴンを描く
こんな感じでどう?
とりあえずまとめ

タイトル:(゚∀゚)アヒャ OpenGLスレ Part2
マルチプラットフォームなグラフィックAPIそれがOpenGL!
DirectXもいいがOpenGLもそれなりに(・∀・)イイ!!
質問、雑談何でもいいから書き込んで1000目指せ!

- 過去スレ -
http://pc3.2ch.net/test/read.cgi/tech/981044659/

- 関連サイト -
http://www.opengl.org/
http://developer.nvidia.com/
http://www.ati.com/developer/
http://www.mesa3d.org/
- 赤本 -
http://www.opengl.org/developers/code/tutorials.html
http://romka.demonews.com/opengl/doc/index_eng.htm

- お勉強サイト -
http://nehe.gamedev.net/
http://www.flipcode.com/
http://www.gamedev.net/
http://romka.demonews.com/opengl/index_eng.htm
http://www.exa-corp.co.jp/mmtech/OpenGLEdu/
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html

>>974
すまん一番上のリンク先が、GLUTのこと書いてないしよくわからんかったので
勉強サイトにしておきますた。

スレタイと1のコメントは適当だから誰か考えてくれ。
989デフォルトの名無しさん:02/12/15 15:33
WGLだとDirectXも併用できるじゃん。
990デフォルトの名無しさん:02/12/15 15:41
WGLや他のGLUIとかGLUTとかの良い点、悪い点を箇条書きで教えて。
>>990
winだとWGLでunixとかだとglx、appleはagl。
それぞれsystemとopenglをくっ付けるだけの役割する。
GLUTはそれも含め、ウインドウ管理とかその他をラップした、
シンプルなインターフェース提供する。
glutもマルチプラットフォームを考慮してるんでWGLそのものは隠蔽されてる。
GLUIはGLUTを拡張して、多機能にしたもの。
(らしい。GLUIなんて触ったことも無いので)
glutに不満があるならあなたはきっとWGLを使うであろう(機械語翻訳風)

テンプレフィックスしないまま1000行きそうだよ〜
GLUT は OpenGL での描画をサポートしたツールキット (+ アルファ).
GLUI は GLUT よりももう少し GUI の面で強化したもの.
その特徴は, 良くも悪くもツールキットとしてシンプルなこと.
30 分でいいからマニュアルを読んでみるといい. それでだいたい全部が
分かるくらい単純. たとえば GTK とかだとそうはいかないよね ?

一方, wgl は 991 が言うように, レンダリングコンテキストを生成したり,
バッファを切り替えたりする, システムと OpenGL との間に立つもの.

wgl と GLUT では, そもそも提供しようとしている主な機能が違う.
GLUT のツールキットとしての機能に不足があるなら FLTK とかもっと他の
ツールキットを使う. レンダリングコンテキストやバッファの管理に不満が
あるときは自分で wgl を使って管理する.
993デフォルトの名無しさん:02/12/15 18:20
あぁ、なんだ。良かった。GLUTやってたんだけど、自分の志向と違うという事でWGLに行きついたんだけど、
このままやってもいいのね。なんかWGLがオシマイみたいな言い方してる人がいたから。
994デフォルトの名無しさん:02/12/15 18:22
DirectXなんてダメダメ。
OpenGL最強。
>>994
よちよち。このスレなら叩かれないと思ったんだね(w
996デフォルトの名無しさん:02/12/15 19:08
OpenGLのドライバごとの不具合がなくなったら使ってやってもいい。
とりあえずドライバはMSチェックがあるだけDirectXの方がまし。
だと俺は思ってる。
997デフォルトの名無しさん:02/12/15 19:16
以前M$がFahrenheitとかいう
DirectXとOpenGLを統合する
ものを作ろうとしていたような気がするが
どうなったんだろう。
gddfd
gddfdあああdが
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。