■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

【C++】 DirectX初心者質問スレ Part11 【C】
501 名前:デフォルトの名無しさん :2006/10/19(木) 01:10:55
だがD3DDeviceを複数作ってしまう罠
いや悪くは無いんだが、パフォーマンスは落ちる。
らしい。

502 名前:491 :2006/10/19(木) 08:17:15
やはり方法はないのでしょうか?
逆に、同じくCommonフォルダ内のファイルの内容を変えず、
自作ファイル内で作成したデバイスのアドレスを渡すのでもいいのですが、DXUI以外で設定できないものなのでしょうか。

503 名前:デフォルトの名無しさん :2006/10/19(木) 09:14:13
>>501
シングルトンにすればいいんでないの?

504 名前:デフォルトの名無しさん :2006/10/19(木) 15:32:53
メタセコイアで作ったxファイルをDirectXのプログラムでテクスチャをマッピングしようとしたのですが、なぜかマッピングできません。
ビットマップがおかしいのかと思い、DirectXのサンプルにあるトラの画像を変えてみたのですが、ちゃんと画像が貼られていました。
なのでxファイルがおかしいのかな?、と思うのですがどうすればよいのかわかりません。

ちなみに、メタセコイア(フリーソフト、ver2.3)でやっています。

505 名前:デフォルトの名無しさん :2006/10/19(木) 15:40:27
>>504
DirectXのサンプルの自分のプログラムを見比べればいいだけ

506 名前:デフォルトの名無しさん :2006/10/19(木) 17:46:49
>>504
UVの設定はどうなっている?

507 名前:デフォルトの名無しさん :2006/10/19(木) 18:29:48
返答していただき、ありがとうございます。

UVマッピングはしています。
私はビリヤードの球を作っていまして、材質設定のところでマッピング方式をUV方式にして、
図形作成のときの詳細設定でもUVマッピングとしています。

>>505
サンプルに直接xファイルを入れています。

>506
ビリヤードの球を作っていまして、材質設定のところでマッピング方式をUV方式にして、
図形作成のときの詳細設定でもUVマッピングとしています。
あと、xファイルで保存するときは座標軸をDirect3Dにして、
xファイルオプションは法線とUVマッピングにチェックを入れてます。

508 名前:デフォルトの名無しさん :2006/10/19(木) 18:42:03
情報が少なすぎる。

509 名前:デフォルトの名無しさん :2006/10/19(木) 18:42:31
まともなモデリングソフトできちんとUVの調整をしろ。

510 名前:デフォルトの名無しさん :2006/10/19(木) 18:52:43
>>507
Xファイルの中を覗いてみればいい
テクスチャやUVがどうなってるのか見てみるがよろし大根おろし

511 名前:デフォルトの名無しさん :2006/10/19(木) 18:56:55
なんか加齢臭がする

512 名前:デフォルトの名無しさん :2006/10/19(木) 18:57:35
そもそも球体に思い通りにUVを張るのは、かなり面倒な作業なんだが、
まさかテレパシーを送ると自動で作ってくれると思っているのか?

