トップページ⇒tech
986コメント358KB

【超初心者】くだすれOpenGL2.0【質問用】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/09/24(月) 05:26:47
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
OpenGL使いが優しくコメントを返しますが、
お礼はOpenGLの布教と初心者の救済をお願いします。

OpenGL・Home・Page
http://www.opengl.org/
0002デフォルトの名無しさん2007/09/24(月) 12:01:13
糞スレで2ゲット!!!!!!!!!!!!!!!!
0003デフォルトの名無しさん2007/09/24(月) 12:18:10
>>1

死ね

OpenGLスレ Part11
http://pc11.2ch.net/test/read.cgi/tech/1177523018/
0004デフォルトの名無しさん2007/09/24(月) 12:18:44
>>1
死ね!

くだすれOpenGL(超初心者用)
http://pc11.2ch.net/test/read.cgi/tech/1131208166/
0005デフォルトの名無しさん2007/09/24(月) 13:27:40
糞スレ立てんなカス
0006デフォルトの名無しさん2007/09/24(月) 14:18:47
継続意見のほうが多かったじゃんw
荒らすなよボケ
0007デフォルトの名無しさん2007/09/24(月) 16:28:13
>4の目的がわからないwww

ただ、スレタイにopengl2.0と入っているのはちょっとどうかと思う
まあ、
乙!
0008デフォルトの名無しさん2007/09/24(月) 17:22:21
このスレ名はひどい
0009デフォルトの名無しさん2007/09/24(月) 17:53:22
2.0はどうかと思・・・
でも乙乙>>1
0010デフォルトの名無しさん2007/09/26(水) 22:15:30
浮動小数のテクスチャってどうやったら使えるんですか?
GLSLで使いたいです
0011デフォルトの名無しさん2007/09/26(水) 23:25:57
>>10
http://www.opengl.org/registry/specs/ARB/texture_float.txt
0012デフォルトの名無しさん2007/09/27(木) 17:45:18
「GLUTによる「手抜き」OpenGL入門」を読み終えて、だいたい理解できました。
次は何をやったらいいでしょうか?
いまいち何が不足しているのかわかりません。
参考書籍やウェブサイトも教えていただけると嬉しいです。
大学2年生で、実行環境はCygwinです。
0013デフォルトの名無しさん2007/09/27(木) 17:55:07
何かを作る。その過程でいろいろ覚える。
作りたいものがなければ、知識も身に付かないしやる気もおきないと思うよ。
0014122007/09/27(木) 18:32:38
>>13
目標ですが何にしたらいいかわかりません。
どの程度なら丁度良いのか漠然としすぎていて。
まだまだ基本中の基本しか出来ていないと思います。
いろいろサイトを見てプログラムを真似していくのも一つの手かなと思いますが。
0015デフォルトの名無しさん2007/09/27(木) 19:00:19
目的があって、それを実現するための手段がGLUTじゃないのかなあ。
まあ、ただ何となく勉強しましたってのもありだと思うけど。
0016デフォルトの名無しさん2007/09/27(木) 19:11:20
プログラミング自体何かを実現する為の道具だからね。
0017デフォルトの名無しさん2007/09/27(木) 23:46:58
>>14
次のステップとしてここらが参考になると思う。

http://marina.sys.wakayama-u.ac.jp/~tokoi/?blogcategory=OpenGL
http://nehe.gamedev.net/

