トップページ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)

コピペスマソ
0631名前は開発中のものです。02/09/14 12:34ID:???
>>630 MSDN内にあるよ。
0632名前は開発中のものです。02/09/14 14:53ID:???
ないよ
0633名前は開発中のものです。02/09/14 18:32ID:???
フルスクリーン<->ウィンドウの切り替えって
IDirect3D8::CreateDeviceで対応したデバイスを作り直すって事でいいのかな・・・
0634名前は開発中のものです。02/09/14 19:21ID:???
>>633
renda- sute-to de risetto
0635名前は開発中のものです。02/09/14 19:22ID:???
まちがい
プレゼントパラメータ設定してリセット
あーはずかし・・
063663302/09/14 23:21ID:???
リファレンス見ました
テクスチャとか全部破棄してIDirect3DDevice8::Resetするんですね
ありがとう
0637名前は開発中のものです。02/09/15 00:27ID:???
D3DPOOL_MANAGEDにしとけば破棄しなくても済む?
0638名前は開発中のものです。02/09/15 01:30ID:???
>>637
うん。
でもD3DXSPRITEとかあのへんのは破棄するしかないので諦めてやるしかない。
0639名前は開発中のものです。02/09/15 10:12ID:???
>D3DXSPRITE
使う必要性が見あたらないので、使わなければ良いだけでは?
0640名前は開発中のものです。02/09/15 10:40ID:???
ターゲットが WindowsXP なので
mciSendCommand , mciSendString の代わりにDIRECTSOUND で
音を出す必要が出てきました。
(NT4で動いたプログラムが動かんとは…)

そこで mciSendString("play hogehoge notify", NULL, 0, hWnd);
のように実行が終わったら特定のウィンドウにメッセージを
送るための仕組みはあるのでしょうか?

なかったら別スレッドを立ててそういうルーチンを組まないといけないのでしょうか?
0641名前は開発中のものです。02/09/15 10:45ID:???
>>640
DirectX7のヘルプだとチュートリアルの中に「再生の通知の処理」という項目があるけど。
064264002/09/15 18:00ID:???
わかりました。もちっとDirectXのサンプルソースをなめまわしてみます。
0643名前は開発中のものです。02/09/17 08:49ID:???
>>640
うちでは、mciで普通に動いているけれど・・
0644名前は開発中のものです。02/09/17 09:43ID:???
時々TRIANGLESTRIPはパフォーマンスがいいからそっち使おうって話を聞きますけど、
実際のところTRIANGLELISTなんかよりもよかったりするんですか?

例えばハイトフィールドをDrawIndexedPrimitiveで描画するとして、
TRIANGLELISTなら一発で描画できるけど、
TRIANGLESTRIPでは帯を何度か描画しなきゃならないっすよね。

COM呼び出し回数を減らすのも十分な高速化だと思うんですが…
0645名前は開発中のものです。02/09/17 12:08ID:???
原則的にはそう。
ただしご指摘の通りDrwPrimitiveのオーバーヘッドが大きいのでDirectXでは効果が薄い
(OpenGLなんかは早いよ)

市販ゲーなら必須かもしれんが、趣味プロなら要らないかも
まぁそーいったチューンを楽しむのも趣味プロの一環だろうけど
064664402/09/17 16:13ID:???
>>645
オーバーヘッド考慮しなければ高速なんですね。
Strip化とDrawPrimitiveの回数減らすのって全く逆になりそうだし、
実際どちらがいいのか不思議で仕方なかったんですがスッキリしました。
ありがとうございます〜
0647名前は開発中のものです。02/09/17 16:23ID:???
3角形を書くのには3頂点必要だけど、ストリップなら+1頂点で三角形が書けてしまう
100個の三角形書くのに listなら 300頂点、stripなら99+3頂点。役1/3

後オーバーヘッドだけじゃなくて、最近のビデオカードは頂点キャッシュがあるので、キャッシュヒットすれば
演算が省かれるので差がつきにくいつーのもありかと

