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


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

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



1 名前:デフォルトの名無しさん mailto:ライシンマハケン [2008/07/17(木) 13:50:04 ]
1 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/09(水) 09:55:56
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part17 【C】
pc11.2ch.net/test/read.cgi/tech/1207702556/

622 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 00:11:47 ]
DirectSoundはDirextX8も9も一緒なんですか?
DirectSoundCreate8からDirectSoundCreate9になるのかと思ったんですがないといわれます。
ライブラリの追加はdsound.lib dxguid.lib winmm.lib だけでいいんですか?

623 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 02:15:01 ]
質問です。
DirectXで作られたゲームを公開する場合、マイクロソフトの著作権表記などは
必要なのでしょうか?

ttp://www.microsoft.com/japan/msdn/directx/japan/license/eula.aspx
ttp://www.microsoft.com/japan/msdn/directx/japan/license/dx_license.aspx

一応上を読んでみたのですが、ごちゃごちゃ書いてあって正直よくわかりません。

624 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:26:40 ]
>>622
dsound.hの中を見ればわかるよ
DIRECTSOUND_VERSION >= 0x0800
なので8も9も同じ
libはそれでいいんじゃない
未解決とか言われたら追加すればいい

625 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:12:20 ]
質問です
DirectX8で作られた古いソースが出てきたのですが、現在PCには9.0cのSDKが入っています。
上記ソースをコンパイルしようとしたところ
#include <d3d8.h>
#include <d3dx8.h>
こいつらがないと言われてしまったのですが、DirectX8のSDKをインストールしないとダメってことでしょうか。
(普段は9のプログラムを組んでいるので)競合しそうで怖いのですが、何か良い手はありますでしょうか

626 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:19:36 ]
俺も場合は複数バージョンのSDKをインストールしないで解凍して保管する
で、includeやlibは新しいバージョンを優先しとけばないものだけ古いものから参照される

627 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:46:20 ]
>>625

>>552

628 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:06:39 ]
>>625
オプションのVC++ディレクトリを
C:\Program Files\Microsoft DirectX SDK (March 2008)\Include
C:\Program Files\Microsoft DirectX SDK (August 2007)\Include


こんな感じにしてるが心配ならDX8のときは順番を入れ替えればいいんじゃない


629 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:14:18 ]
DirectInputのマウスデバイスで相対座標のデータを得るとき、値1が1pxと対応しているわけではないと思うのですが、
どうやってピクセル単位の座標変化を求めればいいでしょうか。

630 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:59:32 ]
対応してた気がするが?



631 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:09:01 ]
629
つまりプログラムのミスですか。確認してみますorz

632 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:09:17 ]
サウンドバッファはプライマリとセカンダリ両方作る必要はあるんですか?サンプルを見たんですが、2つ作ってるのにセカンダリしかつかってないように見えるんですが

633 名前:629 mailto:sage [2008/10/09(木) 19:43:32 ]
やっぱりどうしても、実際のカーソルの位置と、DirectInputで求めたカーソル移動量が食い違います。
スクリーン上で1000px水平に移動させると、移動量の合計が600〜800くらいになっています。
下がそのコードなのですが、どこか間違っているところがありますか?
void MouseDevice::UpdateState()
{
HRESULT hr;
if (hr = pDevice_->Acquire(), FAILED(hr))
{
LOG_WARN("IDirectInputDevice8::Acquire 非アクティブになった?");
return;
}

DIMOUSESTATE mouseState;
if (hr = pDevice_->GetDeviceState(sizeof(mouseState), &mouseState), FAILED(hr))
{
LOG_ERROR("IDirectInput8::GetDeviceState");
return;
}

cursorPos_.x = clamp(cursorPos_.x + mouseState.lX, 0L, 1279L);
cursorPos_.y = clamp(cursorPos_.y + mouseState.lY, 0L, 1023L);

//SetCursorPos(cursorPos_.x, cursorPos_.y);

POINT pt;
GetCursorPos(&pt);

std::stringstream ss;
ss << "MOUSE " << cursorPos_.x << "," << cursorPos_.y << " (" << pt.x << "," << pt.y << ")";
LOG_INFO(ss.str().c_str());
}


