【C++】 DirectX初心者質問スレ Part35 【C】
1 :
デフォルトの名無しさん :
2011/05/20(金) 18:56:16.68 回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
現在の最新バージョンはDirectX 11です。
前スレ
【C++】 DirectX初心者質問スレ Part34 【C】
http://hibari.2ch.net/test/read.cgi/tech/1298067098/
前スレでGDIからテクスチャ作ってた者ですが ID3DXFontでテクスチャをターゲットにしてレンダリングしても テクスチャが作れますね。 こっちの方が品質いいかも。
ID3DXFontって安置エイリアスかかる? おれの環境だとどうやってもGetGlyphOutline()から作った方が綺麗になる。
キーボード、マウス、ジョイスティックといった入力をでっちあげるというか投げる方法ってありますか。 JoyToKeyの逆っぽい事やりたいんですけど。
DirectXとは無関係なのでスレ違い
>>3 かかる。
こっちだとD3DXFontの方が綺麗
>>4 キーロガーで調べてみ
たぶんwin32である
今はどうか知らないけど昔に見たID3DXFontは文字の上下の部分が グラデーションかからずに切れてたな
8 :
4 :2011/05/21(土) 01:10:30.40
>>5 ,6
ジョイスティック関連なのでDirextXかなと思ったのですがwin32APIで調べてみます。
ありがとうございました。
グリフのビットマップ欲しいだけならFreeTypeとか導入楽だよ GDIよりボケ気味だから好み別れるけど
それだとボケるんだって。 大きい奴しか綺麗に描画できない
>>11 あなたがどのレスをした人なのか分からないので、なんとも言えないんだ
ボケてくれたほうが良い場合もあるわけだし…
ボケさせたくないってレスあったっけ?
>>12 ごめん。
前スレで小さい文字を書くときに
アンチエイリアスが綺麗にならないと書いていましたものです。
>>13 それは難しいなぁ
OSでも「小さい文字のアンチェリが綺麗に!」っていうのが売りにされてるくらいだし
Windowsのフォント描画は、ピクセルの境界にフィットするように補正されるけど GetGlyphOutlineは内部で2倍とか4倍で描画したのを縮小しているだけだから 補正の基準が縮小前のバッファになってしまうね。 CreateFontでアンチエイリアス使用のフラグつけて、TextOutとかで描画すれば 水平線とかがボケないで描画できるけど、これはこれでMSゴシック等で問題あるし。 横だけ4倍とかで描画したのを縮小して使うのが一番無難かねぇ。
>>16 本当に描画の高速化が必要なわけじゃなくて
ビルボード文字列にチャレンジ中なんですよ。
でも汎用的な文字列のビルボードって使いづらいですよね。
キャッシュを作るとVRAM消費が大きいから巨大な文字には使えないし、
ゲーム用のフォントは手書きの絵が向いてる場合が多いから
結局ノベルを除くとD3DXFont+画像手書きフォントが良いのかなぁ。。。
アンチエイリアスをアンチェリと勝手に略す奴は例外なくクズ。
19 :
デフォルトの名無しさん :2011/05/21(土) 21:39:37.00
1>------ ビルド開始: プロジェクト: NimotsuKunFinal, 構成: Debug Win32 ------ 1>コンパイルしています... 1>Parent.cpp 1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\parent.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory 1>StageSelect.cpp 1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\stageselect.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory 1>Title.cpp 1>コードを生成中... 1>ビルドログは "file://d:\GameLib\src\NonFree\NimotsuKunFinal\Debug\BuildLog.htm" に保存されました。 1>NimotsuKunFinal - エラー 11、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== こんなのが出るんですけど、パスをいじればいいのでしょうか?環境変数もいじったけど、うまく読んでくれません。 どうしたらいいのでしょうか?
荷物くんファイナル
GameLib/ってフォルダにGameLib.hはあるのか。それが問題だ
>>17 64ピクセル×64ピクセルの32Bitカラーで1文字あたり16KB。
日本語で漢字なんかを含んで例えば300種類の文字が出てきても
VRAM消費は4.7MBくらい。キャッシュ作っても最近のビデオカードなら
VRAMはかなり余裕だと思うぞ。
23 :
デフォルトの名無しさん :2011/05/21(土) 22:43:11.52
>>21 いえ、それがそのファイルがあるのは
D:\GameLib\2DGraphics1\include\GameLib
なんですよ。
実はある教本の通りにやってるんですけど、パスを書いてある通りにやっても通らないんですよ。
「ゲームプログラマになる前に覚えておきたい技術」って本なんですけど。
んで、環境変数をいじったり、ライブラリのパスを変えたりしてるんですけど、通らないんです。
頭の方はこういう記述なんでGameLibの一つ上の階層のフォルダを指定してやれば通るのかと思ったんですけど、通らないんですよ。
#include "GameLib/Framework.h"
using namespace GameLib;
#include "State.h"
#include "File.h"
#include "Image.h"
#include "Sequence/Parent.h"
これってどこをいじればライブラリを読み込んでくれるんでしょうか?
DirectXとは一切関係ないからここでやる内容じゃないな
26 :
デフォルトの名無しさん :2011/05/21(土) 22:56:29.04
>>24 そうだったのか!ありがとう!
>>25 そっちに行きます。ご迷惑をおかけしました。
>>23 >1>d:\gamelib\src\nonfree\nimotsukunfinal
>いえ、それがそのファイルがあるのは
>D:\GameLib\2DGraphics1\include\GameLib
いきなりパスが違うように見えるんだが。
IDEの設定で、ディレクトリパス追加でもしとけば
28 :
デフォルトの名無しさん :2011/05/21(土) 22:58:16.99
1>------ ビルド開始: プロジェクト: NimotsuKunFinal, 構成: Debug Win32 ------ 1>コンパイルしています... 1>Parent.cpp 1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\parent.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory 1>StageSelect.cpp 1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\stageselect.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory 1>Title.cpp 1>コードを生成中... 1>ビルドログは "file://d:\GameLib\src\NonFree\NimotsuKunFinal\Debug\BuildLog.htm" に保存されました。 1>NimotsuKunFinal - エラー 11、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== こんなのが出るんですけど、パスをいじればいいのでしょうか?環境変数もいじったけど、うまく読んでくれません。 どうしたらいいのでしょうか? そのファイルがあるのは D:\GameLib\2DGraphics1\include\GameLib です。
29 :
デフォルトの名無しさん :2011/05/21(土) 22:59:09.86
>>27 IDE????
やべえ・・・あなたが何言ってるかわからねえぇ・・
>>28 すいません誤爆しました。
DirectX以前だプログラミングについてもうちょっと慣れてから手を出せ セガ本はお前には早過ぎる
>>29 その本の63、64ページを穴があくほどよく読め
32 :
デフォルトの名無しさん :2011/05/21(土) 23:20:33.85
>>30 ごもっとも。
>>31 どうもこれは新しいプロジェクトを作るための設定のようですね。
>32 は? 駄目だお前。VisualStudioの初歩から学びなおしてこいよ。
34 :
31&33 :2011/05/21(土) 23:44:22.20
GameLib\2DActionGame\include\GameLib にあるGameLib.h を お前の環境の D:\GameLib\2DGraphics1\include\GameLib にコピーすれば解決するだろ。。。 もしくはGameLib\2DActionGame\include\GameLibをインクルードファイルのディレクトリに含める。 お前の設定した場所にはGameLib.hは存在しない。(フォルダ見ればわかるだろーが) まあ、この本はこの手の初心者殺しのトラップがあちこちにはってあるから。 今後、読み進めるならなんでも本の通りにしかできないようでは先に進めないよ。
35 :
デフォルトの名無しさん :2011/05/22(日) 00:45:46.78
>>33 そうします。ホントダメな感じがします・・・
>>34 トラップ・・・そうなんですか・・・セガに電話してみます。
まあコツコツ基礎から勉強していくしかないね。
38 :
2 :2011/05/22(日) 14:09:32.41
ビルボードフォントについて
>>2 で書いた事をやってみたのですが、
GetGlyphOutline()でテクスチャ作ったときより
綺麗に補正がかかったID3DXFontと同じビルボードが作れました。
ロックして書き込むより楽ですね。
>>22 そうですね。512x512とかだと1文字1MBになりますが、
64x64ぐらいまでに仕様制限すれば1024x1024のテクスチャ一個に
200字くらい入ってインデックスバッファが効きますね。
39 :
デフォルトの名無しさん :2011/05/22(日) 17:26:44.63
>>35 ツールに遊ばれる程度ならば、この先何やっても出来ないから諦めて帰ってよ。
>>35 誰でも最初はそう。
いろいろ試しているうちに、いつか感覚がつかめてくる
なんでここってIDでないんだろうな
ゲームプログラムなら俺に聞けってクソだな 何処に聞けばいいのだ
自分の胸
>>41 出たら便利だと思うんだけどななんでだろう?
ちょっと確認したいんだけど
前スレに出てたFreetypeのライセンスってBSDライクのライセンスかGPLかどっちかを選択しろ
って事かな?
それとも両方?
デュアルライセンスだから提示された中から好きなライセンスを選択
47 :
デフォルトの名無しさん :2011/05/26(木) 16:31:22.30
すみません、DirectX SDK(June 2010)をインストール しただけではアプリケーションウィザードは使えないのですか? DirectX9 SDKとかをインストールしないとだめですか? それともVC++2010だとだめとかですかね。
あ、ウィンドウループと描画スレッドを同じにして ロジックのスレッドを別スレッドにすればよいのか
トリプルバッファのときにテクスチャにレンダリングする場合、 Device->GetBackBuffer(UINT backbuffer, ...) Device->SetRenderTarget(UINT index, ...) これらの第一引数に1を(バックバッファの2枚目)を指定するであってる?
51 :
デフォルトの名無しさん :2011/05/27(金) 13:47:18.06
GetDescなどのコストってどのくらいなのでしょうか? やっぱり保持しておいたほうがいいんでしょうか?
なんだそりゃと思ったらDX10だ
>>52 コストほとんどない。
単にシステムメモリーからシステムメモリーへのコピー
55 :
デフォルトの名無しさん :2011/05/28(土) 16:08:18.32
dx9で、PSでdiscardされたものを除いて、 出力されたピクセル数を得る方法があったら教えてください。
今direct3D 11のマニュアルを読んでいて Direct3D 11 では、機能レベルという新しいパラダイムが導入されました・・・」 とありますが、何がすごいんですか? 説明内容を見ていると 「デバイスを作成するときに、必要な機能レベルに対応する デバイスの作成を試すことができるようになりました。 デバイスを正常に作成できれば、その機能レベルが存在しています。 作成できない場合、その機能レベルは目的のハードウェアでサポートされていません。 それより下の機能レベルでデバイスの作成を再試行するか、 アプリケーションの終了を選択します」という説明を見る限り、今までと 大差ないように感じます。 (以前のバージョンの Direct3D では、ビデオ カードが Direct3D のどのバージョンに対応しているかを確認し、そのバージョンに応じて アプリケーションをプログラムする方法がとられていました。)
57 :
56 :2011/05/29(日) 17:41:52.71
出来ることと出来ないことが機能レベルという 少数のバージョンにまとまっているから 把握しやすいぐらいでしょうか?
そんな感じ。 「最新の技術はサポートしてるのに、古い技術はサポートしていないグラボ」 とか、そういうもう面倒でたまらない連中が存在しないってのはありがたい
60 :
56-57 :2011/05/30(月) 10:05:21.85
directX9なんですが、 ID3DXSprite でテクスチャを2D描画してみたんですが、1500枚ほど出しただけで 動作がもたつくようになるんですが、こんなもんなんですかね? Begin〜Endは1回だけです。
テクスチャのサイズが不明なら動作スペックも不明 それでこんなもんなんですかねとか、気が狂っているとしか思えない。
あんま関係ない横やりで悪いけど ID3DXSprite ってなんでBegin()-End()が必要なんだろ? キャッシュ作るような余地があるのだろか
ID3DXSpriteは描画のたびにシステムメモリからビデオメモリにデータ渡す必要があるし そもそも描画の呼びだしにオーバーヘッドがあるから、何度もDrawするんじゃなくて インスタンス化とか使って、一度のDrawで全部描画すればいい
>システムメモリからビデオメモリにデータ渡す必要があるし 自分で頂点シェーダにビルボードのX,Y,U,V座標の引数渡せば 頂点4つ分→頂点1つ分になり転送量が少なくて早いのか? 頂点バッファをD3DLOCK_DISCARDでロックして値をコピーするなら コンテナ・キューで処理するからロックコストはないらしいぞ
VC+DirectX11で質問です PSSetShaderResources でセットしたテクスチャを外す方法はありますか? ステンシルバッファ(レンダリングターゲット)⇔テクスチャの行き来をする為に ShaderResourceにセットしたままレンダリングターゲットにセットすると、 デバグビルドの実行時ログでWARNINGがズラズラ出て気持ち悪いのです。 NULLセットだと落とされます
67 :
66 :2011/05/31(火) 06:07:03.37
補足です。 ・実行自体は問題は無いように見えます(ERRORでなくWARNING だから?) ・適当な1x1のテクスチャをPSSetShaderResourcesで上書きセットするとWARNINGは消えます
ID3DXSpriteってつかいやすい? 腹立つわー
70 :
61 :2011/05/31(火) 22:49:12.85
気が狂ってて失礼しました。 WindowsXP, Athlon64 X2 2.0GHz, メモリ1GB GeForce 6600GT, VRAM 128MB, ハードウェア頂点処理 ウィンドウモード(640x480 D3DFMT_R5G6B5) DirectX9 SDK Jun2008 の環境で 128x128 のテクスチャを ID3DXSprite::Draw で描いたら 1500枚付近から動作がもたつくようになりました。 // 1500枚の実装 pSprite->Begin(D3DXSPRITE_DONOTSAVESTATE | D3DXSPRITE_DONOTMODIFY_RENDERSTATE); for(int i=0; i<1500; ++i){ pSprite->Draw(); } pSprite->End(); インスタンス化かどうか分かりませんが、 DrawIndexedPrimitiveで一度に描くとかなり早くなりましたので こっちを勉強してみようと思います。 ありがとうございました。
>>70 そりゃ、だってそれ、ただ単に各頂点が一続きじゃないってだけで
面数1500のメッシュを表示するのと同じ事だから、
メッシュ表示するのと同じ(DrawIndexedPrimitive)でいけるでしょっていう
全部三角形だとすると、たかだか頂点数4500だし
そりゃ 128 × 128 × 1500枚 ≒ 2400万ピクセルだぞ Zバッファ使ってるならいいけど、半透明で下から書いてたりしたら GeForce 6600GT だともたついてもおかしくないピクセル数
2D厨はなんでそんな高性能なハードでそんなショッパイモノしか作れないの?
7年前の 6600GT が高性能…?
6600GTつかってる俺に謝れ! 新しいPCはゲーム作ったら買う
ひぐらしデイブレイクの影バグが起こらない最新のグラボが6600GTなんだよ!
最初のデバイス設定で、 D3DDISPLAYMODEのPresentationIntervalを D3DPRESENT_INTERVAL_ONEにした場合、 ディスプレイの垂直同期タイミングに同期して画面を更新しますが、 通常よくあるリフレッシュレート60Hzのモニタでなく、 最近出てきた120Hzのモニタの場合、120fpsで描画されるのでしょうか??
>>78 別に処理が早くなる訳じゃないからな
120fpsで描画出来る内容なら、きっとそうかもね
81 :
78 :2011/06/02(木) 21:17:33.32
質問です 頂点シェーダでCOLORを出力すると、RGBAがそれぞれ0〜1に丸めこまれますよね しかしTEXCOORDなら、それぞれの値はそのまま渡せるようです ということは、COLORは32bit。TEXCOORDは128bitのデータをPixelShaderに渡しているのでしょうか? それともCOLORも、丸めこまれるだけで、128bitのデータをPixelShaderに渡しているのでしょうか? 擬似HDR表現の実装の一環として、 丸めこまれてほしくないカラーデータを、TEXCOORDとして渡すのもありなのかなぁとか考えているのですが
D3DDECLTYPE_D3DCOLORで宣言してりゃ 頂点シェーダに入力された時点で0-1にマッピングされてるよ
D3DXCreateTextureFromFile() とか CreateTexture()って デバイスを生成したスレッドでよばないとデバッグランタイムで 警告でるっぽい? 他のスレッド全部ロックしてるのに CreateDevice()でマルチスレッドフラグにしろって警告でてくる。
警告は見たことないけど、CreateDevice()でマルチスレッドフラグ立てとかないと、 別スレッドからは呼べないよ。呼ぶと運悪く固まったりする。
ありがとう。 スレッドを分離したらめんどくさいですね。
87 :
デフォルトの名無しさん :2011/06/04(土) 14:32:10.42
すいません、HLSLの静的分岐やループ展開のタイミングはいつ行われているんですか? MSDNで一通り調べたんですが、イマイチはっきりしません。 コンパイル時なのか、シェーダーでの描画開始時なのかどっちなんでしょうか?
88 :
デフォルトの名無しさん :2011/06/04(土) 16:54:34.14
DirectXのフルスクリーンゲーム上に自作アプリで文字を描画する場合は、 DirectXのAPIを触る事で可能なのでしょうか? それともOSで用意されているフレームバッファ的な何かに描画する事で可能になるのでしょうか? よろしくお願いします。
D3DXFONT
>>88 どっちもハズレ
自分で調べられずにこんなところで聞いてるレベルじゃ手も足も出ないような技が必要
>>90 ありがとうございます。
であれば板違いだったようなので別のとこで質問します。
LGPLでソース公開してる人がいたのでソースみてみたけど、やっぱりDirectXをHookしてた。
何の話をしてるのかわからん。
>>84 で描画 + ウィンドウループとロジックの2つにスレッド分けてた
話ですけど、MSDNの記事だとマルチスレッドフラグは良くないみたいですね。
そこで描画スレッドに関数オブジェクトを渡して
描画スレッドが消化するまで待つと方式にしましたが
クリティカルセクションとBegin() 〜 End() 〜 Present()
1フレーム待たされるので、テクスチャーなどの
テクスチャなどの生成・更新・削除が重くなりました。
削除は非同期にできますけど、他は更新結果のサイズとか
ロジックで必要になるのですぐに結果を返す必要があるんですよね。
Preset()で垂直動機待たされる間が最も大きいのですが、制御できませんかね?
HRESULT hr;
while( true )
{
....DWORD flag = なんとかNoWait;
....hr = pDevice->Present( flag );
....if(hr == 垂直動機待ち )
....{
........ロジックのスレッドから関数オブジェクトが着てたら消化する();
........Sleep(0);
....} else if( hr == 描画完了 ) { break; }
}
素直にDirect3D11を使えば、スレッドの扱いは格段に楽になるよ。
>>88 D3DXFONT か、ビルボード。
私は初回はビルボードへのマルチパスレンダリング、
2回目以降はキャッシュを使ってますが、
たぶん一般的な無難なやり方って確立してないので良い回答は難しいですね。
はい?
単純に文字を表示するのと勘違いしている馬鹿なんだろう。 まあ他人のアプリの上に何か出すというのもスレ違いの馬鹿な質問なんだが。
聖書によると馬鹿っていう奴が馬鹿らしい 厳密には人に愚か者というものは永遠の燃える業火に投げ込まれる、だけど 深い意味はわからん
99 :
93 :2011/06/05(日) 20:15:13.54
垂直同期待ちの間にテクスチャの生成などを処理する方法として D3DPRESENT_DONOTWAITフラグが使えるかなと思うんですが、 次のような垂直同期待ちの使い方は正しいでしょうか? pDevice->BeginScene(); ... pDevice->EndScene(); IDirect3DSwapChain9 pSwap = pDevice->?(...); while(true) { ....DWORD flag = D3DPRESENT_DONOTWAIT; ....HRESULT hr = pSwap->Present(flag); ....if( hr == D3DERR_WASSTILLDRAWING ) ....{ 描画中; 他のスレッドから送られたタスクを消化(); Sleep(0); } ....else ....{ 描画完了; break } }
そもそもD3DCREATE_MULTITHREADEDが良くないなんて情報はMSDNには存在しない。 書いてあるのはパフォーマンスが落ちる可能性についてだけだ。
101 :
93 :2011/06/05(日) 23:10:23.21
推奨されないのだから基本的には良くないだろ。 D3DCREATE_MULTITHREADEDのページじゃなくて こっちのページ的に。 トピック「スレッド同期化の過剰使用」 ゲームにおける過度の同期化の一般的な要因は、D3DCREATE_MULTITHREADED の使用です。 このフラグは、複数のスレッドからのレンダリングで Direct3D をスレッド セーフにする一方で、 保守的な方法を使用しているため、同期化のオーバーヘッドが高くなります。 ゲームではこのフラグを使用しないでください。 代わりに、Direct3D とのすべての通信が単一スレッドから実行され、 スレッド間の通信はすべて直接処理されるようにエンジンを設計します。
>>87 コンパイル時だよ
fxc.exeを使って実際やってみるといい。結構色々最適化きかせてくれるぜ
>>101 それって、テクスチャーのロードとかもメインスレッドでやれってことなのかねー?
スレッド側でロードってパターンは結構あると思うんだがなぁ・・
>>103 テクスチャデータのロードとクリエイトを分離すれば・・・って事じゃなくて?
106 :
93 :2011/06/06(月) 00:49:52.88
107 :
105 :2011/06/06(月) 01:19:54.79
>>106 アドレスとかありがと。
うちは D3DCREATE_MULTITHREADED 使って色々やってたんだけど、
明確な目的の上にしっかり設計しているなら良い効果もあるよ。
フレームレートをなるべく落とさずに大量のリソースを操作する時とかに使ってる。
まぁ、基本的なスレッド設計と一緒か。
それと、こんな事言うのもあれだけど現行のCPU、OSってそんなに貧弱じゃないから多少目を瞑ってもいいんじゃないかな。
記事の当時は WinXP Pentium 4 なり D あたりで確かにスレッドで頑張っても思う通りのスペック出すのもきつかったけど、
今のスペックでかつ、初心者スレでは安全性と作りやすさでもいいんじゃないかな。
無論、妥協しないのが無論いいけど。
ゲームでは使うなってだけで、ゲーム以外なら大丈夫だろ
>>108 「当時のメーカーパフォーマンスがかつかつになる程のゲーム」を今の初心者が作れるのか?
むしろ初心者のほうが無駄な処理や技術力不足で重いゲームになるだろ
>>104 あー、やっぱりスレッド側でロード(ファイルtoメモリー)して、
メイン側でクリエイトするべきなのかー…
Xファイルって、Memoryからのロードでもめっさ遅いんだよね…
やだなぁ…。次からはXファイル絶対使わんけどさ
D3DCREATE_MULTITHREADEDの説明見る限り ウインドウメッセージを処理するスレッドと、DirectXを使うスレッドが同一でない限りは、 このフラグつけなくちゃいけないんだな… かなりきつい制限だなー… ゲーム(の描画)が処理落ちしたらウインドウの動きが悪くなるなんて、ユーザーは酷いアプリだって認識するだろうに…
>>110 どの程度パフォーマンス落ちるんだろう?
>>111 重いって、テキストフォーマットを使っているという落ちじゃないだろうな?
バイナリだったらどのフォーマットを使っても似たり寄ったりなのは理解しているか?
>>114 もちろんバイナリだよ
それ以前の問題として、Xファイルは独自拡張を許してるから、その辺り、とてつもなくきちんとファイルチェックしてるっぽいのよ
おかげで、独自フォーマットなら
「壊れたデータとかありえないから、バイナリをそのまま頂点バッファに流し込めばいいや」
とかそういうレベルでできてちょっぱやなのに
Xファイルだと(バイナリだろうがテキストだろうが)いちいち整合性チェックやら、独自拡張タグ解釈やら走りまくって遅くなる
というわけで、バイナリだったら大抵の独自フォーマット同士は似たり寄ったりなんだけど、Xファイルは別なんよ
>>112 DirectXはフルスクリーン向きだから
ウィンドウモードはデバッグ用と割り切るとか
DirectInputとかもHWNDつかってるけど
マルチスレッド制限見当たらないから大丈夫ぽい
>>115 チェックするかどうかは自分次第の話なのに、なんで他人事なんだ?
まさかD3DXに頼りっきりでごねているとか低レベルな話じゃないだろうな。
そもそもデータに付いているGUIDを振り分ける程度の単純作業で、 負荷が起こっていると勘違いしている時点で、 フォーマットを全く理解していないのが丸わかりだ。
低脳な煽りが住み着いてるな
適当なことを言えば煽られる 毎度の流れ
>>117 「Xファイルのロードとは聞かされていたが、D3DXでロードしているとは思わなかった(キリッ」
「Xファイル使ってD3DX使わずにロードする」ことのメリットを教えて欲しいわw
>>118 Xファイルのローダーの仕様分かってないんだな…
知らないなら知らないって言えばいいじゃん。普通はそんなこと調べるくらいなら独自フォーマット使うから、知らないのは恥じゃないよ?
GUIDを振り分ける作業とか意味不明。
Xファイルで「ヘッダでの配列長の指定と、実際のデータの長さが異なるデータ」をつくってロードさせてごらん
頂点配列あたりがいいかな
きちんと「適切なエラー情報」を返してくれるから。
つまりこのローダー、律儀にもValidateチェックしてくれてるんだよ
当然激遅なわけ。わかった?
適当な事って簡単に言ってくれるけど、こっちは実際に自分でテストしたんだぜ?
想像だけでケチつけるなよ
気持ちはわかるが…(俺だって、MSがこんなまぬけな実装してるなんて最初は思ってなかったからな)
横からマジレス フォーマットの理解と、ローダーの仕組みってまったく関係なくね? そしてXファイルのフォーマットって化石の生えた黎明期なりのもんだろ? 実際に自分でロードしたことないのが丸分かりだ 10000頂点で100アニメーションくらい入れたスキニングモデルでもロードさせてみろ 30秒はかかるぜ(苦笑)
>>122 >GUIDを振り分ける作業とか意味不明。
拡張できるようにするために、
データのテンプレートごとにGUIDが設定されているんだが、
意味不明とはどれだけ仕様を理解していないんだよ。
125 :
118 :2011/06/06(月) 15:07:25.46
ごめんなさい 2chは煽って嘘かけば情報もらえるって聞いてたのでやってしまいました マジごめんなさい
Xファイル使ってた人は今どんなフォーマット使ってるんだろう?
>>124 「GUIDを振り分ける程度の単純作業」だから負荷が無いって言ってるのが意味不明なんだよ
単純なダンプができなくなることが超絶痛いってのに。アホかと
はぁ・・・まじで一回自分で実測してこい。実測結果貼り付けるまで相手にせんからな
>>126 ゲーム作るのなら自作フォーマットお勧め
ってかそれ以外選択肢はまずない
製作途中の中間フォーマットは一般的な3Dツールのデータだけど、ゲームEXEが読み込むファイルのは独自フォーマットに限る
>>124 あのー、カスタムテンプレートをXファイルローダーがどう処理してるか本当に理解してますー?
なんかGUIDでの指定によって、それに対応したローダーが呼ばれるみたいな言い回しに聞こえるんですがww
D3DXの実装が腐っているのと、Xファイルのフォーマットの問題が混同して語られているのは何とかならんのか?
Xファイルの読み出しでもっとも負荷がかかるのは、 マテリアルごとに頂点とスキンウエイトを並び替える作業のところ。 これが腐っていると時間がかかる。 アニメーションは普通なら重くなることは考えにくいが、 データはキーフレームではなく、ベタの行列が大量に入っているような腐ったデータを利用していると極端に重くなる。 前者は実装の問題で、後者はデータ生成時の問題。
>>122 >Xファイルで「ヘッダでの配列長の指定と、実際のデータの長さが異なるデータ」をつくってロードさせてごらん
ロードの流れは、GUIDでタイプを判別して、個数分データを読み込んだ後、
次のブロックでまたGUIDを判別してデータを読み込む作業を繰り返しているんだよ。
だからサイズが間違っていたら、登録されているIDと一致しなくなってエラーになるだけの話。
その程度の処理のどこに重くなる要因があるんだよ?
まだやってんの?
>>128 自作フォーマットって
カリングとか考慮するレンダラーも自作することを考ると
オープンソースなフォーマット採用するより
自分でフォーマット定めたほうがやりやすい?
XNAはFBXも使えるよ!
Xファイル無しでアニメーションって作れるの?
もちろん作れる。 自作フォーマット内にアニメーションの情報も格納できるようにしておいて、 プログラムの描画時とかにそのアニメーション情報に応じて動かせばOK。
D3DXにはHierarchy・・・関数とかあって最適化とかしてもらえるけど、自前でアニメーション機能を 実装しようとしたら難しそう
アニメーションといったって、フレームの行列を差し替えるだけなのに、 何が難しいのかさっぱり分からん。
インデックスで渡されている通りに、ウエイトを1.0からさっ引きながら展開していくだけの簡単なお仕事です。
アニメーションコントローラーみたいなクラスを綺麗に設計するのが難しいんじゃないかな
>>141 そのサイトって、作者自身がいまいちよく分かっていないと思う
だから初心者がみると余計に混乱するんじゃないの?
プログラムより、モデリングと適切なモーションを付ける作業の方が遙かに面倒で難しい。
>>131 >データはキーフレームではなく、ベタの行列が大量に入っているような腐ったデータを利用していると極端に重くなる。
Xファイルで、ベタの行列を大量に入れないでまともなアニメーションを作る方法教えてほしいなーw
独自フォーマットならスプライン曲線による補間とかでデータ省けるけど、Xファイルでは知らないなーw
ま、さ、か。キーフレームで等速運動してるしょっぼいアニメーションしか扱ったことないんですかあ?
ここで「AnimationControllerのAdvanceTimeに渡す値をスプラインなりで緩急つけてやればいい」とか言いだしたらもっと笑う
いやもういじめてやるなよ なんかこのスレ、無知なまま噛みついてフルボッコにされる奴しばしば現れるよな 何なんだろうな 初心者スレなんだから、噛みつくんじゃなくてきっちりした情報出せばいいのに もしくは初心者として質問する側に回ればいいのに
>>146 >独自フォーマットならスプライン曲線による補間とかでデータ省けるけど、Xファイルでは知らないなーw
知らないのはあまりにも酷すぎる。
Xファイルも標準仕様でポジション、スケール、クオータニオンでデータが持てるんだが。
クオータニオンできっちり補完も効くし、無知にも程があるよ。
結局、行列で大量にサンプリングされた無駄なデータを自分ではき出しておきながら、 読み込みが遅いと言っていただけかよ。 そりゃ当たり前だ、馬鹿すぎる。
IPOキーフレーム と BVHの違いみたいな話か つか、Xファイルとか捨てろ。自前で実装しとけ。簡単だから
>>112 たしかDX9はマルチスレッドの対応がかなり甘いとか
DX10か11は完全に対応していると聞いたので
移行しかないと思われる
>>148 ・・・呆れたorz 心底呆れた
論点そこかよ…行列じゃなくてTranslate, scale, rotateで持てってだけの話かよ・・・
論点をそこだとどう勘違いできるんだよ…「スプライン曲線による補間」がどうそれに関わるんだよ・・・
駄目だこいつ・・・はやくこの板ID出るようにしてもらわないと
>>148 >Xファイルで、ベタの行列を大量に入れないでまともなアニメーションを作る方法教えてほしいなーw
>独自フォーマットならスプライン曲線による補間とかでデータ省けるけど、Xファイルでは知らないなーw
↑これは時間方向のデータ量についての話で、
>Xファイルも標準仕様でポジション、スケール、クオータニオンでデータが持てるんだが
↑これはただの単位データ(移動拡縮回転)の話で、
なんて言うか、恥ずかしいくらい話見えてないなお前はよ。
俺は
>>146 じゃないが、頼むから勉強しよう。本当に。 あなたは確実に素人だ。
>>148 が酷すぎる。
サイトの受け売りでわかったつもりでいたのかもしれないが、
その受け売りでさえ、まるで意味を理解してないって事
>クオータニオンできっちり補完も効くし
上の文脈で、「クォータニオンで補間がきっちり効く」 とか、知ったかぶりもいい加減にしろよ。
クォータニオンってのは単にある軸に対する傾きを現してるだけの回転行列の代替であって、
それが補間を効かしてくれる訳じゃないんだよ。 自分で計算するならば、補間処理を し や す い
ってだけの値。
大方ゲーム製作系の素人が書いた解説サイトの話を、詳細曖昧なままうのみにしてるだけの
知ったかぶり高校生とかだろうけど、 ちょっとは考えて発言しろ。 恥ずかしいから
行列で持つのから、ポジション、スケール、クオータニオンで持つように変えれば データ量が3/4になるね やったね!たえちゃん
>>155 相変わらずXファイルを理解していないようだが、
行列と違って3要素はばらばらのキーフレームとして持てるの。
だからポジションが曲線を描くのなら1/4。
そのぐらいは理解してから語ってくれ。
Xファイルごときが独自フォーマットとそん色ないロード速度って主張してる段階で、お子様の妄想だと分かってただろ
>>156 ああ、うん、そうだね
場合によっては1/4に減らせるね。うん。
で?
ちなみに行列でデータを吐いたら、モーションブレンドが使い物にならなくなるので、 普通の思考力があるのなら絶対に使わない。
まだ続くの?
2Dの場合は回転って角度だけ持てばいいんですか?クオータニオン持つ必要ない?
(行列データだとモーションブレンドが使い物にならなくなる…?) (ああ・・・多分、行列データをD3DXAnimationControllerが内部でSTRに分解してくれるってこと知らないんだろうなぁ・・・)
FBXとかアニメーションデータが残念過ぎる 絶対座標でやってしまってるために走ってるキャラの腕だけアニメーション適用とかできない なんでここ相対にしなかったの?って担当者ボコボコにしたい この一点で仕事じゃ蹴られた
元に戻る保証がないけどね。
>>161 回転の方向による。車のハンドルをまわすような回転(Z軸回転)しかやらないなら、角度1つでOKっしょ
でも最近だと、2Dであっても3D的な演出を入れることもあるよね
だからそういう意味だと、XYZ軸で回転情報持つと、かっこいい演出つくれるかも
クオータニオンを使うほどのことじゃないと思うな
>>163 腕のアニメーションを、原点中心で制作すればよくね?
相対にすると「ボーンの向き(とかねじれ)」っていう、非常に厄介なものが入ってくるからなー…
>>166 超面倒臭いだろ
実質使えないだろ
そこに労力使っちゃうぐらいならプラグインでもっとまともなデータ出したほうが速いよ
2行目はいまいち何言ってるのかわからない
単に腕のアニメーションを適用してほしいだけなんだけど絶対座標だからそれができない
SRTに分解できない可能性があり、 TranslateとScaleに情報が無くRotateだけの行列を キーフレでの線形補間ができる場面でただただ無駄に格納し XFile使っておきながら、何故かD3DXのXFileロード関数をなぜか使わない馬鹿 という妄想の産物相手にいばりちらすのってムナしくね?
>>168 どういうシチュエーションだかちょっとわからんのだが…
じゃんけんしてるアニメが入ってるAというFBX
踊っているアニメが入ってるBというFBX
Aのデータから「腕から先のアニメ」だけ抜き取って、Bに適用することにより
「踊りながら、腕から先がジャンケンしてる」アニメを作りたい
とかそういうことだよね?
マテリアルごとメッシュわけて出力してよ・・・ お前、マテリアルごとわけて描画できんの? って描画してみたら見事に描画できないしなw だったらこんなフォーマットにすんなよw
>>161 その角度から回転の計算をするプロセスが抜け落ちてないか?
クォータニオンはただの行列の代替だよ。 乗算順序によるジンバルロックを回避出来る計算方法ってだけ。
てか、回転ってどういう事だかわかってから言え
あるベクトルを軸にして回転、って言う計算をする場合に有利になるってだけだから、
使うのも使わないのもご自由にどうぞ。
>>159 まともな数学の知識ある人なら、そういう訳わからん事言わないと思う
MSDNって、致命的な誤訳をほっぽらかしにするよね(´・ω・`) って、英語でも0123ってなってるわw
>>172 そうそう多分そんな感じ
ロックマンを走らせながらロックバスター撃たせたいみたいな感じのがわかりいいかもしんない
ってか担当者マジでいまからでも相対データにしてほしい
なんで絶対にしたんだろか?
多くのモデリングソフトとなんでここで違うことしちゃうんだろか?
よくわかってなかったんだろうか?
すげー残念だ
洋ゲーはアニメーションしてるキャラに瞬きさせないの? FBX作った奴の感性はそんな臭いがする感じだ
>>168 >超面倒臭いだろ
>実質使えないだろ
お前が何も知らないだけなのを棚に上げてるだけ。「面倒くさい」んじゃなく「わかんない」と言え。
オフセットして回転したらいいだろ。
ボーンデフォームなんて単に再帰で、ボーン位置をオフセットしてから、それぞれのローカルで回転、
を積み重ねるだけ。
その時、座標空間をきちんと理解してない奴は混乱するが、回転するのは、親のボーンベクトルから見た
自分自身の座標系であって、「各々のローカルで回転」 ではあっても、実際には 「親からの回転の積み重ね」 になればいいだけ
こんなの3D扱ってたら常識っていうか、普通の話。 面倒でもなんでもないっていうか、そのぐらいわかれ
>>178 無理じゃない?
絶対で作ってあるから足が動いてたら腕のデータは全部無駄のはずよ
>>174 その計算を含めて何を持てばいいのか、、、
ローカルのz軸中心の回転なら一個在ればいいと思うし
データ量が増える、回転に問題が生じる、分解にコストが生じると問題だらけなのに、 わざわざX-Fileで行列を使うことを主張する理由はなんなんだろう?
こっからはフルーツジュースからアップルジュースとオレンジジュースを取り出すみたいな 話になっから不可能だと思うよ やっぱり絶対座標ってのが致命的 瞬きも口パクもボーンでできないからマジ使えないと思う
>>176 んー、じゃんけんアニメの腕アニメーションに、
原点から腕までのワールド変換行列の逆行列をかければよくね?
まあ逆行列かけて純粋な「ジャンケン腕アニメ」を作りだす手間自体はあるか…
BVHってボーンはねじれ情報持ってないんだが、おかげでデータが直観的でいじりやすい
ツール間の互換性も保ちやすいしね
>>181 もともとが「行列を使うのか、SRTを使うのか」ではなく
「毎フレーム、ポーズ情報を持ってるからロードが重いんだろ。線形補間使え。この低能」
「線形補間で済むようなしょぼいアニメなんてさせるかアホ」
という会話が発端でやす
>>180 データとして保持 「しないといけない」 情報は Z中心の XY平面の回転角だけど、
実際にXY平面上の二軸位置を決定する計算の為に、行列でもクォータニオンでも好きに持てばいいって事
データの性質として must な物と、実際のプログラミングの上で 「使うはずのもの」。
つか、その辺の詳細な計算方法やアルゴリズムとか、スレチだけど OpenGL で
メッシュアニメーション処理とか書いてる人なら、普通に理解してると思う。
>>180 なんか小難しい話になってるけど、とりあえずZ軸回転1個でいいと思うよ
X軸回転で場面転換!とかかっこいいから、分かるようになったら追加してけばいい
幸い2Dなら「Z軸で回転アニメと、X軸回転アニメを組み合わせて複雑な挙動を」みたいな「回転の合成」は不要だろうし
>>183 いや、腕から先のアニメーションデータはどうやって相対のを作り直すの?
>>184 回転でも拡縮でも移動でも、それらは結局、頂点が移動するだけって事を計算処理上、
理解出来てる人じゃないと感覚的に理解出来ないかもしれないが、
俺、OpenGLでボーンデフォーム処理書いた時、キーフレーム間の頂点位置変化は、4点ベジエ計算で補間して変化付けてたので、
データ量軽い、動きも統合3DCGソフトと同じになりました。 DirectX でも同じような処理書いたけど、
X-File とか正直いらない。 あれは簡単なデモを作りたい人向け。 俺はリアルタイムでアクションな物を作ってたので、あの形式は色々都合が悪かった
一応、簡単にだけ補足しておくと、 >キーフレーム間の頂点位置変化は、4点ベジエ計算で補間して変化付け って言うのは、(わかってる人には蛇足でしかない話だけど)、 あるフレームからあるフレームまでの変化量 0.0 〜 1.0 の範囲について、等速直線でなく、放物線のような変化を付けているって事 偏りをもたせた周期関数のような楕円運動に似た計算
>>188 こんな話の流れ。馬鹿に返答してるのは俺だけでなく、何人かだが・・・。
Xファイルはロードも重いことだし、独自フォーマット使おうぜ
>Xファイルロード重いとかお前が馬鹿なだけ。バイナリなら軽い。テキスト使ってるだろww
いや、バイナリだが…
整合性チェックやら、カスタムテンプレートやら丁寧すぎて遅いんだぜ
独自ならダンプで済むから速いぜ
>GUIDで分岐(意味不明)してるだけなのに遅いわけねーだろwww
意味わからん。アニメデータ100個くらい入ってるXファイル作って実際に試してみろ
>どうせアニメデータにベタの行列が大量に入っているような腐ったデータ利用してるんだろwww
いや、ベタにいれないとまともなアニメにならんだろ
補間関数を使うくらいなら独自フォーマットでやるわ
>行列使ってるんだww馬鹿じゃねwwwSRT使えよwww
いや、SRTか行列かって話じゃなくて、補間の話なんだが。線形補間じゃあまりにしょぼいだろ
>行列は欠点だらけだし、アニメーションブレンドも使えなくなる。お前馬鹿ww
いや、アニメーションブレンドできるし。というかD3DXが勝手にSRTに置き換えるし
>・・・(逃走)
市販のフォーマットはロクなのがねーな 結局、プラグインで出すしかないのか・・・ 同人開発はまだまだメタセコから離れられないな
共通フォーマットでリアルタイム向けで一番ましなのがXファイルだからな マジでこんな10年以上前のフォーマットからいまだに進歩ねぇとか笑うよね
同人開発w だからXファイルとか使っちゃうのか プロなら絶対使わないし、Xファイルの仕組みくらいわかってるわな
だれか「もう休め!」ってやってるAA張ってやってくれ
>>187 腕までのアニメーション行列の乗算結果の逆行列をかければ、原点を中心とした腕(から先)のみのアニメーションがとりだせるっしょ?
それを踊りアニメーション側に適用してやればいい
>>190 そうだったか・・・ なんか凄いな。
俺の場合、Blender上で作成したメッシュの頂点とそのインデクス(面構成用)とマテリアル、
あとボーンの再帰的なオフセットと位置と回転行列(実際はクォータニオン)とをセットで吐き出す
Pythonスクリプトを書いて、俺の都合で階層化させて加工した内容を吐かせた
ついでにアニメーションキーフレーム単位で、各アニメーション対象オブジェクト(主にボーン)の位置と回転を
吐かせる Pythonスクリプトを書いて、
これら両者の情報を合体した物を自前のモジュールで読んで更新と描画してる。
元々リアルタイムアクション向けと割り切った物なので、時間当たりの計算量を減らす為、ストレートな処理をしてないが
自前で実装するとぶっちゃけ、なんでも自由に自分の都合で実装出来るから気が楽。
>>195 丁度それ、俺が上で書いてるアニメーション情報の書き出しの段階で、予めやってる計算と同じ。
自前フォーマットだとこういう事前加工が自由に出来るから気が楽。
インバースした行列で各間接単位のローカル位置と回転情報を、事前にそうやって整理して吐き出してしまえば
あとの実行時に余計な計算しなくて済むから、便利
>>196 やっぱ自前で出力プラグイン書くしかないかー
>>192 むしろ、完成度が高いと考えるんだ
必須なのに無い機能っていったら、マルチテクスチャくらい
Xファイル完成度高い
公開もしてない自前フォーマットの方が断然優れてるとか熱弁されても ここで聞いてる人間はふーんとしか言いようがない
>>199 なあ、148さ。そろそろいい加減にしとこうや
独自フォーマットなら色々できるんだぜって教えてくれてるんだぞ?
スレの結構な人数が、お前のために色々レスうってくれたんだぞ?
そろそろお礼いってしめようや
どの書き込みか見るのが面倒だから安価にしてくれw
まだ続きますか?
203 :
148 :2011/06/06(月) 23:48:11.99
ごめんなさい・・・ ほんとはXファイルのこと調べてても全然わかんなくて 先輩に2chは嘘情報でもいいから自信満々で書けば訂正レスの形で情報くれるって聞いてたもので・・・ 今度からはちゃんと質問するようにします
>>199 公開するとかしないとかじゃなくて、また断然優れてるとか優れてないとかそういう話じゃなくて、
俺は、 「俺の都合で書き出して、俺の都合で読み込んで、俺の都合に合わせた」 と話しただけだよ
そして多分、多くの人が 「自分の都合で何かをしたい」 はずだから、既存のフォーマットで満足いかない案件なら
自分で実装した方がいいと、言ってるだけ。 文意の理解もそうだけど、処理を理解しよう
先輩「2ちゃんで聞け・・・!」 悲しくなってくるな
ID出ないから
>>148 が本物であるという証拠もないという
>>195 それだと行列キーのアニメーションしかできないじゃん
上で言われてるXファイルのクソアニメーションといっしょじゃん
0→180みたいなのいちいち気を配ってないといけない
unity最強
>>208 いやー、そんな後から後から条件追加されても困るわ^^;
別にSRTでやればいいじゃないか
処理速度がというなら「原点に移動させた腕のSRTによるアニメーション」データを持つ別FBXを生成しておけばいいじゃないか
FBXで「可能」なんだから、何に焦点あわせたデータ設計にするかは思想によるんじゃね?
FBXは絶対座標で扱うおかげで、ボーンのZ軸回転に非対応なBVHと互換性をもてるわけだし
プロの世界じゃBVHとの互換性はかなり重要なんじゃね?
(プロじゃないから分からんけど)
FBXでも出すツールによって中身違うじゃん、MAYA使っててモーションブレンドとかレイヤーモションとか困ったことないよ。Lightwaveん時は 割りと困った。
質問です。
http://rina.jpn.ph/~rance/directx8/index.html このサイトを見ながら練習していて、いま
http://rina.jpn.ph/~rance/directx8/04/03.htm このページの上から3/4ほどの「プログラムの無駄を省く」の直前のところまでやったのですが、ついに以下のエラーが出てしまいました。
1>------ ビルド開始: プロジェクト: ddrawsamp01, 構成: Debug Win32 ------
1>2011/06/07 にビルドを開始しました。
1>InitializeBuildStatus:
1> "Debug\ddrawsamp01.unsuccessfulbuild" のタッチ タスクを実行しています。
1>ClCompile:
1> WinMain_04_01.cpp
1>c:\users\takahiro\documents\visual studio 2010\projects2\ddrawsamp01\ddrawsamp01\winmain_04_01.cpp(373):
error C2664: 'IDirect3DDevice9::SetVertexShader' : 1 番目の引数を 'int' から 'IDirect3DVertexShader9 *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
1>
1>ビルドに失敗しました。
1>
1>経過時間 00:00:02.25
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
まぁページタイトルにあるようにDirectx8用のコードだとは分かっているのですが、
初心者の自分にも分かる良いサンプルが無かったため、このサイトで練習しています。
ヘッダファイルのインクルードなどは8から9に書き換えてあります。
ちなみに今現在のcppファイルはこんな感じです。
http://www1.axfc.net/uploader/Sc/so/242317 初心者で申し訳ないのですが、どうすればいいでしょうか?
どうぞよろしくおねがいします
>>212 SetVertexShaderの引数はIDirect3DVertexShader9*だよ
9で変わったんだよ
>>213 すいません初心者なもので、具体的にどこを変更すればいいのかわかりません・・・
問題となってるのが
// 頂点フォーマットを設定
gl_lpD3ddev->SetVertexShader(FVF_TLVERTEX);
なので、21〜22行目の
/* 頂点フォーマット(基本形)*/
#define FVF_TLVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
あたりを変更すればいいのでしょうか?
よろしければ教えて下さい。。
>>214 gl_lpD3ddev->SetFVF(FVF_TLVERTEX);
>>214 そのサイトはDirectX8の解説なのにDirectX9でやってないかい?
DirectX8のSetVertexShader()は単純に頂点フォーマットを指定する機能だけど、
DirectX9のSetVertexShader()はプログラマブルシェーダをセットするという
全然違う機能に変わってるんだよ。
で、DirectX8のSetVertexShader()に相当する機能は DirectX9では
>>215 の書いているSetFVF()になったというわけ。
>>210 後付けじゃねーじゃん
こんなの昔からあって必要なフォーマットも割りと仕様が決まってるんだから
FBX1人で変なデータ作って使いにくくなってんじゃん
(しかも、アニメーションデータに関してだけミスりやがった・・・なぜだー(泣))
絶対座標って何がぜったいなんだ? 腕のアニメーションは普通に肩からのローカルで入ってるから普通に階層計算したら再生されるが。
>>217-218 だから、出力するツールによって好きにできんのよ、FBXは。
217のは「基点(多分キャラの足元?)となるボーンからの差分行列が、それぞれのボーンに入っている」タイプ
218のは「基点となるボーンではなく、それぞれのボーンにその親からの差分行列が入っている」タイプ。Xファイルとかと同じ
FBXはファイルフォーマットを定義しただけなんだから、フォーマット内でどうデータを格納しようが自由だろ
217タイプのにも利点があって、217タイプのなら階層計算せずに、全てに同じ行列をかければアニメーションを合体させられる
独自フォーマットっていったってモデリングソフトが Xファイル出せてアニメーション作れるんだからそれ使うほうがいいだろ
頂点ブレンディングって使いにくくない? XXfpsで何コマ目を表示とかのほうがやりやすいんだが
directx10でもデバイスってロストするん?
する しかし長時間フリーズしたり物理的に引っこ抜けてたりしない限り、早々しない
なるほど ども
>>219 そうか?
俺にはボーンの親子関係のデータが発見できなかったが・・・
相対データで入ってるFBXのデータってボーンの親子関係の情報はどこに格納されてんの?
>>225 いやいやいや普通にnodeをトラバースするだけじゃん、、、
ボーン変換用のオフセット行列もnodeにちゃんとはいってるし。
なんでこんなに上から目線なんだよw
GetChildNode()するだけだろう。 NodeType()がSKELTONなら骨だ。 あとはそのまま掘っていけばツリーができる。 オフセットの行列はSkeltonNodeからGetしろ、実際には2種類の行列が入っていていい感じに加工することで求まる、あとはサンプルとヘッダファイル全部見ればわかる。
そんなこと聞いても
>>228 の使ってるモデリングソフトが相対で出してなきゃその時点で終りじゃね?
そりゃプラグインに文句言え。 オレはmayaしかつかわねーし、フリーならToyStudioだってあるじゃねーか
DirectX11で三角ポリゴンをだすサンプルは多数みつけて 実現できたのですが、線を描画するサンプルはなく、 線だけ描画したいのですがどうすればいいのでしょうか? IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);を D3D11_PRIMITIVE_TOPOLOGY_LINELIST D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP やかえるとおもうのですが検索してもサンプルがでてこなくてorz
>>233 サンプルもクソも、
それ変えて頂点バッファを適切に設定すればいいだけじゃないか
それが分からないならopenglとか使えよ
拍子抜けするくらい簡単に線がかけるぞ
>>234 そうするとかけたポリゴンがでてきたりして
頂点バッファを適切に設定ってとこがだめだとおもうのですがw
DirectX10とか関係ねぇ。 マニュアル読めって。
237 :
デフォルトの名無しさん :2011/06/13(月) 17:55:52.52
>>235 ポリゴンは3頂点で一枚だが、線は3頂点で2本
とか下らないことでポリゴンが欠けるとか言ってる訳じゃ無かろうな
>>233 もしかしてワイヤフレーム表示したいって意味?
そうだとしたらラスタライザ・ステートのFillModeをD3D11_FILL_WIREFRAMEにするだけだけど・・・
単純に線を描画したいなら、線リストとか線ストリップについて勉強しなおした方がいい
239 :
235 :2011/06/14(火) 08:37:17.66
うまくいきました。 ありがとうございます。
XAudio2で質問です IXAudio2SourceVoiceのStartで再生が終わったあと ループではなく、数秒後に再び再生させるにはどうすればいいんですか? 再生位置をコントロールする方法がないみたいなんですが・・・ 再度、SubmitSourceBufferを呼んで初期化するしかないんですか?
60FPSまではポリゴンがかけずに 100FPSあたりまでいくとテクスチャがかけたようなかんじに チカチカするのは、プログラムのほうのミスですか? それともグラボのメモリとかのもんだいもあります?
>>240 あらかじめ無音をsubmitしておけばいんでね?
>>241 BeginScene()とかを一回のループに二回以上挟んでるとかじゃね。
っていうか心当たりがあるんなら、それをまず潰してから質問しにこいや。
245 :
デフォルトの名無しさん :2011/06/18(土) 21:24:38.12
関係ないけどDirectX9が一番いいし、一番普及してるよな Directx10と11は実質使うとせばまり過ぎるしなぁ XPが完全になくなるまでDirectX8か9で自作ゲームつくるよ
おまえの意見なんてきいてない
247 :
デフォルトの名無しさん :2011/06/18(土) 21:59:50.47
>>246 で、10とか11で日曜ゲームプログラマーしてる奴っている?
わりとどうでもいい してるやつはしてるだろう ライブラリ使って9,10,11とか気にせずやってるやつもいるだろうし
249 :
デフォルトの名無しさん :2011/06/18(土) 22:07:56.96
>>247 10使ってる奴がここにいますがなにか?
>10とか11で日曜ゲームプログラマーしてる奴っている? むしろ海外以外でぐぐって出てくるのはそんなのしか居ないと思うが
もうunityやってる
252 :
デフォルトの名無しさん :2011/06/18(土) 22:35:42.02
>>249 ホームページアドレス教えてくれよ
Vista以降でしか出来ない物配布してるのか?
妙な食いつき方してんなあw
254 :
デフォルトの名無しさん :2011/06/18(土) 22:58:03.09
>>253 言うだけだったら誰でもかけるからな
シェーダー使わないとポリゴンすら出ない物を無理に使う必要あるのかなとも思うし
>>254 >シェーダー使わないとポリゴンすら出ない物を無理に使う必要あるのかなとも思うし
スマフォやWebGLはGLES2を当然のように受け入れてるけどねえ
つーか今時固定機能のステート設定をダラダラ並べる方が苦痛だわ
ぶっちゃけプラットフォームの制限なけりゃD3D9なんてとっくに捨てられてると思うよ?
まあシェーダ云々は別としてD3D1xの手続きがめんどくせえのは否定しない
まあ、もうゲームエンジンの時代だと思うなぁ 複数ライト使ったときのシェーダとかもうまったく前へ進めないっしょ? 固定とかそういうの使うのもやめなよ あれ、実は開発進んでくると1描画に関係するステートが頭に全部入ってないと 妙な挙動したときに解決できないよ たどたどしいシェーダ使うよりやばい状況になる もうあきらめてunity これ
>>256 同意
もはや低レベルAPIは学習用かコア開発者向けへとシフトしていくのかな、
アセンブラやC言語みたく
日曜プログラマだとゲームエンジン使うのが一番いいと思う やりたいことに労力をさけるし 描画やダイナミクス、スキンメッシュ自作すると、 ゲームをつくりたいとはじめたのが、なんちゃって自作ゲームエンジン あたりで力尽きてしまう ただゲームエンジンつかうと、グラはちがうけど挙動や ライティングの関係でなんか似てるっていうか 個性というか味が同じに感じる気がするw
>>258 ツクール系で作られたゲーム・・・みたいな事になるって事だね。
やりたい事が基礎処理とその応用とその成果物としての エンジンとか言う物だった場合、真逆です
>>256 >>257 てかスレタイのライブラリやコアな処理に興味無いなら
とっとと DxLib() でも UDK のスレにでも行けよ
ゲームエンジンっつったってそんなたいしたことやってないでしょ
ゲームエンジンって物体の移動とか当たり判定くらいが主な仕事なの?
ゲームエンジンって、ゲーム作る時に使う関数のセットだろ? 何が主な仕事なのかは設計の仕様によるけど、ゲームに必要なもんは全部関数化してんじゃないの?
入力の受け取りとか?
>>260 そういうのはもう学習用や
情報科のレポート程度になってるんじゃね
267 :
デフォルトの名無しさん :2011/06/20(月) 11:42:58.78
Video for Windowsが廃止なのは分かったんですが、 次の、 Direct Show も廃止ですか? ネットの説明にあるサンプルが消えてる。。。
268 :
267 :2011/06/20(月) 13:30:21.96
それと、ネットから落したプログラムが結構コンパイル通らないんだけど、 Direct ShowがDirectXからPlatform SDKに移動したとき(ググったらそういう経緯があるみたいでつね)に、 インクルードするファイルが変わったのでしょうか?
269 :
267 :2011/06/20(月) 14:21:07.65
もしかしてSDK側が、さらに、 Windows SDK って名前変わったんですか?
270 :
267 :2011/06/20(月) 19:03:37.86
Visual C++ 6.0でDirectShowを使いたいだけなんですが、簡単には使えないんですか? qedit.hは頑張って書き換えましたが、DirectX8.1を入手できないのが痛い(><)
271 :
267 :2011/06/20(月) 19:04:29.31
どなたか、VC++6.0と今のDDKで簡単にコンパイルできるサンプル下さいorz
不可能な事に労力割くなよ。 vc6で使える最終のsdkはFEB 2003だから。 ググればダウンロード可能なリンクが見つかる。
DDKってドライバ書こうとしてるのか
274 :
267 :2011/06/21(火) 10:12:46.45
ってかあたらしいのでやろうよw Vc2010だってただなんだし
276 :
267 :2011/06/21(火) 10:29:22.25
VC++2010をやる気持はあります。 でも、仕事は環境に合わせないといけないものであってOTL ・改造元プログラムがVC++6ベース。プロジェクトファイルのアップコンバートも怪しいし。 ・expressエディションにはMFCが付いてなくてコンパイルできない
277 :
267 :2011/06/21(火) 11:09:50.19
278 :
デフォルトの名無しさん :2011/06/21(火) 11:20:51.69
279 :
267 :2011/06/21(火) 11:30:46.00
d ・ Platform SDK February 2003 ・ DirectX 9.0 SDK Summer2004 ↑ 現在入手できないのが痛いorz
DirectShowが使いたい仕事で Visual C++ 6.0ってどんな環境かよくわからないけどw MFCを使わないで、VC2010でDLLか静的ライブラリでDirectShowをつくって VC6で呼び出したらいいんじゃない
281 :
267 :2011/06/21(火) 11:56:22.04
DLLでも出来るならOKなのです。 2010のExpressのインストロールから始めるとして、それは簡単にできそうですか?
ちょっとまて、仕事でやってんのにDLLをつくってアクセスできんってことはないだろうw
283 :
267 :2011/06/21(火) 12:01:07.70
そういう意味じゃなくて、 DirectShowって、最新コンパイラでも標準ヘッダーでさえ書き変えないと使えなかったり、 落とし穴多すぎで、 結局走ってコケたらやだな、と。
284 :
267 :2011/06/21(火) 12:10:22.95
>DirectShowが使いたい仕事で Visual C++ 6.0ってどんな環境 こちらもお答えしておくと(って、誰得w)、 VC++ 6.0でVideo for Windowsのアプリが作られていました。 今度、新しいカメラになったところ、DirectShowじゃないと繋がらない、と。 アプリのVfWの部分をDirectShowに変更したいんです、アプリの機能を生かしたまま。
285 :
267 :2011/06/21(火) 14:59:19.74
DirectX9はX8に追加って情報を見つけました。 また、公式からX9をダウソしました。 しかし、 >\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1018) : error C2146: 構文エラー : ';' が、識別子 'HSEMAPHORE' の前に必要です。 >\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1018) : fatal error C1004: 予期せぬ EOF が検出されました。 と、エラー。 MSコンパイラにSDKの組み合わせなのに。。。 バカにされてるんだろうか?
基礎的な知識もないくせに5世代も前の環境を使おうとする時点でry
それたんにdefineかinclude足りないだけじゃね
288 :
267 :2011/06/21(火) 15:21:46.96
include足りないだけってのはその通りだと思います。 同SDKのsanpleフォルダのソースですが。 しかし、サンプル落としまくり、ライブラリを入れたり出したり、 コンパイルエラーをググりまくったり、フォルダ検索しまくったり、、、 もうそろそろ力尽きて倒れそうです。
もう VC++2010 と最新のSDKで1から作り直した方が早いんじゃね?
290 :
267 :2011/06/21(火) 15:57:01.64
291 :
267 :2011/06/21(火) 16:38:46.49
>
ttp://blogs.yahoo.co.jp/zuruyasumineko2002/archive/2010/10/10 この通りヘッダー書き換えやってもダメだorz
>\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1020) : error C2144: 構文エラー : ';' が型 'long' の前に必要です。
>\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1020) : fatal error C1004: 予期せぬ EOF が検出されました。
イミフメ(><)
292 :
267 :2011/06/21(火) 17:10:01.85
ヘッダーファイルのエラーはファイルIDE編集じゃなくてファイル保存したら通りました。 >\PlayCap\playcap.cpp(491) : error C2065: 'CoInitializeEx' : 定義されていない識別子です。 またエラーどこまでも続いて終わりがないorz
293 :
267 :2011/06/21(火) 17:36:23.98
また別のサンプルもコンパイルしてるんですが、そちらはそちらでエラー。 : error C2440: 'initializing' : 'long' から 'long *' に変換することはできません。(新しい動作 ; ヘルプを参照) 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。 : error C2664: 'DialogBoxParamA' : 4 番目の引数を 'long (struct HWND__ *,unsigned int,unsigned int,long)' から 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。
294 :
267 :2011/06/21(火) 17:53:57.78
293のエラーはキャストだけで通りますた。 しかし、このキチャナイMFCコードから必要部分を切り出すなんて超ムネヤケ
295 :
267 :2011/06/21(火) 18:49:52.16
292は、 >#define _WIN32_DCOM でコンパイル通りマスタ。 どうも有難うございました。
【レス抽出】 対象スレ:【C++】 DirectX初心者質問スレ Part35 【C】 キーワード:267 抽出レス数:21 頼むからもうブログでやってくれ
趣味ならともかく仕事をこの調子でやってるのか・・・
ワケもわからず、キャストかな
もしかしてこれやったのか? クビになるぞ long* ptr= ...; long value; value = (long)ptr;
&つけたらいいだけちゃうん?
(type)* value と宣言したものは、 *valueが(type)の変数値を返して、valueがアドレス値を返すとか、 未だに参考書見直さないと混乱するレベル。 (type) value と宣言した場合は &valueでアドレス値返すとかさらに混乱する。
俺はこんな風に使ってるぜ class Hoge { // 実装クラス __Type objType; // インターフェース __IType* pType; __Hoge() __{ ____pType = &objType; __} };
304 :
デフォルトの名無しさん :2011/06/22(水) 21:02:24.85
directplayの代わりって何ですか?
winsocket2
directshowの代わりって何ですか?
media foundation
directmusicの代わりって何ですか?
midiのことはもう忘れろ
>>302 メモリ領域を直列にしてデカオブジェクトにするとヒープ効率が悪い
flash
複数ウィンドウ使うときってウィンドウの数だけ Direct3DDevice::Present()呼ぶんですか? 良い方法あったら教えてください
314 :
デフォルトの名無しさん :2011/06/27(月) 00:29:57.50
水素原子の波動関数を3Dであらゆる角度から見ることのできるアプリを作成したいです もちろんWindows上で動かしたいので Win32API + DirectX で作成しようと思っているのですが比較的容易で適当な選択でしょうか? まだWin32APIを少しかじった程度なのでよくわからないのです… また、DirectXに関しては無知なのでよい説明サイトや書籍がありましたら紹介してください よろしくお願いします
315 :
デフォルトの名無しさん :2011/06/27(月) 00:55:23.28
ryanさんよー。テクスチャが絶対パスなのはよろしくないとおもうよ。 あと、ダークベーシックはやったこと無いからわからん。
>>314 簡単に言うと Win32APIを C言語かC++言語で呼び出して何かする、
程度をかじった事があるくらいの状態で、かつDirectX については全然わからない、って事だよな?
で、関数プロットを3Dで行いたいと。 そして質問が、「その選択は(何かと)比較して、容易で適当な選択か」 だと。
答えはあなた次第です。まず言語そのものには慣れているのか、とか
プロットした結果を三次元で描画したいだけなら、別にDirectXなんか無くてもおkなはず。
容易かどうかはあなたのスキル次第。適当かどうかは上に書いた通り。 てか、ややスレチ気味
学術方面だったらOpenGLのほうが根強いイメージだな。GLUTとかあるしな!
関数の結果プロットしたいだけなら、GDIで普通に座標変換して描画してもいいよな 大した手間じゃないし、欲しい内容の本筋と離れた多くの設定群も書かなくて済むし。 昔から三次元グラフとか、普通に計算して描画してた訳で、ただそれだけの事
OpenGLってなんか不安定なイメージあんだよな。
OpenGLって、DirectXだったりGDIだったり、中の人は実装依存なんだおね? DirectXの平面にGDIアクセスって出来るんだっけか?
OpenGLとDirectXを比べると 一般ユーザーは資料のの多いDirectXに 学術ユーザーはVerUPや互換につよいOpenGLだろうな
323 :
デフォルトの名無しさん :2011/06/27(月) 11:59:22.17
OpenGLとDirectXは、 単にプラットフォームに依存するだけ
324 :
デフォルトの名無しさん :2011/06/27(月) 12:54:22.47
>>314 gnuplotじゃだめなんですか?
リアルタイムに動くものでないとダメなら
gnuplotの描画を何枚が用意してコマ送りして
アニメを作成するとか。
gnuplotはCやC++中からも呼び出せるから、
これで十分だと思うけど
ダメだろww
326 :
デフォルトの名無しさん :2011/06/27(月) 22:40:10.50
>>314 そうです、こんな感じです
後いろいろな角度から見れるようになれば、完璧です
>>314 ちなみに、C言語には結構なじんでいてWin32APIはウィンドウプロージャの動作や描画ツールとか
リソースを入れてツールバーやダイアログボックスなんかもそれなりにはやりました
でも未だにまともなプログラムを完成させたことはありません
DirectXは全くの素人です、その程度の能力だと思ってもらえればいいかと…
レス迷ったんですがこちらにしました、迷惑でしたらすみません
色々なアドバイス頂いているのですが、いまいちよくわかってないみたいで…
DirectXなんか使わなくても、Win32API関数だけ、あるいは何らかのライブラリ
をインクルードして使えば実現できるということなのでしょうか?
今一度お願いします…
DirectXでできる
328 :
デフォルトの名無しさん :2011/06/28(火) 00:13:10.31
>>315 の操作は、
マウスの左右クリック、右ドラッグ
キーボードのスペースとRETURN、その他
マウス右クリックで全部名称表示
マウスカーソルを当てると、名称表示で
マウス左クリックで選択、中央表示
そして、マウス右クリックのままグリグリ。
329 :
デフォルトの名無しさん :2011/06/28(火) 00:18:58.64
未だにDirectX7のDirect3Dの機能使ってるんだけど(主に2Dベースのゲームで) 何か大きな弊害とかありますかね? 時々、DxLibの作者が、DirectX7ベースのDxLibだと Win7で動作不良が起こる場合があるとか書いてたので ちょっと不安になって。
331 :
デフォルトの名無しさん :2011/06/28(火) 00:27:09.04
手段は、 1)2Dグラフィックが出来るなら、 3D→2Dの変換をプログラムで行う。 単純な画像なら容易 2)3Dライブラリを使う。 C言語からなら、DXライブラリを使ってみる。 類似した3Dライブラリが多数ある。 3)DirectXをC言語で直接駆動する、 難易度高い、というか時間の浪費 4)ツールを使う、多数ある
DirectX9でSprite->Draw使ってるんですが S_OKが返ってくるのに描画されてないのは どうゆう部分に問題があるのでしょうか? sprite->Drawの引数に使用している変数に関係してる?関数 CreateTexture GetSurfaceLevel CreateOffscreenPlainSurface GetFrontBufferData UpdataSurface この情報だけでわかるでしょうか? DX初心者です、理由が推測できません。 やりたいのは、フロントバッファをコピって 自分のウィンドウに表示させたいのですが。
自己解決しました。 フロントバッファからサーフェイス取得したのを バックバッファにコピーするだけ。 と言う事にまったくきずきませんでした。 すみませんでしたー。
>>331 >難易度高い、というか時間の浪費
自分を基準に語るなよ。DxLibとかおもちゃだろ。あとスレタイ100回読み返せ
VC#+DxLibを薦める奴は、大抵無能
難易度が高い方が偉いっていうのが日本人の悪いところだね
>>330 まぁ要はあれですかね、自分のプログラムの出来と
あとはビデオチップメーカのドライバがどこまで対応してるかって
ところでしょうか。
ネットで調べてみると、意外と DirectX7から新しいバージョンに移行してない人多いね。 8でかなり変わったし、2Dゲーとか作るなら そんな新しい機能いらないって人も多いだろうしね。 そこそこの3D機能使いたいなら、DxLibでもいいね。
340 :
デフォルトの名無しさん :2011/06/29(水) 16:50:02.26
すみません、ポリゴンにテクスチャを貼るプログラムでビルドが正常終了しているのに ウィンドウが表示されないのですが何が考えられますか? DirectX 9 シェーダプログラミングブックという本を見ながら 少しづつ勉強しているんですが、アプリケーションウィザードが使えないので テクスチャを貼る部分のプログラムをいろいろ見ながら変更して エラーを吐かないとこまでは来たのですが。
プログラムスタート→全処理が終わって閉じる どこかでwhileとかでループしてるか?
>>340 色々原因が考えられるが、
DirectXSDKチュートリアルは見た?動くサンプルだから参考になるはず
しかしまぁwinapiは歴史的遺物のせいで驚異的に分かりにくいからなぁ
DX9からDX11に移行中。どうにかソースは書き換えたけど、 PresentするとPIXがエラー出したり謎現象おおくて、困った困った。
344 :
デフォルトの名無しさん :2011/06/30(木) 14:24:00.35
340です 以前チュートリアルのサンプル動かそうとして何故か失敗してたのですが 今回やってみたら動いたのでそれ見ながら、もちょっといじってみます。
345 :
デフォルトの名無しさん :2011/07/02(土) 00:27:30.47
>>331 どうもありがとう
まずはDxライブラリあたりをあたってみます
DXライブラリはこういう初心者用に作ったDirectXラッパーなんだし、とりあえず動くの作りたいってんならさっさと誘導したほうが良かったな
なんでDXライブラリってGCAとかいう一般的じゃない形式で圧縮してるの? そんなだからexeにしないと解凍できないし exeは怖いんだけど
右手座標系の3DCGソフトで作ったデータを左手座標系に変換してレンダリングしたのですが 表示が異なります。 具体的には、カメラは+Z方向から-Z方向を見ています。 3Dソフトだとメッシュがカメラの方向を向いているのですが、プログラムだとメッシュの背後から見た感じになってしまいます。
対象性の破れキターーーーーーーーーーー
>>349 ファイルを出力するときになんらかの設定できるのでは?
もう読み込んだ後で頂点情報を直接いじってZ座標の符号を逆にすれば いいんで内科医?
>>351 ,352
ありがとうございます。
もしかしてカメラのワールド座標もZ値を反転しないとダメなんでしょうか?
メッシュだけでいいだろ
法線とあと何反転するんだっけ? なんか色々大変だったよなぁ? カリングは逆になっちゃったっけ?
>データを左手座標系に変換してレンダリングした と言いつつ、 >表示が異なります という事は、つまりその自分で書いた変換処理の考慮漏れってだけの話 それなのに、 >プログラムだとメッシュの背後から見た感じに >なってしまいます とはこれいかに
DirectX9で簡単なゲームを作ってみているのですが MessageBox等のダイアログを出そうとするとウィンドウモード時でもフリーズしてしまいます。 IDIRECT3DDEVICE9::SetDialogBoxModeをTRUEにしたりしたのですがどうにもうまく行かず。 尚WM_CREATEに書いたものはちゃんと出ます。 初歩的ですみませんが、何が考えられるでしょうか
指定するウィンドウハンドル間違えてるよ
>>358 最初にCreateWindowで作ったハンドルではなく、新たにウィンドウを作成すれば良いのでしょうか
360 :
デフォルトの名無しさん :2011/07/07(木) 18:55:30.72
あげ
>>359 メッセージボックスはウインドウハンドルにNULLを渡しても動作する。
>>361 NULLを渡すとフリーズはしないもののダイアログボックスは依然出てこないみたいです・・。
ブレークポイント置いてみると、ウィンドウを破棄したところでMessageBoxから制御が帰るような挙動になっているので
DirectXの親ウィンドウの描画に隠れてしまっているような気が何となくするのですが、そういうことはあるのでしょうか。
>>362 GetForegroundWindow()のウィンドウハンドルは?
ってかこういう面倒なわずらわしいコーディングが嫌になったら
glutとopenglやってもええんやで、ええんやで
>>363 GetForegroundWindow()もNULL時と同じ挙動のようです。openglにも手出してみたい・・
ChooseFont()等ダイアログボックスが出てくるものは尽くダメなようで、
またMB_TOPMOST等指定しても出てきませんでした。
デバグで使えると良かったのですが、とりあえずはゲームなのでメッセージボックスは使わない方針で行こうと思います。
ありがとうございました。
366 :
365 :2011/07/08(金) 00:43:07.16
間違って送信しちゃった 普通に出るけどなぁ VC2010
ま、OpenGL&GLUTなら楽だけどな実際 DirectX でも DXUT 使えば似たようなもんじゃね?
368 :
デフォルトの名無しさん :2011/07/08(金) 06:34:43.44
出来上がったものを配布するときに同封するランタイムってどんな形でくっつければ良いですか?
CD-Rに焼いて封筒にいれてガムテで固定すればいいんじゃね?
DirectX11つかえばいいだけじゃないかな
371 :
357 :2011/07/08(金) 17:44:47.78
>>366 普通に出ますね・・。
週末にでも確認してみます。ありがとうございます。
VC2010を閉じると勝手に再起動して困る (その再起動を閉じると再起動はしない) 再インストールして直ったと思っても時間経つと元に戻るし どうすればいい?
電源を新換えする。
374 :
デフォルトの名無しさん :2011/07/09(土) 13:02:57.46
やはりDirectX10以降で開発となるとXP等は捨てることになってしまうんでしょうか。 テセレータとか無くてもいいという場合はDirectX9を選択して広範なOSを選択するとかそういう 選び方しかできないんでしょうか?
できません
布教が最重要目的ならDitectX9、それ以外なら11以外ないわ。
なんで布教なんだよ
配布って言葉を知らないんだろ。
なんでも"信者"とか"布教"って言葉で表そうとする人間は、凝り固まったネット脳 語彙の少ない若輩、怠惰なヲタク、ニコ厨に多い
なんでも煽るやつは、煽ることで自分が優位に立っていると 勘違いしているかわいそうな人が多い
よく見ろ
>>376 のは Ditect だぞディテクト
385 :
380 :2011/07/10(日) 15:17:55.82
スマン俺が変なこと言ったな 空気を悪くして済まなかった
煽ってると思うのが一人の場合って自分が煽られてる時だけだよな つまり配布を知らなかったことから全てが始まるわけで さらに他は全員第三者感情でレスしてるのに謝罪とか・・・ まあ教えてる俺も俺だけど人によってここまで次元が違うものなのかなと改めて思ったよ
どうでもいい
>>374 大きく言えば
DirectX9はXPが使えるというメリットがある
DirectX11はジオメトリシェーダやテッセレーションつかえるメリットがある
逆に考えて、XPユーザーは気にしないならDirectX11でいいし
ジオメトリシェーダつかわないならDirectX9でいい
定数バッファのサイズやレンダーターゲットの複数設定でフォーマット一緒にしなくてもいいとか色々あると思うが、、、
ジオメトリシェーダはともかく、テッセレーションって使い道あるかねえ? DirectX初心者スレにくる、日曜プログラマとか、学生にとってって意味で。
初心者とか日曜プログラマとか学生の為のライブラリじゃないですから
3次元空間で、ある物体の座標がカメラ(視点)の後方にいるかどうかを調べるにはどうしたらいいのですか?
>>392 カメラからある物体までのベクトルとカメラの正面方向のベクトルで内積をとる。
394 :
デフォルトの名無しさん :2011/07/13(水) 13:08:08.70
内せき
395 :
392 :2011/07/13(水) 14:36:33.19
内積で解決しました。 ありがとうございました。
396 :
デフォルトの名無しさん :2011/07/14(木) 20:46:18.06
DirectPlay便利なのになんでなくなったの?
C#か.netのほうでもっと楽なのなかったか?
WinSock叩くのに比べてそんなに簡単だとは思えないなぁ。 自由度も低いし。
DirectPlayは危険度の高いセキュリティホールが発見されたので使わないでください みたいなアナウンスがされて、そのまま放置されたような
ロビー機能だけでも、なんとかして欲しいねぇ。 MS以外が用意しても、あんまり採用されないだろうし。
>>397 C#よりも、C++ で boost::asio の方が下手すると相当に楽
>>391 お前は2行あるうちの1行しか読めない病気か何かなのかw
ゲームを作りたいのですが DXライブラリを使うかAPIを使って全部書いていくか悩んでいます 完成形のクオリティや使いやすさが上なのはどちらでしょうか DXライブラリで作ったものは動作性能が良くない様な感じもするのですが...
>>403 どっちも同じことができるが、到達する距離が違う。
API系を使うほうが自由度はそりゃ多い。
DXライブラリはフレームワークなんで、出来ることを制約しつつ何らかの形を作りやすいようになってる。
>>403 DXライブラリってのは、単にどこかの個人が、DirectXAPIの定型な処理をいくつか
まとめて予め書いただけの、いわばサブルーチン集のような物なので、
あなたの質問は、
「直接APIを使うか、ブラックボックスを経由して遠まわしにAPIを使うか」 という話に過ぎません。
なので、どちらが良いですか?なんて、他人が決める事じゃなくてあなた次第です。
ちなみに、そんな訳ですから、『完成系のクォリティ』 なんて、あなたが書くコード次第で、違いはありません。
※ただし 『違いは無い』 と言うのは、表示される内容の話であって、例えばラッパライブラリだけを使って何か書いて、
直接API を使わない場合、当然 『出来ない事』 が沢山登場するでしょう。 用意してもらった範囲でしか書かないのならば。
>>403 ちなみに、DXライブラリは初心者向けの触れ込みで出回ってるから、
それに、製品クオリティを望むのは酷な話。(作者のスキル的な意味で。
407 :
403 :2011/07/16(土) 10:40:42.38
クオリティと書いた為にいろいろゴチャゴチャしたみたいですが どんなアプリでも操作性が大事だろうと思っていますので 動作に限界があるようなので普通にAPIを使いたいと思います 沢山の回答ありがとうございました。
DirectX API 自体が既にライブラリで自由に扱いたいならハードから直接叩くんじゃないの? っていう突っ込みはNG?・・・
ある程度の汎用性はほしいだろうし、ハード叩ける器量があるならそんな質問しないだろうね。
DirectXのバージョンの事も考慮するべきかなと。DXライブラリって確か9だろ? 今の所11は9扱えるようにしてくれてるけど、次の世代がどうなるのか判らんよな。 で、ライブラリ作者がその対応をどうするのか、またライブラリのインターフェイスはそのままでいけるのかって話もでてくるし。
>>408 NGってか、話の要点見えてない人が言う、何も考えていないただの揚げ足取りだと思うそれ
上の話の要点は、「直接APIを使うか、ブラックボックスを経由して遠まわしにAPIを使うか」 であって、
さらにそのブラックボックスが、(当然)大本のAPI(DirectX)の全てのエントリを持っている訳じゃないんだから、
出来る範囲が狭まるのは自明 = 「出来ない事が沢山登場する」 のくだり
あと、
>>407 >どんなアプリでも操作性が大事だろうと思っていますので
>動作に限界があるようなので普通にAPIを使いたいと思います
とあるアプリケーションの操作性、っていう話は、それこそあなたが書く内容次第なので、
全然関係無い。 あなたが書く、ロジックの話だよそれ
質問の内容のレベルから察すると2DならDXLIBつかったほうがいい 3Dなら直接かいていくほうがいいとおもうが こういう質問してる時点で難しいかもしれん
DxLibは初心者用ライブラリとかフレームワーク以前に DxLib作者のレベルがかなり低いのが問題だと思う
ライブラリ作者としての情熱は逸品だと思う
レベルの低いユーザーにはレベルの低い作者が合ってるんじゃないかと思う ハイレベルな作者がUDKやUnityみたいなのを作ったって、 低レベルなユーザーにはレベルデザイン?なにそれわかんないあたまいたいやめてってなるだけだし
>なにそれわかんないあたまいたいやめて 低燃費少女ハイジのおんじ思い出した
SetFVF(D3DFVF_NORMAL | D3DFVF_DIFFUSE); DrawPrimitiveUP(D3DPT_LINELIST, 3, pt, sizeof(D3DVERTEX_XYZ)); などの表記で3Dの座標軸のようなものを表示してたのですが気が付くと表示できなくなりました 同時に表示していたXファイルやDrawPrimitiveUPで2Dポリゴンなどは表示できます 環境はWin7pro64bitのSP1でDirectXに関係ありそうなのは順にDirectX9.0_SDK_dec2004をインストール デバッグの表示用にDXSDK_Feb10をインストール
420 :
デフォルトの名無しさん :2011/07/24(日) 09:47:15.68
>>418 >SetFVF(D3DFVF_NORMAL | D3DFVF_DIFFUSE);
FVFに位置座標が含まれてない。
これで描画できてる方が不思議なんだが。
XNAのEffectクラスってID3DXEffectのラッパみたいなもんだったと思うんだけど、 XNAってEffectクラスのインスタンスの複製を大量に作ってるよね。 でもDirectX SDKに付属するサンプル見ると、たいていグローバルなエフェクトを一つだけ作って、それを使いまわしてる。 これって結局、どちらもそんなに悪くないってこと? こっちにしとけっていうのがあったら教えて。
>>420 ありがとうございます、指摘の点を修正することで意図してた描画が出来ました
表示できてたのはなんでしょうね?上記の設定でもXP環境は今でも描画できますし
Win7の方はスクリーンショットを何枚か撮っているのを思い出してそちらを確認したら
DXSDK_Feb10を入れた段階だと表示できていますね、とはいえ
表示が出来る=正しい というわけではないのでちゃんとできるように勉強します
そういうときはラデオン使え。 ゲフォはドライバが空気読んで勝手に補完してくれたりする。
424 :
418 :2011/07/24(日) 17:05:13.80
>>423 グラフィック環境は書くべきでしたね、ランタイムが原因と思ったので書き漏らしました
XPはオンボのRadeon Xpress1250でwin7はRadeon HD 5450です
NVIDIAの8500GTもありますがそっちは使ってないです(Xpress1250より速度は速いですが)
ただ、たしかにXpress1250は勝手にアンチエイリアスかかったりかからなかったり挙動が妙ではあります
今回Win7のハードはずっと同じなので直近の原因ではないと思いますが表示できることの方が変だそうなので
Win7の環境はそのままある程度まともに作れるようになったらゲフォ等他のグラボでも確認してみます
425 :
sage :2011/07/27(水) 00:42:36.28
プロパティで 追加の依存ファイル dinput8.lib;dxguid.lib;%(AdditionalDependencies) 追加のライブラリディレクトリ $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) と設定してコンパイルするんですが 1>LINK : fatal error LNK1181: 入力ファイル 'Input.lib' を開けません。というエラーが発生します どうやったら解決できますか
Input.libなんてファイルどこにもねーよ!ってエラー。 勝手にリンクされるものじゃないから、どっかしらで自分で指定してるはず。
#pragmaかな?
そいつ他スレでもマルチポストしてるぞ
429 :
デフォルトの名無しさん :2011/07/27(水) 12:16:19.22
425ですが どうか教えてください
426で答え出てるじゃん。
そもそもInput.libとやらはDirectXとは関係ないのでスレ違い
エフェクトステートのアルファテストが廃止されたようで、 これまでのシェーダファイルが使えなくなりました。 みなさんは、手書きで修正されるのでしょうか? 自動的に変換するツールなどはないでしょうか?
回転行列から、例えばX軸回転で何度、Y軸回転で何度かを知るにはどうしたらいいのですか?
直感だけど、軸回転する順番決めなきゃ一意に決まらないのじゃないだろうか。
438 :
デフォルトの名無しさん :2011/08/01(月) 22:39:31.44
まあ3つの積に分ければいいだけのことだけどね
回転順が決まってれば求まる。
Lost due to display uniqueness change このエラーの解消法はどうすればいい?
要は解像度の問題だった。
複数の板ポリゴンを描画するにあたって、それぞれの座標を別々に移動してみたいと思ったのですが、 考え方としては ワールド座標を移動→DrawPrimitive(); これを何度も繰り返すというので正しいのでしょうか?
はい。
ありがとうございました。
正しいも間違ってるもないけど、一度のDrawPrimitive()で描画する量が少なく 大量のDrawPrimitive()を繰り返す場合はかなり遅くなるかもしれない。 一度のDrawPrimitive系命令自体がかなり重い。
その都度転送するもんな。drawと関数名にはあるが、実際転送&描画処理だしな
>>446 今は大きいポリゴンに小さいポリゴンを乗せるような感じで描画しているのですが、
テクスチャステージステートを駆使して一枚のテクスチャを一枚のポリゴンで描画する
というのが最良ですか?
どちらの方が処理が早いのでしょうか
単純に一回のdrawで、描画の切り替えは全部HLSL内で
あう、盲点でした。 弄ってきます。ありがとうございました
D3DPRESENT_PARAMETERSを使ってフルスクリーンにすると SetWindowPosやCreateWindowで幅や高さを0にしてもフルスクリーンになるんだが、 これは別に0でいいものなの?それとも自分の環境だけ?
キャラクターの向きをある物体に合わせるにはどうしたらいいのですか? 現状は、D3DXMatrixLookAtLHを使ってみたのですが正常に向いてくれませんでした。
>>452 目標の方向をZ軸として、Y軸が一定である場合、
この二つの軸の情報からX軸を法線として求める事が出来る。
>>451 D3DPRESENT_PARAMETERSでフルスクリーン化すると、ウィンドウ側の設定は
無視して問答無用でフルスクリーンになる。
このとき、ウィンドウモードよりもGPUがパフォーマンスを発揮できるので、
フルスクリーン化はこれでOK。
ウィンドウのタイトルバー取り去ってウィンドウサイズをスクリーンと同じにする
フルスクリーン化だと、GPUのパワーが完全には発揮できない。
>>452 キャラクターとある物体の間の距離から、向きたい方向ベクトルを取得。
キャラクターがデフォルトで(回転行列を掛けていない状態で)向いている
方向ベクトルと、向きたい方向ベクトルの2つのベクトルを使って
2つに垂直な方向ベクトルと2つのベクトルのなす角度を算出。
あとは、その垂直な方向ベクトルを回転軸としてなす角の角度分回転する
行列を、任意軸回転行列を使って求める。
みたいな話ですか?
456 :
455 :2011/08/04(木) 18:54:29.22
ごめん、一行目は距離じゃなくて正確には位置の差、です。
それ、DirectXと言うより、普通に数学の話よね
458 :
デフォルトの名無しさん :2011/08/05(金) 04:50:57.91
DirectXとかDirectShowとかでプログラムしたいんですけど。 開発環境はWindowsXP(ターゲットもXP)、VisualStudio2008Express editionです。 むかーしは(VS2003位の頃)DirectShowやるんだったらPlatform SDKを入れたと記憶しております。 当時はWindows Server 2003 R2 Platform SDKというリビジョンだったのですが、 今の最新のDirectShowが提供されているSDKって相変わらずこれなんですか?
あ、ごめん。解決しちゃった。 Windows SDKか。 #あってる?
あってる。
サンクス。 ダウンロードしてみたがなんだかんだで3回くらい失敗した。。
462 :
デフォルトの名無しさん :2011/08/06(土) 14:53:35.73
DirectX9でシェーダーのサンプラステートでAddressU、AddressVをBorderに設定し、BorderColor = float4( 1, 1, 1, 1 ); とやったんですが、ボーダー色が反映されていません。どうすればシェーダーからボーダーの色を設定できますか?
こんにちは、C++でDirectXプログラムをしているものです。
http://image.blog.livedoor.jp/natumi101/imgs/1/b/1b3acd8e.jpg こちらとかテクスチャマッピング(字の描画)が非常に滑らかでシャギが一切といっていい程出ていません。
自分は「DirectXグラフィック入門」という本を見ながらSetTextureでテクスチャを張っていて
それなりに滑らかなのですが上の域までとはいかずシャギや荒がオブジェクトの角度によっては出ます。
テクスチャを上のような域まで滑らかにするには何かコツとかあるのでしょうか?
一応オプションで以下のことはやっております。
pD3DDevice->SetRenderState( D3DRS_DITHERENABLE, TRUE);//ディザリングを行なう
α画像なんじゃねーの?
もっとAAの効いた画像を用意すれば解決すると思う
角度によって、ってことはミップマップが足りてないということも
テクスチャの内容も関係するが 単にスクリーンサイズやフレームバッファサイズに対する ポリゴンやテクスチャの解像度の問題なんじゃねーの
例えば、300x500のピクセルに DotByDot相当になるようにテクスチャを使ってレンダリングしてる物に対して それを同じ見た目を、同じテクスチャ使った所で 半分の150x250のピクセルで実現できるわけないよ スクリーンショットの解像度と、自分がやってる解像度くらいは分かるよね? 比べてみなよ
>>463 まずは自分のソフトのサンプル画像を見せるといいと思うよ
470 :
463 :2011/08/07(日) 19:48:08.55
ありがとう。 自分のでもそれなりに綺麗に表示できてるんですが サンプルが今まで見たことないほど滑らかなので テクスチャにもっとアンチエイリアスをかける方法とかあるのかなと思って質問した のですが元の画像で工夫するしかなさそうですね。 同じような画面で牌字ひとつあたりに64X64のBMPを使用しているのですが もっと大きなサイズとかで色々試してみます。
DirectX9でシェーダーのサンプラステートでAddressU、AddressVをBorderに設定し、BorderColor = float4( 1, 1, 1, 1 ); とやったんですが、ボーダー色が反映されていません。どうすればシェーダーからボーダーの色を設定できますか?
>>470 あのリンク先の牌を見て64x64は無いよ
テクスチャもスクリーンサイズも、とんでもなくリッチだろ
適当な目算算出だけど、テクスチャは一文字で256x256程度で
スクリーンもフルHD(1920x1080)画面って所でしょ
>>472 スクリーンサイズがリンクの画像サイズの1024x768より大きいってどうしてわかるの?
以下のようにして、CPUでテクスチャに直接ピクセル値を書き込んでいます。 pTex->LockRect( 0, &( LockedRect ), NULL, 0 ); DWORD* pPixel = ( DWORD* )( LockedRect.pBits ); DWORD dwPitch = LockedRect.Pitch / sizeof( DWORD ); *( pPixel + dwPitch * Y + X ) = D3DCOLOR_ARGB( 255, 255, 255, 255 ); 同様な感じで、浮動小数点フォーマットのテクスチャに直接書き込むのは どのようにすれば良いでしょうか?? D3DFMT_A16B16G16R16FやD3DFMT_R16F何かを使います。 よろしくお願いします。 m(_ _)m
475 :
474 :2011/08/09(火) 22:20:44.83
D3DFMT_R32Fの場合は以下のようにして書き込むことができました。 float* pPixel = ( float* )( LockedRect.pBits ); DWORD dwPitch = LockedRect.Pitch / sizeof( float ); *( pPixel + dwPitch * Y + X ) = 0.5f; 16bit浮動小数点数を扱えればD3DFMT_A16B16G16R16FやD3DFMT_R16Fでも同様に書き込めそうですが、 C++記述上で半精度浮動小数点数の型はどのように記述するんでしょうか??
自分でビット操作して変換する
477 :
474 :2011/08/09(火) 22:50:17.41
>>476 そうなりますか(x_x)
ありがとうございました!
ぐぐったらD3DXFLOAT16って出るんだけど C++だったらこれでいいんじゃないの?
479 :
474 :2011/08/09(火) 23:21:41.12
>>478 おお!できました!
普通のfloatからキャストしてもOKでした。
ありがとうございました!
Win32API C++ DirectX9で、DirectX3Dを使って2Dゲーム作りたいのですが、 DirectXは、まったく触ったことがないので、いい入門書とかありますか? おそらくないと思いますがDirectX9で2Dゲームの解説している本もあればお願いします。 若干スレ違いな気がしますが、回答お願いします><
481 :
デフォルトの名無しさん :2011/08/10(水) 11:38:59.51
>>480 回答ありがとうございます!
DirectXを始めるのに、とりあえず本が一冊あれば、と思ってるのですが
「DirectX 9 シェーダプログラミングブック」などでよろしいでしょうか。
それとも「DirectX9必携」などがよろしいでしょうか。重ね重ね質問すみません。
483 :
河内 :2011/08/10(水) 12:06:06.26
はじめまして、VB6のDirectx7 Type Libraryを使っているのですが、 RealTek HD Audio OutputというオンボードのサウンドだとCreateSoundBufferメソッドが 失敗しないのに、 BenQのE2220HDをHDMI接続したときに使用可能なインテル(R)ディスプレイ用オーディオ出力 というサウンドデバイスをコントロールパネルで選択すると、CreateSoundBufferメソッドが 失敗してしまいます。 DirectX診断ツールで両方DirectSoundのテストを行っても、両方同じ結果になるのですが、 VB6で違いが出てしまう原因が良くわかりません。 なにか明快な理由があるのでしょうか?
482です。
>>481 さんのpdfは本だったのをpdf化したものなんですね!
とりあえずこれで勉強してから、自分にあった本を探したいと思います。
改めてありがとうございます!
DirectX9でテクスチャを繰り返しでマッピングしたいんですが 有る程度古いハードウェアでも動作させたいと考えています。 CapsのMaxTextureRepeatは一昔前のオンボードでは、どのくらいの数値が一般的ですか?
今で言う一昔はDirect3D9完全対応だ。 何一つ気にする必要など無い。
487 :
デフォルトの名無しさん :2011/08/10(水) 16:45:19.27
XPの時代なら大丈夫
>>485 SDKに色んな環境のCapsの一覧表あるから、それで確認する。
>>484 おお、登さんの本、pdf化されてたのか。
490 :
デフォルトの名無しさん :2011/08/13(土) 21:26:32.98
ニンテンドー64のコントローラをコンバータでつなぎ、 入力を受け付けたいと思うのですが、可能でしょうか? また、もし可能な場合、64コンの入力は、 ジョイパッドの入力としてとして扱えばいいのでしょうか?
>>490 それはOSがHIDクラスかジョイパッドとして認識すればそういうふうに使えるように便宜を計ってくれるんじゃないか?
DXはそういう認識の部分には一切手を出さないはず。
要するにコンバータの性能次第。ってかんじだと思うんだが・・・。
492 :
デフォルトの名無しさん :2011/08/14(日) 00:30:12.35
ドライバを用意すればいい
質問があります。 512*512のjpeg(ディスクサイズ189kbyte)で圧縮されたテクスチャでも 「D3DXCreateTextureFromFile(D3DFMT_A8R8G8B8)」で読み込んだ際、 VRAMに展開される大きさは「512*512*4≒1Mbyte」というサイズになるのでしょうか?
494 :
デフォルトの名無しさん :2011/08/14(日) 04:16:52.24
>>493 当たり前じゃねーか
符号化されたデータをどうやってGPUが解釈するんだ
圧縮したままVRAMに持てるのはDXTだけ
圧縮出来る出来ないはともかく、テクスチャって1秒間に何十回も何百回も 参照される訳で、展開の計算がものすごい負担になりそうだな
展開のロジックはハードワイヤードで持ってるから演算器の負担は無いんじゃなかったっけ?
展開してVRAMにのせるからjpegファイルサイズではなく 512x512の縦横ピクセルサイズになるって話だろ? 展開は最初の1回だけでしょ
DXT使うとファイルサイズのままVRAMに乗るのか もの凄いメモリの節約になるな
500 :
デフォルトの名無しさん :2011/08/14(日) 23:36:51.45
>>498 jpegに関しては一度の展開で
DXTCに関してはハードワイヤードロジックで処理されるから実質コストはかからない
はず
3d全般の話なのですが他に相談できる所がないのでお願いします。 モーションの移動量を適用したいんですが・・・一般的には どのようにやるのでしょうか? 移動後ルートボーン変換行列*Invert(移動前ルートボーン変換行列)を モデル全体の変換行列に掛けてみました。これで概ね移動の適用が できたのですが、モデル全体の変換行列が回転しているとき、 その進行方向に移動量が適用されません。
ルートの移動の話のはずなのに、モーションの移動とか意味不明。 自分の脳みそを整理すれば解決する話。
すみません。Xファイルを読み込んでソフトウェアスキニングしたいのですが、うまくいきません。 Xファイルのデータを読み込んでポリゴンを表示すると正常に表示されますが、 頂点をアニメーションさせると逆さまになったり、ポリゴンがねじれたりしてしまいます。 MSのMeshViewerで見ると正常にアニメートされるので、行列の掛け算の仕方が間違っているのでしょうか。 void Bone::Animate( MeshVertex* vertex , MeshVertex *original, int frame ){ /*vertexは表示用バーテックスバッファ。x=y=z=0に初期化済み。*/ D3DXMATRIX mat;D3DXMatrixIdentity(&mat); multParentMatrix( mat,frame ); mat = bindMatrix * mat; /*bindMatrixはXファイル→SkinWeightsデータの一番下にある行列*/ for(int i=0;i<num_influence_point;i++) { int n = influence_points[i];//影響する頂点取得 D3DXVECTOR3 vec(original[ n ].x , original[n].y , original[n].z); D3DXVECTOR4 result; D3DXVec3Transform( &vec4,&vec,&mat ); vertex[n].x += result.x * weights[i]; vertex[n].y += result.y * weights[i]; vertex[n].z += result.z * weights[i]; } for(int i=0;i<children.size();i++){ children[i]->Animate( vertex , original, frame ); //childrenは子ボーンを格納するBone型のvector配列 } } 文字数が足りないので下に続きます。
class Bone { public: int num_influence_point; string joint_name; D3DXMATRIX boneOffsetMatrix;//SkinWeightsの下にある行列//bind matrix D3DXMATRIX inverseBoneOffsetmMatrix;//pose matrix D3DXMATRIX *keys_local; D3DXQUATERNION* quaternions; Vector3* key_scales; Vector3* key_translates; float *weights;//ウェイト int *influence_points;//影響する頂点インデックス vector<Bone*> children; Bone* parent; RDXBone(){parent = NULL;} void multParentMatrix( D3DXMATRIX &mat ,int frame); void Animate( MeshVertex* vertex , MeshVertex *original, int frame ); }; void Bone::multParentMatrix( D3DXMATRIX &mat , int frame ){ if( parent ) parent->mult_parent_matrix( mat,frame ); D3DXMATRIX trans,scale,rot; D3DXMatrixRotationQuaternion( &rot, &key_quaternions[frame] ); //key_xxxはアニメーションデータ D3DXMatrixTranslation( &trans , key_translates[frame].v[0], key_translates[frame].v[1],key_translates[frame].v[2]); D3DXMatrixScaling( &scale , key_scales[frame].v[0],key_scales[frame].v[1],key_scales[frame].v[2]); mat = rot * scale * trans * mat; } Xファイルの読み込み部分は省いていますが、デバッグではアニメーション情報等全て正常に読み込まれているようでした。 よろしくお願いします。
resultの不定値を掛けて何がしたいのか、全く意味不明。
D3DXVec3Transform( &vec4,&vec,&mat ); × D3DXVec3Transform( &result,&vec,&mat ); ○ RDXBone(){parent = NULL;} × Bone(){parent = NULL;}○ すみません。元のコードの名前をそのまま書いてしまいました。 修正しました。
アニメーションさせているのにボーンの位置が初期のまま固定されている意味が分からん。
すみません。解決しました。 読み込み時にクオータニオンのw成分にマイナスをつけると全て正常に動きました。 t-potでwにマイナスをかけてるソースがあったので真似してみました。 どうもご迷惑おかけしました。
>>508 いや、それ動いてるように見えてまったく動いてない
t-potさんのとこの奴でしょ?
あれ、動いてないからw
いや、動いてたのかもしれんな でもt-potさんのはDirectXのD3DXQuaternionSquadってのが たしかぶっこわれてて正常に動かないんだ 代わりにD3DXQuaternionSlerpっていうの使ったらうまくいくぜ 使い方はググって調べてちょw
スキニングなんて理屈がわかればいいんじゃね? そういうサイトあんまり参考にしないほうがいいと思うけどね
>>509 でもどんな複雑なリグでも完璧に動きました
真似といっても「w」の符号を反転するだけで、他は全て上に書いたコードです
座標系
アニメーションはややこすぃですなぁ。
515 :
デフォルトの名無しさん :2011/08/19(金) 20:31:19.99
くそぅ2Dなのになんでこんな難しいんだ
Direct3D で曲線を描くにはどうすればいいですか?
D3DXVec3Hermiteとかかな?
Direct3Dで太線を描くにはどうすればいいですか?
519 :
516 :2011/08/19(金) 23:31:17.70
わかりました。ありがとうございます。やってみます。
Direct3Dなのですが, アルファつきのテクスチャを貼り付けると,オブジェクト内の重なったポリゴンが全部透過してしまいます. ――― ←アルファ値0(透過してしまう) ――― ←アルファ値あり(透過させたい) ↑ カメラ 解決方法としてアルファテストが挙げられていましたが,境界がギザギザになってしまうのでできれば使いたくありません. 何か解決策はありますか?
521 :
516 :2011/08/20(土) 12:34:26.05
D3DXVec3Hermite って結局のところ、曲線の通る点を直線で結べってことですよね。 GDIだとベジエ曲線などを描画できたと思うんですが、Direct3D にそういうのはないとういことですか。
>>520 >――― ←アルファ値0(透過してしまう)
これが見えなくなってしまうってこと?
それなら描画順の問題かな。
(アルファ値あり)を先に描画してから(アルファ値0)を描画すると、
Z深度テストで隠れていると判断されて描画されない。
先に(アルファ値0)を描画してから(アルファ値あり)を描画すれば、
(アルファ値0)が描かれた上に、透明度を考慮して(アルファ値あり)が
ちゃんと描画される。
DX11じゃA-Bufferだったっけかで描画順の問題はなくなったんだっけ?
>>521 ベジェも結局のところは曲線を直線で近似している。
要はどの程度の細かさにするかってこと。
D3DXVec3Hermiteも制御点間を細かいステップで描画すれば
十分滑らかになるよ。
>>522 そうです.見えなくなって背景がそのまま見えてしまう感じです.
描写順が問題ということですが,都合よく並び替えてくれる機能とかないですよね
解決法としては,モデルデータを作り直すしかないですか?
>>524 メッシュ単位でα物の描画順序を後にまわせばよかですよ
オブジェクトは機械的にメッシュ単位で描画するように考えるとうまくいくと思う
A-Bufferも自前で実装しないとだめじゃね?
HLSLを組んでいたら Direct3D9: VS->PS Linker: X1033: (Warning) Current pixel shader declares input color v0.xyzw. However the current vertex shader doesn't outputs oD0 at all. という警告が大量に出力されるのですが、 これはどうするべきなんですか?
>>524 モデルをパーツ分けせずに1つのメッシュとして描画してたので入れ替えるのが厳しいです(´・ω・`)
ちょっと設計考え直してみます.
>>527 >>527 頂点シェーダーとピクセルシェーダーを
リンクする人
「ピクセルシェーダーでcolor v0.xyzwを入力するって書いてあるのにぃー、
頂点シェーダーでoD0を出力してないんだけどーどういうことなの?バカなの?死ぬの?」
ちなみにoD0 v0とかはレジスタ
DirectX9でシェーダーのサンプラステートでAddressU、AddressVをBorderに設定し、BorderColor = float4( 1, 1, 1, 1 ); とやったんですが、ボーダー色が反映されていません。どうすればシェーダーからボーダーの色を設定できますか?
0xffffffとかで指定するんじゃなかったっけ??
そうだよ
borderは負荷的には結構ペナルティあるから使わない方がいいけどな。
ねーよ
どっちだよ ベンチマーク取れよ
540 :
デフォルトの名無しさん :2011/08/23(火) 21:22:23.78
画面をキャプチャしようと GetRenderTargetで取得したデバイスのレンダリング先のサーフェースから GetRenderTargetData()を使ってシステムメモリ上のプレーンサーフェースにコピーしたところ とれたサーフェースの絵は真っ黒くろすけでした。 このとき、転送先はCreateOffscreanPlainSurface()みたいな関数で作ったんですよ。 幅、高さ、画像フォーマット、D3DPOOL_SYSTEMMEMを指定して。 これで完璧って思ったんですけど、ここにコピーすると前述の通りまっくろくろすけです。 でもIDirect3DTexture9を作成して、このテクスチャの0番目のサーフェースを取得し このサーフェースを、GetRenderTargetDataのコピー先として指定すると、したらちゃんと絵がとれました。 テクスチャっていうのは3Dのオブジェクトの表面にはるビットマップとかの絵だと思っていたんですが、 サーフェースを持つ上位のオブジェクトなんですねぇ。よく分からなくなってきた。 ところでテクスチャのサーフェースにはどうして転送できるのにオフスクリーンプレーンサーフェースには転送できないのでしょうか?
すみません、単純なミスでした。オフスクリーンサーフェースにGetRenderTargetDataできてました。
はあ・・・
座標変換済み頂点による2D描画は、カメラを移動することによって画面をスクロールすることはできませんよね?
そりゃあ3D座標→2D座標に座標変換するときにカメラ行列が掛けられるんだから当然
そもそもDirectXにカメラなど無い。
はい
視点のことカメラって言うだけじゃん
そもそもDirectXに視点など無い。
ラスタライジングリージョンって言う感じなのか?
定期的に下らない文言でバカどもが騒ぐのはなんなんだろうか
>>550 自分の観察日記はチラシの裏にでもつけてろ
日記なら日記帳に付けてるさ
DirectXのクラスとか構造体って名前長いの多くね? それともこれが普通なん?
どうせ入力補完されるんだからどうでもいい
>>553 長い、そしてうざいと思う
Cから使うことを考慮してあるから仕方ないけど
DirectX関係ってパっと見で分かるから重宝してるけどね。 自前のヘッダのdefineで短くして使うとかもできそうだね。
557 :
デフォルトの名無しさん :2011/08/25(木) 05:02:50.24
頂点データバッファの0番目から100個を三角形で円筒に、 100番目から149番目までを扇形にして1個のプリミティブとして円筒の蓋を描きたいので 次の様にしてみましたがかけませんでした。 DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 * 50 -2 ); //こちらは円筒を描く DrawPrimitive( D3DPT_TRIANGLEFAN, 100, 1 ); //円筒に続いて上側に蓋をしたい DrawPrimitive( D3DPT_TRIANGLEFAN, 150, 1 ); //さらに下側に蓋をしたい 円筒はかけます。 ところで、DrawPrimitiveは頂点配列の開始位置は指定できるけど頂点数は指定できません。 どうやって100番目から149番目の点をつかって1個の扇形にしてほしいことを伝えられるのでしょうか? ※お気づきかも知れませんが、DirectX9のサンプルに追加する形で試してます。
どこを勘違いしてるのよくわからんが TRIANGLEFANとて頂点列から三角形を結ぶ順番を指定してるだけだぞ なのでこの場合、50頂点で1つのファン、じゃなくて ファン上に配置されてる50個の頂点から形成される48個の三角形、を描画したいんじゃないの DrawPrimitive(D3DPT_TRIANGLEFAN, 100, 50-2);
559 :
デフォルトの名無しさん :2011/08/25(木) 07:04:42.98
>>558 それで出来ました!
なるほどそう言う事か〜
古いSDKを入れろよ
directx11をインストールしてる環境で一時的にdx9にする事はできますか?
>>562 ちょっと何がやりたいのかもっと詳しく
テスト環境を作りたいということ?
564 :
デフォルトの名無しさん :2011/08/25(木) 21:41:34.64
Direct3Dで立体を描画してみてぐりぐり動かしてみたんですけど 背景とオブジェクトの境界線がぎざぎざになるんです。 あれをどうにか中間色とかで馴染ませる処理がありましたらキーワードを教えてください よろしくおねがいします
565 :
デフォルトの名無しさん :2011/08/25(木) 21:44:01.87
気にするな
アンチエイリアスでいいのかこれは
アンチエイリアス
>>563 今DirectX11がインストールされてるんですけど
あるゲームはDirectX9が安定するみたいなので一時的にDX9にできないかなと思いまして
スレと少し趣旨が違うのですがすいません
>>569 DirectXって最新版を入れておけば自動的に過去のバージョンも動くでしょ
572 :
デフォルトの名無しさん :2011/08/25(木) 22:30:20.33
じゃなくてプログラム側が実行環境のバージョン調べて それにあわせて新しいバージョンで実行されるようにしているんだろ 問題が起きるとしたらプログラム側のバグ
インストールしなくてもサンプルだけ取り出せばいいだろう。 どれだけ頭が回らないんだよ。
574 :
デフォルトの名無しさん :2011/08/25(木) 23:10:21.82
そもそもDirectX11はVistaならSP、7ならデフォルトだから、 インストールするものじゃない。
復帰
578 :
デフォルトの名無しさん :2011/08/27(土) 00:28:19.57
頂点にnormal(法線)を含めて頂点構造体を定義してプリミティブを描画させてるんですが、 デバッグ用に法線を描画させることを考えています。 なんかオプションとかで一発で頂点の法線ベクトルもレンダリングすることってできますか? 自分でチマチマ描くしかないですか?
書くしかない。 ジオメトリシェーダーなら楽はできる
580 :
デフォルトの名無しさん :2011/08/27(土) 00:31:00.95
ビューア使えよ
メッシュビューで?
582 :
デフォルトの名無しさん :2011/08/27(土) 01:37:08.54
フォグの超簡単サンプル下さい
シェーダ有?無? DirectXのバージョンは?
SSDOの超簡単サンプル下さい
D3DUSAGE_RENDERTARGETを指定してウィンドウのサイズより大きくして作成して そこに描画しても拡縮されてウィンドウ内に入るように描画されてしまうものなの? 2の累乗で作成して気づいたけどウィンドウのサイズに合わさないとダメなのかねぇ
何が言いたいのかわからん。 整理してから質問してくれ。
日本語ができないやつは、プログラムもできない。
今から始めるならバージョンどれがいいですか?
何がいいかは始める時期とは関係ない。
>>590 お前みたいなやつはOpenGLでもやってろ
じゃあ4.2か
ESの2.0だろ。
>DirectX SDK (Summer 2003) が、どうしても欲しいのですが、もう手に入らないのでしょうか?
マイクロソフトのダウンロードセンターにはもうないみたいだね。 となると、そのSDKを収録した書籍あたりを購入するしかないんじゃないかなぁ
Summer 2003が欲しい理由は何?VC6?October 2004じゃだめなん?
595じゃないけどそう言うこと言う奴殺したくなる
DirectX 9 シェーダプログラミングブックとかに添付してあるやつかな 図書館とか行けばありそうだけど
殺したいとか迂闊に書くなよ 状況がわかれば代案を提供できるかもしれないじゃないか
>>597 みたいなタイプに親切に代案教えても
俺の質問に答えずに面倒なこと言いやがってとか逆恨みされる気がする
>>597 が、代案教えようとしてるほうやん。
まあ、引っ張らないでおこう。
603 :
597 :2011/08/31(水) 02:52:05.35
>>602 そうそう、俺も長いことVC6使いだったから、もしVC6目的かつOct2004でもいいなら、ダウンロードリンク張ろうと思っただけなの
でもまぁ単にSummer2003で開発してきたから、それが欲しいってだけならお邪魔だしね。
ちなみにさっきこの件で検索したとき、VC6 & Oct2004だとデバッグできないなんて記事があったけど。ちゃんとExtra当てれば何の問題もないよ。
しかし殺すとか凄いな・・・・
日本語が分からない奴は死ね
おおこわいこわい
まあ、このバージョンの上げ方は糞だな しかもMS自体がバージョンを消しちまうんだから手に負えない 一体何がしたくてこういう形式なのかさっぱりわからない
過去の過ちを無かったことにしたい
directshowをPlatform SDKに移動したり GraphEditorなくしたり。 正直ポリシーがあってやってるとは思えない。
GraphEditはまだWindows SDKに収録されてるでっしゃろ
dx9でビデオメモリの使用量が知りたいのですがどうすればよいでしょう directdraw7の関数呼べばいいですか
611 :
595 :2011/08/31(水) 08:54:00.90
VC6だと、DirectShowがコンパイル通らなかったり、リンクエラーでツライんですよね。 Oct2004+Extra の組み合わせは知っていましたが、 DirectShowのlibはついてないし、lib作ろうにも、 標準ヘッダー修正してたんですけど(しないとコンパイル通らない)、 いざDirectShow本体ソースをコンパイルしようとすると、エラーでした。
VC6をやめりゃいいだけじゃん
614 :
595 :2011/08/31(水) 12:09:30.71
orz
615 :
597 :2011/08/31(水) 20:36:41.48
>>611 October2004にDirectShowのライブラリあるよ。
よく分からないけど、何か特殊なことしているのかね。
>>610 Windows環境で正確なVRAMの使用量は分からなかったはず。
それを踏まえたうえでGetAvailableTextureMem。
ありゃ、名前残ってた。
VC6、IE6、NT6・・・まったく不吉な数字だぜ
MSが変な方向にいっちゃってるせいで何か停滞してない? 7を売りたいのはわかるけど、 まだ膨大な利用者がいるXPをOBSOLETEとか意味がわからんわ。 そのせいでDX10もDX11もオワコンに見える。
DX11はXファイルみたいな標準で気軽に使えるメッシュ構造やそれに関連したアニメーションの利便性がなくなったのがかなり痛い。 これさえなかったら、すぐにでもWin7買ってDX11に切り換えるのに・・・
もろにあるだろう。 なんで中身も確認もせずに無い無い言うんだろうな。 こういうクズを見ると、本当に怒りがわいてくる。
>>618 10年も前にリリースされたPC用のOSは obsoleted だろ。
むしろ、利用者が多いという理由でXP HOMEのサポートを5年も延長したおかげで、
VISTAの家庭用エディションよりもサポートが長くなるってどうなの。
ところで、VISTA Ultimate が家庭用扱いってどういうこと。俺涙目。
622 :
デフォルトの名無しさん :2011/09/02(金) 13:01:09.46
知れば知るほどMSは信用できなくなってくる。。 今に始まったことではないのですが。 こちらにXAudio2分かる方いらっしゃいますか?
信用できないんだからMS関連は使うなよ。
高いなw
>>627 脱MS依存ってことで、今の作業が終わったら
OpenGL, AL, おまけにCL の学習を始めようかと思ってます。
で、今現在XAudio2のXAPO関連で詰まっています。
リアルタイムで再生中のオーディオの音量を取得できないものでしょうか?
XAPOでできるのは出力オーディオデータの処理だけなのかどうか。。
>>628 >脱MS依存ってことで
だったらこんなところで人に聞いてるようじゃ駄目
それほど甘くない
なんでOpenGLの日本語情報少ないんだろうか そんな難しくないと思うけど。。。
>>630 何気に癖があるから予想で仕様を把握しにくい
ライブラリ自体かなりグローバル変数頼りまくりだから影響が見えないとかもあるんじゃないだろか
弄ってみて思うことは
やっぱりmsってスゲーでfa
・DirectXとOpenGLのレイヤーの違い ・ここ数年の大幅な仕様改革に見る策定チームの思惑と開発者の反応 これらをキーワードに適当に調べて手短に(3文字ぐらいで)済ませてください。
金金金
そういや、OpenGL4.2ってDirectx11を抜いたんだよね?
>>631 俺はopenglの方が肌に合ってる感触するがなぁ
グローバルまみれではあるが、push,popの仕組みがあるからそれほど困らないし
directxのほうがよっぽど全体を把握しずらいと思うがなぁ
>>629 そーいうもんですか。XAudio2も妙に情報が少ないもので
使ってる人もいないのかなぁと思ってしまう
DirectXって9で止まってるよね MS暴走しすぎ
9なんて2014年4月を待たずに完全終了だろ
でもDX11って9の面倒なところをシンプルにしたり、 HLSLではよりパフォーマンスの良い命令が追加されたり、 使いこなすならDX11だよね、ってカンジなんでしょ?
初学者でもDX11はお勧めですか?
DirectComputeがあるからね。 オヌヌメ。
642 :
622 :2011/09/03(土) 15:25:05.49
ちょくちょくinterruptしてすみません。解決したので。 XAPO(オーディオエフェクト処理)インターフェースに エフェクト設定を構造体のポインタで渡すメソッド(SetEffectParameters)が あったので、(何故か)その構造体のメンバでデータを取得しようと考えたのですが、 インターフェース内部では構造体のコピーを作って使っていたようです。 ポインタ渡しだからてっきり直接構造体を書き換えてくれるものかと。 なんのためにGetEffectParametersメソッドがあるのか先に考えるべきでした。 で、XAPOクラスを継承したクラスに直接データを返すメソッドを追加してそれを使ったらできました。 こういうアホな勘違いで時間を食うのは経験不足なんだろうなぁ… 急いでたのでつい他の方を頼ってしまった
PCだとXPのシェアはまだまだ低いとはいえないからなぁ。
>>642 DirectXのドキュメントには、引数がinなのかoutなのかはっきり書いてあるだろう。
知れば知るほどMS(の英語ドキュメント)は信用できる。
OpenGL OpenGL言ってる方はOpenGLのスレにお帰りください。
>>630 別に日本語じゃなくても困らないからだろ。
directX9で作っているのですが、 描画した画面全体を並行移動することはできますか? 描画先をテクスチャにする方法は見つけたのですが、 重そうなのでもっと軽い方法はありますか?
重いかどうか検証したのか?
>>647 射影行列後にクリップ座標系の状態で平行移動するのは?
実際にはdirectxでは射影行列*平行移動したのをD3DTS_PROJECTIONにセット
レスありがとうございます。
>>648 やってませんでした。
>>650 D3DTS_PROJECTION使ってみたけど移動しませんでした。
スプライトを使って2D表示をしてるんですが、
3D用に何か設定をし直さないとダメなんですか?
HRESULT Render(void)
{
g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(90, 50, 30), 1.0f, 0);
// シーンの描画開始
if (SUCCEEDED(g_pD3DDevice->BeginScene()))
{
D3DXMATRIX d3dm;//@
D3DXMatrixTranslation(&d3dm, 0, 200.0f,0); //画面をY方向に200px移動したい
g_pD3DDevice->SetTransform(D3DTS_PROJECTION , &d3dm);
drawMain(); //描画処理
g_pD3DDevice->EndScene();
}
return g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}
ずらして描画すればいいんじゃ
>>651 ID3DXSpriteはD3DTS_PROJECTIONなんて見に行かないだろw
ちなみにクリップ座標系で200.0fなんて移動しすぎ
画面の端から端まで-1〜1の大きさなんだぞ
ID3DXSpriteに与える行列変換の最後にでも掛ければいい。
こっちはクリップ座標系ではないが
はっきり言って
このレベルならDirectXなんて使わず他のゲーム用ライブラリ使ったほうが、
時間を無駄にしないで済む
654 :
653 :2011/09/05(月) 23:00:46.51
>>651 見に行かないというのはおかしいな。上書きされるな、この場合
レスありがとうございます。
>>652 ずらして描画ってどうゆうことですか?
>>653-654 弾幕シューティングで画像を表示する部分を大量に呼び出すから
1回ごとの処理を出来るだけ減らしたいから
一括で並行移動できるのがあったらいいなって思ってました。
上書きされるってのは
g_pD3DXSprite->SetTransform(&mat);
↑のスプライトの座標変換で
g_pD3DDevice->SetTransform(D3DTS_PROJECTION , &d3dm);
↑の変換が上書きされてしまうってことでしょうか。
だからスプライトなど使うなと
>>655 違う
ID3DXSpriteがbeginあたりでデバイスのステートを大量に変更するから
おそらく上書きされてる。
何を上書きするかは実装依存だがPROJECTIONはほぼ確実に上書きされてる
ID3DXSpriteなんて使わず2d描画するか、
ID3DXSprite::SetTransform用の行列スタックでも作って、
ルートの行列で平行移動でもすればいい
結論:ID3DXSpriteなんて使ってる奴は馬鹿 ってか使う前に調べたらこういう発言いくつも見ただろ? これね まったく応用が効かないの ハイ、ダメー!ハイ、ヤリナオシー!ハイ、ザンネンデシター!
何を使おうが作成者の自由。ゲハじゃあるまいし洗脳とかあほか
お手軽である、というメリットはある。 だが加算合成とか減算合成等はやりにくいし、 やはり柔軟性に欠ける。 メリットとデメリットを考慮した上でどれを使うかはやはり自由
自由だけども、ID3DXSpriteじゃなくて普通に座標変換済み頂点情報で 2D描画した方が楽なような…
ラッパー用意してオフセットくらいかけられるようにするべ
664 :
647 :2011/09/06(火) 21:48:29.70
>>657 ありがとうございます。
beginをいちいち処理してたら重くなってしまいそうなので
画面をテクスチャにする方法を試してみます。
それがダメならスプライトじゃない方法を試してみます。
beginのコストとかそういうのを指南してくれる書籍やサイトがほしいわ。
pixで何呼んでるか見れなかったっけ?
質問です。 VC++ 2008 + DirectX 9.0c SDKを使いアプリを作成し IDirect3DDevice9::Present(NULL, NULL, NULL, NULL); にて 画面描画を行っています。 PrintScreenキー押下によりアプリにて描画している領域の スクリーンショットが撮れてしまいますが、スクリーンショットを 撮れないようにする方法はありますでしょうか。 ご存じの人がいらっしゃれば、教えていただけないでしょうか。
HDCP対応プログラムでも作れば?
Win32APIを使ってPrintScreenキーの入力を検出したら 画面を真っ黒にするとか。 実験してないから上手く行くかどうか全然分からないけど。
670 :
デフォルトの名無しさん :2011/09/07(水) 14:05:48.87
>>667 クリップボードに別のデータを転送すればOK
こうして他アプリの動作を妨害する糞アプリが生産されるのであった
キーフックしてどうこうしたところでキャプチャソフトは防げないだろ。
高速に画面切り替えて一画面をVOIDを含んだ複数画面で表示すればいいと思うよ ラインスキャンディスプレイを写真に撮ったらチラッと一部分光ってるだけみたいな感じに
だからお前らの提案するクズみたいな方法を使わなくても、HDCPで出来るんだよ。 そもそもがコピーガード用の規格なんだから。
ソーシャルハック的にバックドアを仕掛けされる算段だったりしてな
そこまでして画面隠すようなもん作らねーべ。ってか隠す意味がわからん
うだつの上がらない零細エロゲ屋さんじゃないの? 本編よりスクショや解析妨害に血道を上げてるとこあるし。
全裸になって四つんばいになって片足上げてしーこっこしてるとこを写真に撮ってアップすればいいと思うよ
>>679 #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
↑テクスチャ貼る気ある?みたいな宣言
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)
こうするべき
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw; // The transformed position for the vertex
DWORD color; // The vertex color
};
テクスチャ貼る気ある?というデータ構造
float u,v;が抜けてる。
ここを直したら表示された
684 :
682 :2011/09/07(水) 23:51:31.19
g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); これサイズおかしくね?
686 :
682 :2011/09/08(木) 09:41:34.59
>>685 sizeof(CUSTOMVERTEX)以外の値に色々変えてみたけど
表示がおかしくなってしまいました。
>>686 すまん
sizeof(CUSTOMVERTEX)であってたっぽい
689 :
682 :2011/09/08(木) 11:29:58.42
g_pD3DDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 ); g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG0,D3DTA_DIFFUSE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG0,D3DTA_DIFFUSE); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVMAT00,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVMAT01,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVMAT10,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVMAT11,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_TEXCOORDINDEX,D3DTSS_TCI_PASSTHRU); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVLSCALE,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_BUMPENVLOFFSET,0.0); g_pD3DDevice->SetTextureStageState(0,D3DTSS_RESULTARG,D3DTA_CURRENT); g_pD3DDevice->SetTextureStageState(0,D3DTSS_CONSTANT,D3DTA_DIFFUSE); g_pD3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE); とりあえず全部設定したけどダメでした。 D3DTSS_BUMPENVMAT00などの値がdoubleからDWORDに変換されるのがダメな気がするけど どうやれば少数型で渡せるんですか?
あ、できたよ RectRGB[0][0] = RectRGB[0][1] = RectRGB[0][2] = 255; RectRGB[1][0] = RectRGB[1][1] = RectRGB[1][2] = 255; RectRGB[2][0] = RectRGB[2][1] = RectRGB[2][2] = 255; RectRGB[3][0] = RectRGB[3][1] = RectRGB[3][2] = 255; をCUSTOMVERTEX vertices[] =の前に入れたら表示された g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pD3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); g_pD3DDevice->SetTexture(0,img); g_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1 , D3DTA_TEXTURE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP , D3DTOP_MODULATE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2 , D3DTA_DIFFUSE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1 , D3DTA_DIFFUSE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP , D3DTOP_DISABLE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2 , D3DTA_DIFFUSE ); g_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS , D3DTTFF_DISABLE ); g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); g_pD3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 ); こんなんでいけた
691 :
682 :2011/09/08(木) 16:05:58.60
>>690 ありがとうございます。
出来ました。
助かりました。
拡大縮小アルゴリズムがニアレストネイバー以外になっているとか
ポリゴン的(パネルみたいな?)動きをさせようとしたときにひっくり返すと余計酷い感じになるから アドレッシングモードのCLAMPを指定するほうをオススメ
バイリニアフィルタ使ったときにズレんじゃん>0.5 CLAMPにしときなよ 悩む必要ないから
ある特定のソフトがどのDirect Xバージョンで動作してるかを確認するツールなど、 方法があれば教えて頂けないでしょうか。
そういう他人のソフトがどうこうというのは板違いです
701 :
692 :2011/09/09(金) 12:49:46.18
>>693-698 レスありがとうございました。
色々やったけど直らなくて
D3DXCreateTextureFromFile(g_pD3DDevice, g_szSpriteFile, &g_pD3DTexture);
を
D3DXCreateTextureFromFileEx(g_pD3DDevice, g_szSpriteFile,imgW,imgH,1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,
D3DX_FILTER_NONE,D3DX_FILTER_NONE,0x00000000,NULL,NULL, &g_pD3DTexture);
にしたら直りました。
FILTER_NONEがニアレストネイバーってことじゃん
グラボのプロパティでフィルタなぞいくらでもONにできる 俺ら側で設定したものは使われない可能性がある アドレッシングモードにしとけ
704 :
692 :2011/09/09(金) 13:53:01.66
>>702 ニアレストネイバーってこのことだったんですね
>>703 g_pD3DDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );
を書けばいいんですか?
>>704 おk
ただ、ものによって使えないのでそこは経験で
今回の関数なら問題無さげ
706 :
692 :2011/09/09(金) 15:18:30.21
>>705 ありがとうございます。
設定しておきます。
描画時間計測したら
スプライトで4.5秒かかった処理が
DrawPrimitiveだと2.2秒で終わった。
そんな当たり前なことは書かなくていい
意外とスプライト使わないって大変なことなんだな 固定シェーダのバグ取りが相変わらずイケてねぇ
わざわざ固定シェーダー使うのが理解できん
バックバッファのフォーマットをアルファ付きにして意味あるの?
固定機能を固定シェーダーとのたまう馬鹿が早く絶滅しますように。
>>712 気分の問題ならつかわないほうがいいのかな??
好きにすればいい。 誰も止める権利もない。 いやならやめればいい。
いやいや 意味や意図がないならやめろよ>バックバッファのα付き
716 :
667 :2011/09/10(土) 20:35:05.87
アドバイスいただきありがとうございます。
スナップショットを撮らせない方法を質問していた者です。
調べていくうちにDirectXとは関連がない方法にて
実装する事柄のような気がしてきました。
↓下記RegisterHotKeyを使う方法があるらしいのですが、
http://msdn.microsoft.com/en-us/magazine/cc163713.aspx [shift + PrintScreen][ctrl + PrintScreen][shift + ctrl + PrintScreen]など
にてスナップショットが撮れてしまいます。
>>668 >>675 HDCPのことについてよく知りませんが、古いPCで
動作させることを想定しているので使えないと思います。
>>669-673 下記メッセージ
IDHOT_SNAPDESKTOP [デスク トップスナップ] [PrintScreen]
IDHOT_SNAPWINDOW [ウィンドウをスナップ] [Alt]+[PrintScreen]
をフックして無効にすれば可能かも知れません。
(私はフックは今まで使ったことがないので本当に推測です。)
>>674 すみませんが、何のことかわかりません
717 :
667 :2011/09/11(日) 01:37:58.00
稚拙な知識しか持ち合わせないのに
>>716 のような変なことを書いて申し訳ないです。
色々調べたところ、グローバルフックのキーボードフック(WH_KEYBOARD)を使い
「PrintScreenキー押下後のスナップショットがクリップボードに貼られた後」の
タイミングを捕らえることができました。
しかし、クリップボードに貼られた後にクリップボードを消去しても、あまり意味が
無いように思っています。
いま「スナップショットがクリップボードに貼られる前」のタイミングを捕らえる方法を
探しています。
内容がスレチになってしまったので内容相応のスレに移動します。
どうもありがとうございました。
どんな場合でもチェックしたいというなら、単位時間おきに監視すれば? 要するにポーリング。
無理じゃねぇの? スクショを効率よくとるソフトってあるじゃん そういうのまで考えるとPrintScreenキーとかすでに関係ねーし
利用者の後ろに張り付いて監視すりゃいいんだよ。 これで解決なんだから、以後だれもレスすんなよ。
メディアプレーヤーみたいなことやんないとダメなのかもな
>>721 原理がわかっていないクズがレスするなよ。
オーバーレイはAEROでは無効なんだから、みたいなことの意味が全く不明なんだよ。
もう一度言う、クズはレスするな。
723 :
667 :2011/09/11(日) 15:07:17.91
>>718-722 結局、RegisterHotKeyを使ってPrintScreenキーと修飾キー(ALT、CONTROL、SHIFT、WIN)の
全組み合わせ(16通り)のキー入力をすべてホットキーに登録する方法にて実装しました。
これで物理的に特殊なツールを使われない限り、色々な操作をされてもスナップショットは
撮られないと思います。
デスクトップのHDCを取得してBMPファイルに書き出すなどのプログラムにて、
クリップボードすら経由せずにスナップショットを撮るのと同じことができると思いますが、
どうにしろ防ぎようがないので妥協しました。
なぜそこまでしてSSをとらせたくないのか理解できん。 どうせキャプチャソフトで撮れるんだし。
ニコ動でよくみるみたいな画面操作の動画っぽいのを作成するソフトあったよな? あれも防げんのかな?
キャプチャーすると真っ暗になる方法が昔あったような無かったような
tcharにするとリテラルに_Tをつけるのめんどくさいのですがどうしたらいいですか
sandyBridgeってGPUがCPU内に入ってるから 頂点座標が多くなってもDrawPrimitiveUPとDrawPrimitiveは 速度が変わらなくなったってことでいいの?
GPU用のメモリからCPU用のメモリへの転送は行われるから、さほど速くはなってないかも。 メモリ空間が完全に統一されたら分からないね。
>>727 tcharなんて使わなければいい
今のpcゲームでcharを切り替えるメリットはほぼ無い
ダイレクトドローのオーバーレイで出せばキャプできないと思う
732 :
デフォルトの名無しさん :2011/09/11(日) 22:54:19.88
どうあがいてもDVIやHDMIでビデオキャプチャされたら どにもならないよね HDCPも解除できるし そんなところより内容に力を入れろってこった つまんないソフトに限ってコピープロテクトだけは充実しててむかつく
>>732 開発ならSDK,
ゲームしたいならエンドユーザーランタイム
737 :
デフォルトの名無しさん :2011/09/18(日) 04:06:26.63
738 :
651 :2011/09/19(月) 15:41:37.81
スプライトを使うのをやめたけど
D3DXMATRIX d3dm;
D3DXMatrixTranslation(&d3dm, 0, 200.0f,0);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION , &d3dm);
を使っても並行移動できませんでした。
200.0fの部分を0.2fとかにしてもダメでした。
どうすればいいでしょうか。
http://www1.axfc.net/uploader/H/so/143181.zip
と言うレスが入ったんですけど 「笑えばいいと思うよ」か「まず裸になります」のどちらがいいでしょうか?
射影を平行移動? 頭大丈夫?
チュートリアルなんてやらない・・・絶対にだ! って決意が堅そうな初心者はどうしたものか・・・
742 :
651 :2011/09/19(月) 21:04:18.62
D3DTS_WORLD、D3DTS_VIEW、D3DTS_PROJECTIONの値をいじってみたけど何も変化が起きません。 SetTransformを有効にする設定みたいな物があるんでしょうか。
>>742 さすがにお前に教えられる猛者はなかなかいねーよ
せめてDirectXのチュートリアルぐらいはやってくれよ
トラのモデルを表示する奴な
チュートリアル通りに進めれば今日の24時ぐらいにはすべてが理解できてっからよ
っていうかお前、今月頭からそんな状態なら入門サイト探すか入門書買うとかなんかやれや
744 :
651 :2011/09/19(月) 21:21:13.57
この本を読んでみ 「 15歳からはじめるdirectx 9 3dゲームプログラミング教室 」
746 :
651 :2011/09/19(月) 21:32:31.14
>>745 2500円か
2D画面の並行移動をやりたいだけなのに
新しい本を買うのは気が進まない・・・
とりあえずチュートリアルやってみます。
>>744 いんじゃねいんじゃね
でチュートリアルのサンプル プロジェクト自分のPCの中からみっかった?
>>746 おめ、チュートリアルは最期までやっとけよ
いまどき、2Dゲーだって3D空間をぺらぺらなキャラクタが移動してたりするだろ
2Dですべてを表現するのって今度は別のセンスやらなにやら必要になって
いまはもうそういう技術だれも教えてくんないから一旦3Dの方進んで2Dゲー作ったほうがなにかと楽だぞ
ようは全体を平行移動したいんだよね カメラを動かして描画すればいいんじゃないのか
既にある方向を向いているモデルがあったとして、 任意の与えられたベクトルの向きを向くようにワールドマトリクスを変換したいのですが、 どう変換したら良いのでしょうか? 宜しくお願い致します。
視点と注視点のベクトルを任意に設定すればいいだけの話。
lookat で検索
オブジェクトの方を動かすのなら、向かせたい方に回転させるだけ。 何が疑問なのかが分からない。
アークタンジェント使えって話だろ
755 :
651 :2011/09/20(火) 01:18:50.79
>>755 サンプルプロジェクトと比較してみた?
sdkに動くサンプル付いてるよね?
757 :
651 :2011/09/21(水) 22:43:17.94
2日間考えてやっと分かった。 D3DFVF_XYZRHWじゃなくてD3DFVF_XYZじゃないと カメラは使えないのね。
当たり前だ
DirectXにカメラなど無い。
痺れた。
761 :
651 :2011/09/23(金) 14:49:56.21
D3DFVF_XYZRHWからD3DFVF_XYZに変えたら処理速度が2倍遅くなったんですが、 普通はそんな物なんですか?
いいえ
>>761 お前、チュートリアルは終わったのか?
頭のおかしい発言繰り返す前にやることやれよ?
765 :
教えて君 :2011/09/24(土) 10:38:57.59
3Dオブジェクトを背景に表示した空間の手前にテクスチャードクアッドを入れて その面にビルボーディグをかけています。背景色が抜けず、裏の3Dオブジェクトが四角で 隠れてしまう格好となってしまいます。テクスチャを作るときD3DCreateTextureFromFileEx()で 抜け色指定したのですが、抜け色としたところが黒くなって、その黒い部分が奥の3Dオブジェクトを 透過せず隠してしまうのです。 何故こうなってしまうのですか。対処法はありますか。
767 :
教えて君 :2011/09/25(日) 21:05:46.07
ありがとうございます。アルファブレンドですか。 自分のレベルに合わないものを作ろうとしたかもしれないので、一回2Dで自分でできる とりあえずの完成形を作ってみようと思うようになりました。
>>763 これのDX11版が欲しいなぁ。
まぁ、共通してるところもあるだろうけど。
最強の入門書はどれですか?
あなたのレベルに一番マッチした本
マジレスすると 2 c h
World Wide Web
Wild Wild West
逆に情弱な入門書って何よ?
15歳
本屋で入門書を見あさっても、何がいいか分からない奴が−>情弱
778 :
デフォルトの名無しさん :2011/09/29(木) 20:44:27.81
懐中電灯を直視したときのように、ライトの部分が光って見えるようにしたいのですが(戦闘機のアフターバーナーの表現)、 D3DLIGHT9のポイントライトを配置しても、それ自身が光って見えるようにならないようです。 素人ですいませんが、どういう風に考えればいいんでしょうか。
あーなんだっけそれ
780 :
778 :2011/09/29(木) 21:07:57.77
自力で解決できそうなことを考えたので、やって見てからまた質問します。
おお、がんばれ。
○かいたテクスチャ貼った板をライトの場所におく
>>776 俺もあれ嫌いだわ
軽い気持ちで遊ぶ、くらいの手触りで読むなら良書だけど、
しっかり学ぶという視点からは役に立たないことこの上ない
>>783 とりあえず全体像をつかむのにはいい本ってことだな
しっかり学ぶならそれなりのしっかりした本が必要になる
わかりやすい説明サンクス
そういうスタンスの本も大事だね。
子供に重い概念仕込むの大変だからなぁ。 概要だけの本で正しい前知識があったほうが多少ましかもしれんね。
むしろ細かいこと以上に、大局的な概念が重要だったりするw
Z座標からZバッファへの変換って Z座標からZバッファの変換が1対1でかつ描画したい部分のZバッファが[0, 1]に収まるなら なら任意の変換でいいの?
書いたようにしかならないんだから、書けるのなら何でもいい。
790 :
デフォルトの名無しさん :2011/10/02(日) 08:47:15.39
DirectXでビューとデータってどういう風に分離する?
質問させてください。 DirectX9.0cを使ってゲームを作り始めたのですが、自機のモデルがうまく表示されません。 テクスチャが張られていない部分はきちんと表示されるのですが、テクスチャが張られている部分が真っ白になってしまいます。 以下、読み込み部分のコードです。 D3DXLoadMeshFromX( "data/model/myShip/myShip.x", D3DXMESH_SYSTEMMEM, // メッシュの展開先 pD3DD, // デバイス NULL, &mpD3DXMaterialBuffer, // 属性バッファの設定 NULL, &mNumMaterials, // 属性の数 &mpMesh ); // マテリアル情報を取り出す D3DXMATERIAL* d3dxMaterials = ( D3DXMATERIAL* )mpD3DXMaterialBuffer->GetBufferPointer(); mpMaterials = new D3DMATERIAL9[ mNumMaterials ]; mppD3DTexture = new LPDIRECT3DTEXTURE9[ mNumMaterials ]; for( DWORD i=0; i < mNumMaterials; i++ ){ mpMaterials[ i ] = d3dxMaterials[ i ].MatD3D; mpMaterials[ i ].Ambient = mpMaterials[ i ].Diffuse; if( D3DXCreateTextureFromFile( pD3DD, d3dxMaterials[ i ].pTextureFilename, &mppD3DTexture[ i ] ) != S_OK ){ mppD3DTexture[ i ] = NULL; // 読み込めなかったらテクスチャは無効 } } この部分コードが間違っているのでしょうか。他に思い当たる部分がなく、困っています。 モデル自体に問題がないことは他のプログラムを使用して確認済みです。 よろしくお願い致します。
常にテクスチャが無いってことになってたりしない?
>>792 レスありがとうございます。
他のモデルのテクスチャがどうかということでしょうか。
モデリングツールで作成したxfileを読み込んだのはこれで初めてなので、
他のテクスチャがどうかはわからないです。
DrawPrimitive()作ったポリゴンにテクスチャを貼り付けることはありましたが、正常に表示されます。
補足になりますが、今回はテクスチャが複数枚あります。
貼られ方はおかしくなりますが、「d3dxMaterials[ i ].pTextureFilename」の部分に「〜.jpeg」等、
直接ファイル名を指定した場合はテクスチャは貼られます。
SetCurrentDirectoryを前に置いて、xファイルのあるパスをカレントディレクトリにしてみ
>>794 正常に表示されました!ありがとうございます!
原因を知りたいのですが、これはパスの設定を間違っていたということなのでしょうか。
また、SetCurrentDirectoryを使わずに正常に表示することは可能でしょうか。
よろしくお願い致します。
相対パスがテクスチャのパスとして設定されていると、xファイルからの相対パスとなる。 しかし、アプリケーションが起動したとき、そのプロセスのカレントディレクトリはexeファイルの場所になる。 だからカレントディレクトリのパスをxファイルに合わせる必要がある もしくはPath周りの関数を使って相対パスをxファイル基準の絶対パスにしてあげれば良い
>>796 レスありがとうございます。
よくわかりました。
長いこと悩んでいたので本当に助かりました。
ありがとうございました。
そこはDirectXに限らず悩むことが多いところ。 良い経験になったね。
DirectInput8で複数のパッドデバイスを列挙する場合 EnumDevicesを複数回呼び出せばいいんですか?
1回で全部とれる
ありです。 ちょっと調べてきます。
キーコンフィグってどうしてる? 〇が入力されたら〜って感じのソースの○を定数じゃなくて変数にしたらうまくいくんじゃないかと思うんだけど もっと良いやり方あったら教えて欲しい
うちが昔実装した方法だと キーコンフィグのページで全ボタンをチェックして押されたボタンの番号を変数に代入 実際に使う際にその番号を使って呼び出してた
一枚レイヤーかまして 実入力とゲームで使う論理入力?をわける
うん もっと効率的な遣り方があるかもしれないけどそうしていた。 それほど処理が落ちる訳じゃああるまいし 間に条件によっては処理を咬ませたりすることも出来るからいろいろと便利だったし
同意。 それが一番合理的じゃね?
経験者の意見は頼りになります、ありがとうございました。
すみません。 現在、直線や曲線を3D空間に描く時は、板ポリをひたすらみっしり並べて描画しているのですが もっと良い別の表現方法ってないものでしょうか?
D3DXVec3Projectで3次元の座標から画面の位置を取得してるんですが 真後ろに物体があった時にX,Yが普通に画面内に収まってくるんで困ってます 真後ろかどうかってどうやって判定すればいいですか?
D3DXVec3Dot関数に、カメラから注視点へのベクトルとカメラから対象座標へのベクトルを与えれば 返り値のフロートの符号の正負で前後が判断できたはず。
811 :
809 :2011/10/03(月) 09:43:11.49
今見てたら2次元スクリーンのZが0.5〜1.5くらいに変化してて 背後にあるときは1.0を超えるように見えるんだけど これって判定に使っても大丈夫?
PIXが対応しているD3DXのバージョンは一緒のSDKに入っていたもの、 つまりその時点で最新のD3DXだけなんでしょうか。
GetTransformでプロジェクション行列を取り出してアスペクトとか距離とか逆算することって出来る?
できるはず
815 :
デフォルトの名無しさん :2011/10/06(木) 14:57:45.96
Windows標準のテキストボックスとかボタンの外見をカスタマイズしたいんだけど DirectXSDKのサンプルがBCCじゃコンパイルが通らない 助けてくれ
だったらVC使えばいいだろう いったい何を言っているんだ?
/.| /.| ./.| 反日教育↓ /核/ ./核/ /核/ ←日本照準 _ / / _ ./ / _../ / || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|∧∧ . \/ /ヘ \/ /ヘ\/ /ヘ || 愛国無罪 。 /中 \ ◎ 丶i ◎丶i ◎丶i. .|\_______/| ←捏造 || 日本猪 \ (`ハ´ ) _| 3000000 |_ ||_______⊂ ⊂) ∧∧/ ̄ ̄ヽ _ \ ._______ /_ ∧∧ | ̄ ̄ ̄ ̄| /中 \資源 i \ ._南京大屠殺記念館_ / ( ,,) | (`ハ´ ) ⊂二 ̄⌒\ | ∩ ∩ | ̄| ∩ ∩ | 〜(___ノ  ̄ ̄ ̄ ̄ (つ とく__,;;ノ)\ ヽ | ̄ ̄ ̄ ̄ 口  ̄ ̄ ̄ ̄| llコ /⌒__) /__ ) ∧∧ ノ) , ‐-ll、 レ' ゝ( //// /|. / 中 \ / \ 〜〜l _ l〜〜〜〜〜〜〜 / / / //\ \( `ハ´ ) _/ /^\) ,! . ̄ l 「l ↑盗掘 / / / (/ ヽ、 ⌒ ̄_/ /漢級 ̄二二二二`γ_、 三二― ( ( (/ ノ / ̄ (`ハ´) ,`~ソ 三二― ./ / `ー―――――一'´ |\ ↑領海侵犯 / ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 日中関係改善のために我が国は並々ならぬ \努力をしており、日本に分かってもらいたい \________________
818 :
デフォルトの名無しさん :2011/10/06(木) 21:31:28.63
コールバック?
>>815 馬鹿じゃね
そんな予防注射みたいな名前のコンパイラ使ってるのお前ぐらいだぞ
BCC知らないとか
Boost C Compiler
Bust C Compiler
BCC馬鹿にすんなハゲ
824 :
デフォルトの名無しさん :2011/10/07(金) 00:29:32.82
B ババア C クラスタ C コンパニオン
さすがに今はMinGWのがいいんじゃね。
VisutalStduioが無料なんだからそれでいいじゃないw
>>826 リソースエディタがないとかそーゆーはなしだったりして?
VC Expressは商用コード作成無理じゃなかったっけ。
んな制限ない
金田して買ったアカデミック版は商用不可でタダのexpress 版は商用可能なんだよな
Academic Editionにそんな制限ないぞ DreamSparkやAcademic Allianceはダメらしいが
今はDreamとかついて制限増えたのか。 vs2003の時は制限もなくサービス終了時に2005proをタダでくれたぞ と思ったら昔やってたのはspokeだった
奥にある物体が描画されないのはプロジェクションの奥行きの問題だけじゃない? プロジェクションの奥行きをデカクしても一定ラインより先が描画されない 他に影響するものがあるの?
>>833 お前Academic EditionとAcademic Allianceの区別できてないだろ
アカデミックエディションに関してはいろいろ不明瞭な部分もあったので、MSのカスタマーセンターに聞いてみた。 それによると、VisualStudioのアカデミックエディションは、購入時点における購入者の身分だけに制限があって、 その後の使用や、開発したプログラムに関する取り扱いに制限はないそうだ。 つまり身分が購入の要件を満たさなくなってもそのまま利用できるし、商用ソフトの開発も自由だそうだ。 よかったな。
Direct Input に関して質問 全方位シューティング作ってるんだけど、コントローラーで詰まってる。 Geometry Warsみたいにアナログスティックの360回転に同期して自機も360度回転させたい。 8方向は普通に出来る。 (キーボードでも使えるようにするために、キー情報の変数を作ってビットで管理してる。) 8方向だったらフラグで簡単に出来るけど、360度だとDIJOYSTATE2の値を直接参照して、自機の角度を変える感じかな? でもそれだと、lXやlYの値がどのくらいのとき何度なのかってのが分からない。 みんなはどうやってる?
>>838 どうせ最終的には方向ベクトルにするんだろうから、角度で管理するんじゃなくて
最初から方向ベクトルで扱うのが一番無駄がない。
どうしても角度で扱いたければatan2で角度を求められる。
840 :
デフォルトの名無しさん :2011/10/07(金) 21:12:35.42
あたんつー
841 :
838 :2011/10/07(金) 21:39:32.58
>>839 >>840 ごめん、俺が余計な混乱してたみたいだ。 質問したかったのは、「DIJOYSTATE2のlXとlYの取り扱い方」だった。
デバッガでちまちま値調べたら分かったよ。
ふつうに
DIJOYSTATE2 joyState;
if( FAILED( directInputDevice[controller]->GetDeviceState( sizeof( DIJOYSTATE2 ), &joyState ) ) )
{
return false;
}
data->dir = atan2( ( float )joyState.lY, ( float )joyState.lX );
でぬるぬるです。
なんでこんな簡単なことがすぐに分からなかったんだろう。
本当にすみませんでしたorz
842 :
デフォルトの名無しさん :2011/10/08(土) 21:04:59.14
謝ったからゆるしてやるよ ありがたくおもいなさい
ぶひぃぃぃぃぃぃぃぃぃぃ
>>839 それじゃ3回転の2回転目が表現できないとか前後の話もよく読まず食いついてみる
うんやっぱり的外れだった(笑) 無視してくれ(笑)
今どき、角度なんて使わないよね。 ラジアンの時代だよ。
ラジアンは角度の単位なんだが、使わないとか何いってんのこの馬鹿?
みんな、当然自分でライブラリ作ってるよな? 関係ないけど、シューティングのオブジェクト管理にはリスト構造使うべきか? 面倒くさいしあんまり速くなりそうに思えないんだが。
恥ずかしいミスを指摘されるとネタとか言い出して恥の上塗りする奴っているよな
おれ汎用性持たせてmapだよ。スピードいるなら変えるけどな。 たしかlistよりmapの方が遅いけど、そんなに差はなかったよ。独自リストはしらん。
>>850 IDから検索してアクセスしたい時にリストじゃおそい
ベクタかマップを使いたいところだろう
>>849 ネタはネタでも、自分は馬鹿ですという本気の自虐ネタは哀れすぎるよ。
856 :
デフォルトの名無しさん :2011/10/09(日) 17:16:49.71
保守あげ
>>850 俺ライブラリは作ってるけど、STGのオブジェクトは普通に配列使って
検索も逐一検索なんだけど…
コンテナ使うべきかな
>>857 パフォーマンスが問題ないならそれでOKだね。
分かり易いのが一番だよ。
DirectXと関係あんのか、この話
DirectXはゲームで使われることが多い シューティングはゲームの1ジャンルである したがってDirectXとシューティングには関係があるので語ってよい
うむ。
>>860 その論法だと、時々やってくるDirectXを使ったゲームが動かないと質問しにくる馬鹿もOKだということになるぞ。
DirectXのAPIが絡まない汎用的な実装の話は完全にスレ違いだ。
じゃあプログラマブルシェーダ内の配列をどう管理するかの話題にしよう それならいいだろ??
864 :
デフォルトの名無しさん :2011/10/10(月) 00:57:19.64
うむ。
>>862 お前がこの世から消えたらすべて丸く収まるんじゃね
DirectX11って普及するのかな。またすぐに12とかが出てくるんじゃないかと思って。 XP+DirectX9でしばらく様子見がFA?
自分が何をターゲットにするか次第なんだからFAなど無い。 前提条件も示さずに他人に意見を求めるな。
どうせゲームが完成する頃にはWindows8+directX13位になってるから気にするな
DirectX11、興味はあるんだけど、いかんせん情報が少なくて手が出せないでいる・・・ DirectX9のときはXファイルサポートとか、アニメーション関数とかあって重宝したのもあるし。 自分でアニメーション組んだら、糞遅くて凹んだし orz
割りとマジでUnityでいいとおもう。 自分でいじるのは勉強か研究くらいじゃん?
>>872 まあ、最終的に売ることを考えた場合だよね
別にそうでないならどのゲームエンジンも触ってみることをオススメしたいね
とりあえずDirectXを素で叩くことはなさそうってのは同意
何を作るかにもよると思うけど。 テトリス作るのにわざわざゲームエンジン使うのも馬鹿らしい品
3Dゲームエンジンまともに作れる会社ってどれくらいの規模なんだろう 日本では、カプのMTやスクエニクラスだけかな? 零細会社がやるなら勉強でdirect使って 結局は有名どこのエンジン使うことになる? directx勉強する意味合いってなに?
Windowsのアプリで描写が無駄に綺麗になる
>>874 そうは思わないな
メニューとかモデルで作ったらアニメーションでカーソル移動とか楽になるわけだし
そっから作るとなると結構大変じゃないか?
アニメーションサポートするだけでも
うん、けっこう馬鹿にならないと思うし、簡単なゲームでも意義はあると思うなぁ。
面白いな最近のゆとりは
過疎スレで連投すると自演に見えるから萎える
DirectXスレでDirectX否定ってw
DirectXはあまりに仕様を変えすぎるんだよ DirectX9SDKだけでもいったいいくつバージョンがあるんだよ しかもコンパイル互換性なしとかもうね っていう状態なのに10だの11だのポンポン出すんじゃねーよ ってことを考えると、とてもじゃないが相手してらんないので ゲームエンジンを使うのが正解だろう
COMなんだから自分の使いやすいバージョンつかってりゃいいんじゃねぇの
>>883 イミフ
そのゲームエンジンの使っているSDKはどうなるんだよ。
と思ったが。使うだけでゲームエンジンのソースは面倒みない人か。
ゲームを作るのが目的なので ゲイツのアナルのお世話はゲームエンジン作者に任せたいんですよ。 DXのバージョンが変わるごとに、毎回毎回デバイスロストの処理とか D3Dデバイスの生成とか同じことを何回も何回も同じコードを書いてる気がするわ。
ゲームエンジンのライセンス買うのは、 エンジンの機能を使いたいというのもあるだろうが、 使うだけで面倒みるのがいやだからだというのもあると思うが。
もうデバイスロストの処理なんて必要ないから。
あれ?DirectX11あたりからロストってしにくくなったんじゃねーの?
890 :
889 :2011/10/10(月) 17:30:19.88
あ、かぶった
DirectXのSDKはすでに1年以上更新されていないが、 ボンボン出すとか、デバイスロストとか、旧世代の知識で、 その後に何の勉強もしないヤツほど、文句たらたらなんだよね。
仕方ないよXPがまだまだ現役でDirectX9の知識で止まってる人実際多いし
>>891 現実問題、XPを切り捨てることは到底できないから
XPでDX11を出してもらわないとね
デバイスロストがしにくくなったのは知らんかったわ。
だがトライアングル1つ出すまでのコードはまた作り直しなんだろうし、
その他排他モードとウィンドウモードでケアするべき項目も違うんだろう。
知識が風化しているのに文句だけ一著前。 コンパイル云々ではDirectX9時代のソース変更が必要な仕様変更は、ID3DXSpriteぐらいで、 引っかかったのは、そんな使わなくていいものを使っていた、ごく一部の馬鹿だけだし。
〜だろう ってDirectX11調べずに発言してたのかよ
DirectX9時代はDirectX本体ではなく、D3DXのあくまで補助ライブラリのアップデートをしていただけなんだから、 嫌なら使わなければいいだけの話だったのにね。 自分の知識不足のせいなのに、いったい何に文句を付けているんだよ?
つまり印象だけなのね。
つか、D3DXなんて使わないからDirectX9でも問題ないけど?
結局DirectX11時代を迎えてMSのとった対策は、 補助ライブラリを必要最小限に削って、アップデートをしない方向に。 これでサービスで付けていた補助ライブラリに文句を付ける馬鹿をシャットアウトしたんだよ。
うん、まだまともに調べてないよ。 また仕様がコロッコロ変わるなら調べる必要もないから。 現にDX10はビルドを1回もしたことがないがDX11になってしまった。 DX11はいつまでもつのかね。
ハードウェアテッセレーションをエロゲで使いたいとか
>>900 うんうんそうだよねDirectX9でいいよね新しい事覚えるの大変だもんね
>>900 だから一年以上変わってないんだって。
不勉強の言い訳をしている暇があったら、その化石化した知識を何とかしろ。
>>902 同じことしかできないのに
やり方が変わってるっていうのについていけないわ。
>>903 XPユーザーが有意に減少するまであと最低5年はかかるだろうから
それまで変わらないなら、おべんきょう、してもいいよ。
DirectXに限らず日進月歩で変わっていくIT分野で、 どうせ仕様が変わるからといって勉強しないヤツは、 どう考えても使い物にならない。
だからここで管を巻いて文句言ってるんだろうが
>>904 君が勉強しないのは勝手だ。
ただし古い知識で的を射ていない文句を、
自分の日記以外の書き込むのは恥ずかしいからやめた方がいい。
DX3〜9までは文句をいいつつ、ついてきたけど、 今回はOSの非サポートだからな。さすがについていく気にならない。 XPが本当に終わったらまじめにLinuxにいくと思う。 DX10からXファイルサポートがろくになくなったようだし、 なんの未練もないよな。
こいつ自分で作るという決定的なスタンスが欠落してる
それなりの助成金がもらえりゃDX11でもいいけどね
X-Fileも複雑なパーサを通さなくてもいいように簡略化した形式にして読み込む方法もサポートされているんだけどね。 コンバータまでついているし。 知りもしないで文句だけいうヤツって、本当に救いようが無い。
大学生と厨二病の議論ほどかみ合ってないな
古い知識とか化石とか言うけど、 お前らが言ってる内容ってまるで Windows7のコンパネの内容がXPとこれだけ違いますよw みたいな”超ウルトラハイパーアメージングマッシブにくっだらねえ”話に聞こえるんだよ。 そんなの知りたくもないわ。 俺はゲームを作りたいだけなのだ。
そのくだらない話にかみついてるお前もくだらないな
DirectX10とか11とかにするからぱっとみ後方互換性がありそうでダメなんだよ 互換性なんか知ったこっちゃねぇっていう意思をきちんと表現した名前にしないと
9から11にAPIを移行するのに、そんな手間はかからなかったけどね。 どちらかというとxnamath用に演算部分を変更する部分に時間をかけた。
>>911 それの詳細載ってるサイト教えて〜!
>>916 勇気付けられる。
がんばって移行してみるか・・・
サイトも何もヘルプに載っている上に日本語化済み。
エフェクトライブラリをまた標準サポートしてほしいな。使いやすくして。
ごく一部の人間にはスルーする力がないのはよくわかった。
>>920 エフェクトライブラリはミドルウェアの仕事のような気もする。
それがXNAじゃないの?
エフェクトにD3DCreateEffectFromFile()を使えばいいって言うのが調べたら出たんだけど よーわからん!なんか特定の拡張子のファイルを読み込めるのかな
924 :
923 :2011/10/11(火) 10:40:26.52
調べたらシェーダを使うプログラムだった .fxファイルがシェーダですね! お手数おかけしました!
925 :
デフォルトの名無しさん :2011/10/11(火) 23:55:04.41
教えてエロい人。 ウィンドウ(フルスクリーンでない) + C++ + WIN32API + DirectX のプログラムで、 ウィンドウをデスクトップからはみ出るように動かすと、 はみ出た無効領域が再描画されない。ドラッグを解除すると再描画される。 どうすればドラッグ中でも再描画される? 他のウィンドウを重ねたり一度最小化したりするときは大丈夫。 ドラッグでディスプレイからはみ出させたときだけダメ。
926 :
925 :2011/10/11(火) 23:58:17.70
sage忘れすまん。 描画周りの処理はこんな感じ。 while(1) { if(PeekMessage(&Message, NULL, 0, 0, PM_REMOVE)) { // メッセージあり. if(Message.message == WM_QUIT) { break; } DispatchMessage(&Message); } else { // メッセージなし. アイドル. if(APPLICATION.MainLoop() == false) { break; } } } よろ。
ウィンドウプロシージャでWM_PAINTを捉まえてPresent()すればいい
928 :
925 :2011/10/12(水) 01:02:08.92
2枚のモニタでデバイスが異なっていたら当然そうなるし、 異なっているかもと言うことでするーしても当然そうなる。 ちゃんと2つのデバイスをつくって、個々で描画しないとだめじゃね? うまくいくようになったら、最大4つのデバイスをまたぐことになるので それも検討して下さい。
D&D中の描画が崩れて困るような状況が思い浮かばない
DirectX使うのにWM_PAINTでごにょごにょするとかあほだろ
931はゲーム用途以外頭になさそうだな
ドラッグ中のメッセージってNCHITTESTだっけ? その間に描画処理をかませればいい気がする。 でも、描画処理が重い時は動作が詰まるよ。
┌┴───────────────┴┐ │ フジテレビ・電通合同ネトウヨ対策本部 │ └─────────────────┘ カタカタ ∧_∧ カタカタ ∧_∧ カタカタ∧_∧ < `∀´ > ネトウヨ涙目w < `∀´ > デモナンカムイミw< `∀´ > 花王ハ、カンケイナイダロウ _| ̄ ̄||_)____ _| ̄ ̄||_)____ ___| ̄ ̄||_)___ バッカジャネーノ、ネットウヨw /旦|――||// /| / .|――|l// /| / |――|l// /| | ̄ ̄ ̄ ̄ ̄| ̄| . | | ̄ ̄ ̄ ̄ ̄| ̄| . | | ̄ ̄ ̄ ̄ ̄| ̄| . | |_____|三|/ |_____|三|/ |_____|三|/ カタカタ ∧_∧ カタカタ∧_∧ カタカタ∧_∧ < `∀´ >k-popサイコー< `∀´ > フバイナンカムイミw< `∀´ > イヤナラミルナキャイイダケ _| ̄ ̄||_)____ _| ̄ ̄||_)____ ___| ̄ ̄||_)___ コウサクインナンカ、イルワケナイダロウw /旦|――||// /| / .|――|l// /| /. |――|l// /| | ̄ ̄ ̄ ̄ ̄| ̄| . | | ̄ ̄ ̄ ̄ ̄| ̄| . | | ̄ ̄ ̄ ̄ ̄| ̄| . | |_____|三|/ |_____|三|/ |_____|三|/
描画が重いっつっても10FPSくらいで動いてるならウィンドウ操作も許容できるレベルじゃない? そして、それ以下なら描画も死んでるし、ウィンドウ操作が糞でも諦めるだろ
936 :
デフォルトの名無しさん :2011/10/13(木) 01:03:31.32
描画は別スレッドにすれば良いだろ低脳
10FPSとかさすがにゲームとして成立しにくそうだ 標準で60FPS欲しくて、30FPSが最低ラインって感じ。
ジャンル次第かと。
>>937 >>938 ウィンドウをドラッグして移動させている最中の話だぞ?
ゲームとして成立するもクソもない気がするんだけど、
それで成立しないってどんなゲームなんだよw
>>931 DXUTではWM_PAINTでごにょごにょしてるみたいだけど
といってもこういう時用みたいだけど
ドラッグ時に描画とかうざすぎるだろ
速度とか気になってきたので、独自フォーマットに挑戦しようと思ったのですが、 モデリング後のデータを独自形式に変換するのに、どの方法が一般的に使われているのでしょうか? 1・Xファイルを読み取り、独自形式に変換する 2・モデリングソフトのファイルフォーマットを入手or解析して、それを独自形式に変換する 3・モデリングソフトのプラグイン機能で、独自フォーマットを吐き出すDLLを作成する
このあたりは自分も気になる。 是非教えてほしい。
>942 一般的な方法は知らないが 俺は3だね。モデリングソフトのSDK使うのが一番簡単。
状況によるんじゃないの モデルだけなら、1が汎用的だし アニメーション、物理なども含めるなら3だろうし 2は現実的ではないな
俺はColladaプラグインをカスタムしたので出力して 更にそのCollada ファイルから自作モデルとモーションにコンバートしてる 例で言うところの1と3の両方の変形だね Xファイルはあんま知らないけどCollada なら中身ただのXMLだしいろんなカスタム情報のせれるから便利 で2はちょっとおすすめしないかな バイナリ解析とか好きだけどエクスポートプラグイン作れるならそっちでやった方がいいと思う ツールのバージョンアップにも耐えれるし
Sprite使ってて時間がたつと画面がぐちゃぐちゃになってくるんだけど メモリリークかグラフィックカードが壊れてるのか何なのかわからないけど Windows7でディスプレイドライバをリセットしましたとかって出るじゃない? あれって自発的にリセットしたり出来るのかな? いちいち再起動するのがめんどくさい
>>947 まずそのふざけたバグを直せ。
原因なんてデバッグランタイム使えば一瞬でわかるだろ。
いやそれがよくわからん メモリリークかと思ってBeginSceneでSpriteをCreateして EndSceneでReleaseするようにして確実にリリースするようにしてみたけど同じなんだよね あとはテクスチャを1枚それでDrawしてるだけ テクスチャはプログラム起動時に読み込んでるだけだから仮にメモリリークしててもあんま影響ないだろうし グラフィックカードが壊れてるのかドライバのバグかなんかだと思うんだけど
馬鹿ほど自分のバグを疑わず、他人のせいにする。 他のサンプルやプログラムで同じ現象が起こっていないのなら、お前のバグだ。
だからデバッグランタイムつかえよ。
理由があってデバッグは使えない
いみがわからん
どんな理由だ?
デバッガのバグで、意味不明なエラーが出る
は? コンパネから設定切り替えるだけだぞ。
958 :
947 :2011/10/14(金) 17:14:51.64
DirectXはほとんど知らないんだけど、メモリリークしたくらいでBSOD出たりするもん? ハード的におかしいよね?
>>958 まずはコード晒せよ
むしろどうやったらBSOD出るのか気になる
>>958 お前のコードがおかしいと言っているだろう。
本当に人の話を聞かない奴だな。
ブルースクリーンって未だに出るものなのか 最後に見たのはWin98時代だ
ウンコなソースかいてるとドライバクラッシュはなくもない
ドライバが問題ないとき、きれいなソースで落ちたことは一度もない ドライバが腐ってると、きれいなソースでも落ちる。 その時は市販ゲームでもなんでも落ちる。
ハード問題でも落ちるぞ、とても不確定に起るハード問題もある。 と言うか俺のノートがそれ。たまに落ちる原因はたぶんハード。
ドライバもいっしょに固まるってことだろ 俺もあるな 頻繁に色数変えまくってたら画面が赤っぽく変色しちゃったことある 電源入れなおして起動するとだんだん赤くなっていって最期には真っ赤になってなんにも見えなくなっちゃうw 次の日になったら直ってた 後、負荷の高いシェーダを長時間連続運転してるとグラボからおかしい音がずっとなりやまないときがあった これも次の日になったら直ってた
なんというか、このスレって馬鹿なレスほど積極的にかまってやるよな。
自転車置き場の議論ですよ
968 :
デフォルトの名無しさん :2011/10/14(金) 23:59:12.03
もとの質問者はデバッグランタイムをデバッガーと勘違いしている。
でも俺も Win7 でデバッグランタイムが動かないから使ってない 古い SDK 使ってる俺が悪いんだけどな
DXUTをDirect3D11用に書き換えてみようかとCtrl+Shift+Hをポチポチやっていたけど俺レベルじゃ無理だなこれ。
stateblockのようなD3D10とD3D11の根本的な違い(?)も絡んできるみたいで、ここ(↓)だけじゃカバーしきれない。
Direct3D 11 への移行
http://msdn.microsoft.com/ja-jp/library/ee416254 (v=vs.85).aspx
そもそも俺ができるくらいならとっくにMicrosoftから出てそう。大人しく次回のSDKを期待するしかないかな。
>>971 うちではリファレンスラスタライザでしか使えないから11は全く手を付けてないけど、
11のサンプルにもDXUTって入ってない?
973 :
971 :2011/10/16(日) 15:12:14.11
>>972 ありがとうございます!!!
あああ…俺アホス…入ってますねDXUT11として!!
Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT11 に思いっきり入ってました!
サンプルのうちTutorialしか見てなくて、Sample BrowserでD3D11絞り込んでDXUTを検索しても
ヒットしなかったのでてっきりないものだと諦めていました。が、思いっきりD3D11の各種サンプルでも使われてますね…
お手間を取らせてすみません、ありがとうございますすごく助かりました!
>>972 11にREFなど存在しないんだが、いったい何を言っているんだ?
>>974 ttp://msdn.microsoft.com/ja-jp/library/ee417659 (v=vs.85).aspx
D3D_DRIVER_TYPE_REFERENCE
リファレンス ドライバー。すべての Direct3D 機能をサポートするソフトウェア実装です。
リファレンス ドライバーは速度より精度を目的に設計されているため、低速ながら高精度です。
このドライバーのラスタライザー部分は、可能であれば専用の CPU 命令を使用しますが、製品版アプリケーションでの使用は想定されていません。
機能のテスト、デモ、デバッグ、または他のドライバーのバグの検証にのみ使用してください。
このドライバーは DirectX SDK によってインストールされます。
このドライバーは、REF ドライバー、リファレンス ドライバー、またはリファレンス ラスタライザーと呼ばれることもあります。
これ違うの?
円や四角などを大量に描写するとブラシやペンで指定した色が付かなくなったりすることはあるのでしょうか?
ブラシ?ペン?
とても初歩的なでわかりづらい質問で申し訳無いのですが 「ゲームプログラマになる前に覚えておきたい技術」という本のサンプルコードが動きません 本に書いてある通りに設定しても実行しようとすると意味の分からないエラーコードが16個ほど出てきます 同じ症状を経験した事のある方がいらっしゃいましたら解決方法を教えて頂けないでしょうか
わかりづらいと自覚してるならちゃんと説明する努力くらいしたらどうだ?
>>979 出てきたエラーコードを一行一行読んで対応すればできますよ
そうはいかない場合もあるけど 初心者にはキツイんじゃないだろか? 初心者が読む本でもないしなにか別の本を探してみたらどうだろうか?
「意味の分からないエラーコード」だけで読んだ人が理解できると考えるような頭じゃ 本を変えたって結果は一緒だろ
まあ、とりあえずサンプルコードでエラーが出てくるのは回避してやれって感じだが・・・w しかし、いきなり分厚い本かったな なにかチュートリアル形式でその番号順に進めていくだけで何か作れるような本にしとけよ
今回は諦めます、失礼しました
つーかマルチポストだろこいつ スレ違いなのにいろんなとこで同じ質問してるぞ
>>979 あの本はvc10を考慮してない気がするので、サンプルは諦めるんだ。
で、コンソールでもいいのでSinとCosでアフィン変換書いて点を回してみるんだ。
色々わかるから。
回転拡大縮小は男のロマンだ!(キリッ
ありがとうございます ポリゴンの一枚絵くらいなら出せるのでサンプルコードを参考に自力で作りながら勉強してみます
vs2010用のをネットでダウロードできるじゃない ここでsin cosアフィン変換が突然でてくる意味はわからんけど
>>989 荷物くんとか爆弾娘とかは、画面見て逆算すれば割りと作れるもんだ。効率は置いといて・・・。
しかし、拡大回転縮小は知らなければ推測では絶対わからん。
なので、アフィン変換楽しいのでやってみれと書いたのだぁ。
三角形回転すればシューティングとか夢膨らむよ。
っていうか、VC10用のサンプル出てたのか。
>>990 座標変換なんて理系なら必修だろ
大学1年で間違いなく一度は証明させられる
工業高校卒で数2までしかやってない俺涙目。 しかも証明問題で正解したことがないっていう・・・。Orz あー、そだ。そろそろ次スレの季節じゃないか?
ん?回転くらいなら高校数学の範疇じゃね?? 数II + 数C かな? 三角関数は一番好きだったとこだから、Direct3Dも楽しいよ。
996 :
923 :2011/10/19(水) 21:21:12.22
3次元の回転関数を高校でやってたら、その高校はとてつもない進学校だと言える 2次元の回転行列だったら普通
名前なおし忘れた死にたい
イキロ!!
終了
1000なら来年DirectX12が出る
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。