5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん: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】
http://pc11.2ch.net/test/read.cgi/tech/1207702556/

2 :デフォルトの名無しさん:2008/07/17(木) 13:51:20
>>1


3 :デフォルトの名無しさん:2008/07/17(木) 14:02:03
超初心者用にさきほど質問をしたのですが、まったく返事がこないので
こちらで質問させてください。

DirectX SDK 9.0をインストールして、その中にあったVoiceClientServerの
voiceserverを試しにビルドしてみたのですが、
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(236) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
などのコンパイルエラーがでてしまいます。
検索をしたらいくつかみつかったのですが、はっきりとした原因と解決策はわかりませんでした。
申し訳ありませんが、何か知っている方がいらっしゃいましたら教えてください。
お願いします。

4 :3:2008/07/17(木) 14:08:19
補足します。
IDEはVisual C++ 2008 Express Editionです。

5 :3:2008/07/17(木) 14:55:57
超初心者用の方で回答いただきました。
マルチのようになってしまい申し訳ありません。

以下に解決方法を報告させていただきます。

該当行の直前に
#define POINTER_64 __ptr64
を追加しやりすごすことができました。

次のエラーはrcファイルの中でインクルードしているafxres.hがみつからないというものでした。
検索してみると、
#include <windows.h>
#define IDC_STATIC (-1)
と書いたafxres.hをカレントディレクトリにおけば解決とかいてありそれで大丈夫でした。
あとはライブラリの名前dplay.libをdplayx.libに修正したらできました。

ありがとうございました。

6 :3:2008/07/17(木) 14:57:08
該当行というのは
winnt.hの
typedef void * POINTER_64 PVOID64;
のことです。

7 :デフォルトの名無しさん:2008/07/17(木) 17:47:21
>該当行の直前に
>#define POINTER_64 __ptr64
>を追加しやりすごすことができました。

winnt.hのバージョンが古かったって落ちはないか?

8 :3:2008/07/17(木) 18:00:28
>>7さん

winnt.hをみたところBUILD Version: 0091とあります。
フォルダはv6.0A\Includeです。

とりあえず報告まで。

9 :デフォルトの名無しさん:2008/07/17(木) 18:45:29
【関連サイト】

MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx

DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx

BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/

DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/

Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/

TWINTAIL LOVERS.
ttp://www.twin-tail.jp/

[t-pot] PROGRAMMING
ttp://www.t-pot.com/program/

GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D

GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D

ゲームを作るための素材を集めよう まとめサイト(※消えているようです)
http://paw.my-sv.net/index.html


10 :デフォルトの名無しさん:2008/07/17(木) 18:47:30
----------------------------------------------------------------------
4 デフォルトの名無しさん [sage] 2008/04/09(水) 15:18:25

マルペケつくろーどっとコム
ttp://marupeke296.com/

↑これも入れてもいいんじゃね?
てかここ読めば大抵わかるのと、超初心者ターゲットのしつこいくらいの説明がいい
----------------------------------------------------------------------


通りすがりの俺がテンプレ貼るっていったい・・・

11 :デフォルトの名無しさん:2008/07/17(木) 23:23:11
前スレの話だけど、自前フォーマット作れないのは
プログラミングの技術っていうより、理論がわかっていないんだと思う

12 :デフォルトの名無しさん:2008/07/18(金) 10:49:43
シェーダープログラムで
CommitChangeってやらなくてもシェーダープログラム内のデータは
かわってるけど、これが必要な場面というか
明示的にやらないとダメな理由ってあるのかな?




13 :デフォルトの名無しさん:2008/07/18(金) 11:10:18
>>11
だから、理論をわかるための入門としてXファイルは手頃なんじゃないか

14 :デフォルトの名無しさん:2008/07/18(金) 14:16:49
RADEON系のビデオチップで
1024x1024のRHW付き2次元テクスチャをある一定以上拡大すると、
マイナス座標の頂点が固定される(それ以上マイナス方向に拡大できなくなる)
ようになってしまうのですが、なにかレンダリング設定等で回避する方法はないでしょうか?
ちなみにnVidia系ではこの現象は出てないです。

開発環境はDirectX9c,Win2k,VC++2005

15 :デフォルトの名無しさん:2008/07/18(金) 16:45:57
>>14
それは頂点座標がGuardBand***を超えてるだろう。
ポリゴンを自分でクリッピングすればいい。

16 :デフォルトの名無しさん:2008/07/18(金) 23:20:45
>>14
別にRadeonに限った話じゃない。
自分でシザリングすればいいだけの事。

nVIDIAは・・・まぁ中で勝手にやってるんだろうな。

17 :デフォルトの名無しさん:2008/07/19(土) 01:14:37
そんな感じで変換済み頂点はハードに影響する部分があるので
変換行列や頂点シェーダでごにょごにょして入力座標値とスクリーン座標値を
一致させるやり方をお勧めするよ。

18 :14:2008/07/19(土) 13:13:48
>>15-17
回答ありがとうございます。

やっぱり自前でクリッピングしないとだめですか。
回転なしの四角平面ポリゴンならそれも簡単なんですが、
回転が入ると最悪8頂点に分割しなければならないので、
ソフトウェア処理で余計な処理コストが追加されるのが嫌だったのですが。

とりあえず、回転行列を監視して個別に振り分けて処理コストが最低限で済ませる
ようにアルゴリズムを考えてみます。

19 :デフォルトの名無しさん:2008/07/19(土) 13:17:56
シザリング面倒なら16x16の格子とかにすりゃいいだけのヤカン

20 :デフォルトの名無しさん:2008/07/20(日) 18:50:30
>>11

で、それを言って何の参考になる?
マスターベーションでもやってろ、仕様もない糞が。

21 :デフォルトの名無しさん:2008/07/23(水) 14:28:41
D3DXMatrixPerspectiveOffCenterLHを使っているんですが
引数のl,r,b,tはどこの値なんですか?
Nearプレーン(zn)での描画する範囲が幅r-l、高さt-bの長方形ということでいいんですか

22 :デフォルトの名無しさん:2008/07/23(水) 16:52:18
カメラの向きを回転したいのですが、縦の回転が出来ません。どうやったら良いのでしょうか?
横の回転は、
D3DXMATRIXA16 m;
D3DXMatrixIdentity( &m );
D3DXMatrixRotationY( &m, 回転量 );
vDir = vLookAt - vEye;
D3DXVec3TransformCoord( &vDir, &vDir, &m );
vLookAt = vEye + vDir;
で求めています。

D3DXMatrixRotationY( &m, 回転量 );
の部分に
D3DXMatrixRotationX( &m, 回転量 );
D3DXMatrixRotationZ( &m, 回転量 );
を追加しても変な動きになってしまいます。

23 :デフォルトの名無しさん:2008/07/23(水) 17:32:20
横回転はY軸を回す。
だったら縦はX軸を回すだろ?
どううまくいかないんだ?

24 :デフォルトの名無しさん:2008/07/23(水) 17:59:29
>>23
現在向いている方向が(0,0,1)として。
Xだけで回転すると正面と真後ろを向いている時は上手く行くんだけど、真横を向くと上下に回転しなくなります。
一方Zだけで回転すると、真横は上手く行くけど正面真後ろがダメになります。

25 :デフォルトの名無しさん:2008/07/23(水) 18:09:39
そりゃそうだろ。
D3DXVec3TransformCoord()使うとかクォータニオン使うとかでどうか

26 :デフォルトの名無しさん:2008/07/23(水) 18:53:42
>>25
何故そうなるのかもD3DXVec3TransformCoordを使うやり方も分かりません

27 :デフォルトの名無しさん:2008/07/23(水) 20:24:37
くだすれの方でも同じような質問あったから除いてみ

28 :22:2008/07/23(水) 22:01:30
調べてみましたがさっぱり分かりません。
XYZと回転マトリクスを1つずつ計算してみたりしましたが、最初よりバグっています。
どう計算したらいいんでしょうか?ソースを書いて貰えると助かります。
根本的に理解できていないなら、その根本的な部分を説明するサイトか書籍を教えてください。

29 :デフォルトの名無しさん:2008/07/23(水) 22:37:36
XとZの回転量って個々にちゃんと計算してるの?それが不安

30 :デフォルトの名無しさん:2008/07/24(木) 01:47:30
>>28
「一次変換 行列」でググってみて。

メラの行列がわからないって事は、
カメラの行列を作るときに何が起きているかを理解していないって事。
「透視射影行列」あたりでググってみても良い。

行列の本は簡単なので良いから1冊ぐらいは読もうね。
キーワードは「線形代数」ね。

31 :デフォルトの名無しさん:2008/07/24(木) 01:50:35
>>28
個人的なお勧め本は 「リアルタイム レンダリング 第2版」
本の内容を一通り理解して頭に入れとけばどけばまず間違いないと思う。

32 :デフォルトの名無しさん:2008/07/24(木) 05:45:51
>>28
昔、座標系に関してお世話になったサイト思い出して
ぐぐってみたらあってびっくりした

宇治社中
http://web.archive.org/web/20030405025753/www.cc.rim.or.jp/~devilman/3dCoding/3dCoding.html

なつかしす・・・

文字化けしてたら
メニュー→表示→文字エンコーディング→日本語のなにか
で治ると思う

3Dはまず行列使いにならないと他の話についていけないので
ローカルからワールド、ワールドからローカルへと変換できるようになっておいたほうがいいと思う

33 :デフォルトの名無しさん:2008/07/24(木) 12:16:14
>>28
マイクロソフトのフレームワークや書籍のサンプルを筆頭に、何で誰もそのソースを書かないと思う?
xz回転を加えるだけで、ソースが何百行も追加になり複雑になるからだよ。
directxのAPIだけじゃ不可能で、要素を1個ずつsin,cosで計算しないといけないから、行列を根元の部分から理解していないと絶対に作れない。
y軸だけならAPI1行で済む。
そんな簡単にカメラが動いたら、今頃世の中に大作ゲームがわんさか溢れてるよ。
ジンバルロックの問題もあるし、xz回転はしない方がいい。素人にはお勧めしない。

34 :デフォルトの名無しさん:2008/07/24(木) 18:25:29
つか
カメラまわしてから注視点きめるんじゃなくて
注視点まわせばええんとちゃう?

35 :デフォルトの名無しさん:2008/07/24(木) 18:38:58
視点と注視点の概念がまだわかってないんじゃないだろうか?

36 :デフォルトの名無しさん:2008/07/24(木) 18:42:23
いろいろやってみりゃわかってくるね。
でもいきなり数値大きく変えると何がどう影響したのかわかりにくいが。

37 :28:2008/07/24(木) 20:10:17
レスありがとうございます。
皆さんのおかげで、オイラーは難易度が高いので使わない方が良いということが分かりました。
オイラーを止めてクォータニオンを使うことにしたのですが、今度は回転の補間の説明ばかりで平行移動が分かりません。
http://hikari-hinomoto.hp.infoseek.co.jp/PDF/DX305.pdfにほとんど書いてあるのですが、肝心の部分が書かれていなくて困っています。

void CCamera::Move(const float inFront, const float inUp, const float inRight)
{
// カメラの方向ベクトルを取り出す
D3DXVECTOR3 right(m_View._11, m_View._12, m_View._13);
D3DXVECTOR3 up (※ここは各自考えましょう);
D3DXVECTOR3 front(※ここは各自考えましょう);
// 移動
right *= inRight;
up *= inUp;
front *= inFront;
m_Position += front + up + right;
}

の、ここは各自考えましょうの部分が分かりません。
予想では
m_View._21, m_View._22, m_View._23
m_View._31, m_View._32, m_View._33
ですが、本当に合っているのか分かりません。
これはどこを調べたら分かるのですか?
クォータニオン周りを調べましたが、本のリンクが出てきただけでさっぱり分かりませんでした。
その本も買いましたが、glTranslateを使えばおkとしか書かれていないので、肝心の中身が分かりません。
DirectX版のglTranslateを探せば通るとは思うのですが、理解しないまま進むのも嫌なので。
これはどこをどう調べたら分かるのですか?

38 :デフォルトの名無しさん:2008/07/24(木) 20:20:37
>>37
そんなになんにも理解してない状態でそのレベルの理解を要求されても困るw

39 :37:2008/07/24(木) 20:47:36
自己解決しました。ビュー変換行列を見ていたらありました。

>>38
初心者スレということで、理解できるレベルまでお願いします><

40 :デフォルトの名無しさん:2008/07/24(木) 23:09:44
>>39
一次変換の意味はわかる?
行列を掛け合わせることをやるとどういう行列が出来るかはわかる?
行列の積に可換性がないのはなぜかわかる?
クオータニオンと行列の違いはわかる?
透視変換行列の作り方は理解している?

上のことを一つずつ解決していけば出来るようになってるはず。

41 :デフォルトの名無しさん:2008/07/24(木) 23:57:18
まあ、そんなとこだよね
まず数学だからなぁ・・・
テキトーにキーワードかき集めてはめてみて→動いた!→OK!
って人間にはならんほうがええぞ
答えを焦り過ぎだ
理解も時間が解決するときがあるべよ

42 :デフォルトの名無しさん:2008/07/25(金) 00:36:54
DirectX初心者スレなのでDirectXのことで分からなければいくらでも答えるんだけどねぇ。
行列の意味や仕組みや動作すらわからないのは線形代数の本を抱いて寝てくれとしか言えん。

43 :デフォルトの名無しさん:2008/07/25(金) 13:56:30
教えて欲しけりゃ金持ってこいっつーの

44 :デフォルトの名無しさん:2008/07/25(金) 13:57:00
つI

45 :デフォルトの名無しさん:2008/07/25(金) 14:55:21
つD

46 :デフォルトの名無しさん:2008/07/25(金) 18:51:04
つ ミ
      I

47 :デフォルトの名無しさん:2008/07/25(金) 18:52:39
           . . I
      (ノ'A`)ノ
      (  )
   , , , , / >

48 :デフォルトの名無しさん:2008/07/26(土) 09:46:18
あ、でも正直、この辺って感覚的なもんも大事だから
色んな人の本を読むといいと思う

色んな人の色んな行列の解釈を読んだほうが勉強になると思う
実際、ゲームで使うとなったら
この動きはオイラーのほうがよくてアニメーションはクオータニオンで
この動きはこの座標を中心にして極座標で動かして・・・

って条件分岐の荒らしになるのは仕方ねーことだし
汎用座標系クラスなんて無意味なもん作ろうとするとソースがヤバイ行数になって死ぬw

49 :デフォルトの名無しさん:2008/07/27(日) 05:33:37
directxとは直接関係なくて悪いのですが・・・

3Dプログラミングを学ぶにあたって、最低限知っておくべき数学・算数を教えて下さい
私頭悪いので、最低限のものでお願いいたします



50 :デフォルトの名無しさん:2008/07/27(日) 05:51:58
高校理系卒業レベルは必須

51 :デフォルトの名無しさん:2008/07/27(日) 06:47:08
>>49
そんな大きな枠で括られても高校数学まではなんでも食えとしかいいようがない
必要になったら必要な分だけ理解すればいいんじゃない?
とりあえず行列とベクトルが必要なのはわかってるんだから
勉強してみればいいんじゃない?

52 :デフォルトの名無しさん:2008/07/27(日) 16:27:32
>>51
ありがとうございます
今のところわかっているには、行列・三角関数です
上記2点を理解するためにさらにほかのをやらなきゃならんようですが・・・


53 :デフォルトの名無しさん:2008/07/27(日) 16:48:35
わかっているのはっていうのは、なにをやればいいかってことです
理解しているというわけじゃありません 

スレ汚しスマヌ

54 :デフォルトの名無しさん:2008/07/27(日) 16:55:49
4x4行列演算・空間図形・四元数・三角関数・ベクトル演算
この辺は押さえておくよろし

55 :デフォルトの名無しさん:2008/07/27(日) 17:04:57
質問があります。

30〜60枚を1単位としたアニメーションを表示させたいのです。
1フレームに1枚で、60枚で1秒間のアニメーションと考えてください。
このアニメーションが約20〜30種類あります。

問題は、このそれぞれのアニメを「いつ」「どれを」表示するかが決まっていないのです。
とはいえ、こんなに大量の画像データをメモリにおいておくわけにもいかず困っています。

アニメの表示命令が下った時点でそのアニメをリアルタイムに読み込みする
ように組んでみたのですが、(1フレームに1枚ずつ読み出す)
Textureの読み込みが非常に重く、処理落ちが酷くなってしまいます。

何か有効な手段、ごまかし方など、ありませんでしょうか?
ちなみに使用している画像フォーマットはDXT、DirectXのバージョンは9.0cです。

56 :デフォルトの名無しさん:2008/07/27(日) 18:37:37
>>55
仕様を聞いてみないとなんとも

アクションゲームのキャラ絵だったら諦めろとしかいいようがないし
ステータス画面のちょっと凝ったサムネイル(アイコン?)だったら
カーソルをロード時間分置いたら表示されるようになってるゲームが多いな

57 :デフォルトの名無しさん:2008/07/27(日) 18:58:28
1枚のテクスチャに30〜60枚分の画像を収める
サイズにもよるけど

58 :デフォルトの名無しさん:2008/07/27(日) 19:44:13
インタラクティブな場所でないならムービー化

59 :デフォルトの名無しさん:2008/07/27(日) 21:37:36
すいません 質問させてください

directshowがdirectx9の後半(?)から使用できないっていうんで
しかたなくdirectx8でdirectshowやってるんですが

3dの描画にはdirectx9を使用しています

directx9と8の両方が使用されているゲームをPLAYするには

9,8両方のランタイムが必要になるのでしょうか・・・
教えてくださいm(_ _)m

60 :デフォルトの名無しさん:2008/07/27(日) 21:56:57
9のランタイムが入っている=1〜9のランタイムが入っている

61 :デフォルトの名無しさん:2008/07/27(日) 22:00:19
1〜9?アホか?

62 :デフォルトの名無しさん:2008/07/28(月) 00:11:29
【狂育部】ソフトウエア興業11【業無部】
http://science6.2ch.net/test/read.cgi/infosys/1216289288/599

C++の洒落プログラムを落としただけで炎上したんだがwww
読むとかなり面白いw

世の中こんな会社もあるから気をつけてくれw

マジで!

63 :デフォルトの名無しさん:2008/07/28(月) 04:55:59
DirectSoundでループ再生を行う場合に再生開始は曲の開始からでも
ループした際は曲の途中から再生したいんですが、こういうのって
やはり、再生が終わった事を検出して自分で再生位置を指定して…っていう
やり方になるんでしょうか?

それともループ再生用のパラメータ等が存在するのでしょうか?

64 :デフォルトの名無しさん:2008/07/28(月) 05:23:24
回答どうもありがとうございます。

>>56
ちょっと違うけど、「アクションゲームのキャラ絵」という表現が近いです。
扱いとしてはキャラのモーションとかゲームのエフェクトとかになると思います。
やっぱり諦めるしかないですかねー…

>>57
小さい画像なら、それでいけそうですね。
大きい画像(200x200とか)の場合はどうしようもなさそうですが…

>>58
コーデック必須にしたくないので、たぶん無理かと思われます…
無圧縮にするくらいなら、画像全部メモリに持ってろって話になると思いますし。

65 :デフォルトの名無しさん:2008/07/28(月) 10:40:53
>>64
画像を一気に読み込むとして、
どれぐらいのメモリが必要か計算してみると良いよ。
システムメモリで行けそうだったらシステムメモリに確保すればいい。
200x200ピクセル で 60fps、30秒だと 200MB ぐらい。きついね。
ムービーが無難。

無責任なことを書くと、メモリマップドファイルでベタで画像情報をファイルにしておくとか?
出来たとしても速度は出ないと思うけど。

66 :デフォルトの名無しさん:2008/07/28(月) 11:31:46
>>64
そういうときは普通ポリゴンモデルを使うんじゃねぇの。
毎フレーム分の画像なんてアホな事普通やら無いぞ。
2Dアクションならせいぜい5フレとかで間引くし。

コーデックが云々いうがWindows95とかターゲットにしない限り
MPEG1が再生できない環境なんてないと思うが。

67 :デフォルトの名無しさん:2008/07/28(月) 20:09:33
もろに2Dゲームが無くなった理由そのものだしな
3Dに比べて、使うメモリに対して表現能力が少なすぎる>2D

68 :デフォルトの名無しさん:2008/07/28(月) 21:44:11
スパロボのカットインのようなことがやりたい、に100万ペソ

69 :デフォルトの名無しさん:2008/07/28(月) 23:26:37
そんとき読み込むので十分だろwあんなのw

70 :デフォルトの名無しさん:2008/07/29(火) 00:27:58
スパロボのはおもいっきり解像度落としてるし、
そもそもツール上でキーフレームアニメのエディットしてるだろ。

全フレーム画像もってるわけがねえ。

71 :デフォルトの名無しさん:2008/07/29(火) 02:23:56
多数のmeshをマテリアルの設定だけを変えてDrawSubsetしているのですが
描画するmeshの数が1000くらいあってDrawSubsetを一回ずつ呼び出して描画
すると重くなってしまって困っています.
一回のDrawSubsetで一度に描画できたり,あるいはその他の方法で
あまり負荷をかけずに描画するにはどうすればいいか教えてください

72 :デフォルトの名無しさん:2008/07/29(火) 06:12:52
>>71
カメラにmeshは全部入るの?
カメラに入らないmeshはちゃんと省けてる?(=視錐台カリングはちゃんとできてる?)

73 :デフォルトの名無しさん:2008/07/29(火) 06:39:24
>72
はい.カメラに入るメッシュだけDrawSubsetしてます

74 :デフォルトの名無しさん:2008/07/29(火) 07:26:32
質問です。
DirectX で描画した上に、ウィンドウコントロール(具体的にはテキストエディット)をおきたいと思っています。
そこで、描画が終わったら必ずウィンドウコントロールも再描画されるように、
下のような感じのメインループを書きました。

for (;;) {
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
if (msg.message != WM_QUIT) {
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
break;
}
} else {
Render();
RedrawWindow(コントロールのHWND, NULL, NULL, RDW_INVALIDATE);
}
}

しかし、まだコントロールがちらつくことがあります。
DirectX の描画と WM_PAINT のタイミングの問題のような気がしているんですが、
こういうとき、どの辺をチェックすればいいでしょうか?


75 :デフォルトの名無しさん:2008/07/29(火) 07:39:09
>>73
それで1000個?
ハードにできないことやろうとしてない?
最適化してやっと動く程度ならやらんほうがいいかもよ
マップチップとかなら一つに纏めるとはやいって聞くけど
それがどのくらいかわからん

なんていうかそもそも仕様がハードに合っているか
っていうのから考えたほうが良さげ


76 :デフォルトの名無しさん:2008/07/29(火) 08:28:03
>>73
一つのメッシュは何ポリゴンぐらい?
1フレーム当たりの描画ポリゴン数を計算してみた?

77 :デフォルトの名無しさん:2008/07/29(火) 09:32:33
>>73
DrawSubsetというかDrawPrimitiveは非常に重い処理。
流石に1フレームに1000回はかなり無茶なレベルだぞ。

まったく同じモデルを複数表示してるならジオメトリインスタンスを使え。

78 :デフォルトの名無しさん:2008/07/29(火) 10:42:52
>>74
GDIとDirect3Dの共存は基本的には無理。
GDIはGDIサーフェスという固定のバックバッファに対してしか描画しないが、
Direct3DのフルスクリーンモードではFlipにより画面に表示されるバッファが
入れ替わり、GDIサーフェス以外のバックバッファが表示されたりする。
ただし、SetDialogBoxMode(TRUE)を使えば一応可能。

ウインドウモード限定なら、WS_CLIPCHILDRENスタイルを指定すれば、
コントロールが上書きされなくなるので再描画も必要ない。

79 :74:2008/07/29(火) 11:08:32
>>78
ありがとうございます!
WS_CLIPCHILDREN を知りませんでした。ためしてみます。


80 :デフォルトの名無しさん:2008/07/30(水) 00:21:14
>>79
全部DirectXで書く方が早いし楽だと思うが・・・

81 :デフォルトの名無しさん:2008/07/30(水) 00:30:10
文字描画の方法を知らないからコントロール叩いてるんだろな

82 :デフォルトの名無しさん:2008/07/30(水) 10:16:23
デバッグビルドにはd3dx9d.lib、リリースビルドにはd3dx9.libといったようにリンクすると思うのですが、
これはコンパネから変更できるDirectXランタイムのデバッグ/リテールとは関係ないのですか?
リリースする時にはリリースビルドに下上で、ランタイムをリテールにしてビルドしなければいけないのでしょうか?

83 :デフォルトの名無しさん:2008/07/30(水) 11:20:24
pow2textureとnonpow2の違いってなんなんでしょうか?

84 :デフォルトの名無しさん:2008/07/30(水) 13:32:32
質問です。
ゲームでログイン時やチャット時などのテキスト入力する箇所って
Win32APIのエディットコントロールを利用してるのでしょうか?
それともDirectX側でそのような機能が用意されてたりするのでしょうか?

SDKのサンプルを調べてみようと思っていたのですが
自分の環境だとサンプルで使う用のプラットフォームSDKの
インストールが上手く行かずコンパイルが出来ず調べ辛く、
そういったUI部分をDirectXで実装する事を詳しく紹介してる
サイト・書籍などあれば教えていただけると助かります。
(「DXUTを使え」とかじゃなしに、SDKを利用した実装方法が知りたい)

85 :デフォルトの名無しさん:2008/07/30(水) 13:44:14
自力でキー関係のウィンドウメッセージを処理し、(必要によっては)IMEを呼び出し、文字を描き、
あたかもエディットコントロールかのような動作を実装している

86 :デフォルトの名無しさん:2008/07/30(水) 13:44:46
>>77さんの言われているジオメトリインスタンスについて載っているサイト等教えていただけませんか?
探しているのですが、探し方が悪いのか見つかりません。

87 :デフォルトの名無しさん:2008/07/30(水) 14:26:53
http://msdn.microsoft.com/en-us/library/bb173349(VS.85).aspx

88 :デフォルトの名無しさん:2008/07/30(水) 16:46:28
質問です。
「任意軸による回転」のプログラムってどんな時に使うのが理想なのでしょうか?
実装はできましたが、いまいち面白い使い方がわかりません・・・。
ググってみましたが、調べ方が下手なのか任意軸で回転させる行列の作り方ばかりで
具体的な使用箇所等は見つかりませんでした。

89 :デフォルトの名無しさん:2008/07/30(水) 17:12:42
「任意軸による回転」が1つあれば、「X軸の回転」「Y軸の回転」「Z軸の回転」を3つ別々に作らなくて済む

90 :デフォルトの名無しさん:2008/07/30(水) 17:17:30
メモリ上にあるxファイルのバイナリデータを読み込む関数ってありますか?
D3DXCreateTextureFromFileInMemoryExみたいな感じで

91 :デフォルトの名無しさん:2008/07/30(水) 17:21:26
( ^ω^)なんというD3DXLoadMeshFromXInMemory


92 :デフォルトの名無しさん:2008/07/30(水) 17:21:57
ボールが転がるようなの作るのときに使ったよ
まっすぐ転がすだけならX軸回転だけでいいが、途中で横に転がるなんて場合に便利

93 :デフォルトの名無しさん:2008/07/30(水) 17:27:23
( ^ω^)D3DXLoadMeshFromXInでググッてでてこなかったからあきらめて質問してしまった、さんくすなり


94 :デフォルトの名無しさん:2008/07/30(水) 17:30:51
>>64
・全アニメーションの前半部分(最初の10フレ分とか)だけをメモリにおいておき、
 それを再生中に残りを読む。
・リングバッファでデータを持っておき、1度読みこんだものはしばらく解放しない。
・使用頻度の高いもの、即時応答が必要なもののみを事前ロード
 →対戦格闘なら待機モーション+そこから派生する最初の動作のみ。
・圧縮してメモリに置いておく。使用する度に解凍する。

詳しい仕様が解ればもっとネタ出せるかも。

95 :88:2008/07/30(水) 17:49:25
回答ありがとうございます。
知らないことが多いので非常に参考になります。