0648名前は開発中のものです。02/09/17 21:35ID:???
皆さんはSetTextureStageStateとかSetRenderStateとかでステータスを変えて描画した後どうしてますか?
変える前のステータスはGetで保存しておいて、終わったら全部復元みたいな感じなんですかねぇ
書き換えたステータスが他のところで影響したりしてしまって結構面倒。。

Direct3Dにレンダーステートのスタック機構が整ってるとうれしいとか思う今日この頃
0649名前は開発中のものです。02/09/17 21:48ID:???
COM呼び出しってそんなにオーバーヘッド無いぞ、
コストは普通の仮想関数呼び出しと変わらない。
DCOMはプロセス超えるからオーバーヘッドあるけど。
0650名前は開発中のものです。02/09/17 21:49ID:???
んじゃ単に関数呼び出しが重いってだけ?
0651名前は開発中のものです。02/09/17 21:50ID:???
>>648
スタックだとOOPと相性が良くない罠。
ステートマシンだからD3D8の様な形に出来たと思う。
065264002/09/18 01:34ID:???
>>643
うちではmp3の読み込みと再生を全部mciでやってたけど、
codecが腐ってたからどえりゃあ不安定で再生できたりできなかったりしたんですよ。

とりあえずwavに交換してその場はしのぎましたが、
ファイルサイズを小さくするのが至上命令なんで
mp3の再生をDIRECTSOUNDで行おうかと考えたんですよ。
0653名前は開発中のものです。02/09/18 02:56ID:???
ライトマップ使ってるんでほとんど
ストリップになりません・・・
って俺だけかな。工夫が足らない?
0654名前は開発中のものです。02/09/18 03:58ID:???
>>652
世の中にはOggVorbisという便利なものがありますよん。
圧縮率・音質ともに良好なので念のため考えてみるべし。
0655名前は開発中のものです。02/09/18 06:12ID:???
>652
意表をついてMODという手もある
ttp://www.mars.dti.ne.jp/~odaki/mod/index.html
CからMOD再生DLL↓
ttp://www.un4seen.com/music/

ちなみに
Unreal TournamentがMODで
UT2003がOggVorbis
0656名前は開発中のものです。02/09/18 21:48ID:???
>>647
インデックス使えばストリップ使う必要性が全くないと思うんだけど・・・
0657名前は開発中のものです。02/09/18 23:41ID:???
結局、キャッシュヒットするようにIndex並べるつーのはStripに近いきがするけどね

SD-RAMからRIMM1066なって転送スピード10倍とかになったので
リファレンスラスタライザーもちっとは動くかと思ったら、やぱし全然駄目ですた
ソフトレンダのVirtualONはどうかと思ったら MMXに対応していません とかエラー出やがります
ショボーン
0658 02/09/19 01:18ID:???
Direct3Dのテクスチャの張り方で困っています。
地面にテクスチャをタイルのように並べてマップを表現しています。
一気に書けるように、256*256pixelのテクスチャを64*64単位のパーツを分けて
地面にペタペタ張っているのですが、
継ぎ目に隣のテクスチャが微妙に見えてしまいます。

頂点がpixelの中央になるようにuvを、例えば
(0.0 , 0.0)-(0.25 , 0.25)から
(0.0+0.5/256 , 0.0+0.5/256)-(0.25-0.5/256 , 0.25-0.5/256)
のように変更してもダメでした。(遠ざかるにつれ継ぎ目が見える)
ミップマップが効いているため、遠くのポリゴンでは
+0.5/256 でなく +0.5/128 等に変更しないとダメのようです。

