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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part23 【C】
pc12.2ch.net/test/read.cgi/tech/1242977486/

83 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 02:46:10 ]
通じりゃいいだろ
こだわるところじゃない

84 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 02:49:13 ]
DirectX11では
「演算シェーダ」「ハルシェーダ」「ドメインシェーダ」の
三つのプログラマブルシェーダと
テッセレーションを行うための「固定機能シェーダ」が新設されるそうな

もう紛らわしいから固定機能パイプラインは無かった子にして良いよ

85 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 07:12:24 ]
もう固定機能パイプラインをちゃんと言うしかないな

86 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 08:20:06 ]
固定機能パイプラインが無くなる事で
良書が増えるといいねぇ

87 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 12:36:05 ]
directxライブラリと標準ライブラリを同時に使うことってできないんでしょうか?

88 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 12:40:39 ]
勝手に使えよ。

89 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 12:44:25 ]
多分同じ変数や関数が複数回使われてるみたいなエラー出たんだろ

90 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 13:00:26 ]
DirectXつかっててそんなの出るか・・・?

91 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 19:52:46 ]
maxとminがdefineされてるから、
std::maxとstd::minと衝突するってやつか?
NO_MINMAXでぐぐればいけた気がする。



92 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:09:13 ]
同じMS製品でそんなの出るとか不良品じゃねーか

93 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 22:03:18 ]
もともとmaxとかminとか定義してたライブラリありまくるぜ
vectorとか標準ライブラリ作った人なんでこんな名前にしたんだと思った
std::〜っていちいち書くぐらいしかないのかな?

94 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 22:32:35 ]
いちいち書いたほうがいい
STLだけ差し替えたりするし。

95 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:46:05 ]
SYSPROCはどこに書けばいいの?

96 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 12:42:29 ]
>>93
DirectXのmin maxはマクロだから、std::つけてもエラーが出る。

97 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 16:29:55 ]
rad0 が #define されてるのが地味にトラップ。

98 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 23:07:23 ]
DirectInput8のGetDeviceStateメソッドでジョイパッドの入力を生で受け取り
コード側でそれを、否定・論理積を使ってトリガ情報に加工して使おうとしています。

当該処理はDLLに放り込みました。
それを、Win32コンソールアプリケーションをドライバにしてforループでガンガン回しながら
テスト実行してみたところ、ベタ入力もトリガ入力も正しく取れるのですが、
本番環境のWin32アプリケーションに組み込んでみたところ、
トリガ入力がベタ同然の振る舞いをするようになってしまいました。

理屈の上では、メインループでどれだけの時間がかかろうと、かかるまいと、
GetDeviceStateが押された瞬間にキーが押しっぱなしでさえあれば
トリガとしてのふるまいをしてくれるはず・・・と期待しているのですが、どうにもなりません。

これって、いわゆる「直接入力における取りこぼし」ってやつなんでしょうか・・・

99 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 01:46:34 ]
外人「OH〜ユーアーサムラーイCOOL!」
農民「ノー…アイ アム ア ファーマー…」
外人「オウマイゴー アイムソーリー ユーアープアー」


100 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 03:09:45 ]
>>98
実を言うとそこまで深く突っ込んで調べたことが無い。
そのテスト版のプログラムもし公開できるものなら見てみたいよ

101 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:24:25 ]
DLLにした時点でどこのキーとってるのか俺にはわからないけど
メインの処理のキー入力を勝手にとってくるもんなの?そーゆーのって?



102 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:30:02 ]
法線とライトの内積を求めてその値で境界の範囲を決めるトゥーンシェードで
Sio29さんのCelsView見たく境界の色をあいまいにするのってどうやってやるんですか?


103 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:34:53 ]
>>102
本人に聞いてこいよ

104 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:38:42 ]
>>102
参照するトゥーンマップの段階の変わり目をグラデーションにするだけ

105 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:41:18 ]
>>103
つっこみありがとう
Sio29さん独特の技術なら聞いてこようと思います

やりたい事がわかりやすいように例を挙げただけだったんですが

