■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

【C++】 DirectX初心者質問スレ Part9 【C】
501 名前:デフォルトの名無しさん :2006/06/18(日) 21:35:48
>>500
テクスチャの透明度と頂点に設定したαを使うなら
マルチテクスチャ(?)を使って、>>500が言ってる奴と頂点のどの値からとってくるのか指定しないと駄目じゃなかったっけ?

例えばマルチテクスチャ2のときって

1枚目の色をどっからとってくるか?
2枚目の色をどっからとってくるか?
1枚目と2枚目の計算をどうしたいのか?

って必要じゃなかったっけ?

この場合だと、
1枚目の色:テクスチャの色
2枚目の色:マテリアルの色
1枚目と2枚目の計算:テクスチャのαで計算した後の色をさらにマテリアルのαで計算する。

みたいな感じじゃなかったっけ?

超うろ覚え。間違ってたら腹切って責任とるわw

502 名前:デフォルトの名無しさん :2006/06/18(日) 21:36:43
あ、マテリアルじゃないわ、頂点だっけ?

503 名前:デフォルトの名無しさん :2006/06/18(日) 22:12:11
間違え

X:1枚目と2枚目の計算:テクスチャのαで計算した後の色をさらにマテリアルのαで計算する。
○:1枚目と2枚目の計算:テクスチャのαと頂点のαで計算する。

504 名前:デフォルトの名無しさん :2006/06/18(日) 22:36:21
>>501
そんなもの、常に設定するのが当然だけど。
○○のときは指定するとかいうものではなく、常に明確に指定するもの。

デフォ設定を利用するなんて、描画オブジェクトが1つしかないようなデモくらい。

505 名前:493 :2006/06/19(月) 00:18:04
色々とありがとうございます。
お教えいただいた D3DRS_TEXTUREFACTOR を用いて、透明度の設定ができました。

SetRenderState(D3DRS_TEXTUREFACTOR, 0x80******);
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_BLENDFACTORALPHA);
SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);

として、DIFFUSE 色を 0 にすることで、透明度 0x80 を実現できました。
ロックが遅いのは、テクスチャをロックし、ビットデータを直接書き込むという処理を昔やってみたところ、
目視で確認できるほど遅かったため、ロック=遅いという風に思い込んでしまっていました。

ロックして書き込む方法、DrawPrimitiveUP を使う方法、色々試してみて最適なのを探してみます。
ありがとうございました。


506 名前:デフォルトの名無しさん :2006/06/19(月) 00:36:36
テクスチャをロックせずに頂点カラーをロックすればいいのでは・・・。

507 名前:493 :2006/06/19(月) 00:39:22
>>506
テクスチャのロックは、今回の件とは別件です。
まぎらわしくて申し訳ないです。

508 名前:デフォルトの名無しさん :2006/06/19(月) 10:08:14
それはロックが遅いんじゃなくって書き込み自体が遅かったってオチかね。

いわゆるロックの遅さって、処理そのものの重さの問題じゃなくって、
描画に使用される段になってロックがかかっていると、そこでロックが開放されるまで
処理がストールしちまうことにあるわけであって、回避したければダブルないしは
トリプルバッファリングすればいいってことになるんだろうけど、そういう認識であってる?
ドライバ側の実装次第なんでなんともいえない?

ビデオ側への散発的なメモリ転送がやたらコスト食う遅いことも考えられるか。

509 名前:デフォルトの名無しさん :2006/06/19(月) 18:02:54
DirectXで外積とか内積使う場面ってどういうときなんですか?
それによって得られる利点(効果)は何なのですか?

510 名前:デフォルトの名無しさん :2006/06/19(月) 18:17:18
ポリゴンと線分の交点求めたりとかできるよ。

内積も外積も水や空気みたいに大事なものなんで、利点は何と聞かれると困るけど。
ぶっちゃけ無いと死ぬ。
世界が成り立たない、

511 名前:デフォルトの名無しさん :2006/06/19(月) 18:44:18
3Dの世界には必須なものなのですか・・・
数学的知識盛り沢山ですね^^;

>>510
どうもありがとうございました!

512 名前:デフォルトの名無しさん :2006/06/19(月) 20:12:57
>>511
3Dの世界?2Dで必要ないとか思ってるの?

とりあえず、平面上で自分の進行方向からみて
敵が右にいるか左にいるか?って外積使って出してみ?

それができたら、平面上に玉と直線の当り判定用意して、
玉が直線に当たって跳ね返る方向を内積使って出してみ?

513 名前:デフォルトの名無しさん :2006/06/19(月) 20:56:56
>>512
おぁ・・・それが出来れば確実にステップアップとなりそうです。使いどころが前よりかは
見えてきました。重ねて御礼申し上げます。

514 名前:デフォルトの名無しさん :2006/06/19(月) 22:59:44
MFCのピクチャーコントロールに描画してるんですが,
ピクチャーコントロールのサイズが変わってもビューポートの値変わってないようです.

ハンドルから?再取得するような関数ってありますか?

515 名前:デフォルトの名無しさん :2006/06/19(月) 23:28:21
GetWindowRect と AdjustWindowRect および AdjustWindowRectEx でググりなされ。

516 名前:514 :2006/06/20(火) 03:38:11
>>515
遅レスすみません

調べてみます.
ありがとうございました

517 名前:デフォルトの名無しさん :2006/06/20(火) 21:09:01
8分木で表現されてるモデルを
効率的に描画するアルゴリズムで有名なものある?


518 名前:デフォルトの名無しさん :2006/06/20(火) 22:08:57
>>517
意味わからん。
効率的ってどう効率的なのがいいの?
つーか、効率も糞もやっぱ、始めはクリッピングじゃねぇの?

519 名前:デフォルトの名無しさん :2006/06/20(火) 22:18:51
データ構造がオクトツリーになってるなら
幹から順にビューフラスタムでカリングしていけばいいだけの気がする。

いきなりOBBで判定する前にスフィアで絞り込めばちょっと早くなるかの。


520 名前:デフォルトの名無しさん :2006/06/20(火) 23:48:41
>>519
ツリーになってるといっても幹がクリッピングされたとしても
枝の方がクリッピングされるかどうかはわからないから
結局、すべてのオブジェクトをカメラ座標までもってこないとわからないんじゃね?

効率的もなにもないような・・・

521 名前:デフォルトの名無しさん :2006/06/20(火) 23:54:35
普通、幹は枝を包括するように作らんか?

522 名前:デフォルトの名無しさん :2006/06/21(水) 00:18:22
>>521
すまん。
実は8分木で表現される物体ってのがよくわからん状態でレスしたw
つまりただの8分木の描画について聞きたかっただけなんだな・・・orz
物体っちゅーからなんか別のモンだと思った。

523 名前:デフォルトの名無しさん :2006/06/21(水) 00:48:41
>>510
>>512
ついでに教えてくれ
hsin や hcos って何に使う3D、2Dだと何に使う?

524 名前:デフォルトの名無しさん :2006/06/21(水) 01:24:48
>>523
アークサインとかアークタンジェントは使ったことあるけど
双曲線サインなんて使ったことないな。(俺は)
まあ、サインとかコサインとかタンジェントとか内積とか外積とかよりは
ポピュラーには出てこないんじゃね?

とりあえず、数学は高校数学+αぐらい押さえときゃいいんじゃね?
物理も高校物理+αぐらいで十分っぽいし。
あとは気合でなんとかなる。

意外とよく使うのが直線の方程式だ。(y=ax + bの方じゃなくてなんか凝ってる方w)

525 名前:デフォルトの名無しさん :2006/06/21(水) 02:53:32
俺はsin/cos&atanはテーブルにして使ってる程度だなぁ。
次世代機になると流石にテーブルのメモリアクセスより
関数呼び出した方が遥かに早そうだがなー。

まぁライブラリのシステム部分とかシェーダー周りを触らない限り
三角関数も基本的な内容で事足りるんだよな。
普通にゲームを作る上ではソレらしく見えればいいからやりようはいくらでもある。

