トップページ⇒tech
1001コメント342KB

【C++】 DirectX初心者質問スレ 【C++】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
DirectXスレは既にあるってのは知っていますが、
初心者が気軽に質問できるような雰囲気じゃないのでスレをたてますた。

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人



【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。


【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさんNGNG
3
0004デフォルトの名無しさんNGNG
■ゲーム系なら……
DirectX総合スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
ゲームプログラミング相談室【Part6】
http://pc5.2ch.net/test/read.cgi/gamedev/1078503950/

■Delphiユーザーはこちら(QD,DelphiXなどのライブラリや非DirectXもOK)
Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
0005デフォルトの名無しさんNGNG
DirectShowでMP3再生のソフトを作ろうとしているのですが、
サンプルみてもぜんぜんわかりません。
どこか解説されているサイトとかはないでしょうか?
0006デフォルトの名無しさんNGNG
無能の>>1==>>5は自分の為だけにこのスレを立てた時空を越えたバカです。

このスレは放置してください。
0007デフォルトの名無しさんNGNG
DirectXを勉強するのに良い書籍はありませんか?
Direct3Dの表示や当たり判定、物理演算などをお願いします
0008デフォルトの名無しさんNGNG
このスレ使わないの?
00091NGNG
tukauyo
0010デフォルトの名無しさんNGNG
>>7
サンプルとかヘルプ読んどけ

>>8
使わないよ

/*******************************************
終了
*******************************************/
0011デフォルトの名無しさんNGNG
>>10
物理演算ないよ
0012デフォルトの名無しさんNGNG
そもそも何の物理演算がしたいんだよ?
目的を言わずに、とにかく計算がしたいと言っているのと同意なんだが、
それすら分からないほど無能なのか?
お前は物理演算と言いたいだけだろ?
0013デフォルトの名無しさんNGNG
なんでいつも高圧的なんだ?
0014デフォルトの名無しさんNGNG
いつも機嫌が悪いから
0015デフォルトの名無しさんNGNG
香具師は生理中じゃねーの?


サンプルもヘルプもたいして訳にたたねー。
それも中途半端でお粗末な物・・・
0016デフォルトの名無しさんNGNG
サンプルやヘルプが悪いのではなく、それを理解できない人間に問題がある。
何でも他人のせいにするのはよくない。
まずは自分が悪いことを認識するべき。
0017デフォルトの名無しさんNGNG
仮に「BMPを表示するだけ」でもそれに辿り着けるまでえらい苦労する。
SDKのヘルプでいけばDirectX Graphicsあたりだろうな。
プログラミングガイドを見れば、関数の使い方とかはわかるが、
そいつをどう繋げていくのかが不明だ。

仮にD3DXCreateTextureFromFileを使うとしよう。
引数は3つしかねーし、バカでもわかるように説明書かれてるわな。
だけど、それをどうやって表示させるん?
関数の説明が載ってても肝心な情報が入ってこないわな。
時間かけて調べてりゃその内わかるけどさ、そんな暇人いるかって。
ググってみてもくだらねー解説サイトしかひっかからんし。

DirectXやる香具師が少ねーのも当然だわな
0018デフォルトの名無しさんNGNG
>>17
VBでもやっていてください
0019デフォルトの名無しさんNGNG
言語の基礎が分かっていないのに、いきなりWindows依存系の処理から始めたり、
Windowsプログラムが分かっていないのに、グラフィック系の処理をしようとしたり、
グラフィック系の処理が分かっていないのに、Direct3Dでなにか処理させようとしたり。

算数が出来ない人間が、いきなり数学の参考書を見ても意味不明なのは当然だろう。
自分にとって妥当なスタートラインが分かっていないのが問題なんだよ。
つまり参考書が悪いわけではない。
0020デフォルトの名無しさんNGNG
ぬぅ・・・折角書いたのにどっかに誤投下したようだ。
0021デフォルトの名無しさんNGNG
>>17
一通り,プログラミングガイドのテクスチャの項を読んだ者なら
サーフェイスへのコピーでそれをより簡単に実現するだろう。

また,「テクスチャはプリミティブに適用するものである」との解説も
読み取れないようであれば,プログラミングガイドを読むための日本語
読解力が欠如しているといえる。

このような者であれば,DirectX以外でも同様の状態に陥るであろう
ことは予想に難くない。
0022デフォルトの名無しさんNGNG
>>21
は言い過ぎだと思う。確かにDirectXはむずい。
Bmp表示はテクスチャの設定、頂点データの定義、プリミティブの表示を理解してないとできない・・・。
Bmp表示くらいのクラス作ってくれたら段階を追って勉強できるのに。

ただDirectX勉強してると「その仕様もしかたがないことなんだ」と気づくはず。
今のPCスペックでは、リアルタイムレンダリングを実現させるにはレンダリングの内部の仕組みをよく理解して
最適化がプログラム側にゆだねられた仕様でないといけない。
DirectXはそういう仕様になっている(そうですよね?)。

>>17を含め初心者はまずレンダリングパイプライン(レンダリングの過程)を理解すればDirectXの理解が早くなると思う。

プログラマならいつも「おまじないコード」を自分のソースに入れとくのはプライドが許さないだろうし。
0023デフォルトの名無しさんNGNG
プライドちゅうかきもちわるいんじゃ
0024デフォルトの名無しさんNGNG
いまだに俺にとって#include <stdio.h>はおまじないですが何か?
0025デフォルトの名無しさんNGNG
スレ違いだったらすみません。
DirectXを使ってソフトを作った場合、DirectXのランタイムを一緒に配布するには
MSの許可が必要なのでしょうか?
0026デフォルトの名無しさんNGNG
>>25

FAQに日本語で書いてあるところぐらいはちゃんと読もうね。
http://www.microsoft.com/japan/msdn/directx/japan/license/dx_license.asp
0027デフォルトの名無しさんNGNG
すみませんでした。
また、親切にURLをご提示頂きましてありがとうございました。
0028デフォルトの名無しさんNGNG
質問があります。
DirectShowで、カメラとマイクからの入力をキャプチャしてAVIで保存しています。
現在、圧縮なしで保存しているのですが、
どうすれば圧縮をかけられるのでしょうか?
0029デフォルトの名無しさんNGNG
まずは初心者と名乗るのをやめることが先決。
次からは挑戦者と名乗れ。
0030デフォルトの名無しさんNGNG
誤爆った。
0031デフォルトの名無しさんNGNG
>>29-30は先行者
0032デフォルトの名無しさんNGNG
亀レスだけど
どうしてヘルプのチュートリアルを
何も考えずに追ってみる
とかやってみないんだろう。

これでDirectXの初期化からポリゴンの描画までいくんだけど・・・。
0033デフォルトの名無しさんNGNG
そもそもピクセルシェーダって何ですか。
0034デフォルトの名無しさんNGNG
ヤダヤダヤダ
DirectXなのにダイレクトに弄れないなんてヤダ
ヤダヤダヤ



 〃∩ _, ,_    /)    〃∩ _, ,_    /)      