106 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:43:30 ]
>>104
それじゃなんねーと思うぜ
法線は段階的に角度がついてるわけじゃねーし

107 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:43:40 ]
>>104
ありがとうございます
色の決定にトゥーンマップを使用していないのでつまづいています


108 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:53:43 ]
>>106
なんで?
頂点シェーダでマップの参照位置を計算してピクセルシェーダにわたして
実際の色参照をピクセルシェーダでやれば問題ないんだけど

109 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:57:30 ]
>>107
トゥーンマップを使わないでどうやってるの?
いちいち内積の値でifで条件分けして陰つけてるの?

110 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:02:58 ]
>>108
関係なくね?
例えば立方体の辺にグラデ入れたいとしてその方法で何かつくの?

111 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:07:34 ]
VS上の法線などのベクトルは、
PSには線形補間されて渡される。



112 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:12:47 ]
>>110はライティングの仕組みを全く理解してないと思われ
そんなこと言ったら普通のグローシェーディングもできないことになる

113 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:12:51 ]
>>111
だから頭の中でそれでグラデがつくか考えてみろっての

114 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:14:52 ]
>>112
だからその仕組みとこの仕組みがリンクしてねぇって俺は主張してるわけだよ

115 名前:102 mailto:sage [2009/06/30(火) 20:23:13 ]
>>109
そうです、ifで条件つけてやってます
マテリアルごとにトーンマップを用意するのが面倒なので

116 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:30:46 ]
>>114
VSの計算結果で頂点Aが黒で頂点Bか白としましょう
PSで頂点AとBの中間地点のピクセルを描画するときは
線形補間された灰色という値が入ってきますよね?
だから通常のライティングが成立してるのはわかりますよね?

VSで頂点Aのマップの参照位置を(u,v)=(0,0)
Bの参照位置を(u,v)=(1,0)としましょう
PSでAとBのちょうどまんなかのピクセル描画時には
線形補完された(u,v)=(0.5,0)という値が入ってきます
この値をつかってマップの色をサンプリングすればOKなのですよ

117 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 22:35:53 ]
>>116
そこまで来てねぇよw
法線の値でグラデかけたマップから値とりにいくところで
うまくいかねぇと思うぜ

118 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:37:11 ]
customUI使うには何をincludeすればいいでしょうか。
ソース分割とかやったことなくてさっぱりわかりません。
bccDeveloper使ってやっています。

119 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:52:15 ]
>>117
www.arakin.dyndns.org/glsl_cartoon.php
ここが比較的わかりやすいから、見てみれば。
そこのテクスチャの色は2色、輪郭を含めて3色だが、
その3色の境界にグラデをかければ、最終的な
出力画像にもグラデが掛かるだろ。

120 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:55:02 ]
>>118
CustomUIの中のCoreとOptionalプロジェクトを
インポートして使う。
VCならそのままだが、bccDeveloperはシラね。

121 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:00:58 ]
>>119
かかんねぇよ
よく考えろよ



122 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:12:20 ]
げちょげちょすっげキタネェのができるぞ
トゥーンマップ(?)でうまくいくのって2〜3色ぐらいでグラデなしの
ときだけのような希ガス

綺麗にならないのはグラデがかかってほしいところでちょうど
法線(内積?)が段階的にかわってくれるとは限らないってところがポイントだと思う
つまり、内積→マップの値の変換でうまくいかない

123 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:50:19 ]
境界って輪郭線じゃなくてシェーディングの部分でしょ?
だったら実際のところトーンマップの中間をグラデにしてるだけだと思うが>CelView
きたねぇところはきたねぇし


124 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 01:54:32 ]
>>123
境界の認識はあってるよ
実はCelView見てないけど
だったら高解像度になるにつれ余計なことしないほうがいいな

ようはシェーディングの境界をぼかしたいわけじゃなくて
シェーディングの境界がジャギってんのが気に入らないんだろ?