>>524
3Dやるなら直線と平面の方程式はおさえておかないと厳しいよなw

526 名前:デフォルトの名無しさん :2006/06/21(水) 04:18:41
>俺はsin/cos&atanはテーブルにして使ってる程度だなぁ。

整数系か固定少数系で弾幕シューティングでも作ってるなら、まあ使うのかも知れないけど、
現行のコンシューマー機でも、自前でテーブル持つメリットってほとんど無くね?
ライブラリ側の実装自体、テーブル+補間程度だったりするしなあ。

527 名前:デフォルトの名無しさん :2006/06/21(水) 06:21:30
>>518-522
サンクス
とりあえず>>519について調べてみる。

効率的ってのは見えない面を描画しないアルゴリズムとかです。
8分木でやると視点が変わっても絶対に見えない面だとがが出てくるんで。


528 名前:デフォルトの名無しさん :2006/06/21(水) 07:34:56
そもそも、俺はsin/cos自体あまり使わないなぁ。
ほとんどベクトルだけで用が足りる。

529 名前:デフォルトの名無しさん :2006/06/21(水) 08:52:03
内積から回転角求めるときacosとか使わない?

530 名前:デフォルトの名無しさん :2006/06/21(水) 08:55:28
いわゆるラジアン角自体への用って、思うほどないんだよね。
回転量とかも大抵Quaternionで保持して終了だし。
明滅とかのためのちょっとしたカーブの取り出しに sin や cos 使うことは多いんだけど、
俺も大して使わないかも。


>8分木でやると視点が変わっても絶対に見えない面だとがが出てくるんで。

これなんかおかしくね??
8分木の構造自体が間違ってるか、使い方を間違えてない限り、そういうことは起きないと思うんだけど。


531 名前:デフォルトの名無しさん :2006/06/21(水) 09:08:52
>>529
そもそも角度という単位を、ユーザへの情報表示以外であまり使ってない。

532 名前:デフォルトの名無しさん :2006/06/21(水) 11:14:43
8分木でも確かに見えない面とか出てくるけど、
それって屋内マップの場合じゃないか?

屋内マップなら8分木じゃなくBSPツリーの方が一般的のような気も。
4/8分木構造は基本的に屋外マップのような広大なフィールド向けの構造だと思うけど。

>>526
コンシューマーの中でも特にダメな黒箱はテーブルの方がいいと思われ。
とはいってもメモリ結構使うし、メモリのアクセス速度考えるとVU0で書いた方がいいかもな。

533 名前:527 :2006/06/21(水) 13:32:52
見えない面ってのは、4分木で表すと
http://www.co0.net/upload/src/0006521309.png
こういうところは外側から見えないんで
これを判別するにはどうしたらいいかなぁと思いまして。


534 名前:デフォルトの名無しさん :2006/06/21(水) 19:27:38
速度云々は関係なしに跳ね返る方向なんかを8方向に固定したいとかいうときに
テーブルをつかった小細工が使えるときがある。>テーブル

535 名前:デフォルトの名無しさん :2006/06/21(水) 20:55:15
円柱と立方体の衝突判定がしたいのですが
いい方法はありませんか?

円柱は底面の中心の座標と軸方向ベクトルが与えられ、
立方体は原点から(w,w,w)の大きさです。


536 名前:デフォルトの名無しさん :2006/06/21(水) 22:40:08
>>534
そりゃ、まあ、そうだろうけどさあ。
だから何よって感じだぞ、流石に。

537 名前:デフォルトの名無しさん :2006/06/22(木) 22:12:53
ヘルプの複数レンダーターゲットの説明がよく判らないので教えて下さい。
要するにCreateRenderTarget又はCreateTextureでD3DUSAGE_RENDERTARGETを
指定して作るレンダーターゲットの上限数は、D3DCAPS9.NumSimultaneousRTsの
値の数という事なのでしょうか?
つまりこの値が1ならレンダーターゲットは1つしか作れないという事でしょうか?

538 名前:デフォルトの名無しさん :2006/06/22(木) 22:57:06
いや、SetRenderTargetで同時指定できるレンダーターゲットの数の上限。
レンダーターゲット対象自体はメモリが許す限りいくらでも作れるよ。

539 名前:デフォルトの名無しさん :2006/06/22(木) 23:32:01
>>538
あー、やっと理解できますた。
ありがとうございます。

540 名前:デフォルトの名無しさん :2006/06/23(金) 13:02:56
2D剛体シミュレーションのライブラリ、フリーでありませんか?


541 名前:デフォルトの名無しさん :2006/06/23(金) 23:01:13
質問させてください。現在DirectX9.0cSDKを入れているのですが、
ネット上のサンプルコードを実行したいためDirectX8.1も入れてみたいのですが、
共存ってできるのでしょうか?

542 名前:デフォルトの名無しさん :2006/06/23(金) 23:38:38
>>541
9を入れると8も動くようになる仕様でな・・・
っていっても9以降はちょっと大変なことになってるが・・・
8なら9いれてありゃ動くよ。

543 名前:デフォルトの名無しさん :2006/06/23(金) 23:52:59
>>542
そうなんですか。でも、サンプルコードにある
#include <D3DX8.h>
とか、D3DX8.hとかが見つからない、となるのですが・・・。8関連のヘッダは
DirectX9.0cには含まれて居ないんでしょうか?

544 名前:デフォルトの名無しさん :2006/06/24(土) 00:25:28
>>543
うっそまじで?
そうだっけ?
そんな感じだったっけ?
バージョン定数設定するだけだと思ったけど・・・
最新のヘッダで8が動くだけだったっけか?・・・

545 名前:デフォルトの名無しさん :2006/06/24(土) 01:28:54
D3D8.hは入ってるけどね。
DirectX7から10までのヘッダは含まれてるし、インターフェイスも取得できるみたい。

546 名前:デフォルトの名無しさん :2006/06/24(土) 01:37:26
>>545
おっしゃるとおりD3D8.hは入ってました。しかし、D3D8X.hがないというのは一体・・・?
D3D9X.hの方を使え、ということでしょうか?

547 名前:デフォルトの名無しさん :2006/06/24(土) 01:40:10
>>546
インクルード自体はD3D9X.hを指定して、バージョン定数を定義してやればいいんじゃね?

548 名前:デフォルトの名無しさん :2006/06/24(土) 02:55:36
>>547
#include <D3D9X.h>
するまえに
#define DIRECT3D_VERSION 0x0800
としろ、という事でしょうか?

549 名前:デフォルトの名無しさん :2006/06/24(土) 08:38:37
>>548
そんな感じでよかったと思うんだけど、駄目だった?

550 名前:デフォルトの名無しさん :2006/06/24(土) 13:24:55
手元にソ−スが無い状態で申し訳ありませんが質問させてください。

D3DXMatrixPerspectiveFovRH って描画空間を x=[-1,1] y=[-1,1] z=[0,1]に変換するってことでいいんですよね?
実際やってみたところ値がこの範囲に収まらなくて…

551 名前:デフォルトの名無しさん :2006/06/24(土) 13:54:48
>>550
そんなこといわれたって・・・

552 名前:デフォルトの名無しさん :2006/06/24(土) 14:33:33
視野に収まってない座標を変換してるだけなんじゃないか?
エスパーでもないとパラメータなしじゃ答えられん。

553 名前:デフォルトの名無しさん :2006/06/24(土) 14:36:45
>>550
それを答えるかわりに、簡単な計算を教えてください。
10+x=y
xは不明です。yの答えを一つの整数でお願いします。

554 名前:550 :2006/06/24(土) 14:58:26
質問の仕方が悪くて申し訳ありません。
改めて読んだらほんとに意味不明な質問でした。

D3DXMatrixPerspectiveFovRHで作られる射影変換行列による座標変換によって描画される範囲(視錘台)は先ほどの直方体に変換されるのでしょうか?

