トップページgamedev
987コメント315KB

鬱だ氏のう DirectX (Part 5)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものですた。02/07/23 00:32ID:DsnWt/i.
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)

コピペスマソ
069469102/09/20 20:11ID:???
>>693
D3DXMeshって三角形リストのみじゃなかった?
0695名前は開発中のものです。02/09/20 20:37ID:???
>>691
> /Unicode

Unicodeにする必要性はサテオキ
win98でunicodeプログラムって正常に動くんだっけ?

あと、unicodeなのに D3DXCreateTextureFromFileEx"A"
とはいかに。Wな気がするが。
069669102/09/20 20:59ID:???
>>691
MSLUを使えばWin98上でUnicodeも動くし、
マルチバイトでW版が使えるのと一緒でUnicodeでもA版は動くよ

LPDIRECT3DDEVICE8 CreateDevice();
LPDIRECT3DTEXTURE8 CreateTexture();

int WINAPI WinMain(...)
{
HINSTANCE hDll = LoadLibraryA( "unicows.dll" );
someclass* instance = new someclass;
LPDIRECT3DDEVICE8 device = CreateDevice();
LPDIRECT3DTEXTURE8 texture = CreateTexture();
texture->Release();
device->Release();
delete instance;
FreeLibrary(hDll);
return 0;
}

