くだすれDirectX(超初心者用) part.3
1 :
デフォルトの名無しさん :
2007/10/29(月) 06:05:00
2
前スレ終わりの奴らは、次スレも立ってないのに平気で埋め立てるなよ。
まあ別に困るまいよ
5 :
デフォルトの名無しさん :2007/10/29(月) 12:57:46
超初心者なので、変なことをいっていたらすみません。 DirectXSDKのMeshViewerだけを入手したいんですが、どうしたらよいですか? 私がダウンロードしたSDKには付いていなかったのですが・・。
どれをダウンロードしたんだ?
7 :
デフォルトの名無しさん :2007/10/29(月) 14:26:32
binに入っている別プログラムで代用できるがそれじゃダメなのか?
9 :
デフォルトの名無しさん :2007/10/29(月) 15:26:21
>>8 Xファイルのバイナリ圧縮をしたいんですが・・。
IDirectXFileでファイルを読み込んでバイナリ圧縮を指定してそのまま保存。 データを加工するわけではないので簡単に書ける。
11 :
デフォルトの名無しさん :2007/10/29(月) 20:23:23
環境はVisualStudio2005のVisualC++、 SDKとしてwin32API&DirectXで アプリケーションを作ったんですが、 このアプリケーションをWebに対応させることって可能ですか? Web上でこのアプリケーションを起動できるような簡単な方法ってありますか? できれば、アプリ自体のソースはあまり書き換えたくないんですが・・・。
win2kで使えるSDKの最新版はどれでしょう
>>11 WEB上で起動の意味がわからん。
Flashみたいにブラウザでプレイできるゲームとか考えてるわけじゃあるまいな。
ダウンロードから実行まで勝手に行うActiveXを作って、 セキュリティーホールの塊のようなそのコンポーネントを利用者に組み込ませる。
VisualStudioでのシェーダファイルのシンタックスハイライトする設定がどこか、だれかご存知ないですか? 3台のPCにVS2008とVS2005入れてるんですが2008は全滅で、 2005は一台だけなぜかC++っぽくハイライトされるのですが… 特にアドインとか入れたわけでもないのに。
ポリゴンのフチがギザギザなのでアンチェリかけたいんですけど、お手軽そうな方法として 大きいテクスチャに描画してそれをバイリニアとかで縮小して画面に描画ってのを考えたんですけど、 やっぱりピクセルシェーダでやったほうが綺麗&高速だったりするんでしょうか?
やってみればどっちが早いかわかる。
新スレたってたのか 正直もういらんかと思ったが
Direct3Dに深入りしたくなかったのでD3DXSprite等を使ってプログラムを組んでいる者です。 取り敢えず、任意の画像データを回転・拡縮させつつ指定した座標に表示させるところまでは出来たのですが、 ヒットテストをしようとしたところで何をどうすればよいのか判らず途方に暮れています(>< どなたかヒントを下さい・・・・
それはDirectX関係なくね
>>20 即レスありがとうございます。
そういう問題なのですね・・・。なんとなく自分で思い付いたのは、表示しないサーフェイスに
単色で塗りつぶしたスプライトをスプライト毎に色を変えて描画し、変換したマウス座標でピックして判断する、
という方法なのですが馬鹿馬鹿しく重い気がして・・・というか普通そんなことしないのでしょうか。
しない
Dirext3Dに深入りしたくないなら、MDXやWPF、XNAやればいいだろうw
もうWinGLでいいだろ
>>21 は何が言いたいんだ?
ピクセル単位で当たり判定とりたいとかそういう話?
むおお用語間違ってました、ヒットテストじゃないですorz オンカーソルというかマウスカーソルが載ってるスプライトを知りたいのです。 回転拡縮の演算をスプライトのRECTに対して行うだけだと スプライトの透明な部分がヒットするのを除外出来ないので どうすればいいのかと・・・・
メモリー上に自分で展開して確認。 最初に大まかな座標をチェックしてそれから細かく調べるようにすれば、それほど負荷はかからない。
その他、元イメージまでの位置を逆算して、そのポイントの状態を調べることも可能。 計算とイメージの状態を調べるだけだから、Direct3Dに深入りすることもない。
まぁ正確な判定が必須出ない限りは普通は図形の組み合わせで近似するよな。
そかー、スプライト毎にしてる座標変換の逆変換をマウス座標に掛けて それぞれの元データ上のドットをチェックすればいいのですね。 そのくらいさっくり気付けよ>漏れ どうもありがとうございました〜
ウィンドウモードでDrawGraphを使っている状態で 実行ウインドウを動かすと画像が画面に残ってしまうんですが、 何か回避する方法はありますか?
それはもしやDXライブラリの話か?
実行ウインドウを動かし終わったら、再描画おこなうようにすれば?
Visual C++ 2005 Express Editonで、初心者講座のサンプルプログラムをビルドしてみたんですが、 >error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が >関数 "long __cdecl InitDX9(void)" (?InitDX9@@YAJXZ) で参照されました。 上記のようなエラーが出てしまいました。 一体なにが原因でしょうか?(以下設定) プロジェクトのプロパティ → 追加のライブラリディレクトリ d3d9.lib; d3dx9.lib; dxguid.lib; winmm.lib; ddraw.lib インクルードパス C:\Program Files\Microsoft Platform SDK\Include C:\Program Files\Microsoft DirectX SDK (November 2007)\Include $(VCInstallDir)include $(VCInstallDir)PlatformSDK\include $(FrameworkSDKDir)include ライブラリパス C:\Program Files\Microsoft DirectX SDK (November 2007)\Lib\x86 C:\Program Files\Microsoft Platform SDK\Lib $(VCInstallDir)lib $(VCInstallDir)PlatformSDK\lib $(FrameworkSDKDir)lib $(VSInstallDir) $(VSInstallDir)lib
それなんの話・・・? どっかのライブラリなら専用スレいったほうがいいぞ
36 :
34 :2007/11/11(日) 12:05:08
どっかのライブラリではないです
>>34 「追加のライブラリディレクトリ」じゃ駄目だろw
そこは.libが入っているディレクトリを指定する欄だぞ。
38 :
34 :2007/11/11(日) 14:53:02
>>37 リンカ→入力→追加の依存ファイル に入れたら解決しました…
お騒がせしました
39 :
デフォルトの名無しさん :2007/11/13(火) 15:28:33
板違い。 PC初心者板に行って聞け。
LoadMeshFromX()みたいな関数で、VRMLのファイルを読み込んで DirectXのメッシュに相当する部分をロードしてくれるライブラリを だれか知りませんか? VRMLのファイルを解析して自前で やるしかないでしょうか?
すみません。
>>41 は、LoadMeshFromX()ではなく、正確にはD3DXLoadMeshFromX()です。
VRMLをXファイルに変換するツール探した方が早いんじゃね?
>>43 レスをありがとうございます。
そういうソフトはすでにいくつか入手して試しております。
ただ、現在私が開発中のビューワー内部に組み込みたいと思っているのです。
現状だと、読み込み時に別のソフトを起動し、ユーザーに変換してもらってから、
その変換後のXファイルを読み込むという手順を踏まなければならず、
できれば普通のXファイル読み込みと同様に読み込みなりインポートなりを
したいと考えているのです。
テキストデータなんだから普通に読めばいいだろ
みなさんありがとうございました。 VRMLを読み組んでメッシュにするルーティンを自力でつくることにします。
Meshクラスってマテリアルとテクスチャを格納してくれないですよね? あれって何か理由があってそうなってるんですか?
そもそもそんなクラスは無い。
50 :
48 :2007/11/19(月) 19:45:46
VBならそういえ・・・ 何も前提なしなら普通にCで考えるだろjk
ごめんなさい('A` ちなみにVBじゃなくてC#です
53 :
デフォルトの名無しさん :2007/11/24(土) 11:12:17
DirectXの更新のやり方教えてくれる?ぢぃぐだぐひらいても分かりません。 たぶんバージョンは8だったはず
今のSDKをアンインストールして最新版をDL、SDKは複数入れるなってMSが言ってた
DirectX9なら最初から順番に入れたほうがサンプル全部インストールされて良いんだけどな
56 :
デフォルトの名無しさん :2007/11/24(土) 12:30:20
54・55 ありがとう DirectXのホームページにいきますね。 旨くいったらいいな。
57 :
デフォルトの名無しさん :2007/11/25(日) 15:03:00
DirectXを扱うにあたってコンパイラなど開発環境は何がおすすめでしょうか? なるべくフリーで一般的に使われているものが知りたいです。
>>57 Visual C++ 2008 Express Edition
今ならまだ2005だろ・・・。
60 :
デフォルトの名無しさん :2007/11/25(日) 16:20:35
>>58-59 ありがとうございます。
ためしにVisual C++2005 Express Edition
で開発してみます。
2008はWindows2000では使えないのか・・・ 開発用にずっと2000使ってきたけどいよいよお別れです><
62 :
デフォルトの名無しさん :2007/11/26(月) 16:38:08
ポリゴンにドット絵(.bmp)を貼ったんですが、ぼけぼけになってしまいました。 しっかりギザギザにするにはどうすればいいですか? DirectX9です。
まずはD3DXを使わないで画像を張るところからやってみるといい。
あるがとうございますやってみます。
include ファイルを開けません。'd3d9.h': No such file or directory どうすりゃいい?
パスを通せ
>>66 教えてください
ツール→オプション→Project→VC++ディレクトリ
>>63 D3DXCreateTextureなんちゃらExでぼけぼけ直せるじゃないですか
ひどいですよ…
自分でやればそもそも余計なフィルターがかかることもなければリサイズされることもない。 動作原理も理解できる。 何か問題でもあるのか?
今はDXを使うために設定を↓を見ながらしているのですが、
ttp://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2005express.html このサイトの4の、
4.プロジェクトへDXライブラリファイルを追加
これでプロジェクトのセッティングは完了しました。
次に行うべき作業は新しく生成されたプロジェクトのフォルダにDXライブラリの ソースファイルをコピーし、更にプロジェクトに追加する事です。
@ 生成する時に指定したフォルダにDXライブラリのファイル
『DxLib.lib DxUseCLib.lib DxLib.h DxDirectX.h』
及び以下のファイル
『zlib.lib libpng.lib libjpeg.lib ogg_static.lib
vorbis_static.lib vorbisfile_static.lib 』
をコピーします。ファイルはDXライブラリを解凍したフォルダの中の
『プロジェクトに追加すべきファイル_VC用』という長いフォルダ名のフォルダに
すべて入っています。
ここでつまづいています。コピーしようとして、DXLib.libを開こうとしたのですが
「このファイルを開けません」と出るので、どうやって進めばいいのか分かりません。
どうしたらいいんでしょうか・・
コピーするのになぜ開く必要がある? エクスプローラでそのファイルを目的のフォルダにCTRL押しながらドラッグ&ドロップすればいい
DX、ってのはDirectXのことじゃなくてDXライブラリのことか・・・
とあるゲームをやろうとすると「DirectXの初期化に失敗しました」って言うのが出てきます vistaなので再インストールできないのですが何が原因か分かりますか?
ちゃんとタイトルから書け
「はぴねす!りらっくす」です 友人いわくvistaでも動くそうなんですが・・・
エロゲ板逝け
DirectX9SDKをDLしようと思っているのですがたくさんあってどれをDLしたらいいのか分かりません どれをDLすればいいのでしょうか?
2004Oct超お勧め D3DXランタイムDLL不要、日本語マニュ有の名作
名作てww 2004octよく聞くのは日本語ヘルプがあるからか
>>80 あれだけでいいみたいですね
本当にありがとうございました
>>82 ・日本語マニュアルがある
・VC++6で利用できる
・D3DXがDLLじゃない
・Windows9xでも動く
この辺だな。
>>86 ん、その条件だと2004Decがベストな気が
2004Oct VC6が使えるラストVer 2004Dec Win2Kが使えるラストVer だった希ガス
Dec2004だと日本語ヘルプがない、ってことかな? ほとんど変わらないような気もするけど
Dec2004だとVC6が使えん。 2005EEがある今では関係ないかも試練が。
DirectX8が使えるのが2004Octまでじゃなかった? 俺の勘違いだっけか
> 2004Dec Win2Kが使えるラストVer あくまでセットアップですんなり入れられるかだけで 付属ツールが使えないとか、実用に問題あったっけ?
>>91 DirectX8は最新のでも使えるよ。現に俺がたまに使っている。
D3DXは使えないが。
DirectXSDKって常に最新バージョンにしたほうがいいの? 去年のDecemberを入れてからそのままなのだが。
>>93 ありゃ、最新のNov2007のリリースノートには、
DirectX8とかMDX関連のコンポーネントは全て取り除かれました、と書いてあるんだが…
Nov2007入れてないから知らないんだけど、まだ使えるの?
>>95 ありゃ、ほんとだ。
そういえば、俺はVS2003使ってるから、Nov2007は入れてないんだった。
>>93 ありゃ、Nov2007のリリースノートによると、
VS2003に対応しなくなるのはMar2008 からで、
Nov2007はまだVS2003に対応してるはずなんだが…
Direct3Dのデバイスを複数作成するような状況はありますか? もしくは、複数作成して使用したことはありますか?
あるよ。Frapsだとそういう状況の場合バグるけどなw
SwapChainを複数作るんじゃだめなのん?
デバイスそのものを複数作成って相当なレアケースだろうな
複数のモニタに出力する場合、DirectX9以前はデバイスを複数作る必要があった気がする。
今でも複数のビデオカードを扱う場合は、複数のデバイスが 必要なんじゃない?俺はやったことないが。
104 :
98 :2007/12/04(火) 00:08:23
趣味でライブラリ作成とはなかなかの茨の道・・・。 出来たらぜひ公開希望!
現在ロード中の画面も止まらないようマルチスレッドでロードしつつロード画面用の画像を描画しようとしています しかしエラーが出てしまいます このようなことを行う場合、ビデオカードにテクスチャデータなどを書き込んでいる際には描画をしないようにしなければならないのでしょうか?
そんなことはない。 デバイスをマルチスレッド対応で生成すればいい。
なんて恐ろしいことを
裏スレッドで画像データをロードして、最後にテクスチャを書き込むとこだけメインスレッドでやる、とか。
非マルチスレッドでデバイスを作ると、そのデバイスまたはデバイスから生成されたものを、 複数のスレッドから同時にアクセスするとデッドロックなど予期しない動作が起きるよ。
返答ありがとうございます。 やっぱり危ないことだったのですね・・・
早いとかいうレベルですらないが、まあ揉まれて成長していくもんだ とりあえず分からないまま組んでみて動けばいい
秀才的には教科書を最初から最後まで休まず読めば理解できる。
トップダウン式の学習マジお勧め。
dxsdk_november2007.exe (CAB)を解凍すると dxsdk_nov2007.exe (ZIP)が出てきて。 解凍すると目当てのものが出てくるんだけど ロシアの民芸品ですか?
その目当てのものも実は解凍できてそのなかにh(ry
MSの配布物としては平均的じゃないの? もっと深いのあるし。 cab.exe→zip.exe→圧縮msi→zip.exe→ISO とかあったし。
mpeg compass.jp 名古屋駅近辺でお話しましょう
質問です。 frameの初期化はどうやるんでしょうか? newでもないようですし、分からなくて困っています。 言語はvbです
数年に1度程度しかWindowsアプリを作らないGDI + BitBlt厨です GDI + BitBlt部分をDirect3Dで置き換えてみたいのですが、おすすめの 本やサイトを教えてください 2D中心で充実してると嬉しいです 現状はお勉強初めて四角のポリゴン表示まででとまってます…orz
DirectXを使っているゲームにDLLインジェクションでフックを掛けているコードを弄っているのですが、 DirectXのDrawTextメソッドをフックして書き出している文字列の取得って出来るのでしょうか?
インターフェイスのVMTからモジュール(DLL)内のコードのアドレスを計算して、適当なコードでフックを行う。 アセンブラコードを見ればCOMメソッドの動作の様子がわかるだろう。 まあ、実現できてもきっとがっかりすると思うよ。
DirectPlay8でインターフェイスを取得したいのですが、 #include <dplay8.h> IDirectPlay8Peer *lpDirectPlay8Peer; HRESULT hr; hr = CoCreateInstance(CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (void **)&lpDirectPlay8Peer) if(FAILED(hr)) {//エラー処理 } と本に書いてあるようにしているのですが、 error LNK2001: 外部シンボル "_CLSID_DirectPlay8Peer" は未解決です error LNK2001: 外部シンボル "_IID_IDirectPlay8Peer" は未解決です fatal error LNK1120: 外部参照 2 が未解決です。 とエラーが出て原因がわかりません。 何が原因でしょうか?
dxguid.libじゃねーの
130 :
デフォルトの名無しさん :2008/02/03(日) 11:27:20
DirectInputを勉強しています。 DirectInput8Create(hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID **)&lpDinput, NULL); の部分の IID_IDirectInput8が、 3d.obj : error LNK2019: 未解決の外部シンボル _IID_IDirectInput8A が関数 "void __ cdecl InitDInput(void)" (?InitDInput@@YAXXZ) で参照されました。 3d.exe : fatal error LNK1120: 外部参照 1 が未解決です。 となりコンパイル出来ません。何が原因か教えてください。
dinput8.libをリンクしてない 或いは DIRECTINPUT_VERSIONを定義してないか 古いバージョンを指定している
132 :
デフォルトの名無しさん :2008/02/03(日) 11:45:12
>>131 ありがとうございます。無事コンパイルできました。
VC++とDirectX SDK (August 2006)でプログラムを作ったのですがDirectXで作成した プログラムを他のPCで動作させるにはそのPCに対応するDirectXがインストール されていればいいのでしょうか? プログラムのリンカ(?)に設定したd3d9.libやd3dx9.libなども一緒に配布した 方がいいですか?
幾らなんでもlibはいらないだろう・・・・・
DirectX がインストールされていればいい
>>129 遅くなりましたができました。
ありがとうございます。
139 :
デフォルトの名無しさん :2008/02/06(水) 21:14:50
VS上のデバッグボタン押して起動した時は画像が表示されないんだけど Debugに生成されるexeを実行したときは表示されるのはそういう物なの? 設定のせいなら教えてくだし… Visual Studio.NET 2005 Pro DXLib 2.24a
画像へのパスってフルで書いてるの?
エスパー現る
つーかDXLibってちゃんと実行ファイルの場所から検索してくれないの?
そんな余計な仕様があったら同名ファイルがあった場合に困るだろ。 パスぐらい自己責任で設定しろよ。
同名ファイルがあるのがまずおかしいだろ・・・
気を回して余計な機能をつけまくった結果の代表例、MS-Office。
>>140 そういうことですか…
Debugの中にしか画像入れてなかった
slnのある場所に入れたら出た… thx
画像をコピーするよりもデバッグ実行時のカレントディレクトリを 変えた方がいいと思うが。
directplayで通信をしたいのですが、ピアがConnectでセッションへ繋ごうとすると、プログラムが1〜2分固まって接続に失敗します。 問題の箇所を探すと、ポートの設定には成功しているのですが、試しにポートの設定の箇所を消して実行すると接続には失敗するのですが、固まる事はなくなりました。 これはポートの設定がおかしくて通信時に悪さをしているのか、それともポートは関係なく何処かで設定を間違っているのでしょうか? ポート部です。 hr = prgHostAddr->AddComponent(DPNA_KEY_PORT,sizeof(dwDestPort),DPNA_DATATYPE_DWORD); Connect部です。 hr = lpDirectPlay8Peer->Connect(&dpnAppDesc2,prgHostAddr,prgDeviceInfo2,NULL,NULL,NULL,0,NULL,NULL.NULL,DPNCONNECT_OKTOQUERYFORADDRESSING | DPNCONNECT_SYNC); 通信は同一のマシンで試しています。
DxLibのPad系ってDUALSHOCK2でもいけるよね? Windowsには認識されてるのに取得できねええええ
DirectX SDKの最新版で9の機能って使えますか?
あたりまえだ
153 :
148 :2008/02/11(月) 16:04:33
どなたか分かりませんか><
もっと(開発環境とか)詳しく書かなきゃ誰も答えられなくね?
DirectPlayはMS自体が使うのをやめろサポートしないといっている。 それでも使うのなら自己責任で問題が出ても自分で解決しろ。 出来ないのなら使うのをやめろ。
しかし二階へあげといて梯子をはずすとか酷いよな 手頃な代替ライブラリっていうと・・・今ならboost::asio辺りかね
D3DXFONTが遅いと言うのは 最初に一回だけDrawTextで描いて絵として貼っても遅いですか?
それなら自分でGDIで描いてテクスチャに書きこんだ方が楽で速いんじゃね?
よく自作板でCore 2 Duoでゲームをしているとマウスが一瞬固まる、プチフリーズと言っているようですが これってキューイングの所為で起こっているんじゃないのかなぁ、とか 要するにGPUの処理が追いついていないことになりますけど、どうなんでしょうかね? 初心者スレの方ROMっててふとそんなことを思ったのですが、あっちで蒸し返すのもなんなので 独り言のようですみません
だからってこっちに持ってこなくても。 胸のうちにしまっておけ。
>>160 すんません、なんか自分の中で結びついてしまったもので・・・
162 :
148 :2008/02/14(木) 23:10:58
ダイレクトプレイでSendToでデータ送ったらプログラムがエラーが出て終わってしまいます。 ホスト→ピアは大丈夫なんですが、ピア→ホストだとエラーが出るのですが原因は何でしょうか?
ダイレクトプレイのサポートを止めてなに推奨してるの?
普通にWinsockじゃ?
作って捨てて〜作って捨てて〜使って捨てたら使えなーい
実際問題WinSockがあれば必要なことは全部出来るしなー
DirectPlayサポートしないってマジ話だったの? 情報源は?
Microsoft
>>168 SDKドキュメントの最初のページを 見 て ご ら ん
すみません DirectX SDKのバージョン8.1ってどこで落とせるのでしょうか? どうしても必要になってしまいました
ダウンロードセンタにゃもう無いっぽいね。 9.0bあたりなら8.1の開発として使えるとは思うけど?
相当昔の話だぞ・・・
dinput.libが必要なのですが 最新版にには入ってないらしくて 9.0b落としてみます
>>170 マジだった
っていうか最新のSDKには入ってすらいねぇみたいだ
サポートされなくなったものは、Vistaの64bit版ではとことんdllが入ってない
すみません 9.0bだと駄目みたいでした
>>177 ん? dinput.libが目的なら、手元にあるOctober2004にすら入ってるんだから
9.0bで駄目なわけないんだが、本当に入ってない?
普通にダウンロードできるだろ。 2007年あたりのSDKにさえ、dinput.lib は入っている。
逆に考えると、Vistaの64bit版上で開発すれば将来互換性でトラブる事が少なくなるわけだな。
将来を見据えて研究しておくのはその通りだと思うけど ユーザが移行するまではまだまだ時間がかかるから 現時点で何かをリリースするのは得策ではないかもしれんね 芸術家じゃあるまいし死後その功績を認められても・・・
現在新たに開発しているのなら、わざわざサポートが終わった物を使う理由はない。
184 :
デフォルトの名無しさん :2008/02/19(火) 21:44:09
メッシュを回転させつつ移動させたいんですが、 D3DXMatrixRotationX ( &mat , time/1000 ); D3DXMatrixTranslation ( &mat , x , y , z ); SetTransform ( D3DTS_WORLD , &mat ); こうするとD3DXMatrixTranslationは実行されるのにD3DXMatrixRotationXの結果が飛ばされるんですが、 両方実行させるにはどうしたらいいですか? ちなみにD3DXMatrixTranslationをコメントアウトすればD3DXMatrixRotationXは実行されます。
乗算しろよ
int n; n = 3; n = 5; でnが8になりません><って言ってるのと同じ D3DXMATRIX mat, mat1, mat2; D3DXMatrixRotationX ( &mat1 , time/1000 ); D3DXMatrixTranslation ( &mat2 , x , y , z ); mat = mat1 * mat2; // 順番に注意 SetTransform ( D3DTS_WORLD , &mat );
187 :
184 :2008/02/19(火) 22:26:43
188 :
デフォルトの名無しさん :2008/02/25(月) 10:09:02
頂点シェーダが使用できないとき下のコードは動かないのですが 頂点シューダを使わないとするとどこを変更すればよいですか? g_pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE); g_pd3dDevice->SetRenderState(D3DRS_COLORVERTEX, TRUE); g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); g_pd3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); g_pd3dDevice->SetTexture(0, pTexture); g_pd3dDevice->SetVertexShader(TestVertexShader); g_pd3dDevice->SetPixelShader(TestPixelShader); g_pd3dDevice->SetStreamSource(0, pVertices , sizeof(D3DCTRL_CUSTOM_VERTEX_INFO)); g_pd3dDevice->SetIndices(pIndex , 0); g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, VerCou, 0, PolyCou);
>>188 その短いソースの中で「Shader」で検索してみるといいよ。
191 :
デフォルトの名無しさん :2008/02/28(木) 03:45:20
ウィンドウモードで、ウィンドウの幅と高さを変更しても ポリゴンの表示比率が変わらないようにする方法ありますか?
>>190 バックバッファを作り直してカメラのアスペクト比を変える
193 :
191 :2008/02/29(金) 03:02:36
すいません、質問の仕方がまちがえていました。 ウィンドウモードでウィンドウサイズを変更しても ポリゴンの縦と横の長さを一定のまま表示したいのです。 画面上でウィンドウ最大時縦5cm横5cmの正方形を ウィンドウを縮小しても縦5cm横5cmにする方法です。 ウィンドウサイズの変更のたびに拡大縮小させるしか方法ありませんか?
常に同じ画各になるようにカメラ下げればいいんじゃね?
もしかして: 画角
どうもDirectX超初心者以前にSDKのインストールができません。
dxsdk_november2007.exe をダウンロードして
http://tech.ckme.co.jp/vc.shtml のページをみながらインストールをしようとしたのですが、Extracting...
との表示の後、OS(XPSP2)が不安定になってフリーズしてしまいます。
そもそも上のページの一番最初の画像すら出てきません。VC++2008も2005も
普通にインストールできるのですがSDKだけができません。
ファイルが破損しているのかもしれないので何度かダウンロードしなおしても
変化はありません。原因としては何が考えられるのでしょうか。
>>196 C:ドライブの空き不足とかそもそもDirectXがまともに動かないハード&デバドラ環境とか。
無駄なレスしてすまないけど 誰にも解決できないんじゃないだろうか・・・
199 :
196 :2008/03/03(月) 22:23:29
早急なレスありがとうございます。 Cドライブは30G近くあいているので大丈夫だと思ったのですが・・・。 エンドユーザーランタイム?は普通に入れられているので 他人のゲームなどは普通に動くのでDirectX自体は動くと思っています(東方とか・・・)。 DXライブラリと言うのを使ってのプログラムはVC++でできています。 ハードはメモリは1GでDELLのINSPIRON 6400です。 やはりハード的にいろいろ基本的な環境依存なんでしょうか・・・ ただ、友人や父親に頼んでほかのPCで落としてもらってみても 同じようになったというのでMS側のファイルが壊れてるか、ほかにも似たような 事態の人がいるかと思って調べてるんですが見つからないんですよね。 dxsdk_november2007.exeは自己解凍方式だと思っていたのですが アイコンもただのアプリケーションのような感じですし。
WindowsフォルダのDXError.logとDirectX.log診る
dxsdk_november2007.exeはWinRARとかのソフトで解凍できる......と思う
そういえばファイルの最後の方が壊れているSDKがどこかのバージョンであった。 無理矢理展開したけど。
203 :
デフォルトの名無しさん :2008/03/03(月) 22:53:10
C:ドライブの空きが足りなくて、他の環境のExpLZHで解凍して使おうとしたら、ファイルが壊れてるとか言われて、 結局自己解凍させてセットアップが起動するのを我慢して(・・・まあオプション外せばよかったんだが) 出てきた.msiを使ってDirectX SDKをセットアップしたよ。 もしかしてそういう、自分で勝手に解凍して壊れたファイルを使ったとかかな。
204 :
196 :2008/03/03(月) 23:55:47
解決しました、ありがとうございます。 201や202さんの言うとおり無理矢理WinRARで展開したところ 上の書き込みにあるようなdxsdk_nov2007.exe (ZIP)が展開されました。 こちらはダブルクリックで普通に展開できましたが、dxsdk_november2007.exe のほうはWINRARに破損してるだかなんだか言われたのでやはりMS側の ファイルが壊れてるんじゃないかと言う疑念が消えませんが。 二重とか三重とかMSもっと単純な方法にしろよ・・・。 200711月版は何度落としなおしてもWINRAR曰く破損ファイルなのですが、 これをインストールした方は普通にできたのでしょうか? 203にあるsetup.msiもおそらくZIP展開後に出てきたので、 MSの予定するとおりインストールは完了したと思います。 VCで設定後に適当なサンプルをビルド実行した結果は ちゃんとできている風なので大丈夫でした。
DirectXを使うには 1.公式DirectX SDK付属のライブラリを使う 2.誰かが作ったライブラリ(DXライブラリなど)を使う という二つの方法があり、 前者は汎用性や自由度が高いけど非常に手間で、 後者は簡単だけど出来ることが限られているし反応性が低い、 って考えていいんでしょうか
>>205 ライブラリにもよるだろうけど
簡単にDirectXが使えますっていうタイプのライブラリはおおむねそうだろうな
>>205 後者を「DirectXを使う」とは言って欲しくないな。
それでDirectXのスレで質問されても困る。
使ってるのは間違いないと思うが 変なプライドはやめれ 「DOOMのゲームエンジン使ってます」 っていうゲームも、突き詰めれば2の発展型なんだし
209 :
デフォルトの名無しさん :2008/03/14(金) 17:11:29
C++の入門書をやっと読破したので早速3Dゲームを作ろうとおもったのですが、早速詰まりました。 現在のリフレッシュレートがどういう風に格納されてるか見たかっただけなのですが、 クリエイトしたDirect3D初期化アプリが強制終了して表示されません。型変換がおかしいのでしょうか? D3DDISPLAYMODE disp; MessageBox(NULL,(char *)(disp.RefreshRate),"test",MB_OK);
>>209 C++の入門書を最初からもう一度読み直さないと駄目だな。
211 :
デフォルトの名無しさん :2008/03/14(金) 18:50:30
わかった読み直す。だがここだけは教えてくれ!!
char * のキャストで数値が文字列に変換されるというほど C/C++ は優しい言語じゃない。
教えても理解できないだろw
214 :
デフォルトの名無しさん :2008/03/14(金) 22:19:33
いやわかる教えてあげるんだ
D3DDISPLAYMODE disp; char buff[256]; wsprintf(buff, "%d", disp.RefreshRate); MessageBox(NULL,buff,"test",MB_OK);
ありがとうございます。 最初から勉強しなおします・・・・・
>>183 俺みたいにゆっくりやってる奴だと、古いソースを流用出来なくなるのは困る。
DrawTextで文字列表示しようとしたら最初の1文字しか表示されません 何が原因だかわからないんですがエスパーの人いませんか?
解決しました 原因は恥ずかしいので言えません
原因しりてぇww
みなさんMDXのソースはシンボルファイルを使って見てますか? 私は、シンボルファイルをDLすればステップ実行で見られると思って居たのですが、 今DL出来るシンボルファイルがAugust 2007 : Symbol Filesになっています。SDKと日付が違いますよね。 実際やってみると、 デバッグのモジュール表示で「シンボルの読み込み情報」を見ると、解凍したしたパスも含まれていて、 ファイルを見つけて居ますが、「PDB がイメージと一致しません。」になります。 「シンボルの読み込み」って奴もあったので、debugとretailsのpdbファイルも試したのですが、結果は変わらず。 ※環境はVS2005 proです。 実はもっとカンタンにソースを見る方法があって、私がやってる事が根本的に勘違いってこと無いですか?
すみません質問です VS2005等でfxファイルを編集する際に、定義済みの型やコメントなど 色を変えて表示するにはどうすればいいのでしょうか? 以前はなにも設定しなくても自動で色が変わっていたと思うのですが、 最近色がつかなくなってしまいました。 また、fxhファイルでも同様に色を変えるにはどうすればいいのでしょうか。
>>219 そりゃ大文字小文字の違いで表示されなかったら恥ずかしくて言えないよなw
表示する文字列がcharの配列なのに1文字しかセットしてないってやつだろ。
>>223 あざーす!
ないんですか、残念です。昔あった気がしたんですがねぇ。
素直にFxComposer2を使おうかと思います。
そういえば、FxComposer2ってDirectX10対応なんですか?
そういったサンプルも見つかりませんし、試しに書いてみてもエラーになるんですが…
テクスチャからテクスチャ、画像ファイルからテクスチャにコピーってできるんでしょうか?
出来なかったらそもそもどうやってテクスチャにイメージを設定するんだ? そんな質問をする意図が全く分からん。
テクスチャからテクスチャ、画像ファイルからテクスチャにコピーする方法がわかるサンプルはどれでしょう?
画像ファイルからテクスチャにコピーするには いったんファイルからテクスチャ作ってコピーするしかない気がする テクスチャ間コピーはググれ
テクスチャ間のコピーってレンダーターゲットをテクスチャにしてそこにテクスチャ貼り付けるってことでしょうか? 他のやり方ありますか?
ロックしてCPUでコピー
LockRectangle?とかいうやつですね? 情報ありがとうございます 挑戦してみます
DirectSoundのサンプルコードみてるんですが、 プログラム実行中、wav形式のファイルをmmioOpenしっぱなしなんですが、いいのですか? メモリ上に写し取って、ファイルは開放みたいなのを想像してたんですが
いいのです。
236 :
234 :2008/03/30(日) 18:38:13
わかりました。ありがとうございます
超初心者ですが、教えてください。 フルスクリーンで表示されているゲームの上に◎や目盛りをつけたいのですが、 どうすればよいか判りません。 よろしくお願いします。
スプライト
コカコーラ
外部からって話だと難しいな。方法は238
>>237 他人の作ったゲームに表示したいというなら、あと3年勉強したら
できるというレベルの話。
242 :
デフォルトの名無しさん :2008/04/04(金) 07:33:32
DirectX9で3Dのイメージを作って、その画像をBitmapで取得してAVIで出力したい。 どうすればいいのだろうか?
何が分からないか考えてみよう
3Dのイメージが生成されるタイミング。 画像の取得はバックバッファのGetDCかLockRectを考えている。
>>242 テクスチャにレンダリングすれば便利な関数で画像は保存出来たはず
aviにするならロックで取得したほうがいいかな
ただしレンダーターゲットはロックできない問題があったような…
レンダーターゲットに書き込み→普通のテクスチャにコピー→ロックして取得
→取得したデータをAVI作成ソフトに転送(この辺はよく分らん)
こんな感じじゃね?
246 :
デフォルトの名無しさん :2008/04/04(金) 11:42:11
IDirect3DDevice9::EndSceneって、具体的には何やってるの?
ドライバ依存
>>244 読み出そうすれば画像のレンダリングが終わってなければ待機が行われる。タイミングは基本的にいつでもいい。
WindowsXP+DirectX9 でウィンドウモードとフルスクリーンモードで 切り替えできるようにゲームを作ってみたのですが、フルスクリーンから ウィンドウモードに戻ると他のいくつかのアプリ(WindowsMediaPlayer11/ PowerDVD)の映像がブラックアウトしてしまいます。 以下の手順で切り替えを行っているのですが、何か他に必要な処理があるのでしょうか。 リソース開放→TestCooperateLevelを確認→PresentationParameterを設定→ Reset→ウィンドウの再設定
ブラックアウトしたアプリケーションがデバイスロストから復帰していないだけだから対処方法はない。 再生や描画を開始しはじめれば勝手にリセットするんじゃないかな。
例えば背景を消す関数で 色の指定が0xffffffffだったら消さないってのは違法ですか?
そんな法律は聞いたことがないな。
>>250 どうもコメントありがとうございます。
WMP側のオプションをいろいろ設定してビデオアクセラレーションを切ると
WMPが落ちたり(汗)ゲームを2つ実行するとなぜかブラックアウトしなかったりと
なかなかカオスな状況であります。うーん。DirectX 難しいです。。
254 :
デフォルトの名無しさん :2008/04/05(土) 23:00:06
このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている ・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
Eclipseのことだな
javaで作られた大きなものは大概糞
RenderWareのことかぁぁぁぁぁ!
258 :
デフォルトの名無しさん :2008/04/05(土) 23:29:17
RenderWareは大きな糞
254-255はセットなのか、これ?
openglとdirectxのスプライト描画だとどっちが2D描画が早いですか
それは、OpenGLとDirectXのどっちが速いですか?って質問だな。
実装の仕方にもよるんだし一概には言えないような気もする。 グラボが同じなら大差ないと思うけどな。
263 :
デフォルトの名無しさん :2008/04/08(火) 13:46:02
テクスチャがあるのに、スプライトを使うメリットって何?
そもそもスプライトなど存在しない
DirectDrawの方がメモリーを食わないとか
初心者スレはここと統合でいいのかい?
すみませんManaged DirectX 板にも書いたのですが、こちらの方がふさわしいので こちらに書きます。 Direct3Dのフルスクリーンゲーム画面をキャプチャしたいんでうが どのようなjコードでできますか? どっかのサイトで「Deviceを作ってGetBackBuffer()でおk」っていうのを 見つけたんですが、フルスクリーンゲーム画面のDeviceを取得するとこ からつまっています。 簡単なサンプルなどあげてもらえると助かります。
IDirectSoundBufferからIDirectSoundBuffer8を作るのがうまくいきません。 hr に E_NOINTERFACE が返されて失敗してしまいます。 IDirectSoundBuffer *pDSBuffer8 ; HRESULT hr = pDSBuffer->QueryInterface( IID_IDirectSound3DBuffer8 , (LPVOID*) &pDSBuffer8 ) ; どこが問題点か分かりますでしょうか。
>>267 外部アプリのゲーム画面をキャプチャしたいのか?だったら俺には分らん
>>268 勘だがそっち向きは無理じゃね?
IDirectSoundBuffer8からIDirectSoundBufferの取得ならわかるが…
>>268 The IDirectSound3DBuffer8 interface is obtained from a secondary DirectSound
buffer that has been created with the DSBCAPS_CTRL3D flag in the dwFlags
member of the DSBUFFERDESC structure.
You can retrieve the IDirectSound3DBuffer8 interface by calling QueryInterface
method on the buffer, as in the following sample code, where lpDsbSecondary is
an IDirectSoundBuffer8 interface.
271 :
268 :2008/04/09(水) 14:29:04
ありがとうございます。解決できました。
DirectXはダウングレード出来ないと聞きました。 今、PCに入っているDirectXのバージョンより下のバージョンに対応した ソフトを作るって無理なんでしょうか・・・ 例えば、今私のPCにはDirectX9が入っていますが このPCでDirectX5に対応したソフトを作るとか・・・ 出来ませんか?
>>272 DX5 SDKを入れれば作れる
ランタイムは最新のままでオッケ
俺も仕事にあわせて複数のSDK入れてるよ
DX5、DX7a、DX8、DX9c
5とか7の仕事なんて今時あんのか・・・エロゲ?
エロゲと付録ゲ あとはDX嫌がるところはOS標準のDXにあわせてる
あんまり古いと逆に問題多いんじゃないか
古すぎるとGDIでいいんじゃね
>>272 DirectX 9.0b SDK
今公開されている一番古いSDKで開発ができる
これ以降のやつはDirectX8のヘッダが削除されているので開発できない
ただ、古いバージョンでコンパイルしたいなら以下の指定が必要
// DirectX 5 を使用する
#define DIRECTDRAW_VERSION 0x0500
#define DIRECTSOUND_VERSION 0x0500
#define DIRECTINPUT_VERSION 0x0500
今でもエロゲ開発には必要なのさ。。。
動画プレーヤーを作りたいのですがDirectShowの質問って どこで受け付けてくれるのでしょうか。 自分の利用している開発環境はVC#2008expressionです。 プログラミング経験はなくC#もロクに理解してないので C++とかはいじれる気がしません。
DirectShowのスレあったけど落ちちゃってるんだよね。 てか経験無いようだから、取りあえずWMPコンポーネントとか使った方が良いと思うけど・・・
動画再生よりむしろ静止画保存が目的なんで… サンプルながめてもフィルタやピンがどうのと なかなか素人の手に負えない状況です
>>281 じゃあ最初から最後まで教えろってこと?
ちゃんとヘルプ嫁 DirectShowはとっつきにくいが、意外と理路整然としてて使いやすいぞ 他のDirectXコンポーネントとは大違い
プッ
ゴチャゴチャやってたら偶然再生できるようなとことまで来たのですが 現在時間を取得しようと思ってもIMediaSeekingのGetCurrentPositionから どうやって数字や文字列をもらえればいいのかさっぱりです。 HRESULT GetCurrentPosition( LONGLONG *pCurrent);で NULL ポインタ引数が戻り値がとかいわれても、 C#だとどう記述したものやらと途方にくれてしまいます
サンプル読めばわかるだろ。 ちなみに、DirectShowはDirectXに今は含まれていないからスレ違いなんだ。
60fpsで1フレームごとにキーボードの状態取り込むと 押したキーが何フレームにも渡って補足されるです。 どうすればいいですか?
無視する
Async使えよ馬鹿
i8042のクロックで取り込む
補足しないで捕捉する。
テクスチャAをテクスチャBにコピーしたいのですが どのような手段があるのでしょうか?
copy textureA.dds textureB.dds
・テクスチャBをRenderTargetにしてレンダリング ・CopyRects ・Lock/Unlock どれでもお好きな方法を
296 :
デフォルトの名無しさん :2008/04/27(日) 19:31:06
DirectXの構造体の解説やマニュアルのみをただただ乗せてるだけってサイトないですか?
本家は?
SDK落として嫁
読めってあの大量のサンプルをか? それがめんどいんだが
ならやめろw
いやだ ぜってぇあきらめねぇ
┌─┐ |も.| |う | │来│ │ね│ │え .| │よ .| バカ ゴルァ │ !!.│ └─┤ プンプン ソンナツメタイコトイウナヨ!! ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ ( `Д) ナイナラナイッテイッテクレヨ! | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U 〜 〜  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ ◎−>┘◎
┌─┐ |も.| |う | │来│ │ね│ │え .| │よ .| バカ ゴルァ │ !!.│ └─┤ プンプン ソンナツメタイコトイウナヨ!! ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ ( `Д) ナイナラナイッテイッテクレヨ! | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U 〜 〜  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ ◎−>┘◎
>>296 どうみてもヘルプのことです
ありがとうございました
2次元で、 頂点V0〜V3で作られた四角形の中に点Pがあるかどうかって 四角形を構成する4つの線分の裏にPがあるかチェックで 調べているんですけど、もっと高速な方法ってありますか?
x>left&&x<right&&y>top&&y<bottom
長方形じゃないです
マトリックスによる行列変換で直方体から変形可能なら逆行列使えば簡単。 でなければ305のやり方でいいんじゃない? ただ、線の裏側にあるかの判断方法によってだいぶ変わるはず。 ポリゴンなら点Pから一方向(例えば右)に線を引いて何回交差するかを調べる。
>>305 すべての角が180度以下であることが保障されるなら簡単だが、
180度以上の角がある場合は面倒。
>>310 VSのバージョンくらい書けよ
まあ、普通にIncludeとLibのパスを通せば使える
ただ、VS2008とかだと、一部ファイルが新しいから、パスの参照優先順位を一番下にするのが吉
312 :
デフォルトの名無しさん :2008/05/02(金) 22:03:41
VisualStudio2005、VC++でDirectSound (DirectX9)を使ったWaveプレーヤを作ってます。 再生ポジションの通知を行うためにIDirectSoundNotifyを使って数箇所SetNotificationPositionsして、、 という流れで書いていたのですが、↓のようなリンクエラーが出ちゃいます。 エラー 35 error LNK2001: 外部シンボル "_IID_IDirectSoundNotify" は未解決です。 Player.obj エラー 36 error LNK2001: 外部シンボル "_IID_IDirectSoundBuffer8" は未解決です。 Player.obj なぜでしょう。 ちゃんと #include <dsound.h> しているんですが。。
lib
314 :
デフォルトの名無しさん :2008/05/02(金) 22:30:21
>313 あすみません、libも #pragma comment (lib, "dsound.lib") しております、書くの忘れてました。
dxguid.lib
316 :
デフォルトの名無しさん :2008/05/02(金) 23:18:53
>315 ; ̄口 ̄]ナオッタ ありがとうございます、コンパイル通りました!! ありがとうございます!
外部シンボル 〜 は未解決です てのはコンパイルエラーじゃなくてリンクエラーの事なのでライブラリの参照をすれ
Lightサンプルの真似してライト設置してるんだが、 自分で作った六面体がノッペリ同じ色で塗りつぶさてしまう。 こんな減少の場合、何を見落としてると思う? とりあえず、Lightサンプルの中に自分で作った六面体をぶち込んでみるわ
法線データが入ってないってオチは?
C言語の知識だけでDiectXはできますか?
全てのAPIがC言語からでも呼び出せる。
MSDNから日本語ドキュメントがごっそりなくなってるじゃねえか!市ね!! 改悪にもほどがある!!
>>321 クラスで出来てるんだからCだけで使えるわけないだろ
法線データ入ってませんでした。 LightサンプルにD3DFVF_NORMALがあったので真似して、 D3DFVF_DIFFUSEも消したらうまくいった。 頂点にデフューズ色指定するとライトがうまく働かないの?
>>320 できるけど面倒い。
C++ 使った方がよっぽどか楽。
ぐーぐるから見ようとすると「ないっす」って言われるんですよね
これからは2004octの時代
>>329 のライブラリ使おうとするとブルースクリーンが出るんですけど^^;
Init関数で死ぬとかドンだけー
本家じゃなくて3D機能を強化してる互換版 ベータとはいえ開発環境依存、互換中途半端、重い 開発に付き合うほど暇ではないので1年後また見てみる
DirectXにはディスプレイ出力を取得するようなAPIはありませんよね? FrapsとかDxtoryはどうやってるんでしょうか? グラフィックのドライバレベルではディスプレイ出力の取得が可能?
表示しているものは何であるか考えれば答えは出るよ
Frapsを見たことがないのでどうやってるのかは知らんが、 Presentにフック仕掛けてるだけじゃない?
ヘタレな質問です。現在、DX8使用して背景に3D、キャラに2Dを表示しようと 考えております。 まず、セオリー通りテクスチャで表示したのですが微妙に歪み、 暗く表示されてしまいます。 そこで、backsurfaceというのがあると聞きつけたのですが、どのように使えば良いか、 コードでみせて下さると嬉しいです。 そもそも、LPDIRECT3DDEVICE8は、3D作成時の物で良いのか、 そして、表示先のバックサーフェイスをどうやって取得すれば良いのでしょうか。
答える前に、一度でも検索したのかと問いたい
>>337 0.5ピクセルずらした?
詳しくはテクセルあたりでぐぐれ
>>338 &339
無事解決しました。
backsurfaceに書き込み成功しました。
しかし、これだと3Dマテリアルの裏側に表示されてしまい、
テクスチャで前面にキャラクタを表示しようとすると、pngとかddsなら良いのですが、
オリジナルフォーマットだと対応できません。
spriteを使うと、数回はうまくいくのですが、不正終了を起こしてしまいます。
試しに何もないspriteを使ってもダメで、もちろんboundschkerにもかかりません。
単純な話し、GetPixelみたいなローレベル命令が書き込み画面に使えないのでしょうか。
backsurfaceはLockRectできたのですが、
テクスチャ書き込み済みの画面からの画面情報の拾得は出来ないのでしょうか。
backsurfaceなんぞよくわからんもの使うより 当初の予定通りできちんと表示される方法を考えたほうがいいんじゃないのか?
>>340 DX8はステートブロックでバグが発生する。そのためのエラー。DX9以上を使え。
Zオーダー無効で描画すれば、常に最前面だったような。
つーか普通にポリゴンの描画しかた覚えろ。簡単だぞ。
>>341 いや、backsurfaceだときちんと表示されて、textureで表示すると、
0.5とかどう合わせても半ドットずれたり、暗くなったりする。
何枚かのビデオカードでチェックしたけどダメだった。
肝心の文字表示だけど、32*32ドットのpngでα抜きテクスチャ作って、
それをD3DXCreateTextureFromFileでロードして、
LockRectして、1文字ずつ文字を書き込むことに成功。
D3DXCreateTextureでD3DFMT_A8R8G8B8で作ってもだめ。成功した人いる?
>>342 情報サンクス。一応D3DRS_ZENABLE,D3DZB_FALSEでやってます。
DX8.1は仕事の仕様でDX9にはできんのよ(TT
XPSP1以降なら素直にDX9なんだけど、まだ初代XPの人が何人もいて(^^;
四の五の言わずにソースだせと 日本語が下手すぎて何いってるかわからん
>>343 のソースが可笑しいことだけは伝わった。
世間のDX8で作られたゲームはちゃんと表示されてるだろ。
日本語ヘタでスマンのう。 ソース長いし、一応自己解決したし、 商用ソフトなんで、フォーマット変えてUPしなくちゃならんのでそれは勘弁。 とりあえず、D3DXCreateTextureでD3DFMT_A8R8G8B8指定した空のテクスチャで αブレンドをかけた文字を表示するのは失敗したけど、 元々1文字分32*32ドットのα付きのPNG作り、動的に書き換えながら、 画面中にαブレンドした文字を表示するのは成功しました。 日本語難しいな。ホント。
ひょっとしてテクスチャのサイズは元のデータと同じにならない事を知らないおちか
>>347 日本語間違えてる(^^;
1個だけ32*32のPNGを作り、D3DXCreateTextureFromFileで1個だけ読み込み、
こいつを1文字ずつLockRectで書き換えて画面にαブレンドで表示する事に成功しました。
>>349 いや、800*600が1024*1024に拡大されてるのは知ってる。
だから困ってたんだけど、3Dモードと2Dモードで使い方を変えて、
3Dモードでの時の歪みはCGに怒られながら勘弁してもらう事にしたヘタレ。スマソ
800x600の画像を1024x1024の左上に展開して描画すればドットバイドットになるわけだが・・・
>>352 その方法も試したんですが、微妙に歪むところと暗くなるところがあり、
自分的には気にならないのですが、CGから見たら違う物だと言われて…。
>>348 の方法なら大丈夫なんですが、
テクスチャにするとどうしても微妙に違うらしくて、
CGにうとい自分だったら気にしないのですが、
プログラマ1人とCG5人だと発言力が(^^;
いったいどんな組み方してんだよと小一世紀・・・
3D部分も自力で組んでるんですが、色々と言われて落ち込んでます。 自分の実力だとLWと全く同じ結果に出来るはずもなく……orz 人生あきらめが肝心なので、ダメプログラマの烙印を押されても粘ります。 今までスレ汚し、スマンかった。
>>354 雑誌のサンプルを実行しても、どうしても歪んでしまうんですよ。
ビミョーにですが。
逆にテクスチャで歪まないサンプルがあったら教えてもらえると嬉しいですm(__)m
いちいちロックして描画なんて阿呆なことするくらいなら 素直にDirectDraw使おうよ。
Direct3Dを全くわからない俺が思うに、 ・バックサーフェイス->OK ・テクスチャ->NG ・微妙に歪むところと暗くなるところがあり からして 色はシェーディング、拡散光、スペキュラ辺りに関連していることを 言っている気がする。 歪みは遠近法(平行投影とか透視投影)かと。
シェーダー切るの忘れているだけのような気がするけど・・・ ↓俺の汎用スプライトコードからの抜粋 Device->SetTexture(0, texture); Device->SetVertexShader(D3DFVF_TXVertex3); Device->SetStreamSource(0, m_VertexBuffer, sizeof(TXVertex3)); Device->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); Device->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); Device->SetRenderState(D3DRS_FOGENABLE, FALSE); Device->SetRenderState(D3DRS_SPECULARENABLE, FALSE); Device->SetRenderState(D3DRS_CLIPPING, FALSE); Device->SetRenderState(D3DRS_LIGHTING, FALSE); Device->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_DISABLE); Device->SetRenderState(D3DRS_CLIPPLANEENABLE, FALSE); Device->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD); Device->SetRenderState(D3DRS_TEXTUREFACTOR, Color);
Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); Device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR); Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); Device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR); Device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); Device->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); Device->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE); Device->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); Device->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); Device->SetTextureStageState(0, D3DTSS_ADDRESSW, D3DTADDRESS_CLAMP); Device->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT); Device->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT); Device->SetTextureStageState(0, D3DTSS_MIPFILTER, D3DTEXF_NONE); Device->SetTextureStageState(0, D3DTSS_MIPMAPLODBIAS, 0); Device->SetTextureStageState(0, D3DTSS_MAXMIPLEVEL, 0); Device->SetTextureStageState(0, D3DTSS_MAXANISOTROPY, 1);
まともに組めば絶対に歪まないはずだから頑張れよ。 とりあえずウィンドウ一個出してそこにテクスチャ表示するサンプルなら 30分で書けるでしょ。それうpすりゃいいじゃん。
ありがとう>ALL 1ドットの歪みが出るのが直らないのですが暗いのはシェーダのせいでした。 背景が3Dのせいで、その上に重ねるキャラが1ドットどうしても歪んでしまいます。 もう一度、切り分けをして単純化してプログラムを組んでみます。 それと、D3DXCreateTextureでD3DFMT_A8R8G8B8指定した空のテクスチャでも ちゃんとαブレンドが効きました。ありがとう御座いました。
商用ソフト作ってる人間がこの程度のことを自己解決できないなんて
え?俺は同人かと思ってレスしてたんだが・・・・
初めて一週間でして……。 昔、PC-DOS時代にDOOM系のFPSゲームを作った事があったので、 3Dダンジョン部分はすぐ出来たのですが、2D表示にはまってた次第です(^^; ピクセルのズレも切り分けでき、どうにかCGに怒られずに済みそうです。 一時はCreateDIBでやって、ブレゼンハム3Dで作った方が…と考えたところ、 皆さんのおかげでD3DXにとどまれました。 レンダリングステート関連って、知ってないと分からないことばかりで、 WIN-APIを覚えた時を思い出しました。覚えることが多くて大変です(@@
ちなみにドットズレの原因は背景3D表示のViewFromの問題で、
精密に計算して、3D表示の方もすこしずらしたら起きなくなりました。
>>358 さんの遠近法で当たってました。
皆様、ありがとう御座いました。
>>363 商用でこんなとこで質問してるなら軽蔑するわw
あれ・・・? てっきりテクスチャを2Dで描画してるのかと思ったら3D空間に1枚絵を描いてたのか
プロ崩れの同人もいるわけだし仕方ないんじゃね?
3Dダンジョン、フルサイズ背景表示、ラスタキャラ表示、手前にメッシュ表示、 そして文字表示エンジンが完成しました〜。 Intelチップで不具合が出たのですがステートを直したらどうにかなりました。 一週間でどうにか出来たのはひとえに皆様のおかげです。ありがとうm(__)m
これで月曜日の納品に間に合います。 なにげにサンプルメッシュを作るのに時間がかかってしまいました。 LWの解説サイト様、ありがとう御座いました。m(__)m あとはゆっくり寝てバグだしをします。 おやすみなさい〜zzz
だからここに日記を書くなよ…
ボーンの処理どうやった?
初心者隔離スレだからいいんじゃねぇの? 本スレ汚されるよりな。
テクスチャは256x256以下で2^nサイズの正方形にすると良いって暗黙の了解があるが やっぱり今時のハードでも256x256以下の方が良いのかな? というか今時ので512x512で表示が乱れるとかぼやけるとかってやつある?
>>376 >というか今時ので512x512で表示が乱れるとかぼやけるとかってやつある?
ハードウェアの問題と
自身のプログラミングの問題を混同してるうと思う…
512x512のテクスチャでも、貴方のコードがおかしければ
表示が乱れるとかぼやける事は十分あるかと
>テクスチャは256x256以下で2^nサイズの正方形にすると良いって暗黙の了解 何年前の話だ・・・ぶーどぅーとかの時代だろ。 テクスチャのサイズ、正方形、2^nの制限などは全てCAPSで取れるので それを起動時に見て作るテクスチャや作り方などを判断すればいい。 ぼやけるかどうかはプログラムの問題でハードの問題ではない。
広大なMAPを作るとして、みなさんはラップアラウンド問題はどうしてますか? 1画面分移動したら0に戻すとかで対応ですか? そもそも、広大なMAPは作らない方針ですか?
4bitで -2147483648〜2147483647 だから DbD単位で数値持ってても左右で100万画面分以上あるから悩んだことないな どんだけ広大なマップを作る予定なのさ 世界一周でも足りる気がするが… それより俺は3Dゲーの広大なマップでfloatの制度をどう解決してるかが知りたい
すまん4byteだw
>>380 ああ、ごめん、おれもfloat制限の事、ききたかったんだ。すまそ。
位置に関するオフセットだけ別にもって描画に使うギリギリまで原点基準の座標で計算するようにする。 ビューの行列生成に対して逆移動を適用して描画における計算上だけ整合性をとって、 通常の計算は精度の高いローカルのまま計算をする。
メッシュを拡大(ScalingMatrixかけて)して描画すると 真黒になるのは何故なんだぜ?
法線
>>383 そうやっても、原点から遠ざかっていくとだんだんずれてこないか?
たとえば時速10000キロで飛行機を原点から遠ざかるように飛ばし続けて
その後ろをカメラが追従するようにするとそのうちブルブル振動し始める
>>384 法線を正規化するレンダーステートかなんかがあった気がする
調べるのはめんどい
D3DRS_NORMALIZENORMALS
DirectX9にて、テクスチャを描画すると画像がぼやけてしまい困っています。 各座標-0.5fやSetSamplerStateでPOINT/NONE(一応バイキュービックなども試しました)を指定など、調べて出てくること・考えられることは試してきたので、 最初のぼやけっぷりと比べればある程度見れるような状態にはなってきているのですが、それでもまだぼやけています。 今は、とりあえず倍の解像度のテクスチャを使って凌いでいます。(これなら、ぼけないように見えます) 高精細の画像を用意することなく、画像のそのままをDirectXで描画するにはどうすればいいのでしょうか? ご教授をよろしくお願いします。
389 :
388 :2008/05/14(水) 01:34:37
書き忘れました。 使っている画像はPNG(透過)、解像度は640x480です。
トランスフォーム済み頂点かい?
フルスクリーンでアスペクト違いとかだったら殺すぞ?
FAQ過ぎるんだが確認事項が多すぎて一々レスしてくのめんどくせ。 再現コードうpして頂戴。
FAQすぎるけど、ここってそういうスレだろうw
>>388 D3DXCreateTextureFromFileでテクスチャ作ってるだろ?
この関数では2のn乗のサイズのテクスチャしか作れない。
D3DXCreateTextureFromFileExを使えば解決。
引数は自分で考えるかググってくれ。
頂いたご意見を検証しましたところ、読み込みの時点で2の乗数のサイズになってしまっていたようです。
D3DX_DEFAULT_NONPOW2を指定したところ、綺麗に描画することができました。
>>390 様、
>>391 様、
>>392 様、
>>393 様、どうもありがとうございました。
半年間続いた気持ち悪さも抜けました。これで気持ちよく眠れます。
本当にありがとうございました。
その後、
>>394 は半年のあいだ目覚めることが無かったという
めでたしめでたし
>>394 NONPOW2できないデバイスもあるかもしれないんだぜ
D3DX_FILTER_NONE
D3DX_FILTER_NONE使った場合、実際は2のべき乗のテクスチャが作られても画像は拡大されない つまり、DbD表示は可能だけどそのためにはUVを調整する必要があるんだな 俺もハマったなぁ…
info.width/dest.width
destじゃないdescだ
ヘルプ嫁よ
自分に言い聞かせてるんだろ
405 :
デフォルトの名無しさん :2008/05/18(日) 02:43:39
ユニビーム
>>405 おまえのお陰でアイアンマンが映画化されている事を知った
しかも大ヒット
リパルサー
408 :
デフォルトの名無しさん :2008/05/21(水) 03:01:54
∧_∧ ♪ ∧_(∧ω^ ) ∧ ^∧^ ) > ( ^∧^_∧>/ ♪ ( ^∧^__∧ ヽ( ^∧^_∧ ♪ < ( ^ω^ ) 過疎るな | < > (_/ /ヽヽ (_) (__)
>>409 知らない映像も交じってるが知ってるプリレンダー映像に関してはCPU処理かな
リアルタイム処理だったらDirectXでもできるだろうけど…
DirectXで作ったとしても DirectXの知識1割ぐらいだな
てかDirectXだろうがPS3だろうがリアルタイムレンダリングできるわけないだろ 水はサンプリング粒子が多すぎる
数年後には実現できていたりする
DX11はリアルタイムレイトレーシングを見据えているんだっけ? それともあれはIntelのプレゼンか何かだったかな?
これ以上バージョンを出すな!
高性能はおなか一杯だから マイクロソフトは、軽快なOSを出してくれマジで
417 :
デフォルトの名無しさん :2008/05/21(水) 21:20:03
昨日からDX勉強してる超初心者なんですが、 画面に立方体のポリゴンを表示してみたんですが なんか全体的に絵が硬い感じがします。 もう少しやわらかくぼやけた感じに描画したいんですが どうすればよいですか?
一番手軽なのはあくび
生理現象を待つよりも目薬がおすすめ
420 :
デフォルトの名無しさん :2008/05/21(水) 21:54:28
>>418 >>419 意地悪いわんでおしえてくれ〜
とりあえず調べてみたけどアンチエイリアスだけで何とかなる?
あんたの言うぼやけた感じってのがわかんねぇから意地悪したくなるんだけどなw アンチェリかけただけで良いのか? DOF的なカメラフォーカスのぼやけが欲しいのか? HDRシーンのようなぬったりぎっとり画面が欲しいのか? アンチェリだけならデバイス作成のフラグ変えるだけなんだからまずは試してみれ (ビデオカードが対応していることが前提だが)
アンチェリかけてダメならHDRとグレア処理やって ダメならDOFやってだめなら空気遠近法ってとこか 立方体を平らな板の上に載せてAOテクスチャでも張れば案外柔らかくなるんじゃね?
単にライティングしてないってオチじゃね?
XY平面上にポリゴン等のモデルオブジェクトを配置した状態で、カメラの視線はZ軸に平行にしています。 この状態でマウスドラッグでカメラの水平座標(X,Y)をOffsetするようにしています。 また、マウスホイールでカメラの鉛直座標(Z)をOffsetしています。 カメラ座標Zによってマウスドラッグ時のカメラの水平移動量を調節したいです。 具体的に言いますと、スクリーン座標(10,10)から(510,10)までマウスドラッグした場合に、 500ピクセル分のカメラ移動をするのですが、一律のOffsetでは当然カメラ高度が高ければ高いほどオブジェクトの 見かけの移動量が少なくなってしまいます。これを上手く調節して、500ピクセル分の移動であれば現在のカメラ画像の高さにおいて 見えているオブジェクトの500ピクセルに相当する分の座標でOffsetしたいのですが、その計算方法が分かりません。 DirectXで使っているPerspectiveCameraではFieldOfViewを設定していますが、カメラ焦点距離に当たるものが 見つけられませんでした。焦点距離と画角とZさえわかれば求まると思うのですが。 説明が下手で申し訳ありませんが、参考になるサイトかアドバイスがあれば宜しくお願いいたします。 環境: VisualC#2008、WPFアプリケーションのViewport3Dを利用しています。 スレ違いと言われるかもしれませんが、WPFスレではWPFのGUI関連のスレに見受けられまして、 カメラのOffset等こちらのスレで質問した方が良いのではないかと勝手に判断いたしました。
焦点距離はFOVから算出するものだろ。 フィルムサイズによっても変わるものだし。
428 :
426 :2008/05/22(木) 18:22:05
>>427 フィルムサイズとFOVが分かれば確かに焦点距離が求まるのですが、
フィルムサイズってどこで分かりますか?
429 :
426 :2008/05/22(木) 18:26:21
あ、なんか分かったかも。 Viewport3Dコントロールがリサイズされれば当然オブジェクトの見た目も変わりますね。 ちなみにFOVって水平画角であってますか?そうであればフィルムサイズはViewport3Dコントロールの 水平方向のサイズから求まると思います。 鉛直画角ではないですよね?
好きに決めろ。 「FOVがXならフィルムサイズnの時の焦点距離がYです」という言い方しか出来ない。 通常は35mmがメインっぽいけど別に決まってるものではなく仮定するものだと思うが。 さらに言うならマウスでドラッグしたスクリーン上の移動を見かけ上一致するように 3D空間でも移動を行なうのに焦点距離はまったく必要ない。
>>430 >さらに言うならマウスでドラッグしたスクリーン上の移動を見かけ上一致するように
>3D空間でも移動を行なうのに焦点距離はまったく必要ない。
そのやり方についてヒントだけでも教えてもらえませんか?
スクリーン座標に変換する->マウスの位置へ移動する->ワールド座標に戻す。 スクリーンからワールドに戻すときにzはどうするんだって話になるが、 元々ワールドに存在するオブジェクトならそのままのzをもってきて計算すればいい。
Xファイルがなぜか1ファイルしかロードできない。 原因として考えられるのは何でしょうか。 変数もグローバルで[MAX_MESH]を付けているのに、 最後にロードした物しか見れません。 変数の上書きも考えて、いろいろグローバルにして{MAX_MESH]をつけてもダメでした。 ご教授、お願いしますm(__)m
// メッシュ関連 LPD3DXMESH pMeshApp[MAX_MESH]; LPD3DXBUFFER pMeshAdjacency[MAX_MESH]; LPDIRECT3DTEXTURE8* ppTexture[MAX_MESH]; D3DMATERIAL8* pMaterial[MAX_MESH]; DWORD meshSubsets[MAX_MESH];; D3DXVECTOR3 meshCenter[MAX_MESH]; float meshRadius[MAX_MESH]; float meshfx[MAX_MESH],meshfy[MAX_MESH],meshfz[MAX_MESH]; // 移動位置 float meshax[MAX_MESH],meshay[MAX_MESH],meshaz[MAX_MESH]; // 回転 float meshsx[MAX_MESH],meshsy[MAX_MESH],meshsz[MAX_MESH]; // スケーリング float nummesh[MAX_MESH];
/*--------------------------------------------- X-Fileの読み込み ---------------------------------------------*/ int LoadXFile(int n,float d,char* filename) { LPD3DXMESH pMesh; LPD3DXBUFFER pMatBuf = NULL; D3DXMATERIAL* pMat; DWORD n,i,c,e; nummesh[n]=d; if(FAILED(D3DXLoadMeshFromX(filename,D3DXMESH_MANAGED,pD3DDevice,&pMeshAdjacency[n],&pMatBuf,&c,&pMesh))) return FALSE; DeleteMeshObject(n); pMeshApp[n] = pMesh;
//マテリアルとテクスチャの設定 pMat = (D3DXMATERIAL*)pMatBuf->GetBufferPointer(); for(i=0;i<c;i++){ ppTexture[n] = (LPDIRECT3DTEXTURE8 *)malloc( 4*c ); pMaterial[n] = (D3DMATERIAL8 *)malloc( 4*c ); } meshSubsets[n] = c; for(i=0;i<c;i++){ pMaterial[n][i] = pMat->MatD3D; pMaterial[n][i].Ambient = pMaterial[n][i].Diffuse; ppTexture[n][i] = NULL;
//テクスチャ読み込み if(pMat->pTextureFilename) if(FAILED(D3DXCreateTextureFromFile(pD3DDevice,pMat->pTextureFilename,&ppTexture[n][i]))) return FALSE; } RELEASE(pMatBuf); LPDIRECT3DVERTEXBUFFER8 pVB; BYTE* pV; pMesh->GetVertexBuffer(&pVB); pVB->Lock(0,0,&pV,0); pVB->Unlock(); pVB->Release(); if(pMeshApp[n]->GetFVF() != (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)){ pMesh = NULL; pMeshApp[n]->CloneMeshFVF(pMeshApp[n]->GetOptions(),D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1,pD3DDevice,&pMesh); pMeshApp[n]->Release(); pMeshApp[n] = pMesh; D3DXComputeNormals(pMesh,NULL); } return TRUE; }
//------------------------------------------------------------------------ //メッシュ表示 //------------------------------------------------------------------------ void dispMesh( int n ) { // 表示位置を球体1へ移動 //メッシュの描画 D3DXMATRIX matWorld,matTrans; if(n==0)meshfx[n]=-400;meshfy[n]=20;meshfz[n]=200; if(n==1)meshfx[n]=-400;meshfy[n]=20;meshfz[n]=-200; meshaz[n]=90; for(DWORD i=0;i<meshSubsets[n];i++){ D3DXMatrixIdentity(&matWorld); D3DXMatrixScaling(&matWorld,meshsx[n],meshsy[n],meshsz[n]); D3DXMatrixRotationX(&matWorld,(meshax[n]*3.14f/180)); D3DXMatrixRotationY(&matWorld,(meshay[n]*3.14f/180)); D3DXMatrixRotationZ(&matWorld,(meshaz[n]*3.14f/180)); D3DXMatrixTranslation( &matTrans,meshfx[n],meshfy[n],meshfz[n]); matWorld*=matTrans; pD3DDevice->SetTransform(D3DTS_WORLD,&matWorld); pD3DDevice->SetMaterial(&materialApp); pD3DDevice->SetMaterial(&pMaterial[n][i]); pD3DDevice->SetTexture(0,ppTexture[n][i]); pMeshApp[n]->DrawSubset(i); } pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR);
// 表示位置を元に戻す(表示位置と視点位置は同じっぽい) D3DXMatrixIdentity(&matWorld); pD3DDevice->SetTransform(D3DTS_WORLD,&matWorld); pD3DDevice->SetStreamSource(0,NULL,0); pD3DDevice->EndScene(); }
とりあえずメッシュを一つだけ管理するクラスを作ってそれらを複数持てば解決するんじゃないかな
バッファって普通はメインメモリに取られてるんですか?それともGPU?
やっぱりクラスにするしか内ですかね……。 C++はあんまりよく知らないのですよ。頑張ってみます。
別にC++つかってクラスにする必要はない。 単におたくのソースが見づらくてよくわからんってだけだろう。 バッファがメインメモリかビデオメモリかは「自分で指定する」ものだ。 DirectXのリファレンスを暗唱できるまで読むがいい。
本に載ってたソースなのですが、見づらいですか。 本も選びようですね。
とりあえず、LoadXFile内で ローカルに宣言されてる LPD3DXMESH pMesh; の値をいくらグローバルに入れようとしても無駄だと思う
DirectX End-User Runtime Web Installerをインストールしたら、DXのバージョンが10になった DX9.0Cにはもう戻せないのかな?
10.0入ってるなら9.0c含んでるし
448 :
433 :2008/05/24(土) 07:06:08
自己解決しました。 pMaterial[n] = (D3DMATERIAL8 *)malloc( 4*c ); を pMaterial[n] = (D3DMATERIAL8 *)malloc( sizeof(D3DMATERIAL8)*c ); にしたらちゃんと複数体表示できました。 ありがとう御座いました。
DirectX SDK March 2008のインストーラを実行すると、 DirectX Runtime Setup Failed(-9) An internal system error occured. Please refer to DXError.log and DirectXlog in your Windows floder to determine problem. と出ますが、Vistaじゃないとだめだとかありますか?
450 :
449 :2008/05/24(土) 18:43:10
DXError.logを見ると、何らかのライブラリが必要みたいなのですが・・・ -------------------- [05/24/08 18:31:16] module: DSETUP(Mar 5 2008), file: dsetup.c, line: 442, function: LoadDSetup32 Failed API: LoadLibrary() Error: (126) - 指定されたモジュールが見つかりません。 -------------------- [05/24/08 18:31:16] module: DSETUP(Mar 5 2008), file: dsetup.c, line: 155, function: DllMain Failed API: CloseHandle() Error: (6) - ハンドルが無効です。 (略)
ファイルがこわれてたんじゃねーの
452 :
449 :2008/05/24(土) 21:21:39
3回ダウンロードしてみて、解凍されたファイルを比較しても全部同じでした 既にWindowsにあるファイルが正常か検証する方法ってあるんですかね
WindowsXPでも問題なくインスコできてるが・・・
454 :
デフォルトの名無しさん :2008/05/25(日) 09:25:28
著作権フリーのXファイルがたくさんおいてあるページないですか?
ありません 比較的数の多いメタセコイアからコンバートすれば?
456 :
デフォルトの名無しさん :2008/05/25(日) 11:25:57
direct xってそもそも何?
>>456 各種ハードウェアアクセラレータを利用するためのインターフェース。
DirectX以前からアクセラレータはあったが、各製品ごとに専用のコードを
書く必要があった。
それらに統一されたアクセス手段を提供するものがDirectX。
いつの間にか立場が逆転して、DirectXが先に仕様を決めてハードウェアで
それを実装するという関係になったけどね。
ゲームが作りたかったビルゲイツの夢 のはずだった
459 :
デフォルトの名無しさん :2008/05/25(日) 13:11:02
Windows3.1の時代に、カンファレンスかなんかだったかな? ビルゲイツがゲームをWindows上でプレイするのが当たり前になるって言って 会場が失笑の嵐に包まれたけど、ほんとに当たり前になっちゃったね ビルゲイツはすごいね
GDIなんざ使ってたら遅くてゲーム作れねぇよ! とDOSでブイブイ言わしてたゲーム開発者達に怒られたから
古きよき時代という奴だな・・・ 当時のブイブイ言わせてた人間は今どれほど残ってるのだろうか・・・
処理リソース占有させろッ!
今じゃWindows上どころか、ブラウザ上でゲームしてるしな。
携帯上でJavaVM動かしてゲームとか想像の範疇外だったな
466 :
デフォルトの名無しさん :2008/05/25(日) 14:27:09
VBなんですが 透過色をメッシュに設定する方法がわかりません どなたか教えてください CだとD3DXCreateTextureFromFileExって関数で設定できるみたいなんですが・・・
>>462 30代後半だけど、同じ会社でまだ生き残ってる
工画堂乙 ファルコム乙 チャンピオンソフト乙 ・・・もう思いつかねえや
ゲームパッドのボタンをフックしたいんだけど、どうすればいい?
DirectInputとマルチメディアAPIにフック仕込むだけだろ
>>470 ごめん、よくわかんない..
参考URLorサンプルコードplz
偽装カーネルでフックすればいいだろ
>>471 470の説明で分からないなら無理。
API一発でできるようなものではない。
数百行程度のコードが必要。
476 :
デフォルトの名無しさん :2008/05/27(火) 11:42:08
477 :
デフォルトの名無しさん :2008/05/27(火) 21:41:16
多分、DirectX使いでVB使いな人は希少なんじゃね?あくまで直感だが。
VBからDirectXなんて、どうやって使うのかも知らないしな。 Managed DirectXは無くなったんだよね?
非公式だけどSlimDXなんてのもあるよ .NETでDirectX触るならC#の方がまだポピュラーだね XNAやWPFではVBはお呼びでないし
DirectX10をダウンロードしようとすると「Internet Explorer ではこのページは表示できません」の画面になります
そもそもDirectXのHPに行くだけでその画面になったりします
どこか一つくらいエラーにならず落とせる場所はないかと探してたら
ここで
ttp://jp.brothersoft.com/ DirectX 9.22.1284は落とせました
しかしインストールしようとすると 「ファイルをダウンロードできませんでした」と失敗します
DirectXに嫌われているんでしょうか。
MSに嫌われてるんじゃね? 割れ使ってるとかさ
割れとかは使ってませんが、マイクロソフトのページ行ってみたら見れませんでした MSに嫌われたようです
そういえばMSのダウンロードセンターは、正規のOSのチェック通らないと 落とせないな。
>>466 透過色をメッシュに設定するってことはテクスチャじゃなくてマテリアルの話では?と突っ込んでみる
そもそもVB6なのかVB.netなのか…
VB6だともう資料が少なすぎるな
割れって言葉を理解できてないゆとりかもしれない
488 :
デフォルトの名無しさん :2008/05/28(水) 19:17:31
>>485 .NETです マテリアルに透過色を指定する方法教えて下さい
ハッピーマテリアル
492 :
デフォルトの名無しさん :2008/05/29(木) 11:17:19
ディスク上のPNG画像からテクスチャを読み出すときはD3DXCreateTextureFromFileExを使うが すでにPNG画像ファイルがメモリ上に読まれていて開始位置ポインタとサイズを持っている場合 どうすればいいだろう?わざわざ読ませるだけのために一時ファイル作るのもどうかと思うし……
>>492 自己レス。
D3DXCreateTextureFromFileInMemoryExってのがビンゴかな?
質問です。 DX9とC++でゲームを作っているのですが、 二十枚程度のpng画像(アルファつき・VGA以下)をテクスチャとして読み込むと、 メモリ使用量が80MBほど上昇してしまいます。 画像は全部あわせてもせいぜい4〜5MBなのに、どこで20倍になってるんでしょうか? ミップマップは、1つしか作ってないはずなのですが・・・。
>>493 ビンゴ!
>>494 pngは圧縮かかってるからな
全部BMPに変換して合計容量*1.33すると80MBになるんでね?
圧縮状態で読み込みたいならddsファイルにするといい
ミップマップ1つなら1.25か
>>495-496 音速レスありがとうございます。
なるほど・・・考えてみれば、元が何だろうとテクスチャにした時点では無圧縮に揃ってしまうのですね。
計算したら大体合っていたので、これからddsを試してみます。
498 :
デフォルトの名無しさん :2008/05/29(木) 17:21:05
質問です。 VS2005+DirectX9.0cSDKでWeb見ながら学習開始したのですが、 わかりやすい本が一冊欲しいなと感じています。 ・ポインタ、参照、STLが普通に使える程度のC++使い ・DXライブラリでマインスイーパ、テトリス、インベーダー、ペンゴが作れる。 ・ペンゴが完成して、次は3Dに行きたくてDXライブラリ卒業 ・Seleneをインスコしたが、DirectXの基礎を理解していないので「出来合いを使わされてる」感が嫌 ・DirectX9.0cSDK学習開始←いまこのへん こんな程度のレベルですが、お薦めの書籍はありましたら教えてください。
499 :
デフォルトの名無しさん :2008/05/29(木) 17:24:02
498です。 「普通に使える」とかいって偉そうな表現になってすいません(涙) なんと表現して良いのか分かりませんが、とりあえず、意味を分かって使えるという程度です。 ホントすんません。 今後気をつけます。
逆引き発売から2年もたってたのか… 最近時間の流れが速すぎる
リファレンスが書籍で売られてたときから DirectXに触ってるけどちょっと前と比べて 最近は関連書籍の数が増えて恵まれすぎだろう これ1冊でOKみたいな本は相変わらずないが 部分部分みれば面白いこと書いてある本がいっぱいある この前本屋であまりの数に吹いたぜ
シェーダの深い使い方とか解説してる本が欲しいな ヘルプ見ればわかる事を延々買いてある本の多い事
504 :
デフォルトの名無しさん :2008/05/30(金) 02:34:17
>シェーダ t-potさんの本ぐらいかな。 あー、でも最近、エフェクト系の本 シェーダで書いてるな
最終的にはGame Programming Gemsあたりか
GPU gems1とCg Tutorialがweb公開されたからそれで何年か前のシェーディングはなんとかなりそう
英語よめねーorz
日本語版見つけました ページ数が半端ねぇw
日本語は途中まででしたorz 英語で頑張るか
初心者はそんなもん読まんでええ 普通に使えるようなってから出直せや
シェーダプログラムでエラー内容とかでないんだけど, Cのコンパイラみたいにエラー内容出すこととかできないでしょうか?
コンパイラつかえよ
D3DXCreateEffect系ならエラー文字列受け取るためのインターフェイス指定するだろ
>>513 見落としていましたorz
解決しました。ありがとうございます。
xファイル(テキスト)から座標系などの数字情報を取り出して 独自フォーマットとして出力する場合はテキスト解析プログラム で処理するよりはDXの関数で読み込んで、情報を取得して からの方が楽ですかね?
んだんだ xファイルは面倒だ
>>516 レスどうもです。
そういえばメッシュ読む関数って特に初期化はいらないんですよね?
どの初期化だ? D3DXMeshだっけか?ならいらないけど デバイスは初期化しとけよ
>>518 あーすみません。
メッシュ読んでそこから座標データなんかを抜き出したいだけで
表示はしないプログラムになるんですが、メッシュ読むだけに
わざわざ画面周りの初期化もいるのかな・・・と思いまして・・・
>>515 どんなXファイルからも読み込めるフルスペックの実装をするとなると面倒だが、
特定のツールが出力するフォーマット限定なら、自分でパーサ書いても
大したことないかと。
メッシュ読み込む関数がD3DXLoadMeshFromXのことなら、Direct3Dの
初期化が必要。DirectXFileCreateなら必要ない。
おまんこだよ
VS2005 C#なので Managed になるのでだいぶ違うんですかね・・・^^; 一応読み込み部分はネットで調べてできたんですけど そこから頂点情報とかの読み出しがさっぱりわかりませんorz
523 :
515 :2008/06/02(月) 20:54:20
Managed使うとしてもアンマネージC++のサンプルくらいは読めるようになったほうがいいよ
525 :
515 :2008/06/02(月) 22:22:39
>>524 あ、読めなくはないです。
もしかしてアクセス方法は変わってないです?
勝手版拾ってみた。 モニカだけ、裸になっても、 グラフィックが変わらないんだけど 何か足りない?
すごく・・・誤爆です
先日xファイルを読み込む件を相談した者です。 頂点情報を拾ってくることができたのですが、今度は読み込んだ情報が xファイルの中の情報と違っているという現象が起きました。 テストで使っているサンプルxファイルはメタセコイア付属のサンプル meka.mqo 使っています。 meka.mqoは四角ポリゴンで作られていますので三角ポリゴンに変更したあと 標準の出力機能よりxファイルを指定して出力しています。(法線、UV、頂点カラーすべて出力) このとき、xファイルの情報では面の数は752 頂点数は1098となっています。 これをこのたび作ったxローダーで読み込むと面の数は752のままですが 頂点数が1171と増加しております。 また、x座標データだけをリストボックスに出力してみると 増加している部分だけNaN(非数値)となっています。 これは何が原因なんでしょうか
「このたび作ったxローダー」とやらがバグってるのでは
>>530 ローダーそのものはDirectxのMesh.FromFileで読み込んで
NumberVerticesから数字を得ているだけで自前では何もやってないんですけどね^^;
同じ座標で法線の異なる頂点が分割されてるとか、そういうことではないかな 1つの頂点に複数の法線を持つことは出来ないから NaNの方はよくわからないけど・・・
>>533 法線の異なる頂点を分割したとすれば24という頂点数は計算が合う
表示されてる座標値がおかしいのはそのプログラムのバグでは
単純な線の描画はLineToで大丈夫でしょうか?
536 :
529 :2008/06/03(火) 16:39:05
>>536 NumberBytesPerVertex=36バイトだから、
PositionNormalColored (position=12, normal=12, color=4, 合計28バイト) ではサイズが合わなくないか
不都合というか・・・ Xファイルは同じ頂点に異なる法線を指定できるフォーマットだから、仕方ないのでは
そう考えるのが妥当でしょう
538 :
流石だ :2008/06/03(火) 16:56:00
小前提:結果が違う。 大前提:俺は正しい。 結論:ツールがおかしい。
OSのバグに違いない
>>538 けなしてくれてありがとうw
>>539 茶化してくれてありがとうw
>>537 おかげさまで解決しました。
ちなみにCustomVertexでアクセスしようとすると36バイトで見る方法がないのに
メッシュに座標、法線、UV、頂点カラー入ってると全部読み込む変な仕様なんですね。
あとメタセコも頂点カラー出力しない設定にしても出力しちゃうってのもはまる原因でしたorz
CustomVertex.PositionNormalColored -> position=12,normal=12,color=4 合計28バイト CustomVertex.PositionNormalTextured -> position=12,normal=12,UV=8 合計28バイト CustomVertex.PositionNormallColorTextured or CustomVertex.PositionNormalTexturColored (36バイト) という構造体は無いのにMesh.FromFileは読むのね・・・・
>CustomVertex.PositionNormalTextured -> position=12,normal=12,UV=8 合計28バイト CustomVertex.PositionNormalTextured -> position=12,normal=12,UV=8 合計32バイト
543 :
デフォルトの名無しさん :2008/06/03(火) 18:25:03
DirectX9.0の日本語ヘルプの「ステップ 1 : ワールド トランスフォーム行列の定義」 で三角形が回りません。これは回らないものなのですか? 文章もソースもどう見ても回しているようにしか見えないのですが、何故か回りません。 しかしタイトルが定義とあるので、定義だけしているとも解釈できます。 回す部分のソース D3DXMATRIX matWorld; D3DXMatrixRotationY( &matWorld, timeGetTime()/150.0f ); g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); 何故回らないのか、教えてください><
>>533 NaN以前に、立方体で-1,0,1と3種類の座標値が出てくる時点で
おかしいだろう。そこで気づかないと駄目。
>>544 おかしいのは気がついてましたが、法線の分割とかいうのが出てきたので
その関係で勝手に生成されたポイントかとも思ってましたので・・・
まだプログラミング経験浅いものですみません^^;
546 :
543 :2008/06/03(火) 19:19:15
自己解決しました
>>528 モニカといえばロマサガしか思いつかなかったので
「勝手版」とそれっぽいので検索してみたら案の定だった
548 :
デフォルトの名無しさん :2008/06/05(木) 04:55:23
絵を見る限りZファインティングっぽい。 Z座標がかぶってるんじゃね?
550 :
548 :2008/06/05(木) 12:22:41
なるほど。AutoDepthStencilFormat を D3DFMT_D16 から D3DFMT_D32 に変えたら、 とりあえず正常に表示されるようになりました。
あとは、カメラのminZとmaxZを必要最小限にすると解決する場合もあるかな
DirectXを利用し製作されたゲームが起動しないor画面が真っ暗か灰色ですぐ落ちる 状態です。 「モノポリー2」では、「お読みください」テキストに対処法があったので 今は普通にプレイできているのですが、 その他多数のゲームが起動できません。 「お読みください」によると 「Direct3D ハードウェアのドライバに問題がある可能性がある」ようなのですが、 どのように対処すればよいのでしょうか?
>>552 ここはプログラム「技術」に関する板でございますので、
購入したゲームのメーカーにお問い合わせくださいませ。購入したお客様には親切に対応してくれます。
ジョイスティックのキーストロークを送信できるAPIってありますか?
BOTを作りたいならWin32APIスレでいじめられてくるといいよ
DX8.1でサーフェスの内容をテクスチャにCopyRectsしようとしています。 しかし、どうしても出来ません。設定内容になにか追加する物がありますでしょうか。 FPSで重さを量ってみると、 CopyRects無し -> 400FPS サーフェス->テクスチャのCopyRects有り -> 350FPS ( 実行されている? ) テクスチャ->サーフェスのCopyRects有り -> 400FPS ( 実行されていない? ) 以上の結果になりました。何か抜けている物などがありましたらご指定下さい。m(__)m ●D3D初期化 ZeroMemory(&d3dppApp,sizeof(d3dppApp)); d3dppApp.BackBufferCount = 1; d3dppApp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; d3dppApp.Windowed = TRUE; //ウィンドウモード d3dppApp.SwapEffect = D3DSWAPEFFECT_DISCARD; //垂直同期でフリップ d3dppApp.BackBufferFormat = dmode.Format; d3dppApp.BackBufferFormat = D3DFMT_X8R8G8B8; // フォーマット d3dppApp.EnableAutoDepthStencil = TRUE; // ステンシルバッファ作成 d3dppApp.AutoDepthStencilFormat = D3DFMT_D16; // 16bit Zバッファ作成 d3dppApp.BackBufferWidth = 800; d3dppApp.BackBufferHeight = 600; pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dppApp,&pD3DDevice);
●テクスチャ初期化 D3DXCreateTexture(pD3DDevice,1024,1024,1,D3DUSAGE_RENDERTARGET,D3DFMT_X8R8G8B8,D3DPOOL_MANAGED,&pTexture0[MAX_CRTA]); ●メインルーチン pTexture->GetSurfaceLevel( 0, &pTmpSurface ); pMainSurfaceへ描画 pD3DDevice->CopyRects(pTmpSurface0,&rc,1,pMainSurface,NULL); pTmpSurfaceへ描画 pD3DDevice->CopyRects(pMainSurface,&rc,1,pTmpSurface0,NULL); ●テクスチャ表示 pD3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pD3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); pD3DDevice->CreateVertexBuffer(sizeof(D3DVERTEX) * 4,0,D3DFVF_VERTEX,D3DPOOL_MANAGED,&pTextureVB0); pTextureVB0->Lock(0,0,(BYTE**)&pV,0); pvを設定 pD3DDevice->SetStreamSource(0,pTextureVB0,sizeof(D3DVERTEX)); pTextureVB0->Unlock(); pD3DDevice->SetTexture(0,pTexture0); pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
画面は最終的に、黒にpTmpSurfaceへ描画したものになっております。 pD3DDevice->CopyRects(pMainSurface,&rc,1,pTmpSurface0,NULL); と ●テクスチャ表示 では、どちらを行っても同じ結果になっております。
デバッグランタイムにすれば、何が悪いのか教えてくれるかと
>>562 ご指摘、ありがとう御座いました。
ランタイムはデバッグで行い、D3DSpyを使ったりしてみても変化が御座いません。
pD3DDevice->CopyRects(pTmpSurface0,&rc,1,pMainSurface,NULL);
が、TextureとpMainSurfaceの型違いで、Copyされていないっぽいです。
ためしに、CreateImageSurfaceで、pMainSurfaceから複製したサーフェスには、
CopyRectsが出来ています。(双方向)
テクスチャになにかの型が足りないのかと思いますが、思いこみかもしれませんので、
ご指摘、お願いいたします。
>>563 pMainSurfaceとrcのコードがないから、それだけでは何とも言えない。
っていうか、本当にデバッグランタイムで何も言われない?
失敗してるなら必ずデバッグメッセージ出てると思うが。
>>564 ご指摘ありがとう御座います。
デバックメッセージは何も言ってきません。
デバックモードは、スタートメニューから[DX9]->[Install Debug]で設定してます。
RCは、rc.top=0;rc.bottom=600-1;rc.left=0;rc.right=800-1;
と定義しました。NULLにすると、pTmpSurfaceが1024*1024なのでハングしてしまいました。
pMainSurfaceの方は確実に描写されていました。
別のコクパチブルサーフェス(Bs)へCopyして、Bsへ描画して、pMainSurfaceへ書き戻した場合、うまく行きました。
最後のCopyRectsを無くすと、Bsへ描写した分は、ちゃんと描写されなかったです。
LPDIRECT3DSURFACE8 Bs;
pD3DDevice->GetRenderTarget(&Bs);
D3DSURFACE_DESC Desc;
Bs->GetDesc( &Desc );
pD3DDevice->CreateImageSurface(800,600,Desc.Format,&pMainSurface);
pD3DDevice->CopyRects(Bs,&rc,1,pMainSurface,NULL)
Bsへ描画
pD3DDevice->CopyRects(pMainSurface,&rc,1,Bs,NULL)
自己レスですみません。テクスチャに直接描画する様にしたら問題なくなりました。
スプライトの上下反転表示って、出来る人いる? 自分の使ってるGF7600GSだとダメみたい。 rect.top=480 rect.bottom=0 でもダメで、 rect.top=0 rect.bottom=-480 もダメ。 データその物を反転して持たなくて甚目なのかな。
ID3DXSprite使ってという意味? 行列のスケーリングに反転指定すりゃできんじゃねーの
UVをいじるとか・・・
>>568 ありがとさん。スケーリングの方をつかうんですね。ちゃんと動きました。
>>569 こっちもレスさんきゅう。
>甚目 「はだめ」なのね。
572 :
誰か一緒に考えてください :2008/06/13(金) 22:45:22
もしプロトコルを開発するならどんなプロトコルにしますか??
TCP/IPみたいなやつ でもちょっと高速なやつ
要求仕様を明らかにせよ
自前で作って 良くわからんバグチェックに時間費やすくらいなら すでにあるもの使ったほうがいいと思うが
>>572 まずは他人に何をしたいのか伝える程度のプロトコルを身につけろ。
開発云々以前の問題。
577 :
デフォルトの名無しさん :2008/06/14(土) 00:28:54
フルスクリーンでげーむをやろうとしたところ、起動できなかったので、 DirectX診断ツールのDirectDrawでテストしたところ DirectDraw テスト結果 : エラー - ステップ 17 (SetDisplayMode を 640x480x16 に): HRESULT = 0x80004001 (未実装) とでました解決策などありますか?
>>577 プログラムを開発する事に対する関連性を述べよ
579 :
デフォルトの名無しさん :2008/06/15(日) 03:22:14
低レベルですが失礼します。 directX 9.0のウェブセットアップをダウンロードしたのですが、 セットアップをしようとすると、インターネットに接続している状態 でも「ネットワーク接続を確認してください」と出てしまいます。 原因等、よろしければお願いします。 あと、directX 9.0はSP1の状態でも大丈夫でしょうか?
文字表示なんですが、リアルタイムでフルカラーで表示出来るようにするには、 LockRectしか無いでしょうか。 指定された8色とかでしたら、文字は抜きのテクスチャにして、 ベースの色テクスチャを抜き出すという方法が使えると思いますが、 フルカラーでしたらどんな方法がありますでしょうか。
>>581 αで文字を描いて、色は頂点カラーで与える。
ピクセルシェーダーでおけ
カメラにレンズ効果を付け加えるにはどうしたらいいですか?
フレア、収差、立体視、どれ?
587 :
585 :2008/06/16(月) 09:52:28
たとえば魚眼レンズみたくしたいです。
単純に視野角を広げればいいんじゃね?
ひずませたいんじゃね?
>590は対角魚眼だな。全周魚眼にしたいならパラメータを調整して、更に範囲外の処理もしなくてはいけない。
で、でたー
バックバッファサイズ640*480のフルスクリーンで動作するアプリケーションを作ったのですが アプリを終了してフルスクリーンから復帰すると他のウィンドウのサイズが 640*480に強制的に変化してしまう現象に悩まされています 原因に心当たりがある方いらっしゃいませんでしょうか SDKはDirectX9/December 2004を使ってます
ごく希に、他のウインドウの表示位置がずれたり、640*480になるときがある。 しかし、常時なら、 バグで終了してないか? ちゃんとリリース処理をしているか? QuitMessageを使っているか? 細かくプログラムを切っていって、原因を突き止めないと何とも言えない。
DirectDrawにその問題あった気がすんな。 アプリ終了前にちゃんとAPIを通してウィンドウモードに戻してみ?
きちんと戻したければ、各ウインドウのサイズを記憶しておいて、自己責任できっちり戻せ。 大して手間のかかる処理じゃない。
画面モードを元に戻さずReleaseしてる例ならよく見る罠。 SetCooperativleLevelな。
効率の良い線や四角形の描画方法ってありますか?
ありません
ブレゼンハムのことか?
アニメーションや親子関連の情報が入ってるXファイルの フォーマット解説しているサイトとかありませんかね?
あて先を間違ったレスって恥ずかしいよね
604 :
デフォルトの名無しさん :2008/06/18(水) 23:32:18
テクスチャーを張ったポリゴンの色を変えたいんだけどどうすればいいんだろう? マテリアルのディフューズ色を変えても変わらなかった 具体的には灰色のテクスチャーを張っていて、色々、色を変えたいなと思って 誰か教えてくだせえ
頂点カラーでぐぐれ。 それ以前にデフューズいじって変わらないのはおかしいが。
606 :
デフォルトの名無しさん :2008/06/19(木) 08:44:51
言葉がたりなかったんだけど、ポリゴンっていうかXファイルのモデルの色を変えたかったんだ。 モデルにしても頂点カラーで色を変えられそうだけどコストかかりそうだね なんか良い方法ないかなあ
>>606 シェーダーパラメーターでやればほぼノーコストだろう
>なんか良い方法ないかなあ 他の方法を模索する前にちゃんとマテリアルのデフューズで 変えられるようになるのが先です
いいこというね
低レベルな質問で申し訳ありません カメラの回転のトラブルなんですが カメラ中心の回転とカメラの移動を同時に することができません ソースがおかしいのでしょうか?どなたかご教授お願いします D3DXMATRIXA16 matView,matCameraPosition,matHeading,matPitch; D3DXVECTOR3 vecEyePt( fCameraX,fCameraY,fCameraZ ); //カメラ(視点)位置 D3DXVECTOR3 vecLookatPt( fCameraX,fCameraY-1.0f,fCameraZ+3.0f );//注視位置 D3DXVECTOR3 vecUpVec( 0.0f, 1.0f, 0.0f );//上方位置 D3DXMatrixIdentity(&matView); D3DXMatrixRotationY(&matHeading,fCameraHeading); D3DXMatrixRotationX(&matPitch,fCameraPitch); D3DXMatrixLookAtLH( &matCameraPosition, &vecEyePt, &vecLookatPt, &vecUpVec ); D3DXMatrixMultiply(&matView,&matView,&matHeading); D3DXMatrixMultiply(&matView,&matView,&matPitch); D3DXMatrixMultiply(&matView,&matView,&matCameraPosition); pDevice->SetTransform( D3DTS_VIEW, &matView ); fCameraXで移動、fCamerapitchでカメラの回転です
>>610 そこでD3DXMatrixLookAtLHを使う意味がワカンネ
>>611 ご回答いただいたのにすいません。どこをどう直せばいいか
教えていただけたらありがたいです。
SetCooperativleLevel に一致する日本語のページ 約 件中 - 件目 ( 0.098231 秒) SetCooperativleLevel に該当するページは見つかりませんでした。
クォータニオン?
×>SetCooperativleLevel ○>SetCooperativeLevel
616 :
610 :2008/06/19(木) 16:14:55
原点中心の回転ならわかるのですがカメラ中心の回転がわかりませんでした、 調べ方が悪いのか書いてるページも見つからないのでどなたかご教授お願いします
At=Eye+向きたい方向ベクトル
DirectX7じゃないっすか
>>616 610のLookAtが余計。
あるいはLookAtだけで十分。(注視点を回転させる)
それと、View行列は概念上はカメラの位置や向きを設定する行列だが、
実際の計算ではカメラが動くのではなく世界を回転させてカメラの位置に
合わせるので、回転や平行移動に関する考え方が逆になる。
変換の順番も普通とは逆で、まず平行移動させてから回転させる。
移動量も回転角もマイナスを賭けた値で。
(View行列をかけた後の原点がカメラの位置になる)
みんなはクォータにオンバリバリ使ってるの?
Xファイルのアニメーションはクォータニオンだし 最低限の回転や補間や行列への変換くらいは理解してるじゃろ。
俺は理解してないけど使えるからいい 難しいことは頭のいい数学屋さんにお任せ
テクスチャを左右反転して表示させるにはどうすればいいのでしょう? ポリゴンの裏表を逆にしたり、uv値をいじったりはしてみましたが寸でのところでうまくいきません。 2の乗数の大きさのテクスチャでなら、u値を負にしたらできたのですが…。 ご教授くださいませ。
頂点座標に対するuvが 左上uv 0,0 左下uv 0,1 右上uv 1,0 右下uv 1,1 だった場合 こうすれば 左上uv 1,0 左下uv 1,1 右上uv 0,0 右下uv 0,1
u = 1.0 - u かな
>>624 ,625
ありがとうございます、できました!
uv値がポリゴンの頂点に対応しているということをいまいち理解できていなかったようでした…。
DX8.1でIMEを制御、入力するにはどうしたらよいでしょうか。 参考URL等を教えていただけると幸いです。
>>627 DX9のSDKにIME制御のソースあるよ。
描画にID3DXSpriteを使っているところ以外はバージョン関係なさそうだから
DX8.1に移植もそんなに難しくは無いと思う。
>>629 こんなソース初めて見た
俺のもそうだが
社内の他のグラマのもぜんぜん違うソースだったな
ネタだろこれw
>>629 >結局のところ結局のところ
大事なので2回いいました
DirectDrawアクセラレータを無効にしたいんだが、診断ツール開いて変更しようとしたんだが、 「使用できます」とだけ表示されてて変更ができないんだが、どうしたらいいのだろうか? OS Vista Home Premium V/B Mobile Intel(R) 945 Express Chipset Family DirectXのヴァージョン DirectX 10
ディスプレイのプロパティのトラブルシューティングとか、DirectX SDKのコントロールパネルとか。 そもそもVistaじゃ切れないんじゃないか?
DirectXが使える人って頭いいと思う。
頭いいかどうかはわからないが、尊敬はする 俺にもたぶん無理>絵
絵は好きかどうかがすべてだと思うので やっぱりDirectXのほうが頭いいと思う。
昔のI/Oのヘルプ丸写しのDirectX本はサンプルの絵がヘタすぎて 立ち読みするのが恥ずかしかった記憶が
640 :
もこ :2008/06/30(月) 23:47:51
DX(JUNE2008)をDLしてインストールしてたら最終設定でERRORが出てDXerrorとDX.log見てがんばってね♪ みたぃなことを言われたんですがどぅすればぃぃんですヵ? PC初心者でぜんぜんゎかんなぃです。 あとXPです。
>>640 グラフィックボードの種類、DXerrorとDX.logの中身、スリーサイズを答えよ
642 :
もこ :2008/07/01(火) 01:02:47
S3 Graphics ProSavage + utilities グラフィックってコレですヵ? module: dsetup32(jun 6 2008), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX InstallPlugIn() failed. DXはよくゎかんなぃですがコレですヵ? あと最後の質問はシークレットでぉ願ぃします。
S3ワロタ
オンボードのVIAチップセットのやつか
そこは10年以上前のoxygenとか持ってきて欲しかった
S3はインストールすら許されないんだな
質問させていただきます。 自宅のPCはインターネットを繋いでないのですが、サイトからのダウンロード以外で、DirectX9.0をダウンロードできる方法はあるのでしょうか?
別の場所でダウンロードするとか、添付されてる雑誌や本を買うとか、 MSDN入会するとか、MSに問い合わせるとかするのがいいんじゃない?
・体験版が入ってるCD-ROMつき雑誌 ・自作PCで最近のパーツならパーツ付属CD-ROMに入ってることもある。 ・市販ゲームに同封してる(かもしれない) くらい? あとはネットカフェととか友人宅で・・・ でも最近ってネットワークダウンロードになちゃってるので 一式ってDLできるのかな?
SDKの中に再頒布可能パッケージが入ってた気がするからそれ使えばいいんじゃないの
どっちにしろ
>>648 ,
>>649 の言うように別の場所で落としてCDか何かに入れる必要があるけど
超初心者用スレだが、SDKと銘打ってない以上スレ違いだろう 650までで完結してる話題にチャチャを入れるのもなんだが
>>647 です。
雑誌も探してみたのですが、どれに付属しているのかがよく分かりませんでした。教えていただいた通り、MSに電話をするか、ネットカフェでダウンロードをするかを考えてみます。
みなさん、丁寧な回答をありがとうございました。
スレ違いのようでしたら、申し訳ありませんでした。
DX8.1で質問です。 ->presetのエラー処理ですが、[CTRL]+[ALT]+[DEL]で確認したところ、 Spriteの所で落ちます。単純に葉っぱのCGを2Dで表示しているだけですが、 回避方法はありますでしょうか。
BMPとPNGからテクスチャを作成した場合、とられる容量は同じでしょうか?
un
>>653 VistaかDirectX9を使え。
DirectX8のステートブロックの例外落ちだよな?この問題の解決方法俺も知りたい。つーか発生条件がわからん。
ALT+CTRL+DEL押したならロストしてるだろ。 リソースの復帰とデバイスのリセットしないとだめだろ。 Spriteも一緒だぞ
658 :
デフォルトの名無しさん :2008/07/06(日) 19:30:44
すみません質問です。 同人ゲ作ってるのですが、DirectInputを初期化したらウイルスバスターが 反応して以下のポップアップが出てジョイパッドが制御出来なくなります。 - - - - 安全のため、以下のプログラムによる変更を拒否しました。 sample.exe(nnnn)が、プログラム起動時にDLL(プログラムライブラリ)が 自動的にロードされるように、Windowsの設定を変更しようとしています。 ロードされるDLLによっては、お使いのコンピュータのセキュリティや 動作に重大な重大な影響を与える場合があります。 危険度:高 ルーチン名:NtUserSetWindowsHookEx - - - - トレースしてみたところ、DirectInput8Createした段階で警告が出るようです。 プログラム側でこの現象を回避してジョイパッドを使用する方法はないでしょうか?
659 :
658 :2008/07/06(日) 19:52:47
自分のPCのスペック書き忘れたので補足です。 WindowsXP SP3(Professional) VisualC++.net2003(Standard)
検索してみたらいろいろなソフトでその警告が出ているみたいだけど ウィルスバスター側のほうに問題ありなんじゃない?
>>656 そうですか。やはり原因不明ですか。DX9に切り替えます。
>>657 もちろん、やっております^^;
>>661 まずDirectXのデバッグモードでなんてエラー出てるか見ろよ・・・
原因の9割がそこに書かれてる。
>>662 いや、原因不明で、突如どこかで止まる。BoundChckerでしらべても、
急にDIBのポインタが使えなくなってたりする。
->Sproteを全部取り除けば問題なく動くし。
それどっかでメモリ壊してるとかじゃないの
テクスチャをSpriteを使わずにアルファ値で合成って出来るのでしょうか。 アルファプレーンではなく、80%とかのアルファ値です。 レンダリングターゲットを変更して、2枚つのシーンのクロスフェードをしています。
>>664 アクセスするだけで違反。手に負えない。
リセットの前に、Sleep(6000)とかやると大丈夫なときがあるけど、
その値も、Spriteの数によって違ってくる
>>664 ちなみにSpriteを使わずにTextureを直に表示だと全く問題なし。
しかし、665の問題が解決できないとSpriteのお世話になるハメに(^^;
>>668 すまん、浅学なオレに教えてください。
128*128位のテクスチャ作って、アルファチャネルだけ、変更しようとしてました。
頂点カラーにアルファ入れて、 ステートでMODULATE指定汁
サンクス。了解です。
どさくさで悪いんだが、DXエラーダイアログがでなくなっちまった。 どうすればいい? XPsp2+DX9.0B
673 :
デフォルトの名無しさん :2008/07/09(水) 13:04:43
DirectDrawをサポートしている最後のDirectX SDKはなんと言うバージョンですか?
最新のでおk
あざーっす
正規のOS使ってれば何も考えなくてexeが落ちてきて、 そのままダブルクリックするだけだが。 ダウンロードできないつーならちゃんとOS買おうね、としかいえんが・・・
最近は正規バージョンのチェックプログラムもセキュリティで抑えられちゃうからな。 ちゃんと説明読んでその通り実行すればいいけど、結構煩雑。
DirectX9から10に乗り換える必要ってありますか?だいぶ違うものなんでしょうか? 9が使いこなせるわけじゃないんですが、やるなら10のほうがいいですか? 11が発表されたのであれですが
XP に DirectX10 が乗らないんだから、 いまのところは、DirectX10 を使うんだったら、 DirectX9 も選べるように作るのが普通。 当然、今後習得する必要はあるが、 乗り換えるんじゃなくて、二股、 三股をかけてくことになるだろうな。
>>681 「させ方」だからユーザーにインストールさせる方法だと思う
このスレって、質問者には参考にならないけど、傍観者には参考になることが多々ある。 質問者にもう少しやらしくしたらどう(笑
684 :
デフォルトの名無しさん :2008/07/11(金) 10:01:43
HLSLでWeb2.0っぽいエフェクトをかけたいのですがサンプルとかどこかに落ちてませんでしょうか
まずはWeb2.0っぽいエフェクトとやらを明確に定義しろ
686 :
684 :2008/07/11(金) 16:02:11
テクスチャの張り方が分かりません。 何がおかしくてどう調べたらいいのか分からないんですが、どうやって調べたらいいんですか?
今どこまでやって、どういう風になってるの?
頂点に対応するuv座標を設定してあげればいいだけじゃあ・・・ さすがに複雑なモデルの場合はモデル作ったソフトででも やらないときついけどね。
691 :
688 :2008/07/11(金) 18:51:05
CreateVertexBufferでバッファ作ってuvやら座標を指定して、LPD3DXEFFECT->SetTextureでシェーダにセットするまで作りました。 LPDIRECT3DDEVICE9->DrawPrimitiveで描画しています。 シェーダの中はuvをそのままコピー。 指定した頂点の色のポリが出ているだけで、テクスチャは張られていません。
>>691 LPD3DEFFECT じゃなくて、LPDIRECT3DDEVICE9 の方の SetTexture じゃない?
シェーダーを使ってるの?
693 :
692 :2008/07/11(金) 19:04:10
あぁ、シェーダを使ってるのか。 シェーダファイルの中身が間違ってる可能性が高いな。
>>692 HLSLで色々やりたいのでシェーダーは使っています。
今のところ座標変換以外は、そのまま返しているだけですが。
695 :
694 :2008/07/11(金) 19:28:48
>>693 ありがとうございます。分かりました!
シェーダーを見直したらピクセルシェーダが何故かテクスチャじゃなくて、ディフィーズをそのまま返していました。
uvがまだバグって何故かモザイクですが、とりあえずテクスチャは出ました。
VB6とDX8でゲーム作ってて一通り動くようになった。 jpgやpngの読み込みをCreateTexturefromFileでやってたんだけど、 後々画像ファイルをいじって見れない形にして読み込むようにしたいなと思ってます。 画像ファイルの操作とfromFile以外の読み込み方法の知識が必要になるんだろうけど VBで参考になりそうなものがなかなか見つからないです。 ここでするような質問じゃなかったかな・・?
>>697 独自フォーマットを 途中で jpeg か png に変換して
D3DXCreateTextureFromFileInMemory でどうぞ。
メモリをのぞかれたら終わりだけど、そこまで気を
使っても仕方がないような気がするし。
そんなまどろっこしいことしないで、普通にテクスチャ作ればいいと思うが。 なんでわざわざD3DXCreateTextureFromFile系を使いたがるのか。
”普通”といえるほど確立された手法があるの?
>>700 CreateTextureしてLockして書き込むのが普通。
D3DXCreateTextureFromFile系を使う方が特殊だと思うが。
>>701 Lock して書き込むのは一般的に見えるかも知れないが、
以前はビデオカードによって確保されるフォーマットの種類が違って結構ややこしかった。
確保できるフォーマットごとに条件わけしてフォーマットを流し込むコードを書くわけだけど、
そのときに結局、一度は32bitか24bitでメモリに展開してそれを変換しつつ16bit のテクスチャに
コピーしたりすることをみんなやってた。だったら、展開してファイル形式にして
D3DXCreateTextureFromFileInMemorを使った方が楽って話になった。
今だって、このフォーマットなら確保できるだろう、という感覚でソースを書くと、テクスチャの
フォーマットが追加されるたびに(たとえば浮動小数点とか)ソースを書き加える必要が
出てくる。そして条件わけがどんどん増えていくと。
ミップマップとか面倒くせぇし、 画像サイズを変えざるを得ないビデオカードとかあるからマジ無理。
>>704 以前はあったなw 256x256 のサイズしか確保できないビデオカードw
Voodoo3最強!
707 :
697 :2008/07/12(土) 05:59:40
ありがとうございます。 自分が作ってるのは2Dゲームで、キャラをまとめたテクスチャを読み込んで、 一部を切り取ってパラパラアニメのように表示しています。 CreateTextureFromFileしか思いつかなかったのですが他の方法もあるんですね。 独自フォーマットの詳細も分からない日曜プログラマなので、そこから調べなくてはならないですね。
>>707 いや、独自フォーマットは自分で作るフォーマットのことだよ。
どんなんでもいい。
709 :
デフォルトの名無しさん :2008/07/12(土) 23:17:23
皆さんはDXUT使っておられますか? directX9でもrelease時期によって微妙に仕様が違うようだし、 今後も変更されると思うと、使った方がいいのかどうか判断に 迷います。
DirectX9自体が変更されることはないんじゃないかねえ。 そんなんするくらいならDirectX10やDirectX11の方に労力割くだろう。
711 :
デフォルトの名無しさん :2008/07/12(土) 23:41:24
すみません。 DXUTの仕様が微妙に変わっているのでは? という意味でした。 やはり、DXUTを勉強をするくらいなら、もっと先に勉強するものが あるだろう、という意味に解釈しました。 ただ、DirectX10はWindowsXP上では動かないし、まだ仕様が 変更されそうなので、DirectX9を勉強しようと思っています。
DXUTは勉強用のサンプル
正直、vista はなんというか過渡期的な匂いを感じるな。 ダイレクトXに関しては NT4.0 みたいな中途半端な実装を感じる。
俺、馬鹿だからDXUTのソースコード読めないわ
このスレで神秘体験できるとは
DXUTは勉強するもんじゃなくて ある程度わかってる人が手間を減らすためのものだろ
719 :
デフォルトの名無しさん :2008/07/13(日) 16:58:05
>>712 真意がわかりません。
DirectXを勉強するサンプルコードとしてぜひマスターしておくべきもので
しょうか?
それとも、これはあくまでサンプルコードにすぎないから、勉強するほどの
ものではないのでしょうか?
コールバック関数使いまくりの癖があってあんまり好きじゃないでうが。
独自のエディットボックスとかラジオボタンとかもMFCのDialogボックス
の方に慣れてますし。
GLUT使ったことある人にはとっつきやすいよ 1からWindows的プログラミングするよりは楽
721 :
デフォルトの名無しさん :2008/07/13(日) 17:28:19
うーん。悩むなぁー。確かにOpenGLではGLUTを使った方が 良いですが。 だけど、OpenGLではメタセコイアなどで別のツールでXファイルを 作成しておき、directX側で読み込むような芸当ができないんですよね? 全然ないとは言わないけど、ほとんどない。
>>719 グダグダいう暇があったら使ってみりゃいいじゃねえか
>独自のエディットボックスとかラジオボタン
MFCが使いこなせているなら、DXUTのコントロール使うのはそんなに苦労しないと思うがな。
IDとパラメータ指定してコントロールのポインタを取得するんだからそんな変わらんだろ?
723 :
デフォルトの名無しさん :2008/07/14(月) 08:43:28
>>グダグダいう暇があったら使ってみりゃいいじゃねえか よく,プログラミングの勉強では,これも勉強しておいた 方がいい,あれも勉強しておいた方がいいという意見が あるけど,それを真面目に信じて勉強して挫折したことが 多々あった. 結局,現在の自分の実力とつき合わせて何をまず勉強すべき か,どの本で勉強すべきかを見極めることが重要だ. ところが,プログラミングの技術はある程度やってみないと 今の自分に役に立つのかどうかわからない.苦労して勉強した 割りにはあまり役に立たないこともある. それでdirectXをこれから勉強すべき人間にとってDXUTが 必須のアイテムかどうか聞いてんだよ. お前みたいな言いする奴は,結局,何の助力にもならない. うざいから引っ込んでろ.馬鹿. もうこのスレ見ないから批判でも何でもせいぜい書き込め バーカ
ぐだぐだ言ってる暇があったら作ってみ(ry
本当にグダグダ言っててワラタ 手前で勝手にやれよとしか助言できませんすみません
おらも東方が作りたいだ
コンピータのジョンルに限らず、基本は模写から。 模写することで全体像が見える。全体像が見えれば、もっと効率が良かったり管理し易かったりする方法が見えてくる。 とりあえずやってみろってのは、何が必要かを知るための作業。 何が有効かも分からない現在の状況からすりゃ、最も有効な手段だと思う。 これを産業にすると、 いいから やれ アホ となる
人の意見がないと何もできないタイプの人間なんだろ 流行らないものを学んだら損すると思うタイプ
730 :
デフォルトの名無しさん :2008/07/14(月) 16:34:27
ほんと、つまらん糞DQN共だ。しょうもないことしか言えん屑のくせに 死ね
>>723 アレ? なんでキレてんだw?
>現在の自分の実力とつき合わせて
>プログラミングの技術はある程度やってみないと
その通り。だからグダグダ言う暇があったら(ry
>もうこのスレ見ないから批判でも何でもせいぜい書き込め
>>730
>>723 > よく,プログラミングの勉強では,これも勉強しておいた
> 方がいい,あれも勉強しておいた方がいいという意見が
> あるけど,それを真面目に信じて勉強して挫折したことが
> 多々あった.
真面目に勉強しておけば、血となり肉となる。
挫折してる暇なんかない。
> 結局,現在の自分の実力とつき合わせて何をまず勉強すべき
> か,どの本で勉強すべきかを見極めることが重要だ.
それ、いらないんじゃないかな?
> ところが,プログラミングの技術はある程度やってみないと
> 今の自分に役に立つのかどうかわからない.苦労して勉強した
> 割りにはあまり役に立たないこともある.
そういうこともあるだろうね?
そうじゃないこともあるだろうね?
> それでdirectXをこれから勉強すべき人間にとってDXUTが
> 必須のアイテムかどうか聞いてんだよ.
それは人によって見解が違うと思わないか?
> お前みたいな言いする奴は,結局,何の助力にもならない.
それ、違う。
読み返してみ?
> うざいから引っ込んでろ.馬鹿.
> もうこのスレ見ないから批判でも何でもせいぜい書き込め
> バーカ
いいから落ち着け。
そもそも、人に何が必要か聞くのはやめておいた方が良い。 そんなことよりも、自分が作りたい物に必要な物は何かを判断する能力を養うことが必要。 今の自分に何が役に立つのかを考えられない人間はプログラマには向かない。 必要な物がわかったらそれの使い方がわからなければ聞くことが出来る。 そして、その質問なら答えてもらいやすい。 >directXをこれから勉強すべき人間にとってDXUTが必須のアイテムか? この質問に答えましょう。「必須」ではない。 DirectX を勉強したいなら、DirectX で何か一つ作るべき。 そのときに DXUT が必須かどうかわかるはず。 それから、物作りの意欲は何もないけど DirectX を勉強したいです、 という人はこの世界じゃまず通用しない。偉そうな言い方だけどね。
OGGのライブラリのフリー版てどこかにありませんかね。 本家はGPL/LGPLなんで、DLLかまして使用しないといけないんですが、 フォーマット自体はフリーPDSなので、OGGの仕様を利用しているフリー版が あったらな〜って思ってます。情報、無いでしょうか。
っ 仕様書を元に自分で書く
OGG?
OGGはBSDライセンスだろ。
GPLなんかになってたら当初の対MP3って思想から思いっきりそれるじゃん
ソース毎にBSD/GPL/LGPLが紛れてる。 気をつけるべし。
何を指して話しているのか全然分からん。
oggを知らんのか?ライセンスを知らんのか? oggってのはほとんどフリーの音声圧縮ファイルのこと BSDっていうライセンスがほとんどフリーってこと GPLっていうライセンスは条件付きでフリーってこと ごめんちょっと違うかも
>Ogg(オッグ、オグ)は、マルチメディアコンテナフォーマットで、Oggファイル、 >Oggコンテナなどと呼ばれている。
>なお、Ogg Vorbisを単にOggと呼ぶことがあるが、Oggはコンテナの名称であって >コーデックではないことに注意すべきである。 大切なことなので2レスに分けてかきますた
>>740 そんなの初めて知った
いちいちソースファイル覘かないといけないのか?
このスレにいるレベルなら関係ないんじゃないか? LGPLでソース公開になってもたいした損害じゃないしさ。恥はさらすけど(笑 ソース単位でBSD/GPL/LGPLなのはホント。 だから、リンクするファイルぐらいプロならちゃんと読めって話し。
スレチだが叩かれないヌクモリティ
ワロスw
DirectX SDK 9.0をインストールして、その中にあったVoiceClientServerの voiceserverを試しにビルドしてみたのですが、 C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(236) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。 などのコンパイルエラーがでてしまいます。 検索をしたらいくつかみつかったのですが、はっきりとした原因と解決策はわかりませんでした。 申し訳ありませんが、何か知っている方がいらっしゃいましたら教えてください。 お願いします。
ちゃんと読んでないけどこんなのいちいち気にしてられっかよ とか言ってると叩かれそうだな
特許には詳しくないけど、使用回数とかそういうインテリジェントな管理をしてなければ大丈夫っぽくない? >【0003】この点、従来のフォントキャッシュ方式では・・・ 従来のというくらいだから、フォントキャッシュ自体はすでにあったということだし
このスレに居るようなアマチュアに特許訴訟するほど企業も暇じゃないから
装置がどうとかCPUが云々とかあるし、これ、プリンタ絡みの特許なんでね? メーカー名もリコーっていったら・・・
特許として認められてる訳じゃなくて、出願してるだけ。 使用回数を考慮したキャッシュなんて既に枯れた手法。 >【0003】この点、従来のフォントキャッシュ方式では・・・ 新村 龍雄さん 2002に発明ってwwwww こんなもんが通ったらキャノンはじめ他ベンダーが黙ってねーよ。 出願は先にしたもん価値だけど、実際通ってないし、 個人が心配する必要なし。
つか出願されてない既存技術を使って儲けようとする特許ゴロには吐き気がする
アメリカにはサンドイッチの端を閉じるという特許がありんすね 特許出願数は日本のほうが多いけどn
>例えば文書作成装置などに使用されるアウトラインフォント展開装置に関し、特にフォントキャッシュ管理方式に関する。 ワープロじゃん。
これって、アウトラインフォントじゃなければリコー自身がかつてワープロ(機械の方)で実現してたと思う。 ラスタフォントの特許が切れたからアウトラインフォントで取り直そうってことだったりするのかなw # まぁ、社内で「特許申請」することが要求されているんだろうけどね。
760 :
749 :2008/07/17(木) 14:00:08
私の質問はスレ違いなのかレスがないので、初心者用に改めて 質問させてもらいます。 場を汚してしまいすいませんでした。
たった3時間で何言ってんの
うむ、気が短すぎる。 でもそのサンプル、昔のSDKそろえなきゃならんから試すのはめんどい・・・
763 :
749 :2008/07/17(木) 14:33:55
すいませんでした。 みなさん、別の話をされていたので流されたのかと思ってしまって。 インクルードディレクトリの設定で、Windows SDKsを最優先にしてみたのですが やはりだめでした。 もしかしたらという情報でもいいので教えてください。 お願いします。 マルチのような結果になってしまって申し訳ありません。
該当行は typedef void * POINTER_64 PVOID64; か。 探してみるとBaseTsd.hで定義されてるしWinNT.h経由だし、なんだろね。 面倒だからPOINTER_64を __ptr64でdefineしてしまうとか
765 :
749 :2008/07/17(木) 14:35:57
言い忘れましたが、 IDEはVisual C++ 2008 Express Edition OSはWindows XP SP2 です。 また、もっと適切なスレがあればそちらにいきますのでご指摘お願いします。
766 :
749 :2008/07/17(木) 14:53:00
>>764 さん
ありがとうございました。
該当行の直前に
#define POINTER_64 __ptr64
を追加しやりすごすことができました。
チラシかもしれませんが、そのあとのアプリ起動確認までを報告させてください。
次のエラーはrcファイルの中でインクルードしているafxres.hがみつからないというものでした。
検索してみると、
#include <windows.h>
#define IDC_STATIC (-1)
と書いたafxres.hをカレントディレクトリにおけば解決とかいてありそれで大丈夫でした。
あとはライブラリの名前dplay.libをdplayx.libに修正したらできました。
また何かありましたら、お聞きするかもしれませんが、よろしくお願いします。
ありがとうございました。
さきほど質問した749です。
またすぐに質問してしまい恥ずかしいのですが、教えてください。
DirectX SDK 9.0のサンプルVoiceClientServerのvoiceclientとvoiceserverのビルドが
完成し、WindowsXPでの動作確認は軽くしたのですが、続いてVistaでもclientを起動し
XPで開始しているvoiceserverにアクセスしようとしたときにエラーが発生し終了してしまいました。
そこで、Vistaで使うアプリはVistaでビルドすればいいのかとDirectX SDK 9.0をインストールしようと
したのですが、Download detail(
ttp://www.microsoft.com/downloads/details.aspx?familyid=124552FF-8363-47FD-8F3B-36C226E04C85&displaylang=en )
を見るとSystem RequirementsにVistaは含まれていませんでした。
Vista用のDirectX SDKがあるのでしょうか?
November 2007までのアップデートを行えばよいのでしょうか?
さきほど、November2007をインストールしたら先ほどインストールしたC:\DXSDKではなくProgram Filesの中に作られてしまい、
また、その中にはDirectPlayははいっていないようでした。
付属のドキュメントを見ると、DirectPlayは推奨されずWinsockを使うべきと書いてありました。
もうDirectXを使ってネットワーク通信を行うべきではないのでしょうか?
代替となるライブラリができるのでしょうか?
ちょっと今DirectPlayが推奨されていないと聞いてショックを受けてます。
それ以降の調査はあまりしていません。
何かご存知の方がいらっしゃいましたらよろしくおねがいします。
>付属のドキュメントを見ると、DirectPlayは推奨されずWinsockを使うべきと書いてありました。 現状では、これ以上でもこれ以下でもないよ。
DirectPlayは次の世代でサポートしないってだけじゃなかったっけ? たしか.NET側で吸収するってことだったと思うけど DirectShowもDirectXから独立したし珍しいことではないと思う そもそもこのスレが対象にしているC++/DirectX(非.NET)自体がもう今の世代で終わるんだから 次の世代を見越してDirectPlayを回避するのはナンセンス
DirectPlay のハンドルリークってどうなの?なんかバギーだって聞いたんだけど。 あと、UDP しかサポートしてないってのも、DirectPlay を選択しない十分な理由になると思う。 DirectX11 は .NET だけになるの?別に OpenGL + ASIO + Winsock でも良いけどな。
771 :
767 :2008/07/17(木) 23:58:43
>>768 さん、
>>769 さん
ご返事ありがとうございます。
>そもそもこのスレが対象にしているC++/DirectX(非.NET)自体がもう今の世代で終わるんだから
そうなんですか・・
DirectPlayが推奨されていないことなど比べ物にならないほどショックを受けました。
それでは、Winsockを使うべきといっているのも.NET側が吸収するまでのつなぎとしてWinsockをおしているだけなんでしょうか。
DirectPlayが使えたらそれでよかったのですが、vistaではサンプルが動かなくて、その上vista対応のNovember 2007にはすでにDirectPlayは
存在しなかったので、ドキュメントのアドバイス通りwinsockにしようかと考えていたところだったのですが、
それすらももう遺物になるわけですね。
今の世代はあとどのくらい続くのかわかりませんが、さびしいです。
>>769 >>DirectPlayは次の世代でサポートしないってだけじゃなかったっけ?
とっくにSDKから削除されてますがな
>>そもそもこのスレが対象にしているC++/DirectX(非.NET)自体がもう今の世代で終わるんだから
そのわりにはDirect3D10の.NET用ライブラリが未だに用意されてませんが
>>次の世代を見越してDirectPlayを回避するのはナンセンス
てゆーか「次の世代」って具体的にナニ?
DirectPlayはセキュアな設計じゃないから使うなと言うけど、 それなら代わりの物を用意して欲しいな。 IWANGOで色んなゲームの対戦ができた頃は良かった。
WinSockという何でも出来るものが用意されている。
ネットワークはWinSockがあれば他はいらないな。 いちいち何かにラップされてても使いづらいだけだし。
DirectPlayはTCP以外の通信経路でも使えただろ・・・ commポート直結とか
>>776 使える使えないの前にそんなの使うのか?
TCP/UDP使えたらゲームに関してはもう他に何もいらないと思うが
DirectPlayができた当時はモデムしかつないでない場合も多かったけど 今は必ずついてるしなー
Winsock 移行組だが、DirectPlay はシリアルポートとかで通信対戦してた時代の物だよ。 よっぽど特殊な理由が無い限り使う必要はないと思う。 それに、簡単なサーバを借りるとしても殆どが UNIX系 だし、 なんだか変なラッピングをされてる DirectPlay はいろいろとつかいづらい。
>722 >てゆーか「次の世代」って具体的にナニ? ゆとり世代
「これだからゆとりは」とか使いたかるのって 実際にゆとりゆとり言われて育った人たちだけだよね ゆとりよりちょい前世代だけど周りでだれもそんな言葉つかっとらん
使ってる人は使ってる人はなぁ。 極度の学歴コンプ持ちだけどw
>>781 ベビーブーマー世代で、過去最大の受験率と就職難がふりかかった。
同世代の女も高ビーばかり。
ゆとり世代、マジで裏山シス。結婚したから関係ないけど。
確かに当時の阪急は強かった
全入時代っす
787 :
デフォルトの名無しさん :2008/07/22(火) 21:37:14
カメラについて質問です。 x軸回転が分かりません。 ■仕様 ・前後左右に平行移動 ・Y軸回転とX軸回転が出来る です。 x軸回転以外は出来ました。 ■現在の問題点 D3DXMatrixRotationXで回転させると、正面と真後ろを向いている時はいいのですが、真横を向いた時に回転しなくなってしまいます。 よく見ると、U字に曲がっているように見えます。 本来なら上下に曲がるはずが、ちょっとずつ横にずれ、横にずれると上下に動く感じ。 ぐぐったらD3DXMatrixRotationZも必要ということが分かったのですが、具体的にどう計算したら良いのか分かりません。 D3DXMatrixRotationX( &mX, 回転量 ) D3DXMatrixRotationZ( &mZ, 回転量 ) D3DXMatrixMultiply( &mRet, &mX, &mZ ) とやったら、グチャグチャな回転になってしまいました。 どうやったら綺麗にx軸回転できるんでしょうか?教えてください><
788 :
787 :2008/07/22(火) 21:38:21
■追記 D3DXMatrixRotationZだけをすると、今度は正面と真後ろの時にU字になり、真横だと綺麗にx軸回転します。
D3DXVec3TransformCoord関数の中身って見れないのかね? 今、ゲーム作ってる(DirectXではないです)が、これが欲しい・・・。
↑ 行列を勉強した方が良い。 そして、何が行われているのかを知った方が良い。
>>790 作ってみまつ。
あれの中身って、
4*4マトリックスとxyzwベクトルをかけて、結果を3次元ベクトルでreturn
すればいいのですか?
どなたかヒントをばorz
>>791 This function transforms the vector, pV (x, y, z, 1), by the matrix, pM, projecting the result back into w=1.
>>792 サンクス
射影がイマイチわからんけど、やってみる。
だが、今日は寝る。ありがとう
ヘルプをコピペしただけでお礼を言われるとは思わなかった。 w=1で4次元に拡張してから行列を掛けて、最後にwでxyzを割ればいい。
>>787 その質問は高度なレベルなので超初心者向けではありません。
普通の初心者向けスレでお願いします。
行列を全く理解しないで3Dをやるっていうのはすごいことだな。 足し算がわからないのに、九九を丸暗記してかけ算をやるようなもんだ。
行列の計算は高校で習うけど、 その応用のアフィン変換という応用は専門書(といってもCGの入門書程度) を読まないと普通知らないんじゃないか?
二次元のアフィン変換は習った気がする
>>797 行列の知識がしっかり身に付いてれば、
自然と思いつける範囲だとおもう。
試験問題解いて喜んでるレベルだときつい。
地形のリアルタイムLODを構想してるんですが、インデックスバッファのみ メモリ上で管理してレンダリング時にアップすることって出来ますか? いろいろ探してるんですが頂点とインデックス共にGRAMかRAMかしか選べないみたいで… やっぱロックして書き換えるしかないんでしょうか?
>>801 LOD分インデックスバッファ作っとけよ。
システムから描画なんてしたらLODしないより遅いわ。
最近のビデオカードで頂点数がネックになるほどの頂点データってのも相当なんだろうとは思うけど。
地形で50万ポリゴンとかなのかね。
ワールド行列についての概念が分からないのですが、ワールド行列ってのはシーンの世界のことですよね? ワールド行列をx方向に+10移動するということは、その世界にいるオブジェクトが+10移動するのではなく、世界が+10動くということですよね? オブジェクトを+10平行移動したいだけなんですが、どこを調べてもワールド行列を移動させてばかりで、ものすごく分かりにくいです。 仮に世界を動かすのがDirectXの世界では普通だとするなら、オブジェクトが2体あったら、どう動かすのですか?全部掛けるのですか?
勉強しなおせ
>>804 入門書とDirectXのチュートリアルから見ていますが、これより前の入門書はどれを見たらいいのですか?
小学校の教科書あたりからだろ
807 :
デフォルトの名無しさん :2008/08/01(金) 21:03:04
DirectX8以降の入門書は全てシェーダーから始まっているように、古いバージョンのことは全て出来ているものとして進められている。 3Dの基礎が書かれた入門書は、DirectX2のRM/IMの時のみ。 古本屋で探したらいいよ。 もう絶版だから見つからないかも知れないが、その時は英語を覚えて海外のサイトを調べるしかない。
>>805 ワールド行列をかけたものが出力する物を見てみなよ。
というか、3Dの物体を2Dで表示するためにはどうすればいいと思う?
ちゃんと考えてみよう。考えればわかる範囲だから書いてない。
>>805 リアルタイム レンダリング 第2版
コレにお前さんが知りたいことが全て書かれている。
>>803 ワールド行列は、オブジェクトをワールド座標に変換する行列。
言い方を変えると、各オブジェクトの姿勢を表現する行列。
描画するオブジェクトごとに別々のワールド行列を使う。
ワールド行列という呼び名は、あまり適切ではない気もする。
回転と水平移動がありますから、ワールド座標としたんでしょうね。
俺はローカル座標、グローバル座標というけどな ローカル座標をグローバル座標に変換する行列は、一個前のグローバル行列と呼んでいる
一個前→親と言った方が適切か
あと、
>>808 が言ってるのはワールド行列のことだけではなく
射影行列やらビューポート変換やらを含んでるのこれらをごっちゃにしないように
>思うばかりで悪いとは思うw そう思うのなら何とかしたらいいと思う。
行列をかける順番を必要に応じて使い分ける事を知らない人間は 「行列の使い方を知っている」人間とは言わない。
818 :
デフォルトの名無しさん :2008/08/04(月) 02:45:33
819 :
デフォルトの名無しさん :2008/08/04(月) 02:52:49
富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ 富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ 富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ 富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 死ぬとき このレスの事思い出してから地獄へ行けよ ニヤ(・∀・)ニヤ(・∀・)
820 :
818 :2008/08/04(月) 03:10:28
補足です。 無音のwavファイルを作って再生してみたんですが、 それでも再生開始時にノイズがのってしまいました。
サンプルはちゃんと再生されるの? 再生されないなら環境依存かと・・・
単純にサウンド再生時にスピーカーへの信号がオンになるからだろ。 なんでそんな当たり前のことを今更いっているんだ?
おまえは今更でも質問者は今更じゃないかもしれないだろ
TVやオーディオ、携帯プレイヤーのスイッチを入れたりと、 その程度のことに気がつく機会はいくらでもあるのに、 何も考えないで生きているんだろうな。
825 :
803 :2008/08/04(月) 13:00:36
皆様ありがとうございます。
やっと分かりました。ワールド座標はただの変換した結果だったんですね。
>>815 であるように、まさに分からなかったのはそこです。
リンク先もすごく参考になりました。
ウィンドウモード時のフリッピングについて教えてください。 1.各ウィンドウの描画先領域−2.バックバッファ−3.プライマリサーフェス と言うのがあってPresent時に1から2へコピーされた後にOSのタイミングで2と3のフリッピングが行われている、 と言う理解で合っていますか?
>>826 バックバッファからプライマリサーフェスにblitされるだけ
828 :
818 :2008/08/04(月) 21:50:50
自己解決しました。
wavデータの読込開始場所がずれていて、
フォーマット情報まで波形データとして読み込んでいたのが原因でした。
おそらく本に書いてたコードがミスってるんだと思います。
>>822 クリップノイズは波形が中途半端な場所から始まったり、
断絶していたりする場合に発生するものです。
待機状態でまっとうな波形を入力してノイズがのるなら、
不良品か粗悪品か故障なので、オーディオ周りの買い換えをお勧めします。
>>827 blitになるのはなぜですか?
ウィンドウ毎に異なるバックバッファにあるから?
おはようございます 設計の事なんですが、 イメージデータを格納したインターフェイス IImage があるとして これを描画する際 IImage img; img->draw(x, y); か IGraphics g; g->DrawImage(img, x, y); どちらが一般的ですか?
さぁ?どっでちも出来るように書いたら?
DirectXと全く関係ないな
この夏にdirectXを始めようと勇んで始めたら窓も表示できないでやんの\(^o^)/ 初期化の最初の段階の、 g_pD3d9 = Direct3DCreate9(D3D_SDK_VERSION); ここの時点でコンパイルできないんだけどどうしたらいいの? d3d9.hとかのあるフォルダはちゃんとリンク先に指定してるつもりなのに参照未解決とか言われるorz 誰か助けてくれ。。
参照未解決ってことはコンパイルじゃなくてリンクの問題だろ? libはちゃんと指定したのか。環境とやったこと、エラーメッセージを書いてくれ
って、、よくみたら >d3d9.hとかのあるフォルダはちゃんとリンク先 これはinclude先だろう。 d3d9.lib のあるフォルダをリンク先に指定しつつ、d3d9.libそのものを追加ライブラリに指定するんだよ。
おおう、こんなに早く返答が来てるとは おかげさまで解決しました、ありがとうございます。 ライブラリもちゃんと指定しないといけないんだね。。よく考えたら当然か。。ヘッダーもそうだし。。
DirectX=いばらの道だと思うのは俺だけ 出来る事は増えたけど
初心者がDirectX10から触り始めたらそうだろうな
DirectX10 は易しいほうだろ。
描画に利用するAPIという点では難しくも何ともない。 大変なのはその上に乗っけるシステムの方。 しかしそれはDirectXのせいではない。
いきなりプログラマブルシェーダーからは入りずらいかなと
良くある入門通りに三角ポリゴンの表示から段階を追ってやっていけばいいのに 初期化後いきなりスキンメッシュとか扱う初心者がいるからアニメーションは 難しいとか言う話になりがちなんだよね
そんな奴いるのかw 今の時代はどんなゲームもグラフィックレベル高いから理想が高いのかもな しかしそれは挫折の原因だと思う
DX10は固定機能というゴミを捨てる代わりに、 余計な機能というゴミ(Effect等)を拾ってきてる。 易しいとか言ってる奴はよほど頭良いんだろうな
初心者にも分かりやすいDirectX9の講座サイトを教えていただけないでしょうか。
Effectはないと面倒だろ
>>845 自分でそういうサイトを見つけられない人はプログラマやめた方がいいです
>>844 固定機能はあった方が良いと思うけどな。一つのステップとして。
わかればあんな物は要らないが。
シェーダーのほうが書きやすいと言ってみるテスツ
今就職活動用にDirectX9でゲームを作ってるんですが テスト段階では動いていたWin98環境で久しぶりにためしてみたら 画面が表示されなくなってましたorz 今時のゲームってWin98とか対応にしなくても大丈夫なのでしょうか? XPでは問題なく動いています
XP以上でいいよ。
シェーダーを書くってのはEffect使うと同義だろ・・・ #define/#ifdef系はないと話にならんし。
エフェクトとプリプロセッサになんの関係があるんだ?
初心者本かじった程度の知ったか君だろう
DirectX10の面倒なステート設定をエフェクトなしでやるのがここの主流なん? 全部設定したステートインターフェイスを全パターン作っておくのが普通なのか・・・。
そうだよがんばって全部設定して全パターン作ってねうふふふ
859 :
デフォルトの名無しさん :2008/08/10(日) 03:27:53
背景色とソース色の合成で、 LPDIRECT3DDEVICE9#SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO); LPDIRECT3DDEVICE9#SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR); この状態から、徐々に完全な背景色に変化させたいんですが、 それってどうすればいいんでしょうか。 例えば、SRCCOLORが赤だとすると、 背景に赤いセロファンを被せた状態から、 徐々にセロファンを透明にしていく感じです。
>>859 SRCCOLORを白に近づけていく。
テクスチャ無しなら頂点色を変えていくだけ。
テクスチャ有り・シェーディング無しなら、D3DTOP_BLENDDIFFUSEALPHAあたりで
真っ白のポリゴンとテクスチャをブレンドする。
861 :
デフォルトの名無しさん :2008/08/10(日) 04:27:31
>>860 ありがとうございます。できました。
SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_BLENDDIFFUSEALPHA );
SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
これで、アルファを変えつつ真っ白ポリゴンにテクスチャー描画ですね。
>>852 動作環境についてきちんとドキュメント書いてあればok
書いてなくて動かず、はねられかけた人を何人見たことか…
時間があいておられる方おられましたらお願いします。 そもそも「外部シンボル」とは何なのでしょうか?
呼び出し元のソースの外で実装されている関数や変数の名前
866 :
デフォルトの名無しさん :2008/08/17(日) 14:26:35
DirectSound(DirectX9の予定) C++ で、Wavファイルをメモリマップドファイルで読み込んで再生することはできるのでしょうか? 複数のファイルを単一のファイルにアーカイブしておいて、 その中から特定のWavファイルだけを再生するようなことをしたいと思っています。 「wavへのポインタを受け取って、再生をするAPI」みたいなのがあれば理想的な気がするのですが 検索して調べてると、ファイル名の文字列をDirectSoundに渡す方法しか見つけられないです。
PlaySound の SND_MEMORY
868 :
867 :2008/08/17(日) 14:35:49
って、DirectSound 使うのは決まってるのか すまそ
869 :
デフォルトの名無しさん :2008/08/17(日) 15:43:10
MinGW+MSYSの環境なんですけど dsound.hってどこにあるんですか?
SDKからとってくるのか
WinMainのWhile中に BOOL UpdateFrame(void) { switch ( g_No ) { case A: 〜〜; case B: 〜〜; case C: test(); }} を設けて、 void test(void) { キー取得 pDevice->Clear() if( SUCCEEDED( pDevice->BeginScene() ) ) { キーによるmatrixの修正 座標変換 } pDevice->EndScene(); pDevice->Present( NULL, NULL, NULL, NULL ); } というふうにすると、フレームレートが著しく低くなるんですが、原因はソース上どこにあるでしょうか?
WinMainのWhile
エントリー関数というのでしょうか? while( msg.message!=WM_QUIT ) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { if ( FAILED( UpdateFrame() ) ) break; Sleep(1); } }
毎回BOOL UpdateFrameが呼ばれるようにしてます。
>というふうにすると、フレームレートが著しく低くなるんですが、 というふうにする前はどうだったのさ? 何と比べて低いのか書いてないようだけど
すみません。。 void test(void) { キー取得 pDevice->Clear() if( SUCCEEDED( pDevice->BeginScene() ) ) { キーによるmatrixの修正 座標変換 } pDevice->EndScene(); pDevice->Present( NULL, NULL, NULL, NULL ); } の test()を直接、エントリー関数のwhile文中に書いてたときに比べてです。
くだらない質問で申し訳ないですが DirectXで3Dゲームなどのプログラムをする場合 数学の知識はどの程度必要なのでしょうか?
最低ラインは高卒程度(ゆとり学習指導要領不可)。大卒程度あると良い。 行列を知らないゆとりには眩暈がしたものだ。
879 :
877 :2008/08/18(月) 07:47:55
>>878 自分は文系でしたので高2までしか数学はやっておらず(数IIBまで)
大学でやった数学といえば一般教養レベルで
高校よりも前段階のものだったので厳しいかもしれませんね
行列はやった記憶がありません(数Cのようですね)
数学自体10年ぐらいもう触れていないのですが
興味がある分野ではあるので少しずつ独学でやっていきたいと思います
どうもレスありがとうございました
数列しらんとか大規模演算できないじゃん
数列じゃない、行列の間違い
数学の知識なんてあとからついてくるから、始める前に心配する必要なんてない
とりあえずやってみる→わからない所がある→調べる この繰り返しでいいんだよ。 「○○をマスターしますた」とか言う奴ほど使えない事が多い 例:C言語をマスターしますた
だからといって高校レベルの数学をいちいち調べてたんじゃ時間かかって仕方ないがな
行列とベクトルだけ覚えとけばいいよ。
これ以外の数学の知識を頻繁に使うことは全くといっていいほど無い。
他に何か必要になったらその都度調べればいい。
>>884 何度か調べれば頭に入るけどな
そういう奴に限ってしばらくすると忘れてる 覚えた気になってるだけ
しかし調べる手段さえ覚えておけばまた調べられる
今は資料とか沢山あるからやってればなんとでもなるような気がする それが正しいのかはわからないけど
でもDirectX絡めたその辺の解説してるサイトってしばらく見ないうちに閉鎖してたりして 困ることもあるんだよな だからなるべく一度勉強したら自分で管理するソースにも埋め込んで 残すようにしてる。
覚えられるなら覚えてもいいけど別に覚える必要なんてない プログラマなんてプロでもそれで十分やっていける
数学はあくまでツールのひとつにしか過ぎないからなぁ
そんなこと言い出したら、日本語だってツールだろ。
>>893 俺は人を感動させる文章は書けないし、そもそも常用漢字程度ですら怪しいが
それなりのコミュニケーションが取れればプログラムの開発はできてるよ。
そういう意味では数学と同じでツールのようなものかも。
プログラマにとっての数学はツールではなく、思考の為の基礎教養
思考の際のサポートツール
どっちでもええわ
数学の事前知識にこだわってる人って、ゲーム作った事あるの?
綿密な物理計算によって計算された動きより 単純な移動量と加速度だけで動かしたほうが ゲーム的に気持ちいい動きになるなんて良くあること ただ、その気持ちいいを表現できるセンスは必須だとは思うが
覚える事が重要なんじゃなくて引き出しを整理する能力が重要なんだよ いちいち暗記して覚えるなんて脳の無駄使い
綿密な物理計算はいらなくてもマップと当たり判定取るぐらいは必要になってくる
ゲームプログラムなんて所詮は足し算引き算の組み合わせだからな そのいくつ足すか引くかの匙加減を 計算得意なやつはやたら小難しい計算式やら 方程式をつかって一発で出そうとするし そうじゃないやつは嘘物理にはなってしまうが もっと単純な計算式の組み合わせで作ろうとする 目指すところがいっしょであれば どっちの方法でも大体同じような結果になるのでどっちもプロとしてやってけるかんじ
まあ、とは言っても大手企業なんかだと採用試験で持ち込んだ作品より くだらん暗記テストの結果を重視したりもするから、そういう意味では覚える事も役には立つ。 それからやってけるかどうかは別として。
正直いって、どんな人材を採りたいのか試験内容から読み取れない。 ゲーム会社はまず採用担当者をクビにするところから始めた方がいいような。
採用担当者を新規採用か。
ゲーム会社が欲しいのは、学歴が良くてちゃんと勉強が出来る人。 新しいことにも適応できて、会社の方針をちゃんと理解できる人。 ゲームばっかり作ってた奴は、へんなところに拘りがあって使いにくい。 わかった?
スレチ
ここでDirectXの質問に答えてくれてる人はどういう人達なんでしょうか? DirectX使ったゲームとかそんな出てない気がするし、たぶんコンシューマー系のプログラマーに比べると圧倒的に小数ですよね? 同人なんかでも最近3Dのゲームも増えてきたけどそれでも人数的にはかなり限られてるし
はぁ?
教えて君と教えたがり君以外は邪魔だからどっか池よ こんなスレ見ててもしょうがいないだろ
日本語でおk
>>908 趣味のゲームプログラマーで本職じゃない奴が多いと思う
趣味だとプラットフォームは自動的にPC=DirectXが殆ど
つーか市販ソフトでもPCとかXboxはDirectXだろ
あえてOpenGLを使う機会も減ってきた気がする・・・
体力のある会社は独自で3Dツールをつくったりするから DirectXもOpenGLも使う時は使う
つまり好きに汁
市販ソフトでOpenGL対応ってCAD以外ほとんど見ないな
3DCG系は代替OpenGLだな
D3DXCreateEffectFromFileで通らないときは第8引数にLPD3DXBUFFERへのポインタを入れてエラーを取れ とあるのですが、戻ってきたLPD3DXBUFFERをどう扱って良いのかが分かりません。 中身を見るとvoidポインタが入っていたのですが、どうすればよいのでしょうか。 アドレスですしルックアップツールを使ってどうこうするというものでも無さそうですし…
ID3DXBuffer::GetBufferPointer()でバッファ取得して、 char*とかにキャストすれば読めるんじゃね
ありがとうございます無事読めました ps1.1ってサポートから外れてしまったのですね
ぽまいらDirectXとか使わずに自分で3D描画できまつか?
簡易的な実装ならやったなぁ
俺も作ってた。シザリングの三角形分割が うまくできなくて投げ出した記憶があるw
>>920 俺は無理だな
けどDirect3Dあるから良いやって思ってる
>>920 できるけど正直重くて使い物にならない
ビデオカードの仕様まで把握してと実用的なのは厳しいな
ぽまいらすげーな
ソフト実装なら少しやったことが 馬鹿重いぞ
そういうのは10年以上前、Direct3Dがまだなかったか、 あってもまだまともに使えなかった頃にやってた 今はやらない
昔の3Dの解説記事とかメガデモは独自描画のサンプルが多かったな 勉強にはいいんじゃね
レイトレーシングの簡易実装ならやった。 表示するまでに一日掛かったw
そうか?20年前なら1ヶ月かかるとかザラだったけどw
何か一つ実装するのに一日なんて早い方じゃない
930やったことないだろ
実装じゃなくて、実行してから表示されるまでの話だよ。 何日もかかったレイトレのソースそのまま今の環境で実行するとどのくらいなのかなあ。
ああ、そういうことか。 930すまん
しかもシングルタスクだったから、実行中そのPCでは他のこと何もできないという・・・
>>934 ソースを移植どころか
エミュレータ上で動かしても当時より早く終わるのだけは確かだw
>>934 俺はBASICで30分かけてシコシコ計算させてたのを
BASICコンパイラにかけたら2分もかからなくなって
今まで時間を無駄にしていたと思った。
いいなー 3Dの計算が自分でできちゃうなんてあこがれるなー
リアルタイム描画なんて想像もできなかったので、完成した絵が表示されたCRTを8mmフィルムに1コマづつ撮影して動画にしたりしたな。
同時に16色しか出せないからフィルム上で合成したな。 ASCIIのCG本も同じ手使ってたような気がする。
DirectX9.0cをインストールしたいのですが、ロゴテストに合格していません と表示されてインストールが出来ないんです。解決策を教えてください、お願いします。 質問がスレ違いでしたらすみません。丸2日情報探してるんですが本当に見つからないんです。
簡単に答えられる内容じゃないな 調べればいろいろ出てくるけど
とりあえずOSとパソコンのスペックぐらい書いたらどうですか?
すみません、提示します。OSはWindowsXPです。メモリが256MBでCPUはAMDのMMXで651Mhzほど。 グラボはRage128PRO(16MB)です。もしかして、スペックの問題で不可能だったりするんでしょうか。 かなり古いパソコンでXPを動かすことになって、どうにかインストールしたいのですが、 強引にロゴテストを回避したりするのは無理なんでしょうか?スペック問題なら素直に諦めます。
ロゴテストをパスできても HALのほぼ全部が使えなくて結局DX9の意味がないだろな
>>946 SP2更新でまた別のエラー(ntoskrnl.exeが使用中とかなんとか)を起こすので、SP2への更新は諦めました。
何にしてもSP2更新しか手が無いようなので、この方法が成功しても結果が変わらない場合は同時にDirectXも諦めます。
お手数かけて申し訳ありません。ありがとうございました。
質問します DirectXを使ったゲームのプログラミングの本を見たら、 DirectShowを使っていました。これはもうGraphicsに置き換わったという話ですが 今から勉強するのであればShowよりGraphicsを勉強したほうがいいのですか? また、ShowからGraphicsに簡単に変換できたり、 Showの応用としてGraphicsは勉強できるものかを教えてください。
とりあえず眼科に行くことをお勧めします
Graphicsでいいんじゃね Drawは今更勉強しなくてもいいんじゃね Showは専用スレで聞いた方がいいんじゃね
ワロタ
953 :
デフォルトの名無しさん :2008/09/13(土) 22:21:29
過去にVB6.0+DirectXで作ったゲームがあるのですが DirectXって下位互換なんでしょうか? VB6.0+DirectXの環境で作ったゲームを現在のDirectX10とかで動作させることって可能ですか? これから久々にゲーム作りに挑戦したいのですが そこら辺の環境とランタイムの関係がイマイチわからないのですが 古いDirectXで作ったプログラムならば、今後、ランタイムが新しくなっても 未来永劫動作すると考えて良いのでしょうか?
下位互換と上位互換について、きっちり調べてから出直してこい。
955 :
デフォルトの名無しさん :2008/09/13(土) 22:45:38
あぁ、逆だな、上位互換
答えはNOです。さようなら。
957 :
デフォルトの名無しさん :2008/09/15(月) 11:00:50
未来永劫・永久不変なんてこの世の中にはありません。 プログラム以前の問題です。
嘘でもYESと答えておけよ・・・
959 :
デフォルトの名無しさん :2008/09/17(水) 22:45:52
使えないスレだな
煽ってもお前の望む答えは返ってこないよ
NOなものはNOだもの
962 :
デフォルトの名無しさん :2008/09/18(木) 17:49:54
日本語が不自由な奴が多いスレだな コンセプト的にはYES 本当にそれが実現するのか問われればNO でも、少なくとも後10年位は動くんじゃね?
コンセプト的にも何も下位互換性と上位互換性を間違えてるだけだろ
一言、後方互換と言ってあげればいいのに、みんな不親切だぜ。
動的テクスチャや動的頂点バッファというのがいまいちわかりません 検索してみても、ロック時のコストが低い以上のことがわかりません
ありがとうございます。 動的テクスチャはフォーマットごと、サイズごとに一枚が望ましい、とあったので もっと特別なものかと思い込んでいました^^;
質問です 頂点バッファとテクスチャだけ持つビルボードクラスを作成したのですが、表示が重なるときに不具合がでます。 手前のオブジェクトから表示したときに、テクスチャが透明でも、頂点カラーが不透明なので そこの領域には奥のオブジェクトがレンダリングされないということです。 奥のものからレンダリングすると回避できることはわかっているのですが、 XNAのSpriteBatchクラスでは、z値のソートを手前からにすることも可能なことを考えて、 レンダリングステートの設定などで上記現象を回避することはできるのでしょうか。
何を言ってるのかわからん。 半透明にはソートか深度ピーリング以外の解決方法なんて現状ないんじゃないか
enum D3DERRってどこにあるんですか?
手前からz値をソートしなきゃいけない理由がわからん
αテストをして 一定のα値以下であればZバッファには書き込まないという処理は可能 しかし その上から書き込まれたものが きちんと半透明の向こう側にあるように見えるかはまた別の話
>>920 超・おそスレだができる。
昔それでゲーム作ってベクターに公開してた。
400ポリゴンくらいしかでなくて絶望してたが、モデルを出してみたら
裏面クリップされて案外動いた。アセンブラもMMXもSSE2も使わなかった。
気をつけたのはfloat使わないことくらい。Matrix演算もintの固定小数で実装した。
あの頃は未熟だけど無駄に熱かったなぁ。と、自慢したいが為に超スレチ。
リアルタイムロードシステムの妄想をしているのですが テクスチャをロードする際にMipMapの低レベルサーフェイスから順に 読み込めないかといろいろ試しているのですがいい方法が浮かびません デバイスのCreateTextureで必要なバッファを確保し、あとから自力で DDSファイルなりを読み込んでロックして放り込めば出来るかと思ったのですが D3DPOOL_DEFAULTで作成したものしかロックできないんだとか USAGE_DYNAMICは効率が悪いから使いたくないよ・・・・ なんかいい方法ないでしょうか?
すいませんが超初心者です。 DirectXをインストールしたいのですが、インストールしようとすると『DirectXのインストールに必要なプログラムが見つかりませんでした。』と出るんですがどうしたらいいですか?
まずはその質問とプログラム板に何の関係があるのかを明確に答えよ。
ここは超初心者と言ってもプログラミングの超初心者だからなw
>>976 プログラムと表記されていたんで2ちゃん全体のスレでDirectXで検索かけてきたんですが…
もしかしてスレ違いですか?
ここはプログラムを作る人のための板であって、使う人用ではないのです
>>974 見える時には全部読んでおく、でいいんじゃね?
BSPとかで割っといて。
なんか知らんがテクスチャ間でもコピーできるんだぜ