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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2010/07/04(日) 02:20:51
対応しなきゃいいんだよ
953デフォルトの名無しさん:2010/07/04(日) 02:22:47
あれDirectX使用中に切り替わったりはしないよ
API呼び出し時に切り替わる(か、切り替わらない)、でアプリ終了時に戻る
954デフォルトの名無しさん:2010/07/04(日) 05:37:37
モバイルラデ5850使ってDX11プログラム実行してて、
何かのタイミングでDX10のIntelオンボに切り替わってクラッシュなんて事になったら困るもんな
955デフォルトの名無しさん:2010/07/04(日) 07:13:56
対応しなきゃいいんだって・・・
956デフォルトの名無しさん:2010/07/04(日) 09:22:44
すごく初心者な質問だけど
らでHD5850のようにdirectX10上がメインのでも
9.0cとかで動く?
957デフォルトの名無しさん:2010/07/04(日) 09:26:42
試してごらん。
すぐに分かるから。
958デフォルトの名無しさん:2010/07/04(日) 09:27:57
>>956
動かないよ
959デフォルトの名無しさん:2010/07/04(日) 09:28:31
ども やっぱwin7にしなきゃだめか
960デフォルトの名無しさん:2010/07/04(日) 09:30:40
>>957
うん
961デフォルトの名無しさん:2010/07/04(日) 09:31:00
動きたくない(お前のPCじゃ)
962デフォルトの名無しさん:2010/07/04(日) 09:32:10
恐らく思いっきり既出の質問内容だと思いますが、解決方法がわからないので質問
させていただきます。
VC++2008 + DirectX 9.0c SDKの開発環境にてD3DXSPRITE機能を使い最低限の
2D表示を実現したいのですが、本に載っている最小ソースコードを実行したところ
SPRITEの描画結果がにじんでしまいます。
↓実行結果
http://jishinkuma.aa0.netvolante.jp/etc/nijimu.png
D3DXCreateTextureFromFileEx関数にて24ビットの白と黒の2色しか使っていない
128x128のbmpファイル(Sprite.bmp)を読み込んでいます。
プログラムを実行した画面にも128x128の画像が表示されましたが、
Sprite.bmpに使っていない灰色が表示されて像がにじんだ状態です。

【ソースコードの一部】
//「テクスチャオブジェクト」の作成
D3DXCreateTextureFromFileEx( pDevice, "Sprite.bmp", SPRITE_WIDTH, SPRITE_HEIGHT,
0, 0, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE, D3DX_DEFAULT,
0xff000000, NULL, NULL, &pTexture )

//レンダリング
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
pSprite->Draw( pTexture, &rect, &vec3Center, &vec3Position, D3DCOLOR_ARGB(255,255,255,255) );
pSprite->End();

像がにじまないようにSprite.bmpに忠実な白と黒の2色だけ表示されるようにしたいのですが、
方法がわかりません。恐らくソースコードに数行追加すれば直るのではないかと思いますが、
どこにどのように追加すればよいのかわかりません。

すみませんが、追加する場所とソースコードをご教示していただけないでしょうか。
よろしくお願いします。
963デフォルトの名無しさん:2010/07/04(日) 09:33:37
>>961 うぜえ
win7にするつってんだろ
964デフォルトの名無しさん:2010/07/04(日) 09:35:40
>>962
表示した画像の解像度はちゃんと128x128になってる?
printScreenキーでしっかりとってペイントに貼り付けて解像度を目視で確認した?
なんとなく128x128っぽい・・・じゃなくて・・・
965デフォルトの名無しさん:2010/07/04(日) 09:39:47
画像が滲んだときに疑うこと(俺の経験で)

1.バイリニアフィルタがかかってね?
2.表示した画像の解像度が微妙に違う
3.初期化時に作成した画面の解像度が指定と微妙に違う
4.UVの設定がしけてる
5.元画像がハナからなんかおかしい
6.読み込み時におかしくなってる

このぐらい?
966962:2010/07/04(日) 09:44:35
>>964
ペイントに貼付けて拡大して確認しました。
間違いないです。