125 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 11:42:26 ]
プログラマブルシェーダについて質問です。
bool型定数を使った静的分岐をやろうとしました。
ttp://msdn.microsoft.com/ja-jp/library/bb944006(VS.85).aspx
>静的分岐では、ブール型のシェーダー定数に基づいてシェーダー コード ブロックのオン/オフを切り替えることができます。
>これは、現在レンダリングされているオブジェクトの種類に基づいて
>コード パスを有効または無効にできる便利な方法です。
>描画呼び出しの間では、どの機能を現在のシェーダーでサポートするかを決定し、
>その動作に必要なブール フラグを設定できます。
>ブール定数で無効にされたステートメントは、シェーダー実行中にスキップされます。

下記のようにやってみたのですが、
fcx.exeでコンパイルしたものを覗いたところ、cmp命令が使われてしまっていました。
それでは分岐による負荷がかかってしまいますよね。

分岐負荷がかからないコードブロック単位での静的分岐とは、どうやるのでしょうか?

bool UseTexture;

float4 PS(VS_OUTPUT In) : COLOR
{
if (UseTexture)
{
In.Color *= tex2D(DecaleSamp, In.TexDecale);
}
return In.Color;
}

126 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 14:57:45 ]
#ifdef
#else
#endif

127 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:58:43 ]
>>125
静的に決定させる為には、
静的に決定出来なきゃ駄目だよね。

>>125のコードだと、「bool UseTexture」は
いつ何時変わる可能性があるので、コンパイラは
決め撃ちすることは出来ない。

方法としては、>>126のプリプロセッサ以外に、

@「static const UseTexture = true;」にする。

Aシェーダの引数で受け取り、passで分岐する。

float4 PS(VS_OUTPUT In,
uniform bool UseTexture ) : COLOR
{
if (UseTexture)
{
In.Color *= tex2D(DecaleSamp, In.TexDecale);
}
return In.Color;
}

technique T
{
pass P0{ pixelShader = compile PIXELSHADER_TARGET PS( false );}
pass P1{ pixelShader = compile PIXELSHADER_TARGET PS( true );}
}

いづれも、最適化とプリシェーダはONにしておくこと。

128 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:01:27 ]
>>126-127
アドバイスありがとうございます。
静的分岐とは言え、さすがにON/OFFのチェンジはしたいので
>>126や、>>127の@というわけにはいきません。

ひとまず、>>127のAではうまくいきました。

そこで再質問なのですが、グローバル定数は、uniformとして扱われるMSの説明に書いてある上、
1回の描画命令の間では不変ですよね?
グローバル定数ではダメなのでしょうか?(ダメだったから>>125はダメだったわけですが…)

正直引数のuniformでやる方法ですと、
pass P0{ pixelShader = compile PIXELSHADER_TARGET PS( false );}
pass P1{ pixelShader = compile PIXELSHADER_TARGET PS( true );}
このようにtrueの場合とfalseの場合をいちいち定義しなければならず、
組み合わせが多い場合(ライトON/OFF、影ON/OFFなどなど)に組み合わせ爆発が厄介そうです。

uniform int の場合はintの取りうる範囲が多すぎるため、
PS(0) PS(1) のように定義しなければならないのはわかるのですが、
MSの説明を見る限り「bool型のシェーダ定数は特別扱いだよ」みたいに読めるのですが、
bool型を使うことによる利点のようなものは何かないのでしょうか?
MSの説明を見て

129 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:38:08 ]
>>128
>1回の描画命令の間では不変ですよね?
シェーダの生存期間は、コンパイルによって
exe(的なもの)として生成されてから、破棄されるまでの間です。
描画命令間ではありません。
定数が静的であるとは、生成から破棄の間静的であることです。
描画命令の間不変としたいなら、描画毎のコンパイルが必要。

>組み合わせが多い場合(ライトON/OFF、影ON/OFFなどなど)に組み合わせ爆発が厄介そうです。
そうです。これはD3D9世代の欠点でもあります。
これを補う為に、フラグメントシェーダやデファードレンダリングなどがあったりします。
DX11では動的リンクが加わるそうなんで、ちょっとはマシになるかも。