634 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:07:33 ]
>>633
関係ないけど ,演算子をそんな風に使う人は初めて見た

635 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:10:37 ]
WAVEFORMATEX構造体のnSamplesPerSecに値がはいらないんですが、どうしてですか?
WAVEFORMATEX FEX;
ZeroMemory(&FEX, sizeof(WAVEFORMATEX));
FEX.nSamplesPerSec = 44100;
ここで変数をみても44100が入ってなくて0なんですけど

636 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:12:16 ]
>>633
試してないのでわからんけど、マウスカーソルの加速の分がずれてるとか・・・?

637 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:25:37 ]
>>636
ありがとうございます。「directinput マウス 加速」で検索したら解決しました。
DirectInputではマウスドライバから直接データを得るので、ウィンドウズのカーソルを意識するアプリケーションは
Win32関数かメッセージを使うように書いてありました。

638 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:30:29 ]
//ローカル回転&ワールド移動 >> ワールド変換行列設定
//
//角度はRAD
HRESULT CDXDevice::SetWorldTransformLW(D3DVECTOR &l_rot, D3DVECTOR &w_trans, int index)
{
D3DXMATRIX mat,mat2;
D3DXMatrixIdentity(&mat);


if (l_rot.x) {
D3DXMatrixRotationX(&mat2, l_rot.x);
D3DXMatrixMultiply( &mat, &mat, &mat2);
}
if (l_rot.z) {
D3DXMatrixRotationZ(&mat2, l_rot.z);
D3DXMatrixMultiply( &mat, &mat, &mat2);
}
if (l_rot.y) {
D3DXMatrixRotationY(&mat2, l_rot.y);
D3DXMatrixMultiply( &mat, &mat, &mat2);
}

D3DXMatrixTranslation( &mat2, w_trans.x, w_trans.y, w_trans.z);
D3DXMatrixMultiply( &mat, &mat, &mat2);

return SetWorldTransform( &mat, index);
}

行列を掛ける順番って x z yなんですか?

639 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:36:35 ]
望む結果に応じて好きな順序で掛ければ良い

640 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:37:53 ]
どなたか>>623の質問に答えられる人はいませんか?



641 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:19:49 ]
DIRECTXで描画をしながら、Windowsのテキストボックスなどを表示したいのですが
どのような方法がありますでしょうか?

普通にウィンドウにコントロールを作成するだけでは
DIRECTX側のpresentで上書きされてしまい、表示することができません。

ウィンドウモードならば、ウィンドウ作成時にWS_CLIPCHILDRENを指定することで
テキストボックスを部分のみをクリッピングすることができたのですが
フルスクリーンモードでは、当然上書きされてしまいます。

フルスクリーンモードでも通用する、何か良い方法はありませんでしょうか?



642 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:25:12 ]
GXUT custom UI

643 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:00:03 ]
ニセフルスクリーンモードにする

644 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:01:41 ]
>>641
上書きしないところに描かなければ良いだけ
そんな当たり前なことを聞く意味が分からない

645 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:11:34 ]
>>644
日本語でおk

646 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:14:58 ]
上書きしたくなければ、その位置に描くなということだろ

647 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:21:06 ]
>>644
上書きしなきゃいいって問題じゃない。
GDIサーフェスについて勉強してこい。

648 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:34:59 ]
設定をフリップにせず、present時に適切に描画位置を指定すれば上書きされない。
いくら無能でもその程度のことぐらい理解出来るだろ。

649 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 01:31:48 ]
別途専用ウィンドウを描画する

650 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 07:31:36 ]
このメソッドは、Microsoft Windows Graphics Device Interface (GDI) のダイアログ ボックスを、フルスクリーン モードのアプリケーションで使えるようにします。

構文

HRESULT SetDialogBoxMode( BOOL bEnableDialogs );




651 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 13:22:58 ]
>>635
どうやって確認してるの
ブレークポイント?