513 名前:デフォルトの名無しさん :2006/10/19(木) 19:15:04
>そもそも球体に思い通りにUVを張るのは、かなり面倒な作業なんだが
おいおい、ビリヤードの球にUV貼るなんて楽勝だろ(w

514 名前:sage :2006/10/19(木) 22:45:23
皆さんありがとうございます。
xファイルのUVの調整ができるソフトを探してみます。

515 名前:デフォルトの名無しさん :2006/10/19(木) 22:49:31
ん?メタセコでもなんら問題ないと思ったが

516 名前:デフォルトの名無しさん :2006/10/19(木) 23:01:00
自己未解決しますた。

517 名前:デフォルトの名無しさん :2006/10/20(金) 01:19:19
>>512,514
そんなに厳密なもん必要なの?
頭悪いんちゃう?w

518 名前:デフォルトの名無しさん :2006/10/20(金) 02:01:19
メルカトル図法的になっちまうのは問題だろとか、そーいうことが言いたいのと違うのか。
いや、しらんけど。

519 名前:デフォルトの名無しさん :2006/10/21(土) 07:32:36
DirectSoundで効果音再生すると
「ブッ」って音が最初に入るんだが普通?

リソースからmmioとか使ってWAVEデータ読み込んでるんだが。


520 名前:デフォルトの名無しさん :2006/10/21(土) 07:33:19
>>519
バッファをクリアすればいい
よくある方法→無音再生

521 名前:デフォルトの名無しさん :2006/10/21(土) 07:33:36
ごめんオレが...(ry

522 名前:デフォルトの名無しさん :2006/10/21(土) 08:42:58
DirectSoundの昔からの問題だな

523 名前:デフォルトの名無しさん :2006/10/21(土) 12:35:46
>>520
トンクス


524 名前:519 :2006/10/21(土) 12:51:42
まだよくわかんね。
1. プライマリバッファを作る
2. セカンドバッファを作る
3. セカンドバッファにデータを書き込む
4. セカンドバッファをDuplicateSoundBufferでいくつかに複製
5. 複製したものを再生

ってやってるんだがどこで何のバッファを
クリアしてやればおk?


525 名前:519 :2006/10/22(日) 09:01:58
5秒の無音を無限ループしてみたら、
5秒ごとに「ブ」が来るわ。

これは>>521のせいってことでFA?

526 名前:デフォルトの名無しさん :2006/10/22(日) 12:57:45
お、おならなんてしてないわよっ
ちょっとお芋が美味しかっただけなんだからね・・・

527 名前:デフォルトの名無しさん :2006/10/22(日) 13:08:49
526から離れるんだ、逃げろー

528 名前:デフォルトの名無しさん :2006/10/22(日) 13:21:59
>>519
データを疑わないのか?

529 名前:デフォルトの名無しさん :2006/10/22(日) 13:41:07
俺も、再生開始時のプッ音は何度も経験してる
環境依存っぽかったので、サウンドカードが古いのが原因だと勝手に思ってたけどな

530 名前:デフォルトの名無しさん :2006/10/22(日) 14:07:18
使う前にバッファクリアしてみるとか

531 名前:デフォルトの名無しさん :2006/10/22(日) 14:17:23
外部音源のときとかそうだったかな・・・

まあ、まずは自分の今の環境で他のサンプルがどうなってるか?
を確認して、
それがなってなかったら、そのソースと動作を確認。
それもなるようなら環境依存ってことじゃね?

532 名前:デフォルトの名無しさん :2006/10/22(日) 14:20:24
>>525
それは本当に無音なのか?

533 名前:デフォルトの名無しさん :2006/10/22(日) 14:26:10
>>532
まあ、まずは>>531の確認が先。

534 名前:デフォルトの名無しさん :2006/10/22(日) 16:25:27
俺もだ。サウンドバッファは生成時に自動クリアしていて
問題ないと思うんだが、ときどき最初のサウンドの再生開始時に鳴る。
再現性がなくて全く問題ないときもあるのでお手上げ状態だわ。
ハード依存ということで割り切っている。

535 名前:デフォルトの名無しさん :2006/10/22(日) 16:56:41
セカンダリを消してても、プライマリは古いデータが
残っていてそれが再生されるということがある。

536 名前:デフォルトの名無しさん :2006/10/22(日) 18:18:18
>>534
最初の音でノイズが出ることがあるのは他のソフト(WIN含む)が使ったバッファが残ってるからだよ

537 名前:519 :2006/10/22(日) 18:35:22
今帰った。
たくさんレスありがと!

>>528
WAVEデータはSoundEngineで作った無音データ。
リソースから読み込んでる。
バッファに書き込んでるデータを見てみると先頭が
"RIFF"ってなっとる。
これが原因?

>>530
プライマリ?セカンダリ?

>>531
DirectSoundのサンプルではノイズは出ないわ。


538 名前:デフォルトの名無しさん :2006/10/22(日) 19:04:01
( ゚д゚)ポカーン

539 名前:534 :2006/10/22(日) 19:17:17
>>535
>>536
あ、そういえばプライマリバッファのクリアはしていなかったです。
協調モード DSSCL_NORMAL なので SetFormat もしてなかったんですが・・・
(触らなくていいと思ってた。)
かまわずロックしてゼロクリアしてみました。おお、直ったような・・・?
再現性がないのでもう少し使ってみないと確実な結果はでませんが
改善されたような気がします! ご助言ありがとう!!

540 名前:デフォルトの名無しさん :2006/10/22(日) 19:58:31
OpenGLでは
フリーの人体モデルが結構みつかるのですが
DirectXではないのでしょうか?
OpenGLとdirectXの混合でコードを書くことはできますか?

541 名前:デフォルトの名無しさん :2006/10/22(日) 20:17:10
OpenGL用?
OpenGLって共用のモデルフォーマットなんて無かった気がするが・・・。

542 名前:デフォルトの名無しさん :2006/10/22(日) 21:59:03
人体モデル
http://ja.wikipedia.org/wiki/Poser


543 名前:デフォルトの名無しさん :2006/10/22(日) 23:02:16
フリーの人体モデルで作るって
Simsみたいなの、500ポリゴンのカクカク美少女が競演とかするのか


544 名前:デフォルトの名無しさん :2006/10/23(月) 00:03:36
OpenGL専用ってわけじゃないけどソニーが音頭とってたフォーマットがあるじゃん

545 名前:デフォルトの名無しさん :2006/10/23(月) 00:04:19
>>537
> バッファに書き込んでるデータを見てみると先頭が
> "RIFF"ってなっとる。

メチャメチャそれが原因なんだが、気付いてもらえるだろうか・・・(;´д`)

546 名前:デフォルトの名無しさん :2006/10/23(月) 00:06:31
OpenGLって自前でモデルデータ読み込む必要があるから
「OpenGLのモデル」っていうのは存在しないよ。

根本的なところを理解してないから勉強しなおし!

547 名前:デフォルトの名無しさん :2006/10/23(月) 01:02:42
>SONYが音頭とったフォーマット
そんなものもあったねえ
すげー久しぶりに思い出したよ
今でも生きてるだろうか

548 名前:デフォルトの名無しさん :2006/10/23(月) 02:06:25
>>545
見逃してたw
なんでヘッダ部分までバッファに読み込んでるんだw

>>544
COLLADA?とかいうXML形式のファイルフォーマットだっけ?

549 名前:デフォルトの名無しさん :2006/10/23(月) 02:57:36
いや、普通に注目集めてるし。
ゲームなんかじゃ導入事例増えまくりですよ。
DirectXとの相性は全然よくないけどなー。

550 名前:デフォルトの名無しさん :2006/10/23(月) 16:27:58
どの辺で注目集めてるのか教えて。
あと、増えまくったという具体的な導入事例も。

XML関連はゲーム開発者(とくに日本の)からは敬遠されがちだし、
少なくとも俺の周りには注目してる人いないんだが・・・

551 名前:デフォルトの名無しさん :2006/10/23(月) 16:35:44
エミュレータ関連だとOGL多いな

552 名前:デフォルトの名無しさん :2006/10/23(月) 17:09:24
質問です!
3Dの話なんですが
ある点Aから2点BCを通る直線に垂線を下して
垂線と直線が交わる点を求めたいんですが
どうやればいいでしょうか?

553 名前:デフォルトの名無しさん :2006/10/23(月) 17:17:37
中間フォーマットで利用してる人が実は多いといいたいんじゃない?
いくらなんでも最終フォーマットとしてはありえないんだし。

554 名前:デフォルトの名無しさん :2006/10/23(月) 18:15:20
>>552
X={A・BC}/|BY-AZ|
Y={A・BC}/|BZ-AY|
Z=|AX+BX|/{X・Y}

555 名前:デフォルトの名無しさん :2006/10/23(月) 20:09:00
質問失礼です。

ユーザーによる複数行の書き込み処理を実装したいです。
CEdit等のWindowsコンポーネント(っていうんですか?)を組み込む事は可能でしょうか?
なんとかして処理を軽減したいのですが、、、

環境を下記します。
2000 & XP
VS2003
DX9.0 2005 April

556 名前:デフォルトの名無しさん :2006/10/23(月) 20:41:27
言語何?

557 名前:555 :2006/10/23(月) 21:10:18
C++ です。
失礼しました。

558 名前:デフォルトの名無しさん :2006/10/23(月) 21:19:26
>>554
これは全部ベクトルですか?

559 名前:デフォルトの名無しさん :2006/10/23(月) 21:25:34
>>554
全てベクトルだとすると、XベクトルにAとBCの内積をBY-AZのベクトルの大きさで割った数値を入れるのは変ですし
X,Y,Zがそれぞれの成分だとすると、成分同士の内積を求めることはできませんよね?

560 名前:デフォルトの名無しさん :2006/10/23(月) 21:52:33
なんかDirectXっていうより数学っぽいので数学板で聞いてきます

561 名前:デフォルトの名無しさん :2006/10/23(月) 23:25:19
プリミティブ色 = デフューズ色 * デフューズ色の強さ + スペキュラ色 * スペキュラ色の強さ

現在ライティングを↑の式で求めているんですが、これに環境マップ色を加えたいんですが
一般的にはどうするのが普通なんでしょうか?

562 名前:デフォルトの名無しさん :2006/10/23(月) 23:32:08
>>561
環境マップで何を貼るかによって違ってこない?

ハイライトとかライト系だったらスペキュラの代わりだろうし
背景の映り込みだったら↑とは違ってくるし。

そもそも、色テクスチャは考慮されてるの?ディフューズと差し替え?
アンビエント色とライト色が入ってないのも気になってみたり・・・・・

563 名前:デフォルトの名無しさん :2006/10/23(月) 23:43:07
>>562
見やすくする為にいろいろ省いています。
実際のコードは以下の通り、D3Dのライティングモデルとほぼ同じです。

vColor.rgb= 0
vColor.rgb+= ( vMaterialDiffuse * light.vDiffuse * vDecal * sDiffuseFactor + vMaterialSpecular * light.vSpecular * sSpecularFactor) * sAttenFactor * sSpotFactor;
vColor.rgb+= light.vAmbient * vDecal;

これに環境色を掛けたり加えたりしたのですが、どれもいまいち不自然になってしまいます。
物理的に正しい観点からという方向も、そもそもこのライティングモデルは物理的根拠が無いですから
詰まってしまいます。


564 名前:デフォルトの名無しさん :2006/10/23(月) 23:50:30
デフューズ色やスペキュラ色は、物体の色と光の色が掛け合わされたもの(物理的には違いますが)
物体の色には、物そのものの色に加え、物が反射して映り込む背景の色も含まれるはず
つまり、vMaterialDiffuse *= vEnvironment、vMaterialSpecular *= vEnvironmentとするのが
最もうまくいく?

565 名前:デフォルトの名無しさん :2006/10/24(火) 00:02:50
質問です。

四角ポリゴンに法線をつけようと思ってるんです。

ちゃんと平面なときはいいんですが、
平面じゃない四角ポリゴン(実際はD3DPT_TRIANGLEFANで二つに割ってる)の場合がうまくいきません。
きっちり法線取りたい場合は四角ポリゴンを三角にバラすしかないですかね?


566 名前:デフォルトの名無しさん :2006/10/24(火) 00:13:23
>>565
四角形ポリゴンを三角形2つにばらすではなくて
三角形2つで四角形ポリゴンとみなすに、考え方を切り替えよう。
四角形ポリゴンは実際には作れないんだから、三角形2つの法線で近似するしかない。


567 名前:デフォルトの名無しさん :2006/10/24(火) 00:52:21
>>564
深く考えると、Diffuse色とかSpecular色って何のことを指してるの?って思う。
(反射色?拡散反射色?反射と拡散反射の計算って?光源色は白として計算?)

厳密には、反射するもの全てが所謂「環境マップ」そのものとも言える。
反射色/反射率/拡散反射色/拡散反射率/色テクスチャ/環境マップ/光源色・・・
自然界をそのまま計算するには要素が多すぎるよね。

で、簡単に考えるとしたら、環境マップは反射色の代わりに使ったらいいんじゃん?

568 名前:デフォルトの名無しさん :2006/10/24(火) 01:14:16
>>567
デフューズ色 * ( 1 - 鏡面反射強度 ) + 鏡面反射色 * 鏡面反射強度 + スペキュラ色

つまりこうですかね?
ちょっとこれで試してみます・・うまくいきそうな予感

569 名前:デフォルトの名無しさん :2006/10/24(火) 01:40:23
厳密に考え進めると↑で良さそうな感じがするんだが、
> デフューズ色 * ( 1 - 鏡面反射強度 )
これで色が暗くなるんだよね・・・

Diffuseが、(反射してしかも)拡散した結果の色ってのがクセ物。
誰か「一般的」な方法を教えてあげてください・・・

570 名前:デフォルトの名無しさん :2006/10/24(火) 02:03:32
また、複数のライトの場合どうすればいいのか・・

>鏡面反射色 * 鏡面反射強度
この部分はライトには依存しないので、ライトが何個あろうが
1回加えられるのみにしなければならない。
とすると以下のような感じ?

+ デフューズ色0 * ( 1 - 鏡面反射強度 ) + スペキュラ色0
+ デフューズ色1 * ( 1 - 鏡面反射強度 ) + スペキュラ色1
+ デフューズ色2 * ( 1 - 鏡面反射強度 ) + スペキュラ色2
+ 鏡面反射色 * 鏡面反射強度

これに関する情報が手に入りにくいのは、実ははっきり決まってないからなのかなぁ

571 名前:デフォルトの名無しさん :2006/10/24(火) 03:59:06
手に入りにくいも何も、単に描画モデルの古典例のひとつでしかないからだから…
そもそもモデルとして正確でもなんでもないんだから、結果オーライで好きに実装すればいいと思うよ

572 名前:デフォルトの名無しさん :2006/10/25(水) 10:28:00
DirectXのサンプルがビルド出来ません。

http://monsho.hp.infoseek.co.jp/dx/dx76.html
ここのページを参考にVisual C++ 2005 Express EditionとDirectX SDK(October 2006)と
Platform SDK for Windows Server 2003 SP1をインストールして、インクルードファイル等の
設定をしました。このページのサンプルコードはビルド出来ました。

しかし、DirectXのサンプルがビルド出来ません。次のようなエラーが出てしまいます。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16 が関数 "long __stdcall MsgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MsgProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall MsgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MsgProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__UnregisterClassA@8 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__DispatchMessageA@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__PeekMessageA@20 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__UpdateWindow@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__ShowWindow@8 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__RegisterClassExA@4 が関数 _WinMain@16 で参照されました。

プロジェクトのプロパティの追加の依存ファイルは
d3dxof.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib
となっています。

どこが原因となっているのでしょうか?

573 名前:デフォルトの名無しさん :2006/10/25(水) 11:24:34
http://bbs.2ch2.net/angstrom/?m=img&q=../angstrom/img/1143824659/0051.jpg

すみません。誰か教えてください。
上の画像のようにティーポットが変な風にかけたようになるのですが、これはいったい何がわるいのでしょうか?
よろしくおねがいします。

574 名前:デフォルトの名無しさん :2006/10/25(水) 11:25:45
あ、すみません。これは地面に対してティーポットは半分だけめり込んでいるのはいいわけですが、
ティーポットが崩れたようになっているのが問題としている部分です。

575 名前:572 :2006/10/25(水) 12:53:59
すいません。自己解決しました。

プロジェクトのプロパティの追加の依存ファイルにuser32.libを加えたらうまく行きました。

576 名前:デフォルトの名無しさん :2006/10/25(水) 14:09:22
数値計算にGPU使えないかと思ってます
4次元以下の行列計算をGPUにやらせたら高速になるのか
バスとの転送速度でかえって遅くなるのか
そのへん、どうなのでしょうか

577 名前:デフォルトの名無しさん :2006/10/25(水) 15:18:23
ボードで違う予感

578 名前:あや :2006/10/25(水) 17:20:08
最近、はじめたばかりの初心者ですが
よろしくおねがいします。

現在、オリジナルの3DCGビュワーを開発しようとおもっているのですが、
用途として、
オリジナルのフォーマットで既存の3Dソフトウェアから
書き出すことが可能で、たとえば、.objxみたいな拡張子で
書き出せ、そのファイルをビュワーで読み込み、
その形状をオブジェクト中心にぐるぐるまわしたいです。
また、カメラ画角の変更等に対応できれば、さらにうれしいのですが。
さらに、いうと、全画面ビューで、ある程度のパフォーマンス(スピード)も
ほしいです。

まず、お聞きしたいのが、一般的に上記のような(漠然としすぎてますが。)
ビュワー開発は敷居は高いのでしょうか?

すこし、他言語等で、プログラムをかじっている程度で、
テストプログラムとして作れるレベルのものなのか?

3D系のプログラムのイメージが、今まで経験値が
なかったので、どのような体系(手段等)があり、どのようなプロセスで
構築していき、つくっていくのか、見当違い(的外れ)な質問なのかも
しれませんが、諸先輩方にアドバイス頂きたいと
思っております。何卒、よろしくお願いいたします


579 名前:デフォルトの名無しさん :2006/10/25(水) 17:33:50
表示は簡単です。
ぐるぐる回すのも難易度高くないと思います。
むしろオリジナルのフォーマットを策定してその入出力を書く方が大変?
あと、
> オリジナルのフォーマットで既存の3Dソフトウェアから書き出す
これをどう実現するつもりか不明なんですが、既存ソフトウェアの
プラグインを書くならそれが一番大変かも知れません。

最初は、とりあえずデータ形式や入出力は忘れて、
プログラムのソースコードに直接データを記述してしまい、
それを表示・ぐるぐるするのを目標にしてはどうでしょう。
適当な入門書を探すとサンプルに載ってそうな気もします。

580 名前:デフォルトの名無しさん :2006/10/25(水) 17:47:28
578です。
ご回答ありがとうございます。

>既存ソフトウェアの
>プラグインを書くならそれが一番大変かも知れません。

具体的に、何が大変なのでしょうか?
たとえば、3Dフォーマットには、obj、max、mb等
いろいろあるとおもいますが、それぞれ、それに対応した
ソフトウェアで読み込みができるとおもいますが、
なぜ、読み込みができるのでしょうか?何が、それぞれで
ちがうのでしょうか? 各ソフトウェアの設定や、埋め込む情報が
それぞれあるとはおもいますが、たとえば、純粋に形だけ読み込めれば
いいとおもっています。ただし、他のソフトウェアで読み込むことは
不可能にしたいです。(そのビュワーのみで開くことができる。)

たとえば、その適当な入門書で、オススメ等あれば
お教えいただけないでしょうか?

また、CG言語みたいなものがありますが、
ある程度ライブラリも豊富で、敷居は低いと聞いています。
評判はいかがなものでしょうか?

たびたびすいませんが、よろしくおねがいします。



581 名前:デフォルトの名無しさん :2006/10/25(水) 19:41:27
578です。
ちなみ表示させたいポリゴン数は、約10万ポリゴン近くあります。
これをリアルタイムに高速に動かすためには、どういった手段が
あるでしょうか?

582 名前:デフォルトの名無しさん :2006/10/25(水) 19:58:54
>>576
少なくとも俺のShader2.0カードでは
演算性能以前の問題で、試そうとすら思えないなぁ


583 名前:デフォルトの名無しさん :2006/10/25(水) 21:02:54
とりあえずもっと短くまとめてこないと読む気にならない人も多いんじゃないか?
と思わないでもない。

情報が足りなさ過ぎるのも困り物だが。

584 名前:デフォルトの名無しさん :2006/10/25(水) 22:19:46
<プロジェクト名> error LNK2022: メタデータの操作に失敗しました(8013118D) :
重複する型に、適合しないレイアウト情報があります (IDirect3D9) : (0x02000047)。
<プロジェクト名> error LNK2022: メタデータの操作に失敗しました(8013118D) :
重複する型に、適合しないレイアウト情報があります (IDirect3DDevice9) : (0x0200002c)。


このビルドエラーはどういう状態を表していて、何が原因なのでしょうか。
DirectX3D(2006/Aug)のサンプルのCommonフォルダ内のファイルを自分のプロジェクトに加えて一緒にビルドしただけです。
サンプルの内容は変えていませんし、自分のプロジェクト単体ではエラーは出ません。
また、元のプロジェクト(自分のプロジェクト単体)でCommonフォルダ内のファイルの関数は使っていません。
関数の重複はちゃんと表記されているのですが、上記のエラーは全く見当が付きません。
原因に心当たりがあると言う方がいらっしゃればアドバイスをいただけるとありがたいです。
ちなみにリビルドやデバッグフォルダを削除しても上記のエラーは改善されませんでした。

585 名前:デフォルトの名無しさん :2006/10/25(水) 23:32:10
リンクエラー♪

586 名前:デフォルトの名無しさん :2006/10/26(木) 00:02:24
>>578さん、目的の物を作るのにどうすれば作れるのか、
それが分からない段階ではプログラムを組むのは難しいと思います。
あなたはどうすれば実現できると思いますか?
それを考えるのがプログラマーの仕事なんです。
例えば、冷蔵庫を作ろうと思っても何をして良いか分からないでしょう。
出来合いの部品を組み込むにしても、使い方を覚えなければなりません。
独自仕様にしようと思ったら、自分で部品を作らなければいけません。
まずはビュアーでオブジェクトを表示する所から初めてはどうでしょう?
これが出来なければ話になりません。
ライブラリ等は>>2にリンクがあります。
自分が出来る簡単な所から初めてはいかがでしょうか?
…というのが、プログラムを挫折した初心者の俺からの意見です…orz

587 名前:584 :2006/10/26(木) 01:02:02
>>585
レスありがとうございます。
サンプルをそのまま持ってきたのを付け足しただけなので、リンクエラーしている場所が全く把握できないままでした。
片っ端から設定弄ってますとマネージ云々をいいえにしたら解消されました。
とりあえず現状で問題ないようですが、この設定の変更で今後問題が起きて悩みそう(´`)



588 名前:デフォルトの名無しさん :2006/10/26(木) 07:18:53
だれか573答えてやって(笑)
どうしてああなるんだ?

589 名前:デフォルトの名無しさん :2006/10/26(木) 08:07:38
ポリゴンがめりこんでるんじゃ?
Z比較を切るか。ティーポット浮かすか

590 名前:デフォルトの名無しさん :2006/10/26(木) 12:08:12
ソース見せて

591 名前:デフォルトの名無しさん :2006/10/26(木) 13:00:22
>>573
Zバッファの精度が悪いときにああなるね。

Zバッファが16bitなのか、カメラのNearとFarが凄く広い(間が開いてる)か。
たぶんカメラの方だと思う。Farを1000とか5000くらいにしてみたら?

592 名前:デフォルトの名無しさん :2006/10/26(木) 13:21:42
何かの精度が臭いな。
何かの。

>>573
バックバッファのフォーマットとか、Zのフォーマットとか晒してみたら?
とりあえず、X8R8G8B8 D24S8 にしてみ。
D3DFrm使ってるだろうから ModifyDeviceSettings 内で、
pDeviceSettings->AdapterFormat= D3DFMT_X8R8G8B8;
pDeviceSettings->pp.BackBufferFormat= D3DFMT_X8R8G8B8;
pDeviceSettings->pp.AutoDepthStencilFormat= D3DFMT_D24S8;
にするのだ。

593 名前:573 :2006/10/26(木) 15:28:23
ありがとうございました!
ご指摘のとおりZバッファの指定が16ビットでした。
D3DFMT_D24S8で無事表示ができました!
皆様ありがとうございました

594 名前:デフォルトの名無しさん :2006/10/26(木) 15:52:38
DirectX version9.0ってどこでダウンロードするんですか?
良く分からないので誰かお願いします

595 名前:デフォルトの名無しさん :2006/10/26(木) 15:54:08
sage忘れた…
ごめん

596 名前:デフォルトの名無しさん :2006/10/26(木) 15:58:48
>>594
http://www.microsoft.com/japan/windows/directx/

597 名前:デフォルトの名無しさん :2006/10/26(木) 17:17:33
現在、DirectX9.0+VC++6.0で少しづつプログラムを組んでいます。
最初は1つのファイルでプログラムを行っていました。
ある程度無事動くのを確認したので、
分割コンパイルをしようと思い、ファイルをわけました。
そこで、各ファイルで共通で使うクラスをグローバルで定義しようと
したところ、既に定義されている・・・というようなエラーが出たため、
staticを使い、エラーを回避しました。
その後、プログラムをコンパイルが無事通り、実行しようと思ったら、
実行した直後にメモリアクセス系のエラーが出てしまい、
うまく実行できなくなりました。
なにかしら上手い方法や、調べる方法がありましたら、教えてください。
DirectXとは話がずれているかもしれませんが、
板違いだったらすみません。


598 名前:デフォルトの名無しさん :2006/10/26(木) 17:30:13
>>597
インクルードガードでググれ

599 名前:597 :2006/10/26(木) 17:41:18
>>598
レスサンクスです。
今から調べます。

600 名前:597 :2006/10/26(木) 17:43:34
>>598
インクルードガードという言葉を初めて知りました。
が、既に下記のようにやっています。
#pragma once
でやっていますが、これでは不十分でしょうか?


601 名前:デフォルトの名無しさん :2006/10/26(木) 17:58:13
ヘッダに実体置いてないか?

602 名前:597 :2006/10/26(木) 18:03:00
>>601
ヘッダに実態はおいてないと思います。

ちなみに、下記の場合は実態にあたりますか?
Hoge_Class Hoge;

上記のようなことは行っております。


>>598
#pragma once を止めて、全部
#ifndefにしたら、staticをはずしてもコンパイルが通るように
なりました。

しかし、現在もメモリアクセス系のエラーが続きます・・・。
プログラムのミスの可能性も高いので、
引き続き自分のコーディングを疑ってみます。


603 名前:デフォルトの名無しさん :2006/10/26(木) 18:14:19
>>602
>Hoge_Class Hoge;

実体にあたるよ
ヘッダは宣言だけにしる

604 名前:597 :2006/10/26(木) 18:23:01
>>603

実態の宣言をしており、申し訳ありません。

複数の .cpp ファイルから 共通の実態(クラス)にアクセスしたい
場合はどのように行うのか教えていただけませんでしょうか?

現在は下記のようにやろうとしています。

A.cpp #include A.h
B.cpp #include B.h
C.cpp #include C.h

A.h #include X.h
B.h #include X.h
C.h #include X.h

X.h static Hoge_Class Hoge



605 名前:デフォルトの名無しさん :2006/10/26(木) 18:24:33
cppに実体置いてextern

606 名前:597 :2006/10/26(木) 18:28:03
>>605
下記のようにするということでしょうか?

A.cpp #include A.h Hoge.・・・;
B.cpp #include B.h Hoge.・・・;
C.cpp #include C.h Hoge.・・・;

A.h #include X.h
B.h #include X.h
C.h #include X.h

X.cpp #include X.h Hoge_Class Hoge;
X.h extern Hoge_Class Hoge;

607 名前:597 :2006/10/26(木) 18:35:27
今、>>606のようにやり
正常に動作したことを確認しました。
厚く御礼申し上げます。

スレ違いにもかかわらず、質問してしまい
申し訳ありませんでした。
また、回答していただいた諸兄には深く感謝いたします。



608 名前:デフォルトの名無しさん :2006/10/27(金) 06:30:37
directx以前の話やってんなよ
vc使い方からの話じゃねえか

609 名前:デフォルトの名無しさん :2006/10/27(金) 06:51:14
次からC/C++やVCの初心者質問が来たらこのあたりのスレに誘導しようか

【初心者歓迎】C/C++室 Ver.32【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1160893851/

★初心者にVisual C++を教えるスレ★ Part24
http://pc8.2ch.net/test/read.cgi/tech/1158296664/

610 名前:デフォルトの名無しさん :2006/10/27(金) 22:37:27
最近のSDKにDirect3d10って文字見かけるんですけど、
DirectX10でプログラム組んでいる人っています?

611 名前:デフォルトの名無しさん :2006/10/27(金) 22:54:41
さすがに最新GPU買ってVista入れてDirectXやってる奴は少ないんじゃない?

612 名前:デフォルトの名無しさん :2006/10/28(土) 01:58:20
まあ、
9→10も
8→9程度の変更でいけるんでそ?

613 名前:デフォルトの名無しさん :2006/10/28(土) 02:41:05
そもそもDX10対応のビデオカードが売られて無いしな。
げふぉ8800ですら来月あたりに詳細発表で、値段は10万超えるとか言われてるし。

614 名前:デフォルトの名無しさん :2006/10/28(土) 07:21:55
別に10の機能をフルサポートする必要はないだろ。
9の機能だって全部サポートしてるもんってはじめは無かったじゃん。
nVidiaのシェーダー2.0+なんてどこが「+」なんだよ「−」ちゃうんかとwってもんだったしw

615 名前:デフォルトの名無しさん :2006/10/28(土) 07:24:35
ところでGeForceって「ジーフォース」だろ?
GeってGeometryのGeだろ?
>>613←お前だっせぇw

616 名前:デフォルトの名無しさん :2006/10/28(土) 08:09:01
>>615
………

617 名前:デフォルトの名無しさん :2006/10/28(土) 08:31:20
>>614
それでいちいち開発者がサポートする機能をチェックしないといけない、
っつー状況を改善するためのVISTAでありDX10であるわけじゃん。

DX9対応ビデオカードと違ってDX10からはフル対応していない限り、
「DX10対応」とうたってはいけないことになってるんだよ。

>>615
「げふぉ」にマジレスが入るとは夢にも思わなかった。

618 名前:デフォルトの名無しさん :2006/10/28(土) 10:26:52
>>615←お前だっせぇw


619 名前:デフォルトの名無しさん :2006/10/28(土) 11:37:02
あ、ごめんなさい、涙が出てきた。

620 名前:デフォルトの名無しさん :2006/10/28(土) 11:58:36
もう荒らすしかない

621 名前:デフォルトの名無しさん :2006/10/28(土) 12:08:04
ちょっとVIPで宣伝してくる。

やっぱやめた。

622 名前:デフォルトの名無しさん :2006/10/29(日) 00:30:22
フルサポートしてるからって満足な動作速度とは限らないけどな

623 名前:デフォルトの名無しさん :2006/10/29(日) 00:56:07
いちいちCAPS調べて根本的な部分のON用OFF用のコード書くよりましだ。
まだ速度ごとのシェーダー用意するほうがましだ。

624 名前:デフォルトの名無しさん :2006/10/29(日) 10:49:36
そんなこといってさ、過渡期は
速度ごとのシェーダーと、機能の有無のシェーダー両方作る羽目になるんだろ

625 名前:デフォルトの名無しさん :2006/10/29(日) 13:53:39
機能有無のシェーダー作るなら素直にDX9でやるっつー話ですよ。
DX10は機能チェックをしなくていいってのもウリの1つなんだから。

626 名前:デフォルトの名無しさん :2006/10/29(日) 14:10:18
DirectX9だって、チェックったって、シェーダーのバージョンぐらいなもんでしょ?

627 名前:デフォルトの名無しさん :2006/10/29(日) 16:24:35
>>626
俺はステンシルのサポートの有無、
HDRやポストエフェクト用のレンダリングターゲットのサーフェイスフォーマット、
サーフェイス間転送用ののフォーマット変換のハードウェアサポート、
違方性フィルタリングの有無と精度。
あとはPS/VSのバージョンチェックとPureDeviceの有無かな。

628 名前:デフォルトの名無しさん :2006/10/29(日) 16:49:11
DirectInputについて質問があります。
(マウス入力について質問があります)

DirectInputでマウスの移動量を取得できるプログラムはできるように
なりました。
しかし、以下の2点のようなことをしたいと思いましたが、
調べてもよくわかりませんでした。

1.スクリーン座標の中だけ、マウスカーソルを消したい
WinAPIのShowCursor()関数を使えばいいのでしょうか?
DirectInputでなにかしら有用な関数などあれば、
ご教授ください。

2.マウス座標をスクリーン座標で取得したい
WinAPIのGetCursorPos()関数を使えばいいのでしょうか?
DirectInputでなにかしら有用な関数があれば、
ご教授ください。


DirectX自体が初心者のため、WinAPIとの併用について問題がないか
不安になり、上記のような質問をしました。
もし、問題ないようであれば、以後の質問はWinAPIスレに行ってきます。

629 名前:デフォルトの名無しさん :2006/10/29(日) 16:58:39
>>627
ステンシルはZバッファがサポートされてればほぼまちがいなくサポートされてると思うよ。

630 名前:628 :2006/10/29(日) 19:00:26
自己解決しました。

http://www2.ttcn.ne.jp/~tkky/Tips/Win32API/getcursorpos1.htm
上記を参考に行ったところ、
スクリーン座標とクライアント領域での
切り替えなどについて記述がありました。

結果的に座標取得は、DirectInputではなく、
WinAPIで行うようにしました。
(ボタンの押下については、DirectInputを使います)

お騒がせしました。

631 名前:デフォルトの名無しさん :2006/10/29(日) 19:28:27
ファイルを1つにまとめたいんだけど、
よくわからないっす。
ライブラリがあれば、黙ってそれを使います。

以下の流れで考えてるんだけど、正しい?
<パッキング編>
1.ヘッダーを作成
2.ファイル結合
3.結合したファイルを保存

<パッキングファイル読み込み編>
0.ゲーム起動
1.パッキングをファイルをとりあえず、全部読み込む
2.分解して、それぞれこっそりと保存する
3.こっそり保存したファイルを適宜読み込んだり、開放したり。
4.ゲーム終了時に分解したファイルを全部消去する。


632 名前:デフォルトの名無しさん :2006/10/29(日) 19:31:02
パッキングは別にいいが、
読み込みでいちいちバラしてたら、
1GBとかの容量のゲームどうすんだよ。

ヘッダにデータがあるんだから1ファイル分切り出して
必要な分だけメモリ読み込みできるようにつくっておきんしゃい。

633 名前:デフォルトの名無しさん :2006/10/29(日) 19:31:41
>>631
ちなみに手っ取り早いのはzip使うこと。

634 名前:631 :2006/10/29(日) 19:37:56
>>632
レスありがd

>ヘッダにデータがあるんだから1ファイル分切り出して
>必要な分だけメモリ読み込みできるようにつくっておきんしゃい。
頭悪いので、自分なりにがんばって理解してみた。
以下の考え方で正しい?

<パッキングファイル読み込み編>
0.ゲーム起動
1.パッキングファイル(2ch.pak)の中にある、読み込みたいファイル(2ch.bmp)を
  2ch.pakより分解して保存。
2.通常通りファイル(2ch.bmp)をメモリに読み込み、メモリに格納したら、保存していた
  2ch.bmpを削除。
3.同様に適宜ファイルを読み込んだり、しなかったり。
4.ゲーム終了時にはファイルパッキングに関しては特になにもしない。

635 名前:631 :2006/10/29(日) 19:39:01
>>633
手っ取り早いの熱烈歓迎。
zipって、ライブラリあんのかな?
ちょい、探してきます


636 名前:デフォルトの名無しさん :2006/10/29(日) 19:46:03
なんでいちいち書き出すの?
メモリに読み込んだんだったらそのまま使えよ。

637 名前:631 :2006/10/29(日) 19:57:15
>>636
頭悪いんで、簡便してつかぁさい。

例えば、Xファイルを読み込む場合
D3DXLoadMeshFromX( "ファイル名.x", D3DXMESH_SYSTEMMEM,
pDevice, NULL, &pD3DXMtrlBuffer, NULL,
&dwNumMaterials, &pMesh ) ) )