この本は買うべき。絶対元は取れる。
http://www.amazon.co.jp/OpenGLプログラミングガイド-原著第5版-OpenGL策定委員会/dp/4894717239
第5版を買うように!これ以前の版は内容がかなり古い。
0018あ2007/09/28(金) 12:11:11
テクスチャサイズが304*1440と19*360と19*1980の3つのテクスチャを
シェーダでマルチテクスチャ処理をしてるんですけど、
テクスチャが304*1728と19*360と19*2376にするとエラーが出ます。
これはテクスチャサイズの問題ですか??それとも
他の問題ですかね?
ちなみにGL_MAX_TEXTURE_SIZE 4096です。
0019あ2007/09/28(金) 12:17:52
ちなみにRGBです
0020デフォルトの名無しさん2007/09/28(金) 12:27:43
どんなエラーよ?
0021デフォルトの名無しさん2007/09/28(金) 17:46:04
2のn乗かなにかじゃないと駄目
0022デフォルトの名無しさん2007/09/28(金) 18:01:07
>>21
もともと2のn乗サイズじゃなくて動いてるらしいから関係なくね?
ARB_texture_non_power_of_twoがあるか2.0以上なら問題無い
0023デフォルトの名無しさん2007/09/28(金) 18:04:37
やってみる価値はある
0024デフォルトの名無しさん2007/09/28(金) 22:12:11
>>18
GL_MAX_TEXTURE_SIZE 4096 でRGBなら
実際のサイズは、4096*4096 / 3 のルートの 2365 が上限
だと思ったが・・・違ったっけ?
0025デフォルトの名無しさん2007/09/28(金) 23:06:31
>>24
そんな半端なわけが・・
0026デフォルトの名無しさん2007/09/28(金) 23:32:32
>>25
確かに半端だが、GL_MAX_TEXTURE_SIZE は1テクセルあたり8bitの場合の数値なので、
たとえばRGBA8bitだったら、実際に使用できるのは、テクセル数で1/4になる。
最大サイズがどうなるかは、知らん。適当にルートになると思ってた。
誰か実験してくれ。
0027デフォルトの名無しさん2007/09/29(土) 00:05:43
>>26
赤本を確認したがGL_MAX_TEXTURE_SIZEが1テクセルあたり8bit云々ってのは無かったな
フォーマットの違いを気にしないから、容量がでかいフォーマットだとメモリ足りんかもしれないから気をつけてみたいなことは書いてあったけど

しかしどんなエラーが出てるのか分からないとテクスチャのサイズが問題なのかどうかも分からんな
0028あ2007/09/29(土) 00:35:07
すいません!!エラーは単純なミスでした。
あと、GL_MAX_TEXTURE_SIZEが4096のときに
4枚のテクスチャを処理するときって
4枚とも4096*4096サイズ(RGB)までいけるってことですかね??
0029デフォルトの名無しさん2007/09/29(土) 06:52:07
>>27
ごめん。ちょっとうろ覚えで適当に書いてた。
あらためて調べてみたが、
OpenGLプログラミングガイド-原著第5版の p363 下部の
GL_MAX_TEXTURE_SIZEによる問い合わせは〜のくだりとか
http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/texture_speed_test/disp_content
辺りを見ると、どう解釈していいのかよくわからない。
0030292007/09/29(土) 06:55:20
>>28
texture size 適当に変えて、上限が実際のところどうなってるか試してくんない?


眠い・・・
0031デフォルトの名無しさん2007/09/29(土) 12:20:02
速度や容量とか、それこそドライバ依存なんじゃないの
0032あ2007/09/29(土) 17:34:14
どうやらいけそうです!!
何度もすいませんが、最後の質問させてください。
GL_MAX_TEXTURE_SIZEの変更はできますかね??
4096から増やしたいんですが・・
0033デフォルトの名無しさん2007/09/29(土) 20:01:17
できないよ。その値はGPUが扱えるテクスチャの最大解像度だから。
4K以上のテクスチャを扱いたいなら、複数のポリゴンに貼って並べるのが普通。
0034あ2007/09/30(日) 06:25:10
ありがとうございます。
0035デフォルトの名無しさん2007/10/01(月) 13:16:41
 最近OpenGLを使い始めたばかりの初心者ですが、なんとか頑張ってモデリングツールのようなものを作ってみたいと思っています。そこで質問なのですが、

・3Dモデルをスクリーン上に変換した後の頂点の座標をGLの関数かなにかで取得することはできないのでしょうか?
・GLUquadricで生成した球や円柱などから頂点配列やインデックス配列を取得することはできないのでしょうか?

 どなたか教えて下さい。