⊂⌒( `Д´)ミ( ⌒ヽつ⊂⌒( `Д´)ミ( ⌒ヽつ
 `ヽ._つ⊂ノ⊂( ,∀、)つ.`ヽ._つ⊂ノ⊂( ,∀、)つ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|     ミ
                            |    〃 ∩  。
                            |   ⊂⌒从ヽ从゜o ザバーン
                            | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
                            |       

0035デフォルトの名無しさんNGNG
>32
さらに亀レスだけど、
DirectXで出来ることを理解する前に、
自分がやりたい事だけを知ろうとしているからだろ。
0036挑戦者NGNG
DirectXを始めようと思っている挑戦者です。

<質問>
DirectXSDKをインストールし、DirectXSDKについて解説してあるサイトを参考にパス等を設定した後、
ネット上で見つけたサンプルをコンパイルしようとしてもエラーが出てできません。
コマンドラインオプションは-Wでコンパイルしようとしました。

<エラー内容>
外部シンボル 'Direct3DCreate9' が未解決 (C:\C\DX.OBJが参照)
外部シンボル 'D3DXGetImageInfoFromFileA' が未解決 (C:\C\DX.OBJが参照)
外部シンボル 'D3DXLoadSurfaceFromFileA' が未解決 (C:\C\DX.OBJが参照)

<参考にしたサイト>
環境設定:ttp://goldfly.ld.infoseek.co.jp/program/directx/bcc90b.html
サンプル:ttp://www.geocities.jp/toru_website/sample/index.html#dxg(ここの"2Dの描画"のサンプル)

<開発環境>
BCC5.5
DirectXSDK9.0b
OS:WindowsXP(Home/SPなし)
0037デフォルトの名無しさんNGNG
D3DXMATRIX *WINAPI D3DXMatrixRotationYawPitchRoll( D3DXMATRIX *pOut,
FLOAT Yaw,
FLOAT Pitch,
FLOAT Roll
);

の、yaw(y軸周り)とpitch(x軸周り)が逆になってませんか?

D3DXMatrixRotationYawPitchRoll( pOut, 0, rot.y, 0 ) == D3DXMatrixRotationY( pOut, rot.y)
D3DXMatrixRotationYawPitchRoll( pOut, rot.x, rot.y, rot.z ) == D3DXQuaternionRotationYawPitchRoll( pOut, rot.y, rot.x, rot.z )
になっちゃっているんですけど?

0038デフォルトの名無しさんNGNG
俺 「C++ってなに?」

友人「ちんちんぷらぷら」
003936=挑戦者NGNG
>>37
すいません、確認したいのですがどのファイルか分かりません。
0040デフォルトの名無しさんNGNG
>>38

なんやそれ(w
004137NGNG
すみません。36とは関係ないです。
004236=挑戦者NGNG
>>41
あ、そうだったんですか。
こちらこそすいません。
0043デフォルトの名無しさんNGNG
>36
ttp://www.geocities.jp/toru_website/dxg/1.html
0044デフォルトの名無しさんNGNG
>>36
この辺のライブラリがリンクされてないんでしょ?BCCのリンカは判らんので設定は自力で頑張って。
d3dx9.lib d3d9.lib d3dxof.lib dxguid.lib dxerr9.lib (dsound.lib dinput8.lib 必要ならば)
004536=挑戦者NGNG
>>43-44
ありがとうございます。
リンクされていないようだということでbccのcfgファイル見てみました。

…が、一向に解決しません_| ̄|○
bcc32.cfg、ilink.cfgを確認してみましたが、ちゃんと設定されているようです。
0046デフォルトの名無しさんNGNG
>>45
プロジェクト設定のリンクを開いたら幸せになれるかも。
0047デフォルトの名無しさんNGNG
VisualStudio.NET2003でDirectXアプリを作りたいんですけどプロジェクト作成ウィザードでDirectXアプリが出ません。
ライブラリとして普通のアプリで使えるようになるだけっすか?
0048デフォルトの名無しさんNGNG
DirectXの視野変換で、zの変換が、F = Z far値,N = Z near値として、
z' = z{F/(F - N)} - FN/(F - N)・・・�@
になっているけど、
zを[N,...,F]の区間に正規化したいわけだから、
z' = z*{1/(F - N)} - N/(F - N)
でなぜだめなんでしょう?実際これでちゃんと動いてます。
�@式の分子のFがどっから何の為にでてくるのか判りません。実はz'もw=zで割るんですか?

0049デフォルトの名無しさんNGNG
>>48
z' = (z-N)/w * {F/(F-N)} [0..1]
行列で計算する際は、割る必要があるから。
005048NGNG
ごめん、嘘ついてました。ちゃんと動いてなかった。zバッファリングがおかしくなってた。
005148NGNG
>>49
やっぱそうですね。ありがとう。
005249NGNG
>>51
できるだけ、わからない部分は調べて+αでいろいろ知識増やさないと大変だぞ?あとあと・・・
0053デフォルトの名無しさんNGNG
基本的なことですが
ピクソーシェーダの原理ってどういうものですか
0054デフォルトの名無しさんNGNG
t-potが閉鎖したっぽいんだが・・・詳細キボンヌ
0055デフォルトの名無しさんNGNG
http://if.dynsite.net/t-pot/
0056デフォルトの名無しさんNGNG
>>55
54じゃないけど、おれからもサンクス。
0057デフォルトの名無しさんNGNG
DirectXSDKsummer2004をインストールして、summer2003をアンインストールしたところ、
.NET-[新規作成]-[プロジェクト]のテンプレート選択で、
DirectXアプリケーションの項目がなくなってしまったのですが、
これを復活するにはどうすればいいのでしょうか?。。。

2004をインストールしてから2003をアンインストールしたのが悪かったのかと思い、
2004を一度アンインストールしてから、再インストールしてみましたが、ダメでした・・・。

もう容量きつくても、2003を入れっぱにしとけってことなんでしょうか・・・。
0058デフォルトの名無しさんNGNG
S2004には存在しない。
0059デフォルトの名無しさんNGNG
>>36
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%27Direct3DCreate9%27%E3%80%80%E3%81%8C%E6%9C%AA%E8%A7%A3%E6%B1%BA
>>45
もはや DirectX は関係ない
0060デフォルトの名無しさんNGNG
>>58
そうなんですか、、、。

必要になったとき、容量と折り合いつけて2003入れることにします。

情報ありがとうございました。
0061デフォルトの名無しさんNGNG
2004はサンプルブラウザからインストールしろって事なんだろ
0062デフォルトの名無しさんNGNG
ビルドしたら
「D3DXSPRITE_ALPHABLEND」
「D3DXSPRITE_SORT_TEXTURE」
が定義されていない識別子です、
というエラーが出るのですが、
なにかインクルードとか、
し忘れているのでしょうか?

0063デフォルトの名無しさんNGNG
>>62
d3dx9core.h
006462NGNG
ありがとうございます。
できました。
0065デフォルトの名無しさんNGNG
>>64
∀・) < エクスプローラ(インターネットじゃないほう)でF3を押すとファイルの内容を検索できるぞ。
0066デフォルトの名無しさんNGNG
すみませんが質問です。
http://masafumi-t.cool.ne.jp/d3d05.htm
のサイトを参考にポイントスプライトのを作ってみているんですけど、
カメラをズームさせたり、Z軸移動をさせても、テクスチャが縮小はしますが、拡大してくれません。
なにか足りない設定があるのでしょうか?
0067デフォルトの名無しさんNGNG
>>66
SetRenderStateのD3DRS_POINTSIZE_MAXはどうしてる?
006866NGNG
>>67
64.0fを指定してみましたが、効果ありませんでした・・・
006966NGNG
状況としては、一定のサイズ以上に拡大してくれない状態でして、
Z軸の移動は正常に行われ、カメラより手前に来ればちゃんと消えるようにはなってくれます。
が、遠近での縮小や、サイズ指定の縮小はしてくれるものの、拡大の処理がまったく行われません。
SetRenderStateのD3DRS_POINTSIZE_MAXを指定しても、改善しません。
出来ましたらアドバイスをよろしくお願いします。
orz
0070デフォルトの名無しさんNGNG
>>68
>状況としては、一定のサイズ以上に拡大してくれない状態でして、
その一定の「サイズ以上」ってサイズが実はD3DRS_POINTSIZE_MAXの
サイズだったりしないよな?
007166NGNG
>>70
ためしに1000.0fとかイタズラにでかくしても改善されませんでした。
0072デフォルトの名無しさんNGNG
MaxPointSize とかどうなってんのよ?
007366NGNG
>>72
調べてみたら、64.0fとなっていました。
これを変えるにはどうしたらいいのでしょうか・・・?
0074デフォルトの名無しさんNGNG
>>73
それはグラフィックボードの性能によって違うので
MaxPointSize が 64.0fならそれ以上はそのグラフィック
カードでの出力は不可能。
007566NGNG
>>74
グラフィックカードでは不可能ということは、ソフトウェアでエミュレーションさせれば
出切る可能性もあるということでしょうか?
あるライブラリを使用してポイントスプライトっぽいのを作ろうとしたときは
いくらでもテクスチャーを拡大出来るのですが
007673NGNG
>>75
ちと誤解のある書き方をしてしまったが、

D3DCREATE_HARDWARE_VERTEXPROCESSINGとか
D3DCREATE_SOFTWARE_VERTEXPROCESSING

の問題ではなくD3DDEVTYPE_HALとかD3DDEVTYPE_HALの問題なので
REFデバイスでも64.0fなんで無理。

おとなしく、自前でビルボードで代用した方がよいかも。
007773NGNG
すまん
>>D3DDEVTYPE_HALとかD3DDEVTYPE_HAL
ではなくD3DDEVTYPE_HALとかD3DDEVTYPE_REF
007873NGNG
すまん
>D3DDEVTYPE_HALとかD3DDEVTYPE_HAL
D3DDEVTYPE_HALとかD3DDEVTYPE_REFだ
007966NGNG
>>73
わかりました。
アドバイスありがとうございました。
ビルボードみながら奮闘してみます。
008066NGNG
Σ(゚Д゚;)
>>73ではなく>>74ですね
すみません
008136=挑戦者NGNG
すいません・・・だめです・・・
全部きっちり設定したはずなのに上手くいきません。
インストールしなおしてもう一回やってみたのですが、それでも上手くいきません。

リンクについての指摘が多いので、bcc32.cfgとilink.cfgを載せてみます。

◆bcc32.cfg
-I"c:\DXSDK\Include;c:\Borland\Bcc55\include"
-L"c:\DXSDK\Lib\BLib;c:\Borland\Bcc55\lib"

◆ilink.cfg
-L"c:\DXSDK\Lib\BLib;c:\Borland\Bcc55\lib"

ここが悪いのでしょうか。
0082デフォルトの名無しさんNGNG
DirectX関係ないしw
結局夏厨を隔離しただけじゃねーかw
008336=挑戦者NGNG
>>82
C++スレで聞いたほうがいいですか?
008436=挑戦者NGNG
>>81
Cスレ逝って聞いてきます。
以後>>81はスルーよろしくお願いします。
0085デフォルトの名無しさんNGNG
DirectXのサンプルなんかでよくある、

#define RELEASE(i) if(i){i->Release();i=NULL;}
BOOL EndDirectDraw(void){
RELEASE(lpFront);
RELEASE(lpDD);
return TRUE;
}

これがよく分かりません。
これの一行目が分かりません。
defineということなので何らかの定義をしてるってことは分かるんですが…
どういうことなんでしょうか?
0086デフォルトの名無しさんNGNG
スレ違い。
0087デフォルトの名無しさんNGNG
>>85
普通にメモリを動的に確保すると、どっかで開放しなきゃならん。
これがダルいしワケ♪ワカ♪ラン♪の元になる。
だもんでCOMオブジェクトは、保持するときはAddRef()を、手放すときはRelease()を呼び出す決まりを
作ることでメモリ管理を自動化するようになってる。
で、

第1部完
*>>87先生の次回作にご期待下さい!
0088デフォルトの名無しさんNGNG
こんなスレ作ったところで、>>85のような厨しか沸かない罠
008986NGNG
>>87
ありがとうございます。
何だかよく分からないけど、必要みたいですね。
0090デフォルトの名無しさんNGNG
sampleのdirectplay→lobbyclientの原理を利用して
起動すると自動的に特定のアプリケーション起動してホストになるように
したいんですがどのように手をつけていけばよいでしょうか。

対になるものとして参加側のものもつくりたいです。
さらにはどれらをativeXコントールで行えれば理想です。
0091デフォルトの名無しさんNGNG
それらを
0092デフォルトの名無しさんNGNG
SkinnedMeshのサンプルを参考に勉強中なんですが
ID3DXAllocateHierarchyを継承してクラス作ったんですが(CAllocateHierarchy)
それを宣言するとC2259のエラーがでちゃいます。。。
調べたんですがよくわかりませんでした。

0093デフォルトの名無しさんNGNG
面ごとにSetMaterialでマテリアルを適用する方法がわかりません。
最後に設定したSetMaterialがすべての面に適用されるっぽいんですが、誰かわかる人いませんか?

ちなみにXファイル使わずに、独自形式を読み込んで、
頂点バッファとインデックスバッファに面数×3回ループ掛けて
自前フラットシェーディングでDrawIndexedPrimitiveで描画してます。
0094デフォルトの名無しさんNGNG
>>93
面ごとやりたけりゃ頂点色使えやチョッパリが
0095デフォルトの名無しさんNGNG
>>94
emissiveを使いたいんです。

というかLPD3DXMESHで解決したからいいんですけどね。アハハー
レベル低ッ
0096デフォルトの名無しさんNGNG
>>92
ID3DXAllocateHierarchyの4つのインターフェイスを、
引数や返値の型を含め、きちんと全て継承クラスで実装しているか確認。

>>93
使用したいマテリアルごとに、面(インデックスバッファ)をソートしてまとめて置き、
マテリアルの数だけ、マテリアルセット>DrawIndexedPrimitiveを繰り返す。
0097デフォルトの名無しさんNGNG
BBX専用ブラウザありませんか?
0098ちょうせんしゃNGNG
DirectShowで、2台以上のカメラ映像を同時表示したいんですが。
コールバック関数内で画像の取得とクロスバーの切換やってみたら、カメラ画像が入り乱れて×。
切換直後のフィルタグラフ内のデータ消去とかでけへんかと考えよるけどうまくいかへんよ。
なんか、いい方法ありませんか?
0099デフォルトの名無しさんNGNG
よーく見るとコールバック関数がスレッドセーフになってなかたとか。
0100ちょうせんしゃNGNG
>>99
ありがとうございます。よーく見てみます。
0101デフォルトの名無しさんNGNG
>96

ありがとう。ちゃんと宣言(オブジェクトが作れた)できるようになりました。
特にCreateMeshContainerがサンプルとかwebで出回っているものと違いました。
ほんとにほんとにありがとうございます。
0102挑戦者NGNG
DirectX9を使って2Dのゲームを作りたいと思っているんですが、
解説書か解説サイトってありますか?
0103デフォルトの名無しさんNGNG
error LNK2019: 未解決の外部シンボル _Direct3DCreate8@4 が関数 "long __cdecl InitDX8(void)" (?InitDX8@@YAJXZ) で参照されました。
error LNK2019: 未解決の外部シンボル _D3DXCreateTextureFromFileA@12 が関数 "void __cdecl StartInit(void)" (?StartInit@@YAXXZ) で参照されました。
fatal error LNK1120: 外部参照 2 が未解決です。

というようなエラーがでました
どうすれば治るのでしょうか
ご教授お願いします

0104 ◆Z0vd5w812U NGNG
>>103
d3d8.libとd3dx8.libをリンクライブラリに追加する。
またはソースコードに
#pragma comment(lib, "d3d8.lib")
#pragma comment(lib, "d3dx8.lib")
と記述する。
0105デフォルトの名無しさんNGNG
>>102
DirectX8ならいいとこあるんだけどね
http://rina.jpn.ph/~rance/index.html
0106デフォルトの名無しさんNGNG
>>104
レスありがとうございます
おかげさまで無事解決できました
ほんとうにありがとうございました
0107挑戦者102NGNG
>>105
レスありがとうございます。
自分も探したんですが、DirectX7とかDirectX8は結構あるのですが、
DirectX9はほとんど3Dしか扱っていない所が多くて…
もう少し探してみます
0108デフォルトの名無しさんNGNG
3dしか扱ってないと勘違いしてるだけじゃないの?
0109デフォルトの名無しさんNGNG
direct8と9ってどうちがうの?
0110デフォルトの名無しさんNGNG
>102
スプライトとか使うんだよたしか。
でも2D使いたいんならDirectDraw使えば?
0111デフォルトの名無しさんNGNG
DirectXにスプライト機能など存在しない。
0112 ◆Z0vd5w812U NGNG
>>102
DirectDrawを使うのが楽だと思う。DirectX7機能になるが、DX9環境でも使える。
または、Z=0としたDirect3D環境でガンバル。
0113デフォルトの名無しさんNGNG
>>107
もしよろしければDirectX8で2Dゲームの解説してるところ教えてください
0114挑戦者102NGNG
いろいろ教えてくださって皆様ありがとうございました。
結局解説サイトは
ttp://www.plustarnet.com/aspil/
しか見つかりませんでしたがMSDNでも見ながら頑張ってみます。

>>113
いくつか見かけたのですがブックマークしてなかったので、
分からなくなってしまいました。すいません。
0115デフォルトの名無しさんNGNG
IDirect3DTexture9
ID3DXSprite

2Dしか使わないなら
ドキュメントでこの二つのメンバを見れ
簡単や一日あれば余裕
0116デフォルトの名無しさんNGNG
APIの命令使う方がいいのかダイレクトインプット使う方がいいのか
どっちがいいのでしょうかそれぞれの短所長所を教えてください
0117デフォルトの名無しさんNGNG
VC++.netでdirectxのウインドウモードの時に
ウインドウに文字を表示するにはどんな命令を使えばいいのですか?
0118117NGNG
デバイスコンテキストで表示できました
あと、表示される文字のフォントサイズを小さくするにはどうすればいいのでしょうか?
0119118NGNG
directxと関係ないので他のところで聞いてきます
0120 ◆Z0vd5w812U NGNG
>>116
好きな方を使えばヨイ。
もしキミが学生で将来ゲームプログラマになりたいなどと考えているなら、両方使って違いを体感すべきである。
0121デフォルトの名無しさんNGNG
>>120
趣味でゲーム作りたいなと思っています
directxでゲーム作る限りはダイレクトインプット使いたいんですけど
初期化とか色々めんどくさそうだし、どっちにしようか悩んでます
0122 ◆Z0vd5w812U NGNG
>>121
多分作っていくうちにあれこれしたくなるから、DirectInputを使うのがいいんじゃないかな。
0123デフォルトの名無しさんNGNG
>>122
DirectInput難しそうなんでAPI使うことからはじめようと思います
アドバイスありがとうございました
0124デフォルトの名無しさんNGNG
3Dゲーム中に、例えばメニューウィンドウなどの2Dを表示する時、
縦横50*100の画像があるとして、
これを120*200の矩形範囲内に画像の大きさ&縦横比を変えずに
リピート(縦に2.4枚分、横に2枚分リピート)したいのですが、
こういったことはスプライトではできないでしょうか。
やるとしたら力技で必要な枚数分スプライトを置く(2DRPGのマップように)
しか思いつかないのですが、
スプライト一枚の大きさを変えたりテクスチャを弄ったりで
なんとかできる方法はないものでしょうか。

また、一般的にこういったことをやるにはやはり
板ポリゴンに貼り付けてUV操作をするとか、そんな感じになるんでしょうか。
0125124NGNG
>120*200の矩形範囲内に画像の大きさ&縦横比を変えずに

すいません、これはあくまで例えの大きさでして、
この矩形(ウィンドウ)はマウスドラッグとかで
随時大きさを変えられるようにしたいです。
0126デフォルトの名無しさんNGNG
ID3DXSpriteじゃ無理だと思うよ

UV操作といってもラップテクスチャアドレシングモードで
1.0以上のuvを、右端下端に設定するだけだよ
その例だとそのままu=2.0f、v=2.4f

幅120、高さ200そのままのTLVertexな板ポリを作り、上のuv設定すれば終了
0127デフォルトの名無しさんNGNG
XP .net2003 2004summer

雑誌のソースコードでコンパイルをすると
    ID3DXSprite::Draw : 関数に 7 個のパラメータを指定することはできません。(C2660)
と出てきます。
そのソースの一部が以下のとおり。
    RECT rect={0,0,100,100};
    D3DXVECTOR2 vec2Scale(1.0,1.0);
    D3DXVECTOR2 vec2RotationCenter(1.0,1.0);
    D3DXVECTOR2 vec2Position(270,180);
    pSprite->Draw(pTexture,&rect,&vec2Scale,&vec2RotationCenter,0,&vec2Position,0xffffffff);
    pDevice->EndScene();
検索すると2004summerで変更されたらしいです。
その人は9.0bにバージョンを落としたみたいですが、2004summerで使う場合はDrawのパラメーターをどのように変えればいいのでしょうか。
ヘルプを使っても別のDrawしか出ていないようです・・。
0128デフォルトの名無しさんNGNG
>>127
ttp://www.plustarnet.com/aspil/Programming/ID3DXSprite.htm
0129デフォルトの名無しさんNGNG
>>128
レスありがとうございます。
2004夏から変更と書かれていたので使えるのか半信半疑だけど試してみます(・ω・)
0130デフォルトの名無しさんNGNG
エラーは出なくなったけど画像が表示されない罠orz
改めてありがとうございます。
0131デフォルトの名無しさんNGNG
XSIのデータをコンバートするプログラムで悩んでいます。
SI_TriangleListがSI_Modelの中に複数あったりするので面倒なのです。
個人的にはSI_Modelの括りごとにデータを分けられれば楽なのですが、そういう風にするうまいやり方が思いつきません。
やはり、読み込んだデータは一行一行別々にリスト管理して、それから数値などを取り出していくやり方しかないのでしょうか?
0132124NGNG
>>126
なるほど、やっぱそんな感じですか。
なんとなく見えてきました。ありがとうございました。
0133デフォルトの名無しさんNGNG
directinputでマウスカーソルの座標を知るにはどうすればよいのでしょうか?
0134デフォルトの名無しさんNGNG
>>133
サンプル嫁
0135デフォルトの名無しさんNGNG
3×3の姿勢ベクトルから方位を出したいのですが、方法やどんな関数を使えばいいのでしょうか。

(1,0,0)
(0,1,0)
(0,0,1)  この状態だと方位は0度。

(0,0,1)
(0,1,0)
(-1,0,0)  この状態だと方位は90度。

方法が書いてあったと思われる向氏のサイトが閉鎖されてるし・・
0136デフォルトの名無しさんNGNG
>>135
その行列の行を一本のベクトルと見立てて
ペイントで絵でも描いてみろ。
そうすりゃわかるだろ。
0137デフォルトの名無しさんNGNG
>>136
atan2は使えないし、正確なPIが表示できないので誤差がかなりでる・・
0138137NGNG
↑atn2
0139デフォルトの名無しさんNGNG
?
0140デフォルトの名無しさんNGNG
>>135
ちょっと曖昧
方位を求めたいのか、角度を求めたいのか
「何の」方位を求めたいのか、「どこの」角度を求めたいのか
0141デフォルトの名無しさんNGNG
const float3 x( 1.0f, 0.0f, 0.0f), z( 0.0f, 0.0f, 1.0f);

if( dot( z, m[2] ) >= 0.0f)
return acos( dot( x, m[0]));
else
return 2.0f * pi - acos( dot( x, m[0]));
0142デフォルトの名無しさんNGNG
>>140
方位ってY軸の回転ね。
てか方位で曖昧って言われたの初めて(´・ω・`)

>>141
ありがとうございます。
ちと試してみま〜
0143デフォルトの名無しさんNGNG
>>142
全ての発言が、お前に3Dは無理と感じさせる。
0144デフォルトの名無しさんNGNG
>>142
下を向く(X軸かZ軸が180度回転した)状態で
それでも方位をY軸回転って言うの?
0145デフォルトの名無しさんNGNG
くっ、レス書いてたが教える気が萎えるなw
0146デフォルトの名無しさんNGNG
無理してまで教えなくていいですよ
0147デフォルトの名無しさんNGNG
>>144
釣られているのかも知れんが
相対座標以外にも絶対座標があるのですよ。
おまいは寝転がると自分から地球の中心方向が南でその逆が北になると言うのか
0148デフォルトの名無しさんNGNG
>>147
あのさ、基底ってわかる?
3Dで言うと、ローカル、ワールド、ビュウって基底が違うだろ。
意識的に混同して誤魔化してる?

自分が寝転んだら、自分の絶対座標の基底は逆になるだろ。
それとも3D初心者によくある、全部ワールド座標以外理解出来ない君ですか?
0149デフォルトの名無しさんNGNG
誤魔化してきたぞw
0150デフォルトの名無しさんNGNG
話し終わったのかな?
>>141のを使うと
    error C3861: 'dot': 識別子は、引数依存の照合を使用しても見つかりません。
とエラーが出てきますorz
dotを使えるようにするにはなにかインクルードしないといけないのでしょうか。
0151デフォルトの名無しさんNGNG
>>141
よく見ればバンク角かorz
バンク角とピッチ角は出来てます・・。
変なゴタゴタも起こってますし、とりあえず別のところから作って見ます(´・ω・`)
0152デフォルトの名無しさんNGNG
float3型は通ったんだよね?

つーか内積程度は自前で計算すれば?
0153147NGNG
>>148
人に教えれるほどやっているわけではないので間違ったことを言ってるのを前提に聞いてくれ。
まず基底の意味がそのクラスの元となっているもの(クラスと捕らえているのだがここは合ってるか?
そうすると
>3Dで言うと、ローカル、ワールド、ビュウって基底が違うだろ。
がおかしくなるので違うか。
自分の考えを書くと
> 自分が寝転んだら、自分の絶対座標の基底は逆になるだろ。
X軸{1,0,0} Y軸{0,1,0} Z軸{0,0,1}の基底クラス(地球(重力の反対がY軸ベクトルとする))があって、その派生が人間とする。
その人間が{{1,0,0},{0,0,1},{0,-1,0}}と横になっても、どっから見ようが方位は変わらないと思うのだが。
もちろん人間(派生)のY軸の回転と地球(基底)のY軸回転は違うわけだが。
0154デフォルトの名無しさんNGNG
>>152
出来るかどうか・・・なんとか頑張ってみます。
0155デフォルトの名無しさんNGNG
>>153
ローカルで横になって、ワールドで変化なしでも
ローカルで変化なしで、ワールドで横になっても

見た目は同じだが、ワールドでの姿勢制御行列は違うだろ。

0156デフォルトの名無しさんNGNG
>>153
基底をわかってない。それで語り出すなよ。
人間には人間の基底があって、地球には地球の基底がある。
人間を地球の基底にもって行くのをLocalWorld変換と言うんだろ。

なんだよ…派生って…
0157147NGNG
半端な知識な点について申し訳ない。
>>155
ワールドがメッシュAでローカルがメッシュBとして
メッシュAの中にメッシュBがあると考えていたけど違うか。
メッシュAが姿勢を変えたらメッシュBも姿勢が変わる。
メッシュBが姿勢を変えてもメッシュAは姿勢が変わらない。
>>156
3年前は基底クラスと派生クラスと学んでいたのでそのまま使っているが最近(cpp)は違うのか。
それとも基底の解釈の仕方が違うのかも知れんが。

考え方が色々あるみたいなので当方も頑張って勉強します。
様々なサイトや本を見ながら格ゲーを作ったけどこの考え方で作れたのは奇跡に近いのか・・・
0158デフォルトの名無しさんNGNG
>>157
これ以上、醜態を晒すなよ。

一つのメッシュで、ローカル、ワールド、ビュウと変換していくんだよ。
で、それぞれの座標系で姿勢制御行列は変わるだろ。

基底クラス?それはC++の話。
回転と姿勢制御で基底ってわからないの?
>{{1,0,0},{0,0,1},{0,-1,0}}
とか自分で言ってるじゃん?

>様々なサイトや本を見ながら格ゲーを作ったけどこの考え方で作れたのは奇跡に近いのか・・・
丸写し、サンプルコピペ、D3DXライブラリ等、知識なくとも作れるよ。
作れた == 知識ある
じゃない。

自前実装でもして勉強したら。
0159デフォルトの名無しさんNGNG
>>157
>3年前は
>3年前は
>3年前は

3Dの適正ない…
0160デフォルトの名無しさんNGNG
>考え方が色々あるみたいなので

…なと言えばいいのかな…
貴方の捉え方、理解のしかたをもって
基本的な考えを
>考え方が色々あるみたいなので
と言ってるの?
0161デフォルトの名無しさんNGNG
>>135   もういないかな

向氏のページのぐぐるキャッシュ
http://www.google.co.jp/search?q=cache:6AL2u5uKMeYJ:member.nifty.ne.jp/Mukai/3d.htm+%E5%9B%9E%E8%BB%A2%E3%80%80%E3%82%AF%E3%82%AA%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3&hl=ja
0162147NGNG
>>158
半端な知識と書いてある通り知識があるわけでないしそもそも基底の意味が分からん。
Javaで少し出てきたけどcppでは今のところ出てきていない。
DXでの自分の考えでは
基となるのが大きなメッシュ その中に小さなメッシュ
小さなメッシュにXファイルをいれて大きなメッシュから見た座標と姿勢を指定する。(3x3の行列)
カメラも大きなメッシュの中にあってこれも同じく座標と姿勢を指定する。(Zベクトルが視点)
人などの小さなメッシュは大きなメッシュを基にして動くのでみんなバラバラに動くことができる。
大きなメッシュが動くとその中にある全ての小さなメッシュ(カメラ)も動く。
大きなメッシュが180度回転しようが大きなメッシュを基にしているので
小さなメッシュやカメラも一緒に動く・・・結果中身に何も変化なし。
つまり大きなメッシュを動かしても小さなメッシュと東西南北などの方位は変わらないのでは。

>>160
本に書いてあることがバラバラでどれが基本なのかわからない。
なので自分にとって分かりやすい考え方を自分の基本にしている。
英単語を覚えるのは基本的に何度も読み書きをするだけど
無理やりローマ字読みしたり睡眠中に流して覚えると言うものそれが自分に合ってればその人の基本かと。
基本は違えど結果は同じわけだし。
0163デフォルトの名無しさんNGNG
フレームとメッシュが滅茶苦茶に混同されている。
しかもメッシュの中にXファイルっていったい…。
0164デフォルトの名無しさんNGNG
>>147
お前、キモイんだよ、間違った自分の考えをダラダラと。

基底とは数学の話だよ。なんだよJavaって。
でモロに、ワールドでの話でしかないだろ、下らない例をグダグダと。

>本に書いてあることがバラバラでどれが基本なのかわからない。
>なので自分にとって分かりやすい考え方を自分の基本にしている。
数学的な物は、バラバラなわけないだろ。
で今は、モロに3Dの数学的な姿勢制御と座標系の話をグダグダ述べてんだろ、お前。

基本が同じって自前で実装してるなら通じるが
ライブラリやサンプルコピペしてるような奴は、基本が同じなど
おこがましい。
0165デフォルトの名無しさんNGNG
とりあえず餅つけ
0166147NGNG
>>163
ご免、素で変なこと書いてた。
大きなメッシュ→大きなフレーム(親)
小さなメッシュ→小さなフレーム(子)
>しかもメッシュの中にXファイルっていったい…。
箱の中にポリゴンを入れているイメージが載っていたのでそういう形で覚えてました。
(大きな箱を動かしたら小さな箱も一緒に動く 等)
変だろうけど勘弁してください。

>>164
数学の基底、学校で習うわけでもないし今まで必要じゃなかったので
回転と姿勢制御で基底ってわからないの?
分からないと言うよりも知らないの方が正しいです。
0167デフォルトの名無しさんNGNG
>>147
何を言い分けしても、お前の3Dの基本はグダグダ。
ワールド座標系しか理解出来ない奴は、ワールド座標系でしか物事考えられんって奴だ。
基底座標の変換と、同じ基底内の回転、平行移動、スケールが混同されすぎってか
理解も出来てない。
それで、語ってりゃ世話ない。

偉大だよな、DirectXって。
こんなイカレ野郎でも3Dやってる気にさせちゃうんだから。
0168デフォルトの名無しさんNGNG
モーフィングしたいのですがどうすればよいでしょうか?

モーフィングという言葉が不適切かもしれませんがメッシュAをメッシュBへ変形させたいのです
顔A、顔Bと用意しておいて顔Aから顔Bへ徐々に変形していくことで表情を変えたりしたいです
0169デフォルトの名無しさんNGNG
頂点とIndex(あるなら)を対応したモデルが前提で
各頂点をモーフィングの度合いで線形補間して表示すれば良いだけじゃん。
0170デフォルトの名無しさんNGNG
頂点データについて質問です。

3Dの頂点宣言に、D3DFVFを使って行う方法は分かったのですが、

3Dの頂点宣言に、D3DVERTEXELEMENTを使いたいときには
どのように指定したらいいのでしょうか?


D3DFVFを使用したときには、
float x, y, z, rhw; → float x, y, z;
のように、float型3つになっていたので、

D3DDECLTYPE_FLOAT4 の代わりに D3DDECLTYPE_FLOAT3 を
使ったりしてみましたが、無理でした・・・。


また重ねて質問なんですが、
D3DVERTEXELEMENT での頂点宣言を使う利点って何なんでしょうか?
0171170NGNG
「2Dの頂点宣言を、3Dの頂点宣言にする際に」を

>D3DFVFを使用したときには、
>float x, y, z, rhw; → float x, y, z;
>のように、float型3つになっていたので、

の前に追加願います・・・。
スレ汚しスイマセン。
0172デフォルトの名無しさんNGNG
>>169
DirectXにそういう機能は無いってことですか?
0173デフォルトの名無しさんNGNG
>>170
全然要領を得ない。
何言ってるの理解不能。
頂点型とD3DVERTEXELEMENT型の宣言を見せてみ?

>>172
頂点バッファの値も取得出来るし、書き換えも出来る。
だからスキニング等のアニメーションが出来るんでしょ?
まさか、D3DX系関数で関数呼べばやってくれるとかじゃないよな?
0174170NGNG
>>173
レスサンクスです。なんか自分、相当勘違いしてるみたいですね・・・。
それぞれ、

struct CUSTOMVERTEX
{
 float x, y, z;
 DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE)

D3DVERTEXELEMENT9 VertexDeclaration[] =
{
 { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
 { 0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0 },
 D3DDECL_END()
};

って感じです。
下のD3DVERTEXELEMENT型を3Dのポリゴンに使いたいのですが。
0175デフォルトの名無しさんNGNG
>>174
別にオカシイと思える所はなさげだけど?

もしかして2Dを3Dにとか言ってるって事は、
プロジェクション変換してないとか?
0176デフォルトの名無しさんNGNG
>>175
プロジェクション変換については、
spinの
ttp://spin.s2c.ne.jp/stoday/stoday04.html
のページを参考にしていて、
ClipVolumeサンプルを元に作成してるので、大丈夫だと思うのですが・・・。

元は、
D3DVERTEXELEMENT9 VertexDeclaration[] =
{
 // 2Dの頂点位置
 { 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 },
 // 頂点の色
 { 0, 16, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0 },
 // 終了の印
 D3DDECL_END()
};
という指定だったのですが、この指定から>>174の指定にした場合、
他にどのような部分を変更しなければいけないのでしょうか?
0177170NGNG
スイマセン・・・、どうやら見えない位置に
しっかり表示されていました・・・orz
お手数とってしまってホント申し訳ない・・・・。
スレ汚しスイマセンでした・・・。
0178デフォルトの名無しさんNGNG
MeshとPMeshってどう違うのですか?
0179デフォルトの名無しさんNGNG
P
0180デフォルトの名無しさんNGNG
DrawIndexedPrimitiveの間の4つの引数について教えて下さい。
今もなんとなくは使えてるのですが…。

//ヘルプの引用
HRESULT DrawIndexedPrimitive(
 D3DPRIMITIVETYPE Type, //これはOK
 INT BaseVertexIndex, //インデックスバッファの開始地点から最初の頂点インデックスまでのオフセット
 UINT MinIndex, //この呼び出しの間に使用される頂点群に対する最小の頂点インデックス
 UINT NumVertices, //この呼び出しで使用される頂点の数 (BaseVertexIndex + MinIndex から始まる)。
 UINT StartIndex, //インデックス配列の中で頂点の読み取りを開始する位置
 UINT PrimitiveCount //これもOK
);

IndexBuffer配列
[0][1][2][1][2][3][3][5][4][4][6][8][9][6][5][4][5][7][4][5]

駄目人間>>180の考え
BaseVertexIndex 最初の頂点インデックスって何の最初だろ…描画したい範囲の最初だろうか…
MinIndex IB配列に入ってる0〜9の値のうち、最小の値である0という事?
NumVertices 使う頂点は0〜9だし10個?でもBaseVertexIndex + MinIndexとか言ってるし…
StartIndex BaseVertexIndexとは違うのだろうか…
0181デフォルトの名無しさんNGNG
>>180
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=DrawIndexedPrimitive&lr=lang_ja
0182デフォルトの名無しさんNGNG
2Dスプライトの表示と移動を行うソースなんですが
エラー原因特定が掴めない。あと、ファイルのまとめ方とか
プログラムの書き方とかも自信無いのでアドバイスを頂けたら光栄なんですが。駄目元で、ソース置いときます。。。

ちなみにエラー有りそうな所はsprite.hとDXInput.hが有力で
次にDXHeader.hが有りそう。

http://sterdust.net/upload/upload.cgi?page=Download&dir=&sort=date&filename=VSHTest.zip
0183182NGNG
バグとれました。(冷やし中華始めました風)
ソース見て下さった人ありがとう。(いたかどうか分かりませんが)
0184デフォルトの名無しさんNGNG
SDKに付いているd3dappを使って組むのと
1から組むのどっちがいいと思いますか?

まぁたいした量じゃないけど、、、めんどくさい
0185デフォルトの名無しさんNGNG
その程度を面倒くさいという理由でやろうとしない人間は、
結局何も作れないで終わるだけ。
0186デフォルトの名無しさんNGNG
>185
すみません
僕が甘かったようです

ちょっと調べて思ったんですが
ネット上の情報ってなんでエフェクト処理ばかりなんだろう。。。
ゲームにはそんな重要ではないと思うが
0187デフォルトの名無しさんNGNG
xファイルを読み込んでDrawSubsetで描画する、というのを
ネットで適当にサンプルを拾ってきてそれをコピペしてやってみたのですが、
なぜか所々ポリゴンが抜け落ちたようになります
(3角形の穴が開いたように、裏側というか内側?が見えたりする)
また、メッシュのx座標を変化させても抜け落ちるポリゴンは変わらないのですが、
z座標を変化させると別のポリゴンがかけたりします
こうなる原因として、何が考えられるでしょう?

バージョンはDirectX9で、開発環境はVC++.netです
0188デフォルトの名無しさんNGNG
>>187
背面カリングをしない設定だとちゃんと描画されるのか?
0189デフォルトの名無しさん NGNG
LINK : fatal error LNK1181: 入力ファイル "dinput8.lib" を開けません

ビルドするとこんな↑エラーが出るのですが、どうすればいいのですか?
0190デフォルトの名無しさんNGNG
ここはDirectXの初心者スレだ

開発環境C/C++の初心者スレではない
0191デフォルトの名無しさんNGNG
Windowsをぶっこぬくほうほうを教えてください
0192デフォルトの名無しさんNGNG
どうすれば、テクスチャ上の文字列をきれいにそのまま表示できますか?
テクスチャは拡大も縮小もせず(Worldで256x256なら、Screen上でも256x256で表示)、
傾き0で表示していますが、ノイズが入ることがあります。
0193デフォルトの名無しさんNGNG
スプライトって飲むとシュワシュワしますか。
0194192NGNG
うーん、スプライトではなくてテクスチャで何とかしたいのですが。。。
0195デフォルトの名無しさんNGNG
トランスフォーム済みで0.5ずらすだけ。
0196デフォルトの名無しさんNGNG
>>180
DrawIndexedPrimitive
IDirect3DDevice9::SetIndices を繰り返し呼び出すことなく、
同じインデックス バッファで複数のプリミティブをバッチ処理できるように、
IDirect3DDevice9::DrawIndexedPrimitive が変更された。

とあるから、それぞれの意味はなんとなくわかるよね?
0197187NGNG
>>188
背面カリングをしない状態でも、同じのようです

よく見ると>>187で書いたのと少し違うようで(スイマセン...
背面は描画されないのですが、
たとえば球の前に立方体を置いて、立方体の方向から
球が立方体の影になるようにして球を見ると、
球のポリゴンがチラつくように立方体を通して表示されます
(球と立方体でひとつのメッシュです)

わかりにくいと思いますが、よろしくお願いします
0198デフォルトの名無しさんNGNG
射影の遠近設定が不適切で、Zバッファの精度が足りなくなっているのでは?
0199187NGNG
>>198
まだ安定してませんがどうやらその辺りのようです
ありがとうございました
0200デフォルトの名無しさんNGNG
>>180
一応それっぽい意味を。
BaseVertexIndex
ヘルプの説明がわかりにく。とりあえずこれは頂点バッファの
先頭からのオフセット。
1を設定すると頂点1個分sizeof(CUSTOMVERTEX)分進む。(複数オブジェクトをまとめる時にでも)
MinIndex
最小のインデックス番号?なのかな。基本的になに設定しても動作はかわらんかった記憶が・・・
なんか内部で最適化されるとかいってるからとりあえず0に。最適化なのかなんなのかしらないけど
そこまでデータの割り振りを手元に用意するのはめんどいなと。
NumVerticesは単にレンダリングに使用する頂点数。
StartIndex、これはインデックスバッファのインデックスオフセット。これをずらして作業することって
あまりなさそうだけど{0,1,2,3,4,5,6}のインデックスにたいして1をセットすれば
内部で{1,2,3,4,5,6}になる。PrimitiveCountとの整合性は保たないとあれかね。
まぁ部分的に間違ってるヤカン
0201180NGNG
>>196 >>200
(*゚Д゚*)!

いや正直未だに分からず放置してたんです。
な、なるほど!インデックスバッファをまとまり毎に処理するためのものに加え、
頂点バッファもまとまり毎に処理が可能に出来てるんですね。

IKのためにオブジェクト毎に持っていた頂点バッファを、ひとつにまとめて
変更を少なくしたり出来ちゃうわけですか。これは便利だ…。
いや目が覚める思いです。まことにありがとうございました!
0202デフォルトの名無しさんNGNG
バッファはあればあるほどよい

この親父が権威。
ttp://www.jca.apc.org/~maki_t/waseda2-82.jpg
0203デフォルトの名無しさんNGNG
あまり面白くないね。
0204デフォルトの名無しさんNGNG
ATL/WTLと一緒に使うサンプルなんかありませんかね?
0205デフォルトの名無しさんNGNG
ウィンドウに描画されているものを、そのまま引き伸ばすにはどうすればいいんでしょう?
(ウィンドウサイズが自由に変更できて、そのサイズに合わせて表示されるようにしたいのです)
0206デフォルトの名無しさんNGNG
描画先のサイズを指定するだけ。
0207デフォルトの名無しさんNGNG
>>205
チュートリアルぐらいみようじぇー

Presentのあたりを
0208205NGNG
Thanks!!
0209デフォルトの名無しさんNGNG
.pic形式のファイルをLPDIRECT3DTEXTURE9型で扱えるように読み込んでくれる関数ってないですか?
0210デフォルトの名無しさんNGNG
fopenとか。
読み込んだらテクスチャのフォーマットに変換すれば完了。
0211デフォルトの名無しさんNGNG
GDI使ってサーフェスに直線を描きたいんですが
WM_PAINTの中でコードを書いてInvalidateRectしないと駄目ですか?
InvalidateRectは画面がちらつくからできれば使いたくないんです。
0212デフォルトの名無しさんNGNG
バックグラウンドサーフェイスに描くのなら、別にちらつきなど関係ないが?
0213211NGNG
いえ、peekmessageループの中でバックグラウンドサーフェスに描いてみても
なぜか描画されないんです。
WM_PAINTの中でバックグラウンドサーフェスに描いてInvalidateRectすれば
ちらつきながらも描画されました。
0214デフォルトの名無しさんNGNG
どこのDCに描いているか記せ。
0215211NGNG
HDC hdc
oss(オフスクリーンサーフェス)->GetDC(&hdc)
こんな感じです。
0216デフォルトの名無しさんNGNG
GdiFlushしてる?
0217デフォルトの名無しさんNGNG
WM_PAINTの中で
BeginPaint->Blt(hdc,...oss,...);->EndPaint
他は好きなところでossに書けばいいだけじゃ?
0218デフォルトの名無しさんNGNG
いつのまにかMSのサイトからDirectX7.0日本語のヘルプファイルが消されてしまいました。
DirectDrawだけ使いたいのに困ってしまう。
googleで探しても見つからない。どこかにミラーしてありませんでしょうか。
0219デフォルトの名無しさんNGNG
>>213
InvalidateRectの3つめの引数の
TRUEとFALSEを入れ替えてみろ。
0220デフォルトの名無しさんNGNG
すんません、助けてください。
DirectXではポリゴンアニメフォーマットとして
Xファイルが対応している事は解るのですが、
そのXファイル作成方法がどーしてもわかりません。

LW7.5でアニメーション作成してLWS2X.exeでxファイルに
変換しようとしたのですが、Ver7.5には対応しておらず、
オブジェクトと共にVer5として出力して変換させると
Xファイルに変換はするのですが、まったくアニメーションしません。

途方にくれて2週間・・・・どうかヒントだけでも教えてくださいませ。
_| ̄|○
0221デフォルトの名無しさんNGNG
別にDirectXがXファイルに対応しているわけではない。
0222デフォルトの名無しさんNGNG
>>220
割れでも使ってるのか?
LW7.5用のXfileエクスポータープラグインは無料でD-STROMのサイトでDL出来るが…
0223220NGNG
無事解決できました。
感謝いたします。
m(_ _)m
0224デフォルトの名無しさんNGNG
アセンボラって
覚えたほうふあいいですか。
0225デフォルトの名無しさんNGNG
>>224
何がしたいかによる
以上
0226デフォルトの名無しさんNGNG
3Dグラフィコにはアセンブラ必須だろ

MFC使ってノホホンと組んで
「別に遅くなってもいーや」とか
ハナクソほじりながら言える分野じゃない
0227デフォルトの名無しさんNGNG
必須じゃねーよタコ。シェーダ以外でアセンブラを使ってる方が稀だ。
0228デフォルトの名無しさんNGNG
レベルによるだろ。理解出来ない、気が付かない奴は知らないだろ。

例えばD3DX系の関数は内部でSSEで最適化されているとか。
行列x行列なんてモロにアセンブラでオプティマイズ必須だろ。
自分で行列型なりクラスなり作っても、一番簡単な高速化はアセンブラだし。

演算子オーバーロードして
matrix = matrix * matrix;
なんて速度を意識してない奴だけ、
そりゃアセンブラなんて必須じゃないし、何故必要かも理解も出来ないレベルだろうね。
0229デフォルトの名無しさんNGNG
行列*行列は頂点*行列に比べると圧倒的に数が少なく、
全体に与える影響など極微量なのだが、
それが理解できていない奴がこういう勘違い発言をしてしまう。
0230デフォルトの名無しさんNGNG
ま、少なくとも日本のゲームには無いな
0231デフォルトの名無しさんNGNG
このスレには日本で発売されたゲーム全てのソースを、
一つ残らず見たお方がいます。
0232デフォルトの名無しさんNGNG
それで全部書けりゃ一番いいことは間違いないわけだ

実際DX8までは全員これでなきゃシェーダ書けなかったわけだし
シェーダに限らずアセンブラで全部できればそれが一番いい
0233デフォルトの名無しさんNGNG
>>229
スゲー頭悪いね…
アセンブラを使うってのは頂点*行列でも同じ意味だろ?

行列*行列はアセンブラ使って
頂点*行列は使わないってか?
0234デフォルトの名無しさんNGNG
>頂点*行列は使わないってか?
Direct3Dでまともにプログラムを作ったことがない人間だということが、
この発言で証明されてしまったわけだが
0235デフォルトの名無しさんNGNG
>>233はきっとDirectXには頼らず、自前でソフトウェアレンダラを作ったのですよ。
0236デフォルトの名無しさんNGNG
算術ライブラリ程度作った事があれば、
オペレーター演算子計算の中身と、関数化した違いは分るだろ。

D3DX系のクラスのヘッダーは見れる訳だし、
HELPにもD3DX算術計算は内部でSSEに最適化した処理を持っていると(アライメントした型を使うが)
記述されている。
0237デフォルトの名無しさんNGNG
つまんねーよオマエラ
もっとマシな話をしろや
0238デフォルトの名無しさんNGNG
>>234
国語の力を身に付けてください。

>行列*行列はアセンブラ使って
>頂点*行列は使わないってか?

>>頂点*行列は使わないってか?
>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>この発言で証明されてしまったわけだが

頂点*行列にかかってくる使わないかどうかの物は、アセンブラであって
頂点*行列自体を使うかどうかではありません。



0239デフォルトの名無しさんNGNG
>>234
>>頂点*行列は使わないってか?
>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>この発言で証明されてしまったわけだが

D3DX使わないと、まともにDirect3Dでプログラム組めない人間だということが、
この発言で証明されてしまったわけだが

0240デフォルトの名無しさんNGNG


行列*行列は(では)アセンブラ使って
頂点*行列は(では)(アセンブラを)使わないってか?


0241デフォルトの名無しさんNGNG
>>238
>行列*行列は頂点*行列に比べると圧倒的に数が少なく、
最も計算量の多い頂点*行列はDirectXを使う限り、そちら側で行われる。
アセンブラで最適化する余地はほとんど残されていない。
にもかかわらずその反論が、
>行列*行列はアセンブラ使って
>頂点*行列は使わないってか?
恥の上塗りはみっともない。

さらに致命的な墓穴、
>>>頂点*行列は使わないってか?
>>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>>この発言で証明されてしまったわけだが
>D3DX使わないと、まともにDirect3Dでプログラム組めない人間だということが、
なぜそこでD3Dではなく、D3DXになるのか。
頂点*行列をDirectXに任せるのであれば、少ない例外を除けばD3DXの介入余地はない。

プログラムを組んだことが無いどころか、全然DirectXを理解していないだろう?
0242デフォルトの名無しさんNGNG
>>241
D3DXはDirect3Dとは別物。
vectorクラスやmatrixクラスの演算子のオーバーロードによる計算は
あくまでクラスの実装。

>頂点*行列をDirectXに任せるのであれば
お前が全く理解してない。

0243デフォルトの名無しさんNGNG
特定の最適化を馬鹿の一つ覚えで連呼する奴は、
最適化した部分のみで計測する偏ったベンチマーク結果は出すが、
それを組み込んだ場合に、システム全体がどの程度高速化するのかは全く考えない。
実際にやってみると、誤差程度に1FPS増えたような差しか出なかったりするわけだが、
それをひた隠しにするか、それ以前にそういう実験すらしない。
0244デフォルトの名無しさんNGNG
>>241
D3Dには算術系の処理なんてありませんよ??
0245デフォルトの名無しさんNGNG
>>243
>特定の最適化
と・く・て・い
なんだから
さらっとやっとけ。
0246デフォルトの名無しさんNGNG
>>241
どっちにも与す気はないが、234は確かに読解力無いよ

D3DXMATRIXのmatrix * matrixは、最適化されてないのかね
0247デフォルトの名無しさんNGNG
>>244
トランスフォーム済みにでもしない限り、
D3D側がHALやソフトエミュで頂点*行列を行うわけだが。
0248デフォルトの名無しさんNGNG
>>246
241様はD3DX使わずに、
D3Dの方で
vector * matrix が出来ると発言なさってます。
0249デフォルトの名無しさんNGNG
つまりD3D側で頂点*行列が出来ないと思っていたわけか。
ならアセンブラアセンブラと連呼するのも納得がいった。
元から何も分かってないだけじゃん。
0250デフォルトの名無しさんNGNG
>>247
ハードウェアT&Lと激しく混同なさってますyo...
0251デフォルトの名無しさんNGNG
>>249
ハードウェアT&Lと激しく混同なさってますyo...
0252デフォルトの名無しさんNGNG
アセンボラ
0253デフォルトの名無しさんNGNG
ハードウェアT&Lの機能をさして
そのソフトエミュをさして

D3Dで
Vector * Matrix が出来るか…
スゲーな。
0254デフォルトの名無しさんNGNG
>>247
>>249

わたくしめの、
スキニングアニメーションのプログラムで
vector * matrix
をD3Dがやってくるようにしたいのですが

何か指定の方法があるのでしょうか?
D3Dの関数が用意されているのでしょうか?
D3Dのクラスが用意されているのでしょうか?
0255デフォルトの名無しさんNGNG
おれが249だったら絶対に正体を知られたくないw
0256デフォルトの名無しさんNGNG
>>254
固定処理なら頂点にウエイトを設定して、
必要な行列をセットしてレンダリングするだけだが?
0257デフォルトの名無しさんNGNG
>>256
それだとグラボ(GUP)で処理されてしまいます。
D3Dにやらせたいのです。
0258デフォルトの名無しさんNGNG
>>256
レンダリング以外の処理は?
0259デフォルトの名無しさんNGNG
>>257
つまりドライバ側に投げる処理は、D3Dではないと言いたいわけか?
0260デフォルトの名無しさんNGNG
>>259
つまりSetTransformの処理を、vector * matrixと言いたいわけか?
0261デフォルトの名無しさんNGNG
>>259
普通投げた時点で、計算はしてないってなるだろw
計算から処理に言葉を変えるなよw
0262デフォルトの名無しさんNGNG
ドライバ側が行う処理がDirectXの仕事ではないとすると、
例えばDirectDrawでVRAM上の画像のブロック転送を行ったときも、
それがビデオカード側で処理されれば、
DirectDrawの機能ではないという屁理屈をこねたいのだろうか?

>>260
>つまりSetTransformの処理を、vector * matrixと言いたいわけか?
そこでは値を設定しているだけというのは置いておくとして、
その後に実際に演算が行われるときは、頂点*行列が行われている。
0263デフォルトの名無しさんNGNG
>>262
お前はハードウェアT&Lの機能を
vector * matrixとか言ってD3Dだとほざいてるわけか?

プログラマが任意にvector * matrix使いたい場合は
どうすんるんだ?
0264デフォルトの名無しさんNGNG
>>262
お前の理屈でドライバの処理がD3Dなら
ドライバに命令するプログラムで使用した
VECTORやらMATRIXのクラスなり構造体が
D3DXだとD3DXの処理だ、とはならんのか?
0265デフォルトの名無しさんNGNG
算術計算の話をしている中で

>そこでは値を設定しているだけというのは置いておくとして、

置いておけないだろ…
0266デフォルトの名無しさんNGNG
HW-TnLでもシェーダでもソフトエミュでも、
それ以上ユーザが低いレベルで使えるAPIが存在しない以上、
D3D内のインタフェイス上から実行されているのならD3Dの機能。
そもそもドライバ側がD3Dの機能の一部として使えるように書かれている。

>プログラマが任意にvector * matrix使いたい場合は
それは自前で計算する以外にはない。
割合的には多くないが、最適化したいのなら、アセンブラでも何でも使えばいい。
ただし少ない部分を最適化しても、全体のパフォーマンスが上がる可能性は薄い。

逆に質問するが、処理負荷の中心である、
頂点*行列のほとんどはD3D側で行うことになるわけだが、
これをどうやってアセンブラに置き換えるのか?
0267デフォルトの名無しさんNGNG
>>262
ぼくのPCのグラフィックカードのドライバはnVidiaの物です。
学校のPCのはオンボードです。
ともだちのPCはATIのグラフィックカードのドライバです。

世の中に色んなDirectXがあるんですね。

…つーかCOMでも勉強しろや
0268デフォルトの名無しさんNGNG
>>265
いちいち突っ込んでいるときりがないのだが。
「投入されたジョブが実行されるときだろ」
とか言っておけばいいのだろうか?
0269デフォルトの名無しさんNGNG
>>267
YOUの判定負け、これ以上醜態をさらすこともなし
0270デフォルトの名無しさんNGNG
>頂点*行列のほとんどはD3D側で行うことになるわけだが、
いや、いや、いや、いや、
お前のアホアフォな前提を完全肯定して話を進めるな
0271デフォルトの名無しさんNGNG
>>267
HDDにも色々あるけど、ファイルの入出力はOSの機能とは言えないと?
HDDの種類だけOSがあることになるが。
0272デフォルトの名無しさんNGNG
>>266
俺は、家でも、会社でも
SetTransformはワールドの制御のみで
ローカルやアニメーション処理は自前で計算してる、若しくはD3DX使う。
0273デフォルトの名無しさんNGNG
>>270
頂点*行列というと意味がぼやける。
要は頂点トランスフォームは、D3D側かアプリ側
どっちが担当するんだってことだな。
0274デフォルトの名無しさんNGNG
>>272
なぜ?
0275デフォルトの名無しさんNGNG
各社のグラボドライバが様々あるのに
DirectXと言う物で制御出切るのは
COMと言う、DirectXではない技術を使っているから

これまでの理屈だと、COMが処理してるってならないの?
0276デフォルトの名無しさんNGNG
>>275
国≒COM
日本≒DirectX
0277デフォルトの名無しさんNGNG
結局負荷の高い処理がアセンブラ化出来ない隠蔽されたところに存在するわけだが
アセンブラ化の目的ってパフォーマンスを上げることじゃないの?
0278デフォルトの名無しさんNGNG
>>273
頂点トランスフォーム
と
vector * matrix
は、全く意味が違うだろ。
0279デフォルトの名無しさんNGNG
>>278
いや同じだが、何をもって違うと言いたいのだろう?
0280デフォルトの名無しさんNGNG
>>279
はぁ?
算術処理と頂点トランスフォームが同じ?

何かい?DirectX使いには
vector * matrixと言う物は
ハードウェアT&Lでの頂点トランスフォームだとなるわけ?
0281デフォルトの名無しさんNGNG
>>279
君さ、数学得意じゃなかったでしょ
0282デフォルトの名無しさんNGNG
>ハードウェアT&L
過去の遺物のこれにこだわる理由はよく分からないが、
投入されたデータから頂点*行列の演算しないことには正常に描画出来ないんだが。
それとも頂点*行列は行われていないと?
0283デフォルトの名無しさんNGNG
vector * matrix
これが描画の為の頂点計算のみだと
盲目的に考える馬鹿がいる
0284デフォルトの名無しさんNGNG
>>283
もう無理しなくてもいいよ。
0285デフォルトの名無しさんNGNG
>>282
>>ハードウェアT&L
>過去の遺物のこれにこだわる理由はよく分からないが、
>投入されたデータから頂点*行列の演算

これをSetTransformでやってるのが、ハードウェアT&Lじゃねーの?
0286デフォルトの名無しさんNGNG
スキニングなんかのボーン毎、頂点毎に行列が違う物って
一頂点毎にSetTransformやってるの?
0287デフォルトの名無しさんNGNG
>>286
まとめてセットしておけるから、
一頂点ごとにやらなければならない理由はないが?
0288デフォルトの名無しさんNGNG
だから、行列がちがうんだよ?
何?まとめてセットって?
0289デフォルトの名無しさんNGNG
>>288
必要な行列の数は?
0290デフォルトの名無しさんNGNG
>>288
君のDirect3Dの知識はVer.5ぐらいで止まってないか?
話がまったく噛み合ってないぞ。
0291デフォルトの名無しさんNGNG
>>285
シェーダなんかもあるという意味だなんだが、
そういう反応をするところなんだろうか?
0292デフォルトの名無しさんNGNG
頂点数が大体4000だから、4000
256づつやれってか?
0293デフォルトの名無しさんNGNG
頂点数が4000で行列も4000あるっていうと、
ええと、ここは驚くところですか?
0294デフォルトの名無しさんNGNG
ウェイトが固定じゃない以上は、頂点数必要だろ
0295デフォルトの名無しさんNGNG
スレタイ読もうぜ
0296デフォルトの名無しさんNGNG
>頂点数が大体4000だから、4000
参りました、降参です。
オールアセンブラで最適化してください。
0297デフォルトの名無しさんNGNG
頂点に匹敵するボーン数を誇るデータが、いったいどんなものなのか興味がある。
すでにスキニングが意味をなしていないと思うが。
0298デフォルトの名無しさんNGNG
自前でスキニング処理した事あるやついないの?
0299デフォルトの名無しさんNGNG
ボーン数の行列と
頂点にウェイトが変動でかかる以上
頂点数の行列は必要だろ
0300デフォルトの名無しさんNGNG
>頂点にウェイトが変動でかかる以上
想像もつかないんだけど、
いったい何をモデリングして動かしているの?
0301デフォルトの名無しさんNGNG
>>300
流体ですが何か?
0302デフォルトの名無しさんNGNG
とりあえず固定で処理したいのなら、
ウエイトが異なる頂点は別頂点として扱うこと。
データが増えて嫌なら自前で処理すればいい。
0303デフォルトの名無しさんNGNG
デザイナにウェイトかけて良い頂点は4つまでね、とか言ってるのかな?

理由、俺のプログラムがウェイト数4つまでしか対応してないから
0304デフォルトの名無しさんNGNG
OpenGL、DirectX、C、VB、またはお手軽組み組みMFCのスレは
アセンブラの話が出ると荒れる
0305デフォルトの名無しさんNGNG
アセンブラといえば昔は2D系のポストエフェクトにつかわれる
ことが多かったけど、今はシェーダで書くことも多くなったから
つかわないといけないシーンは減ったな。

かつて一番計算のコストが高かった頂点のトランスフォームも
これもシェーダをつかうからアセンブラで最適化する必要も
なくなったし。

必須というわけじゃないが読めると得することが多いので
暇なときにアセンブラの本を1冊読んで、プロセッサ固有の
最適化に関する部分はネットの情報で簡単に勉強すれば
十分だと思う。重ねて言うが読めると得することは多いが
書くことはあまりないと思う。

シェーダのアセンブラについてはピクセルシェーダ1.x系列
は命令数とかテクスチャ読み出しの依存関係とか面倒
くさいことがいろいろあるのでHLSLとかCgつかうにしても
アセンブラがわかってないと実質何もできないけど。

あと、スキニングって普通シェーダをつかってたら必然的に
書くことになると思うんだけど。そんなに難しい処理
じゃないはずなんだけど。複数の行列でトランスフォーム
した頂点を重み付けして加算するだけだろ。何か変な
勘違いをしている人がいるような。しかもほとんど頂点
シェーダで書くからアセンブラの出番ないし。
0306デフォルトの名無しさんNGNG
>>286から後出しで追加要素が色々出てきたな。
なんだかもういろんなところに転げ回っている感じがする。
0307デフォルトの名無しさんNGNG
DirectX9以前からやってりゃアセンブラのほうがしっくり来て早い
0308デフォルトの名無しさんNGNG
>>305
発売する前に、
必須環境
DirectX9とDirectX9対応グラフィックボード
と
俺のプログラムが動く環境と明記してくださいね。
0309デフォルトの名無しさんNGNG
>>308
そんなことをお願いしなくても、
販売する物なら動作環境ぐらい普通書くだろう。
0310デフォルトの名無しさんNGNG
DirectX9フル対応ボード「のみ」
なんてものは見たことがねえなあ

いまだにGF2MXをメインに据えている俺からすれば
そんなものが出てきたらサブマシンに変えざるを得なくなって非常に困る

サブ
Athlon64 3200+
GF6800Ultra

入れ替えるのめんどくせえ
しかもメインに比べてうるせえ
0311デフォルトの名無しさんNGNG
>>305
シェーダでスキニングさせた事ないだろ?
シェーダでスキニングする場合、ウエイトは1頂点に4つまでと縛りが入る。
デザイナのデータに規制をかけてるのか?
0312デフォルトの名無しさんNGNG
>>305
君のプログラムだと、シェーダーが動かないと
実行されない物なんだ?

必須環境、指定のVSバージョンが動くグラボ?
王様プログラムだな。
0313デフォルトの名無しさんNGNG
>シェーダでスキニングする場合、ウエイトは1頂点に4つまでと縛りが入る。
そりは固定機能の制限だ。
0314デフォルトの名無しさんNGNG
ヘルプを見ては後出しで条件を出して、そのたびに墓穴を掘っているような。
0315デフォルトの名無しさんNGNG
SDLスレってあった気がするんだけど
俺の気のせいだったかな
ちなみにSDLはこの板でいいの?
0316デフォルトの名無しさんNGNG
>>315
これ?
SDLスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005469181/
0317デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/gamedev/1041880728/l50
0318デフォルトの名無しさんNGNG
DirectX9ではなくDirectX8で組む場合
どうすればいいのでしょうか?
DX8のSDKが見つからなかったので・・
0319デフォルトの名無しさんNGNG
>>318
http://www.microsoft.com/japan/msdn/directx/downloads.asp
0320デフォルトの名無しさんNGNG
>>318
9SDKには8のヘッダは入ってないだろうし無理じゃね?
つうか9で組めばいいじゃん。
初めて始めるなら9でも8でも殆どかわらんよ。
0321デフォルトの名無しさんNGNG
>>320
間抜けな発言をする前に、ヘッダファイルの中を覗くことをお勧めする。
0322デフォルトの名無しさんNGNG
>>321
確かにオールバージョン入ってるね。
これなら9SDKでモーマンタイだな。
0323デフォルトの名無しさんNGNG
>>316
情報thx
それそれ
でもム板でも昔見かけた気がするけど
やっぱ俺の気のせいだったかな

SDLって、COMと縁切れるからC++以外の言語で使いやすいんだよね
むちゃ簡単だし
適当なやつ作る程度ならこれで十分でしょ
このスレで使ってる人いないの?
まあ使ってるからって話題なんもないんだけどさ
俺自身も自作言語のテスト用途なわけよ
SDLとのインタフェースってかなり小さく出来るんだよね
Linuxでも同時に動くし
覚えることほんと少ないから
知らないでDirectX直で使ってる人いたらオススメだよ
0324デフォルトの名無しさんNGNG
質問です。

DirectShowをDirect3Dのテクスチャとして表示するために四苦八苦してます。
で、DirectX9.0bSDKの日本語ヘルプが欲しいのですが、マイクロソフトの所を
探しても見つかりません。
どこにあるか教えていただけませんか?
0325デフォルトの名無しさんNGNG
困ったな・・・・・・・・・・海外のBBSでもこういう質問が平気で飛び交うんだろうか?
0326デフォルトの名無しさんNGNG
以前のサンプルを DirectX 9.0 SDK Update (Summer 2004) でビルドする方法
DirectX 9.0 SDK Update (Summer 2004) をインストールするとウィザードが使えないために、こ
のコラム用に作った以前の C# サンプルコードがビルドできません。今回はその対策方法を紹介します。

http://www.microsoft.com/japan/msdn/directx/default.asp
0327デフォルトの名無しさんNGNG
すげー盛り上がってたようだが
落ち着いた所で何が正しいのかまとめてくれ
0328デフォルトの名無しさんNGNG
遅いマシンの為の動作テストをやりたいんですが
OS全体に負荷をかけるツールってないですか?
単純にfor(;;);を実行するだけだとむらが出てしまいます。
0329デフォルトの名無しさんNGNG
DirectXって何ですか?
0330デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E7%94%A8%E8%AA%9E%E3%80%80DirectX&lr=
0331デフォルトの名無しさんNGNG
WinGとは違うんですか?
0332デフォルトの名無しさんNGNG
WinGが何か知ってるんならわかるだろ
20年程山篭りしてたわけでもあるまい
0333デフォルトの名無しさんNGNG
ネタにマジレスするみっともない馬鹿がいるのはこのスレですか?
0334デフォルトの名無しさんNGNG
いえ、無知を指摘されたため、慌ててネタということにして逃げる
典型的な厨房が吠えるスレです。
0335デフォルトの名無しさんNGNG
恥の上塗りをするのは自由だが、
どこをどうみたってネタにしか見えない。
なぜこんなネタにマジレスを返すのか、
馬鹿の考えることはさっぱり理解できない。
0336デフォルトの名無しさんNGNG
なぜこんなに必死なんだろう。
「20年」を転がすことも思い付かずにマジレス、マジレスとお猿のように。
0337デフォルトの名無しさんNGNG
どーでもいー
0338デフォルトの名無しさんNGNG
DirectAudioの質問です
LoadObjectFromFileでセグメントの作成とパフォーマンスのダウンロードと再生が出来る状態で
予め読み込んでおいたデータをGetObjectでセグメントを作ろうとすると E_POINTER が返ってきます。
ナゼデスカー

BYTE *pByteSrc = new BYTE[1000];
//標準入力でロード

DMUS_OBJECTDESC desc;
ZeroMemory( &desc, sizeof(DMUS_OBJECTDESC) );
desc.dwSize = sizeof(DMUS_OBJECTDESC);
desc.dwValidData = DMUS_OBJ_CLASS | DMUS_OBJ_MEMORY;
desc.guidClass = CLSID_DirectMusicSegment;
desc.pbMemData = pByteSrc;
desc.llMemLength = 1000;
g_lpLoader->GetObject( &desc, IID_IDirectMusicSegment8, (void**)g_lpSegment1 );
0339デフォルトの名無しさんNGNG
質問です。
鬱だ死のうDirectXスレはどこに行ったの?
0340デフォルトの名無しさんNGNG
リンク中...
d3dx9.lib(fastftoa.obj) : error LNK2001: 外部シンボル "__aulldvrm" は未解決です
Debug/dx9.exe : fatal error LNK1120: 外部参照 1 が未解決です。

MSDN(ttp://www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/)
のサンプルをビルドしたときに、エラーだと言われました。
どこをどうすれば良いのか教えてください。
0341デフォルトの名無しさんNGNG
HRESULT EnumSurfaces(
DWORD dwFlags,
LPDDSURFACEDESC2 lpDDSD2,
LPVOID lpContext,
LPDDENUMSURFACESCALLBACK2 lpEnumSurfacesCallback
);
この関数の使い方がよくわかりません
0342デフォルトの名無しさんNGNG
>>341
使い方はヘルプに書かれているとおりだが。
わからないのなら他のEnum系のSDKサンプルを参考にすればいい。
0343デフォルトの名無しさんNGNG
>>339 某所の有名厨が削除依頼と聞いたが
0344デフォルトの名無しさんNGNG
>>339
ゲ製作技術のスレと統合。
0345デフォルトの名無しさんNGNG
>>339 こことかhttp://pc5.2ch.net/test/read.cgi/tech/1011762546/
0346デフォルトの名無しさんNGNG
次回の授業までにDirectXを使ってインベーダーゲームを制作しろと
課題が出されました。しかし、全くやり方が分からないんですけど
だれか、インベーダーに関しての、情報が書いてあるサイト、
知識を持ってる人はソースコードとまでは言いませんが
誰か、知恵をお貸し下さい 長文スイマセン
0347デフォルトの名無しさんNGNG
インベーダーの情報か。

名古屋打ちとか。
0348デフォルトの名無しさんNGNG
高橋名人ってもっと後だっけ?
0349デフォルトの名無しさんNGNG
ウェブ上でプレイできる奴があるから研究してみ
ActiveXをONにしておくこと
http://www.google.co.jp/search?q=%E3%82%A4%E3%83%B3%E3%83%99%E3%83%BC%E3%83%80%E3%82%B2%E3%83%BC%E3%83%A0&hl=ja&lr=&ie=UTF-8&start=10&sa=N
0350デフォルトの名無しさんNGNG
DirectX齧ってる人間が
インベーダーもどきも自力で作れないなんて
ネタでしかないわけだが
0351デフォルトの名無しさんNGNG
>>350
インベーダーゲームを知らない年齢では?
0352デフォルトの名無しさんNGNG
DirectXの知識はあるとも書いてないしな、微妙
0353デフォルトの名無しさんNGNG
昔のゲームは面白かった

とかいうのでやってみると
実につまらない



SFCのRPGなら今より面白いと言えるが
0354デフォルトの名無しさんNGNG
スレ違いだけどちょっと俺も同意
オヤジがレゲーにノスタルジー感じてるだけじゃないかと

あと15年もすれば
「ポケモンは最高だった。今のゲームは複雑&作業プレイ」
とか言い出すやつが出てくるが出てくるだろう
0355デフォルトの名無しさんNGNG
>>346
インベーダーが課題に出ててソースもある。

http://gamdev.org/up/upload.php?page=all
【初心者】課題をクリアしていくスレ【講習会】
http://pc5.2ch.net/test/read.cgi/gamedev/1086858349/
0356デフォルトの名無しさんNGNG
既に今のゲームは作業プレイだ
0357デフォルトの名無しさんNGNG
>356
そうじゃない意欲的な作品も稀にあるが、人目につくこともなく消えていく
絵がきれいとか広告がうまいゲームしか売れてない

>既に今のゲームは作業プレイだ
結局そんな作業ゲーが生き残ったのはユーザがそれを選択したってことなんだな
0358デフォルトの名無しさんNGNG
でも初代ポケモンをプレイしてた奴ってそろそろ家庭もって子供がいてもおかしくない年だよな。
0359デフォルトの名無しさんNGNG
>>358
何歳から家庭もって子供がいてもおかしくない年だと考えている?
0360デフォルトの名無しさんNGNG
>>359
28歳
0361デフォルトの名無しさんNGNG
バカモン
0362デフォルトの名無しさんNGNG
>361
バカモンゲットだぜ
0363デフォルトの名無しさんNGNG
gets()

ゲッツて言うな
0364デフォルトの名無しさんNGNG
>>359
家庭を持つのが「おかしくない」のは18歳からだな。
そんなこともわからないの?
0365デフォルトの名無しさんNGNG
>>364
18で家庭持ちは流石に早いよ
0366デフォルトの名無しさんNGNG
>>365
早いかどうかなんて問題になっていないでしょ。
「おかしくない」のが何歳からか、という話だよ。
0367デフォルトの名無しさんNGNG
>363
ハゲワラタ
テユーカマイリマスタ
0368デフォルトの名無しさんNGNG
>>366
だから早いって
社会通念上おかしい
0369デフォルトの名無しさんNGNG
18は最短ですな。主語が男なら
0370デフォルトの名無しさんNGNG
>>369
女も今は18じゃなかったっけ?
0371デフォルトの名無しさんNGNG
>>368
早いけど、社会通念上まったくおかしくないよ。
あなたが勝手におかしいと思うのは自由だけど。
0372デフォルトの名無しさんNGNG
>>370
マジっすか
知らなかった…
0373デフォルトの名無しさんNGNG
>>371
法律でセーフなだけだろ?
最近は高校生が妊娠したまま学校に通うのが普通なのか?
0374デフォルトの名無しさんNGNG
358からの流れが微妙に面白いな。ズレてるが
0375デフォルトの名無しさんNGNG
「18で結婚はおかしくはない」がいつのまにか
「高校生が妊娠したまま学校に通うのが普通」へ。
0376デフォルトの名無しさんNGNG
DX9のDirectShowに含まれているDirectDrawつうのは
DX7の頃のDirectDrawと同じもんか?
0377デフォルトの名無しさんNGNG
>>376
別物。
DX7のDirectDrawはDX9でもそのまま残ってる。
0378デフォルトの名無しさんNGNG
>>373
何が普通か、などという話ではないんだよ。
何が「おかしくない」のかという話。
なんでそんなに頭が悪いの?
0379デフォルトの名無しさんNGNG
DirectX初心者質問スレでそんな話をする奴らがおかしい。なんでそんなに頭が悪いの?
0380デフォルトの名無しさんNGNG
猿真似すると、言われて凄く悔しかったんだってのがばれちゃうよ?
ま、いいけど。
他人のふりして逃げるならそれも結構。ミスを認めたく無い場合はそれも有効だしね。

↓何事も無かったかのようにスレ再開
0381デフォルトの名無しさんNGNG
もう勝利宣言
0382デフォルトの名無しさんNGNG
おまいら少しは鬱氏に書き込まないと即死判定でスレが落ちるよ
0383デフォルトの名無しさんNGNG
>>340と同じ問題につまづいています。どうすりゃいいのこれ。
0384デフォルトの名無しさんNGNG
>>383
.NETとDX9でやってる?
0385デフォルトの名無しさんNGNG
directx8で3Dの座標はfloat型で扱わなければならない とあるのですが
座標表すだけならintで十分とおもうのですがなんでfloat型が採用されてるんですか?

座標のfloat型に合わせるためか
warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません
warning C4244: '=' : 'double' から 'float' に変換しました。データが失われているかもしれません

という警告が出まくります

座標に関わる計算するときに使う変数はすべてfloat型に統一しておいた方がいいのか
警告文が出てもプログラム自体は実行できるのでこのままほっといていいのか悩んでます



0386デフォルトの名無しさんNGNG
意図的にやっているならキャストすればいいだろう。
ここはDirectX初心者スレであって、C言語初心者スレではない。
0387デフォルトの名無しさんNGNG
>>386
すいませんでした
0388梅宮NGNG
シンボルッ(でっでー)
シンボルッ(でッでー)

外部のシン〜ボルぅぅー
0389デフォルトの名無しさんNGNG
この言語はプログラム初心者にはお使いいただけません
とか言ってるところがある。

float志向

0390デフォルトの名無しさんNGNG
甘いよオマエラ。
玄人は浮動小数点を捨て
固定小数点もしくは整数を選ぶ。
すなわち>>385はC言語はプロ、DXは初心者。
0391デフォルトの名無しさんNGNG
警告を表示させたくないなら #pragma warning(disable:4244)
0392デフォルトの名無しさんNGNG
すいませんおねがいします!
int型の配列要素p[0]〜p[99]のうち0が
格納されている要素を全て実行例のように
画面に出力するプログラムを完成させよ
p[3]=0
p[12]=0
p[85]=0
...................
#include<stdio.h>
main()
int p[100], i ;
:
(ここに配列要素に値を格納する処理があるとして
  :
この後どうなるんでしょうか??
お願いいたします


0393デフォルトの名無しさんNGNG
とうとうDirectXと何の関係も無くなったが。
0394デフォルトの名無しさんNGNG
>>392 宿題ぐらい自分でやれよ
0395デフォルトの名無しさんNGNG
サーフェイスデバイスからGetDCを呼び出して
0396デフォルトの名無しさんNGNG
>>392
とりあえずVertexBufferを作るとこから始めてみろ。
続きは誰かお願いね。

LPDIRECT3DDEVICE9pD3DDevice_;
LPDIRECT3DVERTEXBUFFER9pVertexBuffer= NULL;
try{
HRESULT hr;

_ASSERT( pD3DDevice_);
IDirect3DDevice9PtrpD3DDevice( pD3DDevice_);

vector< int > srcBuffer( 100);
//ここに配列要素に値を格納する処理があるとする。

const DWORD usage= 0;
const D3DPOOL pool= D3DPOOL_MANAGED;
const size_t elementSize= sizeof(vector< int >::value_type);

hr = pD3DDevice->CreateVertexBuffer( UINT(srcBuffer.size() * elementSize), usage, 0, pool, &pVertexBuffer, NULL);
if( FAILED(hr))throw ...;

LPVOID pVertexIn;
hr = pVertexBuffer->Lock( 0, 0, &pVertexIn, usage & D3DUSAGE_DYNAMIC ? D3DLOCK_DISCARD : 0);
if( SUCCEEDED(hr)){
::CopyMemory( pVertexIn, .srcBuffer.begin(), srcBuffer.size() * elementSize);
pVertexBuffer->Unlock();}
else throw ...;
}catch( ...){_safe_release( pVertexBuffer);throw;}
0397デフォルトの名無しさんNGNG
>>392
"p","[","0"といった文字はそのまま出力できませんのでまず各文字をポリゴンに変換します。

デバイスコンテキストにアウトラインフォントを選択した後GetGlyphOutline
でアウトラインフォントの輪郭(4 次スプライン形式)が取り出せますので
それを元に変換してやればいいです。

参考ページ:
ttp://www.inet-lab.org/ted/program/prog176.html
0398デフォルトの名無しさんNGNG
>>384
VC6.0とDX9SDKSummer2004でやってます
aulldvrmってなあにいい
0399デフォルトの名無しさんNGNG
Summer2004はVC6.0に対応してない
0400デフォルトの名無しさんNGNG
対応してなかったっけ?
たしかVC6用のも別に用意されてたような
0401デフォルトの名無しさんNGNG
Extras
Extras ダウンロードには、ソフトウェア開発キットには含まれていない以下の内容が入っています。

Visual Studio 6.0 をサポートする d3dx.lib
以前のバージョンの CG ツール プラグイン
日本語ドキュメント (Summer Update 2004 の更新は反映されていません)


Date: July 28, 2004
0402デフォルトの名無しさんNGNG
乙
0403デフォルトの名無しさんNGNG
>>401
どうもありがとうございます。そちらのd3dx.libにてちゃんとコンパイルが通るようになりました
Summer2004はrequires both Visual Studio .NET and the .NET framework for developmentって
書いてあったんですね・・すいませんでした見落としてました
0404デフォルトの名無しさんNGNG
ポストプロセス、ポストブレンディング、ポストフィルタリング
これらの原理というか、概要が何のこっちゃか全然わかりません。
Google検索しても、「それが使われている」ことは書いてあっても
何をどうするのがポストプロセスと言うのかが書いてません。

申し訳ないですが教えてください。
0405デフォルトの名無しさんNGNG
原理も何もポストプロセスって「後処理」のことだぞ。
ようするに特定の処理を指すわけじゃなくて、後で何か手を加えること
全般を指す。
ポリゴンで描画したキャラクタの額にフォトショップで「肉」と書き
加えるだけでも立派なポストプロセス。
0406デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/msdn/library/ja/directx9_m/directx/ref/ns/microsoft.directx.audiovideoplayback/c/audio/p/volume.asp?frame=true
このプロパティってどういう時に使うんですか?
0407デフォルトの名無しさんNGNG
ゲームで言うポスト処理は
光をブルーミングするような感じにすることと思い浮かべる人もいる

良い例が3DMARK03、同05、Hitman Contracts、DeusEXIW
PixelShader1.1か2.0によりポストプロセスを行うと公言しているのがこれ
0408デフォルトの名無しさんNGNG
VC++6.0 & DirectX9 2003Summerを使ってます.

DirectX9 AppWizard→Single document windowに,
ツールバーを追加しようとしても表示されません.

TBBUTTON tbb[] =
{
{0, IDB_A, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
{1, IDB_B, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
{2, IDB_C, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
};

LRESULT CMyD3DApplication::MsgProc(...)
{
switch( msg )
{
case WM_CREATE:
{
HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
InitCommonControls();
CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, 3, hInst,
IDB_BITMAP, tbb, 3, 0, 0, 16, 15, sizeof(TBBUTTON));
break;
}
...

試しにWin32 ApplicationでHelloWorldを作り同じ方法で試すとツールバーは表示されました.
直接DirectXに関係する質問ではないですが,よろしくお願いします.
0409408NGNG
自己解決しました.
0410デフォルトの名無しさんNGNG
DirectInputのバッファリングデータの取得で
キーを押したらキーを離すまでの間キャラクターを移動させたいのですが

キーを押すと
押す→離す→押す
と状態の変化がなぜか3回起こってしまい

直接データでやった場合のように移動開始直後にカクついてしまいます
これはキーボード自体の仕様なんでしょうか?
0411デフォルトの名無しさんNGNG
> キーを押すと
> 押す→離す→押す
> と状態の変化がなぜか3回起こってしまい

こんな現象、正常なら起こらないと思う。
キーボードが機械的に壊れてるとか、そもそもプログラムにバグがあるとか。
0412デフォルトの名無しさんNGNG
フルスクリーン時にIMEの入力中文字表示が
画面の描画で上書きされてちらつくんですが、これを
なるべく少ない労力で正常に表示させる方法ってありませんか?

自分で考えた限りだと
・WM_IME_STARTCOMPOSITIONを拾って変換中の情報を全て自前で描画。
・WM_IME_STARTCOMPOSITIONで変換中文字列だけ取って、
 入力表示の幅を計算してその部分だけ画面を更新しない。

ってのを思いついたんですが、これらよりも簡単な方法ってないでしょうか?
0413デフォルトの名無しさんNGNG
よくわからんけど日本語入力モードになってるんじゃないだろうか
0414デフォルトの名無しさんNGNG
IMEバーやGUIなんかは自前でやるしかないだろう。
俺はやりたくないがな!
0415デフォルトの名無しさんNGNG
>>413
ええ、日本語入力モードの入力中の文字を表示したいんです。

>>414
自前以外の方法はやっぱ無いんですか・・・
0416デフォルトの名無しさんNGNG
>>415
http://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=43&vew=21
これとか参考になりませんか?
0417デフォルトの名無しさんNGNG
>>416
DX9.0c夏Verから簡単に使えるようになってたんですか。それは知らなかった。
しかし、DX7使ってたんだよなorz
今から移行するよりは、このまま自前処理したほうが早いか。
0418デフォルトの名無しさんNGNG
DirectX9.0のDirectShowで利用できる独自のエフェクトを作成しようと考えています。
最初は、再生するMPEGのRGB値を調整(例えば、R値を10だけ増やすとか)するエフェクトから
取り組んで生きたいと思っています。
参考になる書籍やウェブサイトをご存知の方がいらっしゃいましたら、教えて下さい。
0419410NGNG
>>411
自分のデスクトップが
PS/2のキーボードをUSBに変換するのを咬まして
(さらにUSB切り替え機もかまして)接続してるのが原因だったようです
知り合いのPCで試させてもらったらちゃんと動きました
誰かしらの参考になれば幸いです
0420デフォルトの名無しさんNGNG
>>419
私の環境も同様に PS/2→USB変換をかましているのですが
やはり同じ症状が出ますね。
変換のせいだと思って間違いないと思われます。
おかげでゲームがやりづらいの何のって・・・・
0421デフォルトの名無しさんNGNG
>>392
int i;
int ans[100];
int num = 0;
for (i = 0; i < 100; i++) if (p[i] == 0) ans[num++] = i;
for (i = 0; i < num; i++) printf ("p[%d] = 0\n", ans[i]);
0422デフォルトの名無しさんNGNG
そのレベルもできないヤツは他の課題はどうやって乗り切ってきたのだろうか…
0423デフォルトの名無しさんNGNG
周りからぱくってんじゃないの?
0424421NGNG
でも本当は1行で済むんだよね
0425デフォルトの名無しさんNGNG
1行で書けるの?
改行しないだけ?
0426デフォルトの名無しさんNGNG
矩形の辺上に存在する複数の点を全部使って、
矩形を構成するトライアングルを抽出したいのですが、
何か良い方法ありませんか?
0427デフォルトの名無しさんNGNG
矩形って長方形(四角形)の事だけどそれでいいの?
頂点を一つずつ順番ずらして拾っていくだけかと。
0428デフォルトの名無しさんNGNG
すいません
上でポストフィルタの話があったので質問させてください

http://sylphys.ddo.jp/upld2nd/game/img-box/img20041011211855.jpg
ポストフィルタあり

http://sylphys.ddo.jp/upld2nd/game/img-box/img20041011212005.jpg
ポストフィルタなし


ポストフィルタは、どのゲームでも例外なく
遠くにあるものはボケたように見え、
近づくにつれてはっきりと見えてくるような感じ、
光をボカシた感じにしてますが

これがポストフィルタなんでしょうか。
「後処理」すると、必ずこんな感じになるのですか。

そもそも後処理とは、この場合何の処理をしているから
こんなようにボケるのでしょうか。
似たような効果を示す、ブラーを用いたようには見えないのですが
0429デフォルトの名無しさんNGNG
>428
距離に関係なく全体をぼかすことはできる?
あとはそれに距離(Z値)を考慮すればやりかたはいくつか思いつくんじゃないかな?
0430デフォルトの名無しさんNGNG
>>428
海外サイトにソースが山ほど転がってるよ
普通に中学卒業してるのなら読める
0431デフォルトの名無しさんNGNG
実行速度が速すぎてキャラの移動が早すぎるので
ウエイトかけたいんですけど簡潔で効率的なウエイトのかけ方を
教えてくださいC言語でおねがいします
0432デフォルトの名無しさんNGNG
>>431
for(i = 0, i < x;i++){}
xの値を変えるだけで速度調節できるぜ
0433デフォルトの名無しさんNGNG
>>432
ありがとうございます
試してみます
0434デフォルトの名無しさんNGNG
>>432
BASICを思い出す
0435デフォルトの名無しさんNGNG
>431
DirectXなのか?
そもそもWindowsなのか?

なんちゃって
ネタだということはお見通しなんだが
0436デフォルトの名無しさんNGNG
>>432
VCなんかだと空ループは最適化で無かったことにされるので、ネタにもなってないぞ。
0437デフォルトの名無しさんNGNG
なかったことにされなかったらネタにならないじゃねえか
0438デフォルトの名無しさんNGNG
ネタ(?)に便乗して、質問。
そういう時タイマー(開始時間と経過時間)使って、
よく処理するんですが他に方法って有ります?
0439デフォルトの名無しさんNGNG
最近どこかで同様の議論を見たが・・・どこでだったか・・・
0440デフォルトの名無しさんNGNG
>>438
キー入力があるまでひたすら待て。
0441デフォルトの名無しさんNGNG
>438
この辺とか
typedef enum _D3DSWAPEFFECT {
    D3DSWAPEFFECT_DISCARD = 1,
    D3DSWAPEFFECT_FLIP = 2,
    D3DSWAPEFFECT_COPY = 3,
    D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
} D3DSWAPEFFECT;
0442デフォルトの名無しさんNGNG
>>428
ポストフィルタってのは特定の処理を表す言葉じゃないって言ってるだろ。
メインの処理の後にフィルタ処理をすること全般を表す言葉。
ボケるかどうかはどんなフィルタをかけたかって話。

逆にクッキリさせるフィルタをポストフィルタとして使うこともある。
CGの場合は元々ボケないから、シェープネスフィルタをかけることはまずないが。

先にフィルタをかけるプレフィルタ(プリフィルタ)というのもあるが、
3DCGではまず使わない。(クリッピングがプレフィルタとも言えるが)
身近なところだと、圧縮処理の前に圧縮率を上げる目的でプレフィルタを
使ったりする。

そのボケてるのがどんな処理をしているのかは、フィルタ処理を勉強しろ。
画像処理と呼ばれるものがほとんどフィルタ処理だから、画像処理で
調べた方がいいかも。フォトレタッチソフトで各種フィルタを試してみる
だけでも、かなり参考になる。

深度によってボケ方が変わるのは、深度情報(Z値)によってボカしの
強度を変えてるだけ。細かい話をすると深度エッジ部分に問題があったり
色々と難しい話があるが。
0443デフォルトの名無しさんNGNG
DirectXで垂直同期モードにするとSleepさせても
絶対60FPS出るんですがこれはどうなってるんでしょう?
0444デフォルトの名無しさんNGNG
レンダリングパイプラインに明確に依存するポスト処理よりも
メインエンジン内でフィルタリングしたほうが幾らも良いのに

見た目も少し良くなる可能性がある
0445デフォルトの名無しさんNGNG
>>443
質問の意図がよく分からないが。

垂直同期にあわせつつ、60FPSより下げる方法を聞きたいのなら、
・Sleepの値を増やす
・SleepではなくGetSystemTime、GetTickCount等で経過時間を
 計って調整する

60FPS以上で動作させたいのなら、
・リフレッシュレートを上げる

意表を突いて垂直同期自体が何なのか分かってないのなら、
詳しく書くと長くなるからググろう。
0446デフォルトの名無しさんNGNG
ちゅうかそもそもsleep使ったってfpsそれ程落ちんだろ
ネタですか?
0447デフォルトの名無しさんNGNG
sleep(1)で1msマチだから、17よりでかいの渡せば落ちるんじゃないかな。
レンダ処理がOSからのメッセージかコールバックで動作してるとダメだろうけど。
0448デフォルトの名無しさんNGNG
高橋名人か
0449デフォルトの名無しさんNGNG
あのデブは今何しているんだろうなあ。
0450デフォルトの名無しさんNGNG
DirectXの「AVIファイル再圧縮」ってサンプルをBorlandC++Compiler5.51でコンパイルしてみたんですが、
Error: 外部シンボル '_MEDIASUBTYPE_Avi' が未解決
Error: 外部シンボル '_FORMAT_VideoInfo' が未解決
というエラーが出てきます。
bccでは対応していないのでしょうか?
因みに、OSはWinXPでDX SDKのバージョンは
http://goldfly.ld.infoseek.co.jp/program/directx/bcc90b.html
を参考にして、DX9.0cをインストール・設定しています。
ヘッダファイルからMEDIASUBTYPE_Aviを検索してみると、uuids.hが出てきたのでインクルードしてみても同じでした…
ライブラリの追加が必要なんでしょうか…?
0451デフォルトの名無しさんNGNG
「全体的なお約束の一例」
・基本的にマイクグチソフトのサンプルはVC++でないとコンパイルは難しい
 (ボーランドのでコンパイル通るサンプルがあったとしても運が良かっただけ)


その他
・「C == C++」
 ("C"としか言ってないのに勝手に"C++"に置き換える奴がいる)
・「Cのソースを書いてる == VC++で書いてる」
 (全員VC++使ってると思ってる)


会社にあるものも勝手にコピーしてきて家に持って帰ってきただけなのに
自分の金で買ったわけでもないVC++を賛美
とか
0452デフォルトの名無しさんNGNG
>>451
動画処理とカメラ使ったソフトを調べてたんですが、ネットで公開されてるものが、その辺りのサンプルを参考にしてたものばかりで…
同じエラーが出てきたので、何か方法があるかと聞いてみたんですが…おとなしくVS使います
(使い勝手が慣れないので、まだ殆ど使ってないです)
0453デフォルトの名無しさんNGNG
つーかエラーの内容からしてBCCのせいじゃないと思うが
0454デフォルトの名無しさんNGNG
足りないGUIDを自分で定義すればいいだけの話だが、
その程度のことすら出来ないのならBCCは使わない方が無難。
0455デフォルトの名無しさんNGNG
>>450
guiddef.hのなかで
DEFINE_GUID(...)が定義されてるところをよく読め。
0456デフォルトの名無しさんNGNG
DirectX初心者は特にVC++.Net買え
いや、マジで
普通に買っても一万ちょっと
学生なら安く買える
金がないとか言う香具師は遊ぶ金とか食費削ってでも買え
0457デフォルトの名無しさんNGNG
それじゃ勉強にはならんな

VC++使って何か作れても


「わかったつもりになってる」


だけ
0458デフォルトの名無しさんNGNG
VC++買う
なにかサンプルをサクっとウィザードでつくる
ちょっと凝った事をしようとするが、MFCが使い辛くて困る
勉強する
嫌気が差す
C#に乗り換える
0459デフォルトの名無しさんNGNG
>458
いいんじゃね?
その程度の香具師なら何使ってもその程度だろうから
できる香具師はBCC使ってもいいんだけど、
BCC特有の問題とかめんどいからVC++の方がいいんじゃね?
0460デフォルトの名無しさんNGNG
2Dゲームの場合、DirectXを使うと本当に速くなりますか?
あまり変わらないのなら、スクリーンの解像度と色深度のみをDirectXで
変更するだけにしようかと思うのですが、どうですか?


0461デフォルトの名無しさんNGNG
正直GDIのほうが早い



8bitカラーなら
0462デフォルトの名無しさんNGNG
GDI使うと、Win98あたりと互換性考える必要があって面倒じゃない?
0463デフォルトの名無しさんNGNG
GDIに互換性がなかったら、一般アプリは軒並み問題が発生してるな。
初心者スレとはいえ、何故こういう馬鹿が発生するんだろう?
0464デフォルトの名無しさんNGNG
この人は普段から16bitを超える座標系を頻繁に扱っていたんだろう。
0465デフォルトの名無しさんNGNG
>正直GDIのほうが早い

便利機能を使うGDI+なら開発は早いってことだと思ったんでね。
DirextX9.0c使えるならそっちのが開発早いと思うが。
0466デフォルトの名無しさんNGNG
>460
テスト用のプログラム作って試してみれば?
もし、まだDirectX触ってないんだったらいい機会だから触ってみれ
実際使うかどうかは別として
何事も経験
0467640NGNG
>>461
スクリーンを8Bitにしたら16Bitより倍速くなりました!

>>465
開発の速さではなくて、実行速度です。
2Dゲームなので、BitBltぐらいしか使いません。

>>466
DirectXが面倒だったので、もし速くならないのならGDIでやろうと思ったのでした。
0468デフォルトの名無しさんNGNG
Xfileなどのオブジェクトを読み込んで表示するとき、
例えば配置する位置を(X、Y、Z)として、
World→View→ProjectionとSetTransformして
DrawSubsetすれば簡単に表示してくれるわけですが、
このXYZが変換された後のスクリーン座標の値を
取り出したいときはどうしたらよいのでしょうか。
0469デフォルトの名無しさんNGNG
激しく無駄だけど自分で変換マトリクスを掛けてみる
0470デフォルトの名無しさんNGNG
無駄以前に、それ以外に方法はない。
0471デフォルトの名無しさんNGNG
なんか関数ありそうじゃん
ないんだ
0472デフォルトの名無しさんNGNG
関数が用意されているいないにかかわらず、計算するのは一緒だが。
0473デフォルトの名無しさんNGNG
>>472
?
0474デフォルトの名無しさんNGNG
質問良いでしょうか?

皆さん描画システムどうしてます?
(D3DFrameでいうRenderのBeginSceneとEndSceneの間)
SetRenderState SetSamplerState SetTexture SetFVF
と設定周りを色々呼び出すわけですが「呼び出し回数が少なければ少ない程早くなる」のだと思います。
最低の呼び出し回数でやろうとすると当然ツリー状態になるのですが、
確保やら解放やらでそんなに速度は変わらないのではと危惧しています。

「じゃぁ、どっちも試して速度調べろよ」と言われそうですが、他の人のシステムも知りたいので書き込みました。
よろしこです。
0475468NGNG
>>469-473
どうもすいません。普通に自分で変換行列作って掛けてみたんですが、
0.6〜とか1.5〜とかよく分からない数値が帰ってきます。
以下ソースです。とんちんかんな事をしているかもしれませんがアドバイスいただけたらと思います。
////////////////////////////////////////////////////////
D3DXMATRIX matWorld,matView,matProj;//ワールド、ビュー、プロジェクション行列
D3DXMATRIX trans;//↑3つを掛けた行列を格納
D3DXVECTOR3 v(0.0f,0.0f,0.0f);//スクリーン変換したい座標 とりあえず適当に(0.0.0)
D3DXVECTOR4 vout;//変換後の座標を格納

//ビュートランスフォーム
D3DXVECTOR3 vEyePt( 0, 10,10 );
D3DXVECTOR3 vLookatPt( 1.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );

//プロジェクショントランスフォーム
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.33333f, 1.0f, 100.0f );

//変換行列作成
D3DXMatrixTranslation(&matWorld, v.x, v.y, v.z);
D3DXMatrixIdentity(&matWorld);
D3DXMatrixMultiply(&trans,&matWorld,&matView) ;
D3DXMatrixMultiply(&trans,&trans,&matProj) ;

//変換。適当に表示
D3DXVec3Transform(&vout,&v,&trans);
static char str[256];
sprintf(str,"%.02f,%.02f",vout.x,vout.y);
CFont::Print(str,0,0,0xff009900);
0476デフォルトの名無しさんNGNG
>>425
for (i = 0; i < 100; i++) if (p[i] == 0) printf ("p[%d] = 0\n", i);

これで1行だけど、入力・処理・出力を分けてないから気持ち悪いというわけだ
いまさらだけど
0477デフォルトの名無しさんNGNG
>>475
ビュウポート行列を掛けないとスクリーン座標は求まらんと思うが?
0478468NGNG
>>477
プロジェクショントランスフォームってのはパースつけるとこまでで、
その後更にビューポート座標に投影する変換が必要ってことでしょうか?
0479デフォルトの名無しさんNGNG
漏れもやったことがなかったのでためしにやってみた
ちといじってみた
    D3DXVECTOR3 v(10.0f,0.0f,0.0f);//スクリーン変換したい座標

    //ビュートランスフォーム
    D3DXVECTOR3 vEyePt( 0.0f, 0.0f,-10.0f );
    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
    D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );

    //プロジェクショントランスフォーム
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/2, 1.0f, 1.0f, 100.0f );
カメラ位置が( 0.0f, 0.0f,10.0f )で( 0.0f, 0.0f, 0.0f )を向いてアスペクト比を1.0にしてみた
あと視野角45度
スクリーン変換したい座標を(10.0f,0.0f,0.0f)にすれば結果が(1.0,0.0)(右端で高さは中心)になることが予想される
    float destX = (vout.x / vout.w);
    float destY = (vout.y / vout.w);
で見事予想した値が得られたのでこれで計算方法は間違ってないはず
これにアスペクト比を含めて考慮すればいいのかな
0480479NGNG
カメラ位置が( 0.0f, 0.0f,10.0f )→カメラ位置が( 0.0f, 0.0f,-10.0f )
です
0481468NGNG
>>480
わざわざすいません。
D3DXVec3Projectっていう関数を発見したんですが、
これで一発で出せたみたいです。
でも479で説明してもらった事があんまりハッキリ理解できてないので
後で困りそうですが・・・もうちっと勉強します。
なにしろありがとうございました。
0482デフォルトの名無しさんNGNG
DirectXってリフレッシュレートの変更ができない環境のほうが多いと聞いたのですが
自分が持っていない環境のできる/できないはどうやって調べたらいいですか?
それを調べる関数やプログラム、まとめサイト、メーカー資料などありましたら教えてください
0483デフォルトの名無しさんNGNG
リフレッシュレートを変えたがる奴は、ビデオカードが変更可能でも、
ディスプレイ側で表示不能だったらどうするつもりなんだろう?
ディスプレイにノーシグナル警告を表示させる嫌がらせソフトでも作りたいのだろうか?
0484デフォルトの名無しさんNGNG
DX9.0c October SDK を入れたのですが、101/104 キーボード+日本語 Win2K だと、
右シフト(DIK_RSHIFT)、右Ctrl(DIK_RCONTROL)、右ALT(DIK_RMENU)などが正常に検出できません…。
それぞれを押すと、0x00(未定義)、0x70(かな)、0x94(漢字)が検出されてしまいます。
自分のプログラムだけだと思ったら、SDK の DirectInput サンプルでも同じことが発生。
106/109 日本語キーボードだと問題なく検出できました。

101/104 英語キーボード使っている方、
SDK サンプルで上記キーが検出できるか実験していただけませんか?
ちなみに Win32 API の GetKeyboardState では全て問題なく検出できています。
素直にこっち使ったほうがいいのかなぁ…。
0485デフォルトの名無しさんNGNG
D3DXIntersect関数は
判定をしたいメッシュ(Xfile読み込んだメッシュ)へのポインタを渡せば
勝手に当たり判定してくれるわけですが
このメッシュはD3DXMatrixTranslationで移動させたりしたとしても
移動先の位置できちんと当たり判定を取ってくれるんでしょうか?
Pickサンプルのようにマウスとの当たり判定を取ろうとしてるんですが、
どうもメッシュがワールド座標の中心(初期位置)にあるときは
そこそこ取れているみたいですが(なぜだかちょっと誤差あり)、
移動させても判定位置はついていかず、中心に残ったままになってます。
0486デフォルトの名無しさんNGNG
当たり判定ぐらい自分で作れば?
0487デフォルトの名無しさんNGNG
>>485
判定する線を逆に行列変換すればいけるんじゃない?
0488485NGNG
>>487
それはやってるつもりなんですが、うまくいってないっぽいんですよねぇ。
「カメラの位置座標」と「マウスのスクリーン座標をワールド座標に変換した座標」を
結んだ直線との当たり判定を取ってます。
マウス座標をワールド座標に変換するにはD3DXVEC3Unprojectを使ってます。
でもこの関数が返してくれた値がちょっとばかり変な様子です。
が、その正当性を検証する以前に、とりあえずお聞きしたいのは、
D3DIntersect関数は判定するメッシュを
D3DXMatrixTranslationで移動させたりしていたとしても
移動先の位置できちんと当たり判定を取ってくれのでしょうか?
という事であります。これが分からないもので、
どこが間違えてて思うような結果になっていないか当たりがつけられないんです。
0489デフォルトの名無しさんNGNG
>>488
487さんの言っている事を理解できてないと思う。

D3DIntersectは対象のメッシュが持つ頂点座標そのままで判定する。
だから対象メッシュが別のローカル座標系に移動されているなら、当然そのままでの判定は無理。

これは判定する線も、そのローカル座標系に変換すれば簡単に解決。
具体的には対象メッシュを他の座標系に移した行列の、逆行列を使えばOK
0490485NGNG
そういうことですか。なるほど分かりました。ありがとうございます。
ちょっと試してみようと思います。
0491デフォルトの名無しさんNGNG
まぁようするに同じ土俵に立てと

WORLD座標系で比べるのが一番簡単かと
0492デフォルトの名無しさんNGNG
「深度情報を参照するのは しんどー」

(深度情報を参照するのはつらいです)
0493デフォルトの名無しさんNGNG
ワロタ
0494デフォルトの名無しさんNGNG
そんなくだらないギャグ飛ばしてるから地震が起きるんだよ。
0495デフォルトの名無しさんNGNG
地震がギャグのせいだというその自信はどこから?
0496デフォルトの名無しさんNGNG

 殺伐としたスレに救急車が!

          ┌┬┬┬┐
    ―――┴┴┴┴┴―――――、
   /.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||
  /.    ∧// ∧ ∧| ||      |||   ||
 [/____(゚_//[ ].゚Д゚,,) ||___|||   ||
 ||_. *  _|_| ̄ ̄ ∪|.|.       |ヽ. _| |
 lO|o―o|O゜.|二二 東|.|京 精神病院 | |
 | ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_|
   ̄ ̄`ー' ̄   `ー'  `ー'    `ー'
0497デフォルトの名無しさんNGNG
directx8でウインドウモードで描画する際に
デバイスコンテキストで文字を表示しようと思ったのですが
y軸方向へ数ドットずつずれて文字が表示されて困ってます
例えば
座標(0,0)にA
座標(0,10)にB
座標(0,20)にC
を表示させる場合

見た目には
座標(0,0)にA
座標(0,9)にB
座標(0,18)にC
が表示されるように見えて表示位置がずれてるんですけど
なんでこんな現象がおきるんでしょうか
X軸に対してはずれは起こらないみたいです
0498デフォルトの名無しさんNGNG
DirectX8というだけでどのインタフェイスを使っているのかすら書いていないが、
Direct3Dだとすると、まずDCを扱うメソッドは存在しない。
ということはウインドウから直接DCをとっているのだろうが、
そうだとするとDirectXと全く関係ないのでスレ違い。
0499デフォルトの名無しさんNGNG
>>498
directx8のDirect3Dで描画したグラフィックとのずれが生じてるのでやっぱdirectxと関係があります
Direct3Dで座標(0,50)に描画したグラフィックと
DCで座標(0,50)に描いた文字列が見た目にy軸方向に少しずつずれて表示されてます

このためにグラフィックと文字の対応があやふやになって見にくいのです
0500デフォルトの名無しさんNGNG
まず描画したものをキャプチャーして、
それぞれどの座標を指定したのかコメントを添えて提出しろ。
0501デフォルトの名無しさんNGNG
>>500
画像見てもらえばy軸方向に数字がすこしずつずれていってるのがわかると思います
http://houjicha.mxx.jp/up/img/img20041024220414.bmp
丸の画像は(0,0)からy軸方向に32ドットの間隔で配置
数字も同様に(0,0)からy軸方向に32ドットの間隔で配置してます
0502501NGNG
ウインドウの大きさを変化さすとそれに応じた割合で丸画像は拡大縮小されるけど
DCで書かれた数字は同じ位置に表示されたまま変化ないんだけど
それと関係あるのかな?
ウインドウの横幅と縦幅の初期設定と
directxの初期設定の
       // 横ドット幅設定
gl_d3dpp.BackBufferWidth
// 縦ドット幅設定
gl_d3dpp.BackBufferHeight
は全く同じにしてあるんだけどな…

なんでずれるんだろう?
0503デフォルトの名無しさんNGNG
>>501
>>498
0504デフォルトの名無しさんNGNG
>>502
つまり自分でウインドウサイズに合わせて、
描画するように指定しているだけの話だろう。
自らやっていることに文句を言うのは筋違い。
0505501NGNG
>>504
どこをどういじればいいのか教えてください
0506デフォルトの名無しさんNGNG
>>502
ウィンドウにはタイトルバーとかボーダーがあるの忘れてないか?
0507501NGNG
プログラム実行後ウインドウの大きさを一切変えないでも
ずれるんで困ってます
0508デフォルトの名無しさんNGNG
ウインドウのクライアント領域の大きさと、
デバイスサイズがずれているからだろう。
もはやDirectXの話とは無関係。
Windowsプログラミングの基礎からやり直せ。
0509501NGNG
>>506
といいますとどういうことでしょうか?
0510501NGNG
>>508
どこのスレで聞けばいいんでしょうか?
もしよろしければ誘導お願いします
0511デフォルトの名無しさんNGNG
>>510
聞くんじゃなくて基礎からやり直せといっている。
コトバツウジマスカ?
0512デフォルトの名無しさんNGNG
教えてあげればいいのに
0513デフォルトの名無しさんNGNG
GetSystemMetrics
AdjustWindowRect
とか
DirectX 全然関係ないですね!
0514デフォルトの名無しさんNGNG
システム情報を拾っても、メニューが二行になっただけで計算が崩壊するので、
普通は目的のサイズになるまで適当に繰り返すんだが、この話はスレ違いだ。
0515501NGNG
>>513
AdjustWindowRect使ったらうまいこといきました

レスくださったみなさんありがとうございました
0516デフォルトの名無しさんNGNG
DirectX9.0cで追加された

PS2.aと2.bは従来の2.0は何がどう違うんでしょうか。
0517デフォルトの名無しさんNGNG
開発環境
:WindowsXP
:VC++6.0
:DirectX7 SDK

DirectDrawで320*240*16のフルスクリーンをやってみたけど、
全体的に画面がずれてしまいます。
マウスカーソルを一番右に寄せると、実際のディスプレイの右端から2〜3cm程度の箇所で、カーソルが止まってしまいます。
自分が作ったもの以外にも、フリーで流れてるソフトで320*240のフルスクリーンでも同じ現象が見られました。

EnumDisplayModesで、対応しているディスプレイを調べてみても、ちゃんと320*240*16は対応しているみたいなんですが…。
フルスクリーン時にプリントスクリーンして、ペイントに貼り付けてみたらちゃんと320*240になってました。
試しに640*480にしたら、ちゃんと描画されてました。

320*240で画面がずれるのは、うちの環境に限った事なんでしょうか?
もし、対処方があれば教えてください。
0518デフォルトの名無しさんNGNG
>>517
ディスプレイの調節しろ。
0519デフォルトの名無しさんNGNG
>>517
ここはDirectX初心者質問スレであって、PC初心者スレではない。
0520デフォルトの名無しさんNGNG
>>517,518
すみませんでした。ディスプレイ調節したら治りました。
俺がアホでした…。OTL
わざわざ、ありがとうございました。
0521517NGNG
アンカーミスった…OTL
>>518,519
ありがとうございました。
0522デフォルトの名無しさんNGNG
1ウィンドウ内にDirextXの画面と
通常GUI画面を同時に表示する方法が解りません。
※ウィンドウの右半分がDirectX,左半分がWin32Dialogといった感じです

環境は
Visual Studio .NET 2003 VC++7.0
Win32 & DirectX 9.0 SDK
です

通常のウィンドウリソースで1ウィンドウ内に2つのダイアログを表示する場合を
簡易的に説明します(引数は判断に必要そうなのしかかいてません)
0523522NGNG
hInstance < WinMain から取得

main_x = 0;
main_y = 0;
main_w = 400;
main_h = 200;

mainwindow_class = "hoge";
hMainWindow = CreateWindow(mainwindow_class,main_x, main_y, main_w, main_h, PARENT_WND_NULL, hInstance);

sub0_class = "myDialog0";
sub1_class = "myDialog1";
style = WS_VISIBLE | WS_CHILD;
sub0_x = 0;
sub0_w = 200;
sub1_x = sub0_w;
sub1_w = 200;
sub_y = 0;
sub_h = 200;

hSubWindow0 = CreateWindow(sub0_class, style, sub0_x, sub_y, sub0_w, sub_h, hMainWindow, hInstance);
hSubWindow1 = CreateWindow(sub1_class, style, sub1_x, sub_y, sub1_w, sub_h, hMainWindow, hInstance);

以上のような手順でリソースを作成すると
問題なく表示されます。
0524522NGNG
hInstance < WinMain から取得

main_x = 0;
main_y = 0;
main_w = 400;
main_h = 200;

mainwindow_class = "hoge";
hMainWindow = CreateWindow(mainwindow_class,main_x, main_y, main_w, main_h, PARENT_WND_NULL, hInstance);

sub0_class = "myDialog0";
sub1_class = "myDialog1";
style = WS_VISIBLE | WS_CHILD;
sub0_x = 0;
sub0_w = 200;
sub1_x = sub0_w;
sub1_w = 200;
sub_y = 0;
sub_h = 200;

hSubWindow0 = CreateWindow(sub0_class, style, sub0_x, sub_y, sub0_w, sub_h, hMainWindow, hInstance);
hSubWindow1 = CreateWindow(sub1_class, style, sub1_x, sub_y, sub1_w, sub_h, hMainWindow, hInstance);

以上のような手順でリソースを作成すると
問題なく表示されます。
0525522NGNG
はう・・・523と5242重投稿になってしまいました;;すいません
0526522NGNG
ここで DirextX の画面を hSubWindow0 に割り当てようと思い
IDirect3D9::CreateDevice
のhFocusWindow引数に hSubWindow0 を渡そうと考えたのですが

MSDN には

hFocusWindow
[in] この MicrosoftR Direct3DR デバイスでフォーカスを設定するウィンドウ ハンドル。
指定するウィンドウは、フルスクリーンの最上位ウィンドウでなければならない。

と書いてあって困ってしまいました。
最上位とは
HWND_DESKTOP
意外許されないのでしょうか?
*単一ウィンドウにDirectXをわりあてる時はHWND_DESKTOPを使用していました

ためしに, hFocusWindow に hSubWindow0 を渡してみました。
しかしD3D_OK を返すのですがだめでした。
DirectXに割り当てた hSubWindow0 は画面が更新されない状態で何も表示されていない状態になっていました。
DirectXのプログラム部分は画面を黒く塗りつぶす単純なものだけを入れて確認しました。
単一ウィンドウの場合は不具合なく動くのですが・・
0527522NGNG
どうすれば解決できるのでしょうか・・?
フリーの3Dモデルビューワーなどでは結構やっているのをみるので、可能だとは思うのですが・・・
よろしくお願いします。
0528デフォルトの名無しさんNGNG
デバイスを作るときはトップフレーム、
描画するときはサブウインドウを指定すればいいだけ。
0529デフォルトの名無しさんNGNG
>>527
っ[ IDirect3DDevice9::Present ]
0530デフォルトの名無しさんNGNG
ボクセルのデータをボリュームレンダリングするのに
ボリュームフォグをつかうと高速にできたりするんでしょうか?
現在はVTKというライブラリを使っているのですが そのなかでは レイトレーシング法での表示とテクスチャをつかった擬似表示があります
しかし あまりにも表示速度が遅いので(たった256*256*35のデータでも3FPS程度)
DirectXのHLSLあたりをうまくつかって高速に処理できないかと考えているのですがさっぱりわかりません
フォグがだめならピクセルシェーダでレイトレーシングさせたらCPUより高速にできやしないかとも考えているのですが できるんでしょうか?
ご教授お願いします
0531 ◆Z0vd5w812U NGNG
>>530
GPUレイトレーシングは最近ホットな分野。
つまり、「できる」
0532デフォルトの名無しさんNGNG
VTKはハードウェアアクセラレーションが利用できるはずだから内部ではすでにやってたりはしないの?
マシンの性能にもよるけど256*256*35って結構なピクセル数レンダリングしてるんじゃないか?
とてもCPUだけで出せるパフォーマンスとは思えないけど
まぁ専門じゃないんで思うだけなんだけどね

そういう用途のマシンてただのPCじゃないんでしょ?
興味本位で聞くんだけど、どのくらいのスペックのマシン使ってるの?
0533デフォルトの名無しさんNGNG
いきなり長文でごめんなさい。よかったら下のプログラムのどこが悪いのか教えてほしいです。
ビルドはできるのですが、実行途中で”このプログラムは応答していません”てでてきて。途中
で強制終了するしかなくなるの。。。どこらへんでどんなふうにでるかいいますと実行してActive
Movie Windowがでてきて5秒後くらいに出てくるの。なんでかわかんないですT_T。プログラムカキコ
します。
#include "..\include\dshow.h"
#include "..\include\qedit.h"
#include <iostream>
using namespace std;
//ピンの列挙
IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir)
{
BOOL bFound = FALSE;
IEnumPins *pEnum;
IPin *pPin;
pFilter->EnumPins(&pEnum);
while(pEnum->Next(1, &pPin, 0) == S_OK)
{
PIN_DIRECTION PinDirThis;
pPin->QueryDirection(&PinDirThis);
if (bFound = (PinDir == PinDirThis)) // 引数で指定した方向のピンならbreak
break;
pPin->Release(); //pPinの解放          
}
pEnum->Release(); //pEnumの解放
return (bFound ? pPin : 0);
}
0534デフォルトの名無しさんNGNG
//残り
int main(int argc, char* argv[])
{
CoInitialize(NULL);
------------------------------途中省略-------------------------
// 3. キャプチャビルダ(キャプチャグラフやその他のカスタムフィルタグラフ)の作成
ICaptureGraphBuilder2 *pBuilder = NULL;
CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC,
IID_ICaptureGraphBuilder2, (void **)&pBuilder);
pBuilder->SetFiltergraph(pGraph);
//ファイルファイタフィルタの設定
IBaseFilter *pMux = NULL;
IFileSinkFilter *pSink = NULL;
// 4. 一枚撮る
// 4-1. サンプルグラバの設定
IBaseFilter *pF = NULL; //ファイルを制御するメソッド作成
ISampleGrabber *pSGrab; //フィルタグラフ内の通る個々のメディアサンプル作成
CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (LPVOID *)&pF);
pF->QueryInterface(IID_ISampleGrabber, (void **)&pSGrab);
// 4-2. メディアタイプの設定
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video; // Sample Grabber の入力ピン(Capture Device の出力ピン)はUYVY
mt.subtype = MEDIASUBTYPE_UYVY;
mt.formattype = FORMAT_VideoInfo;
pSGrab->SetMediaType(&mt);
// 4-3. フィルタグラフへ追加
pGraph->AddFilter(pF, L"Grabber");
0535デフォルトの名無しさんNGNG
 //残り2
 // 4-4. サンプルグラバの接続
IPin *pSrcOut = GetPin(pSrc, PINDIR_OUTPUT); // A
IPin *pSGrabIN = GetPin(pF, PINDIR_INPUT); // B
IPin *pSGrabOut = GetPin(pF, PINDIR_OUTPUT); // C
pGraph->Connect(pSrcOut, pSGrabIN); //ピンを他のピンと接続する
pGraph->Render(pSGrabOut);
// 4-5. グラバのモードを適切に設定
pSGrab->SetBufferSamples(TRUE);
pSGrab->SetOneShot(FALSE);
// ファイルへ
pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, L"C:\\dvcap_tmp.avi", &pMux, &pSink);
pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, pSrc, NULL, pMux);
REFERENCE_TIME rtStart = 50000000, rtStop = 80000000;
pBuilder->ControlStream( &PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, pSrc, &rtStart, &rtStop,
0, 0 );
// ディスプレイへ
pBuilder->RenderStream( &PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pSrc, NULL, NULL );
HRESULT hr;
0536デフォルトの名無しさんNGNG
//最後
// 5. キャプチャ開始
IMediaControl *pMediaControl = NULL;
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pMediaControl->Run();
long *buffer = NULL;
long bufsize = 0;
// サイズ取得
do{
pSGrab->GetCurrentBuffer(&bufsize, NULL);
}while(bufsize <= 0);
cerr << "bufsize : " << bufsize << endl;
buffer = (long *)malloc(sizeof(char)*bufsize);
if(buffer==NULL){
cerr << "can't allocate memory\n";
return 1;
}
// 一枚キャプチャ
MessageBox(NULL, "Click to capture & stop.", "DirectShow", MB_OK);
// バッファ取得
hr = pSGrab->GetCurrentBuffer(&bufsize, buffer);
if(hr==S_OK){
cerr << "Capture Succeeded\n";
}
-------------Release省略
長すぎてごめんなさい。よろしければ情報お願いします。初心者なんで無礼かもしれませんが。。。
0537530NGNG
>>532
今使ってるはただのPCです(まだ機能の検証段階なので)
VTKにはハードアクセラレーション機能はあるのですが
専用のハードウェアを搭載しないと使えないので ふつうのPC環境ではうごきません(ハード処理でもカクカクらしいです)
ボリュームレンダリングは基本的にレイトレーシングという光の進路を追跡して ボクセルデータを平面に映しこむ処理をするのですが
これは3Dグラフィックスの機能をなんら使用していないので CPUのみの力に頼ります
最近のGPUは非常に高速なのでGPUに処理をさせた場合どのくらいの結果が得られるのか
ゲーム技術を応用して 擬似的に高速な表示方法はないのかを考えているところです
なにぶん学部4年でCGの教育をまったく受けていないものでぜんぜん解っていないのですが 努力していこうと思います
0538530NGNG
>>531
たしかにググってみるとものすごく熱くなってる分野であることが実感できました
最高レベルのGPUならそこそこのスピードが期待できそうなのでがんばって勉強していきたいと思います
0539デフォルトの名無しさんNGNG
DirectInputに関して質問なのですが、パッドを入力装置として使用するにはどうすればいいのでしょうか?
SDKを読んでInputオブジェクトを作り、次にInputデバイスの生成まで理解できたのですが、
それから一向に分からないので教えてください。
よういされているゲームパッド用のクラスを宣言すればいいのでしょうか?
それとゲームパッドから入力された情報はどのような形式でどこに格納されるのでしょうか?
0540デフォルトの名無しさんNGNG
>>533-536
マルチうぜー
0541デフォルトの名無しさんNGNG
>>539
まずはキーボードかマウスの入力やってみたら?
0542デフォルトの名無しさんNGNG
>>533-536
そんなに長くなるくらいならソース上げろ
あとマルチするな
0543デフォルトの名無しさんNGNG
ワンショットでいいなら pSGrab->SetOneShot(FALSE); は 引数がTRUEじゃね?
0544デフォルトの名無しさんNGNG
質問スレは公開デバッグセンターではない
0545デフォルトの名無しさんNGNG
539です
マウスやキーボードはマニュアルに書いてある通りやればできるのですが
パッドやジョイスティックになると理解できなくなるんです。
パッド等の入力装置を使う場合には自分で設定したクラスを宣言しなければならないんでしょうか?
それともキーボードやマウス同様にもう既に準備されてるんでしょうか?
0546533-536NGNG
長文すみませんでした。デバッガ使用しましたら無限ループしてるとこ発見しました。
みなさんありがとうございました。
0547デフォルトの名無しさんNGNG
他にも言う事があるだろう。
0548デフォルトの名無しさんNGNG
しつもんです
ttp://gamdev.org/up/img/1714.zip
上のファイルをVC6でビルドすると、外部参照未解決のエラーが出ます。
どうもD3DXMatrixPerspectiveFovLHメソッドを入れるとd3dx9.lib内でエラー
が出るのですが、原因とかわかりますでしょうか。

0549デフォルトの名無しさんNGNG
>548
VC.NETだが普通にコンパイル通った
0550548NGNG
あれー?(´・ω・`)
自分とこはこうでます

プロジェクト 'EGAS - Win32 Debug' 用の中間ファイルおよび出力ファイルを削除しています。
--------------------構成: EGAS - Win32 Debug--------------------
コンパイル中...
Core.cpp
WinInfo.cpp
DXInfo.cpp
Stage.cpp
WinMain.cpp
リンク中...
d3dx9.lib(cpudetect.obj) : error LNK2001: 外部シンボル "___security_cookie" は未解決です
d3dx9.lib(ssefasttable.obj) : error LNK2001: 外部シンボル "___security_cookie" は未解決です
d3dx9.lib(d3dxmathx3d.obj) : error LNK2001: 外部シンボル "___security_cookie" は未解決です
d3dx9.lib(cpudetect.obj) : error LNK2001: 外部シンボル "@__security_check_cookie@4" は未解決です
d3dx9.lib(ssefasttable.obj) : error LNK2001: 外部シンボル "@__security_check_cookie@4" は未解決です
d3dx9.lib(d3dxmathx3d.obj) : error LNK2001: 外部シンボル "@__security_check_cookie@4" は未解決です
EGAS.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー

EGAS.exe - エラー 7、警告 0


(´・ω・`)
0551デフォルトの名無しさんNGNG
>>550
DirectXのVC6用のExtrasパッチを上書きしる
0552548NGNG
>>551
Extras落として上書きしたらビルドできました。
ありがとう!
0553梅宮辰夫NGNG
シンボルッ
シンボルッ

外部のしん〜ぼる〜ぅぅ〜
0554デフォルトの名無しさんNGNG
メッシュについての質問なのですが、
XファイルでFrameTransformMatrixに入っている行列は
参照したり変更したりできるんでしょうか?
プログラム中でメッシュオブジェクトを作って中身を入れる
サンプルというのはいくつかありますが、この行列の
扱いはどうなっているものかと。
0555デフォルトの名無しさんNGNG
みんなXファイルとかメッシュとか結構使ってるんだな
0556デフォルトの名無しさんNGNG
SDK落としたんですが、
有効なWin32アプリケーションではありません
といわれてインストーラが起動しないんですが、対処方法を教えて頂けないでしょうか?
0557デフォルトの名無しさんNGNG
補足:
再ダウンロード、Irvineでダウンロード等やってみましたが、ダメでした。
0558デフォルトの名無しさんNGNG
独自形式
となると自分でモデリングソフト作るか
独自形式のコンバーター作らないといけないし
手間掛かりすぎる
0559デフォルトの名無しさんNGNG
>>556
プロキシ抜くとか
雑誌付録CD-ROMを探すとか
0560デフォルトの名無しさんNGNG
DirectXを初期化するときに、描画する領域を指定する方法を教えてください
例えばウィンドウの描画領域が640×480のときに、
DirectXで描画する領域を
始点100, 100
幅 320
高さ240

とか、三面図+透視図のように描画する領域を4つにして
ウィンドウの画面全体にDirectXで描画する領域を4つにする
みたいなことがやりたいんです。
0561デフォルトの名無しさんNGNG
DirectX8で点や線を描くにはどういう命令を使えばいいのでしょうか?
0562デフォルトの名無しさんNGNG
>561
typedef enum _D3DFILLMODE {
    D3DFILL_POINT = 1,
    D3DFILL_WIREFRAME = 2,
    D3DFILL_SOLID = 3,
    D3DFILL_FORCE_DWORD = 0x7fffffff
} D3DFILLMODE;
0563デフォルトの名無しさんNGNG
バイナリ実行するとき画面更新の頻度を無理やり半分とかに抑えるツールってない?
0564デフォルトの名無しさんNGNG
ここはクレクレ厨房が書き込んでいいスレではない。
厨房板に帰れ。
0565デフォルトの名無しさんNGNG
>>562
D3DFILLMODEを検索してみましたが
利用例が載ってないのでどうやってつかえばいいのかわかりません
使用例などを教えていただけないでしょうか
0566デフォルトの名無しさんNGNG
使い方が分からない場合は、分かるまで試行錯誤を繰り返せば、そのうち何とかなる。
プログラムはそういうものだ。
0567デフォルトの名無しさんNGNG
>>566
一つ例がないと取っ掛かりがないので試行錯誤しづらいです
0568デフォルトの名無しさんNGNG
試行錯誤しづらいということ自体を、まず試行錯誤すればいい。
0569デフォルトの名無しさんNGNG
DirectX8で画像の表示の仕方はたくさん載ってるのに
なんで点とか線の描画法は載ってないのかな…
資料がなさすぎです
0570デフォルトの名無しさんNGNG
>>569
DrawPrimitiveUPあたりから始めれ
0571デフォルトの名無しさんNGNG
>>570
ヒントありがとうございます
0572名無しさん@お腹いっぱい。NGNG
・RTS系のゲームで建物ユニットを置くときにメッシュが
 テクスチャと青っぽい色をブレンドしたみたいな色でレンダリングされたり
・MMO系のゲームでキャラクターとか落ちてる小物とかをマウス選択すると
 発光したような感じの色でレンダリングされたり
・アクション系のゲームでダメージを喰らった時に赤っぽく色が点滅したり
 
そんな感じで、読み込んだXfileに指定の色をブレンドしてレンダリングするには
どうしたらよいでしょうか。
DX9を使っていますが、ピクセルシェーダーとかは使わずに実現したいです。
0573デフォルトの名無しさんNGNG
D3DPT_LINELISTはプログラムが勝手に点と点をつなげるみたいですけど
自分が意図した順番で点と点を線でつなぐにはどうしたらいいのでしょうか?
0574デフォルトの名無しさんNGNG
普通は指示したとおりにしか動作しないのだが、>>573のところでは勝手に動くのか。
AI搭載の最新環境なんだろうな。
0575デフォルトの名無しさんNGNG
>572
マテリアル変えればいい
0576デフォルトの名無しさんNGNG
>>574
>>573の件は解決しました

頂点色が白以外だと表示したビットマップと頂点色がブレンドされてしまうんですが
ビットマップの色だけが表示されるようにするにはどうしたらいいのでしょうか?
0577デフォルトの名無しさんNGNG
D3DRS_COLORVERTEX

てか一度ヘルプのD3DRENDERSTATETYPE 列挙型に目を通して
SetRenderStateでどういったことができるのか大雑把にでもいいので把握することをお勧めする
もしかしたらライティングもいじらないといけないかも
0578デフォルトの名無しさんNGNG
おまえらゲームが完成するまで付き合わされるぞw
0579デフォルトの名無しさんNGNG
付き合わされても結局完成しないに首ちょん一つ。
0580デフォルトの名無しさんNGNG
>578
まぁ初心者質問スレだからいいんじゃね?
とはいえ漏れも常駐しているわけではないので、
ググルなりヘルプで検索かけるなりすることを覚えたほうがいいぞ

てかスレのルールは
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
なんでよろしく > 質問するみなさん
0581デフォルトの名無しさんNGNG
>>577
今調べて
gl_lpD3ddev->SetRenderState(D3DRS_COLORVERTEX, FALSE);
やってみましたけどブレンドされてしまいます
0582デフォルトの名無しさんNGNG
テクスチャ貼り付ける場合は頂点色は白じゃないとブレンドされて変な色になるような仕様なのかな…
0583デフォルトの名無しさんNGNG
基本的に教える側も

センセイ方に学校で懇切丁寧に[教えていただいてる]セーガクなので

あまり難しいことや「習ってない」ことは答えられないので
あまり期待しないように。
0584556NGNG
>>559
プロキシは入れてないんですが。
ミラーサイトみたいのないっすよね……M$じゃ。
0585デフォルトの名無しさんNGNG
D3DXVECTOR3構造体にXYZを入れられるみたいに
HPB(or YPR)を入れる構造体ってないですか?
別に自分で作ってもいいのですが、
あれば使ったほうが便利だし統一性があってなんとなく気持ちよいので
使いたいのですが。
0586556NGNG
すまん。結局実行出来ないみたいなんで、exeを解凍して、出てきたexeを更に解凍して、
CDのファイル構成の様な物が出てきたので、そこでやっとインスコ出来ました。
0587デフォルトの名無しさんNGNG
ひとつ質問させてください。

DirectX9+VS.netでスプライト描画をしようとしているのですが、
先日SDKをアップデートしたところ
ID3DXSprite::Drawメソッドが「7個の引数は指定できません」
というエラーが出てくるようになってしまいました
アップデートする前はエラー等は全く無かったのですが・・・

pSprite->Draw(pTexture,&rect,&vec2Scale,&vec2RotationCenter,0,&vec2Position,0x55ffffff);
こんな感じの使い方してます。

MSDNの日本語ヘルプみる限りでは引数7個なのに・・・

どなたかご教授願えませんでしょうか(´・ω・)
0588デフォルトの名無しさんNGNG
>>587
日本語DX9のヘルプは、アップデートしたSDKのヘルプとは違うものだろ
適合するヘルプを読め
0589デフォルトの名無しさんNGNG
しかし2004/9/27作成の日本語ヘルプすら間違ってるってのは怠慢だよなー

>>587
これがGoogle検索だ!
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/directx9_c/directx/graphics/reference/d3dx/interfaces/id3dxsprite/draw.asp
0590589NGNG
スマン、まちがった
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/d3dx/interfaces/ID3DXSprite/Draw.asp
0591デフォルトの名無しさんNGNG
>>588-590
ありがトン(´;ω;)

消えた二つの引数はどこで処理されるんだろう・・・
0592587NGNG
たびたびごめんなさい
今度はスプライトが表示されなくなりますた・・・

VOID DrawSprite()
{
pDevice->Clear( 0, NULL, D3DCLEAR_TARGET,D3DCOLOR_XRGB(100,100,100), 1.0f, 0 );
if( SUCCEEDED( pDevice->BeginScene() ) )
{
RECT rect={0,0,100,100};
D3DXVECTOR3 vec3Center( 0,0,0);
D3DXVECTOR3 vec3Position(0,0,0);
pSprite->Draw( pTexture, &rect, &vec3Center, &vec3Position, 0xffffffff);
pDevice->EndScene();
}
pDevice->Present( NULL, NULL, NULL, NULL );
}

pDeviceにはすでに画像のポインタははいってます。
どこでかわってしまったのでしょうか・・・。
「D3DX: ID3DXSprite::Draw called outside a Begin/End pair」
すでに両側でやってるはずなのですが・・・うーん?
0593デフォルトの名無しさんNGNG
D3DX: ID3DXSprite::Draw called outside a *Begin/End* pair

BeginScene/EndScene じゃない。
ID3DXSpriteのメンバを良く見る。
0594593NGNG
「BeginScene/EndScene じゃない」
だと、語弊があるか…。

BeginScene/EndScene
Begin/End
両方のペアが必要ってこった。
0595587NGNG
>>593
ありがとうございました・・・
Beginメソッドいれるだけでできました。

pSprite->Begin(D3DXSPRITE_ALPHABLEND);
   (略)
pDevice->EndScene();
こんな感じで。

しかし、スケール情報と回転のための数値はどこへ・・・
0596デフォルトの名無しさんNGNG
英語のドキュメントも見るようにした方がいいよ。DrawTransformでマトリクス使ってやるようになったんで。
最初は使いにくく思うかもしれんけど、マトリクス渡すだけで良くなったので3Dと合わせて使うのに便利になった。
0597デフォルトの名無しさんNGNG
Summer2004なんですけど

この座標系ってどうなってるんですか
Drawでスプライト表示させるとき、座標を-で指定しないとちゃんと表示されないんですが



0598597NGNG
アホだ
間違ってCenterに座標設定してた
ちゃんとドキュメント読んでこよ…

すみません
0599デフォルトの名無しさんNGNG
あ、ほう。
0600デフォルトの名無しさんNGNG
毎フレーム呼ばれる関数(いわゆるゲームループ)から、
以下のような線の描画関数を毎フレーム数百回くらいループをまわして呼ぶと
だんだん重くなって挙動がおかしくなって最悪PCが落ちるのですが、
使い方が間違っているのでしょうか?(間違ってるからそうなるんだと思いますが…)
p1,p2を毎フレーム変えて線をアニメーションさせたりしたいのですが、
その場合、正しくはどんな手順で書いたら良いのか教えてください。

void DrawLine(LPDIRECT3DDEVICE9 lpd3dDev, D3DXVECTOR3 p1, D3DXVECTOR3 p2)
{
CUSTOMVERTEX vertices[] = {
{ p1.x, p1.y, p1.z, 1.0f, 0xffff0000, },// x, y, z, rhw, color
{ p2.x, p2.y, p2.z, 1.0f, 0xff00ff00, }
   };
// Create the vertex buffer.
lpd3dDev->CreateVertexBuffer( 2*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT, &g_pVB, NULL ) ) ;

// Now we fill the vertex buffer.
VOID* pVertices;
g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) ;
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();

lpd3dDev->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
lpd3dDev->SetFVF( D3DFVF_CUSTOMVERTEX );
lpd3dDev->DrawPrimitive( D3DPT_LINELIST, 0, 1 );
}
0601デフォルトの名無しさんNGNG
>>600
おい、人質を解放しろよ。
0602デフォルトの名無しさんNGNG
>>601
ありがとうございます。VBを開放したらなんとなく大丈夫っぽくなりました。
ただそれ以外の部分もこれで正しいのかどうか自信がないのですが、
毎フレームごとにVB作って開放してって言うのを繰り返してよいのでしょうか?
もちろんハード性能にもよると思うのですが、
たった1000本ほどライン描画するだけでFPSが半分くらいになります。
そういうものって思ってよいのでしょうか。
0603デフォルトの名無しさんNGNG
その関数を1フレームに1000回読んでるなら、1回で1000本分のバーテクスバッファ作って1回で表示するように。
そうしてるならスペック不足かなんかじゃないかな。リリースビルドにしてみたら?
0604デフォルトの名無しさんNGNG
>>602
基本的に作りがマズイ。
毎フレーム頂点バッファを作成したり、
1000回もLock()、DrawPrimitive()を呼んだりしてはいけない。

>>602の修正するべき点は、

・初期化の段階でライン1000本分の頂点を格納できる頂点バッファを作る。
・1フレームでロックするのは1回だけにする。 (ライン描画時)
・ロック後はすばやく頂点座標を書き換えてアンロックする。
・1フレームでDrawPrimitiveを呼ぶのは1回だけにする。 (ライン描画時)
・それでも動作が遅い場合は頂点バッファを動的メモリ(AGP)に配置してみる。

早い話が1000本まとめて描画しろってこと。(>>603と同じ)

Create系、Lock系、DrawPrimitive系の処理は重いので
呼び出し回数を極力減らすようにすること。
0605デフォルトの名無しさんNGNG
DrawPrimitiveUPのD3DPT_LINELISTでライン描いたら指定した色じゃなくて他の色が描かれたんですけどなんでですか?
そのラインは平行移動できるようにしてあるので他の点に接触したときにに点の色に影響受けて色が変化します
点に接していないときは勝手に消えて点に接触すると現れます
0606デフォルトの名無しさんNGNG
>>605
ディスプレイ上の1ドットとバックバッファ上の1ピクセルが
1:1になってないような場合必然的にそうなると思われます

赤赤青赤赤 を4ドットで表現しなくてはならない場合
赤紫紫赤 になる という事と同じかと
0607デフォルトの名無しさんNGNG
Xファイルのデータの構造みたいなのってどこかに載ってないんでしょうか?
0608デフォルトの名無しさんNGNG
>607
>1
>3.SDKを見ても、Googleで検索しても、いまいち理解できない人
へるp
0609デフォルトの名無しさんNGNG
>>606
お返事ありがとうございます
どうすれば1:1に対応さすことができるのでしょうか?
0610デフォルトの名無しさんNGNG
危ないからさすなよ。
0611デフォルトの名無しさんNGNG
ひょっとしてあれか
ちょっと前のあれと同じオチか…
0612554NGNG
失礼しました。あの行列はメッシュオブジェクトとは別のものでした。
電波の缶詰さんのとこのサンプルでも、FrameTransformMatrixは
独立して扱っていました。

というわけで自己解決いたしました。
0613デフォルトの名無しさんNGNG
フルスクリーンモードかどうかはどうやって判別するのですか?
タスク切り替えで勝手にウィンドウモードになって困ります。
0614デフォルトの名無しさんNGNG
>>613
デバイスロストしたときの復帰方法が適当すぎるだけだと思われ
コピペじゃなくてちゃんと理解して書きましょう
0615デフォルトの名無しさんNGNG
質問のしかたが合ってるかどうか・・・

256色の全画面モードでパレットをいじっているのですが、
IDirectDrawPalette_SetEntriesとかってチップによっては処理が遅くなりますか?
Matrox > S3 になってるのですが。
0616613NGNG
>>614
理解できません。
0617デフォルトの名無しさんNGNG
>>613
>タスク切り替えで勝手にウィンドウモード
ってのは、正常な動作じゃないの?
まぁ俺が質問の意図をよく理解してないのかもしれないが…。
0618デフォルトの名無しさんNGNG
DirectXにはGDIにあるような円を描画する機能は無いのでしょうか?
0619デフォルトの名無しさんNGNG
>>618
2DならバックバッファにGetDCしてそのデバイスコンテキストでGDI関数を使う。

3Dだと線で描く必要があったかと。
0620デフォルトの名無しさんNGNG
というか堂考えても>>613の日本語がおかしい
0621デフォルトの名無しさんNGNG
山岡さん!ケリー候補を慰める料理を考えて!
0622デフォルトの名無しさんNGNG
誤爆スマソ
0623613NGNG
>>617
あっ、そうなのですか。
では他のタスクがアクティブになってフルスクリーンモードが解除された後、
ゲームがアクティブになってもフルスクリーンになってくれないのは仕様なのでしょうか?
ウィンドウモードで最大化されて表示されてしまって良くないと思います。



では、フルスクリーンモードが解除された事はどうやって知ることができるのでそうか?
0624デフォルトの名無しさんNGNG
>>623
ゲームがアクティブに戻ればまたフルスクリーンに戻るはずだけど…?
ウィンドウかフルスクリーンかは
D3DPRESENT_PARAMETERS の Windowed メンバで決まると
思うんだが、別にいじってないの?
0625624NGNG
あ、デバイスロスト時にしっかりReset処理してればの話だけど。
0626デフォルトの名無しさんNGNG
DirectX9 2003Summer + VC6.0を利用しています.
正五角形の表示させようとしています.
//////////////////////////////
D3DXCreateMeshFVF(3,// 面の数
5,// 頂点の数
D3DXMESH_MANAGED, FVFst, device, &m_pMesh);
// 頂点を設定
struct VERTEX *pVertex;
m_pMesh->GetVertexBuffer(&m_pVB);
m_pVB->Lock(0, 0, (void **)&pVertex, 0);
int i = 0;
pVertex[0].p = D3DXVECTOR3( 1.0f, 0.0f, 0.0f );
pVertex[1].p = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
for(i = 2; i < 5; i++)
{ pVertex[i].p = D3DXVECTOR3(
cosf(D3DXToRadian(108 * (i - 1))) * pow(-1, i) + pVertex[i - 1].p.x,
sinf(D3DXToRadian(108 * (i - 1))) * pow(-1, i) + pVertex[i - 1].p.z, 0.0f);
}

// インデックスバッファを設定
DWORD *pIndex;
m_pMesh->GetIndexBuffer(&m_pIB);
m_pIB->Lock(0, 0, (void **)&pIndex, 0);
pIndex[i++] = 4; pIndex[i++] = 3; pIndex[i++] = 0;
pIndex[i++] = 3; pIndex[i++] = 2; pIndex[i++] = 0;
pIndex[i++] = 2; pIndex[i++] = 1; pIndex[i++] = 0;
m_pIB->Unlock();

D3DXComputeNormals(m_pMesh, NULL); // 法線ベクトル
/////////////
改行が多いので2度に分けます
0627626NGNG
イメージは↓こんなかんじです.
ttp://up.isp.2ch.net/up/2543664e58c8.gif
実行結果は↓です.
左は,D3DXCreateMeshFVFの第一引数を3に,右は5に変えただけです.
ttp://up.isp.2ch.net/up/72cb2b2bcee3.gif
4に変えても左と同じ結果になりました.

頂点番号が順番に0,1,2,3,4となり,
インデックスバッファに頂点番号を指定して3つずつで1つの面を作っている.
と思っています.
そもそも理解が間違っているのでしょうか.
ご指摘お願いします.
0628デフォルトの名無しさんNGNG
インデックスをDWORDで扱ってるからそうなる。

× : DWORD *pIndex;
○ : WORD *pIndex;

>>628のインデックスバッファの中身は実際にはこうなってるはずだ
4,0,3,0,0,0,3,0,2,0,0,0,2,0,1,0,0,0

3頂点ずつ(面)で分割すると
[4.0.3], [0.0,0], [3.0.2], [0.0.0], [2.0.1], [0,0,0]

面の数を5以上にしてやっと全ての面が描かれている
[4.0.3], [3.0.2], [2.0.1]
0629628NGNG
↑のアンカーは>>626の間違いです・・・ orz =3

WORDに変更しても、カリングがでデフォルトのCCWのままだと
何も表示されなくなるので注意。

インデックスを時計回りで指定するか、
もしくはD3DCULLMODEをCW or NONEに設定する必要がある。
0630デフォルトの名無しさんNGNG
DirectX9.0c Direct3D のサンプルの
CustomUI
って、
windows2000だとうまく動かないんですか?

付属のバイナリも文字化けするし、自分でビルドしてもダメポ。
0631630NGNG
上げ忘れ。

環境は
win2000
DirectX9.0c
GF4Ti4200
アスロンXP
VC6sp6

です。
.NETも新しいの入ってるし・・・。

XPじゃないとだめなんですかねぇ・・・。

サンプルソースながめるとしますか・・・。
0632630NGNG
いつもの癖で、ついまたさげてしまった・・・。orz

連投すいません。
0633630NGNG
void InitApp()内にて、
g_SampleUI.SetFont( 3, L"MS ゴシック", 16, FW_NORMAL );と、フォント追加して、
pIMEEdit->GetElement( 0 )->iFont = 3;
pIMEEdit->GetElement( 1 )->iFont = 3;
pIMEEdit->GetElement( 9 )->iFont = 3;
と、設定することで、できました・・・。

なんだか、どろくさいなぁ・・・
もっとスマートにできないもんでしょうか?
0634デフォルトの名無しさんNGNG
GDIというと欠陥エンジンが思い浮かんでしょうがないのですが。
0635623NGNG
>>624-625
DirectDrawCreate(nil, DD, nil);
DD.SetCooperativeLevel(Handle, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN);
DD.SetDisplayMode(Width, Height, BitCount);
でディスプレイモードを変えているだけなのですが、
どうすれば復帰してくれますか?
0636626NGNG
>>628さん
WORD *pIndex; に直し表示できるようになりました!
ありがとうございます.
0637デフォルトの名無しさんNGNG
>>635
EXCLUSIVE と DDSCL_FULLSCREEN
はorじゃなく、必ず一緒に(and)するんじゃなかったっけ。
DD.SetCooperativeLevel(Handle, EXCLUSIVE | DDSCL_FULLSCREEN);

俺はDirectDraw7使ってるせいか、初めて見る記述なんであまり自信ないが。
0638デフォルトの名無しさんNGNG
>>637
この場合は Bit毎の or なので、C言語の | と同じ意味です。
Cのand は & だったはず…。
0639637NGNG
>>638
スマソ。もう寝るわ…。
0640デフォルトの名無しさんNGNG
>>637
 "|" は "or" の意味ですよ。
DirectDraw7を使ってるせいじゃなくて、使ってない言語記述では?
0641デフォルトの名無しさんNGNG
DirectSex!
0642デフォルトの名無しさんNGNG
でも意味的には
andなんだよね
これだからマイクロソフトは
0643デフォルトの名無しさんNGNG
べつにMSが悪いわけではないだろ。
0644デフォルトの名無しさんNGNG
意味的にもANDじゃねー
ゲイツも関係ねー
基礎からやり直せと
0645デフォルトの名無しさんNGNG
>>642の言ってるandは
「〜且つ」の意味ではなくて、日本語的な「〜と」のことを言っているのではなかろうか。

どっちにしても>>642はあまりプログラマっぽくないね。
0646デフォルトの名無しさんNGNG
英語の A or B → A または B と区別がついてないんじゃないんかと
0647642NGNG
それぐらいわかってるよ
>>645の言うように
これとこれっていう形だからandだろっていう意味

ビット単位のフラグまとめて一つにして渡す
てのは当たり前なんですか
0648デフォルトの名無しさんNGNG
ttp://ew.hitachi-system.co.jp/p/r-logic.html
はい、復習してくださいね
0649デフォルトの名無しさんNGNG
フルスクリーンなら排他的に決まってるだろ
と言いたいのでは?
0650デフォルトの名無しさんNGNG
排他のときには正露丸を歯に詰めるそうですが

なんか意味があるんですか。
0651デフォルトの名無しさんNGNG
痛みが一時的に治まる。
が、痛みのない間にますます虫歯が酷くなるのでやめておいたほうがいい。
バファリンとかもだ。

とっとと歯医者に行こう。
0652デフォルトの名無しさんNGNG
>650
ぱっと見て何を言ってるかわからんかったが
歯痛的論理和ねw
0653デフォルトの名無しさんNGNG
DirectX7の日本語マニュアルはもう手に入らないのでしょうか?
マイクロソフトのサイトにも8までしかないようなんですが・・・
どこか公開しているサイト知っていたら教えてください。
0654デフォルトの名無しさんNGNG
>どこか公開しているサイト知っていたら教えてください。
それはつまり無断公開しているサイトを教えろということなのか?
0655デフォルトの名無しさんNGNG
そうですが・・・
DirectX7時代の本いくつか持っているのでCDの中身みたんですが英語版しかないのです。
0656デフォルトの名無しさんNGNG
DirectXはまったくの初心者でこれから勉強しようと思っている者です。

ある装置を監視するために、現在はMedia Encoderでストリーミング配信しているのですが、
監視を自動化するためにビデオキャプチャしている動画をリアルタイムで簡単な画像認識をしたいです。

キャプチャのサンプルソフトをMedia Encoderと同時に起動すると、
デバイスが他のアプリで使われているというエラーが出るのですが
どのように回避すればよいでしょうか?
0657デフォルトの名無しさんNGNG
>>655
それで十分じゃないか・・・。
0658デフォルトの名無しさんNGNG
>>657
一応英語は少し読めるけど日本語もほしい・・・
ウプしてくれる猛者いたらお願いします。
0659デフォルトの名無しさんNGNG
>>658
英語嫁、以上
0660デフォルトの名無しさんNGNG
読みにくかったり間違った日本語訳で誤解してしまうよりは英語のまま読んだ方が理解が早いはず
0661デフォルトの名無しさんNGNG
わかりました。時間かかるけど英語の勉強だと思ってがんばります。
0662デフォルトの名無しさんNGNG
日本語版は翻訳ミスが多いからなぁ・・・
0663デフォルトの名無しさんNGNG
日本語になってないような日本語になってることが多いからなぁ
0664デフォルトの名無しさんNGNG
directinputはマウスの座標じゃなくて移動量が取得できるんですね
GetCursorPos()でマウスの初期位置取得してから
初期位置にdirectinputで取得した移動量を加えて座標を求めることになるんでしょうか?
0665345NGNG
gl_lpD3ddev->DrawPrimitiveUP(D3DPT_LINELIST, 2, hoge, sizeof(TLVERTX));

実行中にこの行で
.exe の 0x0044ee4c でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。

というエラーがでましたどうすればうまくいくのでしょうか?
0666デフォルトの名無しさんNGNG
くだらない質問だとは思うのですが、ご教授ください。
winmm.libはどこにあるのでしょうか。
DirectX9.0SDKをつかってます。
0667デフォルトの名無しさんNGNG
>>666
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib
0668デフォルトの名無しさんNGNG
>>667
あっありました(泣
本当にありがとうございました。
0669デフォルトの名無しさんNGNG
>>667
相手の環境わかるのか、すげー!!!
0670デフォルトの名無しさんNGNG
>>669
つまんね
0671デフォルトの名無しさんNGNG
>>665
マジで言ってるのかな。
gl_lpD3ddevがNULLなんだよ。
0672デフォルトの名無しさんNGNG
>>671
ほんとです
どうすればエラーでなくなりますか?
0673デフォルトの名無しさんNGNG
インスタンスがある状態にしろ。
0674デフォルトの名無しさんNGNG
DirectX で Midi を演奏させれば、負荷が少なくなるのですか?
0675デフォルトの名無しさんNGNG
>>673
やってみます
0676デフォルトの名無しさんNGNG
というか理解してソース書いたか?
サンプル部分的にコピって動きませんってレベルな気がするのだが
0677デフォルトの名無しさんNGNG
DirectIntputでマウスの位置座標を求める方法を教えてください
直接入力はデータ取得の呼び出しをした瞬間の入力の状態を返すそうなので
正確なマウス座標は求められないのでしょうか?
初期値としてGetCursorPos()で求めた座標に
GetMouseState()で求めた移動量を足していくことで座標を計算したのですが
うまいことできなかったので困っています
0678デフォルトの名無しさんNGNG
>>676
少し手を加えてみましたけど…
0679デフォルトの名無しさんNGNG
>>678
そこがまじぃんだよwきっとw
0680デフォルトの名無しさんNGNG
>>677
Win32APIだけで瞬時に解決する問題で、
わざわざDirectInputを混ぜる理由は?
0681デフォルトの名無しさんNGNG
>>680
DirectInputをどうしても使ってみたいんです
0682デフォルトの名無しさんNGNG
>681
ワラタ
てかズッコケタ
0683デフォルトの名無しさんNGNG
>>681
>>677のやり方であっているはず
ソース見ないとわからんが
絶対値モードにしてるとかはないか?

というかマジなら具体的にどううまくできなかったぐらい書け
0684デフォルトの名無しさんNGNG
マウスとメッシュの当たり判定をし、当たった面の頂点座標を取得しようとしていますが
コンパイルは通るものの立ち上げた瞬間落ちるのでどこがおかしいかご教授願えませんでしょうか。
メッシュはXファイルを読み込み、LPD3DXMESH pMesh;の形で持っていて、
D3DXIntersectでマウスとメッシュ自体との当たり判定までは成功しているので、
そのときにD3DXIntersectが返してくれた、当たった面へのインデックス(DWORD faceIndex;)を使って、
その面の頂点座標を取得しようとしています。DXは2003summerです。よろしくお願いします。

//D3DXIntersectの返した面のインデックスを使用して頂点を取り出す
IDirect3DVertexBuffer9* pVB;
IDirect3DIndexBuffer9* pIB;
DWORD fvfSize;
WORD* pIndices;
BYTE* pVertices;

pMesh->GetIndexBuffer(&pIB);
pMesh->GetVertexBuffer(&pVB);

// あたった面を形成する3つの頂点のインデックスを取得
pIB->Lock(3*sizeof(WORD)*faceIndex, 3*sizeof(WORD),(void**)&pIndices, D3DLOCK_READONLY);
pVB->Lock(0, 0, (void**)&pVertices, D3DLOCK_READONLY);// 頂点バッファ取得
fvfSize = D3DXGetFVFVertexSize( pMesh->GetFVF());// 頂点フォーマット構造体のサイズを計算

// 面を形成する3つの頂点を取得
D3DVECTOR v0, v1, v2;
v0 = *(D3DVECTOR*)( pVertices + fvfSize*pIndices[0] );
v1 = *(D3DVECTOR*)( pVertices + fvfSize*pIndices[1] );
v2 = *(D3DVECTOR*)( pVertices + fvfSize*pIndices[2] );

pIB->Unlock();
pVB->Unlock();
pIB->Release() ;
pVB->Release();
0685デフォルトの名無しさんNGNG
>>683
エラーとかは出ないのですけど
絶対モードじゃないです
実際のマウスの位置と>>677で求めた座標の位置がずれてるのでなんでかなと思っていろいろ調べてたら
直接入力はデータ取得の呼び出しをした瞬間の入力の状態を返すと書いてあったので
GetMouseState()が実行されてない間のマウスカーソルの移動量は計算されないから
その分だけずれるのかなとかおもったりしてます

もう一度ソース見直してみます
レスありがとうございます
0686デフォルトの名無しさんNGNG
>684
デバッガはどの行をさしているんだ?
あとGetIndexBufferとGetVertexBufferで得たpIBとpVBがNULLでないことは確認できてるのか?
あとGetIndexBuffer、GetVertexBuffer、Lock、Unlock、Releaseの戻り値のチェックは?
0687デフォルトの名無しさんNGNG
>>686
解決しました。
なんと、常時メッシュと当たってない時も上記の処理をしていた為、
面のインデックスを受け取ってなくて落ちてました。
メッシュと交差した時だけ上記の処理を行うようにしたら
きちんと取れてました。ごめんなさい。
0688デフォルトの名無しさんNGNG
>687
てことは多分faceIndexに不正な値が入ってたんだろ?
エラーチェックのコードを入れてたほうがいいぞ
0689デフォルトの名無しさんNGNG
実機用のTRIANGLESTRIPのバーテックスバッファがあるんですが、
DrowPrimitiveで表示させる場合ってやはり
ニ、三個くらいのプリミティブ毎にレンダリングするしかないんでしょうか?

実際パフォーマンスの問題と、実機用のソースの変更が必要になるため
避けたいなあと思っているのですが…
普通はどうするものなんでしょうか?

よかったらアドバイスお願いします。
0690デフォルトの名無しさんNGNG
>>689
言ってる意味がわからん。
その「実機」ってのも何を指してるのかサッパリ。
0691デフォルトの名無しさんNGNG
実機って何だ?
0692689NGNG
実際のゲーム機です。
ゲーム機用のモデルをPCで表示させたいんす。
ハードによってはプリミティブの境目がわかる判別タグとか使って、
TRIANGLESTRIPのバッファを一回のレンダリング命令で表示できたりするんですが、
DirectXではそんなタグ使えないし、タグをとっぱらってただのTRIANGLESTRIPの
バッファとして使ってます。

で、だからただのTRIANGLESTRIPのバッファなんですが、
例によってTRIANGLESTRIPのバッファって細切れなので、
ニ、三個くらいのプリミティブ毎にレンダリングになってしまい、重いと。
0693691NGNG
>>692
X箱でやったことあるが、縮退三角形を挿入して
DrawPrimitiveの回数を減らすとかじゃ駄目なの?
0694デフォルトの名無しさんNGNG
TRIANGLESTRIPのバッファが細切れってどういうこと?
メモリ上に不連続にデータが並んでるの?
うまいことストライドで処理できないかな。
0695691NGNG
>>692
変換行列・マテリアル・ステート等が同じで、
ストリップが細切れになってるだけの状況ならば、
無理やり繋げて描いた方がなんぼかマシだと思う。
インデックスバッファ未使用だと効率は良くないが・・・

>>694
> 境目がわかる判別タグ
から察するに、短いストリップが沢山あるということだと思う。
俺の勘違いかな?

ああ、もう出かける時間なので、あとは>>694よろしく
0696689NGNG
どうもありがとうございます。縮退三角形の手法を勉強してみます。
0697デフォルトの名無しさんNGNG
うおっ、よろしくされたよ。

なるほどね、タグ方式だからストライドが一定にならないわけか。
細切れストリップを繋ぎ直しするにも、頂点バッファがビデオメモリにあるなら
パフォーマンス激オチじゃないかな。
実際のところ、全部一括でDrawPrimitiveと、細切れDrawPrimitiveではどれくらい
パフォーマンスが違うの?
0698デフォルトの名無しさんNGNG
何故自分で試そうとしない?
0699デフォルトの名無しさんNGNG
試すよ。興味あるし。でも今すぐは無理だから聞いてみたんだよね。
0700689NGNG
>短いストリップが沢山あるということだと思う。
そのとおりです、すいません。言葉足らずm(__)m

>どれくらいパフォーマンスが違うの?
全部一括って = 繋ぎ直し = 縮退三角形の方法ですよね?
繋ぎ直してやってみます、すまそ。
うーんどっちだろ。
実機よりもPCのが環境良いのに、細切れだと描画速度が実機の30%以下なので…
今は繋ぎ直しの方が魅力的に感じます。
0701デフォルトの名無しさんNGNG
>700
漏れもかなりコマ切れのSTRIP扱ったことがあるけど、全然違う
なんで、こんなに重いかなと思ってデータみたらコマギレ…

もちろん縮退三角形で繋いだらツルツル動きました
0702デフォルトの名無しさんNGNG
>700
前は繋ぎなおしのライブラリがnVideaにあった気がするけど今もあるのかな?
繋ぎなおしは非常に重いのでデータ読み込みの時にはしないほうがいいと思う
コンバータ作って、データ自体を変えたほうが幸せになれる
0703689NGNG
おぉーありがとうございます。
データ自体変えてしまおうか迷ってて、きつかったらコンバータ作ろうと
思っていました。参考にさせていただきます。
0704デフォルトの名無しさんNGNG
DirectX9はC++Builder6でも使えますか?
0705デフォルトの名無しさんNGNG
>>704
http://clootie.narod.ru/cbuilder/index.html
0706デフォルトの名無しさんNGNG
DirectDrawを使ってゲームを作っているのですが、
SetDisplayModeでフルスクリーンモードへ切り替えたときに、
画面がちゃんと表示されたかどうかを検出することって出来ますか?
(WM_PAINTは画面が表示される前に来るようです)

たとえば起動ロゴを表示する際、
完全に画面が切り替わった後で処理を始めたいと考えています。
現在は2秒ほど待つ処理を入れています。
0707デフォルトの名無しさんNGNG
ここ3日前ぐらいからこの世界に入り込んだ者ですが。。
SDKがいるんでマイクロ社のHPにいって一番新しいと思われるOctober 2004を落として勉強するべくサンプルを見てたんですが
Direct3Dのサンプルの大体が「Switching to the reference rasterizer, a software device that implements the entire Direct3D feature set, but runs very slowly.」
と出てあとで起動するんですが激しく重いです...
どうしたら普通に起動出来ますかね?('A`)

あと激しく重いんだったら自分で作ればいいじゃんって思ってサンプルのcppを
ビルドしてみたんですが。。文字セットがUnicodeじゃないと悪いらしく 何処の設定変えればいいのか判らないままです^^;
(ビルドするときはBCC Developer 1.2.21使ってやってます…初心者に良いと思ったんで;)
サンプルのcppをそのままビルドしても出来ないものなでしょうか…

この2つの解決法、誰か教えて下さい('A`)
0708デフォルトの名無しさんNGNG
>>707
フリーのコンパイラ使うなら
Visual C++ Toolkit 2003
使ったほうがいいかもしれん。

あと、サンプル見てないからわからんけどソフトウェアエミュレーションで起動してるね・・・
CreateDeviceを検索してみ。
D3DDEVTYPE_HALに設定してないのかな??
・・・関係ないかもしれんな・・・
0709デフォルトの名無しさんNGNG
バカばっかり
0710707NGNG
>>708
Visual C++ Toolkit 2003ですか。
考えておきます...

ソフトウェアエミュレーション...?
多分、大丈夫かな…
よくじっくり見たら普通に動いてるのはD3DDEVTYPE_HALなんですが
重い動作してるのはREFでした('A`)
F2押してオプションっぽいところでHALに変えようとしたらREFしか...
始めから動作がスムーズなのは始めからHALになってるしオプションでREFにも変更できるんですが('A`)
なんか謎です…
October 2004よりも実はSummer 2004の方が良いってことは…ないか…。。
CreateDeviceを検索…サンプルのcppの中検索したらその文字ありましたが
普通に起動するやつと重いやつはそこは同じでした...
0711デフォルトの名無しさんNGNG
ヴぃでおカードを最新にすれ
0712707NGNG
あぁ。たしかに、オンボーでまだやってますたorz

有難う。
0713デフォルトの名無しさんNGNG
オンボードは厳しいぜ
0714デフォルトの名無しさんNGNG
てか、なぜにオンボード・・・
0715デフォルトの名無しさんNGNG
当たらし目のサンプル類はハードウェアアクセラレートなくてもソフトウェアで処理できる場合はそっちで
なんとか立ち上がるようになってる。

速くならないのは使ってるPCがサポートしてないハードウェア機能を前提に作ってるからだね。

そろそろオンボードもピクセルシェーダまで対応しつつあるけど、まだ前提には作れんよなぁ。
0716デフォルトの名無しさんNGNG
というかDirectXの勉強するつもりなら
安いのでいいから買おうよ
0717デフォルトの名無しさんNGNG
DirectX9を始めて間もない者なのですが、
二次元配列を使用して円弧を作成しろという課題が出てしまったのですが、
いかんせん初心者な者でどう手をつけてよいのかわかりません。
どなたかご教授宜しくお願いします。
ちなみに、始点と終点と中心(半径r)を決めて始点と終点を結んだ扇形を作りたいです。
このとき中心から始点、中心から終点の線は表示しないで始点と終点のみを結びます。
あと、今DirectX グラフィックのチュ−トリアル4を参考に勉強させていただいてます。
宜しくお願いします。
0718デフォルトの名無しさんNGNG
宿題スレにGo
0719デフォルトの名無しさんNGNG
円弧をモデリングしてx-fileとして表示して終了。よかったね。
0720デフォルトの名無しさんNGNG
扇形の頂点座標計算はできるのか?
バーテックスバッファを作って座標を順番にバッファにつっこんで、
DrawPrimitive。分かれば簡単だが、分かってないと途方に暮れるだろうな。
0721デフォルトの名無しさんNGNG
>>710 ありがとうございます。

>>720 扇形の頂点座標計算は良くわからないのですが、
   教えていただけないでしょうか?
0722デフォルトの名無しさんNGNG
>717
開始角じゃなくて始点なの?
指定する始点、終点、中心点、半径rに関して、(始点-中心点)と(終点-中心点)かならず半径rである保障はあるの?
0723デフォルトの名無しさんNGNG
なんか線、正五角形、円、円弧と来てるね
0724デフォルトの名無しさんNGNG
>>721
DirectX以前の問題だな。sinとcosを使った円の式はわかるか?
0725デフォルトの名無しさんNGNG
そもそも2Dなのか3Dなのかもわからない
二次元配列を使うって書いてあるから2Dなのかとは思うが
0726721NGNG
>>722
必ずしも半径rでなくてなはならいって事は無いです.

>>724
すいません数学が苦手なもので、ちょっとわかりません。
0727デフォルトの名無しさんNGNG
>>726
>すいません数学が苦手なもので
(;´Д`)それじゃどうしようもないじゃないか
数Iの教科書から出直しましょう
0728デフォルトの名無しさんNGNG
>726
>必ずしも半径rでなくてなはならいって事は無いです.
???
てことは↓もOK?
ttp://venus.aez.jp/uploda/dat/upload11609.jpg
0729721NGNG
>>725
2Dです。
>>727
高校の教科書を引っ張り出して思い出しました。
申し訳ないです。
>>728
すいません逆です。半径rは必ずです。
0730デフォルトの名無しさんNGNG
>729
>すいません逆です。半径rは必ずです。
いや、だから半径が必須だから、描画する曲線はかならずしも始点、終点を通る必要はないってことでしょ?
 始点をA、中心点をO、半径をrとすると
 ベクトルOAを正規化したベクトルをVとして
 本当の始点 = V * r + O
同様に本当の終点を先に求める必要があるってことだよね?
0731721NGNG
>>730
はいそうです。
0732デフォルトの名無しさんNGNG
ホントに宿題なんだろうか。宿題を解くための知識が全然無いじゃないか。
0733721NGNG
申し訳ないです。もう一度出直してきます。
アドバイス下さった方ありがとうございますm(__)m
0734デフォルトの名無しさんNGNG
sin/cosも分からないで円弧を描こうとしてたのか。。。
いやまあ、x^2 + y^2 = r^2からでも計算できるけどさ。
最近の学生ってこんなんばっかり????
0735デフォルトの名無しさんNGNG
んなわけねぇだろ
721がどうしようもなく無勉強なだけ
0736デフォルトの名無しさんNGNG
>731
じゃあ最初からそう書いてくれ
はっきりいってDirectX以前の問題
スレ違い
この課題をするにはあまりにも力が足りなさすぎる
だいたい突然この課題が出たわけじゃないだろ?
この課題につながるものをこれまでの授業でやってたはず
ついていけてなかったらこれを機に復習するなり先生に聞くなりしろ
個人的にはこれくらいできないなら、必須単位じゃないなら落として、もう受けるな
必須なら学校やめてしまえ、と思う
0737デフォルトの名無しさんNGNG
友達にでも聞けばすむ問題のような気が・・・
0738デフォルトの名無しさん NGNG
OSがMEなんだけど
9bはもうダウンロードできない?
0739デフォルトの名無しさんNGNG
>738
DLはできるのでは?
インスコはしらんけど
0740デフォルトの名無しさんNGNG
ダウンロードできるかどうかまで
OSに決められてしまうのか…

さすがME
0741デフォルトの名無しさんNGNG
すいません質問なのですが、DirectPlayのサンプルチュートリアルを開いて
デバックで実行しようとしたのですが
error LNK1104: コンパイラは、ファイル 'dplay.lib' を開くことができません。
とエラーが出て実行できません。

環境は DiextX9.0 Visual Studio.NET 2003   OS: XP
ちゃんとDXSDK\Include DXSDK\Lib は入れてあります。
いろいろ調べてみたのですができないので教えていただけないでしょうか
0742デフォルトの名無しさんNGNG
>>741
>>ちゃんとDXSDK\Include DXSDK\Lib は入れてあります。
これをどういう意味で言ってるのか知らんが
設定をちゃんとしていないとか
調べが足りんとしか言えない

他のライブラリは問題ないのか?
0743デフォルトの名無しさんNGNG
DirectX と関係あるの
0744デフォルトの名無しさんNGNG
自作のコンバーターで作ったデーターをDX9・HLSLシェーダー2.0で表示しています。
データー内のサーフェス(マテリアル)ごとにできる限り最適なシェーダーを組み合わせたいのですが
このままだとシェーダー数が簡単に1000個を超えてしまいそうで、メンテ不可能です。
どなたか良い方法を知りませんか??
ヘルプを読むとID3DXEffectCompilerでのリテラル指定をしての最適化が怪しいと思うのですが
ID3DXEffectCompiler自体がまったく理解できませんTT
0745デフォルトの名無しさんNGNG
D3DXLoadMeshHierarchyFromX について詳しい解説はないのかっ!
.Xファイルなんて使いたくないっつーの。どういう構造してんだこれ。
0746デフォルトの名無しさんNGNG
>744
大杉
本当に必要なシェーダに絞り込むべきじゃないか?

もしコマンドラインでコンパイルしているなら/Dオプションでマクロが設定できる
マクロとifdefを上手く使えば一つのシェーダのソースから複数のシェーダを生成できる
違うシェーダといっても部分的には他のシェーダと同じってのも多いはずだから
そういったのをまとめて、違う部分をifdefを使ってわける
最終的には1000個でも管理するソースは100個くらいですむかもしれない
その場合makeとかバッチファイルとか併用したほうがよさげだが

あとはあんまりやりたくないがif乱用

まぁでも本当に必要なシェーダに絞り込むのが現実的ぽ
0747デフォルトの名無しさんNGNG
>745
電波の缶詰で前に見た気がする
のぞいてみれ
0748デフォルトの名無しさんNGNG
>>747
あー、あれね。うん、見た。
一通りググって出たサイトは見た。
でもSDKのSkinningMeshを使い回してるだけで、情報量としてはたいして多くないんだよね。
やっぱSkinningMeshを解読するしかないのか。
0749744NGNG
>746
大変参考になります。
746さんの方法だとエフェクトとして使えるのでしょうか?
もしやFXCで複数のアセンブラソースを出力して、1つのエフェクトファイルにインクルード?
辛いけどやってみますTT
ifは使ってみたのですが、コンパイルすると分岐コードとして吐き出されず最悪の状態になりました。
たとえばボーンが0個とそれ以外(1〜4個)で1度だけ分岐させても、全て4個分のコードとして吐き出されました。
0750デフォルトの名無しさんNGNG
>>749
動的コンパイル時にD3DXMACROで分ける。
それとif文がうまくいかないのは
分嵯に使ってるフラグがリテラルじゃないからじゃないか?
0751744NGNG
>750
これまた参考になります。
やはり自分はEffectのヘルプの読み込みが不足しているみたいですね、
もっと読んで頑張ってみます。
0752デフォルトの名無しさんNGNG
BMPbottunを押すと
そのBMPが拡大されるプログラムを作りたいんでダレカ優しい人教えてください
自分は拡大されたBMPが貼ってある新しいウィンドを開く方法でやっていmすが

m_BmpBtn1.LoadBitmaps(IDB_BITMAP○);
void ○○::OnButton1()
{
}
0753デフォルトの名無しさんNGNG
directx8でAOEのような高低差のある2Dマップの作り方教えてください
0754デフォルトの名無しさんNGNG
初心者に最適は書籍あるいはwebページを教えてください
0755デフォルトの名無しさんNGNG
自前でXファイルローダを作っています。
マテリアル部分の話なのですが、Specular、Emissive、Powerはそのまま読み込めました。

詰まったのはXfile側にDWORD faceColorしかない箇所です。
これはD3DMATERIAL9::Diffuseと、D3DMATERIAL9::Ambientの
両方にfaceColor値を入れるだけで良いのでしょうか?

これだとなんだか、思った以上に明るくなってしまう気がします。
(といっても元の発色が不明瞭なのでなんとも言えないのですが)
かといってそれぞれを2で割ってみても暗すぎますし…どうするのが正しいのでしょうか。
0756デフォルトの名無しさんNGNG
なんでdiffuseとambientだけ、デフォルトのテンプレが無いんだろうな
0757デフォルトの名無しさんNGNG
>754
本屋にいって立ち読みしてコレいいかもって思った本がいいよ
いや、マヂで
解説がわかりやすいとか読みやすいとか個人差があるから、
自分の目でたしかめるのが一番いい
で最初は解説本をベースにしてやっていくと専門用語がでてきたりするから、
ネットではそういった専門用語をキーに詳しく調べていく
多分経験上これがいちばん効率がいい
0758デフォルトの名無しさんNGNG
I/Oの本は三冊買うまで役にたたない事に気づきませんんですた
0759755NGNG
>>756
そうなんですよ、なんだってこんな仕様に…。
昔はマテリアルのメンバにDiffuseとAmbientが無かったんですかね。
0760デフォルトの名無しさんNGNG
マテリアルの色は、単色一つとスペキュラパワーで十分だろがボゲェ!!
By DirectX設計者

0761デフォルトの名無しさんNGNG
ふたりはスペキュラ
0762デフォルトの名無しさんNGNG
>>760
設計者さん、俺もそう思うからその単色の
セットの仕方を教えてくれインボーストリーム

( ゚Д゚)ハッ!!
0763デフォルトの名無しさんNGNG
RM時代から化石と化したフォーマットなど使わず、独自形式でやれ。
0764デフォルトの名無しさんNGNG
>>763
そうしたいのですが、この形式で何かをするとかではなくて
この形式を読めなければいけないというジョブでして。

ここまで回答が出ないとは思わなんだ_| ̄|○ <マイナー?
0765デフォルトの名無しさんNGNG
なぜだろうな…
一度書いた線がずーっと残るっておかしいな
1フレームごとに画面をクリアしてるのに
なんで残ってるんだろう?
クリアされた後は線の描画は実行されないはずなんだけどな
あと、描いた線の色がまだらになったり、頂点の色は一緒だからグラデーションはかからないはずなんだけど
DirectX8の線の描画はなんか不思議な現象がよく起こるな

原因と解決法を教えてください
0766デフォルトの名無しさんNGNG
どういうプログラムを組んでいるのかすら説明せず、ソースの提示すらしない。
他人はエスパーだという妄想でもいだいているんだろうか?
0767デフォルトの名無しさんNGNG
>>766
ソースはサイズが大きいので提示できないです
DirectX8で線を描くプログラムで
頂点を設定してD3DPT_LINELISTで線を引くという単純なものなんですけど
ラインで繋がれる頂点の色はすべて同じなのにラインが3等分されたようなグラデーションがつくんです
3等分された両端が頂点色で真ん中だけが他の色になるんです
0768デフォルトの名無しさんNGNG
ソースサイズが大きいのならそれは単純ではない。
まずはそれだけのための最小限のプログラムを作って試すこと。
0769デフォルトの名無しさんNGNG
>>765
どこをどう考えてもオマエのプログラムミス。
FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
どうせその程度。
自分のプログラムを100回疑ってからDirectXとドライバを疑え。
0770デフォルトの名無しさんNGNG
大抵、間違ってないっと思ってたところが勘違いであってると思い込んでる場合があるからな。
0771デフォルトの名無しさんNGNG
傾いた地面に沿って物体を傾けたいのですが、どうしたらよいでしょうか?
地面の法線ベクトルはおそらく正しく求まっていると思うのですが、
これを使ってHPBの値を求めたいです。。
Bはそのままでいいと思うのですが、HPは一意に求まるんでしょか…
あたまがごっちゃになってきました。なるべく簡単な方法があればお願いします。
なにかDXでそれ用の関数とかあれば一番よいのですが。
0772デフォルトの名無しさんNGNG
>>768
最小限のプログラムを作って試したところ
ビットマップと線を重ならないように表示させたのですが
なぜか線の色とビットマップの色がブレンドされてるんですけど
おかしいですよね?
>>769
>FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
これはどうやって調べればいいんですか?
>>770
そうですねたぶんそうだと思うんですがなかなかどこが間違ってるのか見つからないです
0773デフォルトの名無しさんNGNG
>>772
>>FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
>これはどうやって調べればいいんですか?

どうしてこんな質問が出るんだ??????????
自分で作ったプログラムじゃないのか?
0774デフォルトの名無しさんNGNG
>>773
プログラムの解説ページのプログラムをいじってるので
へんないじり方はしてないのであってるとはおもうんですが
0775デフォルトの名無しさんNGNG
最小限にしたんだろ
ならソース見せてみろよ
0776デフォルトの名無しさんNGNG
>>774
D3DFVF_なんとかいうとこを検索しろ。
その近くに、構造体宣言があるはず。
それらに矛盾がないか、構造体の宣言順番に問題がないか。
0777デフォルトの名無しさんNGNG
>>775
600行近くありますけど見てもらえますか?
>>776
見てみます
0778デフォルトの名無しさんNGNG
理解はしてないのに
へんないじり方してないからあってる

んなアフォな話があるか
0779777NGNG
http://up.isp.2ch.net/up/382f6bb28b65.zip
600行近くありますがほとんどがウインドウ表示やDirectXの初期化とかです
灰色のビットマップと赤い線を重ならないように表示したのですが
線が灰色がかった赤で表示されます

重なってないのになんで色がブレンドされるのかわかりません
0780777NGNG
パスワードは”1116"です
0781デフォルトの名無しさんNGNG
なんだ、SetTexture(0, 0)してないだけじゃねえか。
0782デフォルトの名無しさんNGNG
SetTexture(0, NULL)かな

色の違いがさっぱりわからんですが
0783782NGNG
更新してなかったorz

しかし600行ってほとんどコメントなのね
0784777NGNG
>>781
>>782
>>783
おかげさまで不具合がなくなりました
ほんとうにありがとうございました
0785デフォルトの名無しさんNGNG
ていうか
gl_lpD3ddev->SetVertexShader(FVF_TLVERTEX);
ってなんなんだよw
gl_lpD3ddev->SetFVF(FVF_TLVERTEX);
の意?
0786785NGNG
あぁ、これでもいけるのか、無知すまそ。
0787777NGNG
>>785
プログラム解説のHPから拝借したので詳しくわかりませんw

調べてみたところ

頂点フォーマットを定義するには
IDirect3DDevice8::SetVertexShader() メソッドを使います
図を描画するには、まずこれを用いて頂点フォーマットを決定する必要があります

HRESULT SetVertexShader(DWORD Handle);

Handle には、頂点フォーマットのフラグを指定します
この引数には、以下の定数を組み合わせて指定することができます

だそうです
0788785NGNG
>>777
DirectX8 か、はやとちりした… orz
ちなみにDirectX9の場合は SetFVF(FVF_TLVERTEX)にする必要があるよ。
0789デフォルトの名無しさんNGNG
質問ですけど
2Dの描画って頂点バッファつくってテクスチャ貼って表示するのが主流なんですか?
スプライトで表示するのって少数派?
0790デフォルトの名無しさんNGNG
>789
スプライトに相当するものはもうないので、
それしか方法はない
D3DXSPRITE(だっけ?)のことを言ってるんなら
内部では結局頂点にテクスチャはってる
最初は練習の意味もかねて簡易スプライトクラスみたいのを作るといいと思う
最初は指定矩形に表示して、あとで回転とか移動とか拡大縮小とか、
マルチテクスチャとかシェーダとか、少しずつ機能を増やしていけば勉強になる
そのあとずっと使えるし
0791デフォルトの名無しさんNGNG
>>789
大抵の場合古き良きDirectDrawを使う
0792デフォルトの名無しさんNGNG
>>790>>791 thx
とりあえずDrawPrimitiveに移行してみます
挫折したらSDLでもやってみるか…
0793デフォルトの名無しさんNGNG
>>791
スプライトは仕様がコロコロ変わりそうで実際変わってるので
DirectDrawを使うのが当分いい具合。
0794デフォルトの名無しさんNGNG
そういえばDirectShowのところにIDirectDrawというのがあるんですけど
これを使うんですか?

それとも古いバージョンのDirectXを指してるんですか?
0795デフォルトの名無しさんNGNG
古い方。
0796デフォルトの名無しさんNGNG
>794
最新のSDKにもちゃんとddraw.h入ってるから使えるだろ
0797デフォルトの名無しさんNGNG
(゚Д゚ ) ダイレクト ドロー・・・。
ノヽノヽ
  くく

(゚Д゚ ) !!
ノヽノヽ
  くく

(゚Д゚ )
ノヽノヽ=3 プゥ
  くく

直訳すれば
「直接引き分け」

つまりは勝ち負け無し 平和
リャンメン待ちってこった
0798デフォルトの名無しさんNGNG
プログラムをコンパイルしたら、
g:\プログラム\sample\sample.cpp(5): fatal error C1083: include ファイルを開けません。'd3d9.h': No such file or directory
と出てしまったのですが、どうすればいいのでしょうか?

0799デフォルトの名無しさんNGNG
ヘッダーのパスを通せ。
0800デフォルトの名無しさんNGNG
ヘッダーのパスって、d3d9.libとかってやつですよね?
それをやったけど、エラーが出てしまうんです。
思い違いだったらすいません。
0801デフォルトの名無しさんNGNG
>>800
>それをやったけど

何をやったんだ?
0802デフォルトの名無しさんNGNG
ヘッダじゃなくてlibファイルのパスを通しただけに違いない
0803デフォルトの名無しさんNGNG
>800
ツール→オプション→Project→VC++ディレクトリ
ディレクトリを表示するプロジェクトでインクルードファイルを選びDXSDKのincludeディレクトリを追加
同様にライブラリファイルを選びDXSDKのlibでぃれくとりを追加
初心者本なり初心者向けサイトなら最初にやるべきこととしてあげられてるはず
ちゃんと読みなさい

あと
>それをやったけど
こういった他人に通じない抽象的すぎる言葉は極力避けなさい
具体的に書かないとわかりません
0804デフォルトの名無しさんNGNG
アホのお約束

ヘンなところは自分勝手に脳内変換解釈するのに
何でもないようなところは理解できない

例
脳内変換
・Cでプログラムしています -> C++でプログラムしています
("C"と言うと"C++"に勝手に置き換わるバカ)

日本語読めれば理解できる流れ

・「○○ができません」
 『△△しろ』
 「それはやってます」
 『何をやってるんだ?』

(自分で振っといて「それ」の対象を理解できないチョン)
0805デフォルトの名無しさんNGNG
DirectXも全然関係ないし、チョンなだけ
0806デフォルトの名無しさんNGNG
「DOSモード」と「リアルモード」は違うんですよ








みたいな感じ
0807デフォルトの名無しさんNGNG
DXSDKをインストールして初めてのコンパイルでエラーした時
「ヘッダとライブラリへのパスをとーしてねーんだよ!!氏ね!!カス!!」
と表示されるウイルスきぼん
0808デフォルトの名無しさんNGNG
やけに親切なウィルスだなw
0809デフォルトの名無しさんNGNG
プログラムはC言語を今日から始めます
って人でもPC使ってて
>>ファイルを開けません。'd3d9.h': No such file or directory
こんな如何にもDirectX関係のファイルですって名前のファイルが
ありませんとか言われたら

インストールか設定に問題があることぐらい察しがつくと思うのだが
0810デフォルトの名無しさんNGNG
いや無理だと思う
0811デフォルトの名無しさんNGNG
警告やエラーが英語だと無条件で読まない奴がいるからな
全然難しい英語じゃないのに
0812デフォルトの名無しさんNGNG
文でなくて図と認識すんだな。
0813デフォルトの名無しさんNGNG
おまえらは初心者じゃないみたいだし、初心者の質問にも答える気がないなら
そろそろスレを移動する時期だ。
0814デフォルトの名無しさんNGNG
>813
質問には>800で答えてる
0815デフォルトの名無しさんNGNG
>>813
ここはDirectXの初心者質問スレであって
>>798のようなVC++初心者質問スレではない
0816デフォルトの名無しさんNGNG
メッシュを読み込んで表示するまでは出来たんですが、
メッシュを回転して表示するにはどうすればいいんでしょうか??
0817デフォルトの名無しさんNGNG
行列作ってセット
0818デフォルトの名無しさんNGNG
>>816
ワールドトランスフォーム行列に回転行列をかける。
つまり、

ワールドトランスフォーム行列=回転行列*移動行列

とする。
0819デフォルトの名無しさんNGNG
「行列のできるプログラマ」
0820デフォルトの名無しさんNGNG
Direct3Dの行列は転置してるのが気に入らない。
なんであんな仕様に?
0821デフォルトの名無しさんNGNG
左手座標系が気に入らない
0822デフォルトの名無しさんNGNG
PS2は左足座標系だ。
0823デフォルトの名無しさんNGNG
華麗に822をスルー
0824デフォルトの名無しさんNGNG
#if 0
    >>822-823
#endif
0825デフォルトの名無しさんNGNG
文字表示の方法がわからないのですが・・・
D3DXCreateFontで作った後、
DrawTextを用いればよいのでしょうか?
0826デフォルトの名無しさんNGNG
>>820
頂点シェーダかSSEでマトリクスxベクトル書いてみれば分かる
0827デフォルトの名無しさんNGNG
DirectX8で1フレームごとに画面を全部書き換えたほうがいいのか
変更のある部分だけ書き換えた方がいいのか
どっちがいいのでしょうか?
画面内でたくさんのキャラクターが動き回るようなことを想定しています
0828デフォルトの名無しさんNGNG
>827
どうせZバッファクリアしなきゃいけないから漏れなら全部消す
多分速度的に問題が発生したら、そんなところよりも他で稼げるところがあるはず
どうしても60fpsキープする必要があって、ほんのあとちょっとで60fpsがキープできるのに
ってことになったら試してみる
0829デフォルトの名無しさんNGNG
どのみちたくさんのキャラクターが動き回るなら
変更のある部分だけなんて
やってられなくなると思うが
0830デフォルトの名無しさんNGNG
カメラが1度傾いただけでも全画面更新なのにアホな質問だな。
こんな想像力もないんじゃもうプログラマなんて辞めた方がいい。
どの道、この先何をやっても駄目。
0831デフォルトの名無しさんNGNG
視点移動するとは書いてないけどな
0832デフォルトの名無しさんNGNG
視点移動が行われない可能性を想像できなかったんだろ
0833デフォルトの名無しさんNGNG
D3DXSPRITE(だっけ)みたいのでも使って2Dやってるんじゃないかな
0834デフォルトの名無しさんNGNG
つまるところ、シェーダって何なのですか。

聞いた話では
ピクセルシェーダというのは本当に点を表示するだけであり
この点を表示する一連の行為自体をシェーディングと呼ぶ

というのですが
0835デフォルトの名無しさんNGNG
他人にいちいち聞かないで、実際に使ってみること。
0836デフォルトの名無しさんNGNG
>834
最近は初心者本でもシェーダまで取り扱ってるから
読みながらやっていったほうが早い
C++なんかに比べれば難しいものでもないし

ただし、ちゃんと対応したハードウェア上でやってくれ
最低でもげふぉ5200かな
0837デフォルトの名無しさんNGNG
>>836
あれはゲフォと読むのかジーフォースと読むのか
どっちなのか迷ったがゲフォの方がヒット件数があまりにも多いのでゲフォでいいのかとか
思ったがやっぱりジーフォースって読むような気がするんだよね。

っていうか、セミナーとか言ってみたひとに聞きたいんだけど
外人ってGeForceのことなんて読んでた?
0838デフォルトの名無しさんNGNG
外人は差別用語。
0839デフォルトの名無しさんNGNG
>>838
じゃあ、外国の人
つーか、そんなんどうでもいいよ。
俺はジャップでも甘んじて受けるぞ。
0840デフォルトの名無しさんNGNG
概念を知りたいんじゃないの

最近は名前ばかりが多く取り上げられているから
PixelShaderというと「キャラクターを描画すること」
しか思い浮かばないだろう

何のどういうプロセスを踏んで何を描画するのか
そういう作動方式と言うかそこまで伝わってないのが現状
0841デフォルトの名無しさんNGNG
じゅふぉせ
0842デフォルトの名無しさんNGNG
>>834
シェーダってのは、各頂点・ピクセルで行われる計算
(頂点単位での法線とライトの内積計算とか、
ピクセル単位でのテクスチャと頂点カラーのブレンドとか)を
専用の言語で自分でプログラムすることだと思う。
これに対してハードウェア備え付けの計算機能を、固定機能…って言うかな。

元々はバンプマップとかのシェーディング(陰影づけ)のための
ものだったけど、今では陰影づけと関係ないこと
(頂点ブレンドとか輪郭抽出とか)にも使われるので、
"シェーダ"という単語の意味からは離れてる気がしないでもない。
(OpenGLでは頂点プログラム・フラグメントプログラムっていってた気がする。)
0843デフォルトの名無しさんNGNG
>840
だって素人さんに説明するの難しいんだよなー

シェーダという言葉はシェーディング(陰影)からきている
そこから発展して今はGPUに対する処理手順記述するものになってる
処理手順を記述することからプログラマブルシェーダといわれてる
世代が進むごとに応用の範囲が広がり多種多様な目的で使われている
代表的な例としてはスキニング(3Dモデルの変形)に使用さてることかな
本来の意味であった陰影付けとはかけ離れた使い方だな

基本的なシェーディングを実装する場合の使い方は
頂点の2D(スクリーン)への座標変換、光源計算、マルチテクスチャの重ね合わせ
このうち「頂点の2Dへの座標変換、光源計算」までが頂点シェーダの役割
「光源計算(の結果の処理)、マルチテクスチャの重ね合わせ」がピクセルシェーダの役割

シェーダのバージョンが違うと何が違うかというと
まぁ一番の違いは記述できる手順の量(行数)が違う
記述できる手順の量(行数)がたくさんあるほど複雑なシェーディングが記述できるということになる
まぁ使える命令の種類が増えたりもするんだけどね

ちょっと素人さん用に強引な説明だが、まぁそんな感じ
0844デフォルトの名無しさんNGNG
>>843
ほうほう。
シェーダについて少し調べた後なら、その説明はわかりやすいかも。
それにしても、プログラマブルシェーダはおもしろそうですな。
けど、バージョンごとで書き分け必要でめんどくさそうですな。
0845デフォルトの名無しさんNGNG
>844
こういうのは下位互換が前提だからね
バージョン1.0のシェーダはバージョン2,0に対応したハードでも動く
逆はもちろん無理
これからは使用シェーダのバージョンで最低動作環境が決まってくるのかな
バージョン1.0のピクセルシェーダはもう書きたくない
行数少なすぎ
0846デフォルトの名無しさんNGNG
素人にもわかるようにカタカナを使わずに説明してくれ。
0847843NGNG
>846
そう思ってカタカナというか専門用語は極力はずしたつもりなんだが…

これ以上は漏れには無理

ttp://www.microsoft.com/japan/msdn/directx/welcome/dsmsdn/directx01152001.asp
これよりはわかりやすいと思うが
0848デフォルトの名無しさんNGNG
>>845
あぁ、やっぱり1.0はつらいのか・・・かなり少なそうな気がしてたから分割するのかな?とか思ったよ。
>使用シェーダのバージョンで最低動作環境が決まってくるのかな
動作環境高くなりそうだねぇ・・・
0849デフォルトの名無しさんNGNG
>>845
上位互換と下位互換を混同するな。
0850デフォルトの名無しさんNGNG
>>847
いやただのネタです。
すみません。
0851デフォルトの名無しさんNGNG
うお、間違えた
上位互換
http://e-words.jp/w/E4B88AE4BD8DE4BA92E68F9B.html
下位互換
http://e-words.jp/w/E4B88BE4BD8DE4BA92E68F9B.html
0852デフォルトの名無しさんNGNG
PS2でPSのソフトが動く(厳密にはちょっと違うけども)のが上位互換
これで覚えろ
DirectXやピクセルシェーダーも同じく

下位互換はレアなのだよ
0853デフォルトの名無しさんNGNG
バージョンがどうとかよりHLSLが使えるかどうかのほうがでかいとおもうね。
0854デフォルトの名無しさんNGNG
>>853
HLSL使えても
バージョン無視で何でもアセンブル通ると思ってる?

マイクロソフトの開発チームにバリバリ頑張って貰わないとなぁ
0855デフォルトの名無しさんNGNG
>>854
とりあえず1.1でやってるけど一通りのことはできるからね。
バンプ、環境、影、スキン、αブレンドなどやその他もろもろとかそれだけかよって感じだけど
これだって他のシェーダ同士の組み合わせとかモデリングツールからもってきたり
デザイナに足りないところを設定してもらったりしても結構面倒な作業だよ。
あと、バージョンが増えてもライトがいくつ使えるかってところだけで
他にはなんもないよ。(俺にとっては)
0856デフォルトの名無しさんNGNG
PS1.3では1ライトで限界だったな。
俺の中ではPS1.xは無かったことになってるよ。
こんなもんに対応する為に悩むなんて時間の無駄。
0857デフォルトの名無しさんNGNG
スキニング変形を加えた後のモデルに対し、「正確な」当たり判定を
する必要があるのですが、これをスマートに実装する方法はあるのでしょうか。

今はまず、通常は普通に描画してしまっています。
そして当たり判定が必要なときのみ、対象のモデルのメッシュを全て自前で
スキニングし、そのスキニング後の頂点座標を自前バッファに取って、それで判定してます。

「正確な」(全面に判定が必要で…)ということで、こういう泥臭い方法になってしまっています。
残念ながらこれは、判定の頻度や、対象の数が増えるにつれ、もったりしてきてしまいました。

いっそ最初から、通常描画も全てソフトウェアスキニングにしてしまおうか迷っています。
なんとかハード側がスキニングしてくれた後の頂点座標データにアクセスできないでしょうか。
0858デフォルトの名無しさんNGNG
>>857
それって要約すると
描画でスキニングして、なおかつ当たりが発生したら
変換前の頂点を自前でスキニングさせて、その座標で当たり取ってるって事だろ。

二重にスキニング計算してるって…
これを分ってても分ってなくとも致命的な発想の欠陥だよ(プログラマ向いてないよ)

推測でのアドバイスになるが
D3DXでしかモデルを扱えないレベルで
D3DXのモデル系の操作関数を深く知らないなら
D3DXは色々な操作をする時に足枷にしかならないと思う。
そう言う状況なら自前でオプティマイズした処理の方が良いと思うけど…
(理論的には頂点バッファでDrawしてるんだから、
D3DX使ってても頂点バッファを取得、アクセスできる筈、いっちょ調べようってならないかなぁ…)

それと、当たりの”正確な”って意味にもよるが
普通は当たり用の別な形を用意するんじゃない。
例えば人物の二の腕、腕、拳とカプセル体を仕込んでおいでスキンニングと同じ変形をかければ、
そのカプセル体との当たり判定で大体正確な当たりになると思うけど…
処理の理由でモデルと同じポリゴンじゃなきゃ駄目ってなら、素直に当たり取るしかない。
ただ全判定なんてアホな事は当然してないよね?
オクトツリーなりで空間分割してって当然だよね。
0859857NGNG
>>858
二重についてですが、今は描画時のスキニングをHLSLで任せているんです。
あくまで描画の頻度に比べてですが、当たり判定の頻度が少ないので、こういう処理にしていました。

となると二重にならず、なおかつスキニングをソフトウェア側でやらずに済む
方法があるのでしょうか?是非是非ご教授を…。

例えば描画時の処理を固定に変えてでも良いので、どこかにハード側が
スキニングしてくれた後の頂点座標が用意されていれば…。

D3DXは使って無いんです。それでもUpdateSkinnedMeshは試し、変換後のバッファを
取得してみましたが、これだと自前と大差無いどころか、融通が効かないのと初期化分駄目でした。
オクトツリーというか、モデルなのでBoundingBoxは作成しています。
0860デフォルトの名無しさんNGNG
> 二重にスキニング計算してるって…
> これを分ってても分ってなくとも致命的な発想の欠陥だよ(プログラマ向いてないよ)

オレも知りたい
ここまで言い切ってるとナンカ気になる
0861デフォルトの名無しさんNGNG
最近 >>830 とか >>858 とか、頭が極端なやつが多いな
0862デフォルトの名無しさんNGNG
3点を通る円を作りたいのですが、
どのようにをプログラムを作ったらよいかどなたか教えてください。
・分かってる点、始点(X1,Y1)中点(X2、Y2)終点(X3,Y3)です。
円弧は円のみではなく始点から始まって終点まで描画する円弧も作成できるようにしたいです。
・(X-X0)^2+(Y-Y0)^2=r^2の式を使って連立方程式を立て中心(X0,Y0)と半径rを求めたいです。
0863デフォルトの名無しさんNGNG
>>862
円はそれだと始点=終点で2点しか出来ないから無理
0864862NGNG
>>863
 じゃあどうしたらよいのでしょうか?
0865デフォルトの名無しさんNGNG
drawCircle()drawArc()と分ける。
0866デフォルトの名無しさんNGNG
すごい宿題っぽい質問だ
0867862NGNG
分けるとは?
0868デフォルトの名無しさんNGNG
日本語すら分からないとはいったい何人なんだか。
ほらよ。
http://dictionary.goo.ne.jp/search.php?MT=%CA%AC%A4%B1%A4%EB&jn.x=37&jn.y=12&jn=%B9%F1%B8%EC&kind=ej&mode=0
0869デフォルトの名無しさんNGNG
とりあえずスレ違い、むしろ板違い
数学の問題

つーか数Bレベルだよw
0870862NGNG
drawCircle()drawArc()ってのがわからないんですが…。
0871デフォルトの名無しさんNGNG
それは頭が悪いから。
0872デフォルトの名無しさんNGNG
>>862
ここで聞き給へ
http://pc5.2ch.net/test/read.cgi/tech/1100530682/
0873862NGNG
>>872
ありがとうございます。
0874デフォルトの名無しさんNGNG
ゲームなどのBGMの再生に DirectX Audio って使ってますか?
それともmidi関連のマルチメディアAPIなどを使っているのでしょうか。

DirectXAudio を、サンプルを見ながら何とか使ってみてはいるのですが
まず再生までの手続きが複雑で気が滅入ります…w
1曲のロード時間も長く、また描画にかなりマシンパワーをとられて
しまっているので、曲を再生すると相当な負荷がかかってしまいます。
この際、音質の良し悪しはあまり重要視していませんので、
この辺を軽くする設定はありますか?
0875デフォルトの名無しさんNGNG
出力ポートをソフトシンセ以外のところに切り替えるだけで軽くなる。
どこに切り替えるかはユーザに選ばせればいい。
0876デフォルトの名無しさんNGNG
>>875
なるほど、このへんですかね…
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdx8_c/hh/directx8_c/_dx_using_directmusic_ports_dxaudio.asp
そうすると、Performance に対して特にポートの設定を
していないときは、デフォルトのポートはソフトシンセに
設定される、ということなのでしょうか (環境によって
違うのですかね)。

ともあれもう少し調べてみることにします。
情報ありがとうございます
0877デフォルトの名無しさんNGNG
ドライバの動作状況、
例えば演算器やシェーダのマネジメント状況ってDirectXで採れますか。
0878デフォルトの名無しさんNGNG
頂点シェーダというのは
描画の際に必須なんでしょうか?
サンプルを自分のプログラムに組み込むと
失敗している関数がないのに何も表示されません
(サンプルの頂点シェーダを使っても同じです)
0879デフォルトの名無しさんNGNG
>878
そのプログラムでシェーダをロードしている場所があれば使用しているシェーダが読み込めるようにしてください
不具合が出ても自力で解決できないようなものは組み込むべきではないと思います
0880857NGNG
>>858氏はもう見てないんだろうか
結構切実なんで、どういうのが念頭にあったのか皮肉抜きで教えて欲しいのですが
もう他では時間稼げそうにないなり…
0881デフォルトの名無しさんNGNG
>>858はきっとスキニングに使用する行列で球等の簡単な判定オブジェクトを変換して、それで判定しろって事じゃないですかね。
前半のアドバイスの意味はわからんけど。
ただ、正確な判定が欲しいなら必要な時のみソフトウェアで頂点変換するのが速いかと。
0882857NGNG
>>881
今時面レベルでの当たり判定というのは珍しくなさそうですが、
やはり「ソフトウェアで頂点変換」の部分はどこもあるんですかねぇ…

しょうがないので気が重いですが最後の手段、プログラム側で作ってた
判定オブジェクトを手動にしてもう少し頑張ってみます…お付き合いありがとうございました
0883デフォルトの名無しさんNGNG
0884デフォルトの名無しさんNGNG
LightWaveのレイアウトで、ピボットを使わずに
物体を移動させる時の事を想像して欲しいのですが、
パースビューでは(視点の位置に関わらず)、
マウスを左ボタンドラグで「上・下」に動かすと
物体が「奥・手前(Y座標は固定)」に動くし、
「左・右」に動かせば「左・右」に動きますよね。

マウスの動きを入れた2次元ベクトル(スクリーン座標)を
どうやって変換したらそのような動きを再現できるでしょうか。
イメージとしてはモニターの平面を、ワールド空間のxz平面に倒すような感じで
投影(?)射影(?)すればよいと思うのですが、
どのように座標変換したらよいか教えてください。
0885デフォルトの名無しさんNGNG
LightWaveのことは知らないけど、つまりマウスを左右に動かせば
カメラから見た左右に動くということ?

じゃカメラの向きのベクトルとアップベクトルがあればカメラから見た横方向のベクトルは作れるので
マウスの左右の移動量と横方向のベクトルを使って移動ベクトルを作ればいいだけでは?
0886デフォルトの名無しさんNGNG
UVって何スカ?紫外線スカ?
0887デフォルトの名無しさんNGNG
カメラの位置から注視点へのベクトルと垂直なベクトルを用意するだけでは?
0888デフォルトの名無しさんNGNG
>LightWaveのことは知らないけど、つまりマウスを左右に動かせば
>カメラから見た左右に動くということ?

そうです。そして(884では少し言葉が足らなかったかもしれません)
カメラがワールド空間のXZ平面に対し平行に近い状態で
マウスを上下に動かすと、物体はカメラから見て奥・手前に動き、
カメラがワールド空間のXZ平面に対し垂直に見下ろしたような状態で、
マウスを上下左右に動かすと、物体はマウスについてくるように動きます。
ワールド空間上でのY座標方向には、どんな視点の場合でも動きません。

とりあえずマウスのスクリーン座標をD3DXVec3Unprojectで
逆変換してベクトルを作ってみたんですが、これでは当然、
カメラ(視線)がワールド空間上でXZ平面に対し平行に近い場合、
マウスを上下に動かしても、物体はカメラから見た奥・手前方向にはよく動きませんでした。
(横方向には動きますが。)
0889デフォルトの名無しさんNGNG
ものすごく煽りたい衝動に駆られたがグッと押さえた。
俺は一つ大人になったと思う。
0890デフォルトの名無しさんNGNG
>>887
それだと視線が水平に近い時、奥や手前に進んでくれなそうな気が。。。

>>889
むしろヒントになるような事なら煽って欲しいんですけど。
0891デフォルトの名無しさんNGNG
簡単にいえばY方向への移動量をZに逃がしたいって話じゃないの?
z+=y;y=0.0fでよさそうでない? 試してないけど。
0892884NGNG
>>891
すいません、何の座標系での話しでしょうか?
視点は一定ではないので、
必ずしも画面奥がワールド空間でのZ方向とは限らないのですが、
そういうことではないですか?
0893デフォルトの名無しさんNGNG
>892
とりあえずやり方がわかんないなら、縦はカメラから視点までベクトル使って
横はカメラから視点までベクトルと(0, 1, 0)のベクトルの外積で求まるベクトル使ってしのいだら?

一番簡単な方法だし
0894884NGNG
>とりあえずやり方がわかんないなら、縦はカメラから視点までベクトル使って

それだと視線がワールド座標のXZ平面に大して垂直に近づくほど
動かせなくなっていくと思うのですが、、、
0895デフォルトの名無しさんNGNG
>894
XZ平面に垂直だろうが、水平だろうがカメラに向かって奥か手前に動くと思うんだけど?
y成分を0にしたりしないよ
0896884NGNG
説明が下手でした。
どんな視点、視線の時も、左ドラグでワールド座標のXZ平面に平行に動くようにしたい、
(Yの位置は現在のままで。)ということです。
0897デフォルトの名無しさんNGNG
っていうかそのライトヴェーブの動きの簡易説明を画像で頼む
0898884NGNG
なんか凄くあたりまえな画像ですが用意しました。
要はこんな単純な事が言いたかったのです。説明下手でした。
マウスを画面で上下左右に動かした時、矢印の方向に動きます。
(実際は合成で斜めにも自由に動きますが。)

http://gamdev.org/up/img/1949.jpg
http://gamdev.org/up/img/1948.jpg
0899デフォルトの名無しさんNGNG
カメラから視点までベクトルのy成分を0にしてを正規化して特定の値を掛けて
常に一定の移動量を保てばいいだけかな?
0900899NGNG
ちなみに本当に垂直にしたらだめなので、ほぼ垂直以上にならないように気をつけること
アップベクトルをきちんとしてないとジンバルロックが起きるから垂直にはできない
もしアップベクトルをきちんとしているなら垂直のときにはアップベクトルが使える
0901デフォルトの名無しさんNGNG
やっぱりというかというか
別に難しいことじゃないじゃん
0902デフォルトの名無しさんNGNG
>901
初心者スレだからこれくらいはいいんじゃないの?
宿題はカンベンだけど
0903デフォルトの名無しさんNGNG
884は理解できたのだろうか・・・。
気になって夜しか眠れない
0904884NGNG
どうもです。たぶん理解できました。
これから試してみてまた報告に来ます。
ひとまずありがとうございました。
0905デフォルトの名無しさんNGNG
>903
>気になって夜しか眠れない
漏れ以外にもこのネタ使う香具師がいるのかw
一瞬、あれこんなレスしたっけ?と思ってしまったw
0906デフォルトの名無しさんNGNG
木になって昼間も動けない。
0907デフォルトの名無しさんNGNG
なんでベクトルの話が出てくるのがわからん。
マウスが縦横に動いたら、視点をオブジェの周りで縦横に旋回させるだけでは?

0908デフォルトの名無しさんNGNG
>904
>884のこと?
君がいってるのはカメラの操作で
>884が言ってるのはオブジェクトの移動だよ
0909デフォルトの名無しさんNGNG
>>908
なるほど、では言い直そう。

なんでベクトルの話が出てくるのがわからん。
マウスが縦横に動いたら、オブジェをZYに移動させるだけでは?
0910デフォルトの名無しさんNGNG
あーむかつく。
こういうの出来ない奴って座標変換がまったくわかってねぇんだよな。
現役プリ☆グラマの俺様が指導してやる

・ワールド座標からスクリーン座標への座標の変換。
・ワールド座標からスクリーン座標へのベクトルの変換。(言っててはずかしいぜw)
・スクリーン座標からワールド座標への座標の変換。
・スクリーン座標からワールド座標へのベクトルの変換。(笑)
・ローカル座標からワールド座標への座標の変換。
・ローカル座標からワールド座標へのベクトルの変換。(笑)
・ワールド座標からローカル座標への座標の変換。
・ワールド座標からローカル座標への座標の変換。(笑)
・ローカル座標から別のローカル座標への座標の変換。
・ローカル座標から別のローカル座標へのベクトルの変換。(笑)
面倒臭くなってきたw以下省略形でw
・ワールド座標からカメラ座標へ変換。座標・ベクトル。
・ローカル座標からカメラ座標へ変換。座標・ベクトル。
・カメラ座標からローカル座標へ変換。座標・ベクトル。
・カメラ座標からワールド座標へ変換。座標・ベクトル。

っと、まあ、挙げればきりがないがこんなところか?
0911デフォルトの名無しさんNGNG
>>910

ワ
ワ
ス
ス
ロ
ロ
ワ
マ
ン
コ
不
ド
ウ
サ
ン
0912誰も聞いてないかもしれんがNGNG
出来ない奴ってこれが全部同じものだってことがわかんないんだよね。
だからワールド→ローカル変換ができるくせに
スクリーン→ワールドになっちゃうととたんにわからなくなっちゃう。
(まあ、これはちょっと違うけどDirectXで出てこなかったわけじゃないよね?)
#ワールド→スクリーンの変換が出来ない奴は見捨てるしかないので自分で考えてチョw
#つまり、その逆。できなきゃおじさん泣くw
カメラ→ワールドも別の変換とか思っちゃうかな?
ローカル→別のローカル と ローカル→カメラ なんて全く同じだよね?

こんな変換とかはできるかな?

どっかのローカル座標上にある物体を、
カメラ座標上にもってきてカメラ座標上でY軸上に5動かしたあとで、
またもとのローカル座標上に戻す。

こういう変換をすればカメラ座標上で上に動かしたんだから物体がどういう状態であろうと必ず上に動くよね?
まあ、これは平行移動よりも回転で良く使うけど。

0913デフォルトの名無しさんNGNG
で、ちょっとわかりいいかもな図

とりあえず画面に描画されるまでの変換は
スクリーン→カメラ→ワールド→ローカル→ローカル→ローカル・・・
ってわけだ。
でも、実際の世界の構造は必ずワールドが一番下で

ワールド →ローカルA→ローカルB→ローカルC→ローカルD
      →ローカルE→ローカルF
      →ローカルG→ローカルH→ローカルI
      →ローカルJ→カメラ→スクリーン

とかなってるんだよね。(あ、これは例ね。)
あ、ちなみにこの図はワールド座標上に階層構造の物体が4つあって
そのうち1つの物体にカメラがくっついてる状態ね。
0914デフォルトの名無しさんNGNG
これ、わかるかねぇ。
ためしにある点をローカルDの座標上からローカルFの座標上にもってくるためには

ローカルD→ワールド の変換と
ワールド→ローカルF の変換ができればいいよね?

じゃあ、見た目どおりに動かしたいってことは一度カメラ座標上に物体をもってきて動かしてから
またローカル座標上(またはワールド座標上)に戻せばいいよね?

ま、例えばローカルDにその物体があったとすると

ローカルD→ワールド
ワールド→カメラ
カメラ座標上でちょっと動かす。
カメラ→ワールド
ワールド→ローカルD

って動かせばおおよそなんでもできそうだよね。
じゃあ、プリグ☆ラマンはもうねるからじゃあねw
え?長文がよめねぇだとぉ?死ね死ね死んじまえw
0915デフォルトの名無しさんNGNG
基本的な事を何得意げに語ってるんだ
わかりにくいし
0916デフォルトの名無しさんNGNG
>>915
でもわかって無い奴多いだろ。
これができなきゃ売り物になるような3Dゲームなんか作れないのに。
それどころか初級シェーダもかけられない。

>>884みたいなのができないなんて座標変換がわかって無い証拠だろ。
やれz軸がどうだとかy軸がどうだとか関係ねぇんだよ。
座標変換がわかってねぇんだよ。
微妙な計算なんてひとっつもでてこないよ。
なのに全然的外れなレスがあるし。ちょっと質問に答える側もレベル低くなってねぇか?
0917デフォルトの名無しさんNGNG
まぁ高校数学
というか三角関数わかれば分かるはずなんだけどな
0918デフォルトの名無しさんNGNG
皆さんこんばんは。
早速質問なのですが、よくオンラインのMMORPG等のインターフェースにある、
マウスでドラッグすると動く内部の小ウィンドウ(ステータスとかスキルとか表示してる・・・)って
どんな風に実装されているんでしょうか・・・。教えてください。

現況はCreateWindowでウィンドウを作り、DirectX関連を初期化し、一応基本描画処理などが揃った状態です。

C/C++はそこそこなんですけど、DirectXはまだサンプルの理解やちょっとした派生程度のレベルなので
その辺の処理は詳しくお願いいたします。
0919デフォルトの名無しさんNGNG
>>918
良く知らないけどそれってWin32APIのウィンドウっぽい?
ならツールウィンドウじゃねぇの?
WS_EX_TOOLWINDOW
で出来る奴。
VC6の奴だったらツールバーのおかしな奴だっけ?
(こっちはフォーカスを失ってもバーが青いまま。バグだろw)
0920デフォルトの名無しさんNGNG
そんなもん自分で考えられないヤツが
C/C++そこそこ
なんて話を漏れは信じないぞ
0921デフォルトの名無しさんNGNG
>>920
C/C++はそこそこでWin32はアレなんだろ。
0922デフォルトの名無しさん NGNG
>>918
それは自分も聞きたいですねぇ。
APIのウィンドウとか標準のコントロール貼り付けるとかでもなくて、
多分カスタムドロー使ってるだけとかでもなくて、
描画からウィンドウ管理から全部自分でやってるんですよね。。。
とりあえず2D画像のパーツを組み合わせて窓枠を作り、それを表示させてみたい、
けど3D画面に2Dを合成するやり方が分からない。
0923デフォルトの名無しさんNGNG
>>922
>描画からウィンドウ管理から全部自分でやってるんですよね。。。
さらに難易度下がるんだけどw
Win32のご機嫌とるよりよっぽど楽だよ。
0924デフォルトの名無しさんNGNG
取っ掛かりがわかんないんですよね
とりあえず2D画像のパーツを組み合わせて窓枠を作り、それを表示させてみたい、
けど3D画面に2Dを合成するやり方が分からない。
なので、まずここからどんな感じの方法があるのか教えて欲しいのですが。
窓枠を表示する方法・・・
0925デフォルトの名無しさんNGNG
どうも922は自演くさいなw

DirectX8以降なら、ID3DXSpriteを使うか、
TLVertexを使って窓枠とやらのテクスチャを表示すれば簡単に出来るかと。

DirectXを使った市販ゲームで、ゲーム中のメニューに
コモンコントロールを使っているのはほとんど無い(SLG辺りで少しあったかな)。
Spyで覗いてみると良いよ。
0926デフォルトの名無しさんNGNG
ポリゴンにテクスチャ貼るのって(3D変換しないとはいえ)物凄く面倒そうなんですが
そうするのがメジャーなんですかね?

裏画面で2D画像から読み込んだウィンドウのパーツを配置・組み合わせたりして
ウィンドウの外観を2Dで完成させてから、それを
表画面にアルファ付きで転送、みたいなのってDXではできないんですか?
0927デフォルトの名無しさんNGNG
>>916
ここの回答者も>884もその程度の事は分かってるだろ。
わざわざ座標変換の話を持ち出すまでもない。
今のところレベルが低いのはお前だけだ。

>>926
> ポリゴンにテクスチャ貼るのって(3D変換しないとはいえ)物凄く面倒そうなんですが・・・
どこが面倒なのかが分からん。

> 裏画面で2D画像から読み込んだ 〜 DXではできないんですか?
出来る。
0928デフォルトの名無しさんNGNG
>>927
変換済みポリゴン使う場合は
FVF定義してとか手続きが面倒くさそうだし
例えばウィンドウの中にボタン一個配置するだけのために
もう一枚ポリゴン作ったりUV操作したりしなきゃならなそうで。

ならば2DRPGのマップを作るような要領で
裏画面で画像から読み込んだパーツ(タイトルバーとか、ボタンとか)を配置してウィンドウの外観を作り、
それを表に転送することができればそっちの方が簡単そうじゃないですか?

>出来る。

ぜひともその方法を教えてください。
0929デフォルトの名無しさんNGNG
>>928
自前でテクスチャを貼る際はUV座標で管理してるわけじゃない。
(最初からUVで管理してる奴もいるかもしれんが・・・)
使用する直前でUV座標に変換してやればいいだけだ。

細かい計算は省略するが、

FLOAT u,v;
u = 画像上の任意のX座標 / 画像の幅;
v = 画像上の任意のY座標 / 画像の高さ;

> ウィンドウの中にボタン一個配置する・・・
C++がそこそこ出来るんならクラスも作れるんだろ?
Win32のウィンドウシステムをクラスを使ってエミュレートしてみれ。
とりあえず階層構造(親子関係)と描画機能があればいいんだが、
階層構造が必要なければ描画機能だけ実装すればいい。

> 裏画面で画像から読み込んだパーツ(タイトルバーとか、ボタンとか)を配置してウィンドウの外観を作り・・・
レンダリング可能なテクスチャを用意する方法があるが、
どちらにしても板ポリを使って描くんだから余計面倒なだけだろ。
DirectDrawでも使うか?
0930デフォルトの名無しさんNGNG
>どちらにしても板ポリを使って描くんだから余計面倒なだけだろ。

そこが分からないんですが、

GDIのみで2DRPG作るときみたいな要領で、裏バッファに2Dビットマップを持たせて
そこで画像を組み合わせたりする事は出来るけど、
それをそのままフロントバッファの3D画面に転送したり合成する事までは出来なくて
結局は変換済みポリゴンに対してテクスチャとして貼らなきゃいけない。

ってことですか?よく分からなくなってきました。
とりあえず変換済みポリゴンを表示するところから始めてみよう…
0931デフォルトの名無しさんNGNG
お礼も言えなきゃ、DirectXのバージョンも書かない様な奴に
おまえら良く付き合いますね
0932922NGNG
>お礼も言えなきゃ

いやだってまだ話し終わってないし…
バージョンは9.0bであります。
バージョン関係ないような話だと思ったものでごめんなさい。
ちなみに私は918の方とは別人です。
0933デフォルトの名無しさんNGNG
>>924
>けど3D画面に2Dを合成するやり方が分からない。
もう、このへんでこいつ相手にしたら負けかなって思ったw
0934デフォルトの名無しさんNGNG
お礼はいらないが、結果報告はして欲しいな。

質問者はまず環境を書くこと。
環境がマズくてうまくいかない事もある。
DirectXスレなんだから、最低でもバージョンくらいは書いとけよ。
(技術的に)どの程度の事が出来るかも添えておけば更によし。

回答者はそれを考慮して答える。
0935デフォルトの名無しさんNGNG
最低限チュートリアルを全て終わらせてから出直せ。
0936934NGNG
テンプレに明記してあったのね・・・

【 質問する香具師 】
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0937922NGNG
D3Dのチュートリアルはやりましたが、
今回の質問内容が分かるような章はなかったような…
c++でコモンコントロールを真似て
処理や動作をクラス化したりというのは何とかできそうなので、
引っかかっているのはそれをどうやってDXで描画するかという部分です。
0938デフォルトの名無しさんNGNG
D3DFVF_XYZRHW
0939デフォルトの名無しさんNGNG
>>937
チュートリアルにもろにそれぞれの座標の設定の仕方が載っているのに、
> 今回の質問内容が分かるような章はなかったような…
それはやったとは言わない。
もう一度きっちりやり直せ。
0940デフォルトの名無しさんNGNG
DirectXのヘルプを
一通り目を通しても別に大した時間かからないし、
こんなところでくだらない質問することもなくなるから
一度読んじゃったほうがいいよ。
もちろん細かいところは省きながら。
0941デフォルトの名無しさんNGNG
ヘルプ読んで理解出来るような奴なら、
こんなスレには来な・・・ うわっ何をすあwせdrftgyふじこl
0942922NGNG
一度質問内容を整理補足したいのですが、

・変換済みポリゴンを使ってテクスチャを貼る方法は分かりますが、
ウィンドウ内の部品(ボタンなど)ごとにポリゴンを作らなきゃならないのでしょうか?
ポリゴンで作るとなると、ウィンドウの大きさを変えるだけでVBロックしたり、とか
そんなことをしなきゃならないのでしょうか?

・GDIのみで2DRPG作るときのような要領で、裏バッファに2Dビットマップを持たせ、
そこで画像パーツを組み合わせたりしてウィンドウの外観を作り、
それをそのまま(ポリゴンに貼ったりせずに)フロントバッファの3D画面に
転送したり合成する事はできないのでしょうか?
・もしくは裏バッファを作ってそこで画像を組み合わせたりとかは出来るけど、
単純にそれを転送して3D画面に合成する事は出来ないので
結局ポリゴンにテクスチャとして貼る事になる、ということでしょうか?

・というか皆さんはどんな風に作ってるんでしょうか?
0943デフォルトの名無しさんNGNG
>>引っかかっているのはそれをどうやってDXで描画するかという部分です。
それを勉強してわからなかったことを質問するんだろ?
0944デフォルトの名無しさんNGNG
>>942
>というか皆さんはどんな風に作ってるんでしょうか?
俺だったらモデリングツールで作ったモデルロードして終わりw
ボタンとかくっつけるの楽でしょ?アニメーションもくっつけられるし。

つーかゲームで出すモデルってのはデザイナが頻繁に変更かけるから
プログラムを実行させないとみられないもの(プログラム内で頂点を設定する等)は
できるだけつくっちゃ駄目。
0945デフォルトの名無しさんNGNG
>>944
ボタンやコントロールの位置・テクスチャが動的に変わる場合には
どう対応するんだ?
0946デフォルトの名無しさんNGNG
>>945
そのときどきで方法は変わるけど別に
設定ファイルを作ってそれを読み込んで終わり。
モデルファイルに直接データを埋め込んだこともある。

ボタンやコントロールの位置が変わるのは頭使えばなんとかなるでしょ?
パターンが少ないなら全部用意しちゃってもいいし、
法則があるならちょっと設定ファイルをつけてやるぐらいで対応できるでしょ?
悩むもんじゃない。
テクスチャが動的に変わるなんてゲームじゃしょっちゅうあることだからすでに対応済み。
0947デフォルトの名無しさんNGNG
動的変更に関しては、エディタなりビューアが無いと
設定ファイルの動作を見れないというわけか。
まあ、その時はその時だな。
0948デフォルトの名無しさんNGNG
なんでそんなにポリゴンを必要以上に忌み嫌うのかがわからない
四隅の座標指定してBitBltで貼るのと
四隅の頂点指定してDrawPrimitiveするのとなにがそんなに違うんだ
用途によって適した方を使い分ければいいだけ
0949デフォルトの名無しさんNGNG
違いを意識しなくてもいい関数を一つ作ればいいだけなんだけどね。
最初から用意されていれば、内部で何をやっているかすら考えずに使うくせに、
用意されていないと動作の違いについてグチグチグチグチ言い続ける。
そんな奴が何故プログラムを組むのかわけ分からん。
0950デフォルトの名無しさんNGNG
どうでもいいから

>ウィンドウ内の部品(ボタンなど)ごとにポリゴンを作らなきゃならないのでしょうか?

>・GDIのみで2DRPG作るときのような要領で、裏バッファに2Dビットマップを持たせ、
>そこで画像パーツを組み合わせたりしてウィンドウの外観を作り、

この2つがやってること同じとしか思えない漏れに誰か解説してくれ。
(後者は1パス余計なところ以外で)
0951デフォルトの名無しさんNGNG
後者はDirectDraw的な操作でなんとかならないかって事だろ。
毎度ポリゴン作るのが嫌だと仰っておられる。.

もうね、アh
0952918NGNG
寝ている間に同じような疑問を持った方が来られたようで・・・。
918以降返信するのはこれが初めてですので。
C/C++がそこそこって言うのは他の方はどうかわかりませんよ。>回答者の皆様

>>919
回答ありがとうございます。ググってみます・・・。
たしかにツールバーと同じような働きですね。スキンをかけていることを除けば。

>>921
その通りです。Win32はまだまでして・・・。

>>925
回答ありがとうございます。そうですね、単にスプライト表示すれば3D描画座標は関係ないですね。
あとSpy++を活用してみます。

>>931,934
すいませんでした。当方はDirectX 9.0cと、VC++6です。
-----------------
色々な方の回答を受けて、私なりに2通りの方法を考えてみました。

1.別ウィンドウを作ってWS_EX_TOOLWINDOWを定義し、Paint系を横取りしてテクスチャを貼る。
→ググったらツールウィンドウの作り方が出てきたので、それを参考にしてみます。

2.ID3DXSpriteを使用して転送。マウスイベントで該当するウィンドウをずらす
→これだとそれぞれのウィンドウの座標位置を保持する変数が必要に思えて大変そうですが・・・。

とりあえずコード組んでみます。ありがとうございました。
0953デフォルトの名無しさんNGNG
>>951
そんな事書くくらいならお前が一発で納得させて質問者を黙らせるようなレスすりゃ済む話。
0954デフォルトの名無しさんNGNG
黙れ!小僧!


黙らせるようなレスだよ
0955デフォルトの名無しさんNGNG
ところで、次スレは必要なのか?
0956デフォルトの名無しさんNGNG
>>942
隊長!正直このスレのせいで、伝統の鬱だ氏のうスレが瀕死です
0957デフォルトの名無しさんNGNG
失敬!
>>942じゃなくて>>955
0958HDSL ◆aoV/Y6e0aY NGNG
>DirectXについて、にいさま達がマターリと
>技術情報交換&雑談するためのスレッド。
>初心者用相談室では扱わないような少し高度な話題も受け持つ。
鬱だ(rは趣旨としては情報交換がメインだからね
質問スレがあったほうがどっちも荒れないでいいと思う

誰も立てないなら立てます
0959HDSL ◆aoV/Y6e0aY NGNG
やっぱりまだ早いのでやめますた
>975あたりをゲットした人が立てるのがタイミング的によさそう

>975よろしく
0960デフォルトの名無しさんNGNG
鬱だ(ry もたまにはageてやるか
0961デフォルトの名無しさんNGNG
2ヶ月前に立った鬱だスレがまだ50レス未満ってのは
昔を思い出すと確かに寂しいな
0962デフォルトの名無しさんNGNG
>>947
テクスチャアニメーションにしても
UVアニメーションにしてもモデリングソフトでサポートしてるからそんなことはない。
0963デフォルトの名無しさんNGNG
>>918で
>DirectXはまだサンプルの理解やちょっとした派生程度のレベル
>>952で
>当方はDirectX 9.0cと、VC++6です。
って言ってるが、サンプルって
ワザワザ自分の環境用にプロジェクトなりフレームワークなり作り直してる?
それともコード眺めてってレベル?

なんかなぁ…
0964デフォルトの名無しさんNGNG
X軸を中心にカメラを回転させる時
(0,0,-1)にいるとして、90度以上回転すると
カメラの上下が反転してしまうので

上方ベクトルもカメラにかける行列と同じ行列をかけて回転させているのですが
それでも90度以上回転させると上下が逆になってしまいます

何か考え方か上方ベクトルの認識が間違ってますでしょうか?
0965デフォルトの名無しさんNGNG
鉄棒で半回転すれば上下逆さまになるのは当たり前。
普通に振り向けよ。
0966デフォルトの名無しさんNGNG
>>965
いえ、なんというか
その上下逆さまになった状態をカメラに写したいので
上方ベクトルも回転させているのですが
逆さまに写ってくれないのです
0967デフォルトの名無しさんNGNG
もしかしてD3DXMatrixLookAt系でそれをやろうとしているとか?
もしそうなら、致命的な勘違いをしているので、
この手の関数に頼らず自分で計算しろ。
0968デフォルトの名無しさんNGNG
>967
別に間違えていない
間違えてるなら具体的に何が間違えてるかちゃんと書け
ろくな状況説明のない質問厨と同じレベル

>966
上方ベクトルの出し方がおかしいんじゃないか?
そこを見直したほうがいいと思う
0969デフォルトの名無しさんNGNG
こういうスレは、コーディングスタイルや
恩師からどう教わったかでケンカが始まるもの。


ガチガチの学校出、先生から懇切丁寧に教えてもらわないと
プログラムひとつすらもできなかったアホはホントにケンカ好き。

0970デフォルトの名無しさんNGNG
と、喧嘩好きの>>969が自分のことを言っております。
0971デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/msdn/academic/Articles/DirectX/02/
ここのサンプルで、
VC6、DirectX9oct2004の環境で、ビルドすると、下記のエラーが出ます。
たぶん設定だとは思うのですが。。。
一応、extrasにある、VC6用のlibとDLLは上書きしました。
フォントの出し方は、いろいろあると思いますが、エラーの内容が納得いかないので、
なにか情報があれば、お願いします。

C:\work\DirectX\basic\dx92\dxutil.cpp(192) : error C2039: 'Begin' : 'ID3DXFont' のメンバではありません。
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\d3dx9core.h(313) : 'ID3DXFont' の宣言を確認してください。
C:\work\DirectX\basic\dx92\dxutil.cpp(193) : error C2660: 'DrawTextA' : 関数が不正な 5 個の実引数をともなって呼び出されました。
C:\work\DirectX\basic\dx92\dxutil.cpp(194) : error C2039: 'End' : 'ID3DXFont' のメンバではありません。
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\d3dx9core.h(313) : 'ID3DXFont' の宣言を確認してください。

ログのベタハリで、スイマセン
0972918NGNG
>>963
もちろん、新規にプロジェクト作成して、一文一文を噛み砕きつつ…です。
わかんない処理は時にはググったり。


ところで>>952の方法1を試してみたんですが、
ウィンドウ(WS_EX_APPWINDOW)とその子ウィンドウ(WS_EX_TOOLWINDOW)の2つがあるとき、
子ウィンドウを親ウィンドウの領域内に納めたいのですが、
そういうコードなどは用意されていないんでしょうか。
親からの座標データを下に計算・・・なんですかねぇ。
0973デフォルトの名無しさんNGNG
WS_CHILDWINDOW
0974966NGNG
>>967
ビュー行列はD3DXMatrixLookAtLHで作っていますが
上方ベクトルが変わると正しく動かないんでしょうか?

>>968
実際のプログラムでもカメラはZ軸上にあるので
上方ベクトルは(0.1.0)にしてあって
カメラ座標にかけるX軸中心の回転行列を上方ベクトルにかけてるのですが
カメラのZ座標が0を通る瞬間にやっぱり上下反転してしまいます

余計な部分を省いたこの部分のみのプログラムにしても状況が変わらず
なので、何か勘違いしてる所があるのかなと思ったのですが
0975デフォルトの名無しさんNGNG
回転行列を掛ける対象が違うんだが。
何故部分的に使用して問題を引き起こそうとするのか。
0976デフォルトの名無しさんNGNG
>>974
視線ベクトルと上方ベクトルが一致する瞬間があるんじゃないか?
ちょっと簡単にソース書いてくれ。
0977966NGNG
>>975
書き方が悪かったです
上方ベクトル"にも"かけてるということです
もちろんカメラ座標にもかけています
0978918NGNG
>>973
子属性と定義してやればよかったんですね。ありがとうございました。
0979デフォルトの名無しさんNGNG
まずは上ベクトルの値がどうなってるか把握しる
定期的にOutputDebugStringを使って上ベクトルの値を監視してみたら?


上ベクトルがUpVectorだったとして
{
static int cnt;
if( cnt % 10 == 0 ){
char txt[256];
sprintf( txt, "UpVector( %.2f, %.2f, %.2f )\n", UpVector.x, UpVector.y, UpVector.z );
OutputDebugString( txt );
}
cnt++;
}

これをD3DXMatrixLookAtLHの直後にでもつっこんでデバッガでみれ
0980966NGNG
>>976
Angleは回転の角度
DefUpVec(0,1,0)上方ベクトル
DefPosVec(0,0,-1)カメラ位置
TargetVecは常に(0,0,0)

D3DXMatrixRotationX(&RotateMat,Angle);

D3DXVec3TransformCoord(&UpVec,&DefUpVec,&RotateMat);
D3DXVec3TransformCoord(&PosVec,&DefPosVec,&RotateMat);

D3DXMatrixLookAtLH(&ViewMat,&PosVec,&TargetVec,&UpVec);
D3DDevice->SetTransform(D3DTS_VIEW,&ViewMat);
こんな感じです
0981デフォルトの名無しさんNGNG
やっぱり根本的に勘違いしてるし。
0982デフォルトの名無しさんNGNG
>980のコピペでカメラをまわしたらこうなった
ttp://up.satoweb.net/img100/880.gif
そこはそのままでも得たい結果はえられるっぽい
>981根本的に間違ってるのに
この結果がでたことを説明してくれ
0983デフォルトの名無しさんNGNG
>>981
うざい。具体的なヒントなり解決法を書かないなら何もか書かないでくれていい。
上手くいかないのは勘違いしてるから上手くいってないんだから当たり前だ。
質問が流れて質問も解答もピントがずれてくる。双方にとって不幸。
0984デフォルトの名無しさんNGNG
うーん、すごい。いや驚いた。それはさておき。

一回のBeginScene〜EndSceneの間に、何度もD3DTS_VIEWやD3DTS_PROJECTIONを
設定してカメラを別位置にしたり透視投影と平行投影を画面に同時だししたりって
いうことができるって、わかってないんじゃないかなと思った。

MFC+DirectXでプログラム覚えたヤツって融通が利かないのか?
0985デフォルトの名無しさんNGNG
>984
どのレスに対するレスなのかレス番を示してくれないとわからないんだが
0986デフォルトの名無しさんNGNG
>>985
スマソ。918あたりへのレスだった。
ステータスウィンドウをWindowsのウィンドウで描画しようとするあたりが
毒されてるなあと思ったんだよ。
ステータスウィンドウなんて、Orthoで自前で書いちゃえばいいじゃん、と
思ったワケ。で、もしかするとPerspectiveで描画したあとOrthoで描画って
いう発想に至れないんじゃないのかなって勘ぐったのさ。
0987デフォルトの名無しさんNGNG
質問なんですが、cppファイル内で
#include <ddraw.h>
DDPIXELFORMAT pixel; //インクルードした行の真下
このように書いたんですけど、
'DDPIXELFORMAT':識別名を宣言するのに、型が指定されていません。
等のDDPIXELFORMATがあたかも宣言されてないという感じのエラー
がたっぷり(大袈裟)出ました。他にも同ファイル内で引数に使っている型(サーフェイス等DirectDraw関連)なども認識できないようです。
ddraw.hがインクルードされてないような振る舞い。
エラー発生場所をコメントにしたらコンパイルできました。
考えられる原因は何なんでしょうか。。。
0988デフォルトの名無しさんNGNG
windows.h はincludeしてるのか?
0989デフォルトの名無しさんNGNG
>>988
もちろんで。
0990デフォルトの名無しさんNGNG
>987
パスが通っていないとか?
0991デフォルトの名無しさんNGNG
>>975
スレ立てヨロ
0992デフォルトの名無しさんNGNG
>>987
バージョン定数の定義は?
0993デフォルトの名無しさんNGNG
ディレクトリは
1. c:\DX90SDK\Include(インクルードファイル)
2. c:\DX90SDK\Lib(ライブラリファイル)
で1にddraw.h、2にddraw.lib入ってます。
リンクしているファイルは
dsound.lib, dinput8.lib, dxerr9.lib, d3dx9.lib, d3d9.lib,
d3dxof.lib, dxguid.lib, winmm.lib, d3dx9dt.lib, ddraw.lib,
comctl32.lib, odbc32.lib, odbccp32.lib
で全てです。(不要なものも入ってますが)
他にリンク、インクルードするファイルは有るんでしょうか。。。
0994デフォルトの名無しさんNGNG
いつも思うんだがパスを通せない人がDirectXを使いこなせるんだろうか
0995987(=989,993)NGNG
もしかしてDirect3Dが有ったらDirectDraw使えないという
オチですか。
でも、DIRECTDRAW_VERSIONとDIRECT3D_VERSION
二つ別々にあるから大丈夫なのではないでしょうか。(小声で...)
0996デフォルトの名無しさんNGNG
んなわけ無い。
0997987NGNG
コンパイルさえもできないのですか?
Direct3Dが元にあってそこからDirectDrawに改良を
試みたんですが。。。
御迷惑掛けました。一からやり直します。
>>988 >>990 >>992 >>995
ありがとうございました。
0998デフォルトの名無しさんNGNG
ttp://up.satoweb.net/img100/886.lzh
>997
これをコンパイルしてみろ
DDの初期化だけのヤツ
リンクの設定もいらんから
パスが通っていたらビルドできるはず
うちではできた
0999デフォルトの名無しさんNGNG
立てるぞ?
10001000=999=998NGNG
立てたぞ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。