漏れの場合上記のように"ファイル名"を指定して行ってるんだよ。
もちろん"ファイル名"を 2ch.x ではなく 2ch.pak で
行えれば理想的なんだが・・・、
やり方なんぞあれば、教えてほしぃ。

下衆なやりかたとしては、
パッキングファイルを指定→分解→保存→読み込み→保存したファイルを削除
→通常通り使う
のようになってしまう。
>>636の言うように
パッキングファイルを指定→分解→読み込み→通常通り使う
ということができれば、理想的。




638 名前:デフォルトの名無しさん :2006/10/29(日) 20:05:34
>>637
頭が悪いとかそういうレベルじゃねぇ。
リファレンス読むくらいは出来るだろ。

D3DXLoadMeshFromXInMemory

639 名前:631 :2006/10/29(日) 20:07:43
>>637
レスありがd

>頭が悪いとかそういうレベルじゃねぇ。
>リファレンス読むくらいは出来るだろ。
OTL

D3DXLoadMeshFromXInMemory について今から全力で
調べまつ。



640 名前:631 :2006/10/29(日) 20:17:51
639の
×>>637 レスありがd
>>638 レスありがd

>>639
D3DXLoadMeshFromXInMemory関数について調べ、
いけそうだと確信しますた。
ちょい、がっつりコーディングします。