0036デフォルトの名無しさん2007/10/01(月) 16:08:20
・gluProjectでできるんじゃないかな
・知らない
0037デフォルトの名無しさん2007/10/01(月) 22:50:10
2365なんて2の累乗じゃない半端な数値が最大テクスチャサイズのはずはないだろう
各色32bitのfloatだったらもっと少なくなっちゃうジャン
0038352007/10/02(火) 20:09:57
>>36
 まさに自分が探していた関数です。どうもありがとうございました。
0039デフォルトの名無しさん2007/10/02(火) 21:17:19
ただいま頂点配列の辺りを勉強していて、色とベクトルの扱い方はわかったのですが
法線ベクトルを頂点配列で扱う方法がいまいちわかりません。

六面体を書くのに今は
glNormal3f(0.0,0.0,1.0);
glDrawElements(GL_POLYGON,4,GL_UNSIGNED_BYTE,frontIndics); //正面
glNormal3f(1.0,0.0,0.0);
glDrawElements(GL_POLYGON,4,GL_UNSIGNED_BYTE,rightIndics); //右面
以下略

という風に書いてます。
法線ベクトルをglDrawElements()に含めるなど、頂点配列でうまいこと扱う方法があれば教えてください
0040デフォルトの名無しさん2007/10/02(火) 22:20:33
色を頂点配列に入れてるんなら、glColorPointerを使わなかった?
それと同じように、法線の場合はglNormalPointerを使うんよ。
(もちろん、glEnableClientState(GL_NORMAL_ARRAY)するのを忘れないように)
0041デフォルトの名無しさん2007/10/02(火) 22:35:56
>>35
二番目
OpenGLのコールをフックするライブラリを描いてやればおk
でもスタブを書くのがめんどくちゃい
0042392007/10/03(水) 08:18:19
>>40
それらの使い方はわかったのですが
法線ベクトルの配列での扱い方で詰まりました
Vertexの場合は頂点座標を8個用意して各面を描画する為にさらに6つの配列でglDrawElements()の第4引数に使用していて、色も頂点の数だけ用意して対応したのですが
法線ベクトルはわからなくて悩んでいますorz
正確には色も頂点にしか対応してないので各面を別の色で描画出来たらと思っているのですが…
0043デフォルトの名無しさん2007/10/03(水) 08:30:36
>>39
当然法線ベクトルも頂点の数だけ用意する。
39はそれまでのやりかたがOpenGLがステートマシンだから機能したってことの
理解がいまいちあやしそう。
0044デフォルトの名無しさん2007/10/03(水) 11:47:53
>>42
座標が同じでも、色や法線が異なる場合は、別の頂点だと考える
各面の色が別々なサイコロを描くには、24頂点が必要
0045デフォルトの名無しさん2007/10/03(水) 14:24:32
頂点や色や法線の配列に対して別々のインデクスを指定できる拡張があったような気がするんだけど
名前が思い出せないorz
0046392007/10/03(水) 18:41:27
アドバイスありがとうございます
法線ベクトル用に頂点を24個用意して試したところイマイチうまくいかず、頂点座標も8個から24個に増やして試したら無事正常に描画する事が出来ました

ひとまず結果オーライなのだけど頂点座標が8個だとうまく法線ベクトルが引けない理屈がよくわかりません…
俺はもしかしたらとんでもない勘違いをしていたのかもしれない…!
0047デフォルトの名無しさん2007/10/03(水) 19:08:29
頂点っていうのは、座標+法線+色+テクスチャ座標で1組のデータになる。

glDrawElements が i 番目の頂点を参照するときは、
頂点配列の i 個めの座標と、
法線配列の i 個めの法線と、
色配列の i 個めの色と、
テクスチャ座標配列の i 個めのテクスチャ座標を、
1組の頂点データとして取り出す。

つまり頂点配列、色配列、法線配列、テクスチャ座標配列はすべて同数の要素が必要。