652 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 23:28:45 ]
StretchRectでモザイク的なもの作ろうと思ってるんだが、どうもメソッドが失敗しちゃう。
GetRenderTargetで成功しているコピー元とコピー先と同じの使ってるから何とかなると思ったが・・・
しかもMSDNの言ってることがよー分からん。RTテクスチャって何ですか?単純なオフスクリーンってなんですか・・・

天才が居たら助言頼む

653 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:31:44 ]
そういう用途に使うのなら素直にテクスチャとして、適切に位置指定して描画しろ。

654 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:47:19 ]
規制で書き込めませんでした…

>>642
DXUTでしょうか? ちょっと調べてみます。

>>643
自前で解像度変更して、ごまかすことも考えたのですが
強制終了した場合に解像度が戻らなくなってしまったりしそうで悩んでいます

>>644
>>648
言ってることはわかりますし、以前にその方法も考えたのですが
コントロールが単純な位置にあり、少ない方形でまとめられるのならまだしも、
「コントロールの位置が固定でなく、しかも複数が散らばる」という
状況ではどうしようもなくなってしまうので止めました。

>>649
テキストボックスから入力が必要な場面のみダイアログを描画、という
方法も考えたのですが、できるだけ1ウィンドウでやりたいと思っております。
(どうしようもなかったら、ダイアログを出そうかとも思っていますが…)

>>650
使用してみましたが、やはりフルスクリーンでは効果がないようです。
色々と調べてみた限りでは、ダイアログやメニューに対して効果があるようですが
ウィンドウに、子ウィンドウとして貼り付けたコントロールにも使用できるのでしょうか?

655 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:55:41 ]
クリッピング程度の単純な処理すら書けないのなら、
そもそもプログラムを組むのを諦めろ。

656 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:01:18 ]
>>654
逆に考えるんだ
ダイアログに効果があるのならダイアログに貼り付ければいいだろ

657 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:21:36 ]
>>655
>>648で言われたようにクリッピング的な処理は調べてみたのですけども、
今回の条件の場合には適切な方法なのでしょうか?

presentにはrect単位で転送領域を区切る方法などもあるようです。
ですが、仮にど真ん中にBOXがあったら、これを避けるように方形で区切ると
上下左右の4個の領域に区切るということになり、
仮にこのコントロールが複数ある場合には、非現実的に思えました。
(見当違いな意見を言っているようでしたら、すいません)

>>656
やはり難しいようなので、ダイアログを使って別ウィンドウに出すか、
もしくは最初に言われたDXUTとやらの勉強を始めてみたいと思います。
一応、presentの「後に」GDIでコントロールの画像を転送する、
という方法でトライしてみましたが、どうもちらついたりしてダメみたいです。

658 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:16:27 ]
複数矩形があろうが、その分だけ分解すればいいだけ。
その程度のことが非現実的だったら、
Windowsが行っているGUIのクリッピングは超常現象なのか?

659 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:50:44 ]
まっさきにDXUTのサンプル動かしてみるようじゃないと、今後も苦労しそうだな・・・

660 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 20:30:03 ]
hr = device->CreateIndexBuffer(
sizeof(WORD)*m_index_count,
0,
D3DFMT_INDEX16,
(fVRAM ? D3DPOOL_MANAGED : D3DPOOL_SYSTEMMEM),
&m_index,
NULL);

最初のsizeof(WORD)*m_index_count,って

*は乗算ですか?ポインタですか?

初心者すぎる質問ですいません。。。。。



661 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 20:48:44 ]
>>660

つ、釣られないぞ・・・・。

662 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:08:24 ]
どうみても乗算

663 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:08:27 ]
DirectX関係なさ過ぎる・・・
お前に必要なのはCの参考書だ。

664 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:18:22 ]
ポインタだよ。
次の方どうぞ

665 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 09:18:14 ]
HRESULT CDXPrimitive::SetVertex(LPVOID lpvertex, int point_num)
{
HRESULT hr;
LPVOID p;

//有効なデータ個数
m_point_active = point_num;

//バッファをロック
hr = m_vertex->Lock( 0, 0, (void**)&p, 0 );
if (FAILED(hr))
return hr;

//copy
CopyMemory( p, lpvertex, (DWORD)(point_num * m_pointsize));

//バッファのロックを解除
hr = m_vertex->Unlock();
return hr;
}

