[表示 : 全て 最新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/

604 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:23:42 ]
>>603
ありがとうございます。

D3DERR_INVALIDCALLが発生する原因がわかりました。
リソースをD3DPOOL_DEFAULTで確保するとダメみたいです。

OnSize() でウィンドウサイズを可変した時に3D画像のアスペクト比が
変わってしまうのを防ぎたかったのですが、Resetを呼び出してもダメ
みたいです。

アスペクト比を固定するにはどのようにすれば良いでしょうか?

よろしくお願いします。

605 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:32:34 ]
D3DPOOL_DEFAULTで作成したリソースをいったん削除してからデバイスをリセットして、その後でリソースを作り直す。

606 名前:デフォルトの名無しさん [2008/10/04(土) 23:39:07 ]
>>605
ありがとうございます。

早速ためしてみます。

607 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:41:30 ]
>>604
何がしたいのかわからないんだが
ウインドウサイズが変わった時点で
変更後のサイズからアス比を再計算して
射影行列を作る時に指定しているアス比を変更するだけじゃだめなのか?
D3DXMatrixPerspectiveFovLHとかの話



ついでに流れ的に関係あるようでないような質問
テクスチャとかメッシュとかはパフォーマンス的には置いといて
デバイスのロストを気にしなくても良い様にできるけど
ID3DXEffectだけは対応しなくちゃいけない感じなんだが
これって何かの設定で対応しなくて良いようにできるものなの?

608 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:50:09 ]
>>607バックバッファの大きさは変わらないんだからぼんやりしちゃうだろ

609 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:23:15 ]
デフォルトのバックバッファを使わないで、
後から確保した物を使えばリセットする必要性は皆無

610 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:48:32 ]
>>607
ID3DXEffectの仕様として管理下はサポートされていないので
それは無理だろ。
ただ、ロスト対応が必要な理由として、シェーダ引数のテクスチャと
ステートブロックがあるからだろうと考えられるので
エフェクトに渡すテクスチャは管理下のみ、
pass内でステートの変更はしない、ステートブロックは使わない、などの
対策をすれば、大丈夫になるかもね。

611 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:51:57 ]
マルチディスプレイで
WindowモードのWindowを他方のWindowへ移動すると
presentが遅くなるのはどうしようも無いですか?

612 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:03:48 ]
VOID DrawText(ID3DXFont* pFont, char* text, DWORD x, DWORD y, D3DCOLOR Color)
{
RECT Rect;

SetRect(&Rect, x, y, CW_USEDEFAULT, CW_USEDEFAULT);
pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color);

}


pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color);

この部分で
error C2660: 'ID3DXFont::DrawTextA' : 関数に 5 個の引数を指定できません。

と言うエラーが出てしまいます
自力で調べた所DirectX SDKの仕様が変わったためにコンパイルできないらしいと言うところまではわかったんですが
どのように書き直せば良いのかわかりません
どのように直せば良いのでしょうか

ちなみにSDKはaugust 2007です

よろしくお願いします



613 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:14:53 ]
第一引数にD3DXSPRITEを渡さないとダメ
最新のSDKのマニュアルとサンプルを見るべし

614 名前:612 mailto:sage [2008/10/08(水) 14:40:09 ]
ありがとうございました
やってみます

615 名前:デフォルトの名無しさん [2008/10/08(水) 15:35:55 ]
これからDirectXをまなぼうと思っています
ゲームをつくりながら解説していくようなサイトを探しています
オススメがありましたら教えてください
C++とWINAPIの基本は理解しています

616 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:36:41 ]
age失礼しました

617 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 16:12:12 ]
DirectInputで作成したマウスデバイスで、強調レベルを非排他に設定したときだけAquireメソッドが成功しません。
どういうときに失敗するのでしょうか。


618 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 18:39:17 ]
>>617
Aquireは排他制御のためのメソッドだから、非排他設定なら必要ないだろう。

619 名前:617 mailto:sage [2008/10/08(水) 21:22:12 ]
どんなサイトの解説を見ても、必ずAcquireメソッドをよんでるんですが・・・
少なくともサイトの管理人の環境では、実行できてるってことですよね?

620 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:40:22 ]
>>619
Acquireを呼んでいるのと、Acquireが成功するかは別問題。

MSのサンプルだってAcquireは呼んでいる。
でも、それが成功したかなんて気にしていない。

621 名前:617 mailto:sage [2008/10/08(水) 21:54:33 ]
日本語版のMSDNでようやく該当する記述を見つけました。
Acquireの戻り値として、
>DIERR_OTHERAPPHASPRIO 他のアプリケーションの優先レベルの方が高いので、この呼び出しを実行できない。
>この値は、標準の COM 戻り値である E_ACCESSDENIED に等しい。このエラーが返されるのは、
>デバイスに対するアプリケーションのアクセス権がフォアグラウンド アクセス権であるにもかかわらず、
>バックグラウンドであるときにデバイスを取得しようとした場合である。
とありました。WM_CREATEの処理内で呼び出していたために失敗していたようです。
大変お騒がせしました。まさか日本語ページの方が詳しいなんて・・・

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
うまくキャッシュに決まれば気にしない程度になることはあるのかもしれん






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

前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