頂点座標と法線ベクトルの対応関係を指定した覚えないだろ?
0048デフォルトの名無しさん2007/10/03(水) 20:00:56
技術とは関係ないのですがOpenGLは現在、何の用途で使われることが多いのでしょうか?
DirectXはゲームとかで聞くのですが、GLはあまり聞かないので。
0049デフォルトの名無しさん2007/10/03(水) 21:05:54
idとその周辺のはOpenGLじゃないの?
てかDirectXついてねーし。
0050デフォルトの名無しさん2007/10/03(水) 21:25:07
>>48
Windows以外は大体OpenGL(とかES)
0051デフォルトの名無しさん2007/10/03(水) 21:38:24
仕事とかでGL使ってる奴いる?
どんなところに就職してるんだ?
0052デフォルトの名無しさん2007/10/03(水) 22:29:06
ノシ
仕事は広告関係
0053デフォルトの名無しさん2007/10/04(木) 00:12:23
ノシ
SGI
0054デフォルトの名無しさん2007/10/04(木) 00:26:28
>53
ちょっw
なんでこんなところにいるwww
0055デフォルトの名無しさん2007/10/04(木) 01:18:44
ノシ
零細ソフトウェア会社
0056デフォルトの名無しさん2007/10/04(木) 13:37:47
>>48
ゲームで使ってます。
しかし、算術演算ライブラリとか整備してくると、正直DirectXで言い気がしたw
0057デフォルトの名無しさん2007/10/06(土) 02:04:02
ノシ
げーむや
0058デフォルトの名無しさん2007/10/06(土) 07:46:18
ノシ
無名CAD屋
0059デフォルトの名無しさん2007/10/06(土) 20:56:06
ノシ
研究でGPGPU
0060デフォルトの名無しさん2007/10/08(月) 21:15:21
学生だけどGPGPU
K平均法を高速化しなきゃならなくて英語の論文見っけて碌に読まずに手を出したが、
2ヶ月浪費した後でよく読んでみると高速化できたのは別のクラスタリングという結論に読めるなぁハハハ
0061デフォルトの名無しさん2007/10/09(火) 10:55:47
ノシ げーむ屋
0062デフォルトの名無しさん2007/10/09(火) 11:25:12
ノシ Webアプリ屋 (OpenGLは趣味プログラミングで)
0063デフォルトの名無しさん2007/10/10(水) 20:34:59
glPushMatrix();
glPopMatrix();

この組み合わせが何をやっているのかイメージできません…
どなたかわかりやすく教えていただけませんか
0064デフォルトの名無しさん2007/10/10(水) 21:28:25
今使ってる行列をどこかに取っておく
さっき取っておいた行列を持ってくる

「スタック」って言葉は知ってるかな?
やってることは、まさにそれなんだけど。
0065デフォルトの名無しさん2007/10/10(水) 21:29:33
ttp://wisdom.sakura.ne.jp/system/opengl/gl14.html
0066デフォルトの名無しさん2007/10/10(水) 21:53:15
検索したらそれが当たって、図でも説明されているので意図はわかるのですが

その行列がglMatrixMode(GL_MODELVIEW);といったモデルビューの単位なのか
glMatrixMode(GL_MODELVIEW);に掛け合わせたglrotateといった類のものなのかがわからなくて


よくわからなくなってるのですが、「今使っている行列」がどこを指すのかわかってなくて
0067デフォルトの名無しさん2007/10/10(水) 22:14:28
OpenGL には、行列が3つある。 GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE
glMatrixMode は、どの行列を操作するかを切り替える。
glMatrixMode で設定した、操作する対象の行列が、今使ってる行列。

glRotate は、今使ってる行列を回転させて、新たな今使ってる行列にする。 古い行列は捨て去る。
C言語的に書くと
今使ってる行列 = 今使ってる行列 * 回転行列;
みたいな感じ。
glTranslate とか glScale とかも一緒。
みんな今使ってる行列を変化させる。
だから、今使ってる行列っていったら、それしかない。

glPushMatrix は、今使ってる行列をスタックに保存しておく。
glPopMatrix は、保存したものを取ってきて今使ってる行列に戻す。