641 名前:デフォルトの名無しさん :2006/10/29(日) 20:43:56
てか、バイナリで書いてデータがある場所のアドレス(データ先頭からのバイト数)覚えておけば(ファイルヘッダーに書いておく)いいだけだろ?
まとめるのは時間かかるかもしれんけど、取り出すだけならfseekすればいいじゃん。
たまに客からそういう要望があるけどライブラリなんて使うまでもない。
普通にバイナリファイル使って読むだけだ。パッキングとかよくわからんけど。
何がしたいの?

642 名前:デフォルトの名無しさん :2006/10/29(日) 20:53:01
>>630
DirectInputのマウスはあまり役に立たないよな。
相対値なんか拾っても使い道が無いし、何のためにあるんだろう。

643 名前:631 :2006/10/30(月) 00:00:06
>>641
レスサンクス。
パッキングはなんとかいけそうでつ。
fseek関数なんていう便利な関数がそういえばあったっすね。
忘れてた・・・。

>何がしたいの?
ゲーム造りたいんだけど、ファイルをパッキングして
データ(bmpとか)を見られないようにしたいんです。
(もちろん、ちょっとプログラムかじっている人にはすぐばれるが・・・)

もう少しがんばってみます。




644 名前:デフォルトの名無しさん :2006/10/30(月) 02:04:39
>>643
バイナリデータは書き込むときにエンディアンとアライメントに注意しろよ。