>>965
本に載っている最小ソースコードなので足りない設定はあっても、余計な設定はないと思います。
967デフォルトの名無しさん:2010/07/04(日) 09:51:38
>>966
1〜6まで全部確認した?
設定もデフォルト値調べてそれが自分の意図と違ったら設定しなおすんだよ?


これでダメだったらとりあえず俺としてはよくわからないなw
968デフォルトの名無しさん:2010/07/04(日) 09:51:47
何言っているんだよ。
本がどうこうじゃなくて自分で設定を一つ一つ確かめろよ。
969デフォルトの名無しさん:2010/07/04(日) 09:53:39
>>966
6つの内のどれかだからさ、もう一回確認してごらん

>>967
だれ?
970デフォルトの名無しさん:2010/07/04(日) 10:05:10
>>966
これはよくある質問なんだけど
ID3DXSprite::Beginは2D描画向けに勝手に色んなステートを書き換えてるので
いくらこの外で設定しても無駄、詳しくは
http://msdn.microsoft.com/ja-jp/library/bb174250(v=VS.85).aspx


手っ取り早くやるなら

pSprite->Begin(D3DXSPRITE_ALPHABLEND);

pDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
pDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
pDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );

pSprite->Draw( pTexture, &rect, &vec3Center, &vec3Position, D3DCOLOR_ARGB(255,255,255,255) );
pSprite->End();


で多分うまくいくよ
971962:2010/07/04(日) 11:20:17
パソコンからはアクセス規制で書き込めないのでPHSから書き込んでいます。

>>964>>965>>967-970
ご教示ありがとうございます。

>>970
その方法で上手く行きました。感謝します。
”手っ取り早くやるなら”とのことですが、
他に”きちんとした方法”が存在するのでしょうか。
少し気になります。
972デフォルトの名無しさん:2010/07/04(日) 11:37:03
手っ取り早くやらないならD3DXSPRITE_DONOTMODIFY_RENDERSTATE使って
自分でステート弄くり回せってことでしょ
973デフォルトの名無しさん:2010/07/04(日) 11:40:08
結論:そんなもの(ID3DXSprite)使うな
974デフォルトの名無しさん:2010/07/04(日) 11:47:25
>>962
というかD3DXSpriteは通常だと座標変換すら使わないから、
フレームバッファのサイズとWindowの大きさが食い違ってたりしない限りは
指定したとおりに描画されるはずだよ。

意図した動作になってないなら指定が間違ってるわけで、
デバッガで動作を止めてパラメータを確認するか、最初からやり直せ。
975デフォルトの名無しさん:2010/07/04(日) 11:48:36
>>971
いいよ
976デフォルトの名無しさん:2010/07/04(日) 11:53:03
>>973
ID3DXSpriteを使っているサイトをよく見かけるのですが?
977デフォルトの名無しさん:2010/07/04(日) 11:55:09
それは初心者向けだから
978デフォルトの名無しさん:2010/07/04(日) 11:55:37
ごめんなさい質問取り消します。
>>973は荒らしかもしれないので。
979デフォルトの名無しさん:2010/07/04(日) 12:01:22
なんで既に答えが出てるのに蒸し返すの?

この手の質問って

ID3DXSpriteで○○しようとしてうですが上手くいきません

回答

やっぱりうまくいきません

の流れって
ここで回答してる連中がID3DXSpriteなんて使うのを良しとしないのばっかだから
ID3DXSprite::Beginがステート書き換えてるのを知らなくて
回答自体はあってるけど対処法が正しくない場合がほとんどじゃん
980デフォルトの名無しさん:2010/07/04(日) 12:05:56
ID3DXSpriteって前よりも普通に実用レベルの速度でるようになったよな

何を誤解したんだが
たまにクラスでID3DXSpritをメンバに持って
DrawのたんびにBeginとEnd呼び出して遅い遅いっていってるやついるけど
981デフォルトの名無しさん:2010/07/04(日) 12:30:25
次スレ

【C++】 DirectX初心者質問スレ Part30 【C】
http://pc12.2ch.net/test/read.cgi/tech/1278214135/
982デフォルトの名無しさん:2010/07/04(日) 12:43:34
>>980
D3DXFontの場合は普通に描画するには問題ないものの、
縁取りとかで同じ文字を9回描画させるようにしたらすぐに重くなりすぎるけどなw