おk?
0068デフォルトの名無しさん2007/10/10(水) 22:28:11
つまり
glMatrixMode(GL_MODELVIEW);
回転行列
glPushMatrix();
glMatrixMode(GL_TEXTURE);
拡大行列
glPopMatrix();

という風になった場合、popの後は
MODELVIEWで回転されてる状態、ということですか?

ようやく、頭の中が整理されてきました。
回転行列とかをスタックにぶち込むものとか考えてしまって

ありがとうございます!ばっちり、すっきり、ニッコリです!
0069デフォルトの名無しさん2007/10/10(水) 22:55:16
いや、説明不足ですまんが、 glPushMatrix/glPopMatrix は glMatrixMode まで保存/復元したりはしない。
glMatrixMode はそのままで、現在の行列を保存/復元するだけ。
スタックも行列の種類ごとに別々にある。
つまり MODELVIEW 行列用のスタックと、PROJECTION 行列用のスタックと、TEXTURE 行列用のスタックがある。

>>68 の例でいくと、
glPushMatrix は回転した MODELVIEW 行列を 「MODELVIEW 行列用のスタック」 に保存する。
glPopMatrix は 「TEXTURE 行列用のスタック」 から TEXTURE 行列を取り出す。
0070デフォルトの名無しさん2007/10/10(水) 22:57:08
>>68
いや、その、なんだ、全然違ってるぞw

それだと、最初の状態と比べて
 ・MODELVIEW行列は回転してる
 ・かつその回転した行列がMODELVIEW行列スタックに一段積まれた
 ・TEXTURE行列は拡大した
 ・しかしその拡大した行列はTEXTURE行列スタックから取り出した行列で上書きされた
 ・MatrixModeはTEXTUREになった
ちなみに上のシーケンスをTEXTURE行列スタックが空の状態でやると、GLエラーが起こる。

行列スタックは、MatrixModeごとに別のスタックが用意されてるんよ。
スタックに保存できる行列の個数もそれぞれ違う。

・・・って69の書き込みの方が早かったか。でもいいや送信エイ
0071デフォルトの名無しさん2007/10/10(水) 23:16:45
>>69-70さん
ありがとうございます

つまり
model tex projec
|| || ||
|| || ||
  ̄   ̄    ̄
みたいなスタックがあって、それごとに別々に保存されていて

glPushをすると、今のモードで弄くってる行列が保存されて
glPopをすると、スタックからそのモードの行列を取り出して「上書き」する、ということですね
上書き、ということはpopする前の行列はあまり意味がないのかな…

なんとかスッキリしてきたのでソースをちゃんと読むことができそうです


それとは別に、今メモリ(テクスチャ?)が解放されなくて
glutPostRedisplay();をするたびにメモリが増加していく現象が発生して悩まされています…
0072デフォルトの名無しさん2007/10/10(水) 23:28:06
popする前の行列は、それを使って何か別のことをするんでしょ。
何にも使わないんなら、そりゃ意味はない。
0073デフォルトの名無しさん2007/10/10(水) 23:33:51
>>71 今メモリ(テクスチャ?)が解放されなくて
毎フレームglGenTextures&glBindTextureしちゃってるとか?
てか先にGL以外の部分を疑った方がいい気もするけど
0074デフォルトの名無しさん2007/10/10(水) 23:51:55
>>72さん
おっしゃるとおりです。
popの前にモードを変えて、何かするのが普通なのですよね。

>>73さん
毎フレームglGenTextures&glBindTextureは以前やってしまったのでそこは注意してました
init的な初期設定のところでテクスチャを読み込んでいるので大丈夫だと思います。


どうも色々見てみたのですが、手本にしたサンプルでも同様の現象が出るみたいです。
0075デフォルトの名無しさん2007/10/10(水) 23:57:22
>>74
小さいソースならどっかにうp
0076デフォルトの名無しさん2007/10/11(木) 00:02:41
すいません…はじめに言っておけばよかったのですが