やはり具体的なパラメータなしではわからないですね。大変失礼いたしました。スルーでお願いします。

555 名前:デフォルトの名無しさん :2006/06/24(土) 21:12:28
すみません、DirectXSDKのDXtexを実行したいのですがd3dref.dllを入れて下さいといったような
メッセージが出てきて実行できません 一度、DLLサイトで落としたd3drefをx86のフォルダに入れたのですが
結果は同じでした。格納場所が違うのでしょうか

556 名前:デフォルトの名無しさん :2006/06/24(土) 22:14:09
C:\Windows\System
とかに入れればいいとは思うけど、その前にDirectXSDKをインスコしないで
SDK内のExeを実行しようとしているのか聞いてみたい。
素直にSDK入れた方が早くね?

557 名前:555 :2006/06/25(日) 04:27:18
 SDKをREMOVE?結局、再インストールしたら普通に実行されました・・・
再インストールは3回くらいやったのですが・・・・なんだったんだろう

558 名前:デフォルトの名無しさん :2006/06/25(日) 05:28:16
なんだったんだろう?といわれても、なんだったんでしょうねぇ・・・

559 名前:デフォルトの名無しさん :2006/06/25(日) 09:56:53
まあ良かったじゃないか。

560 名前:デフォルトの名無しさん :2006/06/25(日) 09:57:55
CG板の奴っぽいな
向こうでも思ったが礼くらい書けw

561 名前:デフォルトの名無しさん :2006/06/25(日) 13:09:54
ジョイパッド(PS用コントローラ)からの入力処理をしたいのですが、
DirectInputとjoyGetPosExではどちらが使い勝手いいのでしょうか?
また、これらは、OpenGLと組み合わすことできますか?

562 名前:デフォルトの名無しさん :2006/06/25(日) 13:44:49
聞く前に試せ。

563 名前:デフォルトの名無しさん :2006/06/25(日) 14:13:32
joyGetPosExってジョイスティック2つまでしか認識しないんじゃなかったけ。
DirectInputの方が多少面倒だが、潰しは利くだろ。
やっつけ仕事用にはjoyGetPosExで十分だが。

OpenGLとは完全に別レイヤなんでいくらでも同棲可能。
DirectSoundでもDirectPlayでも同棲可能。
好きなだけハーレムをこさえるがよい。

564 名前:555 :2006/06/25(日) 18:48:25
>>560 やっぱり見てる人は見てるんですね 返す言葉もありません
しかしながら、DXtexも無事起動できたし気になるところは全てクリアできました
改めてお礼を言わせて頂きます 本当にありがとうございました

565 名前:561 :2006/06/25(日) 23:49:52
>>563
返事遅くなりすいません。
レスありがとうございました。
ハーレムさせてみますw

566 名前:デフォルトの名無しさん :2006/06/26(月) 05:31:37
Operating System: Windows XP Professional (5.1, Build 2600)
Service Pack 2 (2600.xpsp_sp2_gdr.050301-1519)
DirectX Version: DirectX 9.0c (4.09.0000.0904)
Description: SoundMAX Digital Audio
Default Sound Capture: Yes
Default Voice Capture: Yes
Driver Name: smwdm.sys
Driver Version: 5.12.0001.3665 (English)
Driver Attributes: Final Retail
ゲームやウィンドウズ起動音などの音がでなくて困ってます。mp3やCD−Rなどの音はでます。
診断ツールではサウンドでエラー0x00000000 (エラー コード)がでます。ミュージックは正常なのですが・・・
ドライバの入れ替え、ミュート、BIOSなど調べてわかったことは全部したのですがなおりません。
どなたか力をかしてください。お願いします。

567 名前:デフォルトの名無しさん :2006/06/26(月) 06:34:13
ここはDirectXでプログラムを作る人間用のスレであって、
プログラムを使う側の質問スレじゃない。
君にとっては二度手間かもしれないが、Windows板でもう一度聞きなおしてきなさい。
http://pc8.2ch.net/win/
『WindowsXP質問スレ』てのがあるはずだから、そこがいいだろう。

568 名前:デフォルトの名無しさん :2006/06/26(月) 12:40:25
親切にありがとうございます。
そこにいって聞いてみたいと思います。
ありがとうございました。

569 名前:デフォルトの名無しさん :2006/06/26(月) 18:50:12
MFC+DirectXでプログラムしてるのですが.
ピクチャーコントロールのサイズを変更しても,DirectXの描画のアスペクトなり座標系なりを適応したいときって

pic = (CStatic*)GetDlgItem(IDC_MAINPIC);
pic->MoveWindow(x, y, wide, height);

pD3DDevice->GetViewport(&ViewPort);
ViewPort.Height = height;
ViewPort.Width = wide;
pD3DDevice->SetViewport( &ViewPort );

こうすれば良いと思ってたんだけど,うまくいかない
どうやれば良いのでしょうか?

570 名前:デフォルトの名無しさん :2006/06/27(火) 00:30:10
かーーめーーーらーーーー

571 名前:569 :2006/06/27(火) 19:53:32
>>570
遅レスすみません.

カメラって座標と注視点,画角以外要素があるのでしょうか?
アスペクト比などは後でビューポートから算出しています.

ちなみに,ピクチャーコントロールと一致しない領域で描画されている状態です...

572 名前:デフォルトの名無しさん :2006/06/28(水) 21:28:32
キー入力で【 ^ 】を使うにはDIK_ のなにを使えばいいんでしょうか?

573 名前:デフォルトの名無しさん :2006/07/01(土) 04:19:09
DirectX9の最新版のSDKは
Windows2000+VC6
ではどうやっても使えないのですか?

あと
Windows2000+VC2005
ではどうでしょうか?

574 名前:デフォルトの名無しさん :2006/07/01(土) 04:53:51
初心者丸出しですみません。

全画面でBMP画像を数枚表示してパラパラアニメにしたいのですが、
似たようなサンプルコードは無いでしょうか?

575 名前:デフォルトの名無しさん :2006/07/01(土) 06:24:47
>>573
使えないなんてことないでしょ。

>>574
今、どんな状況なの?
もう、ゲーム1本作れるレベル?
ヘルプのチュートリアルは終わらした?

576 名前:573 :2006/07/01(土) 11:27:21
>>575
やっぱだめみたいですね
最新版のSDKwin2000に入れようとしたら
not supportと蹴られました

はぁぁ、Vista出るの待つかなぁ

577 名前:デフォルトの名無しさん :2006/07/01(土) 11:39:04
最新版にこだわる必要は無いでしょ。
素直にSDK(Octorber 2004)を使うべし。

578 名前:574 :2006/07/01(土) 19:16:26
>>575 ゲーム屋さんではないのでアレですが、HTTPサーバとかMPEGエンコーダは書けます。

DirectXに精通しようとは思ってません。目的の機能の実装が達成できればよいと
思っています。すみません。

579 名前:デフォルトの名無しさん :2006/07/01(土) 19:57:05
パラパラアニメならDirectXなんて使う必要ないと思うけど。
BitBltで十分でしょ。

580 名前:デフォルトの名無しさん :2006/07/01(土) 20:12:26
Animation Control

581 名前:デフォルトの名無しさん :2006/07/01(土) 20:12:47
パラパラアニメならBitBltなんて使う必要ないと思うけど。
Flashで十分でしょ。

582 名前:デフォルトの名無しさん :2006/07/01(土) 20:15:45
パラパラアニメならFlashなんて使う必要ないと思うけど。
Gifで十分でしょ。

583 名前:デフォルトの名無しさん :2006/07/01(土) 20:17:41
GIFじゃ色数に問題あるかも

584 名前:デフォルトの名無しさん :2006/07/01(土) 20:17:49
パラパラアニメならGifなんて使う必要ないと思うけど。
ノートで十分でしょ。

585 名前:デフォルトの名無しさん :2006/07/01(土) 20:21:18
仕事なんて必要ない
ニートで十分