return hr と return S_OKの違いってなんですか? 調べても分からなかったので教えてください

666 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 09:28:51 ]
returnの意味がわかってないのか?

667 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 09:34:15 ]
return は この場合はHRESULTに返す値の事ですか?

hrとS_OKの違いが分からないです;;。

MSDNライブラリーでHRESULTで検索しても解りませんでした

668 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 09:36:40 ]
>>665
まず入門書でもいいから
Cの本を一冊以上読破して
C++の本を一冊以上読破して
Win32の本を一冊以上読破してから来い

669 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 10:05:26 ]
>>667
S_OK 定数
hr 変数

670 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 10:50:59 ]
ちょっと質問です。
トランスフォーム済み頂点を使って、たとえば 100×100 の画像を表示したいと思います。
テクスチャの1辺は 2^n にしたいので、128×128のテクスチャを作るのですが…。
頂点座標をどうしようか迷っています。

1.xy=(0,0)-(100,100), uv=(100/128, 100/128)
2.テクスチャのあまりの部分を透明にして、頂点座標は xy=(0,0)-(128,128), uv=(0,0)-(1,1)

どちらが一般的でしょう?
1の方が管理が楽だし、あまりの部分を別の画像を置くのに使えるし、いいことづくめなのですが、
ピクセル単位で画像をそのまま表示したいので、誤差がでないかどうかが心配です。
(試してみたら問題はなかったのですが、うちの環境でたまたま問題がなかっただけかもしれないので)

よろしくお願いします。



671 名前:デフォルトの名無しさん [2008/10/12(日) 20:18:37 ]
教えて下さい。

64x64のテクスチャをプリミティブで表示しています。

用意したテクスチャは、1色の青で塗りつぶして縁を白で
囲んだだけのものなのですが、表示した時に縁がギザギザ
した感じになってしまいます。

綺麗に表示する方法はないでしょうか?

よろしくおねがいします。

672 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 22:06:17 ]
>>589

今回の特集(いつもなんだがw)見てるとまず視聴率の数値ありきなんだよな
その作品の時代的位置付けやアニメ史上の位置付けを説明するってことを
NHKなんかが特集する時はやるもんだけどそういうことを数字だけで済ませて怠ってる
構成の仕方でもっといろんな作品を見せて興味を惹かせることは可能なはずなんだよ。
それをせずに、最近のものは数字が取れない、て最初から可能性を閉じてしまっている。


673 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 22:41:29 ]
テレビはダメ
NHKに期待

そのNHKはちゃんと期待にこたえてアレを年末にやるっていうんだからよくわかってる
2ch殺すつもりだよ

674 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 22:48:26 ]
いいから消えろカスども

675 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 00:43:40 ]
//画像をスプライト表示

LPDIRECT3DTEXTURE9 g_pTexture = NULL;
LPD3DXSPRITE g_pSprite = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
D3DXVECTOR3 center,position;

void DrawStartMenu(void)

{
g_pSprite->Begin( NULL );
RECT rc;

rc.left = 0;
rc.top = 0;
rc.right = 256;
rc.bottom = 256;
D3DXCreateTextureFromFile(g_pd3dDevice,"data\\sky2.jpg",&g_pTexture );
D3DXCreateSprite(g_pd3dDevice,&g_pSprite);
g_pSprite->Draw(g_pTexture,&rc,¢er,&position,0xFFFFFFFF);
g_pSprite->End();
}
g_pTexture->Release();
g_pSprite->Release();

ビルドは通るのですが、実行するとアクセス違反が起きます
どこに問題があるのでしょうか?

676 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 01:56:18 ]
>>675
とりあえず、DrawStartMenu関数を後半から1行ずつコメントアウトで削っていって正常に動く部分を調べろ

677 名前:676 mailto:sage [2008/10/13(月) 02:10:27 ]
・・・とは言ったがこれじゃ正常に動く部分なさそうだ。

最初のg_pSprite->Begin( NULL );を消してD3DXCreateSprite(g_pd3dDevice,&g_pSprite)の
後ろに移動させてくれ。