まあ、自前のレンダリングエンジンが枯れてくるまでの動作確認用としては使える。
983デフォルトの名無しさん:2010/07/04(日) 12:54:45
ID3DXSpriteが内部で何をやっているのか正しく理解していれば
使っても別に問題はない
がしかし、ID3DXSpriteについて質問してくる人は大抵理解していない
理解するにはどうすればいいかというと>>973
984デフォルトの名無しさん:2010/07/04(日) 13:07:47
初心者スレなんだからD3DXは使わないほうが良いって風潮どうにかした方が良いな
言ってる本人たちはそれがカコイイ(笑)と思ってるのかも知れないが
985デフォルトの名無しさん:2010/07/04(日) 13:12:21
>>984
だな。完成品の配布の際に多少注意点がある程度で、
(ビルドに使用したSDKのバージョンに合わせた再頒布パッケージの同封が必要)
それ以外には制限らしい制限はない。

D3DXのパフォーマンスに不満が出るというレベルになるまでは積極的に使えばいいと思うよ。
986デフォルトの名無しさん:2010/07/04(日) 13:13:05
>>984
そうやってわざと議論をはぐらかすのやめてくんない?
ID3DXSpriteは欠陥クラスだってみんなわかってるでしょ?
987デフォルトの名無しさん:2010/07/04(日) 13:15:41
どこに欠陥があるのかkwsk

まぁ、言えないだろうけど
988デフォルトの名無しさん:2010/07/04(日) 13:18:27
>>987
グローバル変数関数使いまくりのところ
だからID3DXSprite::Beginの中身が何をやってるのかわからない
ステートを好き勝手変更しても誰も中身をみないとその変更を認識できない

これはグローバル変数関数の弊害
このクラスを作った奴は間違いなくただの素人
989デフォルトの名無しさん:2010/07/04(日) 13:20:31
>>988
PIX for Windowsで調べてみればいいじゃないか。
それに、ID3DXSprite系は基本的にBegin〜Endの外側には影響を与えないように設計されている。
普通に使う分に何が不満なのかね。
990デフォルトの名無しさん:2010/07/04(日) 13:21:56
わたし、あいでーさんでーえっくすすぷらいと使った事ないんだけど、
みんながけっかん品だっていうから、つかわないようにしようと思うの
991デフォルトの名無しさん:2010/07/04(日) 13:23:02
>>988がまったく理解してないことはわかった
992デフォルトの名無しさん:2010/07/04(日) 13:25:43
D3DXを勧めてる奴はもう少し初心者のことを考えて発言するべき
993デフォルトの名無しさん:2010/07/04(日) 13:26:10
>>989
はぁ?
なにそれだっせぇいいわけ
グローバル変数関数を使うプログラムなんて欠陥品でなくてなんなのかと言いたい
994デフォルトの名無しさん:2010/07/04(日) 13:30:30
別にD3DXを薦めてるわけじゃないだろ
D3DXを使った質問に「D3DX使うな」って答えはどうなんだって話
質問は質問として回答すべき
995デフォルトの名無しさん:2010/07/04(日) 13:34:42
>>994
はぁ?話をはぐらかすなよ
ID3DXSpriteの話をしてるんであってD3DXの話なんてしてないでしょ?
なんでさっきから曲解するの?
どうしてそうやって卑怯な手を使うの?
育ち悪いの?
親にそう教わったの?
996デフォルトの名無しさん:2010/07/04(日) 13:37:38
勧めてる奴とは>>984のことであり、今回の質問の回答者のことではない
997デフォルトの名無しさん:2010/07/04(日) 13:40:54
痔スレ

【C++】 DirectX初心者質問スレ Part30 【C】
http://pc12.2ch.net/test/read.cgi/tech/1278214135/
998デフォルトの名無しさん:2010/07/04(日) 13:43:35
ウンコしたくなってきた
999デフォルトの名無しさん:2010/07/04(日) 14:11:54
埋め
1000デフォルトの名無しさん:2010/07/04(日) 14:24:33
1000ならDX11対応のQuadroFX発売
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。