586 名前:デフォルトの名無しさん :2006/07/01(土) 21:58:06
BitBltで、1280x1024の画面内に320x240の画像を縦横4つづつ計16枚、
30fpsとは言わなくても、秒数コマ程度のパラパラアニメができますか?

これで低い負荷で実用に耐えるなら何も問題ありません。
BitBltよりかはDirectXのほうがいいかな、と思ったので…。

587 名前:デフォルトの名無しさん :2006/07/01(土) 22:07:41
余裕でできるはずだが
下手なコード書くと負荷激増パフォーマンス激落ちる

588 名前:デフォルトの名無しさん :2006/07/01(土) 22:17:05
だがGDI使うよりはDirectDrawでハードウェアBLT使うほうが圧倒的に速い気がする。


589 名前:デフォルトの名無しさん :2006/07/01(土) 22:17:57
DirectXのほうが早いのはまあ仕方ないとして、実際やってみたら?

590 名前:デフォルトの名無しさん :2006/07/01(土) 22:33:15
DirectDrawで速度的な優位が発生するのは、カラーマスクを使う場合やVRAM上の画像を使い回す場合、
クリッピングを切って転送の負荷を軽量化、もしくはオーバーレイを使用した場合だけ。
Win32APIの方でもビデオカードのアクセラレーションは普通に使われるし、
メインメモリー上の動的なデータを転送するだけならどちらでも差はない。
3Dの場合と違って2Dのベタデータは、ほとんどメインメモリからVRAMまでの転送速度に依存する。

591 名前:デフォルトの名無しさん :2006/07/01(土) 22:38:17
パラパラアニメなんだから全部VRAM上の載せちゃえばいいんでね

592 名前:デフォルトの名無しさん :2006/07/01(土) 23:04:51
CALL OF DUTYというゲームを起動すると、DirectXに回避不能エラーが発生したとのメッセージが出ました
dxdiagで診断しましたが、問題は見つかりませんでした
一体、何が原因なんでしょうか…?
ちなみに9.0cです

593 名前:デフォルトの名無しさん :2006/07/01(土) 23:19:42
板違い。

594 名前:デフォルトの名無しさん :2006/07/01(土) 23:29:07
f

595 名前:デフォルトの名無しさん :2006/07/01(土) 23:31:01
scsaaa
ol

596 名前:デフォルトの名無しさん :2006/07/01(土) 23:34:15
断末魔が

597 名前:デフォルトの名無しさん :2006/07/02(日) 05:56:45
>>579-581,587-590 レスサンクス

598 名前:デフォルトの名無しさん :2006/07/02(日) 06:53:18
>>578
あー、そういう意味じゃなくてどんなフレームワーク使ってるのかを知りたかった。

DirectXみたいなのを使って全画面書き換えを使ってるのとWin32APIのDCを使ってるのとではパラパラアニメのやり方が違う。
(いや、Win32APIでもエロゲとかはそうやってるなぁ・・・そういやw)

前者と後者の違いはそれ用の画面を用意してもうほんとアニメアニメした画面をこさえてしまうのか?
それともGIFアニメみたいなのを想像してるか?の違いなんだけど・・・。

まあ、認識レベルで聞きたいのが
ただ、絵を動かしたいからゲームスレに聞きにきたのか?
それともホントにゲームのシステム上でのパラパラアニメが作りたいのか?
って話。
ゲームってゲーム用の画面作って、ゲームにしてるのよ。
でも、ウィンドウズ上でアイコンっぽいのがちょろちょろ動くっていうのだと
用意する土台が違うっていうかなんていうか・・・。システムが違うっていうかなんていうか・・・。
いや、同じっちゃそうなんだけど、そこまでする必要ないっつーかなんつーか。
まあ、用は別物なんですよ。やり方も得られる結果も。

599 名前:デフォルトの名無しさん :2006/07/02(日) 07:50:28
class Tyousyukoriki
{
private:
DWORD dwNext,dwPeriod;
int ThisSprite, MaxSprite;

public:
void Start(DWORD period, int maxSprite) {
dwNext = dwPeriod = period;
ThisSprite = 0;
MaxSprite = maxSprite
}
void Draw(int x,int y) {
DrawSprite( Sprites[ThisSprite], x, y );
// DrawSprite( Sprite, x, y, sprite_x + SPRITE_X_*ThisSprite, 0 );
}
void Do() {
dwNext--;
if(dwNext <= 0 ) dwNext = dwPeriod;
ThisSprite++;
if( ThisSprite == MaxSprite ) ThisSprite = 0;
}
};


600 名前:デフォルトの名無しさん :2006/07/02(日) 10:51:30
>>574
一応詳しく説明しておくけど、CreateCompatibleBitmapに
ディスプレイデバイスコンテキストを渡して作ったビットマップは
VRAM上に確保される場合が多く(ドライバによる)、そのときの
BitBltの転送速度はDirectDrawのBltとほとんど変わらない。

ピクセル単位での描画や、カラーキーが必要なければDirectXを
使用する必要はない。

>>598
ここはゲームスレではないと思うがw

601 名前:デフォルトの名無しさん :2006/07/02(日) 19:28:12
>>600
いや、でも、DirectXのスレじゃん。
Win32APIのBitBltだとちょっと違うじゃん。

DirectXをどういうものとして認識してるかで扱い変わってくるじゃん。
DirectXってもうほんとゲームシステムを作るモン向きであって
ちょっとしたパラパラアニメ動かすもんには向いてないじゃん。

602 名前:デフォルトの名無しさん :2006/07/02(日) 21:08:35
じゃんじゃんうるせーよ。

603 名前:デフォルトの名無しさん :2006/07/02(日) 21:16:34
ワロータ

604 名前:初心者名無し :2006/07/02(日) 21:17:07
Failed creating the Direct3D device.
って出た場合、これはどう対処したらいいのですか?

605 名前:デフォルトの名無しさん :2006/07/02(日) 21:20:33
原因を探る

606 名前:初心者名無し :2006/07/02(日) 21:22:14
ぇっと、どうやって??

607 名前:デフォルトの名無しさん :2006/07/02(日) 21:22:22
>604
とりあえずHALにするとかソフトウェア頂点処理にするとか
D3DPRESENT_PARAMETERSの設定をデバイスに合ってるものにするとか
色々。

608 名前:初心者名無し :2006/07/02(日) 21:24:18
D3DPRESENT_PARAMETERSの設定はどこでするんですか?
…すみません;本当に初心者なんで、、。

609 名前:デフォルトの名無しさん :2006/07/02(日) 21:25:16
あ?DirectX生で使ってるんじゃねーの?
なんかのライブラリ?

610 名前:初心者名無し :2006/07/02(日) 21:27:20
なんかのライブラリっていうか、パソコンゲームをインストールしたんですけど、
インストール後にそれをはじめようとしたら↑の表示がでるんです;

611 名前:デフォルトの名無しさん :2006/07/02(日) 21:28:23
どっかのライブラリっぽいな。
何のライブラリ使ってるか言ってもらわんと何もいえん。
言ってもらっても何か言える訳じゃないがね。

612 名前:デフォルトの名無しさん :2006/07/02(日) 21:28:54
サポセンに問い合わせろ。

613 名前:初心者名無し :2006/07/02(日) 21:30:03
ライブラリ、、、どこを答えたらいいのかがわからない;
あぁ、、こんなん話にならないですね;すみません、、

614 名前:デフォルトの名無しさん :2006/07/02(日) 21:31:41
>>613
それはここで聞くよりはゲームの作者とかに聞くほうがいいよ。
もしくはそのゲームのスレとか。

615 名前:デフォルトの名無しさん :2006/07/02(日) 21:31:59
平たく言ってしまうと、
そのゲームを作った人間にしか原因はわからない。

PCゲームならどっちみちサポセンに問い合わせるしかない。
ここで聞いたところで意味はまったくないっつーか邪魔。

