【C++】 DirectX初心者質問スレ Part29 【C】
対応しなきゃいいんだよ
あれDirectX使用中に切り替わったりはしないよ
API呼び出し時に切り替わる(か、切り替わらない)、でアプリ終了時に戻る
モバイルラデ5850使ってDX11プログラム実行してて、
何かのタイミングでDX10のIntelオンボに切り替わってクラッシュなんて事になったら困るもんな
対応しなきゃいいんだって・・・
すごく初心者な質問だけど
らでHD5850のようにdirectX10上がメインのでも
9.0cとかで動く?
試してごらん。
すぐに分かるから。
ども やっぱwin7にしなきゃだめか
動きたくない(お前のPCじゃ)
恐らく思いっきり既出の質問内容だと思いますが、解決方法がわからないので質問
させていただきます。
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色だけ表示されるようにしたいのですが、
方法がわかりません。恐らくソースコードに数行追加すれば直るのではないかと思いますが、
どこにどのように追加すればよいのかわかりません。
すみませんが、追加する場所とソースコードをご教示していただけないでしょうか。
よろしくお願いします。
>>962 表示した画像の解像度はちゃんと128x128になってる?
printScreenキーでしっかりとってペイントに貼り付けて解像度を目視で確認した?
なんとなく128x128っぽい・・・じゃなくて・・・
画像が滲んだときに疑うこと(俺の経験で)
1.バイリニアフィルタがかかってね?
2.表示した画像の解像度が微妙に違う
3.初期化時に作成した画面の解像度が指定と微妙に違う
4.UVの設定がしけてる
5.元画像がハナからなんかおかしい
6.読み込み時におかしくなってる
このぐらい?
966 :
962:2010/07/04(日) 09:44:35
>>964 ペイントに貼付けて拡大して確認しました。
間違いないです。
>>965 本に載っている最小ソースコードなので足りない設定はあっても、余計な設定はないと思います。
>>966 1〜6まで全部確認した?
設定もデフォルト値調べてそれが自分の意図と違ったら設定しなおすんだよ?
これでダメだったらとりあえず俺としてはよくわからないなw
何言っているんだよ。
本がどうこうじゃなくて自分で設定を一つ一つ確かめろよ。
>>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();
で多分うまくいくよ
971 :
962:2010/07/04(日) 11:20:17
パソコンからはアクセス規制で書き込めないのでPHSから書き込んでいます。
>>964>>965>>967-970 ご教示ありがとうございます。
>>970 その方法で上手く行きました。感謝します。
”手っ取り早くやるなら”とのことですが、
他に”きちんとした方法”が存在するのでしょうか。
少し気になります。
手っ取り早くやらないならD3DXSPRITE_DONOTMODIFY_RENDERSTATE使って
自分でステート弄くり回せってことでしょ
結論:そんなもの(ID3DXSprite)使うな
>>962 というかD3DXSpriteは通常だと座標変換すら使わないから、
フレームバッファのサイズとWindowの大きさが食い違ってたりしない限りは
指定したとおりに描画されるはずだよ。
意図した動作になってないなら指定が間違ってるわけで、
デバッガで動作を止めてパラメータを確認するか、最初からやり直せ。
>>973 ID3DXSpriteを使っているサイトをよく見かけるのですが?
それは初心者向けだから
ごめんなさい質問取り消します。
>>973は荒らしかもしれないので。
なんで既に答えが出てるのに蒸し返すの?
この手の質問って
ID3DXSpriteで○○しようとしてうですが上手くいきません
↓
回答
↓
やっぱりうまくいきません
の流れって
ここで回答してる連中がID3DXSpriteなんて使うのを良しとしないのばっかだから
ID3DXSprite::Beginがステート書き換えてるのを知らなくて
回答自体はあってるけど対処法が正しくない場合がほとんどじゃん
ID3DXSpriteって前よりも普通に実用レベルの速度でるようになったよな
何を誤解したんだが
たまにクラスでID3DXSpritをメンバに持って
DrawのたんびにBeginとEnd呼び出して遅い遅いっていってるやついるけど
>>980 D3DXFontの場合は普通に描画するには問題ないものの、
縁取りとかで同じ文字を9回描画させるようにしたらすぐに重くなりすぎるけどなw
まあ、自前のレンダリングエンジンが枯れてくるまでの動作確認用としては使える。
ID3DXSpriteが内部で何をやっているのか正しく理解していれば
使っても別に問題はない
がしかし、ID3DXSpriteについて質問してくる人は大抵理解していない
理解するにはどうすればいいかというと
>>973
初心者スレなんだからD3DXは使わないほうが良いって風潮どうにかした方が良いな
言ってる本人たちはそれがカコイイ(笑)と思ってるのかも知れないが
>>984 だな。完成品の配布の際に多少注意点がある程度で、
(ビルドに使用したSDKのバージョンに合わせた再頒布パッケージの同封が必要)
それ以外には制限らしい制限はない。
D3DXのパフォーマンスに不満が出るというレベルになるまでは積極的に使えばいいと思うよ。
>>984 そうやってわざと議論をはぐらかすのやめてくんない?
ID3DXSpriteは欠陥クラスだってみんなわかってるでしょ?
どこに欠陥があるのかkwsk
まぁ、言えないだろうけど
>>987 グローバル変数関数使いまくりのところ
だからID3DXSprite::Beginの中身が何をやってるのかわからない
ステートを好き勝手変更しても誰も中身をみないとその変更を認識できない
これはグローバル変数関数の弊害
このクラスを作った奴は間違いなくただの素人
>>988 PIX for Windowsで調べてみればいいじゃないか。
それに、ID3DXSprite系は基本的にBegin〜Endの外側には影響を与えないように設計されている。
普通に使う分に何が不満なのかね。
わたし、あいでーさんでーえっくすすぷらいと使った事ないんだけど、
みんながけっかん品だっていうから、つかわないようにしようと思うの
D3DXを勧めてる奴はもう少し初心者のことを考えて発言するべき
>>989 はぁ?
なにそれだっせぇいいわけ
グローバル変数関数を使うプログラムなんて欠陥品でなくてなんなのかと言いたい
別にD3DXを薦めてるわけじゃないだろ
D3DXを使った質問に「D3DX使うな」って答えはどうなんだって話
質問は質問として回答すべき
>>994 はぁ?話をはぐらかすなよ
ID3DXSpriteの話をしてるんであってD3DXの話なんてしてないでしょ?
なんでさっきから曲解するの?
どうしてそうやって卑怯な手を使うの?
育ち悪いの?
親にそう教わったの?
勧めてる奴とは
>>984のことであり、今回の質問の回答者のことではない
ウンコしたくなってきた
埋め
1000ならDX11対応のQuadroFX発売
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。