>>89
マジですか、現状D3DXMatrixRotationを3回使って行列作ってますから
それだけコスト掛かってるって事になりますね。
やり方はわかりませんが、ちょっと調べてみます。

>>92
まだ任意軸の仕様がきっちりわかっていませんでしたが、
ちょっと考えればなんとなく分かりました。
つまりボールの移動しているベクトルと(0,1,0)のようなベクトルと
外積をとればXZ方向で回転させたい方向のベクトルがとれるってことですね。
なるほど、非常に参考になりました。

96 :デフォルトの名無しさん:2008/07/30(水) 17:54:15
えーと・・

97 :デフォルトの名無しさん:2008/07/30(水) 22:12:11
>>95
任意軸回転は3軸それぞれ回転するくらいの処理負荷は普通に食うぞ。
それにそこまでやるならもう四元数使え。めんどうくせえ。

98 :デフォルトの名無しさん:2008/07/31(木) 01:03:05
>>97
分かりました。
ちょうどそのあたりの本も揃えたので、やってみようと思います。
ありがとう!

99 :デフォルトの名無しさん:2008/07/31(木) 06:59:29
>dsound.hのコンパイルが通らないので、どうにかしたい
[環境]WinXP(sp2) VC++2005(pro) DirectXSDK(oct 2006) PlatformSDK(?最新)
[設定]ツール>オプション>VC++ディレクトリ>インクルード、ライブラリ、Bin
の設定をPlatform>DirectXの順にして設定。※DirectXSDKのライブラリはx86を指定
[ソース]
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "dsound.lib")
#pragma comment(lib, "winmm.lib")
#include <windows.h>
#include <dsound.h>
int _tmain(int argc, _TCHAR* argv[])
{
return 1;
}
[エラー]
c:\program files\microsoft directx sdk (october 2006)\include\dsound.h(230) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\program files\microsoft directx sdk (october 2006)\include\dsound.h(230) : error C2143: 構文エラー : ';' が '*' の前にありません。
以下省略
エラーの場所:typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
[備考]
mmreg.hでWAVEFORMATEXが宣言されていいて、PlatformSDKに含まれている。
PlatformSDKの設定を失敗している??
参考にしたURL:ttp://www.cppdrive.jp/vc/sdk/index1.html

上記、問題解決へのヒントなり参考サイトなり紹介していただければと思います。






100 :74:2008/07/31(木) 07:02:13
>>84 さんとは別人ですが、やりたいことは同じでした。
Win32API を使って文字入力をしているゲームはあんまりないですね。
IME とかを使っていると、変換中の文字が画面の左上にでてきたりするし。

>>85 さんの言うように全部実装するという手もありますが、
IME や右クリックしたときのコンテキストメニュー、
その他もろもろを実装するのはあんまり現実的じゃないかなと。
この辺はユーザビリティにどの程度重きを置くかで選択が変わってくると思います。

101 :99:2008/07/31(木) 08:20:20
>追記 ※半分解決※
新規プロジェクト>Win32プロジェクト>空のプロジェクト
でプロジェクトを作成するとコンパイルが通ります。

通常のWin32のテンプレート(空のプロジェクトではない場合など)
を使ったプロジェクトでは >>99 同様エラーが出ます。

102 :デフォルトの名無しさん:2008/07/31(木) 08:33:07
>>99
プロジェクトのプロパティで、
Configuration Properties→Advanced→Show Includes
を Yes にしてからコンパイルすると、
インクルードしている順番とかがわかるので、
それでなにかわかるかも。


103 :99:2008/07/31(木) 09:02:26
>>102
レスサンクスです。
早速やってみたのですが、、、順番として
dsound.hの前にmmreg.hがあるか確認したのですが、、、
そもそもmmreg.hが読み込まれていません、、、orz



104 :デフォルトの名無しさん:2008/07/31(木) 10:49:49
>>100
チャットの文字とかそういうのもコピペできるようにしたいの?
IMEの制御と入力中の文字のコピペぐらいで良いと思うんだけどね。
コンテキストメニューは無しで。

105 :デフォルトの名無しさん:2008/07/31(木) 11:31:22
>>103
とりあえず、これ入れてみては?
#include <mmsystem.h>

106 :デフォルトの名無しさん:2008/07/31(木) 11:50:17
ちょっとやってみたよ。
stdafx.h の中の↓の行、消すかコメントにしてみ
#define WIN32_LEAN_AND_MEAN // Windows ヘッダーから使用されていない部分を除外します。

107 :デフォルトの名無しさん:2008/07/31(木) 11:52:20
ってプリコンパイルヘッダ使ってないのか。
まあ、WIN32_LEAN_AND_MEAN のdefineがどっかにあると思うけどな。

108 :99:2008/07/31(木) 12:38:34
レスサンクスです。

>>105
>#include <mmsystem.h>
なぜか、大量のエラー(88個)が出ました、、、。
[エラー文]
構文エラー : ';' が、識別子 'MMVERSION' の前に必要です。
以下略
[エラー内容 mmystem.h]
typedef UINT MMVERSION;
以下略

>>106
#define WIN32_LEAN_AND_MEAN
を消してみましたが、
>>99 と同様のエラーが発生してダメでした。

みなさんの助言ありがとうございます。
もう少し自力で調べてみます。


109 :デフォルトの名無しさん:2008/07/31(木) 12:39:26
あったのか、、
消したらリビルドな

110 :デフォルトの名無しさん:2008/07/31(木) 12:41:56
あと空のプロジェクトだとうまくいくって書いてたが、
そのうまくいくやつのwindows.hをincludeする前に
#define WIN32_LEAN_AND_MEAN
してごらん。

111 :99:2008/07/31(木) 12:46:19
>>109

も、申し訳ありません、、、。
コンパイル通りました。
大変失礼いたしました。

#define WIN32_LEAN_AND_MEAN
についてこれより詳細に調べます。



112 :99:2008/07/31(木) 13:26:29
レスサンクスです。
>>110
うまくいかないときと同じ症状になりました、、、。
おっしゃるとおり#define WIN32_LEAN_AND_MEANが原因でした。

追記(同じ過ちを繰り返さぬよう)
#define WIN32_LEAN_AND_MEAN
をはずした後に、今まで組んでいた部分と合体したら、
winsock(winsock2.h)関係でエラーがいっぱいでましたが、
stdafx.hでwinsock2.hを読み込ませることで回避できました。
(windows.hより先にwinsock2.hを読ませないといけない)

諸兄のご尽力により、無事解決となりました。
スレ汚し大変失礼いたしました。

113 :デフォルトの名無しさん:2008/07/31(木) 14:14:09
>>100
DirectX SDKにあんたのやりたいこと全て、ソースコード付きで入ってるよ。
まぁ、そのままだと微妙に使い物にならないから、少し手直しが必要だが。

114 :デフォルトの名無しさん:2008/07/31(木) 14:50:29
>>113
Samples\C++\Direct3D\CustomUI
だね
日本語だと確定するまで違うところに表示されるのはしょうがないのかね

115 :デフォルトの名無しさん:2008/07/31(木) 15:17:38
>>114
そのサンプル触った上で言ってるの?

116 :デフォルトの名無しさん:2008/07/31(木) 16:56:43
>>74
コントロールの位置が分かってるなら
マスクかければいいじゃn

117 :デフォルトの名無しさん:2008/07/31(木) 17:23:02
>>115
よく見てなかった

118 :64:2008/07/31(木) 23:59:47
>>65
200Mだと、メモリに置いてもツライ量ですね…
メモリマップドにしても、結局ディスクから読むので変わらないのかな…

>>66
全くもってその通りなのですが、どうしても2Dでやりたいのです。
MPEG1は検討してみます。ありがとうございました。

>>94
色々とありがとうございます。
リングバッファは試してみる価値があると思います。
前半だけメモリにおいておくのは、結局止まってしまうので
メモリも食うし、中途半端になってしまうかも…
圧縮もありかもしれませんね。
ディスクから読み込むのと、展開するのとどっちが重いかにもよりますが…

詳しい仕様は…そうですね、エフェクトに使うと思ってもらえればいいと思います。
1〜2秒のエフェクトが30個ほどあり、どれがいつ必要になるかわからないという状況です。
(実際には少し違いますが)
色々試したところ、どうも重くなるのは初回のみなので、あらかじめ確保→開放して
キャッシュにいれておくなんて手法もありかもしれません。
(問題は人によってキャッシュの大きさがまちまちな点ですが…)

119 :デフォルトの名無しさん:2008/08/01(金) 00:07:24
家庭用機でもメモリに置いといて解凍してVRAMに展開とかはやると思う
この場合はCPUの速度が固定なのでやりやすいとは思うんだが
それでもPCから比べればかなり貧弱でも十分に出来ると思う
もちろんPCの場合はどんなCPUつんでるかは不明だから間に合わないってケースも出てくるだろうけど
それでも大よそのケースで間に合うと思うけどな
どんな絵かはわからんが、20%ぐらいの圧縮率とかにはなるんじゃね?
エフェクトに使うってことで非可逆でも構わないならそれこそかなり圧縮できると思う

120 :デフォルトの名無しさん:2008/08/01(金) 00:23:08
エフェクトならそれこそ3Dで作って2Dで描画しろよ、ってレベルだな

121 :デフォルトの名無しさん:2008/08/01(金) 00:24:31
とりあえず 30fps にするんだ。メモリ消費は半分だ。

122 :デフォルトの名無しさん:2008/08/01(金) 00:28:23
>>120
2Dエフェクトを作るツールの使い勝手の良さ考えると
それと同じレベルのを3Dで作るにはかなり敷居高いと思うが

123 :デフォルトの名無しさん:2008/08/01(金) 00:41:26
>>122
似たようなもんだろ
はじめの選択ミスがひきづってるだけの話でしょ?
次はきっと彼もうまくやれるさ

124 :デフォルトの名無しさん:2008/08/01(金) 00:56:17
>>122
結果的にそれ以上の苦労を実機側でしているのだから意味がない

125 :デフォルトの名無しさん:2008/08/01(金) 01:02:33
エフェクト作ってるのが自分じゃなければ
その苦労は単純に比較できないんでは?

見てる限りだと圧縮で解決する感じがするけど

126 :デフォルトの名無しさん:2008/08/01(金) 01:12:29
いいたくはないけど、仕様のミスだよ、明らかに。
メモリをちゃんと計算しなかったのが原因。

127 :94:2008/08/02(土) 10:09:14
なんていうか、お題だけを考えれば
「大容量のアニメーションをスムーズに再生するには?」
というだけなのに、設計とかを否定するのはどうかと思う。
仕事でゲーム開発してれば、こんな難関はいくらでもやってくる。その度に
プログラマーの強権発動して「仕様的に無理」っていきなり言っちゃうのは
怠慢だと思う。(そして、ある日隣のプログラマーに「○○すれば簡単にできますよ♪」
とか言われて肩身が狭くなっちゃう。)まずは色々考えてみようよ。
どれかで上手くいくかもしれないし。まぁ仕事じゃないけどさw

個人的には>>119の意見を支持。不可逆で圧縮が可能なら楽にいけそう。
ってかこんな展開シェーダー誰かが作ってそう。
キャッシュに頼るなら、事前にその場では使わないヤツを全部解放しておくと
ちょっと親切かも。

128 :デフォルトの名無しさん:2008/08/02(土) 10:22:14
WMVの7ならXP以降は標準搭載されているし、
DVD並の画質なら展開しつつテクスチャに転送しつつ再生しても、
CeleronM程度の型落ちCPUでも問題なく動くが、
お前らはいったい何を気にしているんだ?

129 :デフォルトの名無しさん:2008/08/02(土) 10:25:49
アルファ抜きとかかな

130 :デフォルトの名無しさん:2008/08/02(土) 11:01:33
>>127
でも、会社の職場で
「3Dでやってればもっとたくさん表現できたよね?」
って言われたらどういいわけするの?
いっとくけどデザイナさんにとっては3Dで作ろうが2D作ろうが
あんまり労力は変わらないかもしれないよ
こんなことも提示できないでデザイナさんにひたすら作らせた後
「ごめんなさい、やっぱこの仕様だときついかもしれません」
とかいうの?

こんな不安要素を抱えてしまうぐらいなら安全策をとるべきでしょ
趣味でやってるなら自由にやればいいと思うけど
会社でやったら恨まれますよ〜(みんな表だっては言わないけどねw)

131 :94:2008/08/02(土) 11:32:46
>>130
それはプログラマーとして提言しても決定することはないんじゃない?
表現の仕方や方向性はデザイナーや企画が決めるんではないかと。
会社によって方針(力関係w)が違うだろうから解んないけど。

>>130の言いたいことは良く解る。リスクを抱える開発はプログラマーとしては褒められない。
しかしながら、やりたい事はそれに矛盾する。
「では、できるかどうか検証してみましょう。」
というのが今この場ではないかと、勝手に思ってるんだけども。
もちろん「できない。」と迅速に判断して次にいくのもあり。
「いやいや、方法はあるんでない?」というのが俺の意見。
判断は難しいけどねw

132 :デフォルトの名無しさん:2008/08/02(土) 11:47:51
>>131
そう?
他のゲームはどうなってんだろ?

って解析できるのもプログラマだけだと思うけどね
エフェクトがいるアクション・イベントを3〜4に絞る仕様だってできるわけじゃない?(テイルズ方式)

こんな無理目なことに時間かけてそれに対するリターンはどれほどよ?
って相談までしたんかどうなんか気になるが
まあ、「やってみるけど時間くれる?」まで言ってるならなにもいうべきことはないな
存分に研究してみろ

ただ、決断はしなきゃいけないな
無理なら無理でしっかりいうんだぜ
(もちろんこの期間でこれこれこんなことを試してみたんですけど
試してみた範囲ではこの仕様は実現できませんでした。的なことが必要だ)

と初心者スレだし言ってみるテスト

133 :デフォルトの名無しさん:2008/08/02(土) 12:57:14
やる前に、かかる工数を見積もって(難しいだろうけど)
予算と相談しないとな

134 :デフォルトの名無しさん:2008/08/02(土) 13:37:15
今回の内容は見積もりがどうこう言うほど難しい作業じゃないぞ。
どれだけ技能が低いんだよ。

135 :デフォルトの名無しさん:2008/08/02(土) 13:45:21
そういう考えがスケジュールの遅延を招く。
たとえどんなものでも仕事として発生するなら
ちゃんとスケジュールに組み込んで管理するのが基本。

136 :デフォルトの名無しさん:2008/08/02(土) 14:02:24
能力が低いと見積もりが積もり積もって大変だよな。

137 :デフォルトの名無しさん:2008/08/02(土) 14:05:15
比較対象で出ている、3Dでエフェクト作るっていうのは具体的にはどうやればいいのでしょうか?
モデルにモーション付けてもらってそれを再生するという感じ?
例えば爆発のエフェクトであれば、炎や火の粉をアニメ付きのモデルで大量に表示とかになるのでしょうか?

138 :デフォルトの名無しさん:2008/08/02(土) 14:08:52
能力の高さとスケジュール管理は別のスキルだろう。
仕事が溢れそうならマネージャーに相談して溢れる分を他に振るなり増員なりで解決する。

ギリギリになってからやっぱり終わりませんとか言ってきたらマジで回し蹴りだ。

>>137
ビルボード/パーティクル等など
いくらなんでも1個1個モデル表示なんてしないぞ。

139 :デフォルトの名無しさん:2008/08/02(土) 14:20:54
ビルボードやパーティクルで作るというのは、そういうツールみたいなのがあるのでしょうか?

140 :デフォルトの名無しさん:2008/08/02(土) 14:32:53
そういうツールを作ればよい

141 :デフォルトの名無しさん:2008/08/02(土) 15:15:10
そのツールを作ってデザイナーに使いこなしてもらう手間考えれば・・
とか思ったけど、もしかしてどこでも当たり前にそういうことやってて今更議論するような程でもないってぐらいのことだったりしますか?

142 :デフォルトの名無しさん:2008/08/02(土) 15:24:12
初心者質問スレという意味合いではそんなツール作れるかよ!

プロと言う意味ではPG的にはその程度のツールもないのかよ!
デザイナー的にはその程度のツールも使えないヤツはいらない。

143 :デフォルトの名無しさん:2008/08/02(土) 16:37:33
そして多くの開発ではコンバータを作成し、
バージョン互換を恐れて古いツールを使い続ける。。。

144 :デフォルトの名無しさん:2008/08/02(土) 17:48:58
>>142
仕様はよく考えられてても、UIがコマンドラインだったり、
フォーマットの変更まで考えました、とかいって、
死ぬほど使いづらいツールを作ってきたりする奴もいるからな。

そして、そういうツールに限って不安定。ちょっとテキストファイルに
ゴミ文字が入ってただけで落ちたりしてな。

145 :デフォルトの名無しさん:2008/08/02(土) 18:02:49
>>144
それはツールを作る人間の技量の問題。
その程度のヤツにツールを作らせる人的リソースの不足も問題。

146 :デフォルトの名無しさん:2008/08/02(土) 18:27:25
とりあえずUndoがないツールは糞

147 :デフォルトの名無しさん:2008/08/03(日) 02:02:44
は?んなツール作らなくてもとりあえず
デザイナさんがモデリングした通りに出してみたらどうよ?
適当にボーン入れてアニメーションさせたモデルを加算半透明ではってみりゃ
立派なエフェクトのできあがりっしょ
何に手間かけようとしてんだ
こういうところからプラグイン使えたら便利かなとかそういう考えが浮かんでくるんだぜ
モデリングツールでできることは極限まで活かせよ
まずは、モデルをアニメーションさせるところから説明しないと駄目なほど馬鹿でもないだろ?

こんなところに手間かけてるからお前等苦労ばっかりしてろくなゲーム作れないんだぞ

148 :デフォルトの名無しさん:2008/08/03(日) 02:18:16
モデルでエフェクト作るのも結構手間だと思うけど
既存の2D系のエフェクト作成ツールでエフェクト作って
それ表示って方のがある程度のレベルまでは時間もかからずに合理的だと思うんだが
個人で作ったショボイツールなんぞよりも何倍も良いものできると思うぞ
最終的に出来ることが3D>2Dだとしても
そこまで行かなければ、使いやすいツールのある環境のがいいものできると思う

それに気の利いたパーティクルツールなんてどこにでもあるようなものとは思えないが
上で出てた爆発みたいなのって爆発のパターン絵描きが書いてプログラマが適当に飛ばして終わりってのが多いんじゃね?
その上で初心者スレってこと踏まえれば
この方法って間違いとかとは全然思えないんだが

>>142
デザイナーにとっては使いこなすに値するツールかどうかだろう
これはプログラマーの次第だと思う

149 :デフォルトの名無しさん:2008/08/03(日) 08:19:52
>>148
3Dで爆発なんてそれっぽいもやもやを拡縮するだけで終わりってのも考えられるんじゃね?
しかもそれはモデリングのアニメーションで設定できる話で
プログラマはそれを再生すれば終わりでしょ?
だからこれはアニメーションモデルの再生でしかないと思うんだけど?
3Dの何が手間なの?
勝手な想像で手間だと思ってるだけじゃない?

150 :デフォルトの名無しさん:2008/08/03(日) 15:51:26
>>149
旧世代のキノコの成長の早回しです、
みたいなドン臭い爆発だったらプログラマーの負荷は少ないけど、
パーティクルを使って云々ってやってると結構めんどくさいよ。

151 :デフォルトの名無しさん:2008/08/03(日) 17:21:22
>>150
そうか?
それもモデリングツールにちょちょっと細工して
モデルのアニメーションで出るようにしたら終いな話でしょ?

3Dで苦しくなるような想定ばっかしててもしょうがないと思うんだけど?

152 :デフォルトの名無しさん:2008/08/03(日) 17:32:14
まぁゲーム内容次第だべ。
CoD4の手榴弾みたいなリアルな爆発が欲しい時と
GCのゼルダみたいなアニメ調のが欲しい時では話が違うんだし。

153 :デフォルトの名無しさん:2008/08/03(日) 17:39:46
大抵モデリングツールからの出力をそのままだしゃいいのに
くっだらないイレギュラー想定して発言を潰す作戦ですか?

154 :デフォルトの名無しさん:2008/08/03(日) 17:58:19
それらのやり方にパーティクルイリュージョンほどの使い勝手があるとは思えないんだけど

155 :デフォルトの名無しさん:2008/08/03(日) 18:26:19
>>151
パーティクルやったこと無いんじゃない?

156 :デフォルトの名無しさん:2008/08/03(日) 19:42:54
>>155
あるある
うちのモデリングツールのプラグインに吐き出す奴あるもん

テクスチャアニメーションで粒子を表現するタイプと
頂点シェーダで吐き出してくれるタイプがあるよ

どっちもモデルのアニメーション扱いでいけるようになってる

157 :デフォルトの名無しさん:2008/08/03(日) 19:47:42
手間がかからず実装できるとかじゃなくて会社にあるツール自慢を初心者スレでされても・・・

158 :デフォルトの名無しさん:2008/08/03(日) 19:57:35
市販のツールを使うのが一番簡単なわけだが

159 :デフォルトの名無しさん:2008/08/03(日) 19:58:00
それぞれの環境を試したこと無い人達が自分達の方が楽とかいうのはどうなの?
2Dやってる人は、モデルデータからエフェクト作ってみなよ
3Dやってる人は、パーティクルイリュージョンとか使ってみなよ

160 :デフォルトの名無しさん:2008/08/03(日) 20:02:56
>>159
ないならないで仕様を固定すればやりようはいかようにもある
ただ、その方法を挙げても別のイレギュラー的例を挙げて
そういう案を潰すことばっかりさっきからしてるじゃん

それじゃなんにも進まんと思うのよね
だから2Dで全部アニメーション・・・みたいな馬鹿な選択肢を選んじゃうわけでさ

もっと現実的な話を考えたらぶっちゃけ3Dしか道はないのは誰の目にも明らかで
2Dゲーがなくなっちゃった理由はまさにメモリ使用量に対する表現力の貧弱さなので
あってこんなところ問題じゃないように思うんだけどどう?

161 :デフォルトの名無しさん:2008/08/03(日) 20:08:54
だからこういう問題にぶち当たる前にするべきなのは技術的な話じゃなくて
あくまでも仕様の固定化なんだよね

ってのはもうずいぶん前に学習した
どんな開発であっても汎用ツールを作ってはならない

まずこういう問題にぶちあたってしまったら
その時点ですでにゲームオーバーな状態にあるわけで手遅れなんだよね
プログラマとしての腕を見せる前にこういう問題を起こしてしまうプログラマってのは
社会人としてすでに駄目な場合が多い

作るときにたくさん疑問がでて細かい警告をいくつも見つけてたのにも関わらず
誰にも相談しないで勝手に想定して勝手に自爆してしまっているんだよね

って初心者スレで過去の自分を振り返って語ってるテスト

162 :デフォルトの名無しさん:2008/08/03(日) 20:13:17
>>160
いや勝手に色々と決め付けてその案を潰そうとしてるのはお前の方だと思うんだ
それに対して2Dって選択肢は間違いでもないだろって話であって
今回のだって圧縮のやりようで許容範囲でしょ

163 :デフォルトの名無しさん:2008/08/03(日) 20:16:37
時間も金も無限にあるわけじゃないんだから、必ずしも毎回ベスト目指せるような環境とは限らん
あーこれ駄目だよな、とか思いながら騙し騙しやっていくもんじゃないだろうか?

164 :デフォルトの名無しさん:2008/08/03(日) 20:22:47
今時ならGPGPUでデータのリアルタイム解凍しながら描画とか出来るしな。

165 :デフォルトの名無しさん:2008/08/03(日) 22:10:27
>>156
テクスチャアニメーションで粒子を表現って普通のパラパラアニメじゃないの?
頂点シェーダではき出すって、頂点シェーダのプログラムをはき出すの?


166 :デフォルトの名無しさん:2008/08/03(日) 22:12:12
>>164
GPU 周りが GPGPU を使えるほど余裕があるようなシチュエーションってそんなにあるか?

167 :デフォルトの名無しさん:2008/08/03(日) 23:08:26
>>166
3Dゲームだとぶっちゃけない。
ただ2Dでパラパラアニメするって言ってるんだから
殆どGPU使わないような2Dゲーなのかと思っただけ。

168 :デフォルトの名無しさん:2008/08/04(月) 01:30:50
>>162
>今回のだって圧縮のやりようで許容範囲でしょ
じゃ、やれば?
ただ、3Dだったらもっとよくなったかもねw

169 :64:2008/08/04(月) 03:41:04
ものすごい議論が進んでしまっているようで
なんだか割り込んでしまう形になってしまうのですが、一応報告を…

あ、ちなみに今回のは学校の友達と一緒に作っているようなレベルで
高価な機材やソフトとかも全然無い状況なのです。
なので締切りも無く、時間が限られてるわけでもなかったりします。

なので、とりあえず3Dでやってみることにしました。
今までDirectDrawしか触ってなかったもので、3Dには正直疎いのですが
これを機に勉強してみることにしました。

圧縮やフレーム数の削減なども考えたのですが、
これを機に3Dにも手を出してみることにします。
(アニメ調のものもあるので、表現しきれるかはわかりませんが…)

相談に乗ってくださってありがとうございました!

170 :デフォルトの名無しさん:2008/08/04(月) 14:37:05
お互い相手の良い所が見えてない生き物が自己主張してるだけなので
この話題はこの後もグダグダ続く。
適当に教わったことにして話題を切り上げた>>64は優秀。

171 :デフォルトの名無しさん:2008/08/04(月) 23:20:29
切り上げたのに余計な蛇足つけんでも(笑)

172 :デフォルトの名無しさん:2008/08/05(火) 14:56:26
directXで背景が3Dの2DSTGを作ろうと思ってるんですが。

DXライブラリの様にクライアント領域左上が(0,0)で座標の管理がしたいんですが
どういった関数郡を使えば良いんでしょうか。

DXライブラリとdirectXの両方で使おうとおもってDXライブラリの設定にしたら
directXでプログラムしたところがエラー吐いてどうすればいいのか。

DXライブラリで出来るということは元のdirectXで出来ると考えて良いんですよね?

どなたか助言頂けると幸いです。

173 :デフォルトの名無しさん:2008/08/05(火) 15:15:01
3D描画も左上(0,0)にしたいのか?
2D描画のみでいいなら楽だが

174 :デフォルトの名無しさん:2008/08/05(火) 15:19:47
レスありがとうございます。

3Dの部分を描画した後2D部分を描画すれば問題なさそうなので
2D部分のみでも良い方法があったら是非教えて頂きたいです。

175 :デフォルトの名無しさん:2008/08/05(火) 15:28:45
関数群ってよりかカメラの設定かな。
DirectXならD3DXMatrixOrthoOffCenterLHを使うと、
物体を遠くに置いても小さくならない。座標を2D画面の様に使える。
詳しく知らないけどDXライブラリで出来ることはDirectXでできると考えて問題いと思うよ。
ただ、共存はどうだろう?俺がライブラリ作者なら勝手に内部数値変えといて後でバグ報告されるとたまらんから、
非推奨、自己責任でってするけど。

176 :デフォルトの名無しさん:2008/08/05(火) 15:29:33
射影行列変換に
D3DXMatrixOrthoLHを使う(引数wとhはウインドウサイズ)
座標変換済み頂点の板ポリで2D描画する

177 :デフォルトの名無しさん:2008/08/05(火) 15:31:09
DXライブラリは使ったことがないので知らんが、
3D座標上の特定の奥行きをスクリーン座標に合わせるのであれば、
奥行きと視野角から行列を逆算すればいい。

178 :デフォルトの名無しさん:2008/08/05(火) 15:57:53
おお、こんなにレスが、、ありがとうございます。

カメラの
D3DXMatrixLookAtLH を D3DXMatrixOrthoOffCenterLHに

射影変換の
D3DXMatrixPerspectiveFovLH を D3DXMatrixOrthoLHにでいいんでしょうか?

とりあえずやってみたら板ポリゴンも何も表示されなくなってしまいました。

179 :デフォルトの名無しさん:2008/08/05(火) 16:01:55
とりあえず該当箇所は現状こんな感じでプログラムしてました。