616 名前:初心者名無し :2006/07/02(日) 21:35:29
……すみません。
というか、Direct3Dってのをどうしたらいいのかがわからないんです。
一応ここはそれをいくとこっぽいし。。

617 名前:デフォルトの名無しさん :2006/07/02(日) 21:58:34
ここはプログラムを作る人間が利用する板であって、使う奴は完璧に板違い。
自分でプログラムの勉強をして出直せ。

618 名前:デフォルトの名無しさん :2006/07/02(日) 22:32:48
DirectX9で質問です。
フルスクリーンの時ウィンドウキーを押すとプッチンてなるじゃないですか。
その後の復帰のさせ方がいまいちわからないのです。
レンダーターゲットテクスチャを作るとデバイスのリセットが失敗してしまうのです。
どなたかわかるかたいますか?

619 名前:デフォルトの名無しさん :2006/07/02(日) 22:34:45
レンダリングターゲットテクスチャはデバイスリセット前に解放汁。

つーかVRAM上に作成したデータはデバイスリセット前に全部解放汁。

620 名前:デフォルトの名無しさん :2006/07/02(日) 22:35:14
>>618
SDKのサンプル参考に汁

621 名前:デフォルトの名無しさん :2006/07/02(日) 22:49:26
DX10に期待汁

622 名前:デフォルトの名無しさん :2006/07/02(日) 22:52:27
>>619
解放したデータを解放前の状態に戻すにはどうすればいいでしょうか。
>>620
探してみます。

623 名前:デフォルトの名無しさん :2006/07/02(日) 22:55:40
>>622
自分でもう一回作る。

624 名前:デフォルトの名無しさん :2006/07/02(日) 23:04:47
>>623
たとえば3D空間を散歩して写真を撮るように風景をテクスチャに置いておく場合は
そのときのデータを全て記憶しておいて、また描画し直さなければならないのでしょうか。

625 名前:デフォルトの名無しさん :2006/07/02(日) 23:13:07
VRAMに入っているデータは、使用者の責任で全て元に復元する。
最初にやっている処理なんだから、大した問題ではない。

626 名前:デフォルトの名無しさん :2006/07/02(日) 23:15:08
一瞬止まってもいいならシステムに保存しておけば復帰はラクだがの

627 名前:デフォルトの名無しさん :2006/07/02(日) 23:18:07
>>626
詳しくお願いします

628 名前:デフォルトの名無しさん :2006/07/02(日) 23:36:27
レンダリングターゲットと同じサイズのテクスチャをシステムに作る。
StrechRectでシステムのテクスチャに転送する。

デバイスがロストした。
レンダリングターゲットテクスチャを作り直す。
システムのテクスチャをレンダリングターゲットにStrechRectする。

おしまい。

629 名前:デフォルトの名無しさん :2006/07/02(日) 23:58:43
>>628
ありがとうございます。
試してみます。

630 名前:デフォルトの名無しさん :2006/07/03(月) 13:10:19
DirectX3Dで巨大な画像(800×600とか)を表示するにはどうすればいいんですか?
256×256のテクスチャー何個かに分割して表示するしかない?

631 名前:デフォルトの名無しさん :2006/07/03(月) 14:26:22
何度見ただろう、この質問・・・

632 名前:デフォルトの名無しさん :2006/07/03(月) 16:49:01
漏れには「質問」には見えない

633 名前:デフォルトの名無しさん :2006/07/03(月) 19:28:41
>>630
よりデカイテクスチャを用意してUVで調節するんだ!

634 名前:デフォルトの名無しさん :2006/07/03(月) 23:52:04
質問です。XP、.NET 2005、DirectX 9.0c です。

DirectPlay において、プロシージャに届いたメッセージを全て独自のキューに保存しようとしています。
ですが、例えば DPN_MSGID_CREATE_PLAYER メッセージでは DPNMSG_CREATE_PLAY 構造体、など
メッセージの種類によって、データ長が異なります。

これらの構造体を見る限り、どれも先頭に DWORD で構造体のサイズが格納されているようですので、
受け取ったメッセージを pMessage として、

DWORD messageSize = *(DWORD *)pMessage;

と行っているのですが、どうも自信がもてません。
他に、自然なデータ長の受け取り方はありますでしょうか?
よろしくお願いします。

635 名前:デフォルトの名無しさん :2006/07/03(月) 23:58:39
>>634
なんで、構造体を使わないの?

636 名前:デフォルトの名無しさん :2006/07/04(火) 00:14:48
>>635
全てのメッセージデータを保存したいのですが、
どのメッセージに対しても、データサイズを取得して、そのサイズ分の領域を確保し、データをコピーし、キューに入れる、という共通の処理にも関わらず、

switch(messageType)
{
 case DPN_MSGID_CREATE_PLAYER:
  dataSize = ((DPNMSG_CREATE_PLAY *)pMessage)->dwSize;
  // キューに追加
  break;

 case DPN_MSGID_SEND_COMPLETE:
  ……
}

と、全てのメッセージタイプに対して記述するのは冗長だと思ったからです。

637 名前:デフォルトの名無しさん :2006/07/04(火) 00:24:36
>>636
unionでキューに持たせればいいじゃん。

638 名前:デフォルトの名無しさん :2006/07/04(火) 00:32:25
>>637
すみません、union でキューに持たせる、とは? 何と何を共有するのでしょうか。
データサイズが分からないと、キュー以前に、データを保存しておく領域の確保すらできません・・・。


639 名前:デフォルトの名無しさん :2006/07/04(火) 01:09:34
>>638
使うメッセージの種類全部をunionにすれば
最長のメッセージ構造体の分だけメモリを確保できる。
もちろんメモリ効率はそれぞれに対してやるよりは効率悪いけど
たいした問題じゃない

640 名前:デフォルトの名無しさん :2006/07/04(火) 01:10:19
そもそも、いまさらDirectPlayっていうのが。
それ、捨てられた機能だから使わない方がいいよ。

641 名前:デフォルトの名無しさん :2006/07/04(火) 01:15:47
WinSock叩く方がはるかに楽だしなぁ・・・

642 名前:デフォルトの名無しさん :2006/07/04(火) 01:17:34
それはない

643 名前:デフォルトの名無しさん :2006/07/04(火) 01:22:23
そうか?
俺は最初DirectPlayでTCP/IPの通信やろうとしたけど
挫折してWinSockでやった口なんだが・・・。

通信相手がPS2だったからかもしれんが。

644 名前:デフォルトの名無しさん :2006/07/04(火) 01:29:22
>>643
そりゃ困難だろw
↓コピペ
>DirectPlay は、基本となるネットワークからアプリケーションを大きく隔離するレイヤを提供する。

645 名前:デフォルトの名無しさん :2006/07/04(火) 01:31:39
適材適所って奴だな
ただDirectPlayはサポート外になってしまったので
Socket使ったほうがいいと思うよ。
(でもDirectPlayとほぼ同等層を自分で作る羽目になる)

646 名前:デフォルトの名無しさん :2006/07/04(火) 13:54:22
NVPerfHUD4をインスコしてもビデオカードのドライバを認識してくれん。
GeForce6600で使えてる人いる?

647 名前:デフォルトの名無しさん :2006/07/04(火) 20:01:20
DirectXの描画って
性能のいいPCではスムーズに表示されて
そうでないPCでは描画オブジェクトを省いたりとか
そんなことってありえる?

同じexeでもオブジェクトが欠落してたりするんだが...
そんな風に書き分けた覚えはないのに...

648 名前:デフォルトの名無しさん :2006/07/04(火) 20:14:51
古い世代のGPUだと全く対応していないコードを書いたらそうなるんじゃないか

649 名前:デフォルトの名無しさん :2006/07/04(火) 20:21:04
>648
いや,あるときは描画されてたり,あるときは描画されなかったり.
でも性能の良いほうだと常に描画されているという...

よくわからんです..