行列もわかっていない身のくせにCgを使っているので
長いソースになってしまっています。

どうもCgでアニメをさせると徐々にメモリが増えていってしまうみたいです
0077デフォルトの名無しさん2007/10/11(木) 00:04:12
/(^o^)\ナンテコッタイ
0078デフォルトの名無しさん2007/10/11(木) 00:12:23
理由は分からないんだけど、どう考えてもメモリリークなんて起こらない
(トライアングルを一枚くるくる回してるだけの)プログラムで、SwapBuffersするたびに
メモリが少しずつ増えてく現象に悩まされた事があったなァ・・・。
で、数十KBだか数百KBだかメモリが増えた時点で、メモリ消費の増加が止まるんだこれが。
わけがわからん。

10分くらい動かしてみて、メモリ増加が止まるんなら気にしなくていいんじゃない??
(ちなみに、nVIDIAのボードだった)
0079デフォルトの名無しさん2007/10/11(木) 00:22:11
>>78さん
サンプルを動かしているとまさしくその状態です。
あるところで止まるのですが
自作のものでFPSを表示させていると止まらなくなってしまっていて
450MBから初めて780MB 最悪1GBまでメモリが増えていっています。

>保持しているテクスチャデータのサイズがグラフィクスメモリの容量を超える場合,
>テクスチャデータはメインメモリーに格納され, テクスチャは描画に使われる度にグラフィ
>クスカードに転送される.

論文でこういうのを見つけたのですが、小さいテクスチャで試しても増加するみたいです
ATIのせいかと思っていたのですがnvidiaもそうなのですね
0080デフォルトの名無しさん2007/10/11(木) 00:22:19
Cgはバグ持ちの駄目な子だけどメモリリークには遭遇したことないな
ループ毎にオブジェクト生成とかやってるんじゃ?
0081デフォルトの名無しさん2007/10/11(木) 00:32:57
>>79
状況がよくわかんないな
ATIのグラボでCg動かしてるの???
ソース見ないと確かなことは言えないが
450MBから始まって1GBまでいっちゃうのは
常識的に考えてプログラムミスだと思うぞw
0082デフォルトの名無しさん2007/10/11(木) 00:39:29
少しソースのチェックしてきます orz

もしよろしかったらCgのサンプルの
07_two_texture_accesses でアニメーションしたときのメモリの様子を見ていただけませんか?
私の環境だとこのサンプルでも増加していってしまって
538MB→560MBで増加中という…

0083デフォルトの名無しさん2007/10/11(木) 00:45:48
2007sepに入ってた実行ファイルをそのまま動かしたけど19Mから増えないな

XpHome,GF7800GTX,163.71_forceware_winxp_32bit
0084デフォルトの名無しさん2007/10/11(木) 00:52:27
ソースを見て怪しいところをコメントアウトしても増加が止まらず…

サンプルを動かしてみて473→500 増加中です。
Win2k ATI RadeonXpress200(128MB) 32bit Athron64 メモリ1GBでした。

オンボードGPUでATIというのが原因なのかもしれません。。。
0085デフォルトの名無しさん2007/10/11(木) 01:03:33
ドライバ最新でその状態ならちゃんとVRAM載ってるグラボか
デスクトップマシン買った方がいいんじゃないかな

ソース見たけど少なくともCgはメモリリークの原因じゃないよ
0086デフォルトの名無しさん2007/10/11(木) 01:05:48
ああ他にglslかDirect3Dに乗り換えるって選択肢もあった
0087デフォルトの名無しさん2007/10/11(木) 01:07:27
さらに書き忘れ
とりあえずglsl乗り換えをお勧めしておくよ
0088デフォルトの名無しさん2007/10/12(金) 19:31:07
板と視点の角度によって違うテクスチャを貼りたいのですが、
どうしたらいいですか?光源とかは使っていません。
どなたか教えてください。