//ビューマトリックスの設定
VOID ViewMatrix(LPDIRECT3DDEVICE9 theDevice) {
D3DVIEWPORT9 vp;
if(FAILED(theDevice->GetViewport(&vp))) {
return;
}

// アスペクト比の計算
float aspect;
aspect = (float)vp.Width / (float)vp.Height;

// 初期化
D3DXMatrixIdentity(&m_proj);
// 射影マトリックスを作成
D3DXMatrixPerspectiveFovLH(&m_proj,
D3DXToRadian(45.0f), // カメラの画角
aspect, // アスペクト比
1.0f, // nearプレーン
1000.0f); // farプレーン
//ここにD3DXMatrixOrthoLH(&m_proj,640,480,0,0);?
// マトリックスをレンダリングパイプラインに設定
theDevice->SetTransform(D3DTS_PROJECTION, &m_proj);
}

180 :デフォルトの名無しさん:2008/08/05(火) 16:02:26
//カメラの設定
VOID Camera(LPDIRECT3DDEVICE9 theDevice) {
D3DXMatrixIdentity(&m_view);
D3DXMatrixLookAtLH(&m_view, &D3DXVECTOR3(0.0f, 0.0f, -50.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
//ここにD3DXMatrixOrthoOffCenterLH(&m_view,0,640,0,480,0,0);?
theDevice->SetTransform(D3DTS_VIEW, &m_view);
}

181 :デフォルトの名無しさん:2008/08/05(火) 16:22:53
D3DXMatrixLookAtLHは変えなくていい
D3DXMatrixOrthoLHにnearプレーンとfarプレーンが設定されてない
D3DXMatrixOrthoLH(&m_proj,640,480,1,1000);

182 :デフォルトの名無しさん:2008/08/05(火) 16:42:05
出来ました、この場合だと中心が0.0になるんですね。
でもこれでかなり理想に近い状態になりました。

本当にありがとうございました、皆様に追いつけるよう頑張ります、、、

183 :デフォルトの名無しさん:2008/08/05(火) 16:51:47
だから座標変換済み頂点を使えと
D3DFVF_XYZRHWか
D3DDECLUSAGE_POSITIONTでぐぐれ


184 :デフォルトの名無しさん:2008/08/06(水) 15:13:11
WinXPで(D3D10を使用しないで)、最新GPUのリソースをフルに使うには
どういう選択肢がある?
nVidiaならCUDA?
ATiは?

185 :デフォルトの名無しさん:2008/08/06(水) 16:16:13
directXのカメラの原点を一時的に移動するにはどうしたらいいでしょうか。
(0,0,0)にある原点を(30,0,0)に移動して描画した後また(0,0,0)に戻したりしたいのですが。

186 :185:2008/08/06(水) 16:23:08
言葉で上手く表せないので絵にしてみました。
ttp://hishou.ddo.jp/~bbs/up/img/up084.jpg

187 :デフォルトの名無しさん:2008/08/06(水) 20:08:10
文字通りカメラの原点を移動して戻せばいいんじゃね?

188 :デフォルトの名無しさん:2008/08/06(水) 20:41:47
そのやり方がわからなかったんですけど、うんこしてる間に自己解決しました。

189 :デフォルトの名無しさん:2008/08/07(木) 00:19:27
>>184
ビデオカード毎に全部作る気概があるの?
そうでないならシェーダーでよくね?

190 :デフォルトの名無しさん:2008/08/07(木) 07:08:44
GPUの性能をフルに引き出すのが目的なのか、
何らかの目的のためにGPU性能を引き出したいのか・・

191 :デフォルトの名無しさん:2008/08/07(木) 07:42:46
GPUの性能なんて、フルに引き出したら発熱量が増えるだけじゃん。

192 :デフォルトの名無しさん:2008/08/08(金) 00:55:42
ちょっと疑問なんですが。

winapiのタイマーで10mscに1回WM_TIMERを送ってrenderを呼んでるんですが
10mscの間にrenderの処理が終わらなかったら処理はどうなるんでしょうか?

処理ののコマ抜けみたいなのが起きたりするんじゃないかと不安なんですが。
変数ループで1から100の間の50ループ目だけ飛んだり。

ちなみにリフレッシュレートはD3DPRESENT_RATE_DEFAULTで固定してます。
これってリフレッシュレートに合わせて描画してると考えて良いんですよね?

だとすると尚更メッセージループとの誤差が生じるんでは内科と心配なのです。

193 :デフォルトの名無しさん:2008/08/08(金) 01:07:52
処理し終わってから次のWM_TIMERが来る

194 :デフォルトの名無しさん:2008/08/08(金) 02:32:27
タイマーが10msに一度やってくるとでも思ってるのだろうか

195 :デフォルトの名無しさん:2008/08/08(金) 10:00:49
サンタが街にやってきた

196 :デフォルトの名無しさん:2008/08/09(土) 12:25:47
CとC++の勉強が一通り終わったのでDirectXのグラフィックについて勉強しようと思うのですが
WIN32APIを極めないで勉強するのは無謀ですか?
少しだけ勉強したのでWIN32APIの基礎ならわかります。

197 :デフォルトの名無しさん:2008/08/09(土) 12:29:35
>>196
極めてる人はそういないと思うよ
いつまでたってもヘルプ見ながら書いている俺


198 :デフォルトの名無しさん:2008/08/09(土) 12:31:02
窓開いてHelloWorld出せる程度でとりあえずは十分

199 :デフォルトの名無しさん:2008/08/09(土) 12:37:35
>>197 >>198
なるほど〜。
C言語に比べて覚えることが多すぎてちょっとびっくりしていましたw
アドバイスありがとうございました!

200 :デフォルトの名無しさん:2008/08/09(土) 14:45:56
>>199
そりゃぁあんた、「日常会話を英語でする」のと「代数幾何を英語で学ぶ」のとででは必要な知識が桁違いに決まっているだろ。

201 :デフォルトの名無しさん:2008/08/09(土) 14:56:11
独自フォーマットの3Dモデルデータを描画しようとしています。
1つのメッシュで2つ以上の物体が離れて存在する場合、
D3DPT_TRIANGLESTRIPの設定で1回で描画するのは無理なのでしょうか。
エラーが出るわけでは無いのですが、物体が離れているメッシュを描画すると1つの三角形が橋渡しのように表示されます。
D3DPT_TRIANGLELISTだと必要な頂点数がかなり増えるため使用は控えたいです。

Xファイルでは1つのメッシュをDrawSubsetで描画できていますし、頂点の並び方に法則があったりでもするのでしょうか。


202 :デフォルトの名無しさん:2008/08/09(土) 14:57:30
そうなるように頂点データを構築すればいい。以上。

203 :デフォルトの名無しさん:2008/08/09(土) 14:58:42
ちなみにDrawSubset()は中でD3DPT_TRIANGLELISTを使ってDrawIndexedPrimitive()を呼んでいる。

204 :デフォルトの名無しさん:2008/08/09(土) 15:10:29
縮退三角形でググってみ。

205 :デフォルトの名無しさん:2008/08/09(土) 15:26:52
>D3DPT_TRIANGLELISTだと必要な頂点数がかなり増えるため使用は控えたいです。
なんでインデックスを使わずに、効率の悪い方法を選ぶんだ?

206 :デフォルトの名無しさん:2008/08/09(土) 16:12:50
インデックスにしてもストリップのほうが3分の2から半分ぐらいになるから自前ならストリップにするほうがいいけどね。
別に数kb増えたところでどうってことはないけど物量で勝負するアプリなら恩恵は受けられるんじゃないかな。

207 :デフォルトの名無しさん:2008/08/09(土) 16:16:05
nVIDIA先生も言ってるがキャッシュ効率を考えたら最速はリストだろう。

208 :デフォルトの名無しさん:2008/08/09(土) 16:17:57
いやTRIANGLELISTと比べてってことでしょ
どうでもいい話だが。


209 :デフォルトの名無しさん:2008/08/09(土) 16:24:47
速度や効率を考えたらどう考えてもストリップの出番はない

210 :デフォルトの名無しさん:2008/08/09(土) 20:32:57
確かにな
踊り終わるまで待ってるのダルイ・・・・

211 :デフォルトの名無しさん:2008/08/10(日) 10:34:21
あれ。インディックスのストリップってないんだっけ?

212 :デフォルトの名無しさん:2008/08/10(日) 11:29:33
あるけどインデックス使うならリスト使った方がいいだろ。

213 :デフォルトの名無しさん:2008/08/10(日) 11:43:18
場合によりけりだけど複数描画するならリストで1回ならストリップのほうがいいかな。
検証用の単純なものであればリストが有利だけど
かなり組みあがっているアプリの所々ストリップに直したらCPU/GPU負荷が平均で5%ほど下がった。

214 :デフォルトの名無しさん:2008/08/10(日) 11:59:39
自作のスキンメッシュデータをインデックスのストリップとリストに相互変換するプログラムを組んでみたが、
リストの方が確実にFPSが上昇した。

215 :デフォルトの名無しさん:2008/08/10(日) 12:01:25
名前が緑になるんですが 青にはどうすればなれますか?

216 :デフォルトの名無しさん:2008/08/10(日) 12:04:18
光の波長を変える

217 :デフォルトの名無しさん:2008/08/10(日) 14:52:13
>>213,214
モデルの形状も影響するんじゃなかろうか。
ストリップをぶつ切りにする必要のある形状だと当然効果は薄いし、
なるべく法線の近いもの同士でストリップを繋ぐと、
陰面消去の時に効率が上がる場合がある。
メッシュでどこまでやってくれているか解らないけど、
ストリップを繋ぐアルゴリズムって奥が深いらしい。

218 :デフォルトの名無しさん:2008/08/10(日) 15:03:06
奥が深いというより本気で最適化しようとするとロジックが複雑になるというだけの話。
そんな状況でメリットが全く見えない。

219 :デフォルトの名無しさん:2008/08/10(日) 15:06:13
縮退なしで書けるなんて状況まずないからな。
いちいち反転するからCPUでコリジョンとる時とか面倒だし。

220 :デフォルトの名無しさん:2008/08/10(日) 15:12:37
そもそもモデリングデータをストリップで吐き出すデータ形式を見たことがない。
データを読み込んだ後にわざわざストリップに変換しているライブラリを見たことがない。

ちまたで見かけるのは平面を書くだけの単純なサンプルで、
インデックスを使わずにストリップのみで構成している、
まともに組むときには書かないようなダメソースぐらい。

221 :デフォルトの名無しさん:2008/08/10(日) 17:00:24
半透明とかストリップだときつそうだし、いろいろ細かい部分が面倒。
UVの割れとかも考えると、効率的にもそんなに変わらない気がする。
のっぺりテクスチャ無しの球でテストしてるときとは違うし。

222 :デフォルトの名無しさん:2008/08/10(日) 17:28:46
インデックスリストはGPUの頂点キャッシュアルゴリズム依存という問題はあるが、
淘汰されて4社しか残ってない今となってはどうでもいいな。

223 :デフォルトの名無しさん:2008/08/10(日) 19:46:57
>>222
GPUの頂点キャッシュアルゴリズム依存度よりも、
ユーザーの財布依存度の方が高いから。

224 :デフォルトの名無しさん:2008/08/12(火) 03:36:47
バックバッファについて教えてください。
1.アプリ毎に専用のバックバッファを持つんですか?
2.窓モードのバックバッファのウィンドウ外の領域は何も描画されていないんですか?窓サイズ変更時にバックバッファサイズも変更される?
3.窓モードで、ディスプレイに表示されている画像は全てのバックバッファを重ねたものと言うことですか?


225 :デフォルトの名無しさん:2008/08/12(火) 04:45:59
ちょっと描画するくらいなら既存のバックバッファ使った方が良い?
新しいバックバッファを追加するコストが知りたい

226 :デフォルトの名無しさん:2008/08/12(火) 08:08:29
効率なんて実装方法によって子となるんだから、自分で作って最適解を見つけろよ。
知りたいなら試せ。

227 :デフォルトの名無しさん:2008/08/12(火) 11:10:25
>>224
1.そうだ
2.そうだ
3.違う 1つだけだ

>>225
そうだ
バックバッファいじらないならデフォのまま使うんだ

228 :デフォルトの名無しさん:2008/08/12(火) 13:07:36
>>224
アプリ毎に持ちます

バックバッファの大きさは任意です。窓の大きさとは関連しません。
まぁデフォルトの窓の大きさ(たとえばゲームなら640x480とかね)と一致させるのが一般的。

窓の大きさを変えるたびにバックバッファの大きさを変えるのはあまりないんじゃないかね
窓が大きくなったら、バックバッファから窓への転送時に拡大する

ディスプレイも1つバックバッファを持っている。
アプリが自分の窓へ描画=ディスプレイのバックバッファへの描画

229 :デフォルトの名無しさん:2008/08/12(火) 13:25:22
ツールとかでドラッグで大きさ自在に変えるような場合は
デスクトップと同じサイズで作って窓の大きさ分を左上に描画して使ってるな。
サイズが変わるたびに作り直すのは流石に無茶。

230 :デフォルトの名無しさん:2008/08/14(木) 01:37:02
スタート画面にクリックしたらそれぞれのシーンへ飛ぶボタンを表示させたいのですが
何か良い方法は無いでしょうか?

231 :デフォルトの名無しさん:2008/08/14(木) 01:49:16
スタート画面をクリックする前はボタンを描画しないで、
スタート画面をクリックした後はボタンを描画すればよい

232 :デフォルトの名無しさん:2008/08/14(木) 17:29:06
スレの主旨から言ってDirectXで、という話だと思うけど
DXUTが一番楽なのでは。
後はイルリヒトとかコンポーネントっぽいのが入ってた気がする。
ダイアログを置いてオーナードローでDirectX描画っつー手もあるけど
多分、面倒臭いと思う。

233 :デフォルトの名無しさん:2008/08/17(日) 05:45:47
質問です

スペースキーを押したらゲーム本体が始まる様にしたいのですが
実行するとキーの状態を取得せずにいきなりゲーム本体が始まってしまいます
どうすれば最初にスタート画面を表示し続けれるのでしょうか?

スタート画面処理
{
  if ( GetAsyncKeyState(VK_SPACE) & 0x8000 ){
スタート画面を描画する
}
}

while(1){
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
〜略〜
}else{
スタート画面処理
ゲーム本体
Sleep(1);
}
}

234 :デフォルトの名無しさん:2008/08/17(日) 08:14:20
何と言う糞設計

DirectX関係ないし

235 :233:2008/08/19(火) 10:23:26
>>234
は?黙れ

236 :デフォルトの名無しさん:2008/08/19(火) 10:27:09
いやでもDirectX以前の話。
そこまでひどいとどこから説明していいのか途方にくれるわ。

237 :233:2008/08/19(火) 10:33:45
なんだよ つかえねーな

238 :デフォルトの名無しさん:2008/08/19(火) 11:11:24
 if ( GetAsyncKeyState(VK_SPACE) & 0x8000 ) なの?

239 :デフォルトの名無しさん:2008/08/19(火) 19:26:21
アドバイスのしようがないほどのソースは久しぶりに見た。
まずはメインループを書ける様になってからだ。

240 :デフォルトの名無しさん:2008/08/19(火) 20:02:05
「DirectXゲームグラフィックスプログラミング」の他にDirectXの基礎事項を勉強できるおすすめの本はありますか?

241 :デフォルトの名無しさん:2008/08/20(水) 00:49:17
if ( (GetAsyncKeyState(VK_SPACE) & 0x8000) == 0 ) でイインジャネ?

242 :デフォルトの名無しさん:2008/08/20(水) 09:59:44
入力待ちしないものでいくら判断したって押されてなけりゃそのまま通過するだけだろうが。

243 :デフォルトの名無しさん:2008/08/20(水) 15:43:01
if (GetAsyncKeyState(VK_SPACE) & 0x8000)
else if ( (GetAsyncKeyState(VK_SPACE) & 0x8000) == 0 )

244 :デフォルトの名無しさん:2008/08/20(水) 20:19:13
ひどいソースわろた

245 :デフォルトの名無しさん:2008/08/20(水) 21:57:09
常にスペース押しとけばいつか動くさ

246 :デフォルトの名無しさん:2008/08/23(土) 00:32:29
DirectShowの質問です。

ムービーの動画をテクスチャに移して加工した上で表示させたいと思い、
ネット上のサンプルを読み漁ってとりあえず組んでみたのですが
以下の疑問点が発生しました。
どなたかわかる方が居ましたら、答えていただければありがたいです。

1. ムービーファイルの画像を「1枚ずつ」「任意のタイミングで」取得する方法はありますか?
 現在のコードでは、DirectDrawに再生させておいて
 描画時にテクスチャを取得して再生する、という構造になっています。
 おそらく別のスレッドで再生させているのだとは思いますが
 このシステムでは、負荷でメインスレッドのFPSが落ちた場合などに
 当然ながら同期のズレが発生してしまいます。
 (動画とメインループのフレームの比率が変化してしまうため)
 アプリ側から任意のタイミングでフレームを進めることはできますでしょうか?
 
2. 実際に再生させるルーチンまでは作れたのですが
  動画ファイルの読み込みに250msほど時間がかかってしまいます。
  特にIGraphBuilderのRenderFileメソッドが非常に重く、
  ここだけで200ms持って行かれてしまいます。
  これはムービーファイルを再生する上で回避できない時間なのでしょうか?
  ちなみに、ムービー形式はサンプルに沿ってwmvを使用しています。

DirectShowというと、マイナーでネット上のサンプルも少ないというイメージで
触っている人が少ないかもしれないかと思うのですが、わかる方が居ましたら
よろしくお願いいたします。

247 :デフォルトの名無しさん:2008/08/23(土) 00:34:11
ここまで書いてふと思ったのですが、
DirectShowなどに頼らずに自分で動画をデコードするような
コードを書いたほうが早いのでしょうか…
再生する形式はwmvなりmpegなり1形式に絞れるので。

248 :デフォルトの名無しさん:2008/08/23(土) 10:01:06
ム板かマ板にDirectShowと戦うスレがあったはず
DirectShowがDirectXから切り離されてひさしいので
そっちで聞いたほうがいいかと

249 :デフォルトの名無しさん:2008/08/23(土) 12:36:26
ありがとうございます。

この板にDirectShowと戦うスレ Part 4というスレがあったので
そちらで再度質問してみることにします。

250 :デフォルトの名無しさん:2008/08/24(日) 17:50:09
テクスチャフィルタをポイントに設定するにはどうすれば良いでしょうか?
現状はバイリニアのかかったような少しぼけた画像が
表示されてしまいます。
SetSamplerStateでポイントサンプリングに設定しても変わりませんでした

251 :デフォルトの名無しさん:2008/08/24(日) 20:40:46
交差している半透明のポリゴンを正しく表示するにはどうしたら良いでしょうか?

252 :デフォルトの名無しさん:2008/08/24(日) 21:11:17
交線でポリゴンを切り分ければ良し

253 :デフォルトの名無しさん:2008/08/24(日) 23:59:52
質問いいですか?テクスチャのピクセルを取得しようとしています。

D3DXCreateTextureFromFileEx(
pd3dDevice, L"pattern.bmp", 64, 64, 1, D3DUSAGE_DYNAMIC, D3DFMT_X8R8G8B8,
D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &texPattern);

// テクスチャ情報取得
D3DSURFACE_DESC desc;
texPattern->GetLevelDesc(0, &desc);

// テクスチャをロック
D3DLOCKED_RECT lockrect;
texPattern->LockRect(0, &lockrect, NULL, 0);
DWORD* ptr = (DWORD*)lockrect.pBits;

DWORD pixel_color=0x0;
short getx=10;//取得したいピクセル
short gety=10;//取得したいピクセル

254 :デフォルトの名無しさん:2008/08/25(月) 00:00:10
if (0<=x && x<(short)desc.Width){
if (0<=y && y<(short)desc.Height){
pixel_color=ptr[getx+gety*(short)desc.Height];
}
}

texPattern->UnlockRect(0);

short color_r=(pixel_color>>16)&0xFF;
short color_g=(pixel_color>> 8)&0xFF;
short color_b=(pixel_color )&0xFF;

上のプログラムで正確な色が取得できません。
指定するピクセルによって違う値が返ってきているので、
きちんとテクスチャを参照してはいると思うのですが。

どうか教えてください。よろしくお願いします。

255 :デフォルトの名無しさん:2008/08/25(月) 06:28:58
pixel_color=ptr[getx+gety*(short)desc.Height];
これを直すといいかもしれない
うそいったらごめん

256 :デフォルトの名無しさん:2008/08/25(月) 08:41:11
>>253
サーフェスの横幅は、D3DLOCKED_RECT構造体のPitchを参照しないと駄目。
パディングでdesc.Widthと一致しない場合がある。

257 :デフォルトの名無しさん:2008/08/25(月) 12:27:09
つーか、desc.Height掛けてどうするよ。

258 :デフォルトの名無しさん:2008/08/25(月) 15:56:26
>>255
具体的にどう直せばいいのか教えてもらえると助かります。

>>256
Pitchのほうですか?
あれは余計なところまで含めたものらしいんで使えないはずです。
試してもらえばわかりますが、Pitchのところまで表示させるとゴミが出ますよ。

>>257
yは縦ですからHeightでしょう、高さという意味ですし。


259 :デフォルトの名無しさん:2008/08/25(月) 16:05:38
>>255,257見てもうちょっと考えろよ

260 :デフォルトの名無しさん:2008/08/25(月) 16:07:59
DirectX以前だな。

・ぼーるがたてに5つよこに4つならんでいます。
・ぼーるをひだりうえからいちだんずつよこにじゅんばんにばんごうをつけることにしました。
・いちばんひだりうえが0で、いちばんみぎうえが3です。
・みぎはしまできたのでいちだんさがってつぎのだんのひだりはしが4になります。
・いかどうようにばんごうをつけるといちばんみぎしたは19になります。

さて、ひだりから0からかぞえて2ばんめ、うえから0からかぞえて3ばんめのぼーるはなんばんでしょうか。
けいさんしきがわからなかったら、えにかいてみるといいですよ。

261 :デフォルトの名無しさん:2008/08/25(月) 16:13:49
Q. 3Dプログラミングに行列等、数学の知識は必要か
A. 掛け算程度は出来ないとお話になりません

>258
算数からやり直せ

262 :デフォルトの名無しさん:2008/08/25(月) 16:29:40
正方形ならうまくいったのになw

263 :デフォルトの名無しさん:2008/08/25(月) 16:34:37
>>258は質問者を騙った釣りだろう
sageてるし
内容があからさまに釣りだし

264 :デフォルトの名無しさん:2008/08/25(月) 17:14:33
質問です
布シミュに手を出して満足のいくものができたので、次は髪の毛にいこうかと思っています。
布シミュは「布シミュ」や「クロスシミュレーション」でうまく資料を探せたのですが、髪の毛はうまく資料をぐぐれません。

何か良いキーワードか、ページを教えていただけないでしょうか
よろしくお願いします

265 :デフォルトの名無しさん:2008/08/25(月) 21:35:38
3DのRPGを作ろうと思っているのでDirectXを勉強しようと思ったのですが
数学や物理の知識が必要と聞いたので
三角関数・ベクトル・行列を一通り勉強したのですが
他にやっておいたほうがいい分野はありますか?

ゲーム開発のための数理学物理学入門は一通り理解しました

266 :デフォルトの名無しさん:2008/08/25(月) 21:39:36
RPGってどんなのを作るつもりかわからんけど
3Dの知識以前にゲーム製作の総合的な知識が必要になると思うぞ
3Dの部分についてはとりあえず作り始めちゃって問題が出たらその都度調べればいいと思う


267 :デフォルトの名無しさん:2008/08/25(月) 21:41:26
>>266
アドバイスありがとうございます

268 :デフォルトの名無しさん:2008/08/25(月) 23:03:00
質問があります。
ATL/WTLにてDirectXを扱うにはどの様にしたらよいのでしょうか

クライアント領域を別のビュークラスで定義しサブクラス化しており、色々調べたところ
ビュークラスのHWNDを渡してしまうとCreateDeviceが通らないためウィンドウのHWNDで初期化し、
Render関数にて引数にCDC*を取り

LPDIRECT3DSURFACE9 pSuf = NULL;
m_pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pSuf);

上記でバックバッファを取得し、

pSuf->GetDC(pdc->m_hDC);

とビューのHDCとバックバッファのHDCを関連づける方法にたどり着いたのですが、
Clearすら通りません。
問題のあるところを指摘していただけないでしょうか。

269 :デフォルトの名無しさん:2008/08/25(月) 23:07:25
最強の同人ソフトウエアーを作るにはどのグラボを買えばOKでしょうか?

270 :デフォルトの名無しさん:2008/08/25(月) 23:20:07
>269
Intelのオンボード

271 :デフォルトの名無しさん:2008/08/25(月) 23:21:15
>268
>ビュークラスのHWNDを渡してしまうとCreateDeviceが通らないため
普通に通るぞ

272 :デフォルトの名無しさん:2008/08/25(月) 23:41:55
あれ、ほんとだ。
初期化関数に渡すハンドルをクライアントのに変えただけであっさり通りました
むしろ何故以前は通らなかったのか……

いずれにせよ前に進めました。ありがとうございます。

273 :デフォルトの名無しさん:2008/08/26(火) 08:20:34
DirectX9.0cなのに「診断ツール」がありません・・・
どうやったらdxdiag.exeをインストールできますか?

274 :デフォルトの名無しさん:2008/08/26(火) 09:46:50
dxdiag.exeはDirectXのドライバ入れたら(=ビデオカードがあれば)
Windowsに入ってると思うが。

275 :273:2008/08/26(火) 11:23:20
Cドライブでdxdiag.exeの検索かけても何処にも無い位は実行済み
更新しようとしても「最新だからインストール必要なし」と表示されます

276 :デフォルトの名無しさん:2008/08/26(火) 11:36:26
ファイル名を指定して実行、とか、Windows\system32の中、とか無いの?
今まで無かったためしがないのでないという状況がよくわからん。

277 :デフォルトの名無しさん:2008/08/26(火) 12:00:56
DirectXを学ぶときって関数を暗記する必要ありますか?

278 :デフォルトの名無しさん:2008/08/26(火) 12:47:42
>>277
暗記してもすぐ仕様が変わるから無駄


279 :デフォルトの名無しさん:2008/08/26(火) 15:35:54
暗記する必要はないが、どんな関数があるかくらいは一度全部
目を通した方がいい。

280 :デフォルトの名無しさん:2008/08/26(火) 16:47:25
パソコンのDirectXバージョンがDirectX10で
製品の動作機種がDirectX9対応グラフィックでは正しく使えるのでしょうか?
それともDirectXというのは同じバージョンでしか対応しないものなのですか?

281 :デフォルトの名無しさん:2008/08/26(火) 16:58:16
>>280
10以下のはすべて使えると思う


282 :デフォルトの名無しさん:2008/08/26(火) 21:56:47
>>281
回答ありがとうございます


283 :デフォルトの名無しさん:2008/08/26(火) 23:03:10
とりあえず280GTXってのを買ってきました。これでコミケに出れます。

284 :デフォルトの名無しさん:2008/08/26(火) 23:06:12
今からDirectXの勉強を始めようと思うのですが
入門書としてDirectXゲームグラフィックスプログラミングVer2.1
を買いました。

DirectXGraphicsの初期化などは暗記して見ないで打てるようにしたほうがいいですか?

285 :デフォルトの名無しさん:2008/08/26(火) 23:10:38
初期化なんかゲーム1本につき1回しか書かないから、ちゃんと動くの1回書けたら忘れていいよ

286 :デフォルトの名無しさん:2008/08/26(火) 23:10:39
なんか暗記とか数学どこまで勉強とかって・・・
日曜プログラマならみんなコピペでいいよ
コピペで駄目になってから考えろ

287 :デフォルトの名無しさん:2008/08/27(水) 01:11:50
みんなでコピペした結果がこれだよ!

http://www.watch.impress.co.jp/game/docs/20070927/wv.htm

288 :デフォルトの名無しさん:2008/08/27(水) 07:18:41
>>283
待つんだゲフォの280は地雷だ。
らでの4850にしとけ。
大差ないスペックで大量の消費電力と3倍近い値段するんだぞ280は。