650 名前:デフォルトの名無しさん :2006/07/04(火) 20:24:43
・ドライバのバグ
・精度割れ

まあ、色々考えられる罠。
あるか無いかと言えば、無いわけじゃない。

651 名前:デフォルトの名無しさん :2006/07/04(火) 21:58:01
基本的にハード側ってことですよね...
どうしようもないってことかな...

とにかくありがとうございました

652 名前:デフォルトの名無しさん :2006/07/05(水) 00:47:46
>>651
それはわからない。
俺も本当はバグっているのに
性能のいいマシンで開発してたからなんか動いてしまっていて、
いざスペックの低いマシンで動かしてみたらバグバグだったことはある。

そんときはαテストとかZテストとか設定がめちゃくちゃで正常に動くはずもないのに
開発マシンではなんか上手くいってるように見えたな。

653 名前:デフォルトの名無しさん :2006/07/05(水) 15:25:43
>>651
GPUによってステートなどの初期値が異なるから注意。
自分で使うものは全部自分で初期化したほうがいい。

654 名前:デフォルトの名無しさん :2006/07/05(水) 23:59:44
こちらで質問していいのか迷いましたが一応DirectXを使っているのでこちらで質問します
スレ違いでしたら誘導お願いします
C++とDirectX9で開発してます

ゲームを作ろうと思っているのですがまだ経験不足のようで、
プログラムの構造をどうすればいいのかで迷っています
前に読んだ本に、描画処理とメッセージ処理は分離してスレッド化するほうがいい
その程度は書いてあったのですが、ほんの数行で終わってしまい
構造はどうなるのかなどがいまいちわかりません。

作ろうとしているプログラムは、
ユーザーが1対1でネットワークごしに接続しあって、
キャラクターを操作したり、送られてきたデータからオブジェクトを同期したりするだけで、
RPG程度のものと考えてもらって結構です

よろしければ、皆さんのプログラムの流れを書いていただけると助かります
参考になりそうなHPなどでもいいのでよろしくお願いします

655 名前:デフォルトの名無しさん :2006/07/06(木) 07:13:49
>>654
>ユーザーが1対1でネットワークごしに接続しあって、
>キャラクターを操作したり、送られてきたデータからオブジェクトを同期したりするだけで、
自分の実力と不釣合いなもん作ろうとするなw
無理だってわかるだろw
一歩一歩刻んでいくしかねぇんだよ。

656 名前:デフォルトの名無しさん :2006/07/06(木) 07:21:49
>>654
テトリスあたりから作りなさい

657 名前:デフォルトの名無しさん :2006/07/06(木) 17:50:14
すみません。基本的な質問なのですが、3Dの座標で、右手座標の行列を習得した後、
それを左手座標の行列にに変換する方法を教えてもらえないでしょうか?

658 名前:デフォルトの名無しさん :2006/07/06(木) 18:06:57
z = -z

659 名前:デフォルトの名無しさん :2006/07/06(木) 18:21:31
>>654-657
なんて醜いんだ。

660 名前:デフォルトの名無しさん :2006/07/06(木) 18:29:23
>>658
ベクトルの変換ではなく、マトリクスの変換でお願いします。

661 名前:デフォルトの名無しさん :2006/07/06(木) 18:58:43
1 0  0
0 1  0
0 0 -1

662 名前:デフォルトの名無しさん :2006/07/06(木) 22:09:31
文系なのかゆとり教育の成果なのか知らないが、
線形代数の基礎くらいは習得してからプログラミングとか始めた方がいいんじゃないのか。

663 名前:デフォルトの名無しさん :2006/07/06(木) 22:22:20
ゆとり教育ってなんですか

664 名前:デフォルトの名無しさん :2006/07/06(木) 23:18:37
ググれよ

665 名前:デフォルトの名無しさん :2006/07/06(木) 23:30:08
ググれとは?

666 名前:デフォルトの名無しさん :2006/07/07(金) 00:13:42
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    >┻━┻'r‐'´
      ヽ_         |
         ヽ _ _ 」

  ググレカス [ Gugurecus ]
  ( 2006 〜 没年不明 )

667 名前:デフォルトの名無しさん :2006/07/07(金) 01:26:48
ゲルググのこと。

668 名前:デフォルトの名無しさん :2006/07/07(金) 11:30:14
あんでプレイはサポ外になってしまったん?
小柔らかの人達セキュリティー対策に嫌気がさした?

669 名前:デフォルトの名無しさん :2006/07/07(金) 11:31:29
ゲルググってなんですか。

670 名前:デフォルトの名無しさん :2006/07/07(金) 11:34:03
>>668
実際必要なくね?

671 名前:デフォルトの名無しさん :2006/07/07(金) 11:35:18
つかってなかったけど
なんでかなあとおもって

672 名前:デフォルトの名無しさん :2006/07/07(金) 11:40:17
そういやセキュリティー対策ってどのくらいやってますか?
おれはヘボだからぜんぜんやってないけど(データ生のまま垂れ流して受け取る)、
プレイならそのへんちゃんとしてくれてたのかな

673 名前:デフォルトの名無しさん :2006/07/07(金) 12:44:41
XboxLiveとかと同じなら、かなり入念な暗号化なんかをサポートしてくれるはずだけど
実際にはどーなんだろね。詳しい人解説プリーズ。

674 名前:デフォルトの名無しさん :2006/07/07(金) 13:34:39
というか手頃な代替ライブラリがないってのが凄いな
僕らはみんなwinsock大好き

675 名前:デフォルトの名無しさん :2006/07/07(金) 15:51:08
唐突に質問なのですが、
C++とDirectShowでビデオキャプチャ+圧縮保存のコードを書いております。
ボタンクリック時に、圧縮に使用するコーディックのプロパティ画面を開くようにしたいのですが、方法が検討つきません。
WindowMediaVideo9とMEPG4
ご存知の方、いらっしゃいましたらご助力願います。
宜しくお願い致します。

676 名前:デフォルトの名無しさん :2006/07/07(金) 21:36:10
>>プロパティ画面を開くようにしたい
http://www.kumei.ne.jp/c_lang/
猫でもわかるプログラミング

677 名前:デフォルトの名無しさん :2006/07/08(土) 17:01:43
>>671みつを?

678 名前:デフォルトの名無しさん :2006/07/08(土) 22:12:19
96*96で頂点のレンダリングをしたらテクスチャが崩れてしまったのですが
これは回避できますか?

679 名前:デフォルトの名無しさん :2006/07/08(土) 22:12:52
日本語でおk

680 名前:デフォルトの名無しさん :2006/07/08(土) 22:22:59
チュートリアル2で
256ドット*256ドットのbmpから96ドット*96ドット分だけレンダリングしたら
画像が綺麗に表示されないのです。

681 名前:デフォルトの名無しさん :2006/07/08(土) 23:00:22
君のミスでしょう

682 名前:デフォルトの名無しさん :2006/07/08(土) 23:00:55
モニタが汚れてるんじゃないのか?

683 名前:デフォルトの名無しさん :2006/07/08(土) 23:02:45
目が悪いんじゃないの?

684 名前:デフォルトの名無しさん :2006/07/08(土) 23:03:52
2のn乗ドットでやるときはきちんと表示されるのですが、
それ以外の数値でやると変な表示になるんです。

685 名前:デフォルトの名無しさん :2006/07/08(土) 23:04:23
テクスチャのサイズが96x96なわけじゃないなら設定ミス

686 名前:デフォルトの名無しさん :2006/07/08(土) 23:15:26
いくつかのパソコンで同じ物を起動させたら出来るのと出来ないのがありました。

687 名前:デフォルトの名無しさん :2006/07/08(土) 23:19:39
ビデオカードによる挙動の違いの吸収は君がやりましょう。

688 名前:デフォルトの名無しさん :2006/07/08(土) 23:35:52
九州するためにいるのがDirectXなのですが
いっぱい漏れちゃいます