645 名前:デフォルトの名無しさん :2006/10/30(月) 02:37:56
>>644
アドバイスがあるなら、もっと具体的に教えてやれよ。

CD-ROMとかならアライメントも気をつけようもんだけど
HDDだったらどうでもよくね?エンディアンもさ。

646 名前:デフォルトの名無しさん :2006/10/30(月) 02:46:37
>>645
書き込みを構造体でまるまる書き込んで、
読み込みを?バイトで処理してたらハマルんじゃね?w

647 名前:デフォルトの名無しさん :2006/10/30(月) 03:04:32
>>646
そんなアホなことは考えもつかなかった・・・_| ̄|○

あ、ひとつアライメント気をつける条件を思いついた。
パックするマシンと、データ使うマシンが違うとか・・・アリエネー(;´д`)

648 名前:デフォルトの名無しさん :2006/10/30(月) 03:46:32
GetPrivateProfileString等の ファイル指定じゃなくメモリ指定版とか無いですか?

649 名前:デフォルトの名無しさん :2006/10/30(月) 03:57:57
>>648
ざっと見た感じ無さげ。

自前でINIファイル解析したらいいんじゃね?

650 名前:デフォルトの名無しさん :2006/10/30(月) 09:22:45
Registryはメモリー上にあるからそっち使えばおk

651 名前:デフォルトの名無しさん :2006/10/30(月) 09:57:13
レジストリは弄られるの嫌う人もいるから、
フリーのゲーム程度では使わないほうがいいんでね?

ただの設定とかコンフィグ程度なら構造体を適当に読み書きすればいいんだし。

652 名前:デフォルトの名無しさん :2006/10/30(月) 21:19:30
LPDIRECT3DDEVICE型の変数をRelease()で開放すると戻り値が0にならないのは何故なのでしょうか。

653 名前:デフォルトの名無しさん :2006/10/30(月) 22:53:06
馬鹿が解放しすぎないように見張り人が常駐してると予想します。

654 名前:652 :2006/10/30(月) 23:23:17
ありがとうございます。
確かにXファイルの読み込みなどでカウントが増えているようです。
ということは0にするには全部正確に解放しないといけないということですよね。
これを強制的に0にする方法はないでしょうか。
DXのサンプル(Commonフォルダ内、DXUT.cpp/DXUTCleanup3DEnvironment関数)で
if( pd3dDevice )
if( pd3dDevice-Release() > 0 ){
//(エラー処理)
}
}
の記述がありまして、アプリケーションの終了毎に怒られます。
サンプルを変更させないようにしたいのですが、
DXUTSetDevice(NULL);でアドレスをNULLにしようとしても出来ません(関数の仕様でNULLだとエラー処理へ)。
一番は全て解放出来ればいいのですが・・。

655 名前:デフォルトの名無しさん :2006/10/31(火) 00:17:39
それ単純にどこかでメモリの解放忘れてるだけだろ。

656 名前:デフォルトの名無しさん :2006/10/31(火) 00:18:28
>>647
いや、そりゃ普通にある。
コンパイラオプションでもアライメント有と無と設定できるから
送り側と受け側(例えばバイナリファイルをはさんでの)が違うときも注意。

657 名前:652 :2006/10/31(火) 00:38:03
>>655
戻り値が25672とかでて、全て解放するにもどこから手をつけたらいいか分からない件orz
解放できていないのは分かっているから一々エラー出さないようにしたいのですが・・・サンプルをコメントアウトするしかないのかな。

658 名前:デフォルトの名無しさん :2006/10/31(火) 00:45:21
DirectInputでゲームコントローラの挙動を制御しているのですが
なぜかPCによっては何もキーを入力していなくても左上キーが入っていることになってます。

原因としてありえそうなことって何ですか?

659 名前:デフォルトの名無しさん :2006/10/31(火) 00:53:35
>>657
解放できていない場所を究明するのが一番だろう。
まぁDXUTILなんて見たこともないから知らんけど・・・。

テクスチャ作れば+1、頂点バッファ作れば+1されていくのは分かってるよね?

>>658
PCのパッドはちゃんとCAPSでニュートラル位置と
稼動範囲を調べて自分で範囲を調整しましょう。

(0,0)が中心じゃないパッドなんでいくらでもあります。

Setなんちゃらで範囲を指定する方法は使えないものもあるので、
デフォルトの稼動範囲を調べて、自分で調整するのが吉。


660 名前:デフォルトの名無しさん :2006/11/01(水) 00:19:33
>>657
データの解放忘れでそんな数になる訳ないから、
どっかで毎フレーム参照カウンタ増やすような処理が入ってるんじゃないの?

GetDeviceとか使っててReleaseしてないとか。

661 名前:デフォルトの名無しさん :2006/11/01(水) 01:21:10
>>658
マザーボードがBX
smartjoypadなどのコンシューマコントローラー変換機を装着してコントローラーつけてない
本当に左上に入ってる(アナログだとありがち)

662 名前:デフォルトの名無しさん :2006/11/01(水) 20:35:13
DX8のヘルプにはReleaseの戻り値は
当てにするなって書いてあるよ

663 名前:デフォルトの名無しさん :2006/11/01(水) 23:26:35
>>660
毎フレーム増えず、アプリケーションのさまざまな初期化部分で一気に増えていました。

>>662
ナンデストー(´・ω・`)