289 :デフォルトの名無しさん:2008/08/27(水) 07:52:34
>>287
March 2008でも直ってねーじゃん

290 :デフォルトの名無しさん:2008/08/27(水) 07:58:17
日曜プログラマでも脳みそは使わなきゃダメだ

291 :デフォルトの名無しさん:2008/08/27(水) 09:43:51
提供元のサンプルはコピペのためにあるようなもんだしなw
DVD出たときにパイオニアと東芝がしょっちゅう同じバグ出してたのもコピペだったんだろうなあ

292 :デフォルトの名無しさん:2008/08/27(水) 11:30:57
>>291
昔買ったNECのマウスのファームウェアがサンプルのコピペでワロタ
CY7C63101のサンプルコードに書いてあった仮のベンダーIDとかそのまんまになってた

293 :デフォルトの名無しさん:2008/08/27(水) 13:49:52
DC版VF3がSAMPLE GAMEなのと同じですね、違いますね。


294 :デフォルトの名無しさん:2008/08/28(木) 00:58:23
Windosゲームを作っていて、
ゲーム起動時に32*32のフォント画像のテクスチャーを約8000個作りたいんですが、
その処理に15秒くらいかかってしまいます。

CreateTextureやバッファにフォント画像を書き込むこと自体は、
全然時間がかからないんですが、
↓の処理が凄く遅いです。

D3DLOCKED_RECT lockRect;
pTexture->LockRect(0, &lockRect, NULL, D3DLOCK_DISCARD);

高速化する方法ってないでしょうか。

295 :294:2008/08/28(木) 01:12:25
自己解決しました。
CreateTextureのプールを、
D3DPOOL_DEFAULT から D3DPOOL_MANAGED に変えたらちょっぱやになりました。

理由はよく分かりませんが、
D3DPOOL_DEFAULTだとLockRectでVRAMにアクセスするから遅い?

296 :294:2008/08/28(木) 01:20:42
LPDIRECT3DVERTEXBUFFER9を頻繁にLockして色を変えたりする場合も、
もしかして、D3DPOOL_MANAGEDの方が速いのでしょうか?

D3DPOOL_MANAGEDとD3DPOOL_DEFAULTの長所短所がよく分からないんですが、
詳しい人いたら教えてもらえませんか?

297 :デフォルトの名無しさん:2008/08/28(木) 06:54:13
POOL_DEFAULTは適切な使い方をすればちょっぱやになります。
あなたの使い方は論外です、今は素直にPOOL_MANAGEDを利用して
いつか分かるようになったらそのとき色々考えましょう。

っていうかDEFAULTのテクスチャをロックするなよ。

298 :294:2008/08/28(木) 08:47:12
今までリソースは全てPOOL_DEFAULTで作ってたんですが、
POOL_DEFAULTはどういう場合に使うのが適切なんでしょうか?
いつかじゃなくて今知りたいんですが、教えてもらえないでしょうか。

299 :294:2008/08/28(木) 09:23:29
かなり苦労してデバイスロスト時のリソース開放復帰処理を作ったので、
適切なところはPOOL_DEFAULTを使いたいんです。

300 :デフォルトの名無しさん:2008/08/28(木) 10:53:32
その前にテクスチャ8000個の方に突っ込むべきな気もする…

301 :デフォルトの名無しさん:2008/08/28(木) 11:24:46
淫乱負数からディスプレイアダプタを取得する方法が分からないのですが
誰か教えていただけませんか?

// ディスプレイアダプタを表すためのデバイスを作成
// 描画と頂点処理はハードウェアで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画処理はハードウェアで、頂点処理はCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SPFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画と頂点処理をCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_REF,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
//取得失敗
return E_FAIL;

これだとコンパイルエラーが出ます。。。

302 :デフォルトの名無しさん:2008/08/28(木) 11:45:18
D3DPOOL_DEFAULT とかD3DPOOL_MANAGED考える前に
テクスチャ8000個ってのを改善しろよ

8000個なんて使うときあるか?

303 :デフォルトの名無しさん:2008/08/28(木) 12:41:51
>>302
日本語全部だとそのくらいじゃないの
知らないけど

304 :デフォルトの名無しさん:2008/08/28(木) 12:44:54
1文字ずつバラしてんのか

305 :デフォルトの名無しさん:2008/08/28(木) 12:51:47
1枚でつくって切りだして使えよ

306 :デフォルトの名無しさん:2008/08/28(木) 13:22:12
>>305
じゃあ聞きますけど1枚に全部入りますか?
書き込む前に考えるクセをつけるべきだと思います。

307 :デフォルトの名無しさん:2008/08/28(木) 13:27:35
jpeg3なら可能なんでない?
マトリョーカシからの圧縮も対応してるし
12000*8000のサイズも余裕で収まるっしょ?

308 :デフォルトの名無しさん:2008/08/28(木) 13:27:56
糞設計ブーム到来中

309 :デフォルトの名無しさん:2008/08/28(木) 13:31:38
「1枚じゃはいらないなぁ」

「でも複数にするとどの文字が
どのテクスチャに収納されてるのか考えないと・・・」

「そうだ!1文字テクスチャでつくればいいんじゃね」←いまここ


こういうことだろ?
どんだけ手抜きなんだよ

310 :デフォルトの名無しさん:2008/08/28(木) 13:35:26
書き込む前に考えるクセをつけるべきなのは>>306だなwwww

311 :デフォルトの名無しさん:2008/08/28(木) 13:52:55
---煽りあいはここまで---


312 :デフォルトの名無しさん:2008/08/28(木) 17:22:10
32*32を8000枚って、30MB超えたんだが、いったいどんな富豪グラボを想定してるんだろうw

313 :デフォルトの名無しさん:2008/08/28(木) 17:55:04
大丈夫
いまどきの富豪なグラボは1GBある

314 :デフォルトの名無しさん:2008/08/28(木) 17:57:52
淫乱負数からディスプレイアダプタを取得する方法が分からないのですが
誰か教えていただけませんか?

// ディスプレイアダプタを表すためのデバイスを作成
// 描画と頂点処理はハードウェアで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画処理はハードウェアで、頂点処理はCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SPFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画と頂点処理をCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_REF,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
//取得失敗
return E_FAIL;

これだとコンパイルエラーが出ます。。。

315 :デフォルトの名無しさん:2008/08/28(木) 18:42:55
とりあえずエラーの内容も書こうぜ

316 :デフォルトの名無しさん:2008/08/28(木) 18:55:45
Renderer.cpp(266行目) 淫乱負数からのポインタが取得できません

ちなみに使っているコンパイラは現役専門学生の友達が作ってくれたものです。

317 :デフォルトの名無しさん:2008/08/28(木) 19:53:57
DEFAULTはそれこそ毎フレーム書き換えるようなデータに使うのが一般的。
その場合は当然DYNAMICフラグとセットにしてな。

それ以外のただの画像テクスチャなんてものはMANAGEDで問題ない。
速度的にDEFAULTが速いとか勘違いしてるかもしれないが
作成時に1回だけ書き換える程度の静的なデータには無意味だ。

一般的といっていいかは分からないけど、
MMOみたいな大量の文字を使うようなゲームでも普通は事前に
テクスチャに展開してUVで切り出して描画をするぞ。

1文字1テクスチャは色々とおかしいといわざるを得ない。
1文字単位でテクスチャの切り替えが発生するしキャッシュ効率も最悪。

318 :デフォルトの名無しさん:2008/08/28(木) 22:45:27
>>316
淫乱負数について詳しく

319 :デフォルトの名無しさん:2008/08/28(木) 23:23:35
【淫乱負数】

デクリメント負数のサイズ (バイト単位)。柔軟な頂点フォーマット (デクリメント) 頂点バッファの場合は、
淫乱負数 は少なくとも 1 つの頂点を格納できる大きさでなければならないが、頂点サイズの倍数である必要はない。
淫乱負数 は非 FVF バッファについては検証されない。

320 :294:2008/08/29(金) 00:13:09
>>309
手抜きじゃなくて、無知で初心者なだけです。
常に最善を求めて頑張っています。

>>310
とりあえず>>306は私じゃないのであしからず。

>>312
いまどきのグラボは30MBくらいいけると想定して、
古いグラボはすっぱりと切る心づもりでした。

321 :294:2008/08/29(金) 00:14:46
>>317
参考意見ありがとうございます。

charがどの文字に対応するかは絶対1つずつ判定が必要ですよね。
そしたら後は、1枚から特定の場所を切り出す処理がない分、
1つずつのテクスチャにした方が効率がいいかと思ったんですが、
そうではないんでしょうか?

私はプログラムやコンピュータに触りだしたのが最近で、
キャッシュ効率(たぶんハード寄りなこと?)というのがよく分からないんですが、
大量のテクスチャを使えば一時保存領域などを頻繁に入れ替えることになるから、
その分オーバーヘッドが生じて遅くなるってことでしょうか?

322 :デフォルトの名無しさん:2008/08/29(金) 01:21:10
>>317
その書き方では、DEFAULTはロック書き換え用だと読めるが、
そうなの?
別に実測値を出せとは言わんが、それを示すドキュメントとかあるか?


323 :デフォルトの名無しさん:2008/08/29(金) 01:25:44
扇形を簡単に描画させる方法ってないですか?
60度の角度で上方向に扇形を描画さしたいのですが(円弧の方が上)
開始地点は275から半径50の扇形を描画さしたいのですが
pD3Device->SetTexture(0, pTexture[0]);
pt[0].x = 250.0f;
pt[1].x = 300.0f;
pt[3].x = 275.0f;
pt[2].x = 275.0f;

pt[0].y = 225.0f;
pt[1].y = 225.0f;
pt[2].y = 275.0f;
pt[3].y = 275.0f;

pt[0].tu = pt[3].tu = 0.0f  / 1024;
pt[1].tu = pt[2].tu = 200.0f / 1024;
pt[0].tv = pt[1].tv = 0.0f  / 1024;
pt[2].tv = pt[3].tv = 200.0f / 1024;

pD3Device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,pt,sizeof(CUSTOMVERTEX));

これでは普通に三角形ができただけで・・・
角度計算とかで簡単に扇形にできないでしょうか?

324 :デフォルトの名無しさん:2008/08/29(金) 04:00:28
>>321
テクスチャの切り替えはなるべく少なくした方が高速

325 :233:2008/08/29(金) 05:00:57
解決しました
粗末な物を張ってすみませんでした

326 :デフォルトの名無しさん:2008/08/29(金) 07:17:27
淫乱負数って一体何なんだ

327 :デフォルトの名無しさん:2008/08/29(金) 07:33:53
>>321
テクスチャの切り出しなんて文字コードをインデックスにして
テーブルからUVを引っ張ってくるだけだろ。
今のCPUのキャッシュ容量なら余裕で全部乗る程度のキャッシュサイズだし、
別にテクスチャ自体を切り出して作るわけじゃないぞ。

「テクスチャの切り替えをする」ということはそのつど「DrawPrimitive」を呼ぶということだ。
昨今のグラフィックカードは細かいデータをたくさん出すようには設計されてないので致命的なほど遅い。
なので可能なら1枚のテクスチャに格納⇒文字全てを1個の頂点バッファに格納⇒DrawPrimitive1回で全ての文字を描画
これが実測でも理論でも最速になる。

DrawPrimitiveの連打に比べたら頂点データの作成やUVテーブルの参照なんてゴミみたいな負荷。

>322
SDKに入ってるドキュメントに書かれてるよ。

>動的な頂点バッファおよびインデックス バッファの使い方
>
>理想は頂点データまたはインデックス データがまったく変化しないことですが、これは必ずしも可能ではありません。
>アプリケーションがフレームごとに頂点データまたはインデックス データを変更する場合は多くあり、
>フレームあたり複数回変更することさえあります。
>このような場合は、D3DUSAGE_DYNAMIC を使って頂点バッファまたはインデックス バッファを作成する必要があります。
>この利用法フラグによって Direct3D を頻繁なロック処理用に最適化します。
>D3DUSAGE_DYNAMIC はバッファを頻繁にロックする場合にのみ有用であり、
>変化しないデータは静的な頂点バッファまたはインデックス バッファに格納する必要があります。

テクスチャやサーフェイスの場合だとシステムメモリにコピーをいちいち作れない、
レンダリングターゲットや深度バッファなんかもDEFAULTで作る必要あるけど。

328 :327:2008/08/29(金) 07:43:05
補足。

D3DUSAGE_DYNAMICフラグはD3DPOOL_DEFAULTと一緒じゃないと使えない。

D3DPOOL_MANAGEDって単にシステムメモリにコピーもってて、
システム側のバッファ⇒DMA転送⇒VRAMのバッファってやってるだけ。
だからデバイスがロストしても復旧できる。
当然だけど描画中のバッファをLock()しようとした場合は描画終わるまで待たされる。

そうなると頻繁にバッファ書き換えるなら直接VRAMのバッファ変えるほうが速いのは当然だし
DYNAMICフラグの場合はLock()する度に別のアドレス返してくるからMANAGEDみたいに
データの保障は出来ないってことだな。

DYNAMICしたバッファは
Lock()→新しいビデオメモリ領域をmalloc()→そのアドレスを返す→描画終わったらドライバがfree()
っていう処理だから他のバッファみたいに描画中のバッファに干渉してパイプラインを止めなくてすむ。

だから書き換えないならMANAGEDでいいし、頻繁に書き換えるならDEFAULT+DYNAMICにしとけってな話。

ドキュメントの「DirectXGraphics」→「プログラミング ガイド」→「プログラミングのヒント」→「パフォーマンスの最適化」を参照。

329 :デフォルトの名無しさん:2008/08/29(金) 11:06:50
書き込むスレ間違えたのでマルチスレッドになるかもですが、

シーンの作成時やレンダラーの初期化時に

HRESULTをいうのを使っているのですが
HRESULT Renderer::Initialize(HWND hWnd, BOOL isFullScreen, int clientWidth, int clientHeight)

LRESULTとの違いってなんですか?
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

ウィンドウプロシージャルを定義するときはLのほうを使って
DirectXの初期化の時などはHを使うって事ですか?

330 :デフォルトの名無しさん:2008/08/29(金) 11:23:45
LRESULTはもともとlongだったものからきてる、longで結果を返すものと思っていい。
HRESULTは内容が決まってる。COMが返すものと思っていい。
自分で作った関数は、よそから返ってきたHRESULTをそのまま返すもの以外はあまり使わないと思うよ。

331 :デフォルトの名無しさん:2008/08/29(金) 11:36:43
>>330
なるほど〜〜

ありがとうございました!

332 :デフォルトの名無しさん:2008/08/29(金) 12:29:25
テイルズっぽいゲームを作ろうと思っているのですがエフェクトの所で悩んでます
戦闘時のエフェクトとかってDirectXで描写するのとAdobeEffectsとかで作ったのを描写するのどっちが一般的なんですか?

333 :デフォルトの名無しさん:2008/08/29(金) 12:39:54
3Dなら、プログラム率高い
2Dなら、ベタでいいんじゃね?
絵の量が多いと、プログラムしないとメモリが足りないけど

334 :デフォルトの名無しさん:2008/08/29(金) 12:40:58
参考
ttp://rayz.skr.jp/?http://rayz.skr.jp/zakki/_zakki.html

335 :デフォルトの名無しさん:2008/08/29(金) 12:47:28
>>332
このスレ64から嫁
一般的かって話なら3Dで作るのが一般的

336 :デフォルトの名無しさん:2008/08/29(金) 13:30:03
質問もマルチスレッドの時代になったか


337 :294:2008/08/29(金) 20:40:02
>>327
文字列全てを1個の頂点バッファに格納するというのは、
同じ板ポリゴンに、位置をずらしながら1文字ずつ貼り付けていくということですよね。

板ポリの4頂点にテクスチャのUVを指定して、
板ポリ全体にテクスチャを貼り付ける方法しか知らないんですが、
板ポリゴンの一部にテクスチャを貼り付けるにはどうすればいいんでしょうか?

338 :デフォルトの名無しさん:2008/08/29(金) 20:44:59
>>337
いうてる意味がわからんが「描画する文字数 x 4角形」分の大きさの頂点バッファをこしらえるだろ。

339 :デフォルトの名無しさん:2008/08/29(金) 21:19:35
1文字あたりポリゴン2枚(三角形×2)
1個の頂点バッファにたくさんポリゴンを詰め込んで、1回のDrawPrimitiveで全部描く

340 :デフォルトの名無しさん:2008/08/29(金) 22:21:31
>>328
D3DPOOL_MANAGEDはレンダリングターゲットには出来ない。
ということはGPUによる書き換えは発生せず、内容の書き換えが起こるとするとすれば
それは常にCPUからの場合のみ。

だとすれば、D3DPOOL_MANAGEDのリソースは、
メインメモリ側がマスタで、ビデオメモリ側がスレーブという考え方でかまわない訳で、
lockした場合は、常にメインメモリ側のポインタを返し、
unlockした時点でスレーブに反映させればいいから、別にCPUはストールしない。

と、勝手に思っていた訳だが。根拠はないが。

341 :デフォルトの名無しさん:2008/08/29(金) 22:26:55
また、SDKの記述だが
D3DUSAGE_DYNAMIC+D3DPOOL_DEFAULTが
D3DPOOOL_MANAGEDより優位だとは特に書いていないぞ。

342 :デフォルトの名無しさん:2008/08/29(金) 23:51:45
>>340
CPUのメモリに書き込む⇒CPU→GPUの転送をする⇒GPUのバッファが描画待ち状態だった⇒さぁどうなる?

>>341
毎フレームロックするような2Dのスプライトみたいなものとか、
3Dのパーティクルみたいなものには有利とは書かれているぞ。

モデルみたいな作りっぱのデータにはむしろマイナスだろう。

343 :294:2008/08/30(土) 00:45:36
>>338
>>339
理解しました。頂点バッファって三角形何個でも繋げられるんですね。
今まで常に三角形2枚の長方形で1個の頂点バッファにしてました。
どうもありがとうございます。

344 :294:2008/08/30(土) 00:47:27
>>328
起動時のフォントテクスチャ作成を、
D3DPOOL_DEFAULT、D3DUSAGE_DYNAMICから、
D3DPOOL_MANAGED、USAGEなしに変えたら、
LPDIRECT3DTEXTURE9#LockRectが20倍くらい速くなったんですが、
描画中だとD3DPOOL_DEFAULTの方がロック速いけど、
描画してない状態だとD3DPOOL_MANAGEDの方がロック速いってことでしょうか。

いずれにせよ、色々実測してみようと思います。

345 :デフォルトの名無しさん:2008/08/30(土) 22:46:27
dxerr.lib dxguid.lib d3dx9.lib d3d9.lib このライブラリの中で
ゲーム会社の採用試験の作品提出の時に使ったまずいのってありますか?

346 :デフォルトの名無しさん:2008/08/30(土) 22:53:47
まずいのはそんなことを質問するお前の頭
その時点で不採用決定だから気にするな

347 :デフォルトの名無しさん:2008/08/30(土) 22:58:44
流石にネタだろw

348 :デフォルトの名無しさん:2008/08/30(土) 22:59:47
>>345

windowsアプリケーションを作る時
#include <windows.h>
がないとの同じだぞ?

349 :デフォルトの名無しさん:2008/08/30(土) 23:03:22
>>345
お前は心臓がなくて生きてられるか?(ペースメーカーなど除く)

350 :デフォルトの名無しさん:2008/08/30(土) 23:25:28
>>345
d3d9.libだけは使ったらまずい。ほかは使っても大丈夫だよ
採用試験がんがれ!

>>346-349
しんだほうがいい

351 :デフォルトの名無しさん:2008/08/30(土) 23:28:48
>>345
プログラマーって>>350みたいなの多いから気をつけた方がいいよ
別に気に入らなければ答えなきゃいいだろうっていう質問をネタに遊ぶ連中だから

352 :デフォルトの名無しさん:2008/08/30(土) 23:32:30
再配布禁止なのはd3dx9***.dll系だろ・・・


353 :デフォルトの名無しさん:2008/08/31(日) 00:28:48
こういうくだらない話に喰いつく奴をみると
ネット経験が浅いんだろうなぁ、ウザいなぁと何時も思う。

354 :デフォルトの名無しさん:2008/08/31(日) 01:01:16
>>352
実行ファイルの隣に置いておくのが駄目なだけで
再配布が禁止されてるわけじゃないよ


355 :デフォルトの名無しさん:2008/08/31(日) 01:49:17
採用担当はいちいちそんな所みてねぇよ

356 :294:2008/08/31(日) 04:38:21
色々試してみましたが、
やっぱうちだとPOOL_DEFAULT より POOL_MANAGEDの方が速いっぽいです。
あと、HARDWARE_VERTEX_PROCESSING より SOFTWARE_VERTEX_PROCESSINGの方が速い。

357 :デフォルトの名無しさん:2008/08/31(日) 05:24:16
>>356
システムメモリとビデオメモリを理解してないんですね
わかります

358 :デフォルトの名無しさん:2008/08/31(日) 08:08:45
>>356
そりゃロック速度は速いだろうけど描画は遅くなるだろ・・・

359 :デフォルトの名無しさん:2008/08/31(日) 08:47:02
>356
測定条件が明確じゃないのに、ここでどっちが早いとか
書いても意味ねーぞ

360 :294:2008/08/31(日) 14:24:52
C#で測定ツールを作ってみたんですが、
測定条件こんな感じでどうですか?
http://www.sepia.dti.ne.jp/zigzag/test.zip
Managed DirectXは少し遅いらしいけど。

361 :デフォルトの名無しさん:2008/08/31(日) 14:33:26
>>354
エーダメだったの?

362 :デフォルトの名無しさん:2008/08/31(日) 16:28:42
>>360
いやぁ
その前にシステムメモリとビデオメモリの違い
ってわかる?
多分、そんなの測ってもケースバイケースよ?
いまのままだとどんな条件のときにそのプログラムが速くて
そんな条件のときにそのプログラムが遅いのかわかんないでしょ?

それを知りたい?
それとも虚構の条件でのみ速いって主張するそのプログラムを
みんなに認めてもらいたいだけ?

どっちか選んで方針決めてよ

363 :294:2008/08/31(日) 16:59:03
何の違いですか?転送速度とか?
詳しい違いはしりません。

>それを知りたい?
知りたい。

364 :294:2008/08/31(日) 17:00:47
あとはうち以外の環境でも実測して、
結果と理論を合致させたいです。

365 :デフォルトの名無しさん:2008/08/31(日) 17:01:41
何で敢えて「その前にシステムメモリとビデオメモリの違い」を無視しているのかなぁ。


366 :デフォルトの名無しさん:2008/08/31(日) 18:59:07
iPhoneのように画像をマウスの動きに合わせて左右にスライドさせて見るような画像ブラウザを作りたいのですがDirectXで可能でしょうか
お勧めのライブラリーなどあればよろしくお願いします

367 :デフォルトの名無しさん:2008/08/31(日) 18:59:37
>>361
ちゃんと書いてあっただろ・・・。
もし商業でやってたらアウトだぞ。

再配布していいのは「再配布パッケージ」だけで
「再配布パッケージの中のファイル(d3dx9_32.dllなど)」を
単独で再配布してはいけない

>>363
その詳しい違いを調べてるんじゃないの?
ただロックして書き込み速度だけみたいなら
mallocしたバッファにでも書けば?

368 :デフォルトの名無しさん:2008/08/31(日) 19:32:36
>>363
んじゃ

システムメモリってのはPCのCPUで演算させるときに
データをおかなきゃならんところなんよ
ビデオメモリってのはグラフィックボードのGPUで
演算させるときにデータをおかなきゃならんところよ

>あと、HARDWARE_VERTEX_PROCESSING より SOFTWARE_VERTEX_PROCESSINGの方が速い。
これもさ、LockとかDrawPrimitiveUpやってんじゃねぇの?

なのでそんな結果になっちゃうわけよ

つまりな、描画方法がグラボの能力をまったく使えてないw

369 :デフォルトの名無しさん:2008/08/31(日) 20:35:00
>>367
エーそうだったのか
ありがとう

370 :デフォルトの名無しさん:2008/09/01(月) 13:49:43
2Dスプライトを実装する際の
頂点バッファ、インデックスバッファの扱いについて質問です
これらはスプライト毎に用意したほうがいいのでしょうか?
それともシステムに対して一つ用意してそれを使いまわせばいいのでしょうか?


371 :デフォルトの名無しさん:2008/09/01(月) 14:56:14
>>370
1個だけ作っておいて
スプライトを順次埋め込んでいけばオッケ
表示するときに一発で済む


372 :デフォルトの名無しさん:2008/09/01(月) 17:59:13
>>371
一つの頂点バッファに動的に頂点を追加し
テクスチャごとにインデックスバッファを作成して描画ということでしょうか?

一つの動的な頂点バッファをマイフレームロックして書き換えるのと
テクスチャごとに静的頂点バッファを生成して切り替えて使うのだと
どちらがパフォーマンスにやさしいのでしょうか?

373 :デフォルトの名無しさん:2008/09/01(月) 19:01:41
初めてDirectXクリックしたら はい いいえの文字が出たのでいいえクリックしたら
DirectX診断ツールが出てきた・・・はい いいえの内容教えてください
たしか はい がおすすめですと書いてあった
バージョンが最新?DirectX 9.0cになってたいいえクリックすると自動で9.0cがインストールするの?
詳しい方教えてくださいおねがいします。

374 :デフォルトの名無しさん:2008/09/01(月) 21:59:35
なんでこの文はFAILEDが2個もあるんですか?

//--------------------------------------
// モデルを生成
//--------------------------------------
// 球体(Sphere)の生成
if(FAILED( FAILED(D3DXCreateSphere( pD3DDevice,
1.0f,
36,
36,
&m_pMesh,
NULL)))) {
return E_FAIL;
}

375 :デフォルトの名無しさん:2008/09/01(月) 21:59:50
とりあえず
・プログラミングの話しではない
・日本語がおかしい

376 :デフォルトの名無しさん:2008/09/01(月) 22:10:08
>話しではない

お前も日本語がおかしい