130 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:30:38 ]
DX11でシェーダの連結ができるって大騒ぎしてるけどさ
なんかDX9のフラグメントリンカーの存在忘れたような大騒ぎがよな

無かったことにされてるのか??
情報もえらく少ないし。

131 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:35:50 ]
シェーダ爆発なんて騒ぐのはキレイなエンジン作りたいやつだけで
普通は運用でどうにでもなるだろ。



132 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:20:36 ]
>>130
wlog.flatlib.jp/item/1219
wlog.flatlib.jp/item/1230

このブログがわかりやすいが、DynamicShaderLinkageは
動的リンクというよりは、サブルーチンコールに近いものらしい。
イメージとしては、動的にShaderの部品を組み上げて
1つのShaderを作るのがフラグメントリンカならば、
とりあえず全てがつまったmain()プログラム的なShaderを1つ作って、
動的に個々の分岐を決定出来るのがDynamicShaderLinkageということになる。
これが良くなったかどうかわからんが、より普通になった感じだな。

133 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:24:51 ]
>>130
フラグメントリンカを使ってる人は
今現在、世界で4人、
商用・非商用プログラムで使われてる例はゼロらしいよ。

134 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:10:26 ]
現状のPC構成だと殆どのケースでネックになるのがCPUだから
GPUで多少分岐したところで全体の速度に大差はないからな。
多少のシェーダー負荷は承知の上でまとめちまうほうが管理が楽。

135 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:39:03 ]
DirectSound で再生しながら、
横軸に周波数、縦軸に音量を表すようなグラフを
リアルタイムで描きたいです。
とりあえずWAVを再生するところはできてるんですけど、
そのようなグラフを描くにはどうすればいいですか?


136 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:48:55 ]
すれ違いじゃねっかな。
再生できてるならそのデータをそのまま解析すればいい。
どういう風なデータ構造になってるか分からないって質問は論外。

137 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:49:57 ]
spectrum analyzer source code
でググったら。



138 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:05:54 ]
フルスクリーン描画をしているときに画面中にダイアログを表示するのってどうやるの?

フルスクリーン描画しているウィンドウがフォーカスを失うと
device->Present()が失敗してしまう問題と、

フルスクリーン描画をかけるとほかのウィンドウが表示されてても
描画内容が上書きされてしまう問題とがあるわけだけど。

139 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 18:24:20 ]
深度バッファシャドウについて質問です。

完全な影になる部分は、RGBA(0.5f, 0.5f ,0.5f, 1.0f)であるとします。

普通の理屈通り使うと、ライトから見て裏面になる部分は、深度バッファシャドウ的に影であると判定されますよね。
でも、ライトから見て裏面になる部分は、すでに頂点シェーダ上でCOLOR0の値が半減しているはずです。

ピクセルシェーダでの判定にひっかかったからといって、さらに半減してしまうと、影が濃すぎることになりますよね。

これは、頂点シェーダでは影による表面色の補正をかけず「影の濃さ」を計算してピクセルシェーダに渡し、
深度バッファシャドウとライティングのシャドウを先に計算し、最後に表面色に反映。としなければならないのでしょうか?

140 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 19:52:52 ]
影と陰ね
これは同じ物理現象だよね
たしか

141 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 19:57:29 ]
シャドウマップのサンプルがあるんだからそれ見ればいいだろ
三項演算子使ってるから



142 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:01:13 ]
Direct3Dの色ってどうして少数使うの?
遅いでしょ。

143 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:06:18 ]
シャドウマップを影を追加する為のギミックとして
使うのではなく、
光が当たっているかどうかの判断に使うといい。

144 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:08:04 ]
>>142
正規化してるだけ

145 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:24:56 ]
>>143
あ、なるほど。
すんなり理解できました。わかりやすい教示ありがとうございます。

146 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 08:54:10 ]
>>142
GPUでは小数のほうが早い