678 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:20:59 ]
移動したけどアクセス違反が起きる

679 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:24:47 ]
ブレイクポイントつかってどの行ででるのか調べるぐらいしろよカス

680 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:33:01 ]
そもそも論としてデバイスはちゃんと作ったのかよ
Beginを上にもってくるぐらいだから手順が全く理解できてなさそう



681 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:37:28 ]
独学の初心者だから勘弁してくれ

682 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:37:59 ]
ttp://princess-tiara.biz/directx/?chapter=3
ここを参照して完成されたサンプルに追加する形で作ってる

683 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:41:42 ]
お前の追加したコードが糞なんだから
元のコードにリンク張られても困る

684 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:44:15 ]
とりあえず>>676>>679をやってから出直してこい。
つーかデバッガの使い方を覚えろ。

685 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:46:01 ]
分かった頑張ってみるよ
こんな夜中に有難う

686 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 03:51:52 ]
画像が見つからなくてD3DXCreateTextureFromFileが失敗してるに一票

687 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 10:35:46 ]
>>675 のコードを見て、まさか g_pSprite = NULL のまま使ってるんじゃ・・・とか思うのは俺だけ?

688 名前:687 mailto:sage [2008/10/14(火) 10:38:53 ]
って、指摘済みだったか

689 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:16:43 ]
板ポリゴンにテクスチャ貼り付けて縦スクロールの背景を作ったんですけど
ポリゴンの境界がうっすらと見えてしまうのはどうにかならないでしょうか?

