【C++】 DirectX初心者質問スレ 【C++】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG初心者が気軽に質問できるような雰囲気じゃないのでスレをたてますた。
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGDirectX総合スレ
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サンプルみてもぜんぜんわかりません。
どこか解説されているサイトとかはないでしょうか?
0006デフォルトの名無しさん
NGNGこのスレは放置してください。
0007デフォルトの名無しさん
NGNGDirect3Dの表示や当たり判定、物理演算などをお願いします
0008デフォルトの名無しさん
NGNG00091
NGNG0010デフォルトの名無しさん
NGNGサンプルとかヘルプ読んどけ
>>8
使わないよ
/*******************************************
終了
*******************************************/
0011デフォルトの名無しさん
NGNG物理演算ないよ
0012デフォルトの名無しさん
NGNG目的を言わずに、とにかく計算がしたいと言っているのと同意なんだが、
それすら分からないほど無能なのか?
お前は物理演算と言いたいだけだろ?
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGサンプルもヘルプもたいして訳にたたねー。
それも中途半端でお粗末な物・・・
0016デフォルトの名無しさん
NGNG何でも他人のせいにするのはよくない。
まずは自分が悪いことを認識するべき。
0017デフォルトの名無しさん
NGNGSDKのヘルプでいけばDirectX Graphicsあたりだろうな。
プログラミングガイドを見れば、関数の使い方とかはわかるが、
そいつをどう繋げていくのかが不明だ。
仮にD3DXCreateTextureFromFileを使うとしよう。
引数は3つしかねーし、バカでもわかるように説明書かれてるわな。
だけど、それをどうやって表示させるん?
関数の説明が載ってても肝心な情報が入ってこないわな。
時間かけて調べてりゃその内わかるけどさ、そんな暇人いるかって。
ググってみてもくだらねー解説サイトしかひっかからんし。
DirectXやる香具師が少ねーのも当然だわな
0018デフォルトの名無しさん
NGNGVBでもやっていてください
0019デフォルトの名無しさん
NGNGWindowsプログラムが分かっていないのに、グラフィック系の処理をしようとしたり、
グラフィック系の処理が分かっていないのに、Direct3Dでなにか処理させようとしたり。
算数が出来ない人間が、いきなり数学の参考書を見ても意味不明なのは当然だろう。
自分にとって妥当なスタートラインが分かっていないのが問題なんだよ。
つまり参考書が悪いわけではない。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG一通り,プログラミングガイドのテクスチャの項を読んだ者なら
サーフェイスへのコピーでそれをより簡単に実現するだろう。
また,「テクスチャはプリミティブに適用するものである」との解説も
読み取れないようであれば,プログラミングガイドを読むための日本語
読解力が欠如しているといえる。
このような者であれば,DirectX以外でも同様の状態に陥るであろう
ことは予想に難くない。
0022デフォルトの名無しさん
NGNGは言い過ぎだと思う。確かにDirectXはむずい。
Bmp表示はテクスチャの設定、頂点データの定義、プリミティブの表示を理解してないとできない・・・。
Bmp表示くらいのクラス作ってくれたら段階を追って勉強できるのに。
ただDirectX勉強してると「その仕様もしかたがないことなんだ」と気づくはず。
今のPCスペックでは、リアルタイムレンダリングを実現させるにはレンダリングの内部の仕組みをよく理解して
最適化がプログラム側にゆだねられた仕様でないといけない。
DirectXはそういう仕様になっている(そうですよね?)。
>>17を含め初心者はまずレンダリングパイプライン(レンダリングの過程)を理解すればDirectXの理解が早くなると思う。
プログラマならいつも「おまじないコード」を自分のソースに入れとくのはプライドが許さないだろうし。
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGDirectXを使ってソフトを作った場合、DirectXのランタイムを一緒に配布するには
MSの許可が必要なのでしょうか?
0026デフォルトの名無しさん
NGNGFAQに日本語で書いてあるところぐらいはちゃんと読もうね。
http://www.microsoft.com/japan/msdn/directx/japan/license/dx_license.asp
0027デフォルトの名無しさん
NGNGまた、親切にURLをご提示頂きましてありがとうございました。
0028デフォルトの名無しさん
NGNGDirectShowで、カメラとマイクからの入力をキャプチャしてAVIで保存しています。
現在、圧縮なしで保存しているのですが、
どうすれば圧縮をかけられるのでしょうか?
0029デフォルトの名無しさん
NGNG次からは挑戦者と名乗れ。
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGどうしてヘルプのチュートリアルを
何も考えずに追ってみる
とかやってみないんだろう。
これでDirectXの初期化からポリゴンの描画までいくんだけど・・・。
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGDirectXなのにダイレクトに弄れないなんてヤダ
ヤダヤダヤ
〃∩ _, ,_ /) 〃∩ _, ,_ /)
⊂⌒( `Д´)ミ( ⌒ヽつ⊂⌒( `Д´)ミ( ⌒ヽつ
`ヽ._つ⊂ノ⊂( ,∀、)つ.`ヽ._つ⊂ノ⊂( ,∀、)つ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ミ
| 〃 ∩ 。
| ⊂⌒从ヽ从゜o ザバーン
| 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
|
0035デフォルトの名無しさん
NGNGさらに亀レスだけど、
DirectXで出来ることを理解する前に、
自分がやりたい事だけを知ろうとしているからだろ。
0036挑戦者
NGNG<質問>
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デフォルトの名無しさん
NGNGFLOAT 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友人「ちんちんぷらぷら」
003936=挑戦者
NGNGすいません、確認したいのですがどのファイルか分かりません。
0040デフォルトの名無しさん
NGNGなんやそれ(w
004137
NGNG0043デフォルトの名無しさん
NGNGttp://www.geocities.jp/toru_website/dxg/1.html
0044デフォルトの名無しさん
NGNGこの辺のライブラリがリンクされてないんでしょ?BCCのリンカは判らんので設定は自力で頑張って。
d3dx9.lib d3d9.lib d3dxof.lib dxguid.lib dxerr9.lib (dsound.lib dinput8.lib 必要ならば)
004536=挑戦者
NGNGありがとうございます。
リンクされていないようだということでbccのcfgファイル見てみました。
…が、一向に解決しません_| ̄|○
bcc32.cfg、ilink.cfgを確認してみましたが、ちゃんと設定されているようです。
0046デフォルトの名無しさん
NGNGプロジェクト設定のリンクを開いたら幸せになれるかも。
0047デフォルトの名無しさん
NGNGライブラリとして普通のアプリで使えるようになるだけっすか?
0048デフォルトの名無しさん
NGNGz' = z{F/(F - N)} - FN/(F - N)・・・�@
になっているけど、
zを[N,...,F]の区間に正規化したいわけだから、
z' = z*{1/(F - N)} - N/(F - N)
でなぜだめなんでしょう?実際これでちゃんと動いてます。
�@式の分子のFがどっから何の為にでてくるのか判りません。実はz'もw=zで割るんですか?
0049デフォルトの名無しさん
NGNGz' = (z-N)/w * {F/(F-N)} [0..1]
行列で計算する際は、割る必要があるから。
005048
NGNG005148
NGNGやっぱそうですね。ありがとう。
0053デフォルトの名無しさん
NGNGピクソーシェーダの原理ってどういうものですか
0054デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG54じゃないけど、おれからもサンクス。
0057デフォルトの名無しさん
NGNG.NET-[新規作成]-[プロジェクト]のテンプレート選択で、
DirectXアプリケーションの項目がなくなってしまったのですが、
これを復活するにはどうすればいいのでしょうか?。。。
2004をインストールしてから2003をアンインストールしたのが悪かったのかと思い、
2004を一度アンインストールしてから、再インストールしてみましたが、ダメでした・・・。
もう容量きつくても、2003を入れっぱにしとけってことなんでしょうか・・・。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGhttp://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そうなんですか、、、。
必要になったとき、容量と折り合いつけて2003入れることにします。
情報ありがとうございました。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG「D3DXSPRITE_ALPHABLEND」
「D3DXSPRITE_SORT_TEXTURE」
が定義されていない識別子です、
というエラーが出るのですが、
なにかインクルードとか、
し忘れているのでしょうか?
0063デフォルトの名無しさん
NGNGd3dx9core.h
006462
NGNGできました。
0065デフォルトの名無しさん
NGNG∀・) < エクスプローラ(インターネットじゃないほう)でF3を押すとファイルの内容を検索できるぞ。
0066デフォルトの名無しさん
NGNGhttp://masafumi-t.cool.ne.jp/d3d05.htm
のサイトを参考にポイントスプライトのを作ってみているんですけど、
カメラをズームさせたり、Z軸移動をさせても、テクスチャが縮小はしますが、拡大してくれません。
なにか足りない設定があるのでしょうか?
0067デフォルトの名無しさん
NGNGSetRenderStateのD3DRS_POINTSIZE_MAXはどうしてる?
006966
NGNGZ軸の移動は正常に行われ、カメラより手前に来ればちゃんと消えるようにはなってくれます。
が、遠近での縮小や、サイズ指定の縮小はしてくれるものの、拡大の処理がまったく行われません。
SetRenderStateのD3DRS_POINTSIZE_MAXを指定しても、改善しません。
出来ましたらアドバイスをよろしくお願いします。
orz
0070デフォルトの名無しさん
NGNG>状況としては、一定のサイズ以上に拡大してくれない状態でして、
その一定の「サイズ以上」ってサイズが実はD3DRS_POINTSIZE_MAXの
サイズだったりしないよな?
0072デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGそれはグラフィックボードの性能によって違うので
MaxPointSize が 64.0fならそれ以上はそのグラフィック
カードでの出力は不可能。
007566
NGNGグラフィックカードでは不可能ということは、ソフトウェアでエミュレーションさせれば
出切る可能性もあるということでしょうか?
あるライブラリを使用してポイントスプライトっぽいのを作ろうとしたときは
いくらでもテクスチャーを拡大出来るのですが
007673
NGNGちと誤解のある書き方をしてしまったが、
D3DCREATE_HARDWARE_VERTEXPROCESSINGとか
D3DCREATE_SOFTWARE_VERTEXPROCESSING
の問題ではなくD3DDEVTYPE_HALとかD3DDEVTYPE_HALの問題なので
REFデバイスでも64.0fなんで無理。
おとなしく、自前でビルボードで代用した方がよいかも。
007773
NGNG>>D3DDEVTYPE_HALとかD3DDEVTYPE_HAL
ではなくD3DDEVTYPE_HALとかD3DDEVTYPE_REF
007873
NGNG>D3DDEVTYPE_HALとかD3DDEVTYPE_HAL
D3DDEVTYPE_HALとかD3DDEVTYPE_REFだ
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結局夏厨を隔離しただけじゃねーかw
008336=挑戦者
NGNGC++スレで聞いたほうがいいですか?
0085デフォルトの名無しさん
NGNG#define RELEASE(i) if(i){i->Release();i=NULL;}
BOOL EndDirectDraw(void){
RELEASE(lpFront);
RELEASE(lpDD);
return TRUE;
}
これがよく分かりません。
これの一行目が分かりません。
defineということなので何らかの定義をしてるってことは分かるんですが…
どういうことなんでしょうか?
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG普通にメモリを動的に確保すると、どっかで開放しなきゃならん。
これがダルいしワケ♪ワカ♪ラン♪の元になる。
だもんでCOMオブジェクトは、保持するときはAddRef()を、手放すときはRelease()を呼び出す決まりを
作ることでメモリ管理を自動化するようになってる。
で、
第1部完
*>>87先生の次回作にご期待下さい!
0088デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG起動すると自動的に特定のアプリケーション起動してホストになるように
したいんですがどのように手をつけていけばよいでしょうか。
対になるものとして参加側のものもつくりたいです。
さらにはどれらをativeXコントールで行えれば理想です。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGID3DXAllocateHierarchyを継承してクラス作ったんですが(CAllocateHierarchy)
それを宣言するとC2259のエラーがでちゃいます。。。
調べたんですがよくわかりませんでした。
0093デフォルトの名無しさん
NGNG最後に設定したSetMaterialがすべての面に適用されるっぽいんですが、誰かわかる人いませんか?
ちなみにXファイル使わずに、独自形式を読み込んで、
頂点バッファとインデックスバッファに面数×3回ループ掛けて
自前フラットシェーディングでDrawIndexedPrimitiveで描画してます。
0094デフォルトの名無しさん
NGNG面ごとやりたけりゃ頂点色使えやチョッパリが
0095デフォルトの名無しさん
NGNGemissiveを使いたいんです。
というかLPD3DXMESHで解決したからいいんですけどね。アハハー
レベル低ッ
0096デフォルトの名無しさん
NGNGID3DXAllocateHierarchyの4つのインターフェイスを、
引数や返値の型を含め、きちんと全て継承クラスで実装しているか確認。
>>93
使用したいマテリアルごとに、面(インデックスバッファ)をソートしてまとめて置き、
マテリアルの数だけ、マテリアルセット>DrawIndexedPrimitiveを繰り返す。
0097デフォルトの名無しさん
NGNG0098ちょうせんしゃ
NGNGコールバック関数内で画像の取得とクロスバーの切換やってみたら、カメラ画像が入り乱れて×。
切換直後のフィルタグラフ内のデータ消去とかでけへんかと考えよるけどうまくいかへんよ。
なんか、いい方法ありませんか?
0099デフォルトの名無しさん
NGNG0100ちょうせんしゃ
NGNGありがとうございます。よーく見てみます。
0101デフォルトの名無しさん
NGNGありがとう。ちゃんと宣言(オブジェクトが作れた)できるようになりました。
特にCreateMeshContainerがサンプルとかwebで出回っているものと違いました。
ほんとにほんとにありがとうございます。
0102挑戦者
NGNG解説書か解説サイトってありますか?
0103デフォルトの名無しさん
NGNGerror LNK2019: 未解決の外部シンボル _D3DXCreateTextureFromFileA@12 が関数 "void __cdecl StartInit(void)" (?StartInit@@YAXXZ) で参照されました。
fatal error LNK1120: 外部参照 2 が未解決です。
というようなエラーがでました
どうすれば治るのでしょうか
ご教授お願いします
0104 ◆Z0vd5w812U
NGNGd3d8.libとd3dx8.libをリンクライブラリに追加する。
またはソースコードに
#pragma comment(lib, "d3d8.lib")
#pragma comment(lib, "d3dx8.lib")
と記述する。
0105デフォルトの名無しさん
NGNGDirectX8ならいいとこあるんだけどね
http://rina.jpn.ph/~rance/index.html
0106デフォルトの名無しさん
NGNGレスありがとうございます
おかげさまで無事解決できました
ほんとうにありがとうございました
0107挑戦者102
NGNGレスありがとうございます。
自分も探したんですが、DirectX7とかDirectX8は結構あるのですが、
DirectX9はほとんど3Dしか扱っていない所が多くて…
もう少し探してみます
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGスプライトとか使うんだよたしか。
でも2D使いたいんならDirectDraw使えば?
0111デフォルトの名無しさん
NGNG0112 ◆Z0vd5w812U
NGNGDirectDrawを使うのが楽だと思う。DirectX7機能になるが、DX9環境でも使える。
または、Z=0としたDirect3D環境でガンバル。
0113デフォルトの名無しさん
NGNGもしよろしければDirectX8で2Dゲームの解説してるところ教えてください
0114挑戦者102
NGNG結局解説サイトは
ttp://www.plustarnet.com/aspil/
しか見つかりませんでしたがMSDNでも見ながら頑張ってみます。
>>113
いくつか見かけたのですがブックマークしてなかったので、
分からなくなってしまいました。すいません。
0115デフォルトの名無しさん
NGNGID3DXSprite
2Dしか使わないなら
ドキュメントでこの二つのメンバを見れ
簡単や一日あれば余裕
0116デフォルトの名無しさん
NGNGどっちがいいのでしょうかそれぞれの短所長所を教えてください
0117デフォルトの名無しさん
NGNGウインドウに文字を表示するにはどんな命令を使えばいいのですか?
0118117
NGNGあと、表示される文字のフォントサイズを小さくするにはどうすればいいのでしょうか?
0119118
NGNG0120 ◆Z0vd5w812U
NGNG好きな方を使えばヨイ。
もしキミが学生で将来ゲームプログラマになりたいなどと考えているなら、両方使って違いを体感すべきである。
0121デフォルトの名無しさん
NGNG趣味でゲーム作りたいなと思っています
directxでゲーム作る限りはダイレクトインプット使いたいんですけど
初期化とか色々めんどくさそうだし、どっちにしようか悩んでます
多分作っていくうちにあれこれしたくなるから、DirectInputを使うのがいいんじゃないかな。
0123デフォルトの名無しさん
NGNGDirectInput難しそうなんでAPI使うことからはじめようと思います
アドバイスありがとうございました
0124デフォルトの名無しさん
NGNG縦横50*100の画像があるとして、
これを120*200の矩形範囲内に画像の大きさ&縦横比を変えずに
リピート(縦に2.4枚分、横に2枚分リピート)したいのですが、
こういったことはスプライトではできないでしょうか。
やるとしたら力技で必要な枚数分スプライトを置く(2DRPGのマップように)
しか思いつかないのですが、
スプライト一枚の大きさを変えたりテクスチャを弄ったりで
なんとかできる方法はないものでしょうか。
また、一般的にこういったことをやるにはやはり
板ポリゴンに貼り付けてUV操作をするとか、そんな感じになるんでしょうか。
0125124
NGNGすいません、これはあくまで例えの大きさでして、
この矩形(ウィンドウ)はマウスドラッグとかで
随時大きさを変えられるようにしたいです。
0126デフォルトの名無しさん
NGNGUV操作といってもラップテクスチャアドレシングモードで
1.0以上のuvを、右端下端に設定するだけだよ
その例だとそのままu=2.0f、v=2.4f
幅120、高さ200そのままのTLVertexな板ポリを作り、上のuv設定すれば終了
0127デフォルトの名無しさん
NGNG雑誌のソースコードでコンパイルをすると
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デフォルトの名無しさん
NGNGttp://www.plustarnet.com/aspil/Programming/ID3DXSprite.htm
0129デフォルトの名無しさん
NGNGレスありがとうございます。
2004夏から変更と書かれていたので使えるのか半信半疑だけど試してみます(・ω・)
0130デフォルトの名無しさん
NGNG改めてありがとうございます。
0131デフォルトの名無しさん
NGNGSI_TriangleListがSI_Modelの中に複数あったりするので面倒なのです。
個人的にはSI_Modelの括りごとにデータを分けられれば楽なのですが、そういう風にするうまいやり方が思いつきません。
やはり、読み込んだデータは一行一行別々にリスト管理して、それから数値などを取り出していくやり方しかないのでしょうか?
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGサンプル嫁
0135デフォルトの名無しさん
NGNG(1,0,0)
(0,1,0)
(0,0,1) この状態だと方位は0度。
(0,0,1)
(0,1,0)
(-1,0,0) この状態だと方位は90度。
方法が書いてあったと思われる向氏のサイトが閉鎖されてるし・・
0136デフォルトの名無しさん
NGNGその行列の行を一本のベクトルと見立てて
ペイントで絵でも描いてみろ。
そうすりゃわかるだろ。
0137デフォルトの名無しさん
NGNGatan2は使えないし、正確なPIが表示できないので誤差がかなりでる・・
0138137
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGちょっと曖昧
方位を求めたいのか、角度を求めたいのか
「何の」方位を求めたいのか、「どこの」角度を求めたいのか
0141デフォルトの名無しさん
NGNGif( dot( z, m[2] ) >= 0.0f)
return acos( dot( x, m[0]));
else
return 2.0f * pi - acos( dot( x, m[0]));
0142デフォルトの名無しさん
NGNG方位ってY軸の回転ね。
てか方位で曖昧って言われたの初めて(´・ω・`)
>>141
ありがとうございます。
ちと試してみま〜
0143デフォルトの名無しさん
NGNG全ての発言が、お前に3Dは無理と感じさせる。
0144デフォルトの名無しさん
NGNG下を向く(X軸かZ軸が180度回転した)状態で
それでも方位をY軸回転って言うの?
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG釣られているのかも知れんが
相対座標以外にも絶対座標があるのですよ。
おまいは寝転がると自分から地球の中心方向が南でその逆が北になると言うのか
0148デフォルトの名無しさん
NGNGあのさ、基底ってわかる?
3Dで言うと、ローカル、ワールド、ビュウって基底が違うだろ。
意識的に混同して誤魔化してる?
自分が寝転んだら、自分の絶対座標の基底は逆になるだろ。
それとも3D初心者によくある、全部ワールド座標以外理解出来ない君ですか?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG>>141のを使うと
error C3861: 'dot': 識別子は、引数依存の照合を使用しても見つかりません。
とエラーが出てきますorz
dotを使えるようにするにはなにかインクルードしないといけないのでしょうか。
0151デフォルトの名無しさん
NGNGよく見ればバンク角かorz
バンク角とピッチ角は出来てます・・。
変なゴタゴタも起こってますし、とりあえず別のところから作って見ます(´・ω・`)
0152デフォルトの名無しさん
NGNGつーか内積程度は自前で計算すれば?
0153147
NGNG人に教えれるほどやっているわけではないので間違ったことを言ってるのを前提に聞いてくれ。
まず基底の意味がそのクラスの元となっているもの(クラスと捕らえているのだがここは合ってるか?
そうすると
>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出来るかどうか・・・なんとか頑張ってみます。
0155デフォルトの名無しさん
NGNGローカルで横になって、ワールドで変化なしでも
ローカルで変化なしで、ワールドで横になっても
見た目は同じだが、ワールドでの姿勢制御行列は違うだろ。
0156デフォルトの名無しさん
NGNG基底をわかってない。それで語り出すなよ。
人間には人間の基底があって、地球には地球の基底がある。
人間を地球の基底にもって行くのをLocalWorld変換と言うんだろ。
なんだよ…派生って…
0157147
NGNG>>155
ワールドがメッシュAでローカルがメッシュBとして
メッシュAの中にメッシュBがあると考えていたけど違うか。
メッシュAが姿勢を変えたらメッシュBも姿勢が変わる。
メッシュBが姿勢を変えてもメッシュAは姿勢が変わらない。
>>156
3年前は基底クラスと派生クラスと学んでいたのでそのまま使っているが最近(cpp)は違うのか。
それとも基底の解釈の仕方が違うのかも知れんが。
考え方が色々あるみたいなので当方も頑張って勉強します。
様々なサイトや本を見ながら格ゲーを作ったけどこの考え方で作れたのは奇跡に近いのか・・・
0158デフォルトの名無しさん
NGNGこれ以上、醜態を晒すなよ。
一つのメッシュで、ローカル、ワールド、ビュウと変換していくんだよ。
で、それぞれの座標系で姿勢制御行列は変わるだろ。
基底クラス?それはC++の話。
回転と姿勢制御で基底ってわからないの?
>{{1,0,0},{0,0,1},{0,-1,0}}
とか自分で言ってるじゃん?
>様々なサイトや本を見ながら格ゲーを作ったけどこの考え方で作れたのは奇跡に近いのか・・・
丸写し、サンプルコピペ、D3DXライブラリ等、知識なくとも作れるよ。
作れた == 知識ある
じゃない。
自前実装でもして勉強したら。
0159デフォルトの名無しさん
NGNG>3年前は
>3年前は
>3年前は
3Dの適正ない…
0160デフォルトの名無しさん
NGNG…なと言えばいいのかな…
貴方の捉え方、理解のしかたをもって
基本的な考えを
>考え方が色々あるみたいなので
と言ってるの?
0161デフォルトの名無しさん
NGNG向氏のページのぐぐるキャッシュ
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
0162147
NGNG半端な知識と書いてある通り知識があるわけでないしそもそも基底の意味が分からん。
Javaで少し出てきたけどcppでは今のところ出てきていない。
DXでの自分の考えでは
基となるのが大きなメッシュ その中に小さなメッシュ
小さなメッシュにXファイルをいれて大きなメッシュから見た座標と姿勢を指定する。(3x3の行列)
カメラも大きなメッシュの中にあってこれも同じく座標と姿勢を指定する。(Zベクトルが視点)
人などの小さなメッシュは大きなメッシュを基にして動くのでみんなバラバラに動くことができる。
大きなメッシュが動くとその中にある全ての小さなメッシュ(カメラ)も動く。
大きなメッシュが180度回転しようが大きなメッシュを基にしているので
小さなメッシュやカメラも一緒に動く・・・結果中身に何も変化なし。
つまり大きなメッシュを動かしても小さなメッシュと東西南北などの方位は変わらないのでは。
>>160
本に書いてあることがバラバラでどれが基本なのかわからない。
なので自分にとって分かりやすい考え方を自分の基本にしている。
英単語を覚えるのは基本的に何度も読み書きをするだけど
無理やりローマ字読みしたり睡眠中に流して覚えると言うものそれが自分に合ってればその人の基本かと。
基本は違えど結果は同じわけだし。
0163デフォルトの名無しさん
NGNGしかもメッシュの中にXファイルっていったい…。
0164デフォルトの名無しさん
NGNGお前、キモイんだよ、間違った自分の考えをダラダラと。
基底とは数学の話だよ。なんだよJavaって。
でモロに、ワールドでの話でしかないだろ、下らない例をグダグダと。
>本に書いてあることがバラバラでどれが基本なのかわからない。
>なので自分にとって分かりやすい考え方を自分の基本にしている。
数学的な物は、バラバラなわけないだろ。
で今は、モロに3Dの数学的な姿勢制御と座標系の話をグダグダ述べてんだろ、お前。
基本が同じって自前で実装してるなら通じるが
ライブラリやサンプルコピペしてるような奴は、基本が同じなど
おこがましい。
0165デフォルトの名無しさん
NGNG0166147
NGNGご免、素で変なこと書いてた。
大きなメッシュ→大きなフレーム(親)
小さなメッシュ→小さなフレーム(子)
>しかもメッシュの中にXファイルっていったい…。
箱の中にポリゴンを入れているイメージが載っていたのでそういう形で覚えてました。
(大きな箱を動かしたら小さな箱も一緒に動く 等)
変だろうけど勘弁してください。
>>164
数学の基底、学校で習うわけでもないし今まで必要じゃなかったので
回転と姿勢制御で基底ってわからないの?
分からないと言うよりも知らないの方が正しいです。
0167デフォルトの名無しさん
NGNG何を言い分けしても、お前の3Dの基本はグダグダ。
ワールド座標系しか理解出来ない奴は、ワールド座標系でしか物事考えられんって奴だ。
基底座標の変換と、同じ基底内の回転、平行移動、スケールが混同されすぎってか
理解も出来てない。
それで、語ってりゃ世話ない。
偉大だよな、DirectXって。
こんなイカレ野郎でも3Dやってる気にさせちゃうんだから。
0168デフォルトの名無しさん
NGNGモーフィングという言葉が不適切かもしれませんがメッシュAをメッシュBへ変形させたいのです
顔A、顔Bと用意しておいて顔Aから顔Bへ徐々に変形していくことで表情を変えたりしたいです
0169デフォルトの名無しさん
NGNG各頂点をモーフィングの度合いで線形補間して表示すれば良いだけじゃん。
0170デフォルトの名無しさん
NGNG3Dの頂点宣言に、D3DFVFを使って行う方法は分かったのですが、
3Dの頂点宣言に、D3DVERTEXELEMENTを使いたいときには
どのように指定したらいいのでしょうか?
D3DFVFを使用したときには、
float x, y, z, rhw; → float x, y, z;
のように、float型3つになっていたので、
D3DDECLTYPE_FLOAT4 の代わりに D3DDECLTYPE_FLOAT3 を
使ったりしてみましたが、無理でした・・・。
また重ねて質問なんですが、
D3DVERTEXELEMENT での頂点宣言を使う利点って何なんでしょうか?
0171170
NGNG>D3DFVFを使用したときには、
>float x, y, z, rhw; → float x, y, z;
>のように、float型3つになっていたので、
の前に追加願います・・・。
スレ汚しスイマセン。
0172デフォルトの名無しさん
NGNGDirectXにそういう機能は無いってことですか?
0173デフォルトの名無しさん
NGNG全然要領を得ない。
何言ってるの理解不能。
頂点型とD3DVERTEXELEMENT型の宣言を見せてみ?
>>172
頂点バッファの値も取得出来るし、書き換えも出来る。
だからスキニング等のアニメーションが出来るんでしょ?
まさか、D3DX系関数で関数呼べばやってくれるとかじゃないよな?
0174170
NGNGレスサンクスです。なんか自分、相当勘違いしてるみたいですね・・・。
それぞれ、
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別にオカシイと思える所はなさげだけど?
もしかして2Dを3Dにとか言ってるって事は、
プロジェクション変換してないとか?
0176デフォルトの名無しさん
NGNGプロジェクション変換については、
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の指定にした場合、
他にどのような部分を変更しなければいけないのでしょうか?
0177170
NGNGしっかり表示されていました・・・orz
お手数とってしまってホント申し訳ない・・・・。
スレ汚しスイマセンでした・・・。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG今もなんとなくは使えてるのですが…。
//ヘルプの引用
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デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&ie=UTF-8&q=DrawIndexedPrimitive&lr=lang_ja
0182デフォルトの名無しさん
NGNGエラー原因特定が掴めない。あと、ファイルのまとめ方とか
プログラムの書き方とかも自信無いのでアドバイスを頂けたら光栄なんですが。駄目元で、ソース置いときます。。。
ちなみにエラー有りそうな所はsprite.hとDXInput.hが有力で
次にDXHeader.hが有りそう。
http://sterdust.net/upload/upload.cgi?page=Download&dir=&sort=date&filename=VSHTest.zip
0183182
NGNGソース見て下さった人ありがとう。(いたかどうか分かりませんが)
0184デフォルトの名無しさん
NGNG1から組むのどっちがいいと思いますか?
まぁたいした量じゃないけど、、、めんどくさい
0185デフォルトの名無しさん
NGNG結局何も作れないで終わるだけ。
0186デフォルトの名無しさん
NGNGすみません
僕が甘かったようです
ちょっと調べて思ったんですが
ネット上の情報ってなんでエフェクト処理ばかりなんだろう。。。
ゲームにはそんな重要ではないと思うが
0187デフォルトの名無しさん
NGNGネットで適当にサンプルを拾ってきてそれをコピペしてやってみたのですが、
なぜか所々ポリゴンが抜け落ちたようになります
(3角形の穴が開いたように、裏側というか内側?が見えたりする)
また、メッシュのx座標を変化させても抜け落ちるポリゴンは変わらないのですが、
z座標を変化させると別のポリゴンがかけたりします
こうなる原因として、何が考えられるでしょう?
バージョンはDirectX9で、開発環境はVC++.netです
0188デフォルトの名無しさん
NGNG背面カリングをしない設定だとちゃんと描画されるのか?
0189デフォルトの名無しさん
NGNGビルドするとこんな↑エラーが出るのですが、どうすればいいのですか?
0190デフォルトの名無しさん
NGNG開発環境C/C++の初心者スレではない
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGテクスチャは拡大も縮小もせず(Worldで256x256なら、Screen上でも256x256で表示)、
傾き0で表示していますが、ノイズが入ることがあります。
0193デフォルトの名無しさん
NGNG0194192
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGDrawIndexedPrimitive
IDirect3DDevice9::SetIndices を繰り返し呼び出すことなく、
同じインデックス バッファで複数のプリミティブをバッチ処理できるように、
IDirect3DDevice9::DrawIndexedPrimitive が変更された。
とあるから、それぞれの意味はなんとなくわかるよね?
0197187
NGNG背面カリングをしない状態でも、同じのようです
よく見ると>>187で書いたのと少し違うようで(スイマセン...
背面は描画されないのですが、
たとえば球の前に立方体を置いて、立方体の方向から
球が立方体の影になるようにして球を見ると、
球のポリゴンがチラつくように立方体を通して表示されます
(球と立方体でひとつのメッシュです)
わかりにくいと思いますが、よろしくお願いします
0198デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG一応それっぽい意味を。
BaseVertexIndex
ヘルプの説明がわかりにく。とりあえずこれは頂点バッファの
先頭からのオフセット。
1を設定すると頂点1個分sizeof(CUSTOMVERTEX)分進む。(複数オブジェクトをまとめる時にでも)
MinIndex
最小のインデックス番号?なのかな。基本的になに設定しても動作はかわらんかった記憶が・・・
なんか内部で最適化されるとかいってるからとりあえず0に。最適化なのかなんなのかしらないけど
そこまでデータの割り振りを手元に用意するのはめんどいなと。
NumVerticesは単にレンダリングに使用する頂点数。
StartIndex、これはインデックスバッファのインデックスオフセット。これをずらして作業することって
あまりなさそうだけど{0,1,2,3,4,5,6}のインデックスにたいして1をセットすれば
内部で{1,2,3,4,5,6}になる。PrimitiveCountとの整合性は保たないとあれかね。
まぁ部分的に間違ってるヤカン
0201180
NGNG(*゚Д゚*)!
いや正直未だに分からず放置してたんです。
な、なるほど!インデックスバッファをまとまり毎に処理するためのものに加え、
頂点バッファもまとまり毎に処理が可能に出来てるんですね。
IKのためにオブジェクト毎に持っていた頂点バッファを、ひとつにまとめて
変更を少なくしたり出来ちゃうわけですか。これは便利だ…。
いや目が覚める思いです。まことにありがとうございました!
0202デフォルトの名無しさん
NGNGこの親父が権威。
ttp://www.jca.apc.org/~maki_t/waseda2-82.jpg
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG(ウィンドウサイズが自由に変更できて、そのサイズに合わせて表示されるようにしたいのです)
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGチュートリアルぐらいみようじぇー
Presentのあたりを
0208205
NGNG0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG読み込んだらテクスチャのフォーマットに変換すれば完了。
0211デフォルトの名無しさん
NGNGWM_PAINTの中でコードを書いてInvalidateRectしないと駄目ですか?
InvalidateRectは画面がちらつくからできれば使いたくないんです。
0212デフォルトの名無しさん
NGNG0213211
NGNGなぜか描画されないんです。
WM_PAINTの中でバックグラウンドサーフェスに描いてInvalidateRectすれば
ちらつきながらも描画されました。
0214デフォルトの名無しさん
NGNG0215211
NGNGoss(オフスクリーンサーフェス)->GetDC(&hdc)
こんな感じです。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGBeginPaint->Blt(hdc,...oss,...);->EndPaint
他は好きなところでossに書けばいいだけじゃ?
0218デフォルトの名無しさん
NGNGDirectDrawだけ使いたいのに困ってしまう。
googleで探しても見つからない。どこかにミラーしてありませんでしょうか。
0219デフォルトの名無しさん
NGNGInvalidateRectの3つめの引数の
TRUEとFALSEを入れ替えてみろ。
0220デフォルトの名無しさん
NGNGDirectXではポリゴンアニメフォーマットとして
Xファイルが対応している事は解るのですが、
そのXファイル作成方法がどーしてもわかりません。
LW7.5でアニメーション作成してLWS2X.exeでxファイルに
変換しようとしたのですが、Ver7.5には対応しておらず、
オブジェクトと共にVer5として出力して変換させると
Xファイルに変換はするのですが、まったくアニメーションしません。
途方にくれて2週間・・・・どうかヒントだけでも教えてくださいませ。
_| ̄|○
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG割れでも使ってるのか?
LW7.5用のXfileエクスポータープラグインは無料でD-STROMのサイトでDL出来るが…
0223220
NGNG感謝いたします。
m(_ _)m
0224デフォルトの名無しさん
NGNG覚えたほうふあいいですか。
0225デフォルトの名無しさん
NGNG何がしたいかによる
以上
0226デフォルトの名無しさん
NGNGMFC使ってノホホンと組んで
「別に遅くなってもいーや」とか
ハナクソほじりながら言える分野じゃない
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG例えばD3DX系の関数は内部でSSEで最適化されているとか。
行列x行列なんてモロにアセンブラでオプティマイズ必須だろ。
自分で行列型なりクラスなり作っても、一番簡単な高速化はアセンブラだし。
演算子オーバーロードして
matrix = matrix * matrix;
なんて速度を意識してない奴だけ、
そりゃアセンブラなんて必須じゃないし、何故必要かも理解も出来ないレベルだろうね。
0229デフォルトの名無しさん
NGNG全体に与える影響など極微量なのだが、
それが理解できていない奴がこういう勘違い発言をしてしまう。
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG一つ残らず見たお方がいます。
0232デフォルトの名無しさん
NGNG実際DX8までは全員これでなきゃシェーダ書けなかったわけだし
シェーダに限らずアセンブラで全部できればそれが一番いい
0233デフォルトの名無しさん
NGNGスゲー頭悪いね…
アセンブラを使うってのは頂点*行列でも同じ意味だろ?
行列*行列はアセンブラ使って
頂点*行列は使わないってか?
0234デフォルトの名無しさん
NGNGDirect3Dでまともにプログラムを作ったことがない人間だということが、
この発言で証明されてしまったわけだが
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGオペレーター演算子計算の中身と、関数化した違いは分るだろ。
D3DX系のクラスのヘッダーは見れる訳だし、
HELPにもD3DX算術計算は内部でSSEに最適化した処理を持っていると(アライメントした型を使うが)
記述されている。
0237デフォルトの名無しさん
NGNGもっとマシな話をしろや
0238デフォルトの名無しさん
NGNG国語の力を身に付けてください。
>行列*行列はアセンブラ使って
>頂点*行列は使わないってか?
>>頂点*行列は使わないってか?
>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>この発言で証明されてしまったわけだが
頂点*行列にかかってくる使わないかどうかの物は、アセンブラであって
頂点*行列自体を使うかどうかではありません。
0239デフォルトの名無しさん
NGNG>>頂点*行列は使わないってか?
>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>この発言で証明されてしまったわけだが
D3DX使わないと、まともにDirect3Dでプログラム組めない人間だということが、
この発言で証明されてしまったわけだが
0240デフォルトの名無しさん
NGNG行列*行列は(では)アセンブラ使って
頂点*行列は(では)(アセンブラを)使わないってか?
0241デフォルトの名無しさん
NGNG>行列*行列は頂点*行列に比べると圧倒的に数が少なく、
最も計算量の多い頂点*行列はDirectXを使う限り、そちら側で行われる。
アセンブラで最適化する余地はほとんど残されていない。
にもかかわらずその反論が、
>行列*行列はアセンブラ使って
>頂点*行列は使わないってか?
恥の上塗りはみっともない。
さらに致命的な墓穴、
>>>頂点*行列は使わないってか?
>>Direct3Dでまともにプログラムを作ったことがない人間だということが、
>>この発言で証明されてしまったわけだが
>D3DX使わないと、まともにDirect3Dでプログラム組めない人間だということが、
なぜそこでD3Dではなく、D3DXになるのか。
頂点*行列をDirectXに任せるのであれば、少ない例外を除けばD3DXの介入余地はない。
プログラムを組んだことが無いどころか、全然DirectXを理解していないだろう?
0242デフォルトの名無しさん
NGNGD3DXはDirect3Dとは別物。
vectorクラスやmatrixクラスの演算子のオーバーロードによる計算は
あくまでクラスの実装。
>頂点*行列をDirectXに任せるのであれば
お前が全く理解してない。
0243デフォルトの名無しさん
NGNG最適化した部分のみで計測する偏ったベンチマーク結果は出すが、
それを組み込んだ場合に、システム全体がどの程度高速化するのかは全く考えない。
実際にやってみると、誤差程度に1FPS増えたような差しか出なかったりするわけだが、
それをひた隠しにするか、それ以前にそういう実験すらしない。
0244デフォルトの名無しさん
NGNGD3Dには算術系の処理なんてありませんよ??
0245デフォルトの名無しさん
NGNG>特定の最適化
と・く・て・い
なんだから
さらっとやっとけ。
0246デフォルトの名無しさん
NGNGどっちにも与す気はないが、234は確かに読解力無いよ
D3DXMATRIXのmatrix * matrixは、最適化されてないのかね
0247デフォルトの名無しさん
NGNGトランスフォーム済みにでもしない限り、
D3D側がHALやソフトエミュで頂点*行列を行うわけだが。
0248デフォルトの名無しさん
NGNG241様はD3DX使わずに、
D3Dの方で
vector * matrix が出来ると発言なさってます。
0249デフォルトの名無しさん
NGNGならアセンブラアセンブラと連呼するのも納得がいった。
元から何も分かってないだけじゃん。
0250デフォルトの名無しさん
NGNGハードウェアT&Lと激しく混同なさってますyo...
0251デフォルトの名無しさん
NGNGハードウェアT&Lと激しく混同なさってますyo...
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGそのソフトエミュをさして
D3Dで
Vector * Matrix が出来るか…
スゲーな。
0254デフォルトの名無しさん
NGNG>>249
わたくしめの、
スキニングアニメーションのプログラムで
vector * matrix
をD3Dがやってくるようにしたいのですが
何か指定の方法があるのでしょうか?
D3Dの関数が用意されているのでしょうか?
D3Dのクラスが用意されているのでしょうか?
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG固定処理なら頂点にウエイトを設定して、
必要な行列をセットしてレンダリングするだけだが?
0257デフォルトの名無しさん
NGNGそれだとグラボ(GUP)で処理されてしまいます。
D3Dにやらせたいのです。
0258デフォルトの名無しさん
NGNGレンダリング以外の処理は?
0259デフォルトの名無しさん
NGNGつまりドライバ側に投げる処理は、D3Dではないと言いたいわけか?
0260デフォルトの名無しさん
NGNGつまりSetTransformの処理を、vector * matrixと言いたいわけか?
0261デフォルトの名無しさん
NGNG普通投げた時点で、計算はしてないってなるだろw
計算から処理に言葉を変えるなよw
0262デフォルトの名無しさん
NGNG例えばDirectDrawでVRAM上の画像のブロック転送を行ったときも、
それがビデオカード側で処理されれば、
DirectDrawの機能ではないという屁理屈をこねたいのだろうか?
>>260
>つまりSetTransformの処理を、vector * matrixと言いたいわけか?
そこでは値を設定しているだけというのは置いておくとして、
その後に実際に演算が行われるときは、頂点*行列が行われている。
0263デフォルトの名無しさん
NGNGお前はハードウェアT&Lの機能を
vector * matrixとか言ってD3Dだとほざいてるわけか?
プログラマが任意にvector * matrix使いたい場合は
どうすんるんだ?
0264デフォルトの名無しさん
NGNGお前の理屈でドライバの処理がD3Dなら
ドライバに命令するプログラムで使用した
VECTORやらMATRIXのクラスなり構造体が
D3DXだとD3DXの処理だ、とはならんのか?
0265デフォルトの名無しさん
NGNG>そこでは値を設定しているだけというのは置いておくとして、
置いておけないだろ…
0266デフォルトの名無しさん
NGNGそれ以上ユーザが低いレベルで使えるAPIが存在しない以上、
D3D内のインタフェイス上から実行されているのならD3Dの機能。
そもそもドライバ側がD3Dの機能の一部として使えるように書かれている。
>プログラマが任意にvector * matrix使いたい場合は
それは自前で計算する以外にはない。
割合的には多くないが、最適化したいのなら、アセンブラでも何でも使えばいい。
ただし少ない部分を最適化しても、全体のパフォーマンスが上がる可能性は薄い。
逆に質問するが、処理負荷の中心である、
頂点*行列のほとんどはD3D側で行うことになるわけだが、
これをどうやってアセンブラに置き換えるのか?
0267デフォルトの名無しさん
NGNGぼくのPCのグラフィックカードのドライバはnVidiaの物です。
学校のPCのはオンボードです。
ともだちのPCはATIのグラフィックカードのドライバです。
世の中に色んなDirectXがあるんですね。
…つーかCOMでも勉強しろや
0268デフォルトの名無しさん
NGNGいちいち突っ込んでいるときりがないのだが。
「投入されたジョブが実行されるときだろ」
とか言っておけばいいのだろうか?
0269デフォルトの名無しさん
NGNGYOUの判定負け、これ以上醜態をさらすこともなし
0270デフォルトの名無しさん
NGNGいや、いや、いや、いや、
お前のアホアフォな前提を完全肯定して話を進めるな
0271デフォルトの名無しさん
NGNGHDDにも色々あるけど、ファイルの入出力はOSの機能とは言えないと?
HDDの種類だけOSがあることになるが。
0272デフォルトの名無しさん
NGNG俺は、家でも、会社でも
SetTransformはワールドの制御のみで
ローカルやアニメーション処理は自前で計算してる、若しくはD3DX使う。
0273デフォルトの名無しさん
NGNG頂点*行列というと意味がぼやける。
要は頂点トランスフォームは、D3D側かアプリ側
どっちが担当するんだってことだな。
0274デフォルトの名無しさん
NGNGなぜ?
0275デフォルトの名無しさん
NGNGDirectXと言う物で制御出切るのは
COMと言う、DirectXではない技術を使っているから
これまでの理屈だと、COMが処理してるってならないの?
0276デフォルトの名無しさん
NGNG国≒COM
日本≒DirectX
0277デフォルトの名無しさん
NGNGアセンブラ化の目的ってパフォーマンスを上げることじゃないの?
0278デフォルトの名無しさん
NGNG頂点トランスフォーム
と
vector * matrix
は、全く意味が違うだろ。
0279デフォルトの名無しさん
NGNGいや同じだが、何をもって違うと言いたいのだろう?
0280デフォルトの名無しさん
NGNGはぁ?
算術処理と頂点トランスフォームが同じ?
何かい?DirectX使いには
vector * matrixと言う物は
ハードウェアT&Lでの頂点トランスフォームだとなるわけ?
0281デフォルトの名無しさん
NGNG君さ、数学得意じゃなかったでしょ
0282デフォルトの名無しさん
NGNG過去の遺物のこれにこだわる理由はよく分からないが、
投入されたデータから頂点*行列の演算しないことには正常に描画出来ないんだが。
それとも頂点*行列は行われていないと?
0283デフォルトの名無しさん
NGNGこれが描画の為の頂点計算のみだと
盲目的に考える馬鹿がいる
0284デフォルトの名無しさん
NGNGもう無理しなくてもいいよ。
0285デフォルトの名無しさん
NGNG>>ハードウェアT&L
>過去の遺物のこれにこだわる理由はよく分からないが、
>投入されたデータから頂点*行列の演算
これをSetTransformでやってるのが、ハードウェアT&Lじゃねーの?
0286デフォルトの名無しさん
NGNG一頂点毎にSetTransformやってるの?
0287デフォルトの名無しさん
NGNGまとめてセットしておけるから、
一頂点ごとにやらなければならない理由はないが?
0288デフォルトの名無しさん
NGNG何?まとめてセットって?
0289デフォルトの名無しさん
NGNG必要な行列の数は?
0290デフォルトの名無しさん
NGNG君のDirect3Dの知識はVer.5ぐらいで止まってないか?
話がまったく噛み合ってないぞ。
0291デフォルトの名無しさん
NGNGシェーダなんかもあるという意味だなんだが、
そういう反応をするところなんだろうか?
0292デフォルトの名無しさん
NGNG256づつやれってか?
0293デフォルトの名無しさん
NGNGええと、ここは驚くところですか?
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG参りました、降参です。
オールアセンブラで最適化してください。
0297デフォルトの名無しさん
NGNGすでにスキニングが意味をなしていないと思うが。
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG頂点にウェイトが変動でかかる以上
頂点数の行列は必要だろ
0300デフォルトの名無しさん
NGNG想像もつかないんだけど、
いったい何をモデリングして動かしているの?
0301デフォルトの名無しさん
NGNG流体ですが何か?
0302デフォルトの名無しさん
NGNGウエイトが異なる頂点は別頂点として扱うこと。
データが増えて嫌なら自前で処理すればいい。
0303デフォルトの名無しさん
NGNG理由、俺のプログラムがウェイト数4つまでしか対応してないから
0304デフォルトの名無しさん
NGNGアセンブラの話が出ると荒れる
0305デフォルトの名無しさん
NGNGことが多かったけど、今はシェーダで書くことも多くなったから
つかわないといけないシーンは減ったな。
かつて一番計算のコストが高かった頂点のトランスフォームも
これもシェーダをつかうからアセンブラで最適化する必要も
なくなったし。
必須というわけじゃないが読めると得することが多いので
暇なときにアセンブラの本を1冊読んで、プロセッサ固有の
最適化に関する部分はネットの情報で簡単に勉強すれば
十分だと思う。重ねて言うが読めると得することは多いが
書くことはあまりないと思う。
シェーダのアセンブラについてはピクセルシェーダ1.x系列
は命令数とかテクスチャ読み出しの依存関係とか面倒
くさいことがいろいろあるのでHLSLとかCgつかうにしても
アセンブラがわかってないと実質何もできないけど。
あと、スキニングって普通シェーダをつかってたら必然的に
書くことになると思うんだけど。そんなに難しい処理
じゃないはずなんだけど。複数の行列でトランスフォーム
した頂点を重み付けして加算するだけだろ。何か変な
勘違いをしている人がいるような。しかもほとんど頂点
シェーダで書くからアセンブラの出番ないし。
0306デフォルトの名無しさん
NGNGなんだかもういろんなところに転げ回っている感じがする。
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG発売する前に、
必須環境
DirectX9とDirectX9対応グラフィックボード
と
俺のプログラムが動く環境と明記してくださいね。
0309デフォルトの名無しさん
NGNGそんなことをお願いしなくても、
販売する物なら動作環境ぐらい普通書くだろう。
0310デフォルトの名無しさん
NGNGなんてものは見たことがねえなあ
いまだにGF2MXをメインに据えている俺からすれば
そんなものが出てきたらサブマシンに変えざるを得なくなって非常に困る
サブ
Athlon64 3200+
GF6800Ultra
入れ替えるのめんどくせえ
しかもメインに比べてうるせえ
0311デフォルトの名無しさん
NGNGシェーダでスキニングさせた事ないだろ?
シェーダでスキニングする場合、ウエイトは1頂点に4つまでと縛りが入る。
デザイナのデータに規制をかけてるのか?
0312デフォルトの名無しさん
NGNG君のプログラムだと、シェーダーが動かないと
実行されない物なんだ?
必須環境、指定のVSバージョンが動くグラボ?
王様プログラムだな。
0313デフォルトの名無しさん
NGNGそりは固定機能の制限だ。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG俺の気のせいだったかな
ちなみにSDLはこの板でいいの?
0316デフォルトの名無しさん
NGNGこれ?
SDLスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005469181/
0318デフォルトの名無しさん
NGNGどうすればいいのでしょうか?
DX8のSDKが見つからなかったので・・
0320デフォルトの名無しさん
NGNG9SDKには8のヘッダは入ってないだろうし無理じゃね?
つうか9で組めばいいじゃん。
初めて始めるなら9でも8でも殆どかわらんよ。
0321デフォルトの名無しさん
NGNG間抜けな発言をする前に、ヘッダファイルの中を覗くことをお勧めする。
0322デフォルトの名無しさん
NGNG確かにオールバージョン入ってるね。
これなら9SDKでモーマンタイだな。
0323デフォルトの名無しさん
NGNG情報thx
それそれ
でもム板でも昔見かけた気がするけど
やっぱ俺の気のせいだったかな
SDLって、COMと縁切れるからC++以外の言語で使いやすいんだよね
むちゃ簡単だし
適当なやつ作る程度ならこれで十分でしょ
このスレで使ってる人いないの?
まあ使ってるからって話題なんもないんだけどさ
俺自身も自作言語のテスト用途なわけよ
SDLとのインタフェースってかなり小さく出来るんだよね
Linuxでも同時に動くし
覚えることほんと少ないから
知らないでDirectX直で使ってる人いたらオススメだよ
0324デフォルトの名無しさん
NGNGDirectShowをDirect3Dのテクスチャとして表示するために四苦八苦してます。
で、DirectX9.0bSDKの日本語ヘルプが欲しいのですが、マイクロソフトの所を
探しても見つかりません。
どこにあるか教えていただけませんか?
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGDirectX 9.0 SDK Update (Summer 2004) をインストールするとウィザードが使えないために、こ
のコラム用に作った以前の C# サンプルコードがビルドできません。今回はその対策方法を紹介します。
http://www.microsoft.com/japan/msdn/directx/default.asp
0327デフォルトの名無しさん
NGNG落ち着いた所で何が正しいのかまとめてくれ
0328デフォルトの名無しさん
NGNGOS全体に負荷をかけるツールってないですか?
単純にfor(;;);を実行するだけだとむらが出てしまいます。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG20年程山篭りしてたわけでもあるまい
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG典型的な厨房が吠えるスレです。
0335デフォルトの名無しさん
NGNGどこをどうみたってネタにしか見えない。
なぜこんなネタにマジレスを返すのか、
馬鹿の考えることはさっぱり理解できない。
0336デフォルトの名無しさん
NGNG「20年」を転がすことも思い付かずにマジレス、マジレスとお猿のように。
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGLoadObjectFromFileでセグメントの作成とパフォーマンスのダウンロードと再生が出来る状態で
予め読み込んでおいたデータを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デフォルトの名無しさん
NGNGd3dx9.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デフォルトの名無しさん
NGNGDWORD dwFlags,
LPDDSURFACEDESC2 lpDDSD2,
LPVOID lpContext,
LPDDENUMSURFACESCALLBACK2 lpEnumSurfacesCallback
);
この関数の使い方がよくわかりません
0342デフォルトの名無しさん
NGNG使い方はヘルプに書かれているとおりだが。
わからないのなら他のEnum系のSDKサンプルを参考にすればいい。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGゲ製作技術のスレと統合。
0346デフォルトの名無しさん
NGNG課題が出されました。しかし、全くやり方が分からないんですけど
だれか、インベーダーに関しての、情報が書いてあるサイト、
知識を持ってる人はソースコードとまでは言いませんが
誰か、知恵をお貸し下さい 長文スイマセン
0347デフォルトの名無しさん
NGNG名古屋打ちとか。
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGActiveXを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インベーダーもどきも自力で作れないなんて
ネタでしかないわけだが
0351デフォルトの名無しさん
NGNGインベーダーゲームを知らない年齢では?
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGとかいうのでやってみると
実につまらない
SFCのRPGなら今より面白いと言えるが
0354デフォルトの名無しさん
NGNGオヤジがレゲーにノスタルジー感じてるだけじゃないかと
あと15年もすれば
「ポケモンは最高だった。今のゲームは複雑&作業プレイ」
とか言い出すやつが出てくるが出てくるだろう
0355デフォルトの名無しさん
NGNGインベーダーが課題に出ててソースもある。
http://gamdev.org/up/upload.php?page=all
【初心者】課題をクリアしていくスレ【講習会】
http://pc5.2ch.net/test/read.cgi/gamedev/1086858349/
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGそうじゃない意欲的な作品も稀にあるが、人目につくこともなく消えていく
絵がきれいとか広告がうまいゲームしか売れてない
>既に今のゲームは作業プレイだ
結局そんな作業ゲーが生き残ったのはユーザがそれを選択したってことなんだな
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG何歳から家庭もって子供がいてもおかしくない年だと考えている?
0360デフォルトの名無しさん
NGNG28歳
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGバカモンゲットだぜ
0363デフォルトの名無しさん
NGNGゲッツて言うな
0364デフォルトの名無しさん
NGNG家庭を持つのが「おかしくない」のは18歳からだな。
そんなこともわからないの?
0365デフォルトの名無しさん
NGNG18で家庭持ちは流石に早いよ
0366デフォルトの名無しさん
NGNG早いかどうかなんて問題になっていないでしょ。
「おかしくない」のが何歳からか、という話だよ。
0367デフォルトの名無しさん
NGNGハゲワラタ
テユーカマイリマスタ
0368デフォルトの名無しさん
NGNGだから早いって
社会通念上おかしい
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG女も今は18じゃなかったっけ?
0371デフォルトの名無しさん
NGNG早いけど、社会通念上まったくおかしくないよ。
あなたが勝手におかしいと思うのは自由だけど。
0372デフォルトの名無しさん
NGNGマジっすか
知らなかった…
0373デフォルトの名無しさん
NGNG法律でセーフなだけだろ?
最近は高校生が妊娠したまま学校に通うのが普通なのか?
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG「高校生が妊娠したまま学校に通うのが普通」へ。
0376デフォルトの名無しさん
NGNGDX7の頃のDirectDrawと同じもんか?
0377デフォルトの名無しさん
NGNG別物。
DX7のDirectDrawはDX9でもそのまま残ってる。
0378デフォルトの名無しさん
NGNG何が普通か、などという話ではないんだよ。
何が「おかしくない」のかという話。
なんでそんなに頭が悪いの?
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGま、いいけど。
他人のふりして逃げるならそれも結構。ミスを認めたく無い場合はそれも有効だしね。
↓何事も無かったかのようにスレ再開
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG.NETとDX9でやってる?
0385デフォルトの名無しさん
NGNG座標表すだけならintで十分とおもうのですがなんでfloat型が採用されてるんですか?
座標のfloat型に合わせるためか
warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません
warning C4244: '=' : 'double' から 'float' に変換しました。データが失われているかもしれません
という警告が出まくります
座標に関わる計算するときに使う変数はすべてfloat型に統一しておいた方がいいのか
警告文が出てもプログラム自体は実行できるのでこのままほっといていいのか悩んでます
0386デフォルトの名無しさん
NGNGここはDirectX初心者スレであって、C言語初心者スレではない。
0387デフォルトの名無しさん
NGNGすいませんでした
0388梅宮
NGNGシンボルッ(でッでー)
外部のシン〜ボルぅぅー
0389デフォルトの名無しさん
NGNGとか言ってるところがある。
float志向
0390デフォルトの名無しさん
NGNG玄人は浮動小数点を捨て
固定小数点もしくは整数を選ぶ。
すなわち>>385はC言語はプロ、DXは初心者。
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNGint型の配列要素p[0]〜p[99]のうち0が
格納されている要素を全て実行例のように
画面に出力するプログラムを完成させよ
p[3]=0
p[12]=0
p[85]=0
...................
#include<stdio.h>
main()
int p[100], i ;
:
(ここに配列要素に値を格納する処理があるとして
:
この後どうなるんでしょうか??
お願いいたします
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGとりあえず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"p","[","0"といった文字はそのまま出力できませんのでまず各文字をポリゴンに変換します。
デバイスコンテキストにアウトラインフォントを選択した後GetGlyphOutline
でアウトラインフォントの輪郭(4 次スプライン形式)が取り出せますので
それを元に変換してやればいいです。
参考ページ:
ttp://www.inet-lab.org/ted/program/prog176.html
0398デフォルトの名無しさん
NGNGVC6.0とDX9SDKSummer2004でやってます
aulldvrmってなあにいい
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGたしかVC6用のも別に用意されてたような
0401デフォルトの名無しさん
NGNGExtras ダウンロードには、ソフトウェア開発キットには含まれていない以下の内容が入っています。
Visual Studio 6.0 をサポートする d3dx.lib
以前のバージョンの CG ツール プラグイン
日本語ドキュメント (Summer Update 2004 の更新は反映されていません)
Date: July 28, 2004
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGどうもありがとうございます。そちらのd3dx.libにてちゃんとコンパイルが通るようになりました
Summer2004はrequires both Visual Studio .NET and the .NET framework for developmentって
書いてあったんですね・・すいませんでした見落としてました
0404デフォルトの名無しさん
NGNGこれらの原理というか、概要が何のこっちゃか全然わかりません。
Google検索しても、「それが使われている」ことは書いてあっても
何をどうするのがポストプロセスと言うのかが書いてません。
申し訳ないですが教えてください。
0405デフォルトの名無しさん
NGNGようするに特定の処理を指すわけじゃなくて、後で何か手を加えること
全般を指す。
ポリゴンで描画したキャラクタの額にフォトショップで「肉」と書き
加えるだけでも立派なポストプロセス。
0406デフォルトの名無しさん
NGNGこのプロパティってどういう時に使うんですか?
0407デフォルトの名無しさん
NGNG光をブルーミングするような感じにすることと思い浮かべる人もいる
良い例が3DMARK03、同05、Hitman Contracts、DeusEXIW
PixelShader1.1か2.0によりポストプロセスを行うと公言しているのがこれ
0408デフォルトの名無しさん
NGNGDirectX9 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に関係する質問ではないですが,よろしくお願いします.
0409408
NGNG0410デフォルトの名無しさん
NGNGキーを押したらキーを離すまでの間キャラクターを移動させたいのですが
キーを押すと
押す→離す→押す
と状態の変化がなぜか3回起こってしまい
直接データでやった場合のように移動開始直後にカクついてしまいます
これはキーボード自体の仕様なんでしょうか?
0411デフォルトの名無しさん
NGNG> 押す→離す→押す
> と状態の変化がなぜか3回起こってしまい
こんな現象、正常なら起こらないと思う。
キーボードが機械的に壊れてるとか、そもそもプログラムにバグがあるとか。
0412デフォルトの名無しさん
NGNG画面の描画で上書きされてちらつくんですが、これを
なるべく少ない労力で正常に表示させる方法ってありませんか?
自分で考えた限りだと
・WM_IME_STARTCOMPOSITIONを拾って変換中の情報を全て自前で描画。
・WM_IME_STARTCOMPOSITIONで変換中文字列だけ取って、
入力表示の幅を計算してその部分だけ画面を更新しない。
ってのを思いついたんですが、これらよりも簡単な方法ってないでしょうか?
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG俺はやりたくないがな!
0415デフォルトの名無しさん
NGNGええ、日本語入力モードの入力中の文字を表示したいんです。
>>414
自前以外の方法はやっぱ無いんですか・・・
0416デフォルトの名無しさん
NGNGhttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=43&vew=21
これとか参考になりませんか?
0417デフォルトの名無しさん
NGNGDX9.0c夏Verから簡単に使えるようになってたんですか。それは知らなかった。
しかし、DX7使ってたんだよなorz
今から移行するよりは、このまま自前処理したほうが早いか。
0418デフォルトの名無しさん
NGNG最初は、再生するMPEGのRGB値を調整(例えば、R値を10だけ増やすとか)するエフェクトから
取り組んで生きたいと思っています。
参考になる書籍やウェブサイトをご存知の方がいらっしゃいましたら、教えて下さい。
0419410
NGNG自分のデスクトップが
PS/2のキーボードをUSBに変換するのを咬まして
(さらにUSB切り替え機もかまして)接続してるのが原因だったようです
知り合いのPCで試させてもらったらちゃんと動きました
誰かしらの参考になれば幸いです
0420デフォルトの名無しさん
NGNG私の環境も同様に PS/2→USB変換をかましているのですが
やはり同じ症状が出ますね。
変換のせいだと思って間違いないと思われます。
おかげでゲームがやりづらいの何のって・・・・
0421デフォルトの名無しさん
NGNGint 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デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424421
NGNG0425デフォルトの名無しさん
NGNG改行しないだけ?
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距離に関係なく全体をぼかすことはできる?
あとはそれに距離(Z値)を考慮すればやりかたはいくつか思いつくんじゃないかな?
0430デフォルトの名無しさん
NGNG海外サイトにソースが山ほど転がってるよ
普通に中学卒業してるのなら読める
0431デフォルトの名無しさん
NGNGウエイトかけたいんですけど簡潔で効率的なウエイトのかけ方を
教えてくださいC言語でおねがいします
0432デフォルトの名無しさん
NGNGfor(i = 0, i < x;i++){}
xの値を変えるだけで速度調節できるぜ
0433デフォルトの名無しさん
NGNGありがとうございます
試してみます
0434デフォルトの名無しさん
NGNGBASICを思い出す
0435デフォルトの名無しさん
NGNGDirectXなのか?
そもそもWindowsなのか?
なんちゃって
ネタだということはお見通しなんだが
0436デフォルトの名無しさん
NGNGVCなんかだと空ループは最適化で無かったことにされるので、ネタにもなってないぞ。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGそういう時タイマー(開始時間と経過時間)使って、
よく処理するんですが他に方法って有ります?
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGキー入力があるまでひたすら待て。
0441デフォルトの名無しさん
NGNGこの辺とか
typedef enum _D3DSWAPEFFECT {
D3DSWAPEFFECT_DISCARD = 1,
D3DSWAPEFFECT_FLIP = 2,
D3DSWAPEFFECT_COPY = 3,
D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
} D3DSWAPEFFECT;
0442デフォルトの名無しさん
NGNGポストフィルタってのは特定の処理を表す言葉じゃないって言ってるだろ。
メインの処理の後にフィルタ処理をすること全般を表す言葉。
ボケるかどうかはどんなフィルタをかけたかって話。
逆にクッキリさせるフィルタをポストフィルタとして使うこともある。
CGの場合は元々ボケないから、シェープネスフィルタをかけることはまずないが。
先にフィルタをかけるプレフィルタ(プリフィルタ)というのもあるが、
3DCGではまず使わない。(クリッピングがプレフィルタとも言えるが)
身近なところだと、圧縮処理の前に圧縮率を上げる目的でプレフィルタを
使ったりする。
そのボケてるのがどんな処理をしているのかは、フィルタ処理を勉強しろ。
画像処理と呼ばれるものがほとんどフィルタ処理だから、画像処理で
調べた方がいいかも。フォトレタッチソフトで各種フィルタを試してみる
だけでも、かなり参考になる。
深度によってボケ方が変わるのは、深度情報(Z値)によってボカしの
強度を変えてるだけ。細かい話をすると深度エッジ部分に問題があったり
色々と難しい話があるが。
0443デフォルトの名無しさん
NGNG絶対60FPS出るんですがこれはどうなってるんでしょう?
0444デフォルトの名無しさん
NGNGメインエンジン内でフィルタリングしたほうが幾らも良いのに
見た目も少し良くなる可能性がある
0445デフォルトの名無しさん
NGNG質問の意図がよく分からないが。
垂直同期にあわせつつ、60FPSより下げる方法を聞きたいのなら、
・Sleepの値を増やす
・SleepではなくGetSystemTime、GetTickCount等で経過時間を
計って調整する
60FPS以上で動作させたいのなら、
・リフレッシュレートを上げる
意表を突いて垂直同期自体が何なのか分かってないのなら、
詳しく書くと長くなるからググろう。
0446デフォルトの名無しさん
NGNGネタですか?
0447デフォルトの名無しさん
NGNGレンダ処理がOSからのメッセージかコールバックで動作してるとダメだろうけど。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGError: 外部シンボル '_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動画処理とカメラ使ったソフトを調べてたんですが、ネットで公開されてるものが、その辺りのサンプルを参考にしてたものばかりで…
同じエラーが出てきたので、何か方法があるかと聞いてみたんですが…おとなしくVS使います
(使い勝手が慣れないので、まだ殆ど使ってないです)
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGその程度のことすら出来ないのならBCCは使わない方が無難。
0455デフォルトの名無しさん
NGNGguiddef.hのなかで
DEFINE_GUID(...)が定義されてるところをよく読め。
0456デフォルトの名無しさん
NGNGいや、マジで
普通に買っても一万ちょっと
学生なら安く買える
金がないとか言う香具師は遊ぶ金とか食費削ってでも買え
0457デフォルトの名無しさん
NGNGVC++使って何か作れても
「わかったつもりになってる」
だけ
0458デフォルトの名無しさん
NGNGなにかサンプルをサクっとウィザードでつくる
ちょっと凝った事をしようとするが、MFCが使い辛くて困る
勉強する
嫌気が差す
C#に乗り換える
0459デフォルトの名無しさん
NGNGいいんじゃね?
その程度の香具師なら何使ってもその程度だろうから
できる香具師はBCC使ってもいいんだけど、
BCC特有の問題とかめんどいからVC++の方がいいんじゃね?
0460デフォルトの名無しさん
NGNGあまり変わらないのなら、スクリーンの解像度と色深度のみをDirectXで
変更するだけにしようかと思うのですが、どうですか?
0461デフォルトの名無しさん
NGNG8bitカラーなら
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG初心者スレとはいえ、何故こういう馬鹿が発生するんだろう?
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG便利機能を使うGDI+なら開発は早いってことだと思ったんでね。
DirextX9.0c使えるならそっちのが開発早いと思うが。
0466デフォルトの名無しさん
NGNGテスト用のプログラム作って試してみれば?
もし、まだDirectX触ってないんだったらいい機会だから触ってみれ
実際使うかどうかは別として
何事も経験
0467640
NGNGスクリーンを8Bitにしたら16Bitより倍速くなりました!
>>465
開発の速さではなくて、実行速度です。
2Dゲームなので、BitBltぐらいしか使いません。
>>466
DirectXが面倒だったので、もし速くならないのならGDIでやろうと思ったのでした。
0468デフォルトの名無しさん
NGNG例えば配置する位置を(X、Y、Z)として、
World→View→ProjectionとSetTransformして
DrawSubsetすれば簡単に表示してくれるわけですが、
このXYZが変換された後のスクリーン座標の値を
取り出したいときはどうしたらよいのでしょうか。
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGないんだ
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG?
0474デフォルトの名無しさん
NGNG皆さん描画システムどうしてます?
(D3DFrameでいうRenderのBeginSceneとEndSceneの間)
SetRenderState SetSamplerState SetTexture SetFVF
と設定周りを色々呼び出すわけですが「呼び出し回数が少なければ少ない程早くなる」のだと思います。
最低の呼び出し回数でやろうとすると当然ツリー状態になるのですが、
確保やら解放やらでそんなに速度は変わらないのではと危惧しています。
「じゃぁ、どっちも試して速度調べろよ」と言われそうですが、他の人のシステムも知りたいので書き込みました。
よろしこです。
0475468
NGNGどうもすいません。普通に自分で変換行列作って掛けてみたんですが、
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デフォルトの名無しさん
NGNGfor (i = 0; i < 100; i++) if (p[i] == 0) printf ("p[%d] = 0\n", i);
これで1行だけど、入力・処理・出力を分けてないから気持ち悪いというわけだ
いまさらだけど
0477デフォルトの名無しさん
NGNGビュウポート行列を掛けないとスクリーン座標は求まらんと思うが?
0478468
NGNGプロジェクショントランスフォームってのはパースつけるとこまでで、
その後更にビューポート座標に投影する変換が必要ってことでしょうか?
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);
で見事予想した値が得られたのでこれで計算方法は間違ってないはず
これにアスペクト比を含めて考慮すればいいのかな
0480479
NGNGです
0481468
NGNGわざわざすいません。
D3DXVec3Projectっていう関数を発見したんですが、
これで一発で出せたみたいです。
でも479で説明してもらった事があんまりハッキリ理解できてないので
後で困りそうですが・・・もうちっと勉強します。
なにしろありがとうございました。
0482デフォルトの名無しさん
NGNG自分が持っていない環境のできる/できないはどうやって調べたらいいですか?
それを調べる関数やプログラム、まとめサイト、メーカー資料などありましたら教えてください
0483デフォルトの名無しさん
NGNGディスプレイ側で表示不能だったらどうするつもりなんだろう?
ディスプレイにノーシグナル警告を表示させる嫌がらせソフトでも作りたいのだろうか?
0484デフォルトの名無しさん
NGNG右シフト(DIK_RSHIFT)、右Ctrl(DIK_RCONTROL)、右ALT(DIK_RMENU)などが正常に検出できません…。
それぞれを押すと、0x00(未定義)、0x70(かな)、0x94(漢字)が検出されてしまいます。
自分のプログラムだけだと思ったら、SDK の DirectInput サンプルでも同じことが発生。
106/109 日本語キーボードだと問題なく検出できました。
101/104 英語キーボード使っている方、
SDK サンプルで上記キーが検出できるか実験していただけませんか?
ちなみに Win32 API の GetKeyboardState では全て問題なく検出できています。
素直にこっち使ったほうがいいのかなぁ…。
0485デフォルトの名無しさん
NGNG判定をしたいメッシュ(Xfile読み込んだメッシュ)へのポインタを渡せば
勝手に当たり判定してくれるわけですが
このメッシュはD3DXMatrixTranslationで移動させたりしたとしても
移動先の位置できちんと当たり判定を取ってくれるんでしょうか?
Pickサンプルのようにマウスとの当たり判定を取ろうとしてるんですが、
どうもメッシュがワールド座標の中心(初期位置)にあるときは
そこそこ取れているみたいですが(なぜだかちょっと誤差あり)、
移動させても判定位置はついていかず、中心に残ったままになってます。
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG判定する線を逆に行列変換すればいけるんじゃない?
0488485
NGNGそれはやってるつもりなんですが、うまくいってないっぽいんですよねぇ。
「カメラの位置座標」と「マウスのスクリーン座標をワールド座標に変換した座標」を
結んだ直線との当たり判定を取ってます。
マウス座標をワールド座標に変換するにはD3DXVEC3Unprojectを使ってます。
でもこの関数が返してくれた値がちょっとばかり変な様子です。
が、その正当性を検証する以前に、とりあえずお聞きしたいのは、
D3DIntersect関数は判定するメッシュを
D3DXMatrixTranslationで移動させたりしていたとしても
移動先の位置できちんと当たり判定を取ってくれのでしょうか?
という事であります。これが分からないもので、
どこが間違えてて思うような結果になっていないか当たりがつけられないんです。
0489デフォルトの名無しさん
NGNG487さんの言っている事を理解できてないと思う。
D3DIntersectは対象のメッシュが持つ頂点座標そのままで判定する。
だから対象メッシュが別のローカル座標系に移動されているなら、当然そのままでの判定は無理。
これは判定する線も、そのローカル座標系に変換すれば簡単に解決。
具体的には対象メッシュを他の座標系に移した行列の、逆行列を使えばOK
0490485
NGNGちょっと試してみようと思います。
0491デフォルトの名無しさん
NGNGWORLD座標系で比べるのが一番簡単かと
0492デフォルトの名無しさん
NGNG(深度情報を参照するのはつらいです)
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG殺伐としたスレに救急車が!
┌┬┬┬┐
―――┴┴┴┴┴―――――、
/.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||
/. ∧// ∧ ∧| || ||| ||
[/____(゚_//[ ].゚Д゚,,) ||___||| ||
||_. * _|_| ̄ ̄ ∪|.|. |ヽ. _| |
lO|o―o|O゜.|二二 東|.|京 精神病院 | |
| ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_|
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
0497デフォルトの名無しさん
NGNGデバイスコンテキストで文字を表示しようと思ったのですが
y軸方向へ数ドットずつずれて文字が表示されて困ってます
例えば
座標(0,0)にA
座標(0,10)にB
座標(0,20)にC
を表示させる場合
見た目には
座標(0,0)にA
座標(0,9)にB
座標(0,18)にC
が表示されるように見えて表示位置がずれてるんですけど
なんでこんな現象がおきるんでしょうか
X軸に対してはずれは起こらないみたいです
0498デフォルトの名無しさん
NGNGDirect3Dだとすると、まずDCを扱うメソッドは存在しない。
ということはウインドウから直接DCをとっているのだろうが、
そうだとするとDirectXと全く関係ないのでスレ違い。
0499デフォルトの名無しさん
NGNGdirectx8のDirect3Dで描画したグラフィックとのずれが生じてるのでやっぱdirectxと関係があります
Direct3Dで座標(0,50)に描画したグラフィックと
DCで座標(0,50)に描いた文字列が見た目にy軸方向に少しずつずれて表示されてます
このためにグラフィックと文字の対応があやふやになって見にくいのです
0500デフォルトの名無しさん
NGNGそれぞれどの座標を指定したのかコメントを添えて提出しろ。
0501デフォルトの名無しさん
NGNG画像見てもらえばy軸方向に数字がすこしずつずれていってるのがわかると思います
http://houjicha.mxx.jp/up/img/img20041024220414.bmp
丸の画像は(0,0)からy軸方向に32ドットの間隔で配置
数字も同様に(0,0)からy軸方向に32ドットの間隔で配置してます
0502501
NGNGDCで書かれた数字は同じ位置に表示されたまま変化ないんだけど
それと関係あるのかな?
ウインドウの横幅と縦幅の初期設定と
directxの初期設定の
// 横ドット幅設定
gl_d3dpp.BackBufferWidth
// 縦ドット幅設定
gl_d3dpp.BackBufferHeight
は全く同じにしてあるんだけどな…
なんでずれるんだろう?
0503デフォルトの名無しさん
NGNG>>498
0504デフォルトの名無しさん
NGNGつまり自分でウインドウサイズに合わせて、
描画するように指定しているだけの話だろう。
自らやっていることに文句を言うのは筋違い。
0505501
NGNGどこをどういじればいいのか教えてください
0506デフォルトの名無しさん
NGNGウィンドウにはタイトルバーとかボーダーがあるの忘れてないか?
0507501
NGNGずれるんで困ってます
0508デフォルトの名無しさん
NGNGデバイスサイズがずれているからだろう。
もはやDirectXの話とは無関係。
Windowsプログラミングの基礎からやり直せ。
0509501
NGNGといいますとどういうことでしょうか?
0510501
NGNGどこのスレで聞けばいいんでしょうか?
もしよろしければ誘導お願いします
0511デフォルトの名無しさん
NGNG聞くんじゃなくて基礎からやり直せといっている。
コトバツウジマスカ?
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGAdjustWindowRect
とか
DirectX 全然関係ないですね!
0514デフォルトの名無しさん
NGNG普通は目的のサイズになるまで適当に繰り返すんだが、この話はスレ違いだ。
0515501
NGNGAdjustWindowRect使ったらうまいこといきました
レスくださったみなさんありがとうございました
0516デフォルトの名無しさん
NGNGPS2.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ディスプレイの調節しろ。
0519デフォルトの名無しさん
NGNGここはDirectX初心者質問スレであって、PC初心者スレではない。
0520デフォルトの名無しさん
NGNGすみませんでした。ディスプレイ調節したら治りました。
俺がアホでした…。OTL
わざわざ、ありがとうございました。
0522デフォルトの名無しさん
NGNG通常GUI画面を同時に表示する方法が解りません。
※ウィンドウの右半分がDirectX,左半分がWin32Dialogといった感じです
環境は
Visual Studio .NET 2003 VC++7.0
Win32 & DirectX 9.0 SDK
です
通常のウィンドウリソースで1ウィンドウ内に2つのダイアログを表示する場合を
簡易的に説明します(引数は判断に必要そうなのしかかいてません)
0523522
NGNGmain_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);
以上のような手順でリソースを作成すると
問題なく表示されます。
0524522
NGNGmain_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);
以上のような手順でリソースを作成すると
問題なく表示されます。
0525522
NGNG0526522
NGNGIDirect3D9::CreateDevice
のhFocusWindow引数に hSubWindow0 を渡そうと考えたのですが
MSDN には
hFocusWindow
[in] この MicrosoftR Direct3DR デバイスでフォーカスを設定するウィンドウ ハンドル。
指定するウィンドウは、フルスクリーンの最上位ウィンドウでなければならない。
と書いてあって困ってしまいました。
最上位とは
HWND_DESKTOP
意外許されないのでしょうか?
*単一ウィンドウにDirectXをわりあてる時はHWND_DESKTOPを使用していました
ためしに, hFocusWindow に hSubWindow0 を渡してみました。
しかしD3D_OK を返すのですがだめでした。
DirectXに割り当てた hSubWindow0 は画面が更新されない状態で何も表示されていない状態になっていました。
DirectXのプログラム部分は画面を黒く塗りつぶす単純なものだけを入れて確認しました。
単一ウィンドウの場合は不具合なく動くのですが・・
0527522
NGNGフリーの3Dモデルビューワーなどでは結構やっているのをみるので、可能だとは思うのですが・・・
よろしくお願いします。
0528デフォルトの名無しさん
NGNG描画するときはサブウインドウを指定すればいいだけ。
0529デフォルトの名無しさん
NGNGっ[ IDirect3DDevice9::Present ]
0530デフォルトの名無しさん
NGNGボリュームフォグをつかうと高速にできたりするんでしょうか?
現在はVTKというライブラリを使っているのですが そのなかでは レイトレーシング法での表示とテクスチャをつかった擬似表示があります
しかし あまりにも表示速度が遅いので(たった256*256*35のデータでも3FPS程度)
DirectXのHLSLあたりをうまくつかって高速に処理できないかと考えているのですがさっぱりわかりません
フォグがだめならピクセルシェーダでレイトレーシングさせたらCPUより高速にできやしないかとも考えているのですが できるんでしょうか?
ご教授お願いします
GPUレイトレーシングは最近ホットな分野。
つまり、「できる」
0532デフォルトの名無しさん
NGNGマシンの性能にもよるけど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デフォルトの名無しさん
NGNGint 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// 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省略
長すぎてごめんなさい。よろしければ情報お願いします。初心者なんで無礼かもしれませんが。。。
0537530
NGNG今使ってるはただのPCです(まだ機能の検証段階なので)
VTKにはハードアクセラレーション機能はあるのですが
専用のハードウェアを搭載しないと使えないので ふつうのPC環境ではうごきません(ハード処理でもカクカクらしいです)
ボリュームレンダリングは基本的にレイトレーシングという光の進路を追跡して ボクセルデータを平面に映しこむ処理をするのですが
これは3Dグラフィックスの機能をなんら使用していないので CPUのみの力に頼ります
最近のGPUは非常に高速なのでGPUに処理をさせた場合どのくらいの結果が得られるのか
ゲーム技術を応用して 擬似的に高速な表示方法はないのかを考えているところです
なにぶん学部4年でCGの教育をまったく受けていないものでぜんぜん解っていないのですが 努力していこうと思います
0538530
NGNGたしかにググってみるとものすごく熱くなってる分野であることが実感できました
最高レベルのGPUならそこそこのスピードが期待できそうなのでがんばって勉強していきたいと思います
0539デフォルトの名無しさん
NGNGSDKを読んでInputオブジェクトを作り、次にInputデバイスの生成まで理解できたのですが、
それから一向に分からないので教えてください。
よういされているゲームパッド用のクラスを宣言すればいいのでしょうか?
それとゲームパッドから入力された情報はどのような形式でどこに格納されるのでしょうか?
0540デフォルトの名無しさん
NGNGマルチうぜー
0541デフォルトの名無しさん
NGNGまずはキーボードかマウスの入力やってみたら?
0542デフォルトの名無しさん
NGNGそんなに長くなるくらいならソース上げろ
あとマルチするな
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGマウスやキーボードはマニュアルに書いてある通りやればできるのですが
パッドやジョイスティックになると理解できなくなるんです。
パッド等の入力装置を使う場合には自分で設定したクラスを宣言しなければならないんでしょうか?
それともキーボードやマウス同様にもう既に準備されてるんでしょうか?
0546533-536
NGNGみなさんありがとうございました。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGttp://gamdev.org/up/img/1714.zip
上のファイルをVC6でビルドすると、外部参照未解決のエラーが出ます。
どうもD3DXMatrixPerspectiveFovLHメソッドを入れるとd3dx9.lib内でエラー
が出るのですが、原因とかわかりますでしょうか。
0549デフォルトの名無しさん
NGNGVC.NETだが普通にコンパイル通った
0550548
NGNG自分とこはこうでます
プロジェクト '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デフォルトの名無しさん
NGNGDirectXのVC6用のExtrasパッチを上書きしる
0553梅宮辰夫
NGNGシンボルッ
外部のしん〜ぼる〜ぅぅ〜
0554デフォルトの名無しさん
NGNGXファイルでFrameTransformMatrixに入っている行列は
参照したり変更したりできるんでしょうか?
プログラム中でメッシュオブジェクトを作って中身を入れる
サンプルというのはいくつかありますが、この行列の
扱いはどうなっているものかと。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG有効なWin32アプリケーションではありません
といわれてインストーラが起動しないんですが、対処方法を教えて頂けないでしょうか?
0557デフォルトの名無しさん
NGNG再ダウンロード、Irvineでダウンロード等やってみましたが、ダメでした。
0558デフォルトの名無しさん
NGNGとなると自分でモデリングソフト作るか
独自形式のコンバーター作らないといけないし
手間掛かりすぎる
0559デフォルトの名無しさん
NGNGプロキシ抜くとか
雑誌付録CD-ROMを探すとか
0560デフォルトの名無しさん
NGNG例えばウィンドウの描画領域が640×480のときに、
DirectXで描画する領域を
始点100, 100
幅 320
高さ240
とか、三面図+透視図のように描画する領域を4つにして
ウィンドウの画面全体にDirectXで描画する領域を4つにする
みたいなことがやりたいんです。
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNGtypedef enum _D3DFILLMODE {
D3DFILL_POINT = 1,
D3DFILL_WIREFRAME = 2,
D3DFILL_SOLID = 3,
D3DFILL_FORCE_DWORD = 0x7fffffff
} D3DFILLMODE;
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG厨房板に帰れ。
0565デフォルトの名無しさん
NGNGD3DFILLMODEを検索してみましたが
利用例が載ってないのでどうやってつかえばいいのかわかりません
使用例などを教えていただけないでしょうか
0566デフォルトの名無しさん
NGNGプログラムはそういうものだ。
0567デフォルトの名無しさん
NGNG一つ例がないと取っ掛かりがないので試行錯誤しづらいです
0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGなんで点とか線の描画法は載ってないのかな…
資料がなさすぎです
0570デフォルトの名無しさん
NGNGDrawPrimitiveUPあたりから始めれ
0571デフォルトの名無しさん
NGNGヒントありがとうございます
0572名無しさん@お腹いっぱい。
NGNGテクスチャと青っぽい色をブレンドしたみたいな色でレンダリングされたり
・MMO系のゲームでキャラクターとか落ちてる小物とかをマウス選択すると
発光したような感じの色でレンダリングされたり
・アクション系のゲームでダメージを喰らった時に赤っぽく色が点滅したり
そんな感じで、読み込んだXfileに指定の色をブレンドしてレンダリングするには
どうしたらよいでしょうか。
DX9を使っていますが、ピクセルシェーダーとかは使わずに実現したいです。
0573デフォルトの名無しさん
NGNG自分が意図した順番で点と点を線でつなぐにはどうしたらいいのでしょうか?
0574デフォルトの名無しさん
NGNGAI搭載の最新環境なんだろうな。
0575デフォルトの名無しさん
NGNGマテリアル変えればいい
0576デフォルトの名無しさん
NGNG>>573の件は解決しました
頂点色が白以外だと表示したビットマップと頂点色がブレンドされてしまうんですが
ビットマップの色だけが表示されるようにするにはどうしたらいいのでしょうか?
0577デフォルトの名無しさん
NGNGてか一度ヘルプのD3DRENDERSTATETYPE 列挙型に目を通して
SetRenderStateでどういったことができるのか大雑把にでもいいので把握することをお勧めする
もしかしたらライティングもいじらないといけないかも
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNGまぁ初心者質問スレだからいいんじゃね?
とはいえ漏れも常駐しているわけではないので、
ググルなりヘルプで検索かけるなりすることを覚えたほうがいいぞ
てかスレのルールは
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
なんでよろしく > 質問するみなさん
0581デフォルトの名無しさん
NGNG今調べて
gl_lpD3ddev->SetRenderState(D3DRS_COLORVERTEX, FALSE);
やってみましたけどブレンドされてしまいます
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNGセンセイ方に学校で懇切丁寧に[教えていただいてる]セーガクなので
あまり難しいことや「習ってない」ことは答えられないので
あまり期待しないように。
0585デフォルトの名無しさん
NGNGHPB(or YPR)を入れる構造体ってないですか?
別に自分で作ってもいいのですが、
あれば使ったほうが便利だし統一性があってなんとなく気持ちよいので
使いたいのですが。
0586556
NGNGCDのファイル構成の様な物が出てきたので、そこでやっとインスコ出来ました。
0587デフォルトの名無しさん
NGNGDirectX9+VS.netでスプライト描画をしようとしているのですが、
先日SDKをアップデートしたところ
ID3DXSprite::Drawメソッドが「7個の引数は指定できません」
というエラーが出てくるようになってしまいました
アップデートする前はエラー等は全く無かったのですが・・・
pSprite->Draw(pTexture,&rect,&vec2Scale,&vec2RotationCenter,0,&vec2Position,0x55ffffff);
こんな感じの使い方してます。
MSDNの日本語ヘルプみる限りでは引数7個なのに・・・
どなたかご教授願えませんでしょうか(´・ω・)
0588デフォルトの名無しさん
NGNG日本語DX9のヘルプは、アップデートしたSDKのヘルプとは違うものだろ
適合するヘルプを読め
0589デフォルトの名無しさん
NGNG>>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
0590589
NGNGttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/d3dx/interfaces/ID3DXSprite/Draw.asp
0591デフォルトの名無しさん
NGNGありがトン(´;ω;)
消えた二つの引数はどこで処理されるんだろう・・・
0592587
NGNG今度はスプライトが表示されなくなりますた・・・
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デフォルトの名無しさん
NGNGBeginScene/EndScene じゃない。
ID3DXSpriteのメンバを良く見る。
0594593
NGNGだと、語弊があるか…。
BeginScene/EndScene
Begin/End
両方のペアが必要ってこった。
0595587
NGNGありがとうございました・・・
Beginメソッドいれるだけでできました。
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
(略)
pDevice->EndScene();
こんな感じで。
しかし、スケール情報と回転のための数値はどこへ・・・
0596デフォルトの名無しさん
NGNG最初は使いにくく思うかもしれんけど、マトリクス渡すだけで良くなったので3Dと合わせて使うのに便利になった。
0597デフォルトの名無しさん
NGNGこの座標系ってどうなってるんですか
Drawでスプライト表示させるとき、座標を-で指定しないとちゃんと表示されないんですが
0598597
NGNG間違ってCenterに座標設定してた
ちゃんとドキュメント読んでこよ…
すみません
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
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おい、人質を解放しろよ。
0602デフォルトの名無しさん
NGNGありがとうございます。VBを開放したらなんとなく大丈夫っぽくなりました。
ただそれ以外の部分もこれで正しいのかどうか自信がないのですが、
毎フレームごとにVB作って開放してって言うのを繰り返してよいのでしょうか?
もちろんハード性能にもよると思うのですが、
たった1000本ほどライン描画するだけでFPSが半分くらいになります。
そういうものって思ってよいのでしょうか。
0603デフォルトの名無しさん
NGNGそうしてるならスペック不足かなんかじゃないかな。リリースビルドにしてみたら?
0604デフォルトの名無しさん
NGNG基本的に作りがマズイ。
毎フレーム頂点バッファを作成したり、
1000回もLock()、DrawPrimitive()を呼んだりしてはいけない。
>>602の修正するべき点は、
・初期化の段階でライン1000本分の頂点を格納できる頂点バッファを作る。
・1フレームでロックするのは1回だけにする。 (ライン描画時)
・ロック後はすばやく頂点座標を書き換えてアンロックする。
・1フレームでDrawPrimitiveを呼ぶのは1回だけにする。 (ライン描画時)
・それでも動作が遅い場合は頂点バッファを動的メモリ(AGP)に配置してみる。
早い話が1000本まとめて描画しろってこと。(>>603と同じ)
Create系、Lock系、DrawPrimitive系の処理は重いので
呼び出し回数を極力減らすようにすること。
0605デフォルトの名無しさん
NGNGそのラインは平行移動できるようにしてあるので他の点に接触したときにに点の色に影響受けて色が変化します
点に接していないときは勝手に消えて点に接触すると現れます
0606デフォルトの名無しさん
NGNGディスプレイ上の1ドットとバックバッファ上の1ピクセルが
1:1になってないような場合必然的にそうなると思われます
赤赤青赤赤 を4ドットで表現しなくてはならない場合
赤紫紫赤 になる という事と同じかと
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG>1
>3.SDKを見ても、Googleで検索しても、いまいち理解できない人
へるp
0609デフォルトの名無しさん
NGNGお返事ありがとうございます
どうすれば1:1に対応さすことができるのでしょうか?
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNGちょっと前のあれと同じオチか…
0612554
NGNG電波の缶詰さんのとこのサンプルでも、FrameTransformMatrixは
独立して扱っていました。
というわけで自己解決いたしました。
0613デフォルトの名無しさん
NGNGタスク切り替えで勝手にウィンドウモードになって困ります。
0614デフォルトの名無しさん
NGNGデバイスロストしたときの復帰方法が適当すぎるだけだと思われ
コピペじゃなくてちゃんと理解して書きましょう
0615デフォルトの名無しさん
NGNG256色の全画面モードでパレットをいじっているのですが、
IDirectDrawPalette_SetEntriesとかってチップによっては処理が遅くなりますか?
Matrox > S3 になってるのですが。
0617デフォルトの名無しさん
NGNG>タスク切り替えで勝手にウィンドウモード
ってのは、正常な動作じゃないの?
まぁ俺が質問の意図をよく理解してないのかもしれないが…。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG2DならバックバッファにGetDCしてそのデバイスコンテキストでGDI関数を使う。
3Dだと線で描く必要があったかと。
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG0623613
NGNGあっ、そうなのですか。
では他のタスクがアクティブになってフルスクリーンモードが解除された後、
ゲームがアクティブになってもフルスクリーンになってくれないのは仕様なのでしょうか?
ウィンドウモードで最大化されて表示されてしまって良くないと思います。
では、フルスクリーンモードが解除された事はどうやって知ることができるのでそうか?
0624デフォルトの名無しさん
NGNGゲームがアクティブに戻ればまたフルスクリーンに戻るはずだけど…?
ウィンドウかフルスクリーンかは
D3DPRESENT_PARAMETERS の Windowed メンバで決まると
思うんだが、別にいじってないの?
0625624
NGNG0626デフォルトの名無しさん
NGNG正五角形の表示させようとしています.
//////////////////////////////
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度に分けます
0627626
NGNGttp://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 *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]
0629628
NGNGWORDに変更しても、カリングがでデフォルトのCCWのままだと
何も表示されなくなるので注意。
インデックスを時計回りで指定するか、
もしくはD3DCULLMODEをCW or NONEに設定する必要がある。
0630デフォルトの名無しさん
NGNGCustomUI
って、
windows2000だとうまく動かないんですか?
付属のバイナリも文字化けするし、自分でビルドしてもダメポ。
0631630
NGNG環境は
win2000
DirectX9.0c
GF4Ti4200
アスロンXP
VC6sp6
です。
.NETも新しいの入ってるし・・・。
XPじゃないとだめなんですかねぇ・・・。
サンプルソースながめるとしますか・・・。
0632630
NGNG連投すいません。
0633630
NGNGg_SampleUI.SetFont( 3, L"MS ゴシック", 16, FW_NORMAL );と、フォント追加して、
pIMEEdit->GetElement( 0 )->iFont = 3;
pIMEEdit->GetElement( 1 )->iFont = 3;
pIMEEdit->GetElement( 9 )->iFont = 3;
と、設定することで、できました・・・。
なんだか、どろくさいなぁ・・・
もっとスマートにできないもんでしょうか?
0634デフォルトの名無しさん
NGNG0635623
NGNGDirectDrawCreate(nil, DD, nil);
DD.SetCooperativeLevel(Handle, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN);
DD.SetDisplayMode(Width, Height, BitCount);
でディスプレイモードを変えているだけなのですが、
どうすれば復帰してくれますか?
0637デフォルトの名無しさん
NGNGEXCLUSIVE と DDSCL_FULLSCREEN
はorじゃなく、必ず一緒に(and)するんじゃなかったっけ。
DD.SetCooperativeLevel(Handle, EXCLUSIVE | DDSCL_FULLSCREEN);
俺はDirectDraw7使ってるせいか、初めて見る記述なんであまり自信ないが。
0638デフォルトの名無しさん
NGNGこの場合は Bit毎の or なので、C言語の | と同じ意味です。
Cのand は & だったはず…。
0640デフォルトの名無しさん
NGNG"|" は "or" の意味ですよ。
DirectDraw7を使ってるせいじゃなくて、使ってない言語記述では?
0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNGandなんだよね
これだからマイクロソフトは
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGゲイツも関係ねー
基礎からやり直せと
0645デフォルトの名無しさん
NGNG「〜且つ」の意味ではなくて、日本語的な「〜と」のことを言っているのではなかろうか。
どっちにしても>>642はあまりプログラマっぽくないね。
0646デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGはい、復習してくださいね
0649デフォルトの名無しさん
NGNGと言いたいのでは?
0650デフォルトの名無しさん
NGNGなんか意味があるんですか。
0651デフォルトの名無しさん
NGNGが、痛みのない間にますます虫歯が酷くなるのでやめておいたほうがいい。
バファリンとかもだ。
とっとと歯医者に行こう。
0652デフォルトの名無しさん
NGNGぱっと見て何を言ってるかわからんかったが
歯痛的論理和ねw
0653デフォルトの名無しさん
NGNGマイクロソフトのサイトにも8までしかないようなんですが・・・
どこか公開しているサイト知っていたら教えてください。
0654デフォルトの名無しさん
NGNGそれはつまり無断公開しているサイトを教えろということなのか?
0655デフォルトの名無しさん
NGNGDirectX7時代の本いくつか持っているのでCDの中身みたんですが英語版しかないのです。
0656デフォルトの名無しさん
NGNGある装置を監視するために、現在はMedia Encoderでストリーミング配信しているのですが、
監視を自動化するためにビデオキャプチャしている動画をリアルタイムで簡単な画像認識をしたいです。
キャプチャのサンプルソフトをMedia Encoderと同時に起動すると、
デバイスが他のアプリで使われているというエラーが出るのですが
どのように回避すればよいでしょうか?
0657デフォルトの名無しさん
NGNGそれで十分じゃないか・・・。
0658デフォルトの名無しさん
NGNG一応英語は少し読めるけど日本語もほしい・・・
ウプしてくれる猛者いたらお願いします。
0659デフォルトの名無しさん
NGNG英語嫁、以上
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNGGetCursorPos()でマウスの初期位置取得してから
初期位置にdirectinputで取得した移動量を加えて座標を求めることになるんでしょうか?
0665345
NGNG実行中にこの行で
.exe の 0x0044ee4c でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。
というエラーがでましたどうすればうまくいくのでしょうか?
0666デフォルトの名無しさん
NGNGwinmm.libはどこにあるのでしょうか。
DirectX9.0SDKをつかってます。
0667デフォルトの名無しさん
NGNGC:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib
0668デフォルトの名無しさん
NGNGあっありました(泣
本当にありがとうございました。
0669デフォルトの名無しさん
NGNG相手の環境わかるのか、すげー!!!
0670デフォルトの名無しさん
NGNGつまんね
0671デフォルトの名無しさん
NGNGマジで言ってるのかな。
gl_lpD3ddevがNULLなんだよ。
0672デフォルトの名無しさん
NGNGほんとです
どうすればエラーでなくなりますか?
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGやってみます
0676デフォルトの名無しさん
NGNGサンプル部分的にコピって動きませんってレベルな気がするのだが
0677デフォルトの名無しさん
NGNG直接入力はデータ取得の呼び出しをした瞬間の入力の状態を返すそうなので
正確なマウス座標は求められないのでしょうか?
初期値としてGetCursorPos()で求めた座標に
GetMouseState()で求めた移動量を足していくことで座標を計算したのですが
うまいことできなかったので困っています
0678デフォルトの名無しさん
NGNG少し手を加えてみましたけど…
0679デフォルトの名無しさん
NGNGそこがまじぃんだよwきっとw
0680デフォルトの名無しさん
NGNGWin32APIだけで瞬時に解決する問題で、
わざわざDirectInputを混ぜる理由は?
0681デフォルトの名無しさん
NGNGDirectInputをどうしても使ってみたいんです
0682デフォルトの名無しさん
NGNGワラタ
てかズッコケタ
0683デフォルトの名無しさん
NGNG>>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エラーとかは出ないのですけど
絶対モードじゃないです
実際のマウスの位置と>>677で求めた座標の位置がずれてるのでなんでかなと思っていろいろ調べてたら
直接入力はデータ取得の呼び出しをした瞬間の入力の状態を返すと書いてあったので
GetMouseState()が実行されてない間のマウスカーソルの移動量は計算されないから
その分だけずれるのかなとかおもったりしてます
もう一度ソース見直してみます
レスありがとうございます
0686デフォルトの名無しさん
NGNGデバッガはどの行をさしているんだ?
あとGetIndexBufferとGetVertexBufferで得たpIBとpVBがNULLでないことは確認できてるのか?
あとGetIndexBuffer、GetVertexBuffer、Lock、Unlock、Releaseの戻り値のチェックは?
0687デフォルトの名無しさん
NGNG解決しました。
なんと、常時メッシュと当たってない時も上記の処理をしていた為、
面のインデックスを受け取ってなくて落ちてました。
メッシュと交差した時だけ上記の処理を行うようにしたら
きちんと取れてました。ごめんなさい。
0688デフォルトの名無しさん
NGNGてことは多分faceIndexに不正な値が入ってたんだろ?
エラーチェックのコードを入れてたほうがいいぞ
0689デフォルトの名無しさん
NGNGDrowPrimitiveで表示させる場合ってやはり
ニ、三個くらいのプリミティブ毎にレンダリングするしかないんでしょうか?
実際パフォーマンスの問題と、実機用のソースの変更が必要になるため
避けたいなあと思っているのですが…
普通はどうするものなんでしょうか?
よかったらアドバイスお願いします。
0690デフォルトの名無しさん
NGNG言ってる意味がわからん。
その「実機」ってのも何を指してるのかサッパリ。
0691デフォルトの名無しさん
NGNG0692689
NGNGゲーム機用のモデルをPCで表示させたいんす。
ハードによってはプリミティブの境目がわかる判別タグとか使って、
TRIANGLESTRIPのバッファを一回のレンダリング命令で表示できたりするんですが、
DirectXではそんなタグ使えないし、タグをとっぱらってただのTRIANGLESTRIPの
バッファとして使ってます。
で、だからただのTRIANGLESTRIPのバッファなんですが、
例によってTRIANGLESTRIPのバッファって細切れなので、
ニ、三個くらいのプリミティブ毎にレンダリングになってしまい、重いと。
0694デフォルトの名無しさん
NGNGメモリ上に不連続にデータが並んでるの?
うまいことストライドで処理できないかな。
0695691
NGNG変換行列・マテリアル・ステート等が同じで、
ストリップが細切れになってるだけの状況ならば、
無理やり繋げて描いた方がなんぼかマシだと思う。
インデックスバッファ未使用だと効率は良くないが・・・
>>694
> 境目がわかる判別タグ
から察するに、短いストリップが沢山あるということだと思う。
俺の勘違いかな?
ああ、もう出かける時間なので、あとは>>694よろしく
0696689
NGNG0697デフォルトの名無しさん
NGNGなるほどね、タグ方式だからストライドが一定にならないわけか。
細切れストリップを繋ぎ直しするにも、頂点バッファがビデオメモリにあるなら
パフォーマンス激オチじゃないかな。
実際のところ、全部一括でDrawPrimitiveと、細切れDrawPrimitiveではどれくらい
パフォーマンスが違うの?
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700689
NGNGそのとおりです、すいません。言葉足らずm(__)m
>どれくらいパフォーマンスが違うの?
全部一括って = 繋ぎ直し = 縮退三角形の方法ですよね?
繋ぎ直してやってみます、すまそ。
うーんどっちだろ。
実機よりもPCのが環境良いのに、細切れだと描画速度が実機の30%以下なので…
今は繋ぎ直しの方が魅力的に感じます。
0701デフォルトの名無しさん
NGNG漏れもかなりコマ切れのSTRIP扱ったことがあるけど、全然違う
なんで、こんなに重いかなと思ってデータみたらコマギレ…
もちろん縮退三角形で繋いだらツルツル動きました
0702デフォルトの名無しさん
NGNG前は繋ぎなおしのライブラリがnVideaにあった気がするけど今もあるのかな?
繋ぎなおしは非常に重いのでデータ読み込みの時にはしないほうがいいと思う
コンバータ作って、データ自体を変えたほうが幸せになれる
0703689
NGNGデータ自体変えてしまおうか迷ってて、きつかったらコンバータ作ろうと
思っていました。参考にさせていただきます。
0704デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGSetDisplayModeでフルスクリーンモードへ切り替えたときに、
画面がちゃんと表示されたかどうかを検出することって出来ますか?
(WM_PAINTは画面が表示される前に来るようです)
たとえば起動ロゴを表示する際、
完全に画面が切り替わった後で処理を始めたいと考えています。
現在は2秒ほど待つ処理を入れています。
0707デフォルトの名無しさん
NGNGSDKがいるんでマイクロ社の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フリーのコンパイラ使うなら
Visual C++ Toolkit 2003
使ったほうがいいかもしれん。
あと、サンプル見てないからわからんけどソフトウェアエミュレーションで起動してるね・・・
CreateDeviceを検索してみ。
D3DDEVTYPE_HALに設定してないのかな??
・・・関係ないかもしれんな・・・
0709デフォルトの名無しさん
NGNG0710707
NGNGVisual C++ Toolkit 2003ですか。
考えておきます...
ソフトウェアエミュレーション...?
多分、大丈夫かな…
よくじっくり見たら普通に動いてるのはD3DDEVTYPE_HALなんですが
重い動作してるのはREFでした('A`)
F2押してオプションっぽいところでHALに変えようとしたらREFしか...
始めから動作がスムーズなのは始めからHALになってるしオプションでREFにも変更できるんですが('A`)
なんか謎です…
October 2004よりも実はSummer 2004の方が良いってことは…ないか…。。
CreateDeviceを検索…サンプルのcppの中検索したらその文字ありましたが
普通に起動するやつと重いやつはそこは同じでした...
0711デフォルトの名無しさん
NGNG0712707
NGNG有難う。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGなんとか立ち上がるようになってる。
速くならないのは使ってるPCがサポートしてないハードウェア機能を前提に作ってるからだね。
そろそろオンボードもピクセルシェーダまで対応しつつあるけど、まだ前提には作れんよなぁ。
0716デフォルトの名無しさん
NGNG安いのでいいから買おうよ
0717デフォルトの名無しさん
NGNG二次元配列を使用して円弧を作成しろという課題が出てしまったのですが、
いかんせん初心者な者でどう手をつけてよいのかわかりません。
どなたかご教授宜しくお願いします。
ちなみに、始点と終点と中心(半径r)を決めて始点と終点を結んだ扇形を作りたいです。
このとき中心から始点、中心から終点の線は表示しないで始点と終点のみを結びます。
あと、今DirectX グラフィックのチュ−トリアル4を参考に勉強させていただいてます。
宜しくお願いします。
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGバーテックスバッファを作って座標を順番にバッファにつっこんで、
DrawPrimitive。分かれば簡単だが、分かってないと途方に暮れるだろうな。
0722デフォルトの名無しさん
NGNG開始角じゃなくて始点なの?
指定する始点、終点、中心点、半径rに関して、(始点-中心点)と(終点-中心点)かならず半径rである保障はあるの?
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGDirectX以前の問題だな。sinとcosを使った円の式はわかるか?
0725デフォルトの名無しさん
NGNG二次元配列を使うって書いてあるから2Dなのかとは思うが
0727デフォルトの名無しさん
NGNG>すいません数学が苦手なもので
(;´Д`)それじゃどうしようもないじゃないか
数Iの教科書から出直しましょう
0728デフォルトの名無しさん
NGNG>必ずしも半径rでなくてなはならいって事は無いです.
???
てことは↓もOK?
ttp://venus.aez.jp/uploda/dat/upload11609.jpg
0730デフォルトの名無しさん
NGNG>すいません逆です。半径rは必ずです。
いや、だから半径が必須だから、描画する曲線はかならずしも始点、終点を通る必要はないってことでしょ?
始点をA、中心点をO、半径をrとすると
ベクトルOAを正規化したベクトルをVとして
本当の始点 = V * r + O
同様に本当の終点を先に求める必要があるってことだよね?
0731721
NGNGはいそうです。
0732デフォルトの名無しさん
NGNG0733721
NGNGアドバイス下さった方ありがとうございますm(__)m
0734デフォルトの名無しさん
NGNGいやまあ、x^2 + y^2 = r^2からでも計算できるけどさ。
最近の学生ってこんなんばっかり????
0735デフォルトの名無しさん
NGNG721がどうしようもなく無勉強なだけ
0736デフォルトの名無しさん
NGNGじゃあ最初からそう書いてくれ
はっきりいってDirectX以前の問題
スレ違い
この課題をするにはあまりにも力が足りなさすぎる
だいたい突然この課題が出たわけじゃないだろ?
この課題につながるものをこれまでの授業でやってたはず
ついていけてなかったらこれを機に復習するなり先生に聞くなりしろ
個人的にはこれくらいできないなら、必須単位じゃないなら落として、もう受けるな
必須なら学校やめてしまえ、と思う
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG9bはもうダウンロードできない?
0739デフォルトの名無しさん
NGNGDLはできるのでは?
インスコはしらんけど
0740デフォルトの名無しさん
NGNGOSに決められてしまうのか…
さすがME
0741デフォルトの名無しさん
NGNGデバックで実行しようとしたのですが
error LNK1104: コンパイラは、ファイル 'dplay.lib' を開くことができません。
とエラーが出て実行できません。
環境は DiextX9.0 Visual Studio.NET 2003 OS: XP
ちゃんとDXSDK\Include DXSDK\Lib は入れてあります。
いろいろ調べてみたのですができないので教えていただけないでしょうか
0742デフォルトの名無しさん
NGNG>>ちゃんとDXSDK\Include DXSDK\Lib は入れてあります。
これをどういう意味で言ってるのか知らんが
設定をちゃんとしていないとか
調べが足りんとしか言えない
他のライブラリは問題ないのか?
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGデーター内のサーフェス(マテリアル)ごとにできる限り最適なシェーダーを組み合わせたいのですが
このままだとシェーダー数が簡単に1000個を超えてしまいそうで、メンテ不可能です。
どなたか良い方法を知りませんか??
ヘルプを読むとID3DXEffectCompilerでのリテラル指定をしての最適化が怪しいと思うのですが
ID3DXEffectCompiler自体がまったく理解できませんTT
0745デフォルトの名無しさん
NGNG.Xファイルなんて使いたくないっつーの。どういう構造してんだこれ。
0746デフォルトの名無しさん
NGNG大杉
本当に必要なシェーダに絞り込むべきじゃないか?
もしコマンドラインでコンパイルしているなら/Dオプションでマクロが設定できる
マクロとifdefを上手く使えば一つのシェーダのソースから複数のシェーダを生成できる
違うシェーダといっても部分的には他のシェーダと同じってのも多いはずだから
そういったのをまとめて、違う部分をifdefを使ってわける
最終的には1000個でも管理するソースは100個くらいですむかもしれない
その場合makeとかバッチファイルとか併用したほうがよさげだが
あとはあんまりやりたくないがif乱用
まぁでも本当に必要なシェーダに絞り込むのが現実的ぽ
0747デフォルトの名無しさん
NGNG電波の缶詰で前に見た気がする
のぞいてみれ
0748デフォルトの名無しさん
NGNGあー、あれね。うん、見た。
一通りググって出たサイトは見た。
でもSDKのSkinningMeshを使い回してるだけで、情報量としてはたいして多くないんだよね。
やっぱSkinningMeshを解読するしかないのか。
0749744
NGNG大変参考になります。
746さんの方法だとエフェクトとして使えるのでしょうか?
もしやFXCで複数のアセンブラソースを出力して、1つのエフェクトファイルにインクルード?
辛いけどやってみますTT
ifは使ってみたのですが、コンパイルすると分岐コードとして吐き出されず最悪の状態になりました。
たとえばボーンが0個とそれ以外(1〜4個)で1度だけ分岐させても、全て4個分のコードとして吐き出されました。
0750デフォルトの名無しさん
NGNG動的コンパイル時にD3DXMACROで分ける。
それとif文がうまくいかないのは
分嵯に使ってるフラグがリテラルじゃないからじゃないか?
0751744
NGNGこれまた参考になります。
やはり自分はEffectのヘルプの読み込みが不足しているみたいですね、
もっと読んで頑張ってみます。
0752デフォルトの名無しさん
NGNGそのBMPが拡大されるプログラムを作りたいんでダレカ優しい人教えてください
自分は拡大されたBMPが貼ってある新しいウィンドを開く方法でやっていmすが
m_BmpBtn1.LoadBitmaps(IDB_BITMAP○);
void ○○::OnButton1()
{
}
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNGマテリアル部分の話なのですが、Specular、Emissive、Powerはそのまま読み込めました。
詰まったのはXfile側にDWORD faceColorしかない箇所です。
これはD3DMATERIAL9::Diffuseと、D3DMATERIAL9::Ambientの
両方にfaceColor値を入れるだけで良いのでしょうか?
これだとなんだか、思った以上に明るくなってしまう気がします。
(といっても元の発色が不明瞭なのでなんとも言えないのですが)
かといってそれぞれを2で割ってみても暗すぎますし…どうするのが正しいのでしょうか。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG本屋にいって立ち読みしてコレいいかもって思った本がいいよ
いや、マヂで
解説がわかりやすいとか読みやすいとか個人差があるから、
自分の目でたしかめるのが一番いい
で最初は解説本をベースにしてやっていくと専門用語がでてきたりするから、
ネットではそういった専門用語をキーに詳しく調べていく
多分経験上これがいちばん効率がいい
0758デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGBy DirectX設計者
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG設計者さん、俺もそう思うからその単色の
セットの仕方を教えてくれインボーストリーム
( ゚Д゚)ハッ!!
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNGそうしたいのですが、この形式で何かをするとかではなくて
この形式を読めなければいけないというジョブでして。
ここまで回答が出ないとは思わなんだ_| ̄|○ <マイナー?
0765デフォルトの名無しさん
NGNG一度書いた線がずーっと残るっておかしいな
1フレームごとに画面をクリアしてるのに
なんで残ってるんだろう?
クリアされた後は線の描画は実行されないはずなんだけどな
あと、描いた線の色がまだらになったり、頂点の色は一緒だからグラデーションはかからないはずなんだけど
DirectX8の線の描画はなんか不思議な現象がよく起こるな
原因と解決法を教えてください
0766デフォルトの名無しさん
NGNG他人はエスパーだという妄想でもいだいているんだろうか?
0767デフォルトの名無しさん
NGNGソースはサイズが大きいので提示できないです
DirectX8で線を描くプログラムで
頂点を設定してD3DPT_LINELISTで線を引くという単純なものなんですけど
ラインで繋がれる頂点の色はすべて同じなのにラインが3等分されたようなグラデーションがつくんです
3等分された両端が頂点色で真ん中だけが他の色になるんです
0768デフォルトの名無しさん
NGNGまずはそれだけのための最小限のプログラムを作って試すこと。
0769デフォルトの名無しさん
NGNGどこをどう考えてもオマエのプログラムミス。
FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
どうせその程度。
自分のプログラムを100回疑ってからDirectXとドライバを疑え。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG地面の法線ベクトルはおそらく正しく求まっていると思うのですが、
これを使ってHPBの値を求めたいです。。
Bはそのままでいいと思うのですが、HPは一意に求まるんでしょか…
あたまがごっちゃになってきました。なるべく簡単な方法があればお願いします。
なにかDXでそれ用の関数とかあれば一番よいのですが。
0772デフォルトの名無しさん
NGNG最小限のプログラムを作って試したところ
ビットマップと線を重ならないように表示させたのですが
なぜか線の色とビットマップの色がブレンドされてるんですけど
おかしいですよね?
>>769
>FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
これはどうやって調べればいいんですか?
>>770
そうですねたぶんそうだと思うんですがなかなかどこが間違ってるのか見つからないです
0773デフォルトの名無しさん
NGNG>>FVF指定と構造体が一致してないとか、頂点バッファの大きさが不適切とか、
>これはどうやって調べればいいんですか?
どうしてこんな質問が出るんだ??????????
自分で作ったプログラムじゃないのか?
0774デフォルトの名無しさん
NGNGプログラムの解説ページのプログラムをいじってるので
へんないじり方はしてないのであってるとはおもうんですが
0775デフォルトの名無しさん
NGNGならソース見せてみろよ
0776デフォルトの名無しさん
NGNGD3DFVF_なんとかいうとこを検索しろ。
その近くに、構造体宣言があるはず。
それらに矛盾がないか、構造体の宣言順番に問題がないか。
0778デフォルトの名無しさん
NGNGへんないじり方してないからあってる
んなアフォな話があるか
0779777
NGNG600行近くありますがほとんどがウインドウ表示やDirectXの初期化とかです
灰色のビットマップと赤い線を重ならないように表示したのですが
線が灰色がかった赤で表示されます
重なってないのになんで色がブレンドされるのかわかりません
0780777
NGNG0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG色の違いがさっぱりわからんですが
0783782
NGNGしかし600行ってほとんどコメントなのね
0785デフォルトの名無しさん
NGNGgl_lpD3ddev->SetVertexShader(FVF_TLVERTEX);
ってなんなんだよw
gl_lpD3ddev->SetFVF(FVF_TLVERTEX);
の意?
0786785
NGNG0787777
NGNGプログラム解説のHPから拝借したので詳しくわかりませんw
調べてみたところ
頂点フォーマットを定義するには
IDirect3DDevice8::SetVertexShader() メソッドを使います
図を描画するには、まずこれを用いて頂点フォーマットを決定する必要があります
HRESULT SetVertexShader(DWORD Handle);
Handle には、頂点フォーマットのフラグを指定します
この引数には、以下の定数を組み合わせて指定することができます
だそうです
0789デフォルトの名無しさん
NGNG2Dの描画って頂点バッファつくってテクスチャ貼って表示するのが主流なんですか?
スプライトで表示するのって少数派?
0790デフォルトの名無しさん
NGNGスプライトに相当するものはもうないので、
それしか方法はない
D3DXSPRITE(だっけ?)のことを言ってるんなら
内部では結局頂点にテクスチャはってる
最初は練習の意味もかねて簡易スプライトクラスみたいのを作るといいと思う
最初は指定矩形に表示して、あとで回転とか移動とか拡大縮小とか、
マルチテクスチャとかシェーダとか、少しずつ機能を増やしていけば勉強になる
そのあとずっと使えるし
0791デフォルトの名無しさん
NGNG大抵の場合古き良きDirectDrawを使う
0792デフォルトの名無しさん
NGNGとりあえずDrawPrimitiveに移行してみます
挫折したらSDLでもやってみるか…
0793デフォルトの名無しさん
NGNGスプライトは仕様がコロコロ変わりそうで実際変わってるので
DirectDrawを使うのが当分いい具合。
0794デフォルトの名無しさん
NGNGこれを使うんですか?
それとも古いバージョンのDirectXを指してるんですか?
0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNG最新のSDKにもちゃんとddraw.h入ってるから使えるだろ
0797デフォルトの名無しさん
NGNGノヽノヽ
くく
(゚Д゚ ) !!
ノヽノヽ
くく
(゚Д゚ )
ノヽノヽ=3 プゥ
くく
直訳すれば
「直接引き分け」
つまりは勝ち負け無し 平和
リャンメン待ちってこった
0798デフォルトの名無しさん
NGNGg:\プログラム\sample\sample.cpp(5): fatal error C1083: include ファイルを開けません。'd3d9.h': No such file or directory
と出てしまったのですが、どうすればいいのでしょうか?
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNGそれをやったけど、エラーが出てしまうんです。
思い違いだったらすいません。
0801デフォルトの名無しさん
NGNG>それをやったけど
何をやったんだ?
0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGツール→オプション→Project→VC++ディレクトリ
ディレクトリを表示するプロジェクトでインクルードファイルを選びDXSDKのincludeディレクトリを追加
同様にライブラリファイルを選びDXSDKのlibでぃれくとりを追加
初心者本なり初心者向けサイトなら最初にやるべきこととしてあげられてるはず
ちゃんと読みなさい
あと
>それをやったけど
こういった他人に通じない抽象的すぎる言葉は極力避けなさい
具体的に書かないとわかりません
0804デフォルトの名無しさん
NGNGヘンなところは自分勝手に脳内変換解釈するのに
何でもないようなところは理解できない
例
脳内変換
・Cでプログラムしています -> C++でプログラムしています
("C"と言うと"C++"に勝手に置き換わるバカ)
日本語読めれば理解できる流れ
・「○○ができません」
『△△しろ』
「それはやってます」
『何をやってるんだ?』
(自分で振っといて「それ」の対象を理解できないチョン)
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNGみたいな感じ
0807デフォルトの名無しさん
NGNG「ヘッダとライブラリへのパスをとーしてねーんだよ!!氏ね!!カス!!」
と表示されるウイルスきぼん
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNGって人でもPC使ってて
>>ファイルを開けません。'd3d9.h': No such file or directory
こんな如何にもDirectX関係のファイルですって名前のファイルが
ありませんとか言われたら
インストールか設定に問題があることぐらい察しがつくと思うのだが
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG全然難しい英語じゃないのに
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGそろそろスレを移動する時期だ。
0814デフォルトの名無しさん
NGNG質問には>800で答えてる
0815デフォルトの名無しさん
NGNGここはDirectXの初心者質問スレであって
>>798のようなVC++初心者質問スレではない
0816デフォルトの名無しさん
NGNGメッシュを回転して表示するにはどうすればいいんでしょうか??
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGワールドトランスフォーム行列に回転行列をかける。
つまり、
ワールドトランスフォーム行列=回転行列*移動行列
とする。
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNGなんであんな仕様に?
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG>>822-823
#endif
0825デフォルトの名無しさん
NGNGD3DXCreateFontで作った後、
DrawTextを用いればよいのでしょうか?
0826デフォルトの名無しさん
NGNG頂点シェーダかSSEでマトリクスxベクトル書いてみれば分かる
0827デフォルトの名無しさん
NGNG変更のある部分だけ書き換えた方がいいのか
どっちがいいのでしょうか?
画面内でたくさんのキャラクターが動き回るようなことを想定しています
0828デフォルトの名無しさん
NGNGどうせZバッファクリアしなきゃいけないから漏れなら全部消す
多分速度的に問題が発生したら、そんなところよりも他で稼げるところがあるはず
どうしても60fpsキープする必要があって、ほんのあとちょっとで60fpsがキープできるのに
ってことになったら試してみる
0829デフォルトの名無しさん
NGNG変更のある部分だけなんて
やってられなくなると思うが
0830デフォルトの名無しさん
NGNGこんな想像力もないんじゃもうプログラマなんて辞めた方がいい。
どの道、この先何をやっても駄目。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG聞いた話では
ピクセルシェーダというのは本当に点を表示するだけであり
この点を表示する一連の行為自体をシェーディングと呼ぶ
というのですが
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG最近は初心者本でもシェーダまで取り扱ってるから
読みながらやっていったほうが早い
C++なんかに比べれば難しいものでもないし
ただし、ちゃんと対応したハードウェア上でやってくれ
最低でもげふぉ5200かな
0837デフォルトの名無しさん
NGNGあれはゲフォと読むのかジーフォースと読むのか
どっちなのか迷ったがゲフォの方がヒット件数があまりにも多いのでゲフォでいいのかとか
思ったがやっぱりジーフォースって読むような気がするんだよね。
っていうか、セミナーとか言ってみたひとに聞きたいんだけど
外人ってGeForceのことなんて読んでた?
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNGじゃあ、外国の人
つーか、そんなんどうでもいいよ。
俺はジャップでも甘んじて受けるぞ。
0840デフォルトの名無しさん
NGNG最近は名前ばかりが多く取り上げられているから
PixelShaderというと「キャラクターを描画すること」
しか思い浮かばないだろう
何のどういうプロセスを踏んで何を描画するのか
そういう作動方式と言うかそこまで伝わってないのが現状
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGシェーダってのは、各頂点・ピクセルで行われる計算
(頂点単位での法線とライトの内積計算とか、
ピクセル単位でのテクスチャと頂点カラーのブレンドとか)を
専用の言語で自分でプログラムすることだと思う。
これに対してハードウェア備え付けの計算機能を、固定機能…って言うかな。
元々はバンプマップとかのシェーディング(陰影づけ)のための
ものだったけど、今では陰影づけと関係ないこと
(頂点ブレンドとか輪郭抽出とか)にも使われるので、
"シェーダ"という単語の意味からは離れてる気がしないでもない。
(OpenGLでは頂点プログラム・フラグメントプログラムっていってた気がする。)
0843デフォルトの名無しさん
NGNGだって素人さんに説明するの難しいんだよなー
シェーダという言葉はシェーディング(陰影)からきている
そこから発展して今はGPUに対する処理手順記述するものになってる
処理手順を記述することからプログラマブルシェーダといわれてる
世代が進むごとに応用の範囲が広がり多種多様な目的で使われている
代表的な例としてはスキニング(3Dモデルの変形)に使用さてることかな
本来の意味であった陰影付けとはかけ離れた使い方だな
基本的なシェーディングを実装する場合の使い方は
頂点の2D(スクリーン)への座標変換、光源計算、マルチテクスチャの重ね合わせ
このうち「頂点の2Dへの座標変換、光源計算」までが頂点シェーダの役割
「光源計算(の結果の処理)、マルチテクスチャの重ね合わせ」がピクセルシェーダの役割
シェーダのバージョンが違うと何が違うかというと
まぁ一番の違いは記述できる手順の量(行数)が違う
記述できる手順の量(行数)がたくさんあるほど複雑なシェーディングが記述できるということになる
まぁ使える命令の種類が増えたりもするんだけどね
ちょっと素人さん用に強引な説明だが、まぁそんな感じ
0844デフォルトの名無しさん
NGNGほうほう。
シェーダについて少し調べた後なら、その説明はわかりやすいかも。
それにしても、プログラマブルシェーダはおもしろそうですな。
けど、バージョンごとで書き分け必要でめんどくさそうですな。
0845デフォルトの名無しさん
NGNGこういうのは下位互換が前提だからね
バージョン1.0のシェーダはバージョン2,0に対応したハードでも動く
逆はもちろん無理
これからは使用シェーダのバージョンで最低動作環境が決まってくるのかな
バージョン1.0のピクセルシェーダはもう書きたくない
行数少なすぎ
0846デフォルトの名無しさん
NGNG0847843
NGNGそう思ってカタカナというか専門用語は極力はずしたつもりなんだが…
これ以上は漏れには無理
ttp://www.microsoft.com/japan/msdn/directx/welcome/dsmsdn/directx01152001.asp
これよりはわかりやすいと思うが
0848デフォルトの名無しさん
NGNGあぁ、やっぱり1.0はつらいのか・・・かなり少なそうな気がしてたから分割するのかな?とか思ったよ。
>使用シェーダのバージョンで最低動作環境が決まってくるのかな
動作環境高くなりそうだねぇ・・・
0849デフォルトの名無しさん
NGNG上位互換と下位互換を混同するな。
0850デフォルトの名無しさん
NGNGいやただのネタです。
すみません。
0851デフォルトの名無しさん
NGNG上位互換
http://e-words.jp/w/E4B88AE4BD8DE4BA92E68F9B.html
下位互換
http://e-words.jp/w/E4B88BE4BD8DE4BA92E68F9B.html
0852デフォルトの名無しさん
NGNGこれで覚えろ
DirectXやピクセルシェーダーも同じく
下位互換はレアなのだよ
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNGHLSL使えても
バージョン無視で何でもアセンブル通ると思ってる?
マイクロソフトの開発チームにバリバリ頑張って貰わないとなぁ
0855デフォルトの名無しさん
NGNGとりあえず1.1でやってるけど一通りのことはできるからね。
バンプ、環境、影、スキン、αブレンドなどやその他もろもろとかそれだけかよって感じだけど
これだって他のシェーダ同士の組み合わせとかモデリングツールからもってきたり
デザイナに足りないところを設定してもらったりしても結構面倒な作業だよ。
あと、バージョンが増えてもライトがいくつ使えるかってところだけで
他にはなんもないよ。(俺にとっては)
0856デフォルトの名無しさん
NGNG俺の中ではPS1.xは無かったことになってるよ。
こんなもんに対応する為に悩むなんて時間の無駄。
0857デフォルトの名無しさん
NGNGする必要があるのですが、これをスマートに実装する方法はあるのでしょうか。
今はまず、通常は普通に描画してしまっています。
そして当たり判定が必要なときのみ、対象のモデルのメッシュを全て自前で
スキニングし、そのスキニング後の頂点座標を自前バッファに取って、それで判定してます。
「正確な」(全面に判定が必要で…)ということで、こういう泥臭い方法になってしまっています。
残念ながらこれは、判定の頻度や、対象の数が増えるにつれ、もったりしてきてしまいました。
いっそ最初から、通常描画も全てソフトウェアスキニングにしてしまおうか迷っています。
なんとかハード側がスキニングしてくれた後の頂点座標データにアクセスできないでしょうか。
0858デフォルトの名無しさん
NGNGそれって要約すると
描画でスキニングして、なおかつ当たりが発生したら
変換前の頂点を自前でスキニングさせて、その座標で当たり取ってるって事だろ。
二重にスキニング計算してるって…
これを分ってても分ってなくとも致命的な発想の欠陥だよ(プログラマ向いてないよ)
推測でのアドバイスになるが
D3DXでしかモデルを扱えないレベルで
D3DXのモデル系の操作関数を深く知らないなら
D3DXは色々な操作をする時に足枷にしかならないと思う。
そう言う状況なら自前でオプティマイズした処理の方が良いと思うけど…
(理論的には頂点バッファでDrawしてるんだから、
D3DX使ってても頂点バッファを取得、アクセスできる筈、いっちょ調べようってならないかなぁ…)
それと、当たりの”正確な”って意味にもよるが
普通は当たり用の別な形を用意するんじゃない。
例えば人物の二の腕、腕、拳とカプセル体を仕込んでおいでスキンニングと同じ変形をかければ、
そのカプセル体との当たり判定で大体正確な当たりになると思うけど…
処理の理由でモデルと同じポリゴンじゃなきゃ駄目ってなら、素直に当たり取るしかない。
ただ全判定なんてアホな事は当然してないよね?
オクトツリーなりで空間分割してって当然だよね。
0859857
NGNG二重についてですが、今は描画時のスキニングをHLSLで任せているんです。
あくまで描画の頻度に比べてですが、当たり判定の頻度が少ないので、こういう処理にしていました。
となると二重にならず、なおかつスキニングをソフトウェア側でやらずに済む
方法があるのでしょうか?是非是非ご教授を…。
例えば描画時の処理を固定に変えてでも良いので、どこかにハード側が
スキニングしてくれた後の頂点座標が用意されていれば…。
D3DXは使って無いんです。それでもUpdateSkinnedMeshは試し、変換後のバッファを
取得してみましたが、これだと自前と大差無いどころか、融通が効かないのと初期化分駄目でした。
オクトツリーというか、モデルなのでBoundingBoxは作成しています。
0860デフォルトの名無しさん
NGNG> これを分ってても分ってなくとも致命的な発想の欠陥だよ(プログラマ向いてないよ)
オレも知りたい
ここまで言い切ってるとナンカ気になる
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGどのようにをプログラムを作ったらよいかどなたか教えてください。
・分かってる点、始点(X1,Y1)中点(X2、Y2)終点(X3,Y3)です。
円弧は円のみではなく始点から始まって終点まで描画する円弧も作成できるようにしたいです。
・(X-X0)^2+(Y-Y0)^2=r^2の式を使って連立方程式を立て中心(X0,Y0)と半径rを求めたいです。
0863デフォルトの名無しさん
NGNG円はそれだと始点=終点で2点しか出来ないから無理
0864862
NGNGじゃあどうしたらよいのでしょうか?
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNG0867862
NGNG0868デフォルトの名無しさん
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
0870862
NGNG0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGここで聞き給へ
http://pc5.2ch.net/test/read.cgi/tech/1100530682/
0873862
NGNGありがとうございます。
0874デフォルトの名無しさん
NGNGそれともmidi関連のマルチメディアAPIなどを使っているのでしょうか。
DirectXAudio を、サンプルを見ながら何とか使ってみてはいるのですが
まず再生までの手続きが複雑で気が滅入ります…w
1曲のロード時間も長く、また描画にかなりマシンパワーをとられて
しまっているので、曲を再生すると相当な負荷がかかってしまいます。
この際、音質の良し悪しはあまり重要視していませんので、
この辺を軽くする設定はありますか?
0875デフォルトの名無しさん
NGNGどこに切り替えるかはユーザに選ばせればいい。
0876デフォルトの名無しさん
NGNGなるほど、このへんですかね…
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そのプログラムでシェーダをロードしている場所があれば使用しているシェーダが読み込めるようにしてください
不具合が出ても自力で解決できないようなものは組み込むべきではないと思います
0881デフォルトの名無しさん
NGNG前半のアドバイスの意味はわからんけど。
ただ、正確な判定が欲しいなら必要な時のみソフトウェアで頂点変換するのが速いかと。
0882857
NGNG今時面レベルでの当たり判定というのは珍しくなさそうですが、
やはり「ソフトウェアで頂点変換」の部分はどこもあるんですかねぇ…
しょうがないので気が重いですが最後の手段、プログラム側で作ってた
判定オブジェクトを手動にしてもう少し頑張ってみます…お付き合いありがとうございました
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG物体を移動させる時の事を想像して欲しいのですが、
パースビューでは(視点の位置に関わらず)、
マウスを左ボタンドラグで「上・下」に動かすと
物体が「奥・手前(Y座標は固定)」に動くし、
「左・右」に動かせば「左・右」に動きますよね。
マウスの動きを入れた2次元ベクトル(スクリーン座標)を
どうやって変換したらそのような動きを再現できるでしょうか。
イメージとしてはモニターの平面を、ワールド空間のxz平面に倒すような感じで
投影(?)射影(?)すればよいと思うのですが、
どのように座標変換したらよいか教えてください。
0885デフォルトの名無しさん
NGNGカメラから見た左右に動くということ?
じゃカメラの向きのベクトルとアップベクトルがあればカメラから見た横方向のベクトルは作れるので
マウスの左右の移動量と横方向のベクトルを使って移動ベクトルを作ればいいだけでは?
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNG>カメラから見た左右に動くということ?
そうです。そして(884では少し言葉が足らなかったかもしれません)
カメラがワールド空間のXZ平面に対し平行に近い状態で
マウスを上下に動かすと、物体はカメラから見て奥・手前に動き、
カメラがワールド空間のXZ平面に対し垂直に見下ろしたような状態で、
マウスを上下左右に動かすと、物体はマウスについてくるように動きます。
ワールド空間上でのY座標方向には、どんな視点の場合でも動きません。
とりあえずマウスのスクリーン座標をD3DXVec3Unprojectで
逆変換してベクトルを作ってみたんですが、これでは当然、
カメラ(視線)がワールド空間上でXZ平面に対し平行に近い場合、
マウスを上下に動かしても、物体はカメラから見た奥・手前方向にはよく動きませんでした。
(横方向には動きますが。)
0889デフォルトの名無しさん
NGNG俺は一つ大人になったと思う。
0890デフォルトの名無しさん
NGNGそれだと視線が水平に近い時、奥や手前に進んでくれなそうな気が。。。
>>889
むしろヒントになるような事なら煽って欲しいんですけど。
0891デフォルトの名無しさん
NGNGz+=y;y=0.0fでよさそうでない? 試してないけど。
0893デフォルトの名無しさん
NGNGとりあえずやり方がわかんないなら、縦はカメラから視点までベクトル使って
横はカメラから視点までベクトルと(0, 1, 0)のベクトルの外積で求まるベクトル使ってしのいだら?
一番簡単な方法だし
0894884
NGNGそれだと視線がワールド座標のXZ平面に大して垂直に近づくほど
動かせなくなっていくと思うのですが、、、
0895デフォルトの名無しさん
NGNGXZ平面に垂直だろうが、水平だろうがカメラに向かって奥か手前に動くと思うんだけど?
y成分を0にしたりしないよ
0896884
NGNGどんな視点、視線の時も、左ドラグでワールド座標のXZ平面に平行に動くようにしたい、
(Yの位置は現在のままで。)ということです。
0897デフォルトの名無しさん
NGNG0898884
NGNG要はこんな単純な事が言いたかったのです。説明下手でした。
マウスを画面で上下左右に動かした時、矢印の方向に動きます。
(実際は合成で斜めにも自由に動きますが。)
http://gamdev.org/up/img/1949.jpg
http://gamdev.org/up/img/1948.jpg
0899デフォルトの名無しさん
NGNG常に一定の移動量を保てばいいだけかな?
0900899
NGNGアップベクトルをきちんとしてないとジンバルロックが起きるから垂直にはできない
もしアップベクトルをきちんとしているなら垂直のときにはアップベクトルが使える
0901デフォルトの名無しさん
NGNG別に難しいことじゃないじゃん
0902デフォルトの名無しさん
NGNG初心者スレだからこれくらいはいいんじゃないの?
宿題はカンベンだけど
0903デフォルトの名無しさん
NGNG気になって夜しか眠れない
0904884
NGNGこれから試してみてまた報告に来ます。
ひとまずありがとうございました。
0905デフォルトの名無しさん
NGNG>気になって夜しか眠れない
漏れ以外にもこのネタ使う香具師がいるのかw
一瞬、あれこんなレスしたっけ?と思ってしまったw
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGマウスが縦横に動いたら、視点をオブジェの周りで縦横に旋回させるだけでは?
0908デフォルトの名無しさん
NGNG>884のこと?
君がいってるのはカメラの操作で
>884が言ってるのはオブジェクトの移動だよ
0909デフォルトの名無しさん
NGNGなるほど、では言い直そう。
なんでベクトルの話が出てくるのがわからん。
マウスが縦横に動いたら、オブジェをZYに移動させるだけでは?
0910デフォルトの名無しさん
NGNGこういうの出来ない奴って座標変換がまったくわかってねぇんだよな。
現役プリ☆グラマの俺様が指導してやる
・ワールド座標からスクリーン座標への座標の変換。
・ワールド座標からスクリーン座標へのベクトルの変換。(言っててはずかしいぜw)
・スクリーン座標からワールド座標への座標の変換。
・スクリーン座標からワールド座標へのベクトルの変換。(笑)
・ローカル座標からワールド座標への座標の変換。
・ローカル座標からワールド座標へのベクトルの変換。(笑)
・ワールド座標からローカル座標への座標の変換。
・ワールド座標からローカル座標への座標の変換。(笑)
・ローカル座標から別のローカル座標への座標の変換。
・ローカル座標から別のローカル座標へのベクトルの変換。(笑)
面倒臭くなってきたw以下省略形でw
・ワールド座標からカメラ座標へ変換。座標・ベクトル。
・ローカル座標からカメラ座標へ変換。座標・ベクトル。
・カメラ座標からローカル座標へ変換。座標・ベクトル。
・カメラ座標からワールド座標へ変換。座標・ベクトル。
っと、まあ、挙げればきりがないがこんなところか?
0911デフォルトの名無しさん
NGNGワ
ワ
ス
ス
ロ
ロ
ワ
マ
ン
コ
不
ド
ウ
サ
ン
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でもわかって無い奴多いだろ。
これができなきゃ売り物になるような3Dゲームなんか作れないのに。
それどころか初級シェーダもかけられない。
>>884みたいなのができないなんて座標変換がわかって無い証拠だろ。
やれz軸がどうだとかy軸がどうだとか関係ねぇんだよ。
座標変換がわかってねぇんだよ。
微妙な計算なんてひとっつもでてこないよ。
なのに全然的外れなレスがあるし。ちょっと質問に答える側もレベル低くなってねぇか?
0917デフォルトの名無しさん
NGNGというか三角関数わかれば分かるはずなんだけどな
0918デフォルトの名無しさん
NGNG早速質問なのですが、よくオンラインのMMORPG等のインターフェースにある、
マウスでドラッグすると動く内部の小ウィンドウ(ステータスとかスキルとか表示してる・・・)って
どんな風に実装されているんでしょうか・・・。教えてください。
現況はCreateWindowでウィンドウを作り、DirectX関連を初期化し、一応基本描画処理などが揃った状態です。
C/C++はそこそこなんですけど、DirectXはまだサンプルの理解やちょっとした派生程度のレベルなので
その辺の処理は詳しくお願いいたします。
0919デフォルトの名無しさん
NGNG良く知らないけどそれってWin32APIのウィンドウっぽい?
ならツールウィンドウじゃねぇの?
WS_EX_TOOLWINDOW
で出来る奴。
VC6の奴だったらツールバーのおかしな奴だっけ?
(こっちはフォーカスを失ってもバーが青いまま。バグだろw)
0920デフォルトの名無しさん
NGNGC/C++そこそこ
なんて話を漏れは信じないぞ
0921デフォルトの名無しさん
NGNGC/C++はそこそこでWin32はアレなんだろ。
0922デフォルトの名無しさん
NGNGそれは自分も聞きたいですねぇ。
APIのウィンドウとか標準のコントロール貼り付けるとかでもなくて、
多分カスタムドロー使ってるだけとかでもなくて、
描画からウィンドウ管理から全部自分でやってるんですよね。。。
とりあえず2D画像のパーツを組み合わせて窓枠を作り、それを表示させてみたい、
けど3D画面に2Dを合成するやり方が分からない。
0923デフォルトの名無しさん
NGNG>描画からウィンドウ管理から全部自分でやってるんですよね。。。
さらに難易度下がるんだけどw
Win32のご機嫌とるよりよっぽど楽だよ。
0924デフォルトの名無しさん
NGNGとりあえず2D画像のパーツを組み合わせて窓枠を作り、それを表示させてみたい、
けど3D画面に2Dを合成するやり方が分からない。
なので、まずここからどんな感じの方法があるのか教えて欲しいのですが。
窓枠を表示する方法・・・
0925デフォルトの名無しさん
NGNGDirectX8以降なら、ID3DXSpriteを使うか、
TLVertexを使って窓枠とやらのテクスチャを表示すれば簡単に出来るかと。
DirectXを使った市販ゲームで、ゲーム中のメニューに
コモンコントロールを使っているのはほとんど無い(SLG辺りで少しあったかな)。
Spyで覗いてみると良いよ。
0926デフォルトの名無しさん
NGNGそうするのがメジャーなんですかね?
裏画面で2D画像から読み込んだウィンドウのパーツを配置・組み合わせたりして
ウィンドウの外観を2Dで完成させてから、それを
表画面にアルファ付きで転送、みたいなのってDXではできないんですか?
0927デフォルトの名無しさん
NGNGここの回答者も>884もその程度の事は分かってるだろ。
わざわざ座標変換の話を持ち出すまでもない。
今のところレベルが低いのはお前だけだ。
>>926
> ポリゴンにテクスチャ貼るのって(3D変換しないとはいえ)物凄く面倒そうなんですが・・・
どこが面倒なのかが分からん。
> 裏画面で2D画像から読み込んだ 〜 DXではできないんですか?
出来る。
0928デフォルトの名無しさん
NGNG変換済みポリゴン使う場合は
FVF定義してとか手続きが面倒くさそうだし
例えばウィンドウの中にボタン一個配置するだけのために
もう一枚ポリゴン作ったりUV操作したりしなきゃならなそうで。
ならば2DRPGのマップを作るような要領で
裏画面で画像から読み込んだパーツ(タイトルバーとか、ボタンとか)を配置してウィンドウの外観を作り、
それを表に転送することができればそっちの方が簡単そうじゃないですか?
>出来る。
ぜひともその方法を教えてください。
0929デフォルトの名無しさん
NGNG自前でテクスチャを貼る際はUV座標で管理してるわけじゃない。
(最初からUVで管理してる奴もいるかもしれんが・・・)
使用する直前でUV座標に変換してやればいいだけだ。
細かい計算は省略するが、
FLOAT u,v;
u = 画像上の任意のX座標 / 画像の幅;
v = 画像上の任意のY座標 / 画像の高さ;
> ウィンドウの中にボタン一個配置する・・・
C++がそこそこ出来るんならクラスも作れるんだろ?
Win32のウィンドウシステムをクラスを使ってエミュレートしてみれ。
とりあえず階層構造(親子関係)と描画機能があればいいんだが、
階層構造が必要なければ描画機能だけ実装すればいい。
> 裏画面で画像から読み込んだパーツ(タイトルバーとか、ボタンとか)を配置してウィンドウの外観を作り・・・
レンダリング可能なテクスチャを用意する方法があるが、
どちらにしても板ポリを使って描くんだから余計面倒なだけだろ。
DirectDrawでも使うか?
0930デフォルトの名無しさん
NGNGそこが分からないんですが、
GDIのみで2DRPG作るときみたいな要領で、裏バッファに2Dビットマップを持たせて
そこで画像を組み合わせたりする事は出来るけど、
それをそのままフロントバッファの3D画面に転送したり合成する事までは出来なくて
結局は変換済みポリゴンに対してテクスチャとして貼らなきゃいけない。
ってことですか?よく分からなくなってきました。
とりあえず変換済みポリゴンを表示するところから始めてみよう…
0931デフォルトの名無しさん
NGNGおまえら良く付き合いますね
0932922
NGNGいやだってまだ話し終わってないし…
バージョンは9.0bであります。
バージョン関係ないような話だと思ったものでごめんなさい。
ちなみに私は918の方とは別人です。
0933デフォルトの名無しさん
NGNG>けど3D画面に2Dを合成するやり方が分からない。
もう、このへんでこいつ相手にしたら負けかなって思ったw
0934デフォルトの名無しさん
NGNG質問者はまず環境を書くこと。
環境がマズくてうまくいかない事もある。
DirectXスレなんだから、最低でもバージョンくらいは書いとけよ。
(技術的に)どの程度の事が出来るかも添えておけば更によし。
回答者はそれを考慮して答える。
0935デフォルトの名無しさん
NGNG0936934
NGNG【 質問する香具師 】
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0937922
NGNG今回の質問内容が分かるような章はなかったような…
c++でコモンコントロールを真似て
処理や動作をクラス化したりというのは何とかできそうなので、
引っかかっているのはそれをどうやってDXで描画するかという部分です。
0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGチュートリアルにもろにそれぞれの座標の設定の仕方が載っているのに、
> 今回の質問内容が分かるような章はなかったような…
それはやったとは言わない。
もう一度きっちりやり直せ。
0940デフォルトの名無しさん
NGNG一通り目を通しても別に大した時間かからないし、
こんなところでくだらない質問することもなくなるから
一度読んじゃったほうがいいよ。
もちろん細かいところは省きながら。
0941デフォルトの名無しさん
NGNGこんなスレには来な・・・ うわっ何をすあwせdrftgyふじこl
0942922
NGNG・変換済みポリゴンを使ってテクスチャを貼る方法は分かりますが、
ウィンドウ内の部品(ボタンなど)ごとにポリゴンを作らなきゃならないのでしょうか?
ポリゴンで作るとなると、ウィンドウの大きさを変えるだけでVBロックしたり、とか
そんなことをしなきゃならないのでしょうか?
・GDIのみで2DRPG作るときのような要領で、裏バッファに2Dビットマップを持たせ、
そこで画像パーツを組み合わせたりしてウィンドウの外観を作り、
それをそのまま(ポリゴンに貼ったりせずに)フロントバッファの3D画面に
転送したり合成する事はできないのでしょうか?
・もしくは裏バッファを作ってそこで画像を組み合わせたりとかは出来るけど、
単純にそれを転送して3D画面に合成する事は出来ないので
結局ポリゴンにテクスチャとして貼る事になる、ということでしょうか?
・というか皆さんはどんな風に作ってるんでしょうか?
0943デフォルトの名無しさん
NGNGそれを勉強してわからなかったことを質問するんだろ?
0944デフォルトの名無しさん
NGNG>というか皆さんはどんな風に作ってるんでしょうか?
俺だったらモデリングツールで作ったモデルロードして終わりw
ボタンとかくっつけるの楽でしょ?アニメーションもくっつけられるし。
つーかゲームで出すモデルってのはデザイナが頻繁に変更かけるから
プログラムを実行させないとみられないもの(プログラム内で頂点を設定する等)は
できるだけつくっちゃ駄目。
0945デフォルトの名無しさん
NGNGボタンやコントロールの位置・テクスチャが動的に変わる場合には
どう対応するんだ?
0946デフォルトの名無しさん
NGNGそのときどきで方法は変わるけど別に
設定ファイルを作ってそれを読み込んで終わり。
モデルファイルに直接データを埋め込んだこともある。
ボタンやコントロールの位置が変わるのは頭使えばなんとかなるでしょ?
パターンが少ないなら全部用意しちゃってもいいし、
法則があるならちょっと設定ファイルをつけてやるぐらいで対応できるでしょ?
悩むもんじゃない。
テクスチャが動的に変わるなんてゲームじゃしょっちゅうあることだからすでに対応済み。
0947デフォルトの名無しさん
NGNG設定ファイルの動作を見れないというわけか。
まあ、その時はその時だな。
0948デフォルトの名無しさん
NGNG四隅の座標指定してBitBltで貼るのと
四隅の頂点指定してDrawPrimitiveするのとなにがそんなに違うんだ
用途によって適した方を使い分ければいいだけ
0949デフォルトの名無しさん
NGNG最初から用意されていれば、内部で何をやっているかすら考えずに使うくせに、
用意されていないと動作の違いについてグチグチグチグチ言い続ける。
そんな奴が何故プログラムを組むのかわけ分からん。
0950デフォルトの名無しさん
NGNG>ウィンドウ内の部品(ボタンなど)ごとにポリゴンを作らなきゃならないのでしょうか?
>・GDIのみで2DRPG作るときのような要領で、裏バッファに2Dビットマップを持たせ、
>そこで画像パーツを組み合わせたりしてウィンドウの外観を作り、
この2つがやってること同じとしか思えない漏れに誰か解説してくれ。
(後者は1パス余計なところ以外で)
0951デフォルトの名無しさん
NGNG毎度ポリゴン作るのが嫌だと仰っておられる。.
もうね、アh
0952918
NGNG918以降返信するのはこれが初めてですので。
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そんな事書くくらいならお前が一発で納得させて質問者を黙らせるようなレスすりゃ済む話。
0954デフォルトの名無しさん
NGNG黙らせるようなレスだよ
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG隊長!正直このスレのせいで、伝統の鬱だ氏のうスレが瀕死です
0957デフォルトの名無しさん
NGNG>>942じゃなくて>>955
0958HDSL ◆aoV/Y6e0aY
NGNG>技術情報交換&雑談するためのスレッド。
>初心者用相談室では扱わないような少し高度な話題も受け持つ。
鬱だ(rは趣旨としては情報交換がメインだからね
質問スレがあったほうがどっちも荒れないでいいと思う
誰も立てないなら立てます
0959HDSL ◆aoV/Y6e0aY
NGNG>975あたりをゲットした人が立てるのがタイミング的によさそう
>975よろしく
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG昔を思い出すと確かに寂しいな
0962デフォルトの名無しさん
NGNGテクスチャアニメーションにしても
UVアニメーションにしてもモデリングソフトでサポートしてるからそんなことはない。
0963デフォルトの名無しさん
NGNG>DirectXはまだサンプルの理解やちょっとした派生程度のレベル
>>952で
>当方はDirectX 9.0cと、VC++6です。
って言ってるが、サンプルって
ワザワザ自分の環境用にプロジェクトなりフレームワークなり作り直してる?
それともコード眺めてってレベル?
なんかなぁ…
0964デフォルトの名無しさん
NGNG(0,0,-1)にいるとして、90度以上回転すると
カメラの上下が反転してしまうので
上方ベクトルもカメラにかける行列と同じ行列をかけて回転させているのですが
それでも90度以上回転させると上下が逆になってしまいます
何か考え方か上方ベクトルの認識が間違ってますでしょうか?
0965デフォルトの名無しさん
NGNG普通に振り向けよ。
0966デフォルトの名無しさん
NGNGいえ、なんというか
その上下逆さまになった状態をカメラに写したいので
上方ベクトルも回転させているのですが
逆さまに写ってくれないのです
0967デフォルトの名無しさん
NGNGもしそうなら、致命的な勘違いをしているので、
この手の関数に頼らず自分で計算しろ。
0968デフォルトの名無しさん
NGNG別に間違えていない
間違えてるなら具体的に何が間違えてるかちゃんと書け
ろくな状況説明のない質問厨と同じレベル
>966
上方ベクトルの出し方がおかしいんじゃないか?
そこを見直したほうがいいと思う
0969デフォルトの名無しさん
NGNG恩師からどう教わったかでケンカが始まるもの。
ガチガチの学校出、先生から懇切丁寧に教えてもらわないと
プログラムひとつすらもできなかったアホはホントにケンカ好き。
0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNGここのサンプルで、
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' の宣言を確認してください。
ログのベタハリで、スイマセン
0972918
NGNGもちろん、新規にプロジェクト作成して、一文一文を噛み砕きつつ…です。
わかんない処理は時にはググったり。
ところで>>952の方法1を試してみたんですが、
ウィンドウ(WS_EX_APPWINDOW)とその子ウィンドウ(WS_EX_TOOLWINDOW)の2つがあるとき、
子ウィンドウを親ウィンドウの領域内に納めたいのですが、
そういうコードなどは用意されていないんでしょうか。
親からの座標データを下に計算・・・なんですかねぇ。
0973デフォルトの名無しさん
NGNG0974966
NGNGビュー行列はD3DXMatrixLookAtLHで作っていますが
上方ベクトルが変わると正しく動かないんでしょうか?
>>968
実際のプログラムでもカメラはZ軸上にあるので
上方ベクトルは(0.1.0)にしてあって
カメラ座標にかけるX軸中心の回転行列を上方ベクトルにかけてるのですが
カメラのZ座標が0を通る瞬間にやっぱり上下反転してしまいます
余計な部分を省いたこの部分のみのプログラムにしても状況が変わらず
なので、何か勘違いしてる所があるのかなと思ったのですが
0975デフォルトの名無しさん
NGNG何故部分的に使用して問題を引き起こそうとするのか。
0976デフォルトの名無しさん
NGNG視線ベクトルと上方ベクトルが一致する瞬間があるんじゃないか?
ちょっと簡単にソース書いてくれ。
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の直後にでもつっこんでデバッガでみれ
0980966
NGNGAngleは回転の角度
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デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGttp://up.satoweb.net/img100/880.gif
そこはそのままでも得たい結果はえられるっぽい
>981根本的に間違ってるのに
この結果がでたことを説明してくれ
0983デフォルトの名無しさん
NGNGうざい。具体的なヒントなり解決法を書かないなら何もか書かないでくれていい。
上手くいかないのは勘違いしてるから上手くいってないんだから当たり前だ。
質問が流れて質問も解答もピントがずれてくる。双方にとって不幸。
0984デフォルトの名無しさん
NGNG一回のBeginScene〜EndSceneの間に、何度もD3DTS_VIEWやD3DTS_PROJECTIONを
設定してカメラを別位置にしたり透視投影と平行投影を画面に同時だししたりって
いうことができるって、わかってないんじゃないかなと思った。
MFC+DirectXでプログラム覚えたヤツって融通が利かないのか?
0985デフォルトの名無しさん
NGNGどのレスに対するレスなのかレス番を示してくれないとわからないんだが
0986デフォルトの名無しさん
NGNGスマソ。918あたりへのレスだった。
ステータスウィンドウをWindowsのウィンドウで描画しようとするあたりが
毒されてるなあと思ったんだよ。
ステータスウィンドウなんて、Orthoで自前で書いちゃえばいいじゃん、と
思ったワケ。で、もしかするとPerspectiveで描画したあとOrthoで描画って
いう発想に至れないんじゃないのかなって勘ぐったのさ。
0987デフォルトの名無しさん
NGNG#include <ddraw.h>
DDPIXELFORMAT pixel; //インクルードした行の真下
このように書いたんですけど、
'DDPIXELFORMAT':識別名を宣言するのに、型が指定されていません。
等のDDPIXELFORMATがあたかも宣言されてないという感じのエラー
がたっぷり(大袈裟)出ました。他にも同ファイル内で引数に使っている型(サーフェイス等DirectDraw関連)なども認識できないようです。
ddraw.hがインクルードされてないような振る舞い。
エラー発生場所をコメントにしたらコンパイルできました。
考えられる原因は何なんでしょうか。。。
0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNGもちろんで。
0990デフォルトの名無しさん
NGNGパスが通っていないとか?
0991デフォルトの名無しさん
NGNGスレ立てヨロ
0992デフォルトの名無しさん
NGNGバージョン定数の定義は?
0993デフォルトの名無しさん
NGNG1. 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デフォルトの名無しさん
NGNG0995987(=989,993)
NGNGオチですか。
でも、DIRECTDRAW_VERSIONとDIRECT3D_VERSION
二つ別々にあるから大丈夫なのではないでしょうか。(小声で...)
0996デフォルトの名無しさん
NGNG0997987
NGNGDirect3Dが元にあってそこからDirectDrawに改良を
試みたんですが。。。
御迷惑掛けました。一からやり直します。
>>988 >>990 >>992 >>995
ありがとうございました。
0998デフォルトの名無しさん
NGNG>997
これをコンパイルしてみろ
DDの初期化だけのヤツ
リンクの設定もいらんから
パスが通っていたらビルドできるはず
うちではできた
0999デフォルトの名無しさん
NGNG10001000=999=998
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。