の、new someclsssのところで死ぬんですよ。
んでCreateTextureをコメントアウトすると動く… 不可解すぎ(汗
0697名前は開発中のものです。02/09/20 21:04ID:???
UNICODE使うのやめれば?
069869102/09/20 21:14ID:???
Unicodeは関係ないと思うんだけどなぁ…
とりあえずUnicodeチェックはやめてみようと思います。
しかしテストしてくれる人に会えるのが3日に一度でテストすらできず…
0699名前は開発中のものです。02/09/20 21:20ID:???
極当たり前に考えて、Win98上のUnicodeなんて信用できないだろ。
070069102/09/21 00:30ID:???
すまんす、結局Unicodeが原因ですた… ただ、結局Unicodeで動いてます。

今までunicows.libをリンクしてただけだったんですが、
MS公式サイトの説明通りに/nodでkernel32とかを無視させるようにしたらいけました。
D3DXCreateTextureFromFileで死んでたのは多分、
関数内でUnicows.dll内のファイル系関数を呼ぶのに失敗してたんじゃないかな?
という感じです。どうもお騒がせしました…。
0701名前は開発中のものです。02/09/21 08:56ID:???
わざわざトラブルを抱え込んで自爆というオチか。アフォ丸出しだな
0702名前は開発中のものです。02/09/21 10:03ID:viCl1ubd
VC5.0+DX8.1bSDKでコンパイルすると
'UINT_PTR' : 定義されていない識別子です。
とか出てエラーになるのですが適当にtypedef int* UINT_PTR;と入れても
'&' : 不正な左オペランドです。
とか出るのですがVC5.0+DX8.1bSDKの組み合わせは駄目ですか?

FAQかもしれませんが検索してもヒットしなかったのでよろしくお願いします
0703名前は開発中のものです。02/09/21 10:21ID:???
とりあえずUINTはunsigned int ニダ
070470202/09/21 10:38ID:???
たぶんVC6.0以降のの〜\VC\include\*.hで定義されていると思うのですが
UINT_PTRとはどういった型なのかを教えて下さい

d3dx8math.hのstruct _D3DXMATRIXA16の中のnewオーバーロードで
エラーが出てしまいます
0705名前は開発中のものです。02/09/21 10:51ID:???
grepしたらこんな感じ <basetsd.h>
#ifdef _WIN64
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
#else
typedef unsigned long UINT_PTR, *PUINT_PTR;
#endif
070670202/09/21 10:58ID:???
>>705
d3dx8math.hにぶち込んだらとおるようになりますた
たいへんたいへんありがとうございますた
070770202/09/21 11:05ID:???
なんか衝突する場合もあるみたいなので代わりに
d3dx8math.hに#include <basetsd.h>
としたら大丈夫みたいです
0708名前は開発中のものです。02/09/21 20:33ID:???
2D的に扱いたいのでWorld-View-Projectionは変更しないという前提で、

スプライトを描画する場合VertexBufferは4頂点分の大きさが必要だけど、
何種類ものスプライトを表示する場合、やはりVertexBufferは1スプライト
に1つ作成するものなのでしょうか?

考えてるのは、グローバルに1つスプライト用のVertexBufferを作っておいて
描画するときに、VertexBuffer更新する方法なのですが
みなさんどうしてますか?

もしかしてスプライトの場合でもVertexBufferを固定で、一つ一つ
WorldTransformかけてるのかな?
0709名前は開発中のものです。02/09/21 21:14ID:???
>>708
深く考えずにTLVertexとDrawPrimitiveUPでいいと思う
071070802/09/21 21:49ID:???
>709
確かにそうなのですが。(以前はTLVertexとDrawPrimitiveUPを使ってました)
しかし、今回はShaderを使うこともあり、どうしてもVertexBufferを
使うしかないんです。

例をスプライトからパーティクルに変えますが、
class ParticleList
{
Particle par[1000];
VertexBuffer* vb
}



class ParticleList
{
Particle par[1000];
VertexBuffer* vb
}
071170802/09/21 21:53ID:???
ゴメン送信してもうた。
----
class ParticleList
{
 Particle par[1000];
 static VertexBuffer* vb
}

では、どっちがいいかな?
毎フレームパーティクルの座標は書き換えるので、大きいVertexBufferを
作って全てのパーティクルで共有した方がいいと思うんだけど。
0712名前は開発中のものです。02/09/21 22:03ID:???
俺だったら、MAX_PARTICLEサイズのバッファー一回つくって、
あとは毎フレームそれにつっこんで1回のDrawで描くよ
071370902/09/21 22:55ID:???
一度にスプライト描画するんだったら、
MAX_SPRITE分の四角形を描画できる三角形リストのIndexBufferを用意
IndexBufferは何度描画しても変わらないから最初に初期化だけしとく
後はスプライトの四点をVertexBufferに書き込んでいってDrawIndexedPrimitive

ただこれは一歩間違うとUP系より遅くなる可能性があるんで注意
メインループのスケジューリングが結構大切です
(Presentの"直後に"DrawIndexedPrimitiveを呼べないなら、
DrawPrimitiveUPで早い段階からスプライトを1つずつ描画したほうが早い場合も)
071470902/09/21 23:01ID:???
UPで逐一描画するのとIndexedで溜め込んだ場合の差異はここにテストがあった
ttp://isweb42.infoseek.co.jp/computer/t_tail/program/vsdx8/d3d/020/index.htm
上の表のDrawPrimitiveUPのレンダリング時間とDrawIndexedPrimitiveの差に注目
それとRender.cppも参照しる
0715名前は開発中のものです。02/09/22 00:12ID:???
俺はいろいろやってみたことあるよ。UPは結構優秀。
nvidiaのサイトで拾ったDynamicVertexBuffer/DynamicIndexBufferの
テンプレート使ってUPと対等。
事前にIndexBufferを用意してやっとDrawIndexedPrimitiveUPに勝てた。
0716名前は開発中のものです。02/09/22 04:32ID:fagAZlUu

LPDIRECT3DTEXTURE Image;
void load(LPDIRECT3DDEVICE8* pDevice,char* filename){
D3DXCreateTextureFromFile( *pDevice, filename, &Image)
}
がD3DXERR_INVALIDDATAを返して失敗します。
これを呼び出す前にメッシュのロードに成功しているのでpDeviceにはしっかりとした値が入っていますし、filenameも"a.bmp"でフォルダにa.bmpも存在しています。
いったいなにが悪いのかわかりません。
0717名前は開発中のものです。02/09/22 05:08ID:???
>>716
カレントディレクトリがどこか確認しる。
0718名前は開発中のものです。02/09/22 05:15ID:fagAZlUu
>>717
Debugから直接アプリを起動しているので間違いないとおもいマス。
エラーのチェックはこうやってます。
switch(D3DXCreateTextureFromFile( *pDevice, filename, &Image))
{
case D3DERR_NOTAVAILABLE : MessageBox (NULL,"NOTAVA","e",MB_OK);break;
case D3DERR_OUTOFVIDEOMEMORY : MessageBox (NULL,"OUTOF","e",MB_OK);break;
case D3DERR_INVALIDCALL : MessageBox (NULL,"INVAOLODCA","e",MB_OK);break;
case D3DXERR_INVALIDDATA : MessageBox (NULL,"INVAILDDATA","e",MB_OK);break;
case E_OUTOFMEMORY: MessageBox (NULL,"E_OUTOOFMEMA","e",MB_OK);break;
}
0719名前は開発中のものです。02/09/22 05:50ID:???
うちのGeForce3では期待した動作をしてくれるんですが、
知り合いのMatroxのVGAで動かしたら駄目らしいんです。
ここまではよくある話なんですが、ちょっと不可解なので…

ALPHAOP と COLOROP にそれぞれ
STAGE0 に D3DTOP_MODULATE, D3DTA_TEXTURE, D3DTA_DIFFUSE
STAGE1 に D3DTOP_MODULATE, D3DTA_TFACTOR, D3DTA_CURRENT
と指定するのと、
STAGE0 に D3DTOP_MODULATE, D3DTA_TEXTURE, D3DTA_TFACTOR
と指定するので表示結果が変わってしまいました。
具体的には、最初のほうのTFACTORが影響されてない感じでした。
(頂点ディフューズ色は0xFFFFFFFFでデフォルトと一緒にしてます)

テクスチャステージも3まで対応してるとD3DDEVCAPS8には出てるし、
他に考えられる原因が分かりません…。
0720名前は開発中のものです。02/09/22 06:07ID:???
>>718
話題はずれるが、今後のためにD3DXGetErrorStringを見といた方がいいぞ
0721名前は開発中のものです。02/09/22 06:26ID:???
VCのデフォルトっぽい構成で、カレントディレクトリはmyprojと仮定。
myproj\data\mesh.x
myproj\data\a.bmp
myproj\debug\prog.exe

D3DXLoadMeshFromX("data\mesh.x"...);で読んだら
"a.bmp"のパスは"data\a.bmp"
0722名前は開発中のものです。02/09/22 07:53ID:fagAZlUu
なんか、成功しました。カレントディレクトリの問題だったようですぅ。
0723名前は開発中のものです。02/09/22 10:19ID:???
>>719
リファレンスラスタライザではどうなる?
リファレンスと異なるならMatroxに報告してあげるとか・・・
0724名前は開発中のものです。02/09/22 12:47ID:???
>>722
よくある間違いだ。過去ログ見るひとのために一応書いておくと
./debugのアプリは ./ に移動させてから実行しないといけないんだよな。
072571902/09/22 13:55ID:???
>>723
うちの環境のREFで実験したら、期待通りの動作でした。

Matroxの最新ドライバで試すのをすっかり忘れてたので、
それで駄目だったらMatroxに通報してみます
0726名前は開発中のものです。02/09/22 17:05ID:???
この間やっとDX8.1bSDK入れたんだけどDX7でやってた
IDirectMusicLoader::GetObject()が全角ファイル指定すると
失敗するようになったんですが前のプロジェクトは全部捨てろと
MSは言ってーるのですか?・・・半角カタカナは前からだったけど
0727名前は開発中のものです。02/09/22 18:53ID:???
>>719
D3DTA_DIFFUSEとD3DTA_TFACTORは同時に使えない環境がある。
SDKの説明にもそんなことが書いてある。
NVIDIAでも同時に使えるようになったのはGeForce3から。
072871902/09/22 19:56ID:???
>>727
へぇぇ、そうだったのかー
ってことは、結構ハードウェア的には厳しい実装だったのね・・
情報ありがトン
0729名前は開発中のものです。02/09/22 21:21ID:???
起伏のある地形をxファイルで読み込んで
その地形の上をカメラが移動する、という風にしたいのですが
地形が盛り上がっているところや凹んでいるところで
カメラの高さをどのように上げ下げするのかわかりません。

検索したところBSPというものが引っ掛かったのですが
これを用いる方法しかないのでしょうか?
0730名前は開発中のものです。02/09/22 21:23ID:???
初歩的な質問ですいません。
キーワードだけでも教えていただけると助かります。
0731名前は開発中のものです。02/09/22 21:27ID:???
起伏の形状を取り出してx, y座標からz座標を求めればいいんじゃなかろーか
0732名前は開発中のものです。02/09/22 21:36ID:???
起伏のある地形ということならHeightFieldがいいんじゃないか?
これならx座標とz座標に応じてフィールドのy座標が決まるから、
それにカメラの高さを加えてやればいいだけだな
0733名前は開発中のものです。02/09/22 21:41ID:???
ちなみにこう。
float field[FIELD_SIZE][FIELD_SIZE];
initialize(field);
int camera_x = hoge();
int camera_z = hage();
float camera_y = field[camera_x][camera_z] + camera_height;
このままだとカメラの移動に応じて高さが一気に変わるから適当に補完とかしる
0734名前は開発中のものです。02/09/22 22:05ID:???
ただ、HightFieldだと広めのマップが表現できない
0735名前は開発中のものです。02/09/22 22:19ID:jVKC+C+L
>>734
そこは頭の使いようだろ?
HightFieldというアルゴリズム自体にはなんの問題も無い。
0736名前は開発中のものです。02/09/22 22:29ID:???
>>729
BSP(Binary Space Partition)と

>地形が盛り上がっているところや凹んでいるところで
>カメラの高さをどのように上げ下げするのか

はあまり関係ないよ。
BSPは空間分割のデータ構造とか探索のアルゴリズムの手法で、
君が求めてるのは多分ポリゴンメッシュとカメラオブジェクトの
当たり判定の話だしょ。
0737名前は開発中のものです。02/09/22 22:45ID:jVKC+C+L
729は平面の式について調べれ。
0738名前は開発中のものです。02/09/22 23:03ID:UA7t4cRe
DirectShowの話題はまだー?
0739名前は開発中のものです。02/09/22 23:35ID:???
>>729
正解などない。
どのようにと聞かれても、地面の起伏に応じてカメラ動かせ
としか答えようがない。君にビジョンがないと話が進まないな。
BPSは今のところ本質的には関係ない。
0740名前は開発中のものです。02/09/23 02:48ID:???
DirectDrawの話題はまだー?
0741名前は開発中のものです。02/09/23 03:46ID:???
>>740
聞いてやるよ、質問は何だ?
0742名前は開発中のものです。02/09/23 07:06ID:???
>>729
皆、小出しだね。そりゃ調べる力も必要だろうが…
漏れのやり方で良いなら、
先ず、ポリゴンは三角形として話を進める。地形は3ポリの集合。
ココで使うのは、平面の方程式、ax+by+cz+d=0って奴。
之を変形して、d=-(ax+by+cz)と考える。
んでカメラが居るポリゴンの位置(XZ平面での)を調べる。カメラで解らないのはY情報なんだから解るでしょ?
ココで其のポリゴンの三頂点のどれでも良いから、一つチョイスする。
その頂点と、他の二つの頂点でベクトルを定義して、外積か何かで法線ベクトルを出す。
そいつを単位化して、各要素をa,b,cとする。次は選んだポリゴンのX,Y,Zをx,y,zとして
d=-(ax+by+cz)の計算をしてdを求める。
こいつの値は変数にでもぶっこんで、値は知らなくても良い。
そして最後に、また変形、y=-(ax+cz+d)/bで考える。
ココでx,y,zはカメラの位置ベクトルの各要素、つまりyが求まる。x,zは解っているので
a,b,cは先程の法線ベクトルを単位化した各要素、dも先程求めた物。
つまりy以外は全て値が出てるよね。
お終い。
074374202/09/23 07:09ID:???
>次は選んだポリゴンのX,Y,Zをx,y,zとして
間違い。スマソ
次は選んだ頂点のX,Y,Zをx,y,zとして
0744名前は開発中のものです。02/09/23 08:20ID:???
カメラの乗っかってるポリゴンの
3頂点の重み付き平均でいいんじゃないの?
0745名前は開発中のものです。02/09/23 08:25ID:???
>>742
要約してみた。

D3DXIntersect

以上(ワラ
0746名前は開発中のものです。02/09/23 09:01ID:???
D3DXCreateMesh()使って作ったメッシュに頂点情報とか
入れるにはどうすればいいんですか?
またはそれが載っているサンプルを教えて下さい
0747名前は開発中のものです。02/09/23 09:56ID:???
>>746
んなんロックして流し込めばいいだけだ。
つか、教えて君モロ出し系で質問するなら
「物凄い勢いスレ」とか「初心者歓迎スレ」のほうがいい。
ここだといきなり噛み付かれても文句いえねーよ。
0748名前は開発中のものです。02/09/23 09:58ID:???
http://game.2ch.net/test/read.cgi/gamedev/1032098770/
http://game.2ch.net/test/read.cgi/gamedev/1013645518/
074974202/09/24 03:03ID:???
>>745
そうきましたか…
ココはDirectX板だから関数があれば、それを教えれば良いのかも知れませんが…
処理的に何をやってるのか解らないで、使うってどうなんでしょう?

始めたばかりの時、行列で回転かけるのをRotation関数使わないで
ロックして全頂点をループで自前の行列計算したりってやりませんでした?
用意された関数オンリーな人って、バーテクス、ピクセルシェーダーとか
出来るようには、為ら無いんじゃ…
0750 02/09/24 04:10ID:???
でも742の方法はイマイチな気がするのはオレだけか?
イチイチ平面の方程式にしないほうがイイんでないか?

xファイルを読み込む。カメラ位置はp0とする(x,zは特定されている)
頂点/インデックスバッファをロックして頂点データp1,p2,p3がまずわかる。
p1+a*(p2-p1)+b*(p3-p1) = p0 をp0のy座標,a,bについて解く
a >= 0 , b >= 0, a+b <= 1 ならそのポリゴン上にあるので求まったp0を採用
ポリゴン上になかったらほかのポリゴンを探す

でいいんでないか?知らんけど

んで、この方法だと毎フレームごとにポリゴンごとに判定しなくちゃイケナイから重い
初歩的な最適化の方法としては、画面をxzのグリッドで分けて、
グリッドごとに衝突する可能性のあるポリゴンのテーブルを作っておく
そーすっと、カメラの属するグリッドのポリゴンでのみ判定すればよくなる。
グリッド間隔は小さいほど効率が上がるがそれだけメモリを消費するんでテキトーに。

あとはアレだ。イチイチ頂点バッファのロックアンロックを繰り返すと重くなりそーなんで
頂点データは必要な部分をコピーしといたほうがいいな。

オレのラベルではこんくらいしか方法は思いつかん。もっとイイ方法があったら教えれ。
075174202/09/24 06:50ID:???
>>750
744の3頂点の重み付き平均って奴ですね。
内分の関係を逆に捉えて、条件が満たされていれば点と点を内分する状態であると。
やはり、人のやり方って勉強になりますね。
こう言う、数学的なルーチンワークって面白いですよね。

>ポリゴン上になかったらほかのポリゴンを探す
これが、プログラマの腕の見せ所ですね。当方はへっぽこ専門生なんで
数学はともかく、プログラムはイマイチです。ここの最適化が重要ですね。
0752名前は開発中のものです。02/09/24 09:56ID:???
>>751 3頂点の重み付き平均って奴ですね
違うぞ。
075374202/09/24 22:49ID:???
>>752
4頂点の重み付き平均でした。失礼しました。
0754名前は開発中のものです。02/09/25 19:54ID:MSCNJlmH
MDX
age
0755名前は開発中のものです。02/09/26 01:23ID:Th5mYXTg
カスタムVERTEX SHADERをいじるとき、適当なことをやるとwin2000でも青画面になるのですが、どのようなときに青画面になりますか。
0756名前は開発中のものです。02/09/26 02:15ID:???
>>755
適当なことをやったとき
0757名前は開発中のものです。02/09/26 04:28ID:Th5mYXTg
>>755
IDがもう少しでMSDN
0758名前は開発中のものです。02/09/26 04:31ID:???
一歩足りてないな。
0759名前は開発中のものです。02/09/26 06:26ID:???
755 名前:名前は開発中のものです。 :02/09/26 01:23 ID:Th5mYXTg
757 名前:名前は開発中のものです。 :02/09/26 04:28 ID:Th5mYXTg

0760名前は開発中のものです。02/09/26 07:41ID:???

(゚∀゚)アヒャ!
0761名前は開発中のものです。02/09/26 10:20ID:ANzLdQ8E
DirectX8.1で画像を1枚表示させるだけのプログラムで、
うちのマシンだと、たまにFPSが1も出ないような状況が起こってしまいます。

そんなに性能のいいマシンではないのですが、普通のDirectXを使った
ゲームはFPS60で普通に動いてます。

なんでそうなるのでしょうか。
再現性のないバグなのでよくわかりません。
0762名前は開発中のものです。02/09/26 10:21ID:???
グラフィックボードぐらいかいてくれろ
0763名前は開発中のものです。02/09/26 10:23ID:???
> そんなに性能のいいマシンではないのですが、普通のDirectXを使った
> ゲームはFPS60で普通に動いてます。
UnrealTournament2003やBattleField1942でFPS60出てるなら、プログラム側のバグかと。
0764名前は開発中のものです。02/09/26 11:05ID:???
実行環境と普通のDirectXを使ったゲームってのが分からないとな。
あと1枚画像を表示させるってのも具体的にどうやって表示してるのか。
0765名前は開発中のものです。02/09/26 11:08ID:???
>>761
>たまにFPSが1も出ない

DirectXの側でその手の不具合は聞かないな。
アプリのほうで凡ミスをやってる予感がするな。
戻り値はチェックしてるか。SDK付属サンプルは無事に動いてるか。
サンプルが無事に動いてるならそっちを参考にしたほうが早いぞ。

あとはアンチウイルスツールとかの常駐ソフトの所為かもな。
0766名前は開発中のものです。02/09/26 11:41ID:???
>>761
ドライバは最新のものにしてる?
古いものだと新しいDirectXに対応してなくて
変な現象が起こることがあるよ。
0767名前は開発中のものです。02/09/26 11:54ID:???
ノートンのAntiVirusでAutoProtectを有効にしてると
BattleField1942の通信対戦中にフレームレートが
極端に落ちる現象がたまーに起きる。それ以外は知らない。
0768名前は開発中のものです。02/09/26 11:56ID:???
ここは素晴らしいインターネットですね。
0769名前は開発中のものです。02/09/26 11:57ID:???
六角大王でXfileを出す方法を教えてください、おながいします。
0770名前は開発中のものです。02/09/26 12:02ID:Th5mYXTg
>>761
FPSを格納するバッファを更新してないかったというオチでしょうか。
あと、1枚表示させるだけの静止画だとFPSがどんくらいか判断しづらいです。
>>769
3dsに変換してconv3dsという糞ツールでxに変換してください。
077176702/09/26 12:03ID:???
ちなみにその現象が起きるのを確認した環境は
Win98SE+DirectX8.1b
BattleField1942(製品版)
ビデオチップはGeForce4Ti4200。
ドライバはBeta Detonator 40.52だ。
 
761の環境はどうだ。
0772名前は開発中のものです。02/09/26 12:03ID:???
>>761
HDDにアクセスしにいってるとかそういうのは無いか?
0773名前は開発中のものです。02/09/26 12:03ID:???
>>769
スレに合ってる内容とはとても思えないが…
とりあえずデータコンバータとしてもMetasequoiaをお勧めしとこう。
詳しくはMetasequoia公式のデータ交換の項を読め。
0774名前は開発中のものです。02/09/26 12:10ID:Th5mYXTg
たまに、だからちがうか。
0775名前は開発中のものです。02/09/26 14:19ID:???
スレ進行停止>質問>怒涛のレス>繰り返し
0776名前は開発中のものです。02/09/26 14:27ID:???
Metasequoiaもあと2,3年したら
どこかの会社が買い取って入門用3Dモデラ\39,800-とかで売り出すことになるんでない
0777名前は開発中のものです。02/09/26 16:05ID:???
ゲーム用の音楽素材として、ループする音楽を作りたいのですが
フリーで何か良いソフトはありませんか?
0778名前は開発中のものです。02/09/26 16:33ID:???
あまりにもスレ違いすぎるぞ。
0779名前は開発中のものです。02/09/26 18:20ID:Th5mYXTg
>777
DirectX付属のDirectMusicComposerとかいうのがあったと思います。
0780名前は開発中のものです。02/09/27 00:32ID:???
ぼかしテクスチャを作ろうと思ってレンダリングしたテクスチャを、
SetTexture( 0, &rtex );
SetTexture( 1, &rtex );
SetTexture( 2, &rtex );
SetTexture( 3, &rtex );
のように4つのステージにセットしてピクセルシェーダーで
加工しようと思ったらt0以外ではうまくピクセルが取れなかった。
CopyRectして使ってみてもやはりステージ0以外ではうまくいかない。
ロードしてあらかじめ用意したテクスチャを使用した場合はどの
ステージのテクスチャもうまく取れたけど何か分かる人いない?
0781名前は開発中のものです。02/09/27 04:58ID:???
>>780
テクスチャ座標を適切にセットしてないだけかと。
0782名前は開発中のものです。02/09/27 05:37ID:BHwi6z60
DirectMusic Producer でした。
0783名前は開発中のものです。02/09/27 05:44ID:XQiRpxo1
http://muvc.net/jsweb/profiles.html
0784名前は開発中のものです。02/09/27 08:42ID:???
>>780
普通は問題なく出来るぞ。
具体的にどういう手順で失敗したのかを書けば
原因は見えると思うが、780の説明だけでは何とも。
0785名前は開発中のものです。02/09/27 14:32ID:???
>>780
もしかして使用してるピクセルシェーダーのバージョン、1.4だったりしない?
1.4ならテクスチャステージと同じ番号のレジスタにしかテクスチャロードできなかったような・・・
texldする時も
texld r0,t0
texld r1,t0
texld r2,t0
texld r3,t0
ってしないとだめだし、つーか基本か。
見当違いだったらすまん。
078678002/09/27 21:25ID:???
>>781
UVはちゃん設定してるのでロードしたテクスチャでぼかすと
UVがうまくずれてぼけてます。つまり期待通りの結果。

>>784
普通に考えたら簡単に出来るよね。ロードしたテクスチャと
レンダリングしたテクスチャに何か違いでもあるんだろうか。
でもなんかSetRenderStateとSetTextureStateの設定で
いろいろ症状が変わるので調査中。
SetTextureを0〜3まで順番に設定していくと、段々テクスチャが
何かとαブレンドされて薄くなったりしてる。

>>785
PS1.0なんだけどね。

うちはGeForce2MXだから来週また会社で試してみます。
みんなありがとね。
0787名前は開発中のものです。02/09/28 00:31ID:???
The Dot Net Zone is a resource for wanna-be Dot Net
Wiz kids, primarily aimed at people who have nominated
C# (CSharp) as their language of choice, and have a
hankerin for writing games.

どうやらDirectX9は.NET完全対応のようですね。
C#しか持ってないんで対応しなかったら…
0788名前は開発中のものです。02/09/29 15:52ID:MTZiZpi/
プログラムのことでなくて恐縮なんですけど
DirectX8SDKのインストールのことで質問です。

Windows2000にSDKをインストールしようとすると
"unable to create installdriver"
というエラーが出てとまってしまいます。

もしよかったら解決法を教えてもらいたく思います。
どうぞよろしくお願いします。(既出だったらすいません)
0789名前は開発中のものです。02/09/29 16:22ID:???
たぶん諦めるしかない
どうしても入れたければOSの再インストール。
あ、PlatformSDKをフルで入れれば入るからそれでもいい。
ただし、ランタイムはRetailなのでデバッグやりづらいかもしれないけど
0790名前は開発中のものです。02/09/29 16:24ID:???
別にインストールしなくてもアーカイブの内容をそのままコピーすればすむのでは?
0791名前は開発中のものです。02/09/29 17:10ID:???
>>788
管理者権限がないとインストールできないと言うオチでは?
079278802/09/29 20:18ID:???
どうも本当に親切なレスありがとうございます。

>>789
OSの再インストールってことはやはりインストール順番がまずかったのでしょうか?
SP3→デバドラ→DirectX8SDK
ってやりました。
PlatformSDKっていうのは何ですか?
MSNのヘルプでそういう項目もあった気もしますけど、それのことでしょうか?

>>790
後にランタイム版のインストールなら成功したので、
Libファイルとヘッダファイルのみコピーで大丈夫でしょうか?

>>791
うーん、ちゃんとadministratorでログオンしてます。
0793名前は開発中のものです。02/09/29 20:36ID:???
こういうときはエラーメッセージ
"unable to create installdriver"
でgoogleしてみることをオススメする
■ このスレッドは過去ログ倉庫に格納されています