664 名前:デフォルトの名無しさん :2006/11/01(水) 23:38:16
なら初期化んときにQueryInterfaceしまくってんだろ。

ちなみに俺はアプリケーション終了時のRelease()がメモリリーク以外で0にならなかったコトはないが。

665 名前:デフォルトの名無しさん :2006/11/02(木) 00:25:35
質問です。

画像とTexture1とTexture2を用意する。
Texture1とTexture2はテクスチャで、レンダリングターゲットとしても使用可能。
1.Texture1をクリア
2.画像をTexture1に描画
3.Texture2をクリア       ←――┐
4.Texture1をTexture2に描画     |
5.Texture1をクリア           |
6.Texture2をTexture1に描画 ―――┘
以下3〜6を繰り返す(レンダリングターゲットの変更は省略)

2で描画する画像に半透明の部分がなければどれだけ繰り返しても形は変わりませんが、
アルファ値が255未満の部分があるとそこがだんだん薄くなって、終いには消えてしまいます。
何も描画していない部分は透明のままで、半透明の部分でも何らかの描画がされていれば上記を繰り返しても消えないようにしたいのですが
SetRenderStateでどういう値を入れればいいのでしょうか。(もしくは不可能なのでしょうか)


666 名前:デフォルトの名無しさん :2006/11/02(木) 01:37:47
>>665
何も目的で繰り返し描画してる(だけ?)のか分からないけど、
アルファブレンディングを切ればいいんじゃないかと思う。

全画面をただコピーしてるだけなら、クリアする必要はないなーとも思う。

667 名前:デフォルトの名無しさん :2006/11/02(木) 01:38:35
× 何も
○ 何の

668 名前:デフォルトの名無しさん :2006/11/02(木) 17:41:16
XNA Game Studio Express (Beta 2) 配布開始
http://game10.2ch.net/test/read.cgi/gameama/1162148782/59

669 名前:デフォルトの名無しさん :2006/11/02(木) 21:32:05
>>666-667
ありがとうございます。私の期待してた結果を表示することが出来ました。


670 名前:デフォルトの名無しさん :2006/11/02(木) 23:36:46
勘違いだったらスマソ。

ビルド→実行→デバッグ→ビルド→実行・・・というようなループで
プログラムやってるんですが、
FPSが最初の方は60前後だったんだけど、
今、2時間くらい経ったら46〜50前後になってしまったんだけど、
これって、OS(WinXP)の問題? それとも単純になにかしら
プログラムの組み方の問題?




671 名前:670 :2006/11/02(木) 23:38:38
今、2chにカキコしてから
もう一回実行したらFPSが60前後で安定した・・・。
これってしょぼいグラボ使っていると、
FPSの挙動が安定しない罠ですか?

672 名前:デフォルトの名無しさん :2006/11/03(金) 00:42:23
>>671
ボトルネックがCPU側にあるのか、GPU側にあるのかで状況は変わる。
とりあえずどこでストールしてるか測定しれ。
だがフルスクリーンでやってんじゃないならそんなもんだ。

673 名前:670 :2006/11/03(金) 09:48:10
>>672
レスありがとうっす。

デバッグモードでウィンドウで動かしてます。
そうか、FPSの挙動って安定しないのか・・・。
すげぇ焦ったよ。

674 名前:デフォルトの名無しさん :2006/11/03(金) 10:05:47
>デバッグモードで

おい。

675 名前:670 :2006/11/03(金) 10:15:43
>>674
>おい。
な、なんかまずった?
OTL

676 名前:デフォルトの名無しさん :2006/11/03(金) 10:40:15
正射影について教えてください。
「プログラミングの為の数学と算数」スレより
誘導されてきました。

マウス(2次元)座標をゲーム画面(3次元)の座標に
変換したいんだけれど、
やり方がわからないです。

[やりたいこと]
大航海時代Onlineのように、
「キャタクターの行先(目的地)」を「地面をマウスクリックする」ことにより
指定し、その後、キャラクターが動き出す。

ということをやりたいと考えています。


677 名前:デフォルトの名無しさん :2006/11/03(金) 11:16:49
スクリーン座標(x,y,0)から(x,y,1)へのレイを
ワールドビュープロジェクションの逆変換かまして地形との交点を求むる。


678 名前:676 :2006/11/03(金) 18:44:06
>>677
レスありがとうございます。
677の発言内容を参考に、自分がやりたかったことが載っている
書籍を購入してきました。

これからプログラミングしてみます。

679 名前:デフォルトの名無しさん :2006/11/04(土) 00:33:13
自分にあった本が見つかってよかったな。
頑張れよ。

680 名前:676 :2006/11/04(土) 22:19:07
>>679
ガンガリます。

一応、後からこのスレを見た人のために書籍&情報を晒しておきます。

題名「3DRPGプログラミング」
著者「坂本千尋」
出版社「SoftBankPublishing」
値段「2200円」