どのようにすればこの問題を解消できるのか
教えていただきたいです。よろしくお願いします。
0659名前は開発中のものです。02/09/19 02:25ID:???
超FAQ
0660名前は開発中のものです。02/09/19 17:36ID:???
IDirectMusicSegment8::SetLoopPointsのmtStartとmtEndって
どんな数値入れればいいのでしょうか?
ms単位だと変な位置でリピートするのですが、教えてくださいお願いします。
0661名前は開発中のものです。02/09/19 19:45ID:???
頂点キャッシュってDrawIndexedPrimitiveじゃないと意味ないよねえ・・・
0662名前は開発中のものです。02/09/19 20:03ID:???
>>660
DirectMusicってms単位じゃなくてMIDIみたいなTick単位じゃなかった?
使ったことないから自信ないけどそうだった気がする
0663名前は開発中のものです。02/09/19 23:29ID:???
Xファイルをオリジナルフォーマットにコンバートしたいのですが
IDirectXFileEnumObject::GetNextDataObject()が
DXFILEERR_PARSEERRORを返してwhileループから抜けてしまいます
↑はヘルプを見る限り返さないはずですが・・・
あとIDirectXFileData::GetType()でGUID拾ってくるのですが
これはCOMオブジェクトを作れと言ってるのですか?
ヘルプの
DirectXGraphics->高度なトピック->Xファイル->使い方->ロード
だけだと情報が少なすぎます
どうかご教授お願いします

プログラム版の方にも書いたんですが進行遅そうなので
こっちに書かせていただきましたごめんなさい
0664名前は開発中のものです。02/09/20 00:04ID:???
>>660
何かキーが押されたらIDirectMusicPerformance8::GetTime()で
その時点のMUSIC_TIME拾ってそれをメモっといて
IDirectMusicSegment8::SetLoopPoints()
に渡せばいいんじゃないかな
8始めたばっかでAudioはやってないけど7の時はそれでできますた
漏れはXFileの解析で苦しんでるんですよ誰か教えて
066566402/09/20 00:08ID:???
そうそうMUSIC_TIMEはロードした時点から更新されるので
曲の位置=nowtime-starttimeだったっけ7は
0666名前は開発中のものです。02/09/20 00:08ID:???
Xファイルの変換って、MSのルーチンを使うと大変だよな。
直接読んだ方がイイよ。
066766302/09/20 00:10ID:???
>>666
Xファイルのフォーマットはどこで調べられますか?
0668名前は開発中のものです。02/09/20 00:17ID:???
>>667
ヘルプ読めよ・・・
066966302/09/20 00:22ID:???
>>668
ヘルプに書いてあるのは知ってましたが
たくさんあるテンプレートやトークン全て考慮して自力でやる方が
MSのルーチン使うよりも簡単なんですか?
0670ヴァニラあいす ◆Af963Yl. 02/09/20 00:27ID:???
>>663
.Xファイルは実は自前のルーチンも持っているんだけど、
今回はあえてD3DXライブラリを使って試してるとこ。

漏れも今いろいろ試してるので、何か分かったら書きます。
期待せずにまってて頂戴。
途中で投げ出しちゃったらごめんなさい。w
0671名前は開発中のものです。02/09/20 00:28ID:???
>>669
不要な情報は読み捨てる。
0672名前は開発中のものです。02/09/20 00:28ID:???
なんか言いがかりに近くなってきたな。
ここはゲ製だから、666はゲームが内部に持つローダーと仮定しているのだとおもう。
それならば対応すべきテンプレートなどたかが知れてる。それともツールでも作るのかね?
067366302/09/20 00:34ID:???
>>672
ローダーだったらD3DXCreateMesh()が簡単だからそれ使ってるけど
067467102/09/20 00:36ID:???
独自形式で必要な情報だけを、Xファイルから取ればいいのなら、
テンプレートなんてほとんど無視できると思うんだけど。
どーですかね?
0675名前は開発中のものです。02/09/20 00:38ID:???
はぁ??
067666302/09/20 00:39ID:???
D3DXCreateMesh()->D3DXLoadMeshFromX()の間違い
>>674
テンプレートとかよく分かってないんで勉強が必要です
067767502/09/20 00:39ID:???
>>673
0678名前は開発中のものです。02/09/20 00:41ID:???
もしやおまいら
スキンメッシュの分割自前でやっとるん?
067967202/09/20 00:41ID:???
俺がここで言ったローダーは解析部(パーサー)のことを指してるのですよ  >>676
068066302/09/20 00:43ID:???
>>674
最低限必要なデータは頂点、インデックス、マテリアルですが・・・
0681名前は開発中のものです。02/09/20 00:46ID:???
>>663
んで、何を質問してたんだっけ?
068266302/09/20 00:50ID:???
>>681
Xファイルから独自フォーマットのコンバート
欲しいサブセットデータは頂点、法線、テクスチャuv、
ストリップインデックス、マテリアル、テクスチャファイル名
と多分こんなもんです
0683名前は開発中のものです。02/09/20 00:53ID:???
>>682
それならばSDKの例のサンプルで読めるな。
読み込んだら好きなように吐き出せばOK。
068466302/09/20 00:55ID:???
>>683
8.0SDKですがXファイルのサンプルなんてありましたか・・・
うかつですた
068566302/09/20 00:56ID:???
皆さんレスありがとうございます
0686名前は開発中のものです。02/09/20 01:01ID:???
===完===
0687名前は開発中のものです。02/09/20 02:52ID:???
VS2.0 PS2.0
の資料なんてまだないよねえ・・・
0688名前は開発中のものです。02/09/20 17:41ID:4/XpyZrj
また質問しますが許してください

Xファイルからコンバート中なのですが
ID3DXMeshの個々のサブセットのストリップインデックススタート値と
個々のサブセットの面の数はどうやって調べればよいのでしょうか?
コンバートした後にIDirect3DDevice8::DrawIndexedPrimitiveを
呼び出すときに使うので・・・
あとD3DPRIMITIVETYPEを調べるのは不可能ですか?
よろしくお願いします
068968802/09/20 17:45ID:???
つけたし
サンプルのPick Polyを参考にしながらやってます
069068802/09/20 18:33ID:???
ヘルプを見ていたらID3DXBaseMesh::GetAttributeTable()が
使えそうな気がしてきますた
これでやってみます

これで合っていたらお騒がせして申し訳ありませんでした
0691名前は開発中のものです。02/09/20 19:31ID:???
ある場所でD3DXCreateTextureFromFileExAを呼び出すと、
別の場所でkernel32.dllのエラーが起きるとかいう不可解な状況なのですが…
(それもプログラム始まって数行目の凄い簡単なコードの場所で)
まさかこんな状況になった人ってほかにはいませんよねぇ(汗

ちなみに環境はWin2k/VS.NET/DX8.1/MultiThread/Unicodeでコンパイル、
実行環境は他人のマシンでWin98上書きMe/DX8.1らしいです(かなり古いらしい)
当然ながら自分のマシン上では問題なく動きます。それだけにデバッグしにくい…
0692名前は開発中のものです。02/09/20 19:39ID:???
ちなみにD3DX〜関数をコメントアウトするだけでちゃんと動くという…
リンカとかコンパイラとかのバグかと疑いたいです(w
069368802/09/20 20:01ID:???
>>691
漏れにはお手上げです
動作環境のテストは個人では難しいのでは?


ID3DXBaseMesh::GetAttributeTable()はID3DXMesh::Optimize()しないと
駄目らしい・・・んでOptimize()の呼び方が間違ってるのか失敗しる

それで最初の質問
ID3DXMeshの個々のサブセットのストリップインデックススタート値と
個々のサブセットの面の数はどうやって調べればよいのでしょうか?
あとD3DPRIMITIVETYPEを調べるのは不可能ですか?
どうかこのウツケな漏れにお教えください

スレ汚しごめんなさい
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座標を求めればいいんじゃなかろーか
■ このスレッドは過去ログ倉庫に格納されています