690 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:25:22 ]
(´∩ω∩`)



691 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:44:05 ]
見ちゃダメ

692 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:49:47 ]
>>689
1ピクセルずらして重ね合わせればいいんじゃね

693 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:29:24 ]
>>692
それも試してみたんですが駄目なんですよね…
PS初期だとこういうゲーム結構ありましたよねー。
原因がさっぱりわからない…

694 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:33:58 ]
>>689
つくりが悪いだけじゃ?

695 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:03:52 ]
>>693
ダメというのがどうダメなのかによるが
どうせ補間されてるせいで0.5ピクセルずれてるんだろ。
指定範囲を1ピクセル分元絵の内側にずらして
その分重ね合わせるようにすれば普通はいけるはず。

696 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:08:54 ]
とりあえず複雑な絵じゃなくて境界がわかりやすい
縞模様とかでテストしてみればいい

697 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:12:40 ]
背景を単色にしよお

698 名前:デフォルトの名無しさん [2008/10/15(水) 22:21:23 ]
環境: C++ VisualStudio2008 DirectX9

立方体のXファイルを合計2000個弱ばかり表示する単純な(自分ではそう思ってる)プログラムを書いてみたのですが
これの動作が檄重で、タスクマネージャで調べてみたらメモリを700MB程喰らってます。
(ちなみに自分のマシンはメモリ3GB超積んでるのでスワップアウトは発生してないと思います)

テクスチャをいちいち読み込んでるのが原因かと推測してるのですが、
これは普通どう処理するもんなんでしょう?
独自のファイルハンドラみたいなのを書いて、プログラム本体の下に敷いて、
同一ファイル名のテクスチャを要求されたらメモリキャッシュのアドレスを渡すとか
そんな感じで処理するのが普通なんでしょうか。

699 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:26:57 ]
うん、そう

700 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:26:58 ]
スプライトでテクスチャを描くときに
ポジションの奥行きを0以外にすると表示されないのね。
どうすればいいの?



701 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:28:30 ]
>>700
スプライトでテクスチャを描くのをやめるか、
ポジションの奥行きを0にすればいいと思うよ。

702 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:29:10 ]
>>700
スプライトなんて面倒だから使うなってのが2chで聞くと大抵返ってくるレス
ポリ使って描画したほうが死ぬほど応用利くしなにより楽

どーしてもスプライトでやんなきゃ俺の気がすまねーっていうなら
詳しい人探すっきゃないw

703 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:31:09 ]
同じファイルを2000個も別々に読み込んだらどうなるかぐらい
カバでもわかるだろ

704 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:33:04 ]
>>703
うまくキャッシュに決まれば気にしない程度になることはあるのかもしれん

705 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:33:48 ]
Zが0〜1じゃないとか

706 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:13:59 ]
>>695
こんな感じにズレてます。
ttp://hishou.ddo.jp/~bbs/up/img/up134.jpg

線形補間はこのように使用しています。
theDevice->SetSamplerState(0 ,D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
theDevice->SetSamplerState(0 ,D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);

指定範囲を1ピクセル元絵の内側にずらすってことは
ポリゴンからテクスチャが1ピクセルはみ出るように設定するということですか?
一応そう仮定して動かしてみましたが駄目でした…

707 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:20:15 ]
>>706
アドレッシングモードがクランプじゃなくね?

ヘルプに「三角形ラスタ化ルール」ってのがあって読むとわかる

708 名前:689 mailto:sage [2008/10/15(水) 23:43:33 ]
あ、すいません。
ポリゴンの境界が見えるって意味なんですが。

下から上に1枚のポリゴンを継続的に流してスクロールさせてるんですが
その1枚1枚のポリゴンの境界が出てしまうってことを言いたかったんです。
日本語が下手ですいません…

709 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:52:16 ]
>>706
サンプリングの設定とUVと表示座標の問題だと思うが・・・。

710 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:06:25 ]
>>706
どうみてもそれ元画像の下または上のラインが表示されてるでしょ
ポリゴンの境界が見えるとかいう問題ではない。

元画像のつなぎ目の部分を別のテクスチャで使用してないんなら
1ピクセル幅だけでいいからとなりの画像の端を書いておけば
そういう白い線はとりあえず消えるよ。
みっちり書き込んでるなら範囲を縮めるしかないが、
試したんならそっちの画像もうpしてみ。
白い線が出てないならあとはポリゴンの座標を調整すればいいだけ。



711 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:10:32 ]
ちょっと日本語がおかしいな。
・元画像のつなぎ目の部分を別のテクスチャで使用してないんなら
・元画像の指定範囲の上下を別のテクスチャ用に使用してないんなら


712 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:12:56 ]
ダメだ。眠くてミスしまくりだ。
>>710の修正部分

×元画像のつなぎ目の部分を別のテクスチャで使用してないんなら

○元画像の指定範囲の上下を別のテクスチャ用に使用してないんなら


713 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 03:48:31 ]
昨日に別スレで質問させていただいたのですが、このスレのほうが適しているようなので質問させていただきます。
現在VisualC++2008ExpressとDirectX SDK March 2008
をインストールしているのですが、DirectX App Wizard でサンプルプログラムを実行するにはどうすればいいでしょうか?
今もっている本ではVisualC++6.0で開発しているので、ファイル→新規作成→プロジェクト
とやってもコンソールアプリケーションやWinプロジェクトなどしか出ない状態です。
ツール→オプションでDirectXのライブラリなどが追加されているのは確認しました。
初歩的な質問ですがよろしくお願いします

714 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 07:42:21 ]
>>713
Winプロジェクトでいいよ


715 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 07:44:41 ]
最近のSDKには無いんじゃ?
普通に好きなように書けばいい

716 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 07:52:34 ]
Sample BrowserにEmptyProjectってのがあるからそれ使え

717 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 12:45:56 ]
レスありがとうございます。
もう最近のにはティーポットなどは含まれていないようです。
本ではフレームワークを基本に進めているので別の本を探してみます。図書館の本でよかった・・・
親切にありがとうございました。

718 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 15:26:23 ]
C#からは使えなくなったの?

719 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 16:18:29 ]
C#にはManagedDirectXがある

720 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 16:31:00 ]
スレ違うけど、C#はMDX1.1とXNAだな、本家のは。



721 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 17:34:21 ]
しかしここは質問しっぱなしで結果報告もお礼も言わない奴が多いな

722 名前:689 mailto:sage [2008/10/16(木) 17:38:31 ]
>>710
画像の下の1ピクセルだけが何故か若干薄くなっていたみたいです。
画像の方に原因があるとは考えてませんでした…
助かりましたー、ありがとうございました。






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

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

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