377 :デフォルトの名無しさん:2008/09/01(月) 22:15:36
if(FAILED(D3DXCreateSphere( pD3DDevice, これでいいと思うんですけど

if(FAILED( FAILED(D3DXCreateSphere( pD3DDevice, これにする理由ってなんですか?

378 :デフォルトの名無しさん:2008/09/01(月) 22:36:14
>>377
後生ですからFAILEDマクロの定義を調べた上で初心者スレに出直してください。DirectXには関係がありませんから。

379 :デフォルトの名無しさん:2008/09/02(火) 00:56:57
DirectXの画面上にエディットコントロールを貼り付けると激しくちらつきますが、
これは相性が悪いのであきらめろということですか?

380 :デフォルトの名無しさん:2008/09/02(火) 08:26:34
>>372
異なるテクスチャを要求されるか
頂点バッファが一定量(例えばスプライト100個)を越えるまで
一つの頂点バッファに溜め込んで
上記条件を満たしたら表示する

>>379
DX搭載のUIを使うか
エディットコントロールの部分をクリッピングする


381 :デフォルトの名無しさん:2008/09/02(火) 10:24:08
>>380
その手法はヘルプには書いてありましたが
たとえば
スプライト0〜49がテクスチャA
スプライト50〜99がテクスチャBを資源にしている場合
ひとつの頂点バッファで一括で100個描画をする方法あるのでしょうか?
パーティクルみたいに同じテクスチャを数100個表示するようなときには有効そうですが

382 :デフォルトの名無しさん:2008/09/02(火) 11:31:27
>>381
テクスチャごとに(その例では50)表示しても
マルチテクスチャで無理して全部(その例では100)表示しても
速度差は出ないぞ


383 :デフォルトの名無しさん:2008/09/02(火) 11:49:29
>>380ハァハァ・・・めんどいよぉ〜

384 :デフォルトの名無しさん:2008/09/02(火) 12:01:55
ウィンドウならWS_CLIPCHILDRENで

385 :デフォルトの名無しさん:2008/09/02(火) 12:02:54
超初心者でプログラミングのサイトを読み進めながら組んでるんですが、
"error C2065: 'm_pD3Ddev' : 定義されていない識別子です。"
こんなエラーが出てビルドする事が出来ません。

恐れ入りますが、よろしくお願いします。

386 :デフォルトの名無しさん:2008/09/02(火) 12:04:57
LPDIRECT3DDEVICE8 m_pD3DDev;
をクラス定義に入れろ。

387 :デフォルトの名無しさん:2008/09/02(火) 12:44:28
>>386
有難うございます。
無事に解決する事が出来ました。

388 :デフォルトの名無しさん:2008/09/02(火) 13:28:41
って8でよかったのか?

389 :デフォルトの名無しさん:2008/09/02(火) 16:48:14
>>384わおすげー できた!おじちゃんありがとー!

390 :デフォルトの名無しさん:2008/09/02(火) 23:57:18
LWでXファイルを書きだしたあとDirectXで読み込むときテクスチャーが読み込まれないの何でですか?
DirectXのほうでテクスチャーを張り付ける処理をしなければいけないってことです?

391 :デフォルトの名無しさん:2008/09/03(水) 00:10:54
DirectXをダウンロードしたのですがスタートメニューから[DirectX]を検索して
プログラム欄のフォルダを見ても中が空なんですがこれできちんとダウンロードされているのでしょうか?

よろしくお願いします。。


392 :デフォルトの名無しさん:2008/09/03(水) 00:14:21
OSはvista
DirectX10.0です

いまいち効果が感じられないので質問するに至りました

393 :デフォルトの名無しさん:2008/09/03(水) 00:14:51
DirectXってどれ?
ランタイム?SDK?

394 :デフォルトの名無しさん:2008/09/03(水) 09:19:46
>>390
DirectXの何で読み込んでいるかにもよる
ポリゴンしか読んでないなら
そりゃテクスチャも読まないとダメでしょう

よくあるトラブルは
テクスチャへのパスが間違っていること
一度Xファイルを覗いてみてパスが正しいか確認すべし


395 :デフォルトの名無しさん:2008/09/04(木) 17:33:09
DirectXとOpenGLで共用できるようなメッシュクラスを作りたいと思っているのですが、
OpenGLのように頂点座標や法線、テクスチャ座標が別々の配列に分かれているデータを
一度に描画する方法はないのでしょうか? どなたか教えて下さい。


396 :デフォルトの名無しさん:2008/09/04(木) 17:53:30
FVFに直すしかないんじゃね?

397 :デフォルトの名無しさん:2008/09/04(木) 18:53:35
>>395
このへんが参考になるんじゃね?

ttp://marupeke296.com/DXG_No53_DrawUsingStream.html

398 :デフォルトの名無しさん:2008/09/04(木) 19:59:01
そんなのあったんだ!

399 :デフォルトの名無しさん:2008/09/04(木) 20:41:08
スキンメッシュAと普通のメッシュaをそれぞれD3DXLoadMeshHierarchyFromXとD3DXLoadMeshFromX
で読み込ませたところ、なぜかaがAのモーションに引き寄せられるのですが。
解決方法が分かる人はいませんか?

400 :399の補足:2008/09/04(木) 20:47:16
普通のメッシュを複数読み込んだ場合、最初の一つ以外は普通に描画されます。

401 :399:2008/09/04(木) 21:16:59
>>399 >>400
すいません。直りました。レンダリングさせる順番を間違えてました。

402 :395:2008/09/05(金) 08:36:21
>>397
 どうもありがとうございます! とても参考になりました。

403 :デフォルトの名無しさん:2008/09/06(土) 19:28:57
テ゜バイスがなくなったときの処理はなくてもいいの?

404 :デフォルトの名無しさん:2008/09/06(土) 19:46:37
×テ゜バイス
○デバイス

405 :デフォルトの名無しさん:2008/09/06(土) 21:58:35
突然、何の前提条件の説明もなく質問する脳味噌の足りない馬鹿って、
どうして発生するんだろう?

406 :デフォルトの名無しさん:2008/09/06(土) 22:04:21
DirectX以外の事もおおむね初心者だからです
あなたのESP能力が試されているのです

というわけでデバイスロストでググってまたきなさい

407 :デフォルトの名無しさん:2008/09/07(日) 11:00:33
if(pD3DDevice->present(0,0,0,0)) {
pD3DDevice->Reset(&m_D3DPP);

408 :デフォルトの名無しさん:2008/09/07(日) 11:33:22
>>407
そんな最低のソース組むやつと仕事は出来ない。

409 :デフォルトの名無しさん:2008/09/07(日) 11:40:01
>>408
トンマ ドベ アンポンタン ダボ アホ

410 :デフォルトの名無しさん:2008/09/07(日) 11:47:58
2000ミリ秒って何秒ですか?

411 :デフォルトの名無しさん:2008/09/07(日) 11:51:59
2秒?

412 :デフォルトの名無しさん:2008/09/07(日) 12:33:11
>>410
PG辞めろ

413 :デフォルトの名無しさん:2008/09/07(日) 12:34:06
>>412
トンマ ドベ アンポンタン ダボ アホ

414 :デフォルトの名無しさん:2008/09/07(日) 12:43:22
>>413
トンマ ドベ アンポンタン ダボ アホ

415 :デフォルトの名無しさん:2008/09/07(日) 16:46:28
>>414
トンマ ドベ アンポンタン ダボ アホ

416 :デフォルトの名無しさん:2008/09/07(日) 17:06:00
この流れを何とかしてくれ

無視するわけにはいかない

417 :デフォルトの名無しさん:2008/09/07(日) 17:07:42
>>41
トンマ ドベ アンポンタン ダボ アホ

418 :デフォルトの名無しさん:2008/09/07(日) 17:20:20
自演にしては手が込んでるな・・・
ID出ないからって調子乗りすぎ

419 :デフォルトの名無しさん:2008/09/07(日) 17:21:24
>>418
トンマ ドベ アンポンタン ダボ アホ スケベ ノロマ

420 :デフォルトの名無しさん:2008/09/07(日) 23:39:23
キーフレームアニメーションの分野に入ったんですけど この分野の概念は重要ですか?

421 :デフォルトの名無しさん:2008/09/08(月) 00:52:12
>>420
それが重要かどうかは、420が何をしようとしているか分からなければ答えられないんじゃないか?

まずはそれよりも、
>キーフレームアニメーションの分野に入ったんですけど 
もうちょっと、自分が言わんとしていることが人に伝わる文章になっているか、それを気にしたほうがいい。

422 :デフォルトの名無しさん:2008/09/08(月) 19:35:57
コリジョンが簡単にできるPosbiliedクラスって本当に売ってるんですか

423 :デフォルトの名無しさん:2008/09/08(月) 20:38:25
>>420
そのぐれー理解しとけレベルとして聞いてるならもちろん理解しなきゃダメレベル

っていうかこれ嫌がったらキャラのアニメーション、エフェクトのアニメーションとか
アニメーションまわり全部苦手になるじゃん
理解しろ

424 :デフォルトの名無しさん:2008/09/09(火) 16:27:56
板ポリに張り付けたテクスチャの透明度を動的に変化させたいのですが

いままではカラー情報無の頂点(座標+テクスチャ座標のみ)をつかって
ピクセルシェーダーで直接テクスチャカラーを
指定したアルファ値で書き換えていたのですが
これを固定機能パイプラインで再現するにはどうしたらよいのでしょうか?

調べた限りでは頂点情報にカラー情報を入れて
そこのアルファ値を使ってブレンドしているようなものは見つけましたが
これだとアルファ値を変化させるたびにLockして書き換えることになるような気がします
なにかさっくりとブレンド比を指定することはできないのでしょうか?

固定機能パイプラインを使ったプログラムほとんどしたことがないのでよろしくお願いします


425 :デフォルトの名無しさん:2008/09/09(火) 17:16:48
板ポリなんだから、DrawPrimitiveUPを使えばいいんじゃない?
いちいちロックしなくて済むし

426 :デフォルトの名無しさん:2008/09/09(火) 18:49:08
DrawPrimitiveUPのUPって何の略ですか?

427 :デフォルトの名無しさん:2008/09/09(火) 18:55:05
ウンポーコ

428 :デフォルトの名無しさん:2008/09/09(火) 19:04:09
User memory Pointer

429 :デフォルトの名無しさん:2008/09/09(火) 19:46:21
>>428
THXRY

430 :デフォルトの名無しさん:2008/09/10(水) 04:52:39
>>424
俺も悩んだ。頂点毎に色を変える必要がなければ、
1.レンダーステートでライトを有効にする。
2.ライト自体は全てOFF。
3.マテリアルカラーのデヒューズあたりをいぢる。
で変わったはず。
ただし、この方法だとなぜか元々頂点カラーの入っているポリゴン(グーローポリゴン)
は変えることができなかった。解決方法は今も模索中。

431 :デフォルトの名無しさん:2008/09/10(水) 10:33:18
>>430
ありがとうございます
D3DRS_BLENDFACTORにて対応することにしました

432 :デフォルトの名無しさん:2008/09/10(水) 17:33:59
StreamDataサンプル
ttp://msdn.microsoft.com/ja-jp/library/cc370842.aspx

が見つからないんですが、どのバージョン落とせば入ってるんでしょうか・・・
February2007を使っています。
どこかでサンプルだけ落とすことって出来るんですか?
あとDirect Sound詳しく解説しているページや書籍があったら教えて頂きたいです。。。

433 :デフォルトの名無しさん:2008/09/11(木) 22:48:19
drawprimitiveとLPD3DXSPRITE->Drawによる描画を同時に使っているのですが
描画した結果をキャプチャして一枚のテクスチャにするにはどうすればいいですか?

434 :デフォルトの名無しさん:2008/09/11(木) 22:58:04
テクスチャをターゲットにする

435 :デフォルトの名無しさん:2008/09/11(木) 23:06:31
スプライトに関連づけられたデバイスがSetRenderTargetでテクスチャ指定すれば
DrawPrimitiveのものだけでなくスプライトもそのテクスチャに描画されるということですか?

436 :デフォルトの名無しさん:2008/09/11(木) 23:09:45
グダグダ言う前にとっととやれ

437 :デフォルトの名無しさん:2008/09/11(木) 23:48:51
D3DUSAGE_RENDERTARGETでテクスチャを作成して
・レンダーターゲットに設定して描画
・GetRenderTarget→StretchRectでフレームバッファからコピー

お好きな方をどうぞ

438 :デフォルトの名無しさん:2008/09/14(日) 17:04:12
DirectInput使ってキー入力してるんですが、ウィンドウを一旦非アクティブにすると、それ以降全てのキーが押された状態になるようです。
どうすれば直るでしょうか・・・

439 :デフォルトの名無しさん:2008/09/14(日) 17:56:34
協調レベルの設定を見直したら大丈夫になりました。
自己完結です。ご迷惑おかけしました

440 :デフォルトの名無しさん:2008/09/14(日) 21:24:29
行列計算とか距離計算だけをGPU?にやって欲しいんだけども、どうしたらそこで計算してくれますか?

441 :デフォルトの名無しさん:2008/09/14(日) 21:42:21
ちょっと立ち止まって
ホントにGPUで計算したほうが結果的にはやくなるのか考えてみよう

442 :デフォルトの名無しさん:2008/09/14(日) 22:41:23
昔はGPUでやってたよね(´・ω・`)

443 :デフォルトの名無しさん:2008/09/14(日) 23:53:34
ゲームの場合
どう考えてもCPUの遊んでる時間のほうが長いんじゃね?

444 :デフォルトの名無しさん:2008/09/14(日) 23:54:32
>>443
何いってるんだ・・・?

445 :デフォルトの名無しさん:2008/09/15(月) 08:37:45
つかFPU以上に速く処理できる場所ってあるのか?


446 :デフォルトの名無しさん:2008/09/15(月) 10:10:32
頂点毎に行列計算があるっていうなら止めないけど
あくまでキャラのローカル座標程度ならCPUのほうがいいと思うよ

447 :デフォルトの名無しさん:2008/09/15(月) 10:42:46
そろそろ破線描画について考えようぜ

448 :デフォルトの名無しさん:2008/09/15(月) 11:46:16
1軸固定のビルボードで余裕

449 :デフォルトの名無しさん:2008/09/15(月) 12:50:24
>>445
GPU

450 :デフォルトの名無しさん:2008/09/16(火) 20:09:45
今まで全然気づかなかったんだけど、Manaded DirextX9のDirectDrawって
もしかしてアルファブレンドに対応してるんですか?
SDK見てたらAlphaSourceConstantプロパティとか見つけたけど
また実装されてないとか・・・かな。

451 :デフォルトの名無しさん:2008/09/17(水) 12:51:44
よく考えたらこれスプライトのことだな、すまん

452 :デフォルトの名無しさん:2008/09/19(金) 15:43:38
DirectXをマスターしたいんですがお勧めの本教えてください。

453 :デフォルトの名無しさん:2008/09/19(金) 15:46:51
その前にマスターの基準を明確にしてください。

454 :デフォルトの名無しさん:2008/09/19(金) 15:48:00
MikuMikuDanceが作りたいです。

455 :デフォルトの名無しさん:2008/09/19(金) 18:01:31
つDirectX逆引き500
つGameProgramingGems1〜6
つGPUGems
つリアルタイムレンダリング

456 :デフォルトの名無しさん:2008/09/20(土) 12:08:13
DirectXゲームグラフィックスプログラミングを買ってきました。

457 :デフォルトの名無しさん:2008/09/20(土) 17:40:28
ウィンドウのクライアント領域サイズのテクスチャと変換済み座標を持つ頂点をつかって、
画面全体に画像を表示しようとすると、微妙にゆがんでしまいます。
これはどういったことが原因として考えられるでしょうか。

458 :デフォルトの名無しさん:2008/09/20(土) 18:36:45
どうゆがむのかな


459 :デフォルトの名無しさん:2008/09/20(土) 19:11:48
1ピクセルおきの格子画像を作って表示させると、モワレ見たいになってしまいます

460 :デフォルトの名無しさん:2008/09/20(土) 19:14:53
ノートパソコンじゃあるまいな

461 :デフォルトの名無しさん:2008/09/20(土) 19:17:32
普通に画像を表示させたらモワレがでないので、ディスプレイの問題とは思えないのです

462 :デフォルトの名無しさん:2008/09/20(土) 19:24:20
普通って?

463 :デフォルトの名無しさん:2008/09/20(土) 19:25:13
すいません、ペイントとかで開くとってことです

464 :デフォルトの名無しさん:2008/09/20(土) 19:27:41
クライアント領域の大きさはいくつ?
DrawPrimitiveUPとかでやってるのならUVの設定とか頂点位置の設定が怪しいような

465 :デフォルトの名無しさん:2008/09/20(土) 19:28:17
同じ画面モードで表示してみてダメなのか?違うモードでは?複数のビデオカードでも同じなのか?ドライバのバージョンは?CRTや液晶では?

466 :デフォルトの名無しさん:2008/09/20(土) 19:42:25
0.5ずらして書いてないとかいうふざけた理由じゃあるまいな

467 :デフォルトの名無しさん:2008/09/21(日) 12:24:04
いきなり返事がなくなったな

468 :デフォルトの名無しさん:2008/09/21(日) 22:31:47
どうも困ったことになってしまいましたので、教えてください。

今まで何の問題もなく快適な速度で動いていた3Dベンチや3Dゲームなんですが、
久々に動かしてみると「3D処理系のゲーム全般含めて…」初めのほうはいいんですど、
途中でいきなり60fps前後のものが30〜20fpsにまでフレームが落ち込んで処理落ちしています。。。

3年ほど前に購入したFFXIベンチ動作認定済みのハイエンド型のノート型なんですけど、
実際に動かしている3Dゲームはこれよりも遥かに要求スペックの低いものです。
おかしなことに2Dゲームのときもこの症状が出てきます。これって何が原因かと思いますか?

ツールを使って自分でチェックしたけど、もうダメ・・・解らなかったです。。。

ビデヲメモリの容量も問題ないと思うし、バス幅も問題ないと思う。CPU&GPUの性能も問題ないと思います。
メインメモリの一部の領域が壊れたら、こんな症状になるのかな?と、思ってMEMTEST86+にてメモリチェック
を行ってみましたが、エラーもなく正常でした。

他に、ゲーム中にいきなりフレームが2/1にまで落ち込む原因は何が考えられるでしょうか?
教えてくだされば助かります。よろしくお願いします。

----------------------------------------------------------------
原因のパソコン : [DynaBook G8 / 型番:X20PDEW]
OS : WindowsXP SP2 / DirectX 9c

詳細仕様 : http://dynabook.com/pc/catalog/dynabook/030512g8/spec.htm
URL : http://dynabook.com/pc/catalog/dynabook/030512g8/hard.htm
----------------------------------------------------------------

469 :デフォルトの名無しさん:2008/09/21(日) 22:44:37
で、C/C++と何の関係があるのかをまずは明確に説明しろ。

470 :デフォルトの名無しさん:2008/09/21(日) 22:46:44
DirectX初心者質問スレ、って言ってもここはプログラム板なんだが…

471 :デフォルトの名無しさん:2008/09/21(日) 22:49:53
>>468
リカバリーしる!

472 :デフォルトの名無しさん:2008/09/21(日) 23:01:33
そういうときはOS再インスコでまっさらな状態にするのと簡単に直る。
長年使ってると色々な所でボトルネックが増えてきて新品時とはありえないほどパフォーマンスが落ちる。

473 :デフォルトの名無しさん:2008/09/22(月) 00:52:58
リカバリーだな

それでも「途中で落ちてくる」場合は放熱系の性能が落ちてるかもしれんね
なら分解して掃除機orサポート逝きだな

474 :デフォルトの名無しさん:2008/09/22(月) 00:56:10
サポートやってるとそれぐらいのは来るんじゃね?

475 :デフォルトの名無しさん:2008/09/22(月) 09:54:47
DirectX勉強中なのですがDirectXにはテキストボックスとかは
無いのでしょうか?
全部自前でやるのでしょうか?

476 :デフォルトの名無しさん:2008/09/22(月) 10:04:49
なんか定期的にその話出るな・・・
やり方は複数ある。もちろん自前でやってもいい

477 :デフォルトの名無しさん:2008/09/22(月) 13:06:00
ヘタレの俺はダイアログ出してそこにエディットコントロールだがな・・・

478 :デフォルトの名無しさん:2008/09/22(月) 13:11:07
勉強中ならDXUTでいいんじゃね?
てか、最近のサンプルって全部DXUT使って書いてあるよね

479 :デフォルトの名無しさん:2008/09/22(月) 13:27:30
凝り性の俺は自前で処理する
どうでもいい部分に凝るのはなかなかに楽しい
進捗に貢献しないのでほどほどにしておかないといけないけれど・・・

480 :デフォルトの名無しさん:2008/09/22(月) 13:30:37
給料泥棒ですね

481 :デフォルトの名無しさん:2008/09/22(月) 15:00:38
質問です。
xファイルを読み込んでプログラムでボーンを動かして
アニメーションしたいと考えてますが
ボーンを動かす方法がわかりません
ヒントください...

482 :デフォルトの名無しさん:2008/09/22(月) 15:39:19
ひどい質問だな

483 :デフォルトの名無しさん:2008/09/22(月) 16:12:57
単にスキンメッシュがしたいんです。
ってことなのか
頂点シェーダや固定機能パイプラインを使わないで
CPUでボーンを動かしたいんです。
のどっちなんだ?

484 :デフォルトの名無しさん:2008/09/22(月) 17:55:35
DirectXを使うならbccじゃなくてvc++のほうを使ったほうがいいんでせうか?


485 :デフォルトの名無しさん:2008/09/22(月) 17:57:03
C++自体もVCの方がいいよ

486 :デフォルトの名無しさん:2008/09/22(月) 18:41:22
XFile
なんとかAllocaterとか使わず
自前で読み込んでやってみたら意外と簡単で感動した

487 :デフォルトの名無しさん:2008/09/23(火) 18:02:38
すいません、ここの処理がよく分からないのですが

//--------------------------------------
// 背景を描画
//--------------------------------------
// Z比較を行なう
pD3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE);

// 元画像に合わせてオブジェクトのスケールを変える
if(m_imgInfoBack.Height != 0) {
aspect = (float)m_imgInfoBack.Width / (float)m_imgInfoBack.Height;
}
vScale.x = aspect;
D3DXMatrixScaling(&mScale, vScale.x, vScale.y, vScale.z);
mWorld = mScale;

// ワールド変換マトリックスをパイプラインにセット
pD3DDevice->SetTransform(D3DTS_WORLD, &mWorld);

これだけじゃ質問の意味が分からないかもしれません・・・、申し訳ない

// 元画像に合わせてオブジェクトのスケールを変える の所の処理について説明してもらえませんか
よろしくお願いします

488 :デフォルトの名無しさん:2008/09/23(火) 18:26:42
正方形状に頂点を配置してるから、元画像の縦横比を保つために変換行列で正方形を横に広げることを指示してる。

489 :デフォルトの名無しさん:2008/09/23(火) 19:14:07
>>488

ありがとうございます

490 :デフォルトの名無しさん:2008/09/24(水) 16:13:21
GPUの描画能力を活かして描画ソフト(ポリゴンで二次元的な線や図形を描く)を作りたいのですが、
最終的にレンダリングされた画面をファイルに保存するときはどのような手順を踏めばよいでしょうか?

491 :デフォルトの名無しさん:2008/09/24(水) 16:24:40
つD3DXSaveTextureToFile

492 :490:2008/09/24(水) 17:28:10
>>491
ありがとうございました!!

493 :デフォルトの名無しさん:2008/09/24(水) 18:19:38
最強の入門書は?


494 :デフォルトの名無しさん:2008/09/24(水) 19:15:33
DirectX以前の質問になってしまうが、教えて欲しい。
直方体や円柱の林の中を一人称視点で移動できるようなプログラムが
組める位までの知識が欲しいんだけどお勧めの書籍とかある?

当方のスキルは算数は困らん程度に出来るが、数学は微妙だ。
プログラムの言語はCとC++は一通り出来る(はず)。
MFC使って自分用のツールを作る程度のことは出来る。


495 :デフォルトの名無しさん:2008/09/24(水) 20:45:39
http://sorceryforce.com/programing/mdx/
こんなわかりやすいサイトないですか?

496 :デフォルトの名無しさん:2008/09/24(水) 22:49:58
キーボード、マウス、ゲームコントローラーとして認識されていない機器をDirectInputで扱うことはできますか?

トランジスタ技術8月号についてきた78k0マイコンにスイッチを付けてコントローラーの様にしようと思ったのですが、
パソコンには仮想comポートとして認識されているため途方に暮れてます。

497 :デフォルトの名無しさん:2008/09/25(木) 09:55:44
ドライバ書くのがいいかも。
って署名なしは入れにくいか

498 :デフォルトの名無しさん:2008/09/25(木) 11:39:02
>>494
三角関数、ベクトル、行列あたりの知識は絶対必要。


499 :デフォルトの名無しさん:2008/09/25(木) 11:46:47
>>494 程度なら行列は使い方だけ分かれば数学的な知識なくても何とかなるけどな

500 :デフォルトの名無しさん:2008/09/25(木) 12:14:29
すみません超初心者版で質問したのですが
スレが消えてしまったのでこちらに改めて質問させてください

リアルタイムロードシステムの妄想をしているのですが
テクスチャをロードする際にMipMapの低レベルサーフェイスから順に
読み込めないかといろいろ試しているのですがいい方法が浮かびません

デバイスのCreateTextureで必要なバッファを確保し、あとから自力で
DDSファイルなりを読み込んでロックして放り込めば出来るかと思ったのですが
D3DPOOL_DEFAULTで作成したものしかロックできないんだとか
USAGE_DYNAMICは効率が悪いから使いたくないよ・・・・

なんかいい方法ないでしょうか?


501 :デフォルトの名無しさん:2008/09/25(木) 12:40:31
>USAGE_DYNAMICは効率が悪いから使いたくないよ・・・・
この考えが間違っている
使え

以上

502 :デフォルトの名無しさん:2008/09/25(木) 13:47:54
>>501 回答ありがとうございます!
リファレンスのD3DUSAGE_DYNAMICを見直してみたところ、
頂点バッファに関しては配置場所が変わる可能性があるようですが、
テクスチャに関しては特にそういった記述が見当たりませんでした。

つまりテクスチャに関してはDYNAMICにしても、速度的なデメリットは無いんでしょうか?
宜しくお願いしますm(_ _)m

503 :デフォルトの名無しさん:2008/09/25(木) 15:15:51
MipMapの低レベルサーフェスから順に読み込む理由が知りたい。
っていうか、Lockできる条件を勘違いしてるだろ。

>D3DPOOL_DEFAULT で作成されたテクスチャはロックできない。
(SDKのヘルプより)

504 :494:2008/09/25(木) 16:02:40
>>498、499
とりあえず教えて貰ったキーワードを元に、
ググる先生に参考書になりそうな本を聞いてくる。


505 :デフォルトの名無しさん:2008/09/25(木) 16:05:47
>>504
来月始め頃にちょうどいいのが出るような気がした

506 :デフォルトの名無しさん:2008/09/25(木) 16:08:09
っと、名前忘れてたんで探してきた、これだ
ttp://www.oreilly.co.jp/books/9784873113777/
もちろん1行も読んでないので、どんなもんかはわからん。

507 :デフォルトの名無しさん:2008/09/25(木) 16:12:26
移動するくらいなら算数だけできればおk

508 :500:2008/09/25(木) 16:20:39
低レベルから順にロードする理由は、数フレームにわたってリアルタイムロードする場合は
低解像度でもいいので出来る限り早く読み込んで表示したいからです

それから
>D3DPOOL_DEFAULTで作成したものしかロックできないんだとか

>D3DPOOL_DEFAULTで作成したものは、USAGE_DYNAMICを指定しないとロックできないんだとか
の間違いでした。すみません


509 :デフォルトの名無しさん:2008/09/25(木) 17:00:08
>>508
D3DPOOL_DEFAULTならLockするより、UpdateTextureや
UpdateSurfaceを使った方が速い。

510 :500:2008/09/25(木) 17:45:03
ご意見どうもです

UpdateSurfaceでやると、ロックするのと違いなぜ速くなるのでしょうか?
システムメモリ上にもテクスチャを作ることになりそうであまりやりたくないかなと^^;

また、D3DXLoadSurfaceFromMemoryと言う関数を見つけたのですが、
これで代用することもできますでしょうか?

511 :デフォルトの名無しさん:2008/09/25(木) 17:58:41
入門書はなにがよろしくって?

512 :デフォルトの名無しさん:2008/09/25(木) 19:22:44
>>510
UpdateTextureはDMAが使用される。
転送速度そのものは、DMAを使おうが使うまいが大差ないが
DMAの場合は転送中にCPUがフリーになって他の処理ができる。

513 :デフォルトの名無しさん:2008/09/25(木) 21:32:03
>>512
それならMANAGEDでいいですやんって話

514 :デフォルトの名無しさん:2008/09/25(木) 23:44:30
ポイントプリミティブを同じ座標に描画して色のブレンドを行いたいのですが上手く行きません。

これは無理なことなんでしょうか?

515 :デフォルトの名無しさん:2008/09/26(金) 02:42:55
directx10 SDK だとdirectsoundが使えないとかないよね?

音が鳴らない・・・

516 :デフォルトの名無しさん:2008/09/26(金) 07:46:42

音だけ鳴らす最小限のサンプルを見つけて、そこからチェックしてみたら?


517 :デフォルトの名無しさん:2008/09/26(金) 07:49:48
DirectX10のSDKなんてないだろ。
DirectSound自体はDirectX8の頃から変わってないし最新SDK使ってても普通に鳴るぞ。

518 :デフォルトの名無しさん:2008/09/26(金) 12:12:09
自分のプラグラムのバグだとは思わないのかね
何でも人のせいにするんじゃないよ

519 :デフォルトの名無しさん:2008/09/26(金) 12:18:32
directx10 SDK→Vistaを使ってる
VistaとDirectSoundの相性関係でうまく再生できてない

って事はない?
何れにしろ再生できるはず

520 :デフォルトの名無しさん:2008/09/26(金) 12:54:06
存在しないSDKの名を上げ、何をどうしたのかも書かず、
自分のプログラムを疑わず他人のせいにする。

プログラマ適性0だから、そのそも足を洗うのが正しい選択だろう。

521 :デフォルトの名無しさん:2008/09/26(金) 17:27:24
OpenALへようこそ

522 :デフォルトの名無しさん:2008/09/26(金) 17:41:30
やっぱそういう流れなのかな^^;
日本語ドキュメントさえあればそれでもいいんだけど

XAudio2ってどうなってんの?未だ未完成だよね

523 :デフォルトの名無しさん:2008/09/26(金) 17:46:29
3DCGツールにボーンってあるじゃないですか?
あれってDirectXの機能じゃないですよね?
自分で実装する領域ですよね?
素人ですまそ。

524 :デフォルトの名無しさん:2008/09/26(金) 17:48:16
補助機能みたいなのはあるにはあるが自分で実装する部分だね

525 :デフォルトの名無しさん:2008/09/26(金) 17:50:46
>>524
そうですよね。ありがとうございます。

例えば人体のモデルがあったとしても
ボーンを入れるならボーンごとにモデルを分けないと
いけないってことですよね。

526 :デフォルトの名無しさん:2008/09/27(土) 15:14:37
>ボーンごとにモデルを分けないと
頂点バッファやインデックスバッファ自体はひとつでもいい。
各頂点にボーンの番号付けて、頂点シェーダでそれ見て変換する。

527 :デフォルトの名無しさん:2008/09/27(土) 15:29:06
>>525
別のボーンに限らずモデル描画自体は自分で全部実装する部分なのでボーンだけが特別なわけじゃない。

528 :デフォルトの名無しさん:2008/09/27(土) 15:58:52
>>459と同じ状況に陥りました。拡大するとより一層モアレが目立ちます。

デバイスタイプをHALからREFに変えたら画像がはっきりするのですが、
かなり重たくなってしまいます。
REFを使わないでモアレを消す方法を知っている方がいればお願いします。

PCは「Let'Note」で「directx9 」使ってます。

529 :デフォルトの名無しさん:2008/09/27(土) 16:48:55
ビデオカードを変える

530 :デフォルトの名無しさん:2008/09/27(土) 16:52:16
ビデオカードによって見た目は変わるんだよ

現状でモアレを消すならミップマップを使う、モアレの出ないような絵にする

531 :デフォルトの名無しさん:2008/09/27(土) 17:29:54
>>529 >>530 ビデオカード変えたらかなり綺麗になりました。
こんなに変わるものなんですね・・・
ミップマップの方も挑戦しようと思います。
アドバイスくれた方ありがとう御座いました m(>_<)m









532 :デフォルトの名無しさん:2008/09/27(土) 20:38:37
>>531
デバイスの初期値もあまりあてにはならない。
全てのステートを起動時に初期化するべき。

あとビデオカードのユーティリティで強制的に
異法性フィルタやMSAAとかがONになっている可能性もある。

533 :468:2008/09/28(日) 00:10:55
>>471-473
レスが遅れてしまいましてすみません。
貴重なご意見をありがとうございました。
皆さんの意見を参考に、こちらで色々と作業をやってみたいと思います。
原因解消の復旧というか、最後の手段はやはりOSの再セットアップしかなさそうですね。


がっばってみます。

534 :504:2008/09/29(月) 14:06:49
>>505-506
レスが遅くなってすまん。
まさにぴったりなタイトルだよ。 マジサンクス。
早速、密林に予約した。

535 :デフォルトの名無しさん:2008/09/29(月) 18:24:39
DirectX9勉強して1年になるのですが、関数が多すぎて全部覚えられそうにありません・・・。

皆さんはどんなふうに覚えてますか?

536 :デフォルトの名無しさん:2008/09/29(月) 18:26:36
名前とかスコア表示用にアルファベットと数字のビットマップを等間隔で出力するツールってないかな?


537 :デフォルトの名無しさん:2008/09/29(月) 18:29:14
>>536

SentSentBampTool ???



538 :デフォルトの名無しさん:2008/09/29(月) 18:39:28
>>535
覚えない
いつもMSDNを参照してる

539 :デフォルトの名無しさん:2008/09/29(月) 18:53:09
>>535
関数を沢山覚える必要はないが、

貴方のやりたい事にもよるけど、例えば

マルチパスレンダリングの手順などは覚えていた方がいいと思う。

皆はどう思う?

540 :デフォルトの名無しさん:2008/09/29(月) 21:32:07
DirectX 初心者です。 DirectX9 を用いて下記のことを
やっているのですが、上手く表示が出来なくて困っています。

DrawPrimitiveにてD3DPT_TRIANGLELISTを指定して
4つ三角形をテクスチャを貼り付けてレンダリングしようと
しているのですが、D3DRS_ZENABLE=TRUE , D3DRS_ZWRITEENABLE=TRUE
とした時にテクスチャがうまく貼り付けられなくて困っています。
D3DRS_ZENABLE=FALSE とすると、うまく貼り付けられるのですが
今度は各三角形を個別に描画したような絵になってしまいます。

D3DRS_ZENABLE=TRUE, D3DRS_ZWRITEENABLE=TRUEでも、D3DRS_ZFUNCに
D3DCMP_ALWAYS とするとテクスチャはうまく貼り付けられるのですが、
D3DRS_ZENABLE=FALSE とした場合同様、各三角形を個別に描画した
ような絵になってしまいます。

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


541 :デフォルトの名無しさん:2008/09/29(月) 22:29:13
Zの問題とテクスチャの問題は別だ
まずZENABLE=FALSEの状態で正しく描画されるようにしよう
うまく描けたら、ZENABLE=TRUEの状態でもいけるように直す

テクスチャ座標がまずいんでない?

542 :デフォルトの名無しさん:2008/09/29(月) 22:39:00
>>541
ありがとうございます。 こんな感じで定義しています。

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_TEX1 )

typedef struct {
FLOAT x, y, z;
FLOAT u,v;
} CUSTOMVERTEX;

CUSTOMVERTEX vertices[] = {
{ 0.0f, 0.5f, -0.5f, 0.0f, 0.0f },
{ 0.0f, 0.5f, 0.5f, 1.0f, 0.0f },
{ 0.0f, -0.5f, -0.5f, 0.0f, 1.0f },

{ 0.0f, 0.5f, 0.5f, 1.0f, 0.0f },
{ 0.0f, -0.5f, 0.5f, 1.0f, 1.0f },
{ 0.0f, -0.5f, -0.5f, 0.0f, 1.0f },

{ -0.5f, 0.5f, 0.0f, 0.0f, 0.0f },
{ 0.5f, 0.5f, 0.0f, 1.0f, 0.0f },
{ -0.5f, -0.5f, 0.0f, 0.0f, 1.0f },

{ 0.5f, 0.5f, 0.0f, 1.0f, 0.0f },
{ 0.5f, -0.5f, 0.0f, 1.0f, 1.0f },
{ -0.5f, -0.5f, 0.0f, 0.0f, 1.0f }
};

よろしくお願いします。


543 :デフォルトの名無しさん:2008/09/29(月) 23:18:37
>>541
すみません。
ZENABLE=FALSE の時には正しく描画されているように見えます。
ただ、1つ1つの三角形を個別にレンダリングしたような感じになっ
てしまいます。(陰影などが全く反映されません)

よろしくお願いします。

544 :デフォルトの名無しさん:2008/09/29(月) 23:47:55
それは、テクスチャが貼れてないだけ?
ポリゴン自体は描けてる?
Zバッファのクリアをミスってるとか

545 :デフォルトの名無しさん:2008/09/29(月) 23:51:19
法線がないようだが、ライティングはオフにしてる?

546 :デフォルトの名無しさん:2008/09/29(月) 23:57:28
>>544
>>545
ありがとうございます。

はい、テクスチャがうまく描画されないだけみたいです。

Zバッファのクリアはとくにしていないのですが、どうやれば
良いでしょうか?

はい、ライティングは無効にしてあります。

SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
SetRenderState( D3DRS_LIGHTING, FALSE );
SetRenderState( D3DRS_ZENABLE, TRUE );
SetRenderState( D3DRS_ZFUNC, D3DCMP_LESSEQUAL );
SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
SetRenderState( D3DRS_ALPHATESTENABLE, FALSE );
SetRenderState( D3DRS_SPECULARENABLE, FALSE );
SetRenderState( D3DRS_DITHERENABLE, FALSE );
SetRenderState( D3DRS_FOGENABLE, FALSE );
SetRenderState( D3DRS_SPECULARENABLE, FALSE );
SetRenderState( D3DRS_RANGEFOGENABLE, FALSE );
SetRenderState( D3DRS_STENCILENABLE, FALSE );

よろしくお願いします。

547 :デフォルトの名無しさん:2008/09/30(火) 00:10:28
>>544
>>545
ありがとうございます 動きました!
Zバッファをクリアする必要があることを知りませんでした。。。orz...

本当にありがとうございました。

548 :デフォルトの名無しさん:2008/09/30(火) 13:02:49
すごく初歩的な質問で恥ずかしいのですが・・・
DirectXで3Dゲームを作る場合、3Dグラフィクス自体は(キャラクターのモーションなど)専用のグラフィックツールで作ると言う形なのでしょうか?

549 :デフォルトの名無しさん:2008/09/30(火) 13:09:52
あ・た・り・ま・え

550 :デフォルトの名無しさん:2008/09/30(火) 17:44:47
1>gamemain.cpp
1>c:\documents and settings\^^^^^^\デスクトップ\src\test90walking\test1\../../class/classlib.h(70) : fatal error C1083: include ファイルを開けません。'dpaddr.h': No such file or directory

これと同じエラーが20個もでてコンパイルできないのですがどう対処すればいいのでしょうか・・・?

3Dリアルタイムアニメーションという書籍のサンプルです。

551 :550:2008/09/30(火) 17:45:25
dpaddrというヘッダファイルがどこにもなくて・・・。

552 :デフォルトの名無しさん:2008/09/30(火) 17:56:38
DirectX SDK には以下のコンポーネントは含まれなくなりました。

Direct3D 8 とそれ以前のすべてのバージョン
Direct3D RM
DirectAnimation
DirectMusic
DirectInput7 およびそれ以前のすべてのバージョン
DirectPlay
DirectPlayVoice
DirectX 8 時代の HRESULT 変換ルーチン
Managed DirectX サンプルとドキュメント
これらのコンポーネントをご利用になりたいデベロッパーは、MSDN から入手可能な August 2007 DirectX SDK をダウンロードする必要があります。

553 :デフォルトの名無しさん:2008/09/30(火) 17:56:48
DirectPlay関連のヘッダーだろ
DirectX8のSDKにあるんじゃないかな。

554 :デフォルトの名無しさん:2008/09/30(火) 18:09:13
ありがとうございます
インストールしてみます

555 :デフォルトの名無しさん:2008/09/30(火) 22:17:42
BCCでDirectXを使うにはどうすればいいんですか?


556 :デフォルトの名無しさん:2008/09/30(火) 22:20:24
SDK入れよう

557 :デフォルトの名無しさん:2008/10/01(水) 00:45:19
>>548に便乗して質問。
どんなグラフィックソフト使ってる?

558 :デフォルトの名無しさん:2008/10/01(水) 07:37:30
3DS MAX

559 :デフォルトの名無しさん:2008/10/01(水) 08:36:05
うらやましい限りだぜ
俺はBlender

560 :デフォルトの名無しさん:2008/10/01(水) 09:14:54
Mayaってどうなんだろ

561 :デフォルトの名無しさん:2008/10/01(水) 09:39:52
この手のツールは無料から始めたほうがよさげ。
使い切れずに放り投げるには高すぎるからなw

562 :デフォルトの名無しさん:2008/10/01(水) 09:50:07
金があったら
ZBrush+3DSMAXが最強な希ガス

563 :デフォルトの名無しさん:2008/10/01(水) 10:30:15
俺はMikuMikuDance


564 :デフォルトの名無しさん:2008/10/01(水) 10:35:51
MAXの無料版ってもう無いの?

565 :デフォルトの名無しさん:2008/10/01(水) 10:42:11
先日買った書籍に3Dリアルタイムアニメーションというのがあるのですが。

LightWaveで作ったアニメーションをUViewで読み込んでOBJ形式で描きだして
DirectXで読み込む方法を使っているのですがUViewは現在販売していないらしく
他のソフトで代用して欲しいと最後に筆者が記述していたのですが
他のソフトってどんな物があるのですか?

何個か教えてもらえたら嬉しいです!

566 :デフォルトの名無しさん:2008/10/01(水) 11:41:51
obj形式なら普通にエクスポート出来ると思うが?
じゃなくてOBJ形式をXファイルに変換とか?
何れにしてもLightWaveの標準機能で出来た希ガス

567 :デフォルトの名無しさん:2008/10/02(木) 10:46:19
ID3DXEffectを使用した場合、シェーダのグローバル変数の共有や、ステートの一括変更などが可能ですが
これらの処理をID3DXEffectを使用しないで自前で実装することは可能でしょうか?

リファレンスを見ているのですが、変数を共有する方法は全く見当たりませんし
ステートブロックを自前で管理したとしても、API呼び出しは回数は減らせないですよね?

ID3DXEffectを使用しないという人は結構いると思うのですが、この辺はどうやって解決しているんでしょうか・・・
宜しくお願いしますm(_ _)m

568 :567:2008/10/02(木) 10:51:24
すみません、ステートブロックに関してはIDirect3DStateBlock9が使えることが分かりました
これに関しては何とかなりそうです。

569 :デフォルトの名無しさん:2008/10/02(木) 11:06:45
俺はMayaかってしまった。マジすごいなこれ。


570 :デフォルトの名無しさん:2008/10/02(木) 12:05:45
ブルジョワジーめ

571 :デフォルトの名無しさん:2008/10/02(木) 16:20:40
August 2007のDirectX SDKを入れていますが、IA64のライブラリがついていません。
付属してるバージョンのSDKを知ってる方はいませんか?

572 :デフォルトの名無しさん:2008/10/02(木) 16:34:22
うああああああ
シェーダー定数の共有のさせ方わっかんねーwww
燃えてきたぜ

573 :567:2008/10/02(木) 17:22:54
結局sharedキーワードでうまく共有する方法は分からないが
レジスタを直接指定すれば共有できることは分かった
取りあえずこれでいこうと思います。もっといい方法があったら教えていただけると助かりますm(_ _)m

574 :デフォルトの名無しさん:2008/10/02(木) 22:51:57
>>573
1、ID3DXEffectPoolオブジェクトを作成(D3DXCreateEffectPoolを使用)
2、sharedをつけた変数を宣言したFXファイルを作成
3、共有したいFXファイル全てに2のFXファイルをインクルード
4、3のFXファイルをコンパイル時、D3DXCreateEffectに1のID3DXEffectPoolオブジェクトを引数で渡す。

575 :デフォルトの名無しさん:2008/10/02(木) 22:59:03
ん?
ID3DXEffectを使わないで変数の共有をしたいって言ってるのか?
そりゃー、逆アセンブルしてD3DXがどう解決しているか確認してみりゃいいんじゃね
まーEffectPoolなんて使ってる以上、力技だろってのは想像がつくがな

576 :デフォルトの名無しさん:2008/10/02(木) 23:04:30
単純に変数を一時的にEffectPoolに入れておいてるだけで、
結局描画時に全部毎回マッチングしてレジスタに設定してるんじゃ無いっけ?

あくまでユーザー側からは同じ変数のように見えているだけで。

577 :デフォルトの名無しさん:2008/10/03(金) 08:32:57
>>576
マジすかw
だとしたら効率的には何の意味もないんだな^^;

578 :デフォルトの名無しさん:2008/10/03(金) 10:58:52
頂点シェーダーにハードウェア対応していないグラフィックカードでは
頂点処理はCPUで実行されると思いますが、その場合に
D3DPOOL_DEFAULTを指定して作成したっ頂点データは
システムメモリ上に配置される可能性が高いんでしょうか?

システムメモリ上に配置されるということはレンダリングの度にシステムメモリから
ビデオカードへのデータ転送が発生しているのでしょうか?

579 :デフォルトの名無しさん:2008/10/03(金) 13:08:38
>>576
そういえば、頂点シェーダー(VS)とピクセルシェーダ(PS)を別々にビルドしてセットする場合って、
VSとPSそれぞれの定数テーブルに値をセットする必要があると思うけど
(VSとPSでレジスタ空間が違うからなのか?違うよね?)
この辺もD3DXEffect系使った時って意識しないから、やっぱD3DXEffect系は内部でいろいろやってるのか…

580 :デフォルトの名無しさん:2008/10/03(金) 20:26:43
1>.\MapModel.cpp(622) : error C2065: 'DXFILEFORMAT_BINARY' : 定義されていない識別子です

最後にこのエラーだけ解決できません・・・。

対処方法を教えていただけませんか?

581 :デフォルトの名無しさん:2008/10/03(金) 20:32:44
>>578
頂点変換をハードウェアで対応してなければ
システムメモリから転送するしかない。

RadeonHD3450が5000円で買えるんだから
素直にDirectX10対応のビデオカード買えばいい。

>>579
かといって自分で全部管理した方が速くなるのか?という話になると
どちらかといえば遅くなるだろうから素直にID3DXEffect使う方がいい。

すでにDirectX10ではそれしかないし。


582 :580:2008/10/03(金) 20:37:52
if (FAILED(D3DXSaveMeshToX(name, pMesh, NULL, material, NULL, 3, DXFILEFORMAT_BINARY)))
return false;
return true;
}

コードです

583 :デフォルトの名無しさん:2008/10/03(金) 20:55:18
>>582

使ってるSDKが新しすぎるんじゃね?

よく分からんわ

584 :デフォルトの名無しさん:2008/10/03(金) 22:28:42
>>580
それは、dxfile.hに定義がある。
使いたければ、includeしろ。
てか、それ間違ってるんで
#include <d3dx9xof.h>
を追加して
D3DXF_FILEFORMAT_BINARYを使え。

585 :デフォルトの名無しさん:2008/10/03(金) 22:33:51
おまいらどうやってDirectX勉強したの?
独学?

586 :デフォルトの名無しさん:2008/10/03(金) 22:45:02
独学

587 :デフォルトの名無しさん:2008/10/03(金) 23:00:30
すっげー

588 :デフォルトの名無しさん:2008/10/03(金) 23:05:32
俺はDirectX5の頃からだぞ、なめんな
あと歳は聞くな

589 :デフォルトの名無しさん:2008/10/03(金) 23:13:15
WinGから
じじい言うな

590 :デフォルトの名無しさん:2008/10/04(土) 00:11:11
d3dx9_xx.dllにはいろんなバージョンがありますが、ロードするのは一番数字が大きいものでいいのでしょうか。
それとも、各バージョンごとで互換性が低いのでしょうか。

591 :デフォルトの名無しさん:2008/10/04(土) 01:15:57
つかってるSDKによって勝手に対応するバージョンのものが呼ばれる

592 :デフォルトの名無しさん:2008/10/04(土) 01:23:05
それはd3dx9.libをリンクしていたらってことですよね。
友達にプログラムを渡したら二人が二人ともd3dx9_xx.dllがないとエラーが出るといっていたので、
とりあえず一番に、最新のDirectXを入れるように言ったのですが、
プログラム側で選択してもよいものなのかと疑問に思ったのです。

593 :デフォルトの名無しさん:2008/10/04(土) 01:28:19
>>592
>プログラム側で選択してもよいものなのかと疑問に思ったのです。

それをやれるだけのスキルがあるならやればいいと思うけど、
「やってみたいんですけどうまくいきません」というのならやるなと言いたい。

594 :デフォルトの名無しさん:2008/10/04(土) 01:31:04
>>592

Web Installerで全部のd3dx9_xx.dllをインストールしてくれるから、これ実行してもらうといいよ。
http://www.microsoft.com/downloads/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=ja

595 :デフォルトの名無しさん:2008/10/04(土) 01:37:51
ということは少なからず差異があるようですね。
>>594のページを教えて、インストールさせようと思います。
ありがとうございました。

596 :デフォルトの名無しさん:2008/10/04(土) 05:27:32
Direct3D 9 Driver Development Kitなんて何処にあるんだ・・・?

597 :デフォルトの名無しさん:2008/10/04(土) 07:23:51
ぶっちゃけ
自分のPCにはいってる一番番号の大きいdllを
exeと同じフォルダに入れて渡せば動くよ

598 :デフォルトの名無しさん:2008/10/04(土) 10:49:32
>>588
WinG〜GameSDK

599 :デフォルトの名無しさん:2008/10/04(土) 13:29:21
typedef struct _D3DLVERTEX {
D3DXVECTOR3 pos;
D3DCOLOR color;
D3DCOLOR specular;
D3DVALUE tu;
D3DVALUE tv;
} D3DLVERTEX, *LPD3DLVERTEX;

#define D3DFVF_LVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1)

_D3DLVERTEX についている_の意味ってなんですか?

600 :デフォルトの名無しさん:2008/10/04(土) 13:44:02
別にそこで使った名前は他で使わないから適当でううんだけど
よそと名前がぶつかったら困るでしょ。
そのために自分たちだけで決めたルール

601 :デフォルトの名無しさん:2008/10/04(土) 14:30:43
なるほど そういうことですか

ありがとうございjます

602 :デフォルトの名無しさん:2008/10/04(土) 22:58:01
おしえてください。

ウィンドウサイズの変更イベント OnSize() の中で、
Reset() を使っているのですが、D3DERR_INVALIDCALL
というエラーが出て先に進めなくてこまっています。orz...

D3DPRESENT_PARAMETER の中身は、

BackBufferWidth 0
BackBufferHeight 0
BackBufferFormat D3DFMT_X8R8G8B8
BackBufferCount 0
MultiSampleType D3DMULTISAMPLE_NONE
MultiSampleQuality 0
SwapEffect D3DSWAPEFFECT_DISCARD
hDeviceWindow = GetSafeHwnd() で取得したハンドル
Windowed 1
EnableAutoDepthStencil 1
AutoDepthStencilFormat D3DFMT_D16
Flags 0
FullScreen_RefreshRateInHz 0
PresentationInterval 0

です。

よろしくお願いします m(_ _)m

603 :デフォルトの名無しさん:2008/10/04(土) 23:02:45
ウィンドウハンドルがNULLとか

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

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

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

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

よろしくお願いします。

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

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

早速ためしてみます。

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



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

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

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

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

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

612 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/07(火) 16:14:53
第一引数にD3DXSPRITEを渡さないとダメ
最新のSDKのマニュアルとサンプルを見るべし

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

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

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

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


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

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

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

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

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

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

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

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

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

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

>>552

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

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

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

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

633 :629: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 :デフォルトの名無しさん:2008/10/09(木) 20:07:33
>>633
関係ないけど ,演算子をそんな風に使う人は初めて見た

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

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

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

638 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/09(木) 20:36:35
望む結果に応じて好きな順序で掛ければ良い

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

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

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

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

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



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

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

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

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

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

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

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

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

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

構文

HRESULT SetDialogBoxMode( BOOL bEnableDialogs );


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

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

天才が居たら助言頼む

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

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

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

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

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

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

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

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

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

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

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

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

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

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

660 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/11(土) 20:48:44
>>660

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

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

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

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

665 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/12(日) 09:28:51
returnの意味がわかってないのか?

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

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

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

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

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

670 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/12(日) 22:06:17
>>589

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

688 :687:2008/10/14(火) 10:38:53
って、指摘済みだったか

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

706 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/10/15(水) 23:20:15
>>706
アドレッシングモードがクランプじゃなくね?

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

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

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

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

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

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

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


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

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

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


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

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


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

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

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

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

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

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

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

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

723 :デフォルトの名無しさん:2008/10/16(木) 17:44:58
>>721
煽るだけでまともな回答がされてないからじゃね?

724 :デフォルトの名無しさん:2008/10/16(木) 18:15:37
どう質問するのも自由
どう答えるのも自由
お礼も必要ないし答える必要もない
フリーダムだよ

725 :デフォルトの名無しさん:2008/10/16(木) 18:42:53
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。


726 :デフォルトの名無しさん:2008/10/16(木) 19:11:07
守られていないテンプレ貼ってもな。

727 :デフォルトの名無しさん:2008/10/16(木) 19:20:54
平たいポリゴン作ってテクスチャを張ると
こんな感じでちぎれたみたいになるんだけど
どうすればいいの?
ttp://image02.wiki.livedoor.jp/n/o/nijiguro/a17cc0db.jpg


728 :デフォルトの名無しさん:2008/10/16(木) 19:41:58
ブラックジャックによろしく!

729 :デフォルトの名無しさん:2008/10/16(木) 19:48:03
>>727 にゅう

730 :デフォルトの名無しさん:2008/10/16(木) 19:48:57
>>727
Zバッファが薄すぎるんじゃね?

731 :デフォルトの名無しさん:2008/10/16(木) 20:11:51
あー床に刺さったポリゴンがテロテロになってるんだね
エエエー('д`)

732 :デフォルトの名無しさん:2008/10/16(木) 20:36:05
EDITコントロールもDXUTも使わずに
DirectXで描画してる画面で文字入力ができるゲームとか
どんな技術つかってるんだろうか

733 :デフォルトの名無しさん:2008/10/16(木) 21:33:10
別にEDITコントロールだって
普通にウィンドウプロシージャ
だけでやってるんだぜ?

734 :デフォルトの名無しさん:2008/10/16(木) 21:40:03
DXUTだってDirectXで描画して文字入力が出来るんだから、
同じこと自分でやれば出来るに決まってると思うが

735 :デフォルトの名無しさん:2008/10/16(木) 21:47:42
そんな当たり前のこと言われても
そのやりかたが分かんないからすごいなと言ってるんだが

736 :デフォルトの名無しさん:2008/10/16(木) 21:54:57
単に文字表示をやってるだけでしょうに
文字変換ならIMEやIMMやTSFを呼んだり

737 :デフォルトの名無しさん:2008/10/17(金) 01:18:38
>>735
やり方もなにも、エディットコントロールの自作くらいで
疑問に思うことなんてほとんどないと思うが。
プロポーショナルフォントだと面倒だなーと思う程度。

738 :デフォルトの名無しさん:2008/10/17(金) 01:51:16
DirectXってMFCのダイアログウィンドウ上にも表示できるんですか?DirectX用の画面が必要なんですか?

739 :デフォルトの名無しさん:2008/10/17(金) 04:27:06
できるよ。
がんばれ。

740 :デフォルトの名無しさん:2008/10/17(金) 07:04:21
>>735はプログラマ向いてないと思う

741 :デフォルトの名無しさん:2008/10/17(金) 08:17:39
>>838
ピクチャーボックスとか適当なコントロールを配置して
そいつのウィンドウハンドルでデバイスつくれば
そのコントロールに対して描画できる

742 :デフォルトの名無しさん:2008/10/17(金) 08:32:57
そんなんせんでも、Present()時に書きたいウィンドウのハンドル指定すりゃドコにでもかけるぞ。

743 :デフォルトの名無しさん:2008/10/17(金) 09:35:58
ソフトバンククリエイティブの3D格闘ゲームプログラミング、ちょっと読んでみたんですが
Xファイルを、メッシュ、面、法線と、順番にトークンごとに区切って読み込んでいたのですが
そんな方法しかないのでしょうか?
上から読んで行き、メッシュという文字があれば。。。のような感じでした。

744 :デフォルトの名無しさん:2008/10/17(金) 09:41:26
D3DXの関数使って読めばいいじゃないか。
Xファイルなんていちいち自前でパースする意味がわからんし。

745 :デフォルトの名無しさん:2008/10/17(金) 09:48:33
はー
こんなのマスターできる気がしねー
俺はおまいらに劣っているニカ?

746 :デフォルトの名無しさん:2008/10/17(金) 09:55:15
>>747
そうですよね。
テンプレートの読み飛ばしなどを意図してのことだったんでしょうか・・・

747 :デフォルトの名無しさん:2008/10/17(金) 09:57:17
>>744さんでしたorz

748 :デフォルトの名無しさん:2008/10/17(金) 11:41:49
>>743
あの本は一通り読んだけど
ファイルフォーマットとしてXファイルを使っているが
プログラム的にはオリジナルの頂点形式のデータとして扱うために
自力でファイル解析しながら読み込んでる感じだ
解析が甘いから出力したソフトによって読めないファイルとかあるけどな
なぜそんなことしてるかっていうと
ハードの行列レジスタ数に依存せずに
CPUで無制限のボーン行列を変換してスキニングするため
サンプルのモデルは100本くらいボーンが入っててアホかと思ったが
いずれはオリジナルフォーマットとか作りたくなるだろうからいらない知識というわけではない

749 :デフォルトの名無しさん:2008/10/17(金) 12:03:08
行列レジスタなんてないけどね
あと100本くらいなら頂点処理をソフトウェアで走らせればいいだけなのでは?
まあフォーマット理解するのには自前で読み込むのも悪くない

750 :743:2008/10/17(金) 14:26:36
レスありがとうございます。
なるほど・・・ボーンの数を無制限にするなどのために自力で読み込んでいたのですね。
じっくり最後まで読んだわけではないのでボーンが100もあるとは気づきませんでした。
あの本を参考に3Dアクションゲームを作ってみようと思います。
ありがとうございました。

751 :デフォルトの名無しさん:2008/10/17(金) 19:03:40
DirectX難しいよね・・・
C/C++は学んだけど、DirectXはどこから手をつけたら良いかわからない。
Win32APIの知識がいるのかな?
みなさんどうやって勉強したんでしょう・・・

752 :デフォルトの名無しさん:2008/10/17(金) 19:12:27
とりあえずソース付きのサンプルをいじってみる。
SDK付属のでもWEBに転がってるのでも本に付いてるのでも構わない。
Win32APIの知識はそんなに要らない。
Win32Applicationとして実装する最低限のことができればおk。

753 :デフォルトの名無しさん:2008/10/17(金) 21:23:55
managed directxを先にやると楽だよ

754 :デフォルトの名無しさん:2008/10/17(金) 21:26:04
骨が多い場合は頂点レジスタ数に合わせてメッシュを分割して描画するのが一般的だと思うが・・・。
D3DXで読めば分割後のテーブルデータも一緒に出してくれるので
自前フォーマットを使う場合でも中間データとしてはかなり便利だと思うがね。

755 :デフォルトの名無しさん:2008/10/17(金) 21:28:35
>>751
Win32APIじゃなくても、MFCやDXUTにしても、
必要かどうか疑問に思ったら、まず触ってみて簡単な
プログラムを作ってみるといい。
完璧に理解しようなんて思わなくてもいいから。

DirectXを主体にゲームなり作るにしても
他のものに触れるのは決して無駄にならないよ。

756 :デフォルトの名無しさん:2008/10/18(土) 00:39:12
>>745 >>751
やっぱ最小サンプルからだよね。Windowが出るだけ→四角形が出るだけみたいな。
いきなりゲームの完成形とか考えずに、サンプルを継ぎ足しながら理解していき、
そのつど必要になった技術を習得していった方がモチベーションが続くのでは。
俺はMSX-BASICからプログラムとお付き合いのあるオサーンだが、
何を作るにも膨大な基礎知識とコーディング量が必要な現状で、
今からプログラムやライブラリを習得する気概のある人達を素直に尊敬する。

757 :デフォルトの名無しさん:2008/10/18(土) 02:42:31
俺がDirectXを勉強した過程は、挫折、超挫折の繰り返しだなぁ。
そのうち周辺知識がついてすることもなくなって、改めてDirectXの入門書を読んだらすげー理解できてオレすげーってなった。
5年くらいずっと挫折し続けてこれだからなw
ゲームを作りたいだけならそこら辺のライブラリ使った方がいいわ。

まぁ焦らず勉強を続けてくれ。

758 :デフォルトの名無しさん:2008/10/18(土) 09:38:27
5年くらい掛けて勉強するか
5年後というと40歳なわけだがw

759 :デフォルトの名無しさん:2008/10/18(土) 09:41:12
それは流石にはじめるのが遅すぎだろう

760 :デフォルトの名無しさん:2008/10/18(土) 09:45:00
ただの趣味でもダメですか?

761 :デフォルトの名無しさん:2008/10/18(土) 09:58:56
ただの趣味なら10年は掛かるとお伝えしておこう

762 :デフォルトの名無しさん:2008/10/18(土) 12:09:39
1に根気、2に根気だな。
DirectXは精神論で超越できる

763 :デフォルトの名無しさん:2008/10/18(土) 17:24:12
こんなにもレスが(゜Д゜
ありがとうございます。
やっぱり入門するのが一番根気がいりそうですね。
簡単なプログラムを弄るとはいえ、どれが簡単なプログラムなのかも一々ググらないとダメな現状。
そもそもダイレクトXの入門書で詳しくかかれているのが無いようなきもします。


764 :デフォルトの名無しさん:2008/10/18(土) 17:38:40
DirectX = COM + 基礎知識 * 100 + 経験知識
って感じ

765 :デフォルトの名無しさん:2008/10/18(土) 17:44:17
根気もそうだが
何から勉強するかわからないでいきなり入門書買うとかNG
とくにVCBCの入門書はほんとに何もわかってない初心者には意味のないものが多い
そのへんも飛ばして「初心者でもわかるDirectX」みたいな本を手に取ったら挫折確定
まずCを理解してその後win32APIについてキモイくらいに丁寧に解説してる本から入るのが吉

何も知らないでいきなりDirectXの解説書かう馬鹿なんて居ないと思ったアナタ
ここに少なくとも一人いますよ

766 :デフォルトの名無しさん:2008/10/18(土) 18:29:11
学校の図書館にDirectXの本があって
一番後ろのページに、今までどれぐらいの人が借りたか
わかる紙がついてるんだけど、
それは大体10回ぐらい借りられていた。

Game Programing Gemsは誰も借りてなかった。

767 :デフォルトの名無しさん:2008/10/18(土) 18:30:33
DirectXあきらめてWebプログラミングでもやろう

768 :デフォルトの名無しさん:2008/10/18(土) 18:58:21
DirectX6SDKの本買って武器として使った奴ならココにいるぜ

769 :デフォルトの名無しさん:2008/10/18(土) 20:50:51
>>763
片っ端からやれよ
はじめに苦労した分が土台になる

はじめに「本なんていらなかったよw俺がいらなかったもんw」とか
言ってるボケに会うこともあるだろうがそいつはゴミなので無視していい
建築に大事な基礎が死んでるから伸びない
大きいビルを建てるにはそれなりの土台が必要
いまのうちに死ぬほど苦労してちゃんとした土台を作っておけ

っていってもプログラマになんてなったって金になんないんだよね(笑)

770 :デフォルトの名無しさん:2008/10/18(土) 21:22:15
win32の知識も必要だと思う。じゃないと何やってるかわからんだろ。
C++→Win32→DirectXってかんじかな。
C学んだくらいでいきなりDirectXは挫折させる力がある。
弄って覚えるにしても、今はもうサンプルが入ってないみたいだし(上に書いてあったの見ただけだが)

771 :デフォルトの名無しさん:2008/10/18(土) 21:57:45
本なんていらんよ。ネットも使えないゴミはのびない

772 :デフォルトの名無しさん:2008/10/18(土) 22:46:13
>>748
IDirectXFileは元々汎用的に作られてるし
XFileに乗っかるぶんには、自前でパースする必要はない。
何でも自分でやりたがるのは結構だが、本出すならベストな方法を載せろって感じ。
>>743のように勘違いする人もいるようだし、迷惑な話。

773 :デフォルトの名無しさん:2008/10/18(土) 22:49:20
DirectXは最近日本語ドキュメントが出てないのがキツイな。
Direct3D10とかVista専用とあいまって、ますます手を出しにくい。

774 :デフォルトの名無しさん:2008/10/18(土) 23:36:14
ベストな方法載せろってあーた^^;
自分で自分なりのベストな方法を考える事ができない奴は
プログラマとしてはやっていけないよ。

あくまで「参考書」であって「マニュアル」じゃーないぞ。

775 :デフォルトの名無しさん:2008/10/18(土) 23:43:01
本がいらないとかww
ネットでやりたいことの表面の知識しか集めてないのがまるわかり。
DirectXの前にC++とWin32は学ぶべき。後々自分が本当にしたいことが出来たときのためにも

776 :デフォルトの名無しさん:2008/10/18(土) 23:49:48
必要なのはWin32というよりウィンドウシステムの仕組みについて、かな。
デバイス作るのに何でHWNDが必要なのかとかスレッドの流れがどうなってるのかとか
知ってた方が学習しやすいだろう。

777 :デフォルトの名無しさん:2008/10/18(土) 23:59:01
>>775
別に本が役に立たんとは言わんけど、別に必要性はないでしょ。
C++もWin32もネットに十分な情報が転がってるし。
最新の情報は常にネットが先だしな。
その程度の情報も調べられないなら、ネット音痴と言わざるをえない。

「これはこの本にしか載ってない情報なんだ!」
ってのがあればぜひ教えて欲しい所だが、巷にあふれるほとんどの本は
ネットで事足りるような情報しか載っていないよ。

778 :デフォルトの名無しさん:2008/10/19(日) 00:02:42
>>777
本自体の信頼性も、あとで読み返してみるとアレなのもあるよね
昔HTMLのトンデモ本持ってたw

779 :デフォルトの名無しさん:2008/10/19(日) 00:03:45
本にしろネットにしろ、書いてある事だけを丸写しで
自分で何も考えない奴は、結局成長はしないんだよ。

「●●って本に書いてある通りにしたけど動きません」とか
こういう所ですぐ聞くような奴ね。

780 :デフォルトの名無しさん:2008/10/19(日) 00:06:24
それじゃこのスレの意味がなくなるんじゃないか?

781 :デフォルトの名無しさん:2008/10/19(日) 00:10:49
>>780
スレ以前につーちゃんねるが必要ない。

782 :デフォルトの名無しさん:2008/10/19(日) 00:11:39
ネットより本派だけどネットで調べるのが面倒だから本に金払ったっていいやん。
情報のスピードでは負けるけど、そんな事言ったらベンダーが書いてるマニュアルが最速で
それ以外が二次情報になるのは一緒だし

783 :デフォルトの名無しさん:2008/10/19(日) 00:13:40
本がよくないなんて言ってないよ
すごい本ももちろんたくさんある

784 :デフォルトの名無しさん:2008/10/19(日) 00:18:21
本の良いところはどこでも読めるところだな。
てか本代くらいケチるなww
ダイレクトX学ぶには下準備いるんだし

785 :デフォルトの名無しさん:2008/10/19(日) 00:20:23
とりあえずDirectXの本はいっぱい買った。
寝る前にパラパラ見る。これでいつかはマスターできるはずと
思っている。

786 :デフォルトの名無しさん:2008/10/19(日) 00:26:51
本は電車の中で読むためのもんだと思ってる。
どんな本でも1ページくらいは有用だと思える情報があるし。

787 :デフォルトの名無しさん:2008/10/19(日) 00:28:58
著名な人が推奨してる本ってのはやっぱりいいよ

788 :デフォルトの名無しさん:2008/10/19(日) 02:05:28
やねうらおですね、わかります

789 :デフォルトの名無しさん:2008/10/19(日) 12:46:19
本って、やっぱ売れてナンボだから書く側のターゲットがブレる時がある。
”初心者向けは基本の技術解説だけでいいから楽だけど、それだとターゲットが
狭いので中級者向けにも書いて、ただページが膨大だと定価や作業量の問題もあるから
一部の技術だけに特化して深いところをー”なんて感じ。
最初はネットで良いと思うよ。誰かに説明したい、自称中級者の方々が山ほどいて
丁寧に教えてくれる。ただ、その人達が「それはできません。」と断言したことが
本当にできないかとか、教わった技術が適切か等の精査は必要。

790 :デフォルトの名無しさん:2008/10/19(日) 16:30:18
俺はDirectXよりもWindowsプログラミングを先に学んだほうが良いと思うわ。
そのほうがすんなりDirectXのコードを読める。
それに今出版されてるDirectXの本はSDKのサンプルからやってるから、サンプルがなくなった今
(SampleBrowserは昔のとはちょっと違うね)DirectXの学習は困難だよな。特にC++終えたての人とかは。
あと、本は買ったほうがいい。ネットの知識ってのは上でも言われてるけど表面上でしかないよ。
だからちょっとバージョンが違ってエラーが出たときとかにも対処しきれない。
勘違いしないでほしいのは、本がすべてというわけではないし、関数とか、ここはどうすればいいのか
ってのをちょっと調べるだけならネットでも全然おkだと思う。
ただ、本で学んでからネットを見たほうが応用が利く気がする。
異論は認める

791 :デフォルトの名無しさん:2008/10/19(日) 16:48:08
実際本見てからのほうが応用が利くと思うぜ クソ本でなければ
本いらないとか言ってるやつはネットでどうやって調べるか
ノウハウがわかってるからそんなこと言ってるだけ
ほんとにわかってないやつは何から調べればいいかわからないから
ネットだけではどうにもならない

792 :デフォルトの名無しさん:2008/10/19(日) 16:51:47
買わずとも図書館で借りてきたらいいと思うのは俺だけ?
流れを一通り学んだら必要なAPIをMSDNライブラリサイトで調べたらいいだけだし。

793 :デフォルトの名無しさん:2008/10/19(日) 16:52:33
あらかた同意だが、ネットで予備知識仕入れて、書店で選ぶ参考にはなる。
その点でもネットは必要。

あとネットが使えるかどうかは関係なく本の知識は偉大と思う。

794 :デフォルトの名無しさん:2008/10/19(日) 17:01:19
ここはいつから本の必要性を語るスレになったんだ?
本を読む前に>>1ぐらい嫁よ

795 :デフォルトの名無しさん:2008/10/19(日) 17:13:32
ネットは広いけどあまりにも薄すぎる
本は濃く知るのにどうしても必要

こういう特色を人に説明できないのも本を読んでいないから

と俺は思う

796 :デフォルトの名無しさん:2008/10/19(日) 17:16:34
お前の妄想なんてどうでもいい

797 :デフォルトの名無しさん:2008/10/19(日) 17:19:19
そもそも本を読んで無い奴に本を否定はできない
自分は本を読んでいて他の人間には薦めないってのは陥れてるとしか思えない

798 :デフォルトの名無しさん:2008/10/19(日) 17:27:17
ウィンドウを画面の中心で開くやり方ってどうやるんでしょうか・・・?

CW_USEDEFAULTしか分からないので
ヒントいただけませんか><

799 :デフォルトの名無しさん:2008/10/19(日) 17:31:05
GetDesktopWindow
GetWindowRect
必要ならAdjustWindowRectExも

800 :デフォルトの名無しさん:2008/10/19(日) 17:39:19
>>798
本を読めよ

801 :デフォルトの名無しさん:2008/10/19(日) 17:43:42
※ただしマルチディスプレイは考慮しないものとする

802 :デフォルトの名無しさん:2008/10/19(日) 17:51:01
>>795みたいにネットは広いけど浅いとか思い込んでいる人は
ネットの使い方の本でも読んだ方がいいと思う

どっちが深いも浅いもない。
必要な情報を個々がどうやって見つけるかという違いがあるだけ。
ネットで探すのが下手なら本を読めばいい。

803 :デフォルトの名無しさん:2008/10/19(日) 18:06:47
ネットで十分っていってるやつは
ちゃんとした専門書を読んだことがないんだろうなぁ

804 :デフォルトの名無しさん:2008/10/19(日) 18:10:48
本は(物によっては)有用な部分はあるけど、必要ではない。それでFA。
で、ここは質問スレであって、こんなどうでもいい事を延々と繰り返すスレではない。
>>1にある文章も読めないような奴に本が読めるとは到底思えん。

805 :デフォルトの名無しさん:2008/10/19(日) 18:15:35
>>803
あなたの持っている「専門書」のタイトルを全て教えてくだちぃ

806 :デフォルトの名無しさん:2008/10/19(日) 18:15:59
>>804

ネットは(サイトによっては)有用な部分はあるけど、必要ではない。それでFA。
で、ここは質問スレであって、こんなどうでもいい事をにいちいち突っ込むスレでもない。
>>1にある文章も読めないような奴にネットが使いこなせるとは到底思えん。

807 :デフォルトの名無しさん:2008/10/19(日) 18:17:00
もう刺激するなよ

808 :デフォルトの名無しさん:2008/10/19(日) 18:21:29
ネットは必要だよね
ネットに繋がってないプログラマーのデスクが今時あるだろうか

ネットだけでやってる奴はいても、本だけでやってる奴なんていないだろ

809 :デフォルトの名無しさん:2008/10/19(日) 18:23:45
ネット→ものによっては「必要」
本→ものによっては「有用」

でファィナルアンサー

810 :デフォルトの名無しさん:2008/10/19(日) 18:26:23
ネットの回線切って一週間仕事する自信はないな
あーでも漫画を一週間読まないでプライベートをすごす自信もないw

811 :デフォルトの名無しさん:2008/10/19(日) 18:28:01
もう刺激すんなって

812 :デフォルトの名無しさん:2008/10/19(日) 18:33:58
それでDirectXの習得にお勧めの書籍はなんですか

813 :デフォルトの名無しさん:2008/10/19(日) 19:12:22
とりあえずWeb上で入手できる
サンプル、情報で自分がやってみたいことに挑戦する
ただ、なんとなくDirectXをマスターしたいとか言う目的意識のない方はお帰りください
まずDirectXで何をしたいのか目標を定めることから始めましょう
そこに対し自分で思考錯誤していると
必ずWeb上だけの情報では解決できないことがでてきます
本を選ぶ基準はただなんとなく習得したいための本ではなく
自分が知りたい情報の載っている本を探せばいいだけなのです
おそらくその本の半分以上の内容は必要のないものでしょうが
自分の知りたい情報の値段がその本の値段につりあうと思えば買えばいいのです
本の値段とそこに乗っている情報の値踏みができないレベルの人は本に手を出すべきではないでしょう

814 :デフォルトの名無しさん:2008/10/19(日) 19:19:25
>>813
先輩方が何をやりたいと思ってなんという本を読んでその知識を得たという情報で結構です
いきなりWebで入手しろといわれても、何から手をつければいいかさっぱりなんです

815 :デフォルトの名無しさん:2008/10/19(日) 19:25:51
>>801
マルチディスプレイ環境で
Windowモードのアプリを別のディスプレイへ移動すると遅くなるのはなんでだろう
どうやっても回避できない

816 :デフォルトの名無しさん:2008/10/19(日) 19:29:41
>>815
本を読めばわかるよ

817 :デフォルトの名無しさん:2008/10/19(日) 19:33:51
MSDN Library読んだらどうすべきか書いてあるよ

818 :デフォルトの名無しさん:2008/10/19(日) 19:36:39
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。


819 :デフォルトの名無しさん:2008/10/19(日) 19:39:17
×必ずWeb上だけの情報では解決できないことがでてきます
○ひょっとしたらWeb上だけの情報では解決できない場合があるかも知れません

820 :デフォルトの名無しさん:2008/10/19(日) 19:41:20
またWeb狂信者か

821 :デフォルトの名無しさん:2008/10/19(日) 19:41:58
まったくだ。本を読めばあらゆる事象が解決する

822 :デフォルトの名無しさん:2008/10/19(日) 19:43:05
また本狂信者か

823 :デフォルトの名無しさん:2008/10/19(日) 19:44:14
Webだと解決できない事って具体的になんですか。教えてください。
ようはそのWebで解決できない事が書いてある本さえあればいいんですよね。
俺頭いい。

824 :デフォルトの名無しさん:2008/10/19(日) 19:46:34
輪廻転生は本当にあるのか

825 :デフォルトの名無しさん:2008/10/19(日) 19:47:57
このスレで一番詳しい奴が本書けば解決
早くかけよ、さぼるな、仕事なんて辞めて本書け本

826 :デフォルトの名無しさん:2008/10/19(日) 19:48:44
>>825
別に書いてやってもいいけど、いくらくれんの?

827 :デフォルトの名無しさん:2008/10/19(日) 19:50:02
売れた数次第だぼけ

828 :デフォルトの名無しさん:2008/10/19(日) 19:54:32
印税は1割

829 :デフォルトの名無しさん:2008/10/19(日) 19:58:48
盛り上がって増すな

830 :デフォルトの名無しさん:2008/10/19(日) 20:01:29
>書いてやってもいい

ワロタw

831 :デフォルトの名無しさん:2008/10/19(日) 20:03:49
読んでやってもいいからタダで書けよ

832 :デフォルトの名無しさん:2008/10/19(日) 21:06:00
俺はネットにうpしてやんよ、タダで

833 :デフォルトの名無しさん:2008/10/19(日) 21:10:51
じゃあ、オレはタダで読んでやる。

834 :デフォルトの名無しさん:2008/10/19(日) 22:28:34
別に選択肢をわざわざ減らす必要はねーし
読まないって奴は読む奴に比べて単純に頭が悪くなるってただそれだけ

835 :デフォルトの名無しさん:2008/10/19(日) 22:38:26
使えない本やサイトは逆に頭が悪くなるけどな

836 :デフォルトの名無しさん:2008/10/19(日) 22:44:18
>>835
数をこなすことでダメなものをダメと見切れるようになる
タスクシステムに飛びつくこともなくなる

837 :デフォルトの名無しさん:2008/10/19(日) 22:45:05
>>834
あなたが選択した、頭がよくなった本をぜひぜひ教えてください。お願いします。

838 :デフォルトの名無しさん:2008/10/19(日) 22:51:28
タスクシステム使いこなせないとかもうね

839 :デフォルトの名無しさん:2008/10/19(日) 23:16:50
流れにワロタww
なんか一人のネット狂信者がわめいてるみたい。
コピペでプログラム組んで『俺すげーww』とか言ってる。
俺も昔はそうでした。まぁ今は暖かい目で見てあげよう。いつか書籍の必要性がわかる。


840 :デフォルトの名無しさん:2008/10/19(日) 23:31:59
自分がネットや付属CD-ROMからコピペするしかできない無能だったから
他人もそうだと思い込みたいんだろうなぁ

841 :デフォルトの名無しさん:2008/10/19(日) 23:36:06
誰も書籍を否定してるわけじゃないのにな。
何をするにも絶対本が必要という事にしないと気が済まんのかな。

842 :デフォルトの名無しさん:2008/10/19(日) 23:45:29
もうそれぐらいにしてやれよw
>>839はわざわざageてまで必死に自分の無能さを主張してるんだからw

843 :デフォルトの名無しさん:2008/10/19(日) 23:58:46
いい加減にしろ
だからどっちでもいいだろ。ネットで済む事はネットで済ませりゃいいだろうし
本が欲しいと思うんだったらそう思った時買えばいいだよ
そんな個人差がある事を必要/不必要なんて言葉で線引きしようとするのが愚の極み

844 :デフォルトの名無しさん:2008/10/20(月) 01:02:21
すげー、まだやってる。

845 :デフォルトの名無しさん:2008/10/20(月) 01:02:48
お前だけ

846 :デフォルトの名無しさん:2008/10/20(月) 01:10:57
>>842
そうやって煽る自分が一番無能と思わんかね?
本もネットも必要で終わろう

847 :デフォルトの名無しさん:2008/10/20(月) 01:12:23
まだ言ってるよ^^;

848 :デフォルトの名無しさん:2008/10/20(月) 01:24:40
人によっては必要だし人によっては不必要。
個々の目的が違うんだからそんなの当然だろ。頭にうじわいてんじゃね。

849 :デフォルトの名無しさん:2008/10/20(月) 01:37:26
人によってはじゃなくて場合によってはだろ
なにも選択肢からわざわざはずす必要がない
それともどうしても本が不必要だと決定する何かがほしいのかな?
そういうわけじゃないだろ?

もしかしたら、今後ネットにはない転載不可のすばらしい本が出る可能性だってあるわけだしね

850 :デフォルトの名無しさん:2008/10/20(月) 01:56:05
選択肢選択肢としつこい子だな。エロゲ界の住人かよ。
別に人によってはでも場合によってはでもどちらでもかまわないよ。
これで満足かい?

851 :デフォルトの名無しさん:2008/10/20(月) 02:01:31
エロゲ界の住人ワロタw

852 :デフォルトの名無しさん:2008/10/20(月) 02:20:01
>>850
何、カッカしてんの?
育ちが悪いな
親もロクなもんじゃねぇだろ

ああ、貧乏だから本も買えないのか

853 :デフォルトの名無しさん:2008/10/20(月) 02:25:16
何鏡に向かって独り言言ってんの^^;

854 :デフォルトの名無しさん:2008/10/20(月) 02:36:19
/   //   /   //    ______     /   //   /
 / //   /|   r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、.,   /    /
  /   / |  |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__
`'ー-‐''"   ヽ、_'´  `| |:::::|'"       二.,_> ,.へ_
         /  //__// / / /      `ヽ7::/
 か っ も  |  / // メ,/_,,. /./ /|   i   Y   //
 ァ  て う.  |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ  ,  |〉
  |  約 醜.  ヽ! O .|/。〈ハ、 rリ '´   ,ァ=;、`| ,ハ |、  /
  |  束 い   >  o  ゜,,´ ̄   .  ト i 〉.レ'i iヽ|ヽ、.,____
  |  し  煽  /   ハ | u   ,.--- 、  `' ゜o O/、.,___,,..-‐'"´
  |  た  り  |  /  ハ,   /    〉 "从  ヽ!  /
  |  じ  合  |,.イ,.!-‐'-'、,ヘ. !、_   _,/ ,.イヘ. `  ヽ.
 ッ .ゃ .い   |/     ヽ!7>rァ''7´| / ',  〉`ヽ〉
 ! ! な  は   .',      `Y_,/、レ'ヘ/レ'  レ'
   い  .し    ヽ、_     !:::::ハiヽ.   //   /
   で  .な    ./‐r'、.,_,.イ\/_」ヽ ',       /  /
   す  い   /    `/:::::::/ /,」:::iン、 /    /
          〈  ,,..-‐''"´ ̄ ̄77ー--、_\.,__  /
      ,.:'⌒ヽ ´         | |  , i |ノ   `ヾr-、

855 :デフォルトの名無しさん:2008/10/20(月) 02:36:41
>>852
とうとう、お前のかーちゃんでーべそとか言い出しちゃったよ
もうね、プログラムの本の前に読むべき本があるんじゃないかな?
手に取る本の選択肢を間違えたね

856 :デフォルトの名無しさん:2008/10/20(月) 03:19:28
煽りあいとかどうでもいいので、とりあえずここは建設的に、
ネットに載ってない情報を持っているDirectXの本を紹介してくれますでしょうか?
必要だと言ってる人は少なくとも一冊はそういった本を持ってるわけですし。
それが他人から見ても必要だと感じられるなら必要性の高いお勧め本ってことで。

書籍名:
出版社名:
価格:
ネットに載ってない情報:

よろしくお願いします。

857 :デフォルトの名無しさん:2008/10/20(月) 04:17:21
需要:情報が欲しい

供給:
・紙媒体:本→有料、概ね著作者が明確。
・電子媒体:ネット→概ね無料、著作者が不明確の場合あり。

その情報だけでお金取れそうなら本にした方が得だよね。
ただ、それを読んだ人が無料でネットに公開しちゃう場合があるよね。
(盗用と、技術解説ギリギリのラインで。)

「猫でもわかる〜」みたいに、ネットで情報公開しつつ製本化されてるものもあるよね。
それでも売れるよね。「無料で手に入る情報に金払うなんて」という考えもあるけど、
その辺は案外、読み手の好みの問題だったりしてね。
読み手も書き手も多種多様で、媒体とそれに伴うルールが違うだけなので、
優劣はつかないんじゃないかなー。

ってゆーか、このスレの流れ、信者同士の罵り合いっていうよりかは
反応が面白くて適当に煽ってる人が多そうだよねー。
ってゆーか俺スレチだねー。ごめんねー。

858 :デフォルトの名無しさん:2008/10/20(月) 06:20:21
>>856
子供みたいw

859 :デフォルトの名無しさん:2008/10/20(月) 07:11:04
>>855
は?
誰にレスしてるの?
そんなのどこにも書いてないじゃん

捏造?
育ちの悪さがレスにあふれ出てるねw
まあ、本も買う金がないほど貧乏だししょうがないとは思うけどねw

860 :デフォルトの名無しさん:2008/10/20(月) 07:25:45
/   //   /   //    ______     /   //   /
 / //   /|   r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、.,   /    /
  /   / |  |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__
`'ー-‐''"   ヽ、_'´  `| |:::::|'"       二.,_> ,.へ_
         /  //__// / / /      `ヽ7::/
 か っ も  |  / // メ,/_,,. /./ /|   i   Y   //
 ァ  て う.  |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ  ,  |〉
  |  約 醜.  ヽ! O .|/。〈ハ、 rリ '´   ,ァ=;、`| ,ハ |、  /
  |  束 い   >  o  ゜,,´ ̄   .  ト i 〉.レ'i iヽ|ヽ、.,____
  |  し  煽  /   ハ | u   ,.--- 、  `' ゜o O/、.,___,,..-‐'"´
  |  た  り  |  /  ハ,   /    〉 "从  ヽ!  /
  |  じ  合  |,.イ,.!-‐'-'、,ヘ. !、_   _,/ ,.イヘ. `  ヽ.
 ッ .ゃ .い   |/     ヽ!7>rァ''7´| / ',  〉`ヽ〉
 ! ! な  は   .',      `Y_,/、レ'ヘ/レ'  レ'
   い  .し    ヽ、_     !:::::ハiヽ.   //   /
   で  .な    ./‐r'、.,_,.イ\/_」ヽ ',       /  /
   す  い   /    `/:::::::/ /,」:::iン、 /    /
          〈  ,,..-‐''"´ ̄ ̄77ー--、_\.,__  /
      ,.:'⌒ヽ ´         | |  , i |ノ   `ヾr-、

861 :デフォルトの名無しさん:2008/10/20(月) 09:28:46
ゴメンナサイ

862 :デフォルトの名無しさん:2008/10/20(月) 10:00:14
イエイエ
僕も悪かったです。本もネットも素晴らしいです。

863 :デフォルトの名無しさん:2008/10/20(月) 12:08:33
本もネットもいらね

864 :デフォルトの名無しさん:2008/10/20(月) 12:16:00
自分自身の親や貧乏に対するコンプレックスを
相手に置き換えることでうさを晴らしてるんだろうな
察してやろうぜ


865 :デフォルトの名無しさん:2008/10/20(月) 12:24:25
もうやめてえええええええええええ
彼を許してあげてええええええええええ

866 :デフォルトの名無しさん:2008/10/20(月) 12:25:43
個人差の問題を他人に必要とか言って押し付けてる時点で終わってる

867 :デフォルトの名無しさん:2008/10/20(月) 12:41:13
個人差じゃなくて選択肢の問題だよ
よくわからんけど

868 :デフォルトの名無しさん:2008/10/20(月) 12:53:30
イベントフラグが立たないと選択肢は発生しないよ
よくわからんけど

869 :デフォルトの名無しさん:2008/10/20(月) 14:46:23
>>858>>856>>852へのアンカーミスですた
すまそ

870 :858:2008/10/20(月) 16:16:10
>>869
いいえ。違います。

871 :デフォルトの名無しさん:2008/10/20(月) 16:38:45
D3DRECTって何のために存在するの?
中身はRECTの並びと一緒だし。
操作用の関数が用意されてるでもないし
受け渡しにいちいちキャストが必要だし。

872 :デフォルトの名無しさん:2008/10/20(月) 16:43:26
windows.h

873 :デフォルトの名無しさん:2008/10/20(月) 16:46:22
>>871
本を読めばわかる

874 :デフォルトの名無しさん:2008/10/20(月) 17:07:17
>>871
座標をx y で扱うためだろ
left, top, right, bottomじゃわかりにくくなる

875 :デフォルトの名無しさん:2008/10/20(月) 17:28:46
871が聞きたいのは
なんでRECTが存在するのに、DirectXはわざわざ同じフォーマットの
別名構造体を独自に作って使うの?ってことかな?

876 :デフォルトの名無しさん:2008/10/20(月) 17:52:28
>>875
そうかと思われ
おれもなんであるのか知りたい

877 :デフォルトの名無しさん:2008/10/20(月) 17:57:40
あれはGDIのRECTだし

878 :デフォルトの名無しさん:2008/10/20(月) 17:58:08
そんなどうでもいい事の為に一人で必死だな


879 :デフォルトの名無しさん:2008/10/20(月) 18:01:44
managed版とかとの兼ね合いじゃないの?
WinAPI群と同調させるよりかは、DirectX群での同一性を求めたとか

880 :デフォルトの名無しさん:2008/10/20(月) 18:44:20
どのスレで質問していいのか分からなかったので一番なじみのあるこのスレで質問させてもらいます。

自分のメインパソコンでコンパイルしたアプリを他のパソコンでも起動できるか試したのですが

メインのPCだと http://appleloader.bbsnow.net/pic_loader/nomal/html/1_12.html

普通に起動できて。

学校のPCと家のサブパソコンだと http://appleloader.bbsnow.net/pic_loader/nomal/html/33.html

エラーが出て起動できません・・・・。

自分で考えられる対処法は試したのですがわかりません・・・。

アドバイスよろしくお願いします。

家メイン(デスクトップ) WINXP32BIT Geforce8800GTS メモリ4G CPU コア2DUO

家サブ(デスクトップ) WINXP32BIT マザーボード内臓?(sis741) メモリ512M アスロン3000?

学校 WINXP32BIT(ノート) わかりません // // /

すれ違いだったら誘導お願いします><

881 :デフォルトの名無しさん:2008/10/20(月) 18:47:03
家と学校PCにDirectX入ってるんか?

882 :デフォルトの名無しさん:2008/10/20(月) 18:50:44
manifestファイルはなかった?

883 :880:2008/10/20(月) 18:53:58
>>882

プロジェクト全体を探しましたがなかったです。

USBにフォルダごとコピーして他のPCに持っていったので
足りないファイルなどはないと思います。

884 :880:2008/10/20(月) 19:03:16
連レスすいません。。

mainfestファイルありました。
出力を上記のファイルと別の所にしてあるからでしょうか?

885 :デフォルトの名無しさん:2008/10/20(月) 19:05:01
必要なDirectX Runtimeが無い

886 :デフォルトの名無しさん:2008/10/20(月) 19:05:58
エラーとはどんなエラーかすらも書かないのに
原因教えろと言われても
サブPCや学校でコンパイルできるんならそっちでデバッグしてみろ

887 :デフォルトの名無しさん:2008/10/20(月) 19:09:24
どうせDLL使用してて読み込んでないとかだろ
ここじゃなくてVCスレ行った方がいいよ

888 :デフォルトの名無しさん:2008/10/20(月) 19:12:42
>>886
書いてるだろ。htmlリンクだから恐いが

889 :デフォルトの名無しさん:2008/10/20(月) 19:16:02
エラーメッセージでぐぐったら原因出てくるじゃん

890 :デフォルトの名無しさん:2008/10/20(月) 19:35:22
c++のコード生成の設定変えたらできました

ありがとうございます

891 :デフォルトの名無しさん:2008/10/20(月) 19:45:16
DirectX10を使っていて、
シェーダで結果を書き込んだテクスチャを
CPUで処理するためにCPUのメモリにコピーしたいんですが、
どのような手順でやればよいでしょうか?

892 :デフォルトの名無しさん:2008/10/20(月) 19:54:08
CPUのメモリってあーた

893 :デフォルトの名無しさん:2008/10/20(月) 19:56:08
二次キャッシュってこと?

894 :デフォルトの名無しさん:2008/10/20(月) 19:58:51
CPUのメモリって俺的にはしっくり来る用語なのは
メモコン内蔵だからか

895 :デフォルトの名無しさん:2008/10/20(月) 20:02:03
VRAMに対するメインRAMってことでは?

896 :デフォルトの名無しさん:2008/10/20(月) 20:14:30
DirectDrawはDrawLineとかDrawRectとかありましたが
direct3dスプライトはDirectDrawみたいに
画面に線引いたり円描いたり四角描いたりできますか?


897 :デフォルトの名無しさん:2008/10/20(月) 20:19:10
>>871
Direct3Dの部分にwindows.hを取り込まないためでしょ。
D3DCOLORなんかも

898 :デフォルトの名無しさん:2008/10/20(月) 20:52:16
>>891です
すみません>>895の方の意味です
シェーダでテクスチャにスムーズフィルタとかかけて、
CPUでその結果を使って画像処理を行いたいので、
そのためにテクスチャからメモリにコピーする方法を
知りたいんです

899 :デフォルトの名無しさん:2008/10/20(月) 20:59:48
そもそもレンダリング終わった時点で
テクスチャをロックして情報すえばいいんじゃ?

900 :デフォルトの名無しさん:2008/10/20(月) 21:05:07
情報!情報らめぇ〜

901 :デフォルトの名無しさん:2008/10/20(月) 21:09:36
フレームごとに1増えていき

50を超えたら-50に移動

m_position.x += 0.01f;

if(m_position.x > 2.0f) {
m_position.x = -2.0f;
}

本ではこういう風に定義されているのですが数字がよくわかりません・・・。

説明お願いできませんか。

902 :デフォルトの名無しさん:2008/10/20(月) 21:18:27
sin使えばいいのに

903 :デフォルトの名無しさん:2008/10/20(月) 21:27:29
DirectXにかすりもしないくらい関係ない
50って何だ

904 :デフォルトの名無しさん:2008/10/20(月) 21:41:03
>>901
C言語やった事あるのか?

905 :デフォルトの名無しさん:2008/10/20(月) 21:44:10
>>901
本読めばわかる

906 :デフォルトの名無しさん:2008/10/20(月) 21:49:41
書いた人間にしか分からないだろ

907 :デフォルトの名無しさん:2008/10/20(月) 21:53:21
説明をおねがいしたいのはこっちだよ^^;

908 :デフォルトの名無しさん:2008/10/20(月) 21:55:32
エスパーすると
コメントごとコピってきたソースの
パラメーターだけ変えたけどコメントがコピー元のまま

909 :デフォルトの名無しさん:2008/10/20(月) 22:54:37
D3DXVECTOR3 m_pos;

m_pos.x += 1.0f;

1.0fって1mですか?

910 :デフォルトの名無しさん:2008/10/20(月) 23:01:39
自分で1mって決めればそれが1mだよ

911 :デフォルトの名無しさん:2008/10/21(火) 00:24:32
本とWEBサイトって同じようなもん。

912 :デフォルトの名無しさん:2008/10/21(火) 02:19:57
1.0fは(float)1.0だと思う。
こんなこと言っても分からんと思うがw

913 :デフォルトの名無しさん:2008/10/21(火) 18:31:52
自分で 1m と決めてもいい
俺は 1.61624 * 10e-35 m だな

914 :デフォルトの名無しさん:2008/10/21(火) 20:01:37





DirectXを、ディレクトックスと呼ぶのは我慢できるとしてもだ

Direct3Dを

ダイレクトサンディー

っていうのは我慢ならぬ。







915 :デフォルトの名無しさん:2008/10/21(火) 20:07:39
>>909
正直、コーヒー噴き出したw
どうしてくれんのよ


916 :デフォルトの名無しさん:2008/10/21(火) 20:22:17
1mは計算式で書くと、1024*1024
初歩の初歩だと思うんだが

917 :デフォルトの名無しさん:2008/10/21(火) 20:24:21
mとか書いてるような奴に言われたくないな

918 :デフォルトの名無しさん:2008/10/21(火) 20:34:01
わけわかだーね
ミリとメガの区別もつかないのって感じだね

(そうだ、もし1miBと言う単位があれば 1/1024バイト?)

919 :デフォルトの名無しさん:2008/10/21(火) 21:45:44
書籍の次は1.0の単位の話か

920 :デフォルトの名無しさん:2008/10/21(火) 21:52:02
1単位

921 :デフォルトの名無しさん:2008/10/21(火) 21:56:22
で 結局何aなの?

922 :デフォルトの名無しさん:2008/10/21(火) 22:01:55
プランク長さだよ

923 :デフォルトの名無しさん:2008/10/21(火) 22:02:42
>>921
だから君の好きなように定義すればいいんだってば

924 :デフォルトの名無しさん:2008/10/21(火) 22:35:52
好きにスケールしる

925 :デフォルトの名無しさん:2008/10/21(火) 22:38:40
それか、ゲーム内単位でいいんじゃね?
1000fで1クリメライとか

926 :デフォルトの名無しさん:2008/10/21(火) 22:40:14
私は1パーセクにしている。

927 :デフォルトの名無しさん:2008/10/21(火) 23:13:15
ビッグだな!

928 :デフォルトの名無しさん:2008/10/21(火) 23:47:01
よそのスレであったなw
1kmから始まってパーセクで終わったw

929 :デフォルトの名無しさん:2008/10/22(水) 01:29:37
ピクセルシェーダで迷子になってます。
float4 pixelS(float4 src : COLOR0) : COLOR
{
  return src;
}

technique Techs
{
  pass P0
  {
    VertexShader = compile vs_1_1 vertexS();
    PixelShader = compile ps_1_1 pixelS();
  }
}
このピクセルシェーダを使ってそのまま出力するテストをしているのですが、テクスチャが全面真っ白になって
表示されてしまいます。シェーダのコンパイルは1.1です。使用箇所では
D3DXHANDLE tech=shader->GetTechniqueByName("Techs");
shader->SetTechnique(tech);
UINT pass;
shader->Begin(&pass,0);
shader->BeginPass(0);

device->SetTexture();
device->SetFVF();//変換済み頂点を設定
device->DrawPrimitiveUP();

shader->EndPass();
shader->End();

となっています。シェーダ関係を取り払うと正しく表示されるので描画部分は問題なさそうです。

930 :デフォルトの名無しさん:2008/10/22(水) 01:30:18
頂点シェーダは割愛させてもらいました。連レススマソ。

931 :デフォルトの名無しさん:2008/10/22(水) 06:30:40
>>929
シェーダでテクスチャ読んでないんだから、頂点カラーのまま表示されるに決まっとる

932 :デフォルトの名無しさん:2008/10/22(水) 08:57:08
PSがソースをそのまま出力するだけならせめてVSも晒してくれ

933 :デフォルトの名無しさん:2008/10/22(水) 12:00:34
>>931できました!ありがとうございます。
でもこれだと今までの表示方法ではすんなりピクセルシェーダを利用することができないというミスorz

934 :デフォルトの名無しさん:2008/10/22(水) 17:50:11
テクスチャに線とか四角とか円とか描くにはどうすればいいですか?

935 :デフォルトの名無しさん:2008/10/22(水) 18:02:10
スプライトはつかっqoe:uek?

936 :デフォルトの名無しさん:2008/10/22(水) 18:06:57
1ドットのビットマップを引き伸ばしたり回転したりで四角やら線を描いたことはあるが・・・

937 :デフォルトの名無しさん:2008/10/22(水) 18:13:54
ゲーデーイー

938 :デフォルトの名無しさん:2008/10/22(水) 18:30:39
>>935
最後のほうがよくきこえんかった

>>936
同じような感じで無理してたけど
やっぱりそういう手しかないのかな

DirectDrawでできるならD3Dスプライトではできると思ってたんだが

939 :デフォルトの名無しさん:2008/10/22(水) 20:00:27
新しいノートPCでDirectXを作ったゲーム開発を行おうと思うのですが

メモリ4Gと2Gじゃかなり違いますか?(XP32BIT)

事情でデスクトップは買えません。。。

940 :デフォルトの名無しさん:2008/10/22(水) 20:02:05
富豪的プログラミング乙

941 :デフォルトの名無しさん:2008/10/22(水) 21:19:39
なにが4Gだボケ
普通に開発作業を快適にしたいならまずHDDをSSDに、D3Dでの開発重視なら何よりGPUの選択が中心
それだけだ

942 :デフォルトの名無しさん:2008/10/23(木) 20:36:11
まず0x0fffffff(適当)の背景色で透けた四角い枠を書いて
テクスチャを張り付けて、透過色のとこは下の枠と
その後ろのモノが見えるってのは可能?

943 :デフォルトの名無しさん:2008/10/23(木) 20:39:01
日本語でおk

944 :デフォルトの名無しさん:2008/10/23(木) 20:46:54
エスパーを試みたが仕事で疲れた脳みそじゃ無理だったぜ

945 :デフォルトの名無しさん:2008/10/23(木) 21:09:34
このスレに居るのはSEと学生だけか?

946 :デフォルトの名無しさん:2008/10/23(木) 21:12:27
そもそも「枠」が何を意味してるのかがわからん

947 :デフォルトの名無しさん:2008/10/23(木) 21:15:05
よくわからんが
ピクセルシェーダー使っていいなら余裕
固定機能ならテクスチャステージで
RGBは乗算、αは加算とかにすればいけるんじゃね?

948 :デフォルトの名無しさん:2008/10/23(木) 22:26:43
あきらめろ!
あきらめれば100%解決できる。保証する

949 :デフォルトの名無しさん:2008/10/23(木) 22:52:38
D3DXは使ったらイケないの?

950 :デフォルトの名無しさん:2008/10/23(木) 23:42:40
うん

951 :デフォルトの名無しさん:2008/10/23(木) 23:51:28
何もないところに山をつくって挫折するくらいなら
使ったほうが100倍マシと思われる
車輪の再発明

952 :デフォルトの名無しさん:2008/10/23(木) 23:52:49
STLとか無意味に毛嫌いしてる人いるよね

953 :デフォルトの名無しさん:2008/10/24(金) 00:01:14
STLを使うとマネージドな言語になってパフォーマンスが落ちるといわんばかりの勢いで嫌う人と
テンプレートが何なのかよく分らなくて敷居をまたげないで居る人の2種類がいると思う

954 :デフォルトの名無しさん:2008/10/24(金) 00:14:30
最近のD3DXフォントってグリフの作り置きできるんだね。


955 :デフォルトの名無しさん:2008/10/24(金) 00:38:22
サイズを指定してCreateTectureでテクスチャを作ったときGetLevelDescでテクスチャ内のトップレベルの
サーフェイスの情報を取得したら、例えば642*480で指定した場合、そのサイズがそのまま帰るんですが、
実際には2の累乗サイズに設定されているんでしょうか?それとも見たままなんでしょうか
nVIDIaです

956 :デフォルトの名無しさん:2008/10/24(金) 00:44:51
boostはまだしもSTLは必須だろ。

957 :デフォルトの名無しさん:2008/10/24(金) 00:45:30
CAPSの中を見ろ。
作ったサイズそのままのビデオカードと2の累乗になるビデオカードがある。

958 :デフォルトの名無しさん:2008/10/24(金) 00:57:23
>>957
D3DCAPS9のTextureCapsですよね?
D3DPTEXTURECAPS_NONPOW2CONDITIONAL
D3DPTEXTURECAPS_POW2
D3DPTEXTURECAPS_SQUAREONLY
は全て0でした・・・。


959 :デフォルトの名無しさん:2008/10/24(金) 01:54:01
俺はなんとなく、例で出した642*480という半端な数値が気になったw

2の累乗のテクスチャしか作れないGPUなんて5年くらい前から出て無いんじゃない?

960 :デフォルトの名無しさん:2008/10/24(金) 02:50:06
>>959
補間でふちが見えないようにだろ

961 :デフォルトの名無しさん:2008/10/24(金) 06:28:43
みなさん、頭の体操の時間デス
レンダリングターゲットをテクスチャBにて描画したい場合、
@コメントアウトすると画面がぐちゃぐちゃになるものの書込まれているが、
そののままだとテクスチャBへの書込みは正常に処理されない
どうしてでしょうか?(回答時間 20分)

@GetRenderTarget(0,バックバッファ);//ここだよ
AテクスチャB->GetSurfaceLevel(0,サーフェイスA);
BSetRenderTarget(0,サーフェイスA);
CSetTexture(0,テクスチャB);
DDrawPrimitive
ESetRenderTarget(0,バックバッファ)







ヨロシクオネガイシマス(´・ω・`)つ

962 :デフォルトの名無しさん:2008/10/24(金) 06:57:59
マルチかよ

963 :デフォルトの名無しさん:2008/10/24(金) 07:13:29
>>960
それなら642*482にしないと

964 :デフォルトの名無しさん:2008/10/24(金) 13:55:05
質問したいなら
やりたいことを相手に伝わるように書いてほしいものだ
それができないなら全ソース晒せ

965 :961:2008/10/24(金) 14:33:26
ちょっと文章変ですね
>@コメントアウトすると画面がぐちゃぐちゃになるものの書込まれているが

言いたいことは、@をコメントアウトすると半透明になって激しくちらつくのに
次にコメントアウトを外して実行するとテクスチャに書込まれている、と言いたかった

やりたいのはテクスチャを貼った板ポリゴンをサーフェイスに関連付けたテクスチャ内
に描画したい・・・その処理のもっともシンプルなコードを知りたいのです





966 :デフォルトの名無しさん:2008/10/24(金) 14:40:19
シンプルなコード・・・つってもそんなの
DrawPrimitiveするだけだろ・・・。
細かいステートの説明までいちいちしてられん。

967 :デフォルトの名無しさん:2008/10/24(金) 16:44:44
>>965
頭の体操の時間ですやら回答時間20分やら、君は何様だよ

968 :デフォルトの名無しさん:2008/10/24(金) 16:46:50
質問だったのか、、、、なんかのネタかとおもってスルーしてた・・・

969 :デフォルトの名無しさん:2008/10/24(金) 17:54:36
ちなみにこいつはゲハ板でもマルチしてるゴミクズ

970 :デフォルトの名無しさん:2008/10/25(土) 16:47:36
スプライトの概念がよく分からないのですが、

板ポリゴンにテクスチャを貼って表示するのと、スプライトで表示するのは
どのような違いがあるのですか?

プログラムの中身ではなくて表示方法?

色々調べたのですが分からなかったのでアドバイスお願いします。

971 :デフォルトの名無しさん:2008/10/25(土) 16:57:16
普通の板ポリと実態は同じだと思っていい
だからスプライトとか言ってもDirectDrawなんかと比べると遅い
そのかわりに回転・拡大・半透明とかは板ポリと同じで簡単
そしてポリと違ってウインドウ平面への描画がしやすい機能が一通りそろってる

972 :デフォルトの名無しさん:2008/10/25(土) 17:10:04
テクスチャーとスプライトとサーフェヘスはなにが違うの?

973 :デフォルトの名無しさん:2008/10/25(土) 17:42:58
>>970
何も違わない。D3DXのスプライト描画は中でDrawPrimitiveを呼んでいるだけ。
D3DXは補助ライブラリで、中身はD3Dを使って誰でも実装できるような機能。
必須ではないがよく使う関数をMSが用意してくれたのがD3DX。

974 :デフォルトの名無しさん:2008/10/25(土) 19:21:49
テクスチャー 絵
スプライト、サーフェス 画用紙

975 :デフォルトの名無しさん:2008/10/25(土) 19:36:18
概念の違いを聞いてるのに実装を答えても意味なくね

976 :デフォルトの名無しさん:2008/10/25(土) 19:47:05
2Dの絵を表示するための設定なんかを勝手によろしくやってくれるのが
D3DXのスプライトってとこだな。
パフォーマンスのことも気を使ってくれるので、何も知らない素人が
自分でDrawPrimitive呼ぶよりはマシ。
よく分かってる奴なら、自分で描画した方がもっと良い。

977 :デフォルトの名無しさん:2008/10/25(土) 19:51:24
スプライト が よろしくやってくれるんじゃなくて
スプライト を よろしくやってくれる

978 :デフォルトの名無しさん:2008/10/25(土) 20:00:50
スプライト関数の中みれねぇから何が影響あって何が影響ないのかさっぱりわかんねぇよ
って感じで絶対に使わなくなると思う

979 :デフォルトの名無しさん:2008/10/25(土) 20:19:36
カプセル化だお

980 :デフォルトの名無しさん:2008/10/25(土) 21:00:42
DirectXをまじめに使おうと思ったら、スプライト関数はデバッグ用くらいにしか使えないと思う。

981 :デフォルトの名無しさん:2008/10/25(土) 21:12:52
ビデオカードとドライバも自作しないと怖くて使えないよね
中で何やってるかわからないからね!

982 :デフォルトの名無しさん:2008/10/25(土) 21:15:24
ビデオカードw
カワイイ言い方ですねw

983 :デフォルトの名無しさん:2008/10/25(土) 21:19:48
MDCCLXXVI
NOVUS ORDO SECLORUM

984 :デフォルトの名無しさん:2008/10/25(土) 21:38:56
ビデオカードがかわいい言い方だとすると
かわいくない言い方ってどんなんなの?

985 :デフォルトの名無しさん:2008/10/25(土) 21:40:54
>>984お前かわいいなちょっとこっち来いよ

986 :デフォルトの名無しさん:2008/10/25(土) 21:51:51
そもそもスプライトなどどこにもない
インタフェイスの名前を不正確なカタカナに置き換える馬鹿が大勢いるから、
内容を誤解させているんだぞ

987 :デフォルトの名無しさん:2008/10/25(土) 21:59:56
>>980
まじめに使うのは大いに結構なんだけど
スプライト関数はデバッグ用くらいにしか使えないとか
初心者すれで言っててもしょうがないと思うんだ
初心者相手に遅いだの仕えないだの言って
簡単な質問をややこしくしすぎかと思うんだが

そんなもんは使ってみて遅いとか使えないとか
思った奴が次を模索すればいい話であって
それで満足する奴もいるんだからいんじゃないのか?
おまえさんが使えないと決め付ける必要はないと思うんだ

>>984
ビデオカード グラフィックカード
ビデオボード グラフィックボード
他にもいろんな呼ばれかたがあるけど
どれで言おうと相手に伝わればいいと思うが
どういうわけかカッコイイとかカッコワルイとかこだわるやつがいて
そういうやつをみるとカッコワルイなと思う
あと半角にやたらこだわるやつとかもいい加減時代遅れだと思う


988 :デフォルトの名無しさん:2008/10/25(土) 22:03:57
ID3DXSpriteをスプライトと言っている馬鹿、
迷惑だからもうプログラムをやめろ

989 :デフォルトの名無しさん:2008/10/25(土) 22:07:06
じゃなんて読むんすか先輩

990 :デフォルトの名無しさん:2008/10/25(土) 22:12:58
カタカナ表記せずにID3DXSpriteと書けばいいだけ
何故誤解を生むカタカナでわざわざ書くのか、馬鹿の考えはさっぱり理解出来ない

991 :デフォルトの名無しさん:2008/10/25(土) 22:14:32
先輩会話の中ではどういえばいいんすか

992 :デフォルトの名無しさん:2008/10/25(土) 22:19:26
ハァ?お前は会話の中でどうやって書いているんだ?

993 :デフォルトの名無しさん:2008/10/25(土) 22:20:36
あいでぃーすりーでぃえっくすすぷらいと

994 :デフォルトの名無しさん:2008/10/25(土) 22:21:27
いーでーどらいでーいくすえすぺーえーるいーてーえー

995 :デフォルトの名無しさん:2008/10/25(土) 22:31:16
スプライトと言ったらID3DXSprite、メッシュと言ったらID3DXMesh、
フォントと言ったらID3DXFont、バッファと言ったらID3DXBuffer、
どれだけ超能力が必用なんだよ?

996 :デフォルトの名無しさん:2008/10/25(土) 22:32:23
>ID3DXSprite インターフェイスは、
>Microsoft Direct3D を使ってスプライトを描画するプロセスを
>単純化する一連のメソッドを提供します。
マニュアルの中の人は、スプライトと言ってる件について

997 :デフォルトの名無しさん:2008/10/25(土) 22:41:32
>>996
馬鹿の考えはさっぱり理解出来ない

998 :デフォルトの名無しさん:2008/10/25(土) 22:41:55
機械翻訳の中の人なんていない

999 :デフォルトの名無しさん:2008/10/25(土) 22:55:49
よそ者だけど立ててみた。

【C++】 DirectX初心者質問スレ Part19 【C】
http://pc11.2ch.net/test/read.cgi/tech/1224942911/


1000 :デフォルトの名無しさん:2008/10/25(土) 22:57:26
>>999
よそ者だけど乙

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

248 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)