※つまり、板の、ある場所(座標)から視点へのベクトルによって
テクスチャを変えたいということです。
0089デフォルトの名無しさん2007/10/12(金) 23:03:20
視線ベクトルの値によって、読み込むテクスチャを変えたらいいんでないの?

switchとかelse ifで
settexture( vec );

みたいな関数を作って、テクスチャセットとか。

0090デフォルトの名無しさん2007/10/12(金) 23:12:41
>>88
GLSLが使えるなら、話は簡単。
使えないなら、プログラム書いていちいちやるしかないかなぁ・・・。

視点からの距離が一定なのならミップマップを利用できるカナ、とかも思ったけど。w
0091882007/10/12(金) 23:42:28
視線ベクトルの値ってどうやって得るんですか?
GL_nomal?みたいなのがあるんですか?

一応、GLSLを使っています。(使えているかは別ですが)
0092デフォルトの名無しさん2007/10/12(金) 23:52:37
>>91
眼点座標系の視点位置は(0, 0, 0)
でおk?
0093882007/10/14(日) 00:46:13
てことは、オブジェクトの座標が視点ベクトルになる
ことですね!
ありがとうございます!とりあえずがんばってやってみます!
0094デフォルトの名無しさん2007/10/14(日) 02:59:41
>>93
固定関数はそうなるけど…
Cgやgglslは本人次第というかなんというか…
0095デフォルトの名無しさん2007/10/14(日) 11:43:15
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/5227/note/GLTest.lzh
こちらのソースのようにテクスチャに描いたものを映すということをしたいのですが
映したい対象が3次元テクスチャです

そうなったときにteximage3dとかにしても、上手くモノが映し出されません
こういうばあいはどうやるのでしょうか
0096デフォルトの名無しさん2007/10/14(日) 11:56:50
3次元テクスチャの意味を本当に理解しているのか、と思うが
実際に何をどうしてみた?
0097デフォルトの名無しさん2007/10/14(日) 12:12:46
3次元テクスチャでサンプルのようなサイコロ状のデータを作成して
それをテクスチャとして読み込んで、同じように-1〜1の平面に投影しようとしました

texture2Dの部分を単純に全部3Dにしてマッピングできるかと思っていたのですが
0098デフォルトの名無しさん2007/10/14(日) 12:38:41
>>95
どうでもいいけど、そのサンプルはinit()内でスタック破壊してるね。大丈夫かいな。

で、95と97を何度読んでもイマイチ意味が分からない・・・。
とりあえず適当にいくつか挙げてみる。
・3Dテクスチャのデータはどう作ってどう転送したの?
・ちゃんとglEnable(GL_TEXTURE_3D);してる? (2Dじゃないよ)
・3Dテクスチャのテクスチャ座標は当然3次元なんだけど、ちゃんとglTexCoord3?();使ってる?

てなとこでしょうか。
0099デフォルトの名無しさん2007/10/14(日) 14:38:44
>>97
人にわかるように説明できないならソースうpれ
0100デフォルトの名無しさん2007/10/14(日) 20:14:39
>>95のサンプルを
solidcubeなどを描いたものをポリゴンに描くのではなく

for(i<10)for(j<10)for(k<10) texture[i][j][k][4]=1
みたいな感じで作った1辺10の、点の集合体としで立方体をあらわしているテクスチャを
ひとつの平面に映し出すということをしたいのです

>・ちゃんとglEnable(GL_TEXTURE_3D);してる? (2Dじゃないよ)
>・3Dテクスチャのテクスチャ座標は当然3次元なんだけど、ちゃんとglTexCoord3?();使ってる?
これはちゃんとやりました。teximage3Dは
PFNGLTEXIMAGE3DPROC glTexImage3D;
glTexImage3D =
(PFNGLTEXIMAGE3DPROC)wglGetProcAddress("glTexImage3D");
で呼び出しています。

急に体調が悪くなって今まで横になっていました。レスしてもらっていたのにすみません
0101デフォルトの名無しさん2007/10/14(日) 20:45:03
要するにボリュームレンダリングをしたいってことか?
■ このスレッドは過去ログ倉庫に格納されています