689 名前:デフォルトの名無しさん :2006/07/09(日) 00:00:14
OpenGLなら遅いけど互換はばっちりみたいになるのかね?
遅いけど互換もまちまちとかだったら最悪だ

690 名前:デフォルトの名無しさん :2006/07/09(日) 00:03:45
GLには各社専用の拡張APIが存在する。
あとはわかるな?

691 名前:デフォルトの名無しさん :2006/07/09(日) 00:09:18
もう聖域なんてないってことだね

692 名前:デフォルトの名無しさん :2006/07/09(日) 00:11:11
結論:拡張使わなきゃおk

693 名前:デフォルトの名無しさん :2006/07/09(日) 00:23:00
拡張するのはよくねーよ。がばまんはダメ。

694 名前:デフォルトの名無しさん :2006/07/09(日) 00:31:19
それいったらDirectXも固定機能だけでやってりゃほとんど差なんてないぞ

695 名前:デフォルトの名無しさん :2006/07/09(日) 00:34:00
( ゚ρ゚)ポカーン

696 名前:デフォルトの名無しさん :2006/07/09(日) 02:02:06
 /
( ゚ρ゚)パカーン

697 名前:デフォルトの名無しさん :2006/07/09(日) 06:14:13
けっこう大口開けてプログラミングする奴いるよな

698 名前:デフォルトの名無しさん :2006/07/09(日) 08:10:46
>>697
それ漏れだ。
口あけてるか、ぶつぶつ言ってるかの二択。なんて怪しい。

699 名前:デフォルトの名無しさん :2006/07/09(日) 12:46:59
俺漏れも。

700 名前:デフォルトの名無しさん :2006/07/09(日) 12:49:17
俺はいつも半開きらしい。
同僚に指摘されて気付いた。

701 名前:デフォルトの名無しさん :2006/07/09(日) 13:06:17
俺は彼女に。
うそです。

702 名前:デフォルトの名無しさん :2006/07/09(日) 17:02:20
つまんないことですみません。

スクリーンセーバーで画面全体を使っている状態と、DirectXで画面全体を
使っている状態って、2Dのアクセラレーションとか関係ありますか?
マウスのup/down/ドラッグのイベントを拾ったり拾えなかったりするので
しょうか?