147 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:42:01 ]
SAFE_RELEASEマクロの代わりに以下のようなインライン関数を書いたのですが、IUnknownのポインタがうまく変換されないのでコンパイルができません
inline void SafeRelease(IUnknown *& pUnk)
{
if (pUnk)
{
pUnk->Reelase();
pUnk = NULL;
}
}

以下ポインタの型変換をテストしてみたものですが、どうしてエラーになるコードが駄目なのかがわかりません
このように変換ができない理由を教えて下さい
IDirect3D9 * pD3D9 = Direct3DCreate9(D3D_SDK_VERSION);
//IUnknown *& rp = pD3D9; // エラー
//IUnknown *& rp = (IUnknown*)pD3D9; // キャストしてもエラー
IUnknown * p = pD3D9;
IUnknown *& rp = p; // 一時変数にコピーしてからだとOK

[ VC++2008 EE / DirectX SDK March 2009 ]

148 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:08:38 ]
IUnknown *& rp = pD3D9; // エラー

149 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:17:09 ]
関数のコンパイルが成功しない理由は148だと思うのですが、どうしてこの変換が認められないのか教えて下さい

150 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:22:25 ]
ポインタは変換可能だが、参照は変換できないというだけ。

151 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:27:14 ]
ありがとうございました。



152 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:49:27 ]
あえて関数化する必要がないしなー

153 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:56:19 ]
スマポ使えってこった

154 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:42:31 ]
むむ
RegexOptions^ Option = gcnew RegexOptions();
Option |= RegexOptions::CultureInvariant;
これでコンパイルエラーerror C2676が出てしまいました・・。




155 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 19:23:53 ]
>>154
型が違うんだから当然じゃないか。

156 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 20:12:07 ]
すまぽってComPtr的な動作したっけ?

157 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:21:41 ]
無理、よって完全に的外れ。