参考頁「P112〜P116」
ソースコードのある場所
ttp://www.cmagazine.jp/books/3drpg/

自分のようなDQNが1人でも減るようにと祈りつつ・・・。

681 名前:デフォルトの名無しさん :2006/11/04(土) 22:43:13
>>680
著者で地雷とすぐにわかる俺w

682 名前:680 :2006/11/04(土) 23:38:36
>>681
orz

ある意味地雷かもしれないと気付きはじめている俺がいるw

プログラムのソースコード見てるんだけど、
(自分の実力のなさは棚上げするけど)
コメントが鬼のように少ない。

でも、ないより全然ましなので
すげぇありがたい書籍ではあります。



683 名前:680 :2006/11/05(日) 00:54:24
D3DXIntersect関数について教えてください。
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/directx9_c/directx/graphics/reference/d3dx/functions/mesh/d3dxintersect.asp
(URLはD3DXIntersect関数について)

地形(マップ)との交点を求める上で上記の関数を使おうと考えています。
しかし、地形はテクスチャマッピングで作成しており、第一引数の
LPD3DXBASEMESHに対して変数を代入することができません。
テクスチャマッピングで描画している地形をLPD3DXBASEMESHに
変換する方法などあれば教えていただきたいと考えています。


684 名前:デフォルトの名無しさん :2006/11/05(日) 01:08:50
>>683
D3DXLoadMeshFromXInMemory
これとか???

685 名前:デフォルトの名無しさん :2006/11/05(日) 03:25:44
いきなり3DRPG作りたがる初心者が絶えないな。
最初は2Dで、テトリスとかブロック崩しにでもしたほうが良いんじゃない?

つか>677で回答あるのに何で地形との交差判定に
D3DXIntersectとか使うんだ?いらんだろ。


686 名前:デフォルトの名無しさん :2006/11/05(日) 20:36:58
つーか、まあ、明らかにゲームが作れるほどのプログラムの下積みがあるとも思えないな。
じっくり入門書よんでDirectX初期化して画面にモデル表示してよろこんでればいいレベルだと思う。
つーか、常識的にいきなり作るなんてのがそもそも無理。
まずは、3Dの扱いに慣れろ。数学で遊べ。って感じか?

687 名前:デフォルトの名無しさん :2006/11/05(日) 20:56:11
そのパターンから入ると途中で挫折して終了っていうの9割じゃない?

初心者が3Dでゲームって考えるなら、まずは既存のライブラリを使ってみろ、
って俺は言っておく。

688 名前:デフォルトの名無しさん :2006/11/06(月) 01:37:52
ていうかいっそ仕事にしてしまえと言いたい。
挫折してる暇無いぞ。

689 名前:デフォルトの名無しさん :2006/11/06(月) 03:00:19
得意不得意があるんだから自分にあった事をするべきだと思うよ。
プログラミングなんて優劣の個人差がありすぎるから、苦労に見合った分だけ楽しくなかったりする事もしばしばだし。
スレを見ている限り、はっきり言って向いてないよ。

690 名前:680 :2006/11/06(月) 21:19:23
休日プログラムを組んでいました。
まだ、完成できていません。

たくさんのレスありがとうございます。

みなさんの意見を聞いて身の程を知りました。
個人的には3DRGPのような大それたものを
造るつもる技術もつもりもありません・・・。
みなさんからの厳しいつっこみを受け、
もう少し地に足のついたプログラム&勉強をしたいと思います。






691 名前:デフォルトの名無しさん :2006/11/06(月) 23:43:50
>>686
ポインタすら理解せぬまま特攻して、どうにかなってゲーム作っている自分は常識はずれの存在なのだろうか?

692 名前:デフォルトの名無しさん :2006/11/07(火) 01:47:33
>>691
↑こういうことをいう奴に限って学習できた環境がいい罠。
今は資料は多いけど、教えてくれる奴が少ないからな。
掲示板でレスくれる奴もあきらかに昔よりすくない。
そうするとのびた的質問に解答をくれる奴が少なくて苦労すると思うぞ。

693 名前:デフォルトの名無しさん :2006/11/07(火) 02:39:05
みんなも一緒に死のうよ

694 名前:デフォルトの名無しさん :2006/11/07(火) 02:39:52
>691
別に常識はずれじゃないと思うが。
物事を順に考えられる思考力があれば言語の事前知識なんてなくても問題ない。
色んな言語強要されるPGなら普通。
VBしか分からんって新入でも、勘の良いやつはすぐにCぐらい使えるようになる。

695 名前:デフォルトの名無しさん :2006/11/07(火) 03:15:39
自分に才能があるとは欠片ほども思わないが、プログラミングに向かない人は
本当にとことん向かなかったりするしな。
別段論理的思考に問題なくって、文章書くのも上手なのに、プログラミングはとことん下手って人もいる。
不思議なもんだ。

696 名前:デフォルトの名無しさん :2006/11/07(火) 23:06:40
Cが分からないままC++に入って、難なく習得できた俺はちょっと勘が良いのか。
なんだか自信が持てた。ありがとう。
もちろんmallocなんて分かりません。

697 名前:デフォルトの名無しさん :2006/11/08(水) 00:19:51
>>696
たぶん釣り人なんだとは思うんだが、
Javaから入った人では有り得そうな話。

698 名前:デフォルトの名無しさん :2006/11/08(水) 19:14:32
はじめまして
質問なのですが、Xファイルが表示できるようになって
今度はアニメーションつきのXファイルを表示したいと思っています。
それで、3ds maxでXファイル作りたいんですが、キーフレームアニメーション
をつけても出力してしまうとアニメーションがつきません・・・
うまく出力の仕方が分かる方いましたら、よろしくお願いします。

699 名前:デフォルトの名無しさん :2006/11/08(水) 22:12:52
maxくれ。

700 名前:デフォルトの名無しさん :2006/11/09(木) 00:19:41
アニメーションは厳しいぞ
まあ、中身わかってればコピペでいいけど

Xファイルを再生するスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1006624202/

701 名前:デフォルトの名無しさん :2006/11/09(木) 01:48:28
>>700
>>698 は 3ds max でアニメ付きXファイルの作り方を聞いてるみたい。

激しくスレ違いなんだが、3ds max をくれたら調べなくもない。


702 名前:デフォルトの名無しさん :2006/11/09(木) 05:11:29
俺も3dsmax欲しい。
流体力学研究所が変換作ってなかったっけ?

703 名前:デフォルトの名無しさん :2006/11/09(木) 06:33:50
>>696
お、おまえなぁ・・・
deleteはしてるのか?

704 名前:デフォルトの名無しさん :2006/11/09(木) 23:48:39
無料で使えるgMax

705 名前:デフォルトの名無しさん :2006/11/10(金) 05:54:57
>704
そーいやgMaxってグローバル変数名っぽいな

706 名前:デフォルトの名無しさん :2006/11/10(金) 11:35:59
レイ、gMax発動
レディ

707 名前:デフォルトの名無しさん :2006/11/10(金) 19:28:39
>>700
返事ありがとうございます
やっぱり難しいですよね、アニメーション
でも、やっぱりMAXで出力したファイルにアニメーションがつかないので
それ以前の問題です・・・

708 名前:デフォルトの名無しさん :2006/11/10(金) 20:17:59
いやDirectX付属のプラグインで普通につくだろ

709 名前:デフォルトの名無しさん :2006/11/11(土) 10:22:57
maxなら普通にできないわけないようなきがするんだけどなー
とりあえず取説よめば。


710 名前:デフォルトの名無しさん :2006/11/11(土) 10:29:38
   /⌒ヽ 
  / ´_ゝ`)  ちょっと通りまつよ〜
  |    /    
  | /| |     
  // | |      
 U  .U


711 名前:デフォルトの名無しさん :2006/11/11(土) 22:28:13
取説よめない事情でもあるのか?(`・ω・´)

712 名前:デフォルトの名無しさん :2006/11/11(土) 22:29:16
言いたいことがあるならはっきり言え