703 名前:デフォルトの名無しさん :2006/07/09(日) 17:10:03
DirectXを使う使わないにかかわらずウィンドウは生成するよな?
ウィンドウを生成するってことはメッセージが(ry

そういうことだ。

704 名前:デフォルトの名無しさん :2006/07/09(日) 18:34:26
>>702
もしかしてパラパラ漫画の人かな?

ビデオカードの仕事が追いつかない状況下だと、イベント拾って画面に変化を与えようとしても
残ってる仕事が先だからラグが発生する。
それが「拾ったり拾えなかったり」と関係あるのかは不明だけど。

705 名前:デフォルトの名無しさん :2006/07/09(日) 18:36:39
>>704
キュー方式だから来ないって事はないと思う。
大幅に遅延してくることは普通にあるが。

706 名前:デフォルトの名無しさん :2006/07/09(日) 18:40:12
>>702
DirectInputを使っていなければ、何も変わらないよ。
メッセージループに問題があるんじゃない?

1フレーム描画する毎に1メッセージしか処理しないような
書き方をする人がいるけど、それだと問題がある。

707 名前:デフォルトの名無しさん :2006/07/09(日) 21:35:23
これかな。


MSG msg;
while(true)
{
while(::PeekMessage(&msg, hWindowHandle, 0, 0, PM_REMOVE))
{
if(WM_QUIT == msg.message)
goto Exit;

::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
::Sleep(0);
}

Exit:


PeekMessage()、TranslateMessage()とDispatchMessage()が
1ループ1セットしか呼ばれないとかだと遅延が起こりまくるな。

708 名前:デフォルトの名無しさん :2006/07/09(日) 21:53:05
酷いなこりゃ。

709 名前:デフォルトの名無しさん :2006/07/09(日) 22:03:36
>>707は普通じゃね?

while(PeekMessage())

のところが

if(PeekMessage())

になっちゃって、1更新ループごとに1回しか呼ばれないとかになるのが問題なんじゃ

710 名前:デフォルトの名無しさん :2006/07/09(日) 22:10:28
なんでGotoなんて使ってんの?

711 名前:デフォルトの名無しさん :2006/07/09(日) 22:11:46
今、流行ってるから

712 名前:デフォルトの名無しさん :2006/07/09(日) 22:26:05
PostQuitMessageでいいんじゃね?

713 名前:デフォルトの名無しさん :2006/07/09(日) 22:53:33
goto毛嫌いするやつってどこの会社にも居るよな

714 名前:デフォルトの名無しさん :2006/07/09(日) 23:05:55
while-goto句なんざJavaですら残された定型コードじゃないか

715 名前:デフォルトの名無しさん :2006/07/09(日) 23:12:58
つーか、このループで

if(WM_QUIT == msg.message)
goto Exit;

のコードっているの?
goto云々じゃなくて・・・。

716 名前:デフォルトの名無しさん :2006/07/09(日) 23:23:29
break一個じゃ抜けれないからそうしてんだろ

717 名前:デフォルトの名無しさん :2006/07/09(日) 23:24:16
APIの使い方が根本的に間違っているから、無駄にメッセージの確認をしてCPU使用率100%になるぞ。

718 名前:デフォルトの名無しさん :2006/07/09(日) 23:30:18
DirectX勉強するまえにWinAPI勉強しろよ

719 名前:デフォルトの名無しさん :2006/07/09(日) 23:39:12
>>718
いや、そこまでするのは無駄だ。
もっとサンプルをたくさんみて該当箇所だけ色々みるだけでいいっしょ?
ここでWin32APIの勉強はじめるような奴は目的を見失ってる奴にしかみえない。
印象悪いよ。

720 名前:荒らし希望 :2006/07/09(日) 23:44:00
http://hp25.0zero.jp/472/hayato0hs2/

721 名前:デフォルトの名無しさん :2006/07/10(月) 00:04:33
用は既存のライブラリ使えってこったな

722 名前:デフォルトの名無しさん :2006/07/10(月) 01:38:57
>>717
メッセージループをどこに置くか次第だとは思うが、
そのコード自体はペトゾルトでも同じだったぞ。
GetMessageで済むならそっちのがいいんだろうが。
ここではSleepしてる部分に更新コードを書く感じかな。


>>715
PeekMessageを使ってる場合は要る。
GetMessageとは返り値が違うから。


Win32APIの知識はなんだかんだで地味に必要じゃね?
ほとんどの処理がDirectXだけで完結するとは言え、
せめてWindow作ったりループ回したりの理屈はわかってないと
色々と立ち行かないと思う。

まあ、スレ違いだって言ったらそれまでだけどね。

723 名前:デフォルトの名無しさん :2006/07/10(月) 01:45:23
>>722
いや、だから、すでに公開されて動いてるサンプルもその辺にたくさんあるのに
いまから、Win32APIの勉強をするのはハズレじゃね?
もっといえば、別にWin32APIを知らなくてもDirectXのサンプル通りにやれば正常にいくのにだよ?
こんなんでいちいちちょっと関わるだけのライブラリをいちいち習得してたら目的のモンに中々辿り付けない
と、俺は思うんだけどね。

DirectX勉強するのに、まず、COMの知識が必要とかいいだしかねない勢いで怖いね。

724 名前:デフォルトの名無しさん :2006/07/10(月) 02:19:51
C++・DirectXでゲームシステムみたいなものを作っているものです。
今あることで悩んでいます。
1.
グローバル・Systemクラス(シングルトン)
Graphicクラスのポインタ
 Inputクラスのポインタ
 Audioクラスのポインタ
 中でnewで確保して中の3つの各public宣言関数はSystemクラスの関数の中で呼び出される。
 Systemクラスの関数で上の3つのクラスで提供される処理は全て行う。

 ・思うこと
  Systemという区切りで3つのクラスをまとめたことでグローバルに置くクラスを1個にできた。
  Systemクラスの関数でしか中のクラスの関数にアクセスできないので少し遅くなってない?

2.
 上の3つのクラスをシングルトンでグローバルにおいてアクセスする


C++の設計の問題だと思うのですが皆様アドバイスよろしくお願いいたします。


725 名前:デフォルトの名無しさん :2006/07/10(月) 02:49:58
>>724
おめー、設計下手糞だからわかんねぇんだろうけど、
ゲーム部分とデバイス部分でわけとかないと大変だぞ。
そんなもんグローバルにしてもってゲームのソース中に散りばめたら大惨事よw

結局さ、それをグローバルにしてどっからでもアクセスできるようにしようなんて
いうのはゲームのどこでどうそのクラスが必要になるかわからないからだべ?
なんかどこでも必要になる気がするんだよなw
正直、アホだ。アフォまるだし。でも、いまはそれでいいと思う。
誰かの言葉に説得させられるんじゃなくて、自分でやってみて理解したほうがいいと思う。
今はたくさんゲームを作るとき。百万の言葉より1つの経験。
ゲームを作らないでライブラリを作ってもそれは独りよがりなもんにしかならない。
知識だけでも駄目だし、経験だけでも駄目。バランスが大事。

それとプログラムの基本は
グローバル変数・関数は駄目だ。
どっかからとってきたインスタンスへのポインタをメンバ変数に保持するのも駄目だ。(Alt+Tabで問題になるな)
gotoも駄目だ。

ってのはわすれないようにw

726 名前:デフォルトの名無しさん :2006/07/10(月) 02:52:47
>>723
言葉遊びだと思うな。
サンプルの中にも鵜呑みにしていいものと悪いものがあるし、
見分けるにはやっぱり基礎知識はある程度あった方がいいし。

なんだかんだでタイマー周りの制御とか、デバイスのロスト時の処理なんかを
ちゃんと実装するには、それなりにWinの知識が必要だよ。
それこそ既存のサンプルからコードぱくってくりゃ済む話だけどさ。

どこまで踏み込むかは、程度問題でしかないだろうけどね。
まあ、好き好きで。

727 名前:デフォルトの名無しさん :2006/07/10(月) 02:54:15
>グローバル変数・関数は駄目だ。

でもクラスのstaticメンバは良かったりするんだよなw

728 名前:デフォルトの名無しさん :2006/07/10(月) 02:56:06
>>727
それはかまわねぇと思うけど。
目的がはっきりしてれば。
ただ、あんまりやらないな。

729 名前:デフォルトの名無しさん :2006/07/10(月) 02:57:06
>>726
>それこそ既存のサンプルからコードぱくってくりゃ済む話だけどさ
なんでぇ。文句ねーじゃねーかw

730 名前:デフォルトの名無しさん :2006/07/10(月) 03:11:54
>>728
namespaceと一緒で、変数や機能の所有者がはっきりするから
いわゆるグローバル変数だだ並べに比べれば格段に危険度は減るんだよな。

でも、実際には忌避される理由の大半は宗教上の問題だと思う。
プログラマって信心深い人多いから。


どーでもいいけどスレ違いですねそうですね。

731 名前:デフォルトの名無しさん :2006/07/10(月) 03:25:26
>725
グローバルアレルギーか?

>724
>Systemという区切りで3つのクラスをまとめたことでグローバルに置くクラスを1個にできた。
まとめることに何の意味があるのか?
むしろ機能の独立性が下がるほうが気になる。


732 名前:デフォルトの名無しさん :2006/07/10(月) 03:27:26
このスレにサッカー観てる奴が3人はいる!

733 名前:デフォルトの名無しさん :2006/07/10(月) 06:35:32
>>730
勝手な解釈して逃げてるけど、そりゃお前がなにも学んで無いから、
ちゃんとグローバル変数・関数の問題と向き合ってとことん考えなきゃ次のステップには進めないぞ。

てか、グローバル変数・関数の問題を諦めた時点で設計を語る資格は無い。
もう、どうにだって組めるじゃん。こんなもんちょっとでも許した時点ですべてが崩れちまう。
何が悪くて、何が良いのかも判断できないっしょ。

734 名前:デフォルトの名無しさん :2006/07/10(月) 09:30:10
プログラマなら誰しも一度は、グローバル、gotoを鬼のように毛嫌いする時期があるんだよなw

735 名前:デフォルトの名無しさん :2006/07/10(月) 09:31:47
グローバルは在ったけど、gotoは無かったなぁ。

まさか、これからくるニカ!

736 名前:デフォルトの名無しさん :2006/07/10(月) 11:01:34
ゲームのライブラリ作るときにstaticを毛嫌いする理由がわからんな。
ウィンドウの管理とかD3Dデバイスの管理なんて普通はstaticでいいと思うが?

安全性と可読性が保障されてるならグローバルもgotoもぜんぜんありだと思うがなぁ。

737 名前:デフォルトの名無しさん :2006/07/10(月) 14:03:04
>>733
問題なのはグローバル変数剥き出しそのものじゃなくって
管理権限がはっきりしない変数が改変可能な状態で
放り出されていては、何処で何が起きても責任が取れないってだけのこと。
これはたかだかカプセル化の問題に過ぎない。

正しくOOPが適用されれば自ずと無闇なグローバル変数云々なんぞは消えていくが、
そこを経験則上の解釈だけで止めてしまってる人も結構多いって言いたいだけなんだけど、
俺、そんなに間違ってること言ってるか?


738 名前:デフォルトの名無しさん :2006/07/10(月) 14:04:47
>>734
某所にコード貼り付けたら、以降のレスが多重ループを抜けるのに使ってた
gotoにだけ集中してて吹いたよ。
おまいらそこ争点違うからとw

739 名前:デフォルトの名無しさん :2006/07/10(月) 14:52:51
>>737
おめー、設計下手糞だからわかんねぇんだろうけど、
ゲーム部分とデバイス部分でわけとかないと大変だぞ。
そんなもんグローバルにしてもってゲームのソース中に散りばめたら大惨事よw

740 名前:デフォルトの名無しさん :2006/07/10(月) 16:50:09
>736
マルチウインドウ、マルチモニタに対応出来ないじゃないか。

741 名前:デフォルトの名無しさん :2006/07/10(月) 16:55:48
>>736
そんなゲーム作るのか?

742 名前:デフォルトの名無しさん :2006/07/10(月) 16:57:25
アンカーミス
>>740

743 名前:デフォルトの名無しさん :2006/07/11(火) 13:54:48
レンダリングした映像のデプスバッファにアクセスして
指定した座標の値を取得する方法ありませんか?


744 名前:デフォルトの名無しさん :2006/07/11(火) 14:25:24
システムに落としてきてロックする以外にあったっけ?
ピクセルシェーダー3.0なら出来んのかな。


745 名前:デフォルトの名無しさん :2006/07/11(火) 14:27:07
>>744
調べてみる
サンクス

746 名前:デフォルトの名無しさん :2006/07/11(火) 21:39:32
do{
if (えらー1)
break;
if (えらー2)
break;
... // 正常な処理
return;
}
while (0);

.. // エラー処理
return;


747 名前:デフォルトの名無しさん :2006/07/11(火) 21:51:07
do{
if (えらー1) //7月11日 今日はハンバーグを食べた
break;
if (えらー2)
break;
... // 正常な処理
return;
}
while (0);

.. // エラー処理
return;

748 名前:デフォルトの名無しさん :2006/07/11(火) 21:55:48
うなぎイメージ悪いから最近は食ってないけど、
つまりgotoいらないよな


749 名前:デフォルトの名無しさん :2006/07/11(火) 22:04:52
正直、無理やりループ作ってbreakで抜けさせているのが美しいとはとても思えない。

750 名前:デフォルトの名無しさん :2006/07/11(火) 22:09:51
〜第1回美コード選手権 開始〜


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.