158 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:28:58 ]
           / ̄ ̄ ̄\
          /  ⌒  ⌒ ヽ 
         /  ( ●)(●) |  
         |    (__人__) }   …
        /、.    ` ⌒´  ヽ  
       /            |   
       |           | /    
       ヽ_|  ┌──┐ |丿     
         |  ├──┤ |      
         |  ├──┤ |


159 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:31:47 ]
レベル低いなぁ

160 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:51:17 ]
directX9で2Dゲームを作る為にPNG画像を表示しようと思ったのですが
D3DXCreateTextureFromFileInMemoryEx(g_pD3DDevice,ptr,SizeofResource(NULL, hRsrc),40,40,8,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,
D3DX_DEFAULT,D3DX_DEFAULT,0,NULL,NULL, &img[i]);
で40pxの画像を読み込むと64pxに拡大されて表示されてしまいます。
元の画像のサイズのままで読み込みたいのですがどうすればいいでしょうか。

161 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:57:44 ]
自分でそうなるようにしているからだろ。
他人の作ったAPIが使えない、ヘルプを読むつもりもないのなら、
全部自前で読み込めよ。



162 名前:160 mailto:sage [2009/07/05(日) 00:25:32 ]
>>161
msdn.microsoft.com/ja-jp/library/cc372744.aspx
このページと自分の持ってる本を参考にしても分かりませんでした。

参考になるサイトや本を紹介して頂くだけでも有りがたいのでどうかアドバイスをお願いします。

163 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:31:33 ]
>>160
VGAによってはそうなる。
自分のPCだけで無くどこでも動くようにするなら、テクスチャは2のべき乗サイズになると想定したほうがいい。

164 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:41:59 ]
>>163
VGAのせいじゃねえよ。
どんだけ馬鹿なんだよ?

>>162
引き延ばす設定が入っているから。
いったいヘルプのどこを読んだんだよ?

165 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:51:21 ]
VGAによってはサイズ制限があるから
D3DXがフラグの設定どおりに拡張してテクスチャを作る。

⇒VGAのせいってコトだったんじゃね?

166 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:53:34 ]
客:アプリが起動しません。 サポ:デフラグかけてみて。 客:直りました。

動くプログラムを早く作るのは、いちいち理屈を勉強するプログラマではなく、魔法を信じるプログラマの方である。


167 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:03:38 ]
俺の経験だけかもしれんが
デフラグをかけた(かける必要が出た?)PCは例外なく復活は無くお亡くなりになるw

168 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:10:16 ]
NT4時代から毎日かけているがそんなことは無かったぜ。

169 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:13:08 ]
まめにやってると数秒だな

170 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:23:50 ]
>>160
ところでテクスチャのサイズと表示のサイズには何の関係性もないんだけど
なぜ拡大されていると判断したの?

作成したテクスチャのGetLevelDescでサイズを取得してみて
本当にサイズが64のテクスチャとして作られているか確認したの?
もしそうならそれはビデオカードの問題

テクスチャのサイズが40なのに64で表示されているっていうなら
それは表示のさせ方の問題
貼り付けてるポリゴンはどうなってるの?
射影行列の設定は?
viewポートとウインドウサイズが一致してないとかは?

171 名前:160 mailto:sage [2009/07/05(日) 02:01:54 ]
>>170
GetLevelDescでサイズを取得したら64×64でした。
Draw関数で40pxに縮小して表示してみたんですが若干ぼやけてしまいました。
テクスチャは2D画像を表示させるのに適していないってことでしょうか。
画像を表示させる別の方法を探してみます。
アドバイス有難うございました。



172 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:08:31 ]
>>171
2Dゲーム作るならOpenCVでいいんじゃない?

173 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:28:18 ]
>>171
元々テクスチャというのは不定形のメッシュに伸び縮みさせながら貼り付ける道具だから、
デフォルトでフィルターがかかるようになっている。
FilterとMipFilterをD3DX_FILTER_NONEにすれば補間は起こらないよ。

>>164
初心者に嘘ばかり教えない。
おまえ、ネットブック(GMA950)で動作チェックしたことないだろ?

174 名前:160 mailto:sage [2009/07/05(日) 02:49:04 ]
>>173
ありがとうございます。
黒い領域が残ったけどクリッピングで消せそうなので大丈夫そうです。

VCproだと64×64になってしまったのですが、ExpressEditionでプロジェクトを
作り直したら40×40のテクスチャを作れました。
原因はVCの設定ミスなんでしょうか・・・

175 名前:デフォルトの名無しさん [2009/07/05(日) 05:17:56 ]
スキンメッシュをリソースファイルから呼び出すにはどうすれば良いですか?

176 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 06:58:30 ]
>>173
GMA950はNONPOW2CONDITIONALがYesだったと思うが。

NONPOW2CONDITIONALはドライバレベルで対応できる機能だから、
よほど古くてドライバが更新されてないのでなければ使える。

177 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:14:36 ]
デフラグを頻繁に行うと間違いなくHDDにダメージを与える事になる

PCの調子がおかしい時は基盤とかにホコリがたまってて電源不足になってる可能性あり

178 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:28:29 ]
>>174
なんでUVを適切に設定しないでクリッピングなんだ?
意味分からん

>原因はVCの設定ミスなんでしょうか・・・
人の話を聞かない奴だな

179 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:49:38 ]
断片化した状態で使うのは常にデフラグをかけているのと同義

180 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:59:03 ]
結局確率の話でしかないだろ。
対象のファイルが

・頻繁に読む・固定長で書き込み
HDD側で2桁程度の高速化

・永久に使用しない
無益

・追記する場合
また断片化する

181 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:18:19 ]
まぁSSDにしとけってこったな



182 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:32:41 ]
はいはい、スレ違いスレ違い

183 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:02:30 ]
コンパイルしようと思ったら

1>------ ビルド開始: プロジェクト: a, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。


1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。
1>D:\Program Files\VC\project\a\Debug\a.exe : fatal error LNK1120: 外部参照 9 が未解決です。
1>ビルドログは "file://d:\Program Files\VC\project\a\Debug\BuildLog.htm" に保存されました。
1>a - エラー 40、警告 2
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と出ます。何が原因でしょうか?
コード自体は
homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html#R6
の6.プログラムを組む、というプログラムです






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

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

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