713 名前:デフォルトの名無しさん :2006/11/11(土) 23:10:24
それ、コピー品じゃねーの?(`・ω・´)

714 名前:デフォルトの名無しさん :2006/11/12(日) 00:48:54
われず死ね マジ死ね
お前らみたいな屑でお荷物が沢山居るから業界が破綻しかねないんだよ

715 名前:デフォルトの名無しさん :2006/11/13(月) 11:57:31
D3DXIntersectで当たった所のワールド座標x, y, zが欲しいんですけど、

どーしたらいいですか?

716 名前:デフォルトの名無しさん :2006/11/13(月) 13:26:58
>>715
どのポリに当たったのか返ってくるんでロックしてそのポリの座標拾えばいい

717 名前:デフォルトの名無しさん :2006/11/13(月) 21:50:55
DirectInput8で入力制御の実験をしているのですが
キーコンフィグをしようと思ってモードレスダイアログを表示したところ
GetDeviceStateが失敗するようになった(DIERR_NOTACQUIRED)ので
メインウィンドウをアクティブにして見たら、GetDeviceStateが普通に動いてました

DirectInput8はプロセスのメインウィンドウがアクティブじゃないとダメなんでしょうか?

718 名前:デフォルトの名無しさん :2006/11/13(月) 22:08:55
協調レベルは?

719 名前:デフォルトの名無しさん :2006/11/13(月) 22:28:15
>>718
NONEXCLUSIVEのFOREGROUNDでした
協調レベルと言われて、BACKGROUNDというものも有ったのを思い出して変えてみたら失敗しなくなりました
どうも視野狭窄してたようです
ありがとうございました

720 名前:デフォルトの名無しさん :2006/11/14(火) 14:24:14
すいません、質問です。
DirectXのプログラミングを始めてみようと思うのですが、
調べてみたところC++、C#、Delphiこの三つの言語でDirectXの
プログラムができるみたいなんですけど、どの言語が一番良いのでしょうか?
この3つの言語でDirectXのプログラムを組む場合のデメリットとメリット
というのがあれば教えていただきたいです。

721 名前:デフォルトの名無しさん :2006/11/14(火) 14:28:06
それはC++、C#、Delphiの利点欠点を教えろというのであって、このスレの話題であるDirectXはほぼ関係ない。
詳しい回答は期待するな。

722 名前:デフォルトの名無しさん :2006/11/14(火) 14:28:33
C++: 言語がマンドクセ
C#: 環境がマンドクセ
Delphi: メーカーがマンドクセ

723 名前:デフォルトの名無しさん :2006/11/14(火) 16:09:03
>>698
MAXのXファイル関連のプラグインは4つほど知っているんだが、結局どれを使ったかすら書かないんだよな。

724 名前:デフォルトの名無しさん :2006/11/14(火) 16:54:40
>>723
Xporterです

725 名前:デフォルトの名無しさん :2006/11/14(火) 17:07:38
>>720
DirectX勉強したいって、言語も何も分からない状態だよね?
それじゃあ話にならんし、そもそもDirectX勉強してどうするの?
ゲーム?君には無理だからやめとけ。


726 名前:デフォルトの名無しさん :2006/11/14(火) 17:14:26
Cの知識しかないんですが、C++でタイピングソフトを作る事になりました
まず何をやったらいいか分からないのでアドバイス下さい

727 名前:デフォルトの名無しさん :2006/11/14(火) 17:15:35
>>726
C++の勉強をしてください

728 名前:デフォルトの名無しさん :2006/11/14(火) 17:18:23
>>726
作らなければいいと思います。
Cの知識しかなくてC++で作りたいなら、まずやるのはC++を勉強する事だろ。
それすらもしないお前には無理。
そもそもスレ違い。

729 名前:デフォルトの名無しさん :2006/11/14(火) 17:24:36
すいません、C++の本を買って勉強します
それから、ミカタイプ並のタイピングソフトはCだけで作れますか?

730 名前:デフォルトの名無しさん :2006/11/14(火) 17:43:06
>>729
ミカタイプがどんなのか知らんけど、Cの知識があるっていうんだから
作れるかどうかは当然分かるはずだろ。

731 名前:デフォルトの名無しさん :2006/11/14(火) 17:50:40
知識といっても、授業で1年半やった程度です
卒業課題でタイピングソフトを作る事にしたんですが、どうやらスレ違いですね
すみませんでした

732 名前:デフォルトの名無しさん :2006/11/14(火) 17:53:09
タイピングソフトなんてDXつかわんでもできるわい

733 名前:デフォルトの名無しさん :2006/11/14(火) 18:26:29
>>731
その学校何なんだ?
Cを一年半もやってタイピングソフト?
いったい何を学んだんだ…

734 名前:デフォルトの名無しさん :2006/11/14(火) 18:38:54
>>733
いや、課題は俺が勝手に決めただけです
オザワケンみたいなソフトを作りたいと思いまして

735 名前:デフォルトの名無しさん :2006/11/14(火) 19:55:03
>>734
まずはWin32APIに触れるところから。

736 名前:デフォルトの名無しさん :2006/11/14(火) 21:12:06
>>731
ゲームっぽいのが作りたいならスプライトから
勉強するといいぉ

737 名前:デフォルトの名無しさん :2006/11/14(火) 22:34:27
一年半もCをやって>>720の質問をしてるレベルなら
卒業までにタイピングゲーム作るのさえ無謀。
完成出来そうなものに課題変えたほうがいいよ。
煽りじゃなくてまじで。

738 名前:デフォルトの名無しさん :2006/11/14(火) 23:50:22
中学生の頃
誰からも学ばず
1年たたずにテトリス作れた

本も読まずにやってた。
1行ずつ実行して試してた
配列とか後で知った

739 名前:デフォルトの名無しさん :2006/11/15(水) 00:02:25
俺は誰からも学ばずにC++ win32でゲームを造った。
分割コンパイルとか後で知った。

740 名前:デフォルトの名無しさん :2006/11/15(水) 03:36:24
>>739
全部ヘッダとか

741 名前:デフォルトの名無しさん :2006/11/15(水) 06:30:34
DirectInputのフォースフィードバックについて質問です。
パッドタイプのコントローラをただ振動させたいのですが、強さを変えても反映されません。
void refreshFF(){
DICONSTANTFORCE cf;
  cf.lMagnitude = 変更した値;
DIEFFECT eff;
ZeroMemory( &eff, sizeof(eff) );
eff.dwSize = sizeof(DIEFFECT);
eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
eff.cAxes = g_dwNumForceFeedbackAxis;
eff.rglDirection = rglDirection;
eff.lpEnvelope = 0;
eff.cbTypeSpecificParams = sizeof(DICONSTANTFORCE);
eff.lpvTypeSpecificParams = &cf;
eff.dwStartDelay = 0;
g_pEffect->SetParameters( &eff, DIEP_DIRECTION |
DIEP_TYPESPECIFICPARAMS |
DIEP_START );
}
としてプログラム中で変更させているのですが、初期値で振動するだけで反映されません。

ご存知の方教えていただけると助かります。

742 名前:デフォルトの名無しさん :2006/11/15(水) 07:50:43
>>741
FFBはコントローラによって挙動が違うよ

743 名前:デフォルトの名無しさん :2006/11/15(水) 09:11:44
>>740
おれもそんな組み方してた時代があったな・・・。

744 名前:デフォルトの名無しさん :2006/11/15(水) 12:50:58
オレも何も知らない所から、基本的な3Dの本(PC98でワイヤフレームとフラットシェーディング)を見た後に、独自でテクスチャマッピングを編み出したが
素人が良くやる歯抜け状態に…U・V座標から直にスクリーンのX・Y座標に描画していたのだ
仕方ないので描画ドットを適当に大きくしたりして力技でしのいだ
後にX・Y座標からU・V座標を得るという逆の発想でやるという事を知り目から鱗だった

745 名前:デフォルトの名無しさん :2006/11/15(水) 21:06:20
>>740
外部のライブラリを利用してだが、
6年前に製作ゲームで
cpp : 4000行 / h : 3000行 2ファイルのみで構成されたコードがある。

今の俺には書けない。

746 名前:デフォルトの名無しさん :2006/11/15(水) 21:43:58
やり始めた頃はcpp4000行程度の1ファイルでシューティングゲーム作ったな。
もちろん、コードは今見るとめちゃくちゃだしクラスも使ってなかった。
やっぱ皆も始めた頃はそんな感じ?


747 名前:デフォルトの名無しさん :2006/11/15(水) 21:48:16
>>745
惚れた

俺はCPPひとつに.hが数十とかだった。
クラスの実装も定義も別のファイルなんだけど、全部.hでw

748 名前:デフォルトの名無しさん :2006/11/16(木) 00:32:38
自分も最初に作ったシューティングゲームはcpp1つ約14000行の大作だった
もちろん、746の云うとおりクラスなんぞ全くつかっていないし、
サウンドのストリーミング再生なんてこともしらなかったから、ファイルまるごとメモリに読み込ませてたなw
ソースは意外と今でも読めるが、重複している内容がかなり多い

749 名前:デフォルトの名無しさん :2006/11/16(木) 00:45:18
cppを増やすとチームメンバーにソースファイルををプロジェクトに追加してもらわねばならないが
しかしhならパスさえ通しておけばいい。という理由でダミーのcppと無数のヘッダで開発。


750 名前:デフォルトの名無しさん :2006/11/16(木) 00:54:18
みんな何千何万行ってスゲーなあ(;´д`)

俺なんか最初に作ったプログラムは、40バイトくらいの機械語だぜ。
アセンブラなんかないからハンドアセンブル・・・知らんか若いやつには(´Д`lli)ゞ


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.