[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/13 23:12 / Filesize : 147 KB / Number-of Response : 651
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれDirectX(超初心者用) part.3



1 名前:デフォルトの名無しさん [2007/10/29(月) 06:05:00 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
DirectX使いが優しくコメントを返しますが、
お礼はDirectXの布教と初心者の救済をお願いします。

DirectX Home Page
www.microsoft.com/japan/windows/directx/

前スレ
pc11.2ch.net/test/read.cgi/tech/1173535400

267 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:14:00 ]
すみませんManaged DirectX 板にも書いたのですが、こちらの方がふさわしいので
こちらに書きます。

Direct3Dのフルスクリーンゲーム画面をキャプチャしたいんでうが
どのようなjコードでできますか?

どっかのサイトで「Deviceを作ってGetBackBuffer()でおk」っていうのを
見つけたんですが、フルスクリーンゲーム画面のDeviceを取得するとこ
からつまっています。

簡単なサンプルなどあげてもらえると助かります。

268 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:05:17 ]
IDirectSoundBufferからIDirectSoundBuffer8を作るのがうまくいきません。
hr に E_NOINTERFACE が返されて失敗してしまいます。

IDirectSoundBuffer *pDSBuffer8 ;
HRESULT hr = pDSBuffer->QueryInterface( IID_IDirectSound3DBuffer8 , (LPVOID*) &pDSBuffer8 ) ;

どこが問題点か分かりますでしょうか。


269 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:14:58 ]
>>267
外部アプリのゲーム画面をキャプチャしたいのか?だったら俺には分らん

>>268
勘だがそっち向きは無理じゃね?
IDirectSoundBuffer8からIDirectSoundBufferの取得ならわかるが…

270 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 13:24:04 ]
>>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 mailto:sage [2008/04/09(水) 14:29:04 ]
ありがとうございます。解決できました。

272 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:29:56 ]
DirectXはダウングレード出来ないと聞きました。
今、PCに入っているDirectXのバージョンより下のバージョンに対応した
ソフトを作るって無理なんでしょうか・・・

例えば、今私のPCにはDirectX9が入っていますが
このPCでDirectX5に対応したソフトを作るとか・・・

出来ませんか?

273 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:12:43 ]
>>272
DX5 SDKを入れれば作れる
ランタイムは最新のままでオッケ
俺も仕事にあわせて複数のSDK入れてるよ
DX5、DX7a、DX8、DX9c

274 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:49:19 ]
5とか7の仕事なんて今時あんのか・・・エロゲ?

275 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:57:08 ]
エロゲと付録ゲ
あとはDX嫌がるところはOS標準のDXにあわせてる



276 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:08:36 ]
あんまり古いと逆に問題多いんじゃないか

277 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:51:24 ]
古すぎるとGDIでいいんじゃね

278 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:22:03 ]
>>272
DirectX 9.0b SDK
今公開されている一番古いSDKで開発ができる
これ以降のやつはDirectX8のヘッダが削除されているので開発できない

ただ、古いバージョンでコンパイルしたいなら以下の指定が必要

// DirectX 5 を使用する
#define DIRECTDRAW_VERSION 0x0500
#define DIRECTSOUND_VERSION 0x0500
#define DIRECTINPUT_VERSION 0x0500

今でもエロゲ開発には必要なのさ。。。

279 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 17:26:05 ]
動画プレーヤーを作りたいのですがDirectShowの質問って
どこで受け付けてくれるのでしょうか。

自分の利用している開発環境はVC#2008expressionです。
プログラミング経験はなくC#もロクに理解してないので
C++とかはいじれる気がしません。

280 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 18:44:55 ]
DirectShowのスレあったけど落ちちゃってるんだよね。
てか経験無いようだから、取りあえずWMPコンポーネントとか使った方が良いと思うけど・・・

281 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 18:59:34 ]
動画再生よりむしろ静止画保存が目的なんで…

サンプルながめてもフィルタやピンがどうのと
なかなか素人の手に負えない状況です

282 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:29:38 ]
>>281
じゃあ最初から最後まで教えろってこと?

283 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:35:07 ]
ちゃんとヘルプ嫁
DirectShowはとっつきにくいが、意外と理路整然としてて使いやすいぞ
他のDirectXコンポーネントとは大違い

284 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:47:32 ]
プッ

285 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:25:13 ]
ゴチャゴチャやってたら偶然再生できるようなとことまで来たのですが
現在時間を取得しようと思ってもIMediaSeekingのGetCurrentPositionから
どうやって数字や文字列をもらえればいいのかさっぱりです。

HRESULT GetCurrentPosition( LONGLONG *pCurrent);で
NULL ポインタ引数が戻り値がとかいわれても、
C#だとどう記述したものやらと途方にくれてしまいます



286 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:45:55 ]
サンプル読めばわかるだろ。
ちなみに、DirectShowはDirectXに今は含まれていないからスレ違いなんだ。

287 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:12:35 ]
60fpsで1フレームごとにキーボードの状態取り込むと
押したキーが何フレームにも渡って補足されるです。
どうすればいいですか?

288 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:17:54 ]
無視する

289 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 02:12:30 ]
Async使えよ馬鹿

290 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 08:12:25 ]
i8042のクロックで取り込む

291 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 08:24:10 ]
補足しないで捕捉する。

292 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 10:58:12 ]
テクスチャAをテクスチャBにコピーしたいのですが
どのような手段があるのでしょうか?

293 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 11:25:36 ]
copy textureA.dds textureB.dds

294 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:11:03 ]
・テクスチャBをRenderTargetにしてレンダリング
・CopyRects
・Lock/Unlock

どれでもお好きな方法を

295 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:38:01 ]
>>294
d 助かりました



296 名前:デフォルトの名無しさん [2008/04/27(日) 19:31:06 ]
DirectXの構造体の解説やマニュアルのみをただただ乗せてるだけってサイトないですか?


297 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 19:35:48 ]
本家は?

298 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:05:17 ]
SDK落として嫁

299 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 23:39:05 ]
読めってあの大量のサンプルをか?
それがめんどいんだが

300 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 23:49:31 ]
ならやめろw

301 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 00:09:03 ]
いやだ
ぜってぇあきらめねぇ

302 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 00:51:48 ]

                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン ソンナツメタイコトイウナヨ!!
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д) ナイナラナイッテイッテクレヨ!
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎



303 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 00:54:29 ]

                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン ソンナツメタイコトイウナヨ!!
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д) ナイナラナイッテイッテクレヨ!
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎



304 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 08:27:59 ]
>>296
どうみてもヘルプのことです
ありがとうございました

305 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:58:41 ]
2次元で、
頂点V0〜V3で作られた四角形の中に点Pがあるかどうかって

四角形を構成する4つの線分の裏にPがあるかチェックで
調べているんですけど、もっと高速な方法ってありますか?




306 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:04:09 ]
x>left&&x<right&&y>top&&y<bottom

307 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:23:13 ]
長方形じゃないです

308 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 08:37:24 ]
マトリックスによる行列変換で直方体から変形可能なら逆行列使えば簡単。

でなければ305のやり方でいいんじゃない?
ただ、線の裏側にあるかの判断方法によってだいぶ変わるはず。

ポリゴンなら点Pから一方向(例えば右)に線を引いて何回交差するかを調べる。

309 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 09:21:29 ]
>>305
すべての角が180度以下であることが保障されるなら簡単だが、
180度以上の角がある場合は面倒。

310 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 17:15:12 ]
ここのヘルプファイルをDLしてインストールしたんだけど、VSから参照できないのですか?
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=4B9B1752-6F6C-440E-816C-35D247570AE4&displaylang=ja

311 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 17:42:56 ]
>>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> しているんですが。。


313 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:18:32 ]
lib

314 名前:デフォルトの名無しさん [2008/05/02(金) 22:30:21 ]
>313
あすみません、libも

#pragma comment (lib, "dsound.lib")

しております、書くの忘れてました。

315 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:11:42 ]
dxguid.lib



316 名前:デフォルトの名無しさん [2008/05/02(金) 23:18:53 ]
>315

; ̄口 ̄]ナオッタ

ありがとうございます、コンパイル通りました!!
ありがとうございます!

317 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 04:33:07 ]
外部シンボル 〜 は未解決です

てのはコンパイルエラーじゃなくてリンクエラーの事なのでライブラリの参照をすれ

318 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 09:16:59 ]
Lightサンプルの真似してライト設置してるんだが、
自分で作った六面体がノッペリ同じ色で塗りつぶさてしまう。

こんな減少の場合、何を見落としてると思う?


とりあえず、Lightサンプルの中に自分で作った六面体をぶち込んでみるわ

319 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 11:27:25 ]
法線データが入ってないってオチは?

320 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 16:49:09 ]
C言語の知識だけでDiectXはできますか?

321 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 16:59:16 ]
全てのAPIがC言語からでも呼び出せる。

322 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 17:56:24 ]
MSDNから日本語ドキュメントがごっそりなくなってるじゃねえか!市ね!!
改悪にもほどがある!!

323 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 06:59:12 ]
>>321
クラスで出来てるんだからCだけで使えるわけないだろ

324 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 10:42:45 ]
法線データ入ってませんでした。
LightサンプルにD3DFVF_NORMALがあったので真似して、
D3DFVF_DIFFUSEも消したらうまくいった。

頂点にデフューズ色指定するとライトがうまく働かないの?

325 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:19:44 ]
>>322
勘弁して欲しいよね。本気で。



326 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:20:10 ]
>>320
できるけど面倒い。
C++ 使った方がよっぽどか楽。

327 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:18:21 ]
ぐーぐるから見ようとすると「ないっす」って言われるんですよね

328 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:39:15 ]
blogs.msdn.com/hiroyuk/archive/2008/04/30/msdn-directx-sdk.aspx

これか?

329 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:50:19 ]
ちょっと皆さん聞いてくださいよ。
さっき僕すごいもの見つけたんですよ本当に。
これ見てください。
fatalita.sakura.ne.jp/3DLib/
これ使えばもうわざわざDirectX覚える意味がなくなりますね^^V


330 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:53:42 ]
これからは2004octの時代

331 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:24:03 ]
>>329のライブラリ使おうとするとブルースクリーンが出るんですけど^^;
Init関数で死ぬとかドンだけー

332 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:44:07 ]
>>329
なつかしいな
まだアクティブなのか

333 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:59:30 ]
本家じゃなくて3D機能を強化してる互換版
ベータとはいえ開発環境依存、互換中途半端、重い
開発に付き合うほど暇ではないので1年後また見てみる

334 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:55:41 ]
DirectXにはディスプレイ出力を取得するようなAPIはありませんよね?
FrapsとかDxtoryはどうやってるんでしょうか?
グラフィックのドライバレベルではディスプレイ出力の取得が可能?

335 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 20:49:32 ]
表示しているものは何であるか考えれば答えは出るよ



336 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:30:19 ]
Frapsを見たことがないのでどうやってるのかは知らんが、
Presentにフック仕掛けてるだけじゃない?

337 名前:デフォルトの名無しさん mailto:saage [2008/05/07(水) 07:22:42 ]
ヘタレな質問です。現在、DX8使用して背景に3D、キャラに2Dを表示しようと
考えております。
まず、セオリー通りテクスチャで表示したのですが微妙に歪み、
暗く表示されてしまいます。

そこで、backsurfaceというのがあると聞きつけたのですが、どのように使えば良いか、
コードでみせて下さると嬉しいです。
そもそも、LPDIRECT3DDEVICE8は、3D作成時の物で良いのか、
そして、表示先のバックサーフェイスをどうやって取得すれば良いのでしょうか。

338 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 10:00:08 ]
答える前に、一度でも検索したのかと問いたい

339 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:52:33 ]
>>337
0.5ピクセルずらした?
詳しくはテクセルあたりでぐぐれ

340 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 15:15:22 ]
>>338&339
無事解決しました。
backsurfaceに書き込み成功しました。

しかし、これだと3Dマテリアルの裏側に表示されてしまい、
テクスチャで前面にキャラクタを表示しようとすると、pngとかddsなら良いのですが、
オリジナルフォーマットだと対応できません。
spriteを使うと、数回はうまくいくのですが、不正終了を起こしてしまいます。
試しに何もないspriteを使ってもダメで、もちろんboundschkerにもかかりません。

単純な話し、GetPixelみたいなローレベル命令が書き込み画面に使えないのでしょうか。
backsurfaceはLockRectできたのですが、
テクスチャ書き込み済みの画面からの画面情報の拾得は出来ないのでしょうか。

341 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:22:57 ]
backsurfaceなんぞよくわからんもの使うより
当初の予定通りできちんと表示される方法を考えたほうがいいんじゃないのか?

342 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:03:10 ]
>>340
DX8はステートブロックでバグが発生する。そのためのエラー。DX9以上を使え。
Zオーダー無効で描画すれば、常に最前面だったような。
つーか普通にポリゴンの描画しかた覚えろ。簡単だぞ。

343 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:07:36 ]
>>341
いや、backsurfaceだときちんと表示されて、textureで表示すると、
0.5とかどう合わせても半ドットずれたり、暗くなったりする。
何枚かのビデオカードでチェックしたけどダメだった。

肝心の文字表示だけど、32*32ドットのpngでα抜きテクスチャ作って、
それをD3DXCreateTextureFromFileでロードして、
LockRectして、1文字ずつ文字を書き込むことに成功。

D3DXCreateTextureでD3DFMT_A8R8G8B8で作ってもだめ。成功した人いる?

344 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:11:58 ]
>>342
情報サンクス。一応D3DRS_ZENABLE,D3DZB_FALSEでやってます。
DX8.1は仕事の仕様でDX9にはできんのよ(TT
XPSP1以降なら素直にDX9なんだけど、まだ初代XPの人が何人もいて(^^;

345 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:12:59 ]
四の五の言わずにソースだせと
日本語が下手すぎて何いってるかわからん



346 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:21:46 ]
>>343のソースが可笑しいことだけは伝わった。
世間のDX8で作られたゲームはちゃんと表示されてるだろ。

347 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:24:46 ]
日本語ヘタでスマンのう。
ソース長いし、一応自己解決したし、
商用ソフトなんで、フォーマット変えてUPしなくちゃならんのでそれは勘弁。

とりあえず、D3DXCreateTextureでD3DFMT_A8R8G8B8指定した空のテクスチャで
αブレンドをかけた文字を表示するのは失敗したけど、
元々1文字分32*32ドットのα付きのPNG作り、動的に書き換えながら、
画面中にαブレンドした文字を表示するのは成功しました。

日本語難しいな。ホント。

348 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:27:29 ]
>>346
ヘタレでスマン。どうしても歪んでしまう。
ttp://richa850.hp.infoseek.co.jp/programming/dx8_01.html
歪みは上記のURLを参考にさせていただきました。

349 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:30:45 ]
ひょっとしてテクスチャのサイズは元のデータと同じにならない事を知らないおちか

350 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:31:01 ]
>>347
日本語間違えてる(^^;
1個だけ32*32のPNGを作り、D3DXCreateTextureFromFileで1個だけ読み込み、
こいつを1文字ずつLockRectで書き換えて画面にαブレンドで表示する事に成功しました。

351 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:34:04 ]
>>349
いや、800*600が1024*1024に拡大されてるのは知ってる。
だから困ってたんだけど、3Dモードと2Dモードで使い方を変えて、
3Dモードでの時の歪みはCGに怒られながら勘弁してもらう事にしたヘタレ。スマソ

352 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:43:22 ]
800x600の画像を1024x1024の左上に展開して描画すればドットバイドットになるわけだが・・・

353 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:49:07 ]
>>352
その方法も試したんですが、微妙に歪むところと暗くなるところがあり、
自分的には気にならないのですが、CGから見たら違う物だと言われて…。
>>348の方法なら大丈夫なんですが、
テクスチャにするとどうしても微妙に違うらしくて、
CGにうとい自分だったら気にしないのですが、
プログラマ1人とCG5人だと発言力が(^^;

354 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:51:59 ]
いったいどんな組み方してんだよと小一世紀・・・

355 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:54:14 ]
3D部分も自力で組んでるんですが、色々と言われて落ち込んでます。
自分の実力だとLWと全く同じ結果に出来るはずもなく……orz
人生あきらめが肝心なので、ダメプログラマの烙印を押されても粘ります。
今までスレ汚し、スマンかった。



356 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 16:55:59 ]
>>354
雑誌のサンプルを実行しても、どうしても歪んでしまうんですよ。
ビミョーにですが。
逆にテクスチャで歪まないサンプルがあったら教えてもらえると嬉しいですm(__)m

357 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:02:50 ]
いちいちロックして描画なんて阿呆なことするくらいなら
素直にDirectDraw使おうよ。

358 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:25:13 ]
Direct3Dを全くわからない俺が思うに、
・バックサーフェイス->OK
・テクスチャ->NG
・微妙に歪むところと暗くなるところがあり
からして

色はシェーディング、拡散光、スペキュラ辺りに関連していることを
言っている気がする。
歪みは遠近法(平行投影とか透視投影)かと。

359 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:17:32 ]
シェーダー切るの忘れているだけのような気がするけど・・・

↓俺の汎用スプライトコードからの抜粋

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);

360 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:18:36 ]
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);

361 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:31:58 ]
まともに組めば絶対に歪まないはずだから頑張れよ。
とりあえずウィンドウ一個出してそこにテクスチャ表示するサンプルなら
30分で書けるでしょ。それうpすりゃいいじゃん。


362 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 20:33:02 ]
ありがとう>ALL
1ドットの歪みが出るのが直らないのですが暗いのはシェーダのせいでした。
背景が3Dのせいで、その上に重ねるキャラが1ドットどうしても歪んでしまいます。
もう一度、切り分けをして単純化してプログラムを組んでみます。

それと、D3DXCreateTextureでD3DFMT_A8R8G8B8指定した空のテクスチャでも
ちゃんとαブレンドが効きました。ありがとう御座いました。

363 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:03:14 ]
商用ソフト作ってる人間がこの程度のことを自己解決できないなんて

364 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:20:38 ]
え?俺は同人かと思ってレスしてたんだが・・・・

365 名前:デフォルトの名無しさん mailto:saage [2008/05/09(金) 22:15:10 ]
初めて一週間でして……。
昔、PC-DOS時代にDOOM系のFPSゲームを作った事があったので、
3Dダンジョン部分はすぐ出来たのですが、2D表示にはまってた次第です(^^;
ピクセルのズレも切り分けでき、どうにかCGに怒られずに済みそうです。

一時はCreateDIBでやって、ブレゼンハム3Dで作った方が…と考えたところ、
皆さんのおかげでD3DXにとどまれました。

レンダリングステート関連って、知ってないと分からないことばかりで、
WIN-APIを覚えた時を思い出しました。覚えることが多くて大変です(@@



366 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 22:54:13 ]
ちなみにドットズレの原因は背景3D表示のViewFromの問題で、
精密に計算して、3D表示の方もすこしずらしたら起きなくなりました。
>>358さんの遠近法で当たってました。
皆様、ありがとう御座いました。

367 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 23:15:57 ]
>>363
商用でこんなとこで質問してるなら軽蔑するわw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<147KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef