【C++】 DirectX初心者質問スレ Part14 【C】at TECH
【C++】 DirectX初心者質問スレ Part14 【C】 - 暇つぶし2ch508:デフォルトの名無しさん
07/10/01 18:58:52
C:\Program Files\Microsoft DirectX SDK (August 2007)\Samples\C++\Direct3D\ConfigSystem\CardCaps.xls
から調べてみた。
April 2006時点のものらしいので、ドライバのアップデートで変わってるかもしれないことに注意。

[D3DPTEXTURECAPS_SQUAREONLY]
そんなカードは無い。

[pow2のみ]
Pixomatic, Permedia 3, Wildcat VP870, ViperII Z200, 315, Xabre, TNT 2

[conditional non-pow2]
Millennium G450, DeltaChrome, Volari Family, 865G, 945G, RADEON 7000, RADEON 7200, MOBILITY M9,
RADEON 8500, RADEON 9000, RADEON 9100 IGP, RADEON 9200, MOBILITY FIRE GL, RADEON 9600,
RADEON 9700 , RADEON 9800, X300, X700, X800 , X850, X1800, GeForce 2, GeForce4 MX, GeForce3 Ti500,
GeForce4 Ti4200, GeForce FX 5200, GeForce FX 5900

[unconditional non-pow2]
Parhelia, GeForce 6200, GeForce 6800, GeForce 7800, Quadro FX 4400

>507
[pow2のみ]に挙げた7つは制限を持つらしい。
まあいまさら考慮する必要がないと思うけど。

509:デフォルトの名無しさん
07/10/01 18:59:16
二乗制限はまだ結構あるっぽい
正方形制限は今時ほぼなし

って事で大丈夫?

510:デフォルトの名無しさん
07/10/01 19:07:25
>>509
pow2 textureのみサポートはほぼ無くなったけど
条件付きnon-pow2テクスチャサポートの「条件」の部分を忘れやすいので注意という感じ。

A device that exposes this capability can use such a texture if all of the following requirements are met.
・The texture addressing mode for the texture stage is set to D3DTADDRESS_CLAMP.
・Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
・Mipmapping is not in use (use magnification filter only).
・Texture formats must not be D3DFMT_DXT1 through D3DFMT_DXT5.

ある程度大規模になってくるとDXTはどうしても使いたくなるので
商用ゲームなんかでは2の累乗を前提としたライブラリにしてると思う。
個人とかデモ用途なら、上の条件を踏まなければたいてい大丈夫。

511:510
07/10/01 19:19:11
まあ大規模って言っても色々あるか。

とにかく条件付きnon-pow2テクスチャサポートのカードは去年の段階でも結構残ってる。
圧縮テクスチャとかミップマップを必須と思うなら
ライブラリレベルで2の累乗化を考慮しておいた方が良いよという感じ。
あと背景のテクスチャとかでテクスチャアドレッシングモードやラッピングモードを弄りたいという場合も
2の累乗化しておいた方が良い。

まあドキュメントにはダメって書いてあっても実際には動いちゃうケースもありそうな気はするけど。

そんな機能は使わんというのなら多分気にする必要はない。

512:デフォルトの名無しさん
07/10/01 20:29:03
でもどうせなら2の累乗にしておくのが速度的には無駄がない悪寒。
# いや、DirectXは詳しくはないんですがGPUのアーキテクチャ的にね

513:デフォルトの名無しさん
07/10/01 20:39:35
>>512
確かにテクスチャキャッシュは2の累乗を前提としている可能性はあるかもね。

とはいえいつも「気楽にやりたい派」と「厳格に行きたい派」の対立なので
必要な情報だけしめして後は各自に任せるでいいんじゃないかと。
ミップマップや圧縮テクスチャを使ったことないって人もいるだろうし。

514:デフォルトの名無しさん
07/10/01 21:23:07
そんなこと言っても、自作ゲームの一枚絵を256x256で分割してる人今でもいるんじゃね?
手挙げてみ。

515:デフォルトの名無しさん
07/10/01 21:48:13
まぁでも普通はきりのいい2の累乗で描くだろうからな。
で、正方形でなくてもいいってなら
とくに制限は無いようなもんか。

516:デフォルトの名無しさん
07/10/02 00:27:31
Error: 外部シンボル 'DirectDrawCreateEx' が未解決
と、メイク時表示されます。
window.hとddraw.hをインクルードしているんですが何が不備なんでしょうか?
BCC devで、Borlandコンパイラ使っています。

517:デフォルトの名無しさん
07/10/02 00:34:52
>>516
どうみてもリンク時のエラーです。本当にあ(ry

リンカにddraw.libを参照させろ。あとdxguid.libも必要になりそうな予感。
BCCなんぞしらんから、方法は自分で調べれ。

518:デフォルトの名無しさん
07/10/02 07:24:21
最近
DirectX以前の問題の質問が多いな

519:デフォルトの名無しさん
07/10/02 08:29:34
bcc32用DirectX SDK
URLリンク(www.clootie.ru)

520:デフォルトの名無しさん
07/10/02 08:32:15
インポートライブラリだけならimplibで生成できるけどD3DXとかのスタティックライブラリは上の使わないとbcc単独では無理
(VC++とBCBにobjの互換性がない)

521:デフォルトの名無しさん
07/10/02 09:25:52
>>519
上のやつ以外にdirectX SDKも必要


522:デフォルトの名無しさん
07/10/02 09:56:15
ゲーム画面のジャギーを消したいんで、CreateDeviceのとき
D3DPRESENT_PARAMETERDの”MultiSampleType”に
D3DMULTISAMPLE_2_SAMPLESを設定してるんですが、
UI用に2Dの変換済みポリを描画するときにはアンチがかかってほしくないです。

こういうときはどうしたらいいでしょうか?

523:デフォルトの名無しさん
07/10/02 19:07:22
MultiSampleTypeは随時切り替えられるようなメソッドってないですよね?

524:デフォルトの名無しさん
07/10/02 19:24:55
D3DRS_MULTISAMPLEANTIALIAS


525:デフォルトの名無しさん
07/10/02 22:47:17
C++でdirectx9を使っている素人です。

1 バックバッファクリア
2 予めファイルから読み込んでいた小さな正方形テクスチャをバックバッファに並べてマップを作る
3 予めファイルから読み込んでいたプレイヤー用のテクスチャをマップ上に描画
4 バックバッファをサーフェイスに転送し表示

1~4を繰り返す中で3の表示位置をずらすことで移動を表現しているのですが、
2を毎回行うためやたら処理が遅くなります。
そこで予め大きなテクスチャに小さなテクスチャを並べてマップを作っておいてそれを2で
バックバッファに貼り付けようと思うのですが方法が見つからず困ってます。

D3DXCreateTextureで作成したテクスチャにD3DXCreateTextureFromFileで読み込んだ
テクスチャを並べるにはどうすればよいのでしょうか?
LockRectして描画は思っているのとは違う気がします・・・

526:デフォルトの名無しさん
07/10/02 22:55:32
>>525
なんでわざわざロード時に作る必要あんの?
HDDなんて広大なんだから、あらかじめフォトショップでくっつけておけよ

527:525
07/10/02 23:07:38
>>526
ランダム要素を取り入れるため動的に生成できたらなと^^;
でかいマップを作って部分ずつ表示したほうが楽でしょうか

528:デフォルトの名無しさん
07/10/02 23:09:14
>>525
つーか、それってなんかおかしくね?
どんだけマップ並べたらパフォーマンスが落ちるんだよw

テクスチャを1枚描画するたびに
BeginSceneとEndSeneを毎回読んでるとか
座標を更新するのに
毎回ロックして直接書き込んでるとか
そういうアホな落ちじゃねぇの?

529:デフォルトの名無しさん
07/10/02 23:20:38
つーか525ってRPGでマップ描画するときの定石じゃね?

530:デフォルトの名無しさん
07/10/02 23:26:09
>>525
いまどき何も考えずベタにチップ描画しても、たいして負荷があるとは思えないけど。
2をどうやってるのか描くんだ。たぶん犯人はそこだ

531:525
07/10/02 23:36:20
g_d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0.0, 0);
g_d3ddev->BeginScene();
if(!g_d3dsp)
{
 D3DXCreateSprite(g_d3ddev, &g_d3dsp);
}
g_d3dsp->Begin(NULL);

// ここでマップを描いてる(つもり)
for(int y = 0 ; y < SCREEN_GRID_Y_MAX ; y++) {
 for(int x = 0 ; x < SCREEN_GRID_X_MAX ; x++) {
  RECT rc = {0, 0, 32, 32};
  D3DXVECTOR3 center(0, 0, 0);
  D3DXVECTOR3 pos((float)(x * GRID_WIDTH), (float)(y * GRID_HEIGHT), 0);
  g_d3dsp->Draw(g_map_texture, &rc, ¢er, &pos, 0xFFFFFFFF);
 }
}

// ここでプレイヤーを描いてる(少しずつ動かす)
RECT rc = {0, 0, 32, 32};
D3DXVECTOR3 center(0, 0, 0);
D3DXVECTOR3 pos(hoge_x, hoge_y, 0);
g_d3dsp->Draw(g_player_texture, &rc, ¢er, &pos, 0xFFFFFFFF);

g_d3dsp->End();
g_d3ddev->EndScene();
g_d3ddev->Present(NULL, NULL, NULL, NULL);

>>529ですです。win32apiでHDCとかでガリガリ書いたことがあるのですがDirectXならもっと簡単にできるのではと。

晒すけど怒らないでね♥

532:デフォルトの名無しさん
07/10/02 23:40:47
なんで毎回D3DXCreateSpriteしてるん?

533:デフォルトの名無しさん
07/10/02 23:41:20
テクスチャ座標を適切に設定した頂点リストを作れば一発で描画できるだろ。

534:デフォルトの名無しさん
07/10/02 23:42:44
さげ

535:デフォルトの名無しさん
07/10/02 23:45:38
チュートリアルをすっ飛ばしてID3DXSpriteなんか使うから余計なところで苦労することになる。

536:デフォルトの名無しさん
07/10/02 23:51:03
>>532毎回じゃないっす。ウィンドウ最小化して戻したときにResetした時ぐらいです。

見よう見まねでよくわかってないです・・・わかるように教えれ・・・。

537:デフォルトの名無しさん
07/10/03 00:01:39
>>536
5行目!おまえは自分のソースもよめねーのか

538:デフォルトの名無しさん
07/10/03 00:25:19
ポインタがnullだったらになっているから毎回やっているわけではないだろう。

とりあえずはID3DXSpriteを使うのをやめれば解決するだけの話。

539:デフォルトの名無しさん
07/10/03 00:43:55
>>531
これ、解像度1024x768?
だったら

1024/32で32
768/32で24
32x24で768回DrawPrimitive呼んでるからこれやると遅くなるよ

あらかじめフォトショップでチップを配置してマップにしろ
それかロード時にチップからチップEX(極小チップを
もうちょっとまとめた単位、理解できる?分子→原子→中性子みたいな関係だw)
テクスチャを作成(これはできるよな?)

仕組みがゲームの仕様に食い込んでるから
もし仕事でやってるなら企画とデザイナに相談しないと駄目だな
速度に問題がでなくてかつ汎用性を維持した程度にチップをある程度まとめなきゃ駄目だろ
極小単位のチップって絵的な問題だろ?でもマップの汎用性の単位のチップはもっとでかいだろ?
そこの仕様をカッキリきらんとどうにも身動きとれないね
難しいのはプログラムじゃなくて仕様がふにゃふにゃだからだな

540:525
07/10/03 01:01:27
>>539
画面いっぱい使っているわけではないので400回くらいです。
個人的に製作してるので仕事ではないです。

今までずっと変態御用達エディタでガリガリC書いてコマンドラインでコンパイルしてたんですが、
VisualC++とDirectXでゲームでも作って見ようかと思ったのがきっかけです。
CとWin32APIでガリガリするよりはよほど建設的だと感じますが、わけわからんw

頂点とかで混乱してたところにspriteなんて便利そうななもの見つけたばっかりにとんだ・・・
現在spriteを使わないように書き換えています。
なかなかエラーが取れない;

541:デフォルトの名無しさん
07/10/03 01:03:48
DirectSoundでの効果音の管理など、いろいろな場所で読み込みや
再生の関数を使う必要がある場合、クラスにまとめず、ばらばらの関数として
使用できる設計にするべきなのでしょうか?何かいい方法があれば教えてください

542:デフォルトの名無しさん
07/10/03 01:23:10
Visual C++2005で
URLリンク(www.h2.dion.ne.jp)
のコードをコンパイルしたらエラーがいっぱいでてくるんですが・・・
最初に #include "stdafx.h" を、ソースに追加しましたか?とでて
そのとおりにしたら
識別子が足りないとか、型指定がありませんとか
どうすればいいのでしょうか?

543:デフォルトの名無しさん
07/10/03 01:35:35
古い情報を参照するのをやめるか、エラー事に自分で一つ一つ対処するか。

544:デフォルトの名無しさん
07/10/03 04:39:41
->Releaseで落ちちゃうってことはつまりどういうことですかね?

545:デフォルトの名無しさん
07/10/03 07:03:09
インタフェースがすでに存在していないとか

546:デフォルトの名無しさん
07/10/03 07:25:06
インタフェースがまだ存在していないとか

547:デフォルトの名無しさん
07/10/03 07:41:23
デバッグで見てみたらIUnknownの中の
__vfptrの中が(エラーです:式を評価できません)ってなってました
これはつまり・・・>>545>>546ということでしょうか?


548:デフォルトの名無しさん
07/10/03 07:51:24
つーか、
なにが、いつ、どうやって落ちるのか
書いてもらわんとわかんね

549:デフォルトの名無しさん
07/10/03 09:09:45
LPDIRECTSOUNDBUFFER8のリリース時になります
ちゃんとこれで音も鳴らせるんですが、終了時にまとめて解放するところで引っかかります
エラーメッセージはこんなんです↓
(実行ファイル名) の 0x0....... でハンドルされていない例外が発生しました:
0x0.......: 場所 0x0....... を読み込み中にアクセス違反が発生しました

550:デフォルトの名無しさん
07/10/03 12:21:15
デバッカが使えるなら
いつまでそのポインタが有効で
いつからそのポインタが無効になってるかわかるんじゃねえの?

551:デフォルトの名無しさん
07/10/03 12:36:51
「どこで」解放しようとしてるかも重要かもね

クラスのデストラクタとか
コールバックとか別スレッドで解放しようとすると
設計が悪いと無効なポインタ場合もあるし

552:525
07/10/03 14:06:36
あれからspriteを使うのをやめて
SetFVF SetTexture DrawPrimitiveUp
を使って表示してみましたが描画は遅いままでした。
一枚絵にしても遅い。
んで、VMwareから出して実行したところ早い早いw
原因はVMwareです。
どうもお騒がせしました_| ̄|○

553:デフォルトの名無しさん
07/10/03 14:35:39
>>552
氏ね

554:デフォルトの名無しさん
07/10/03 17:06:35
あらかじめ書いとく

>>552の人気に嫉妬

555:デフォルトの名無しさん
07/10/03 18:52:21
誰か、D3DXMatrixTranslationとSetTransformをわかりやすくオレに教えてーー!!。



556:デフォルトの名無しさん
07/10/03 19:11:00
>>555
俺が教えて欲しいよ!!ばーか!!!

557:デフォルトの名無しさん
07/10/03 19:12:09
っ 線形代数の教科書

558:デフォルトの名無しさん
07/10/03 21:24:02
>>555
平行移動用の4x4行列を作るのにD3DXMatrixTranslationなんて要らない。
シェーダで組むからSetTransformも要らない。


559:デフォルトの名無しさん
07/10/03 21:29:30
初心者が自分の覚えたところまでの復習のついでに立ち上げたような
糞みたいな入門サイトでも読んでるのか

560:デフォルトの名無しさん
07/10/04 00:43:33
いままで頑張ってきたけどもう無理
ごめんみんな、俺ライブラリ使います

561:デフォルトの名無しさん
07/10/04 06:14:18
>>559
それ俺のサイトw

562:デフォルトの名無しさん
07/10/04 21:24:23
ピクセルの輝度値をもとに処理をかけたいのですが、この場合、各ピクセルに対し
RGB→YUV変換(Yのみ)の計算を施さないといけないのでしょうか?
それとも、もっと高速に変換してくれるDirectXのAPIがあったりするんでしょうか?
よろしくお願いします。

563:デフォルトの名無しさん
07/10/05 01:00:34
>>562
DirectXそのものにはYUVはサーフェイスの確保とか簡単なことしかサポートしてないし、現状だとDX9だけしかサポートしてない。
VistaならDXVA2とDX9を組み合わせると良いかもね。


564:デフォルトの名無しさん
07/10/05 11:06:31
HLSLでnoise関数が使えませんというか使うとコンパイルが通りません。
こちらのページでは普通に使えそうに書かれているのですが、
URLリンク(msdn2.microsoft.com)

こちらのページではnot yet implimentedとなっています。
URLリンク(msdn2.microsoft.com)

やっぱり使えないのでしょうか。同等の事を行う一番手っ取り早い方法はないでしょうか。

565:デフォルトの名無しさん
07/10/05 17:51:16
DirectShowで再生してる動画の上にテキストを置きたいんですけど(ニコニコ動画みたいな感じに)
普通に再生している動画をSetWindowPositionでウィンドウに表示させて、そのウィンドウの子ウィンドウとして
スタティックコントロールを動画の上に置こうとすると、動画の下に隠れてしまいます。
WS_EX_TOPMOSTを指定しても隠れてしまいました。

そこで、SetWindowPositionでウィンドウに動画を表示させるのをやめて
グラバフィルタでフレームを取得して、フレームを取得するごとに呼ばれる
コールバック関数内で取得したフレームをウィンドウに再描画するという形にしたところ
スタティックコントロールが上手く見えるようになりました。

しかし、今度は動画の再生が進むうちに動作が重くなってしまい、コマ飛びが起きるようになってしまいました。

コマ飛びが起きないような方法はないでしょうか。


566:デフォルトの名無しさん
07/10/05 18:50:01
DirectShowからイメージデータだけDIBで受け取って、後から合成すればいい。

567:デフォルトの名無しさん
07/10/06 20:44:59
Xファイルから読み込んだメッシュを徐々に透明にしていくにはどうしたらいいですか?

568:デフォルトの名無しさん
07/10/06 20:50:14
モルダーあなた疲れてるのよ

569:デフォルトの名無しさん
07/10/06 21:29:02
人体消失現象は絵空事ではない。

570:デフォルトの名無しさん
07/10/06 21:32:36
徐々だったら、アクトン・ベイビーのスタンド能力の発現でいける

571:デフォルトの名無しさん
07/10/07 00:14:41
おまえらちゃんとおもしろいこと言えんじゃん

572:toshi(485)
07/10/07 00:37:07
>>488
レス感謝。・・・回答頂いたのにレス遅くなりました。
2ちゃんアクセス規制に巻き込まれた・・・。
>プロジェクション変換はスクリーン座標に変換するものではなくビュー変換から射影座標に変換するためのもの
なるほど。スクリーン座標前の変換である「プロジェクション変換」って記述はNGですね。本では、射影座標とプロジェクション変換が一緒になっていた(^^;)。WEB見たら理解出来ました。
勉強になります。ありがとうございました。m(_ _)m
ちなみにhtmlの方も修正しました。なかなか勉強になっています。皆様に感謝です。
URLリンク(toshi104.odap.jp)

573:565
07/10/07 16:59:46
>>566
ありがとうございます。
後から合成すれば確かに負荷とかの問題はクリア出来そうなんですけど
最終的にはストリーミング動画再生を行いたいので、イメージデータを受け取って
すぐに再生したいんです…。

何か他に方法はないでしょうか・・・。

574:デフォルトの名無しさん
07/10/07 17:16:48
だからリアルタイムにイメージデータを取得して、合成したのをその場で再生すればいいだろ。
いったい何を言ってるんだ?

575:565
07/10/07 17:33:16
そうすると565で書いたグラバフィルタでフレームを取得して再生っていうのと変わらなくないですか?
合成っていう部分がよく分かっていないのでしょうか。

576:デフォルトの名無しさん
07/10/07 17:35:24
だから一度DIBに落として、DIB側で合成を終わらせた後にそれを描画するだけ。
余計なコントロールを使う必用は微塵もない。

577:565
07/10/07 18:06:41
度々申し訳ありません。

/*コールバックしてもらうための自前のクラス*/
class mySampleGrabber: public ISampleGrabberCB
{
public:
/*コンストラクタ*/
mySampleGrabber(){}
/*目的の関数*/
HRESULT STDMETHODCALLTYPE BufferCB(double SampleTime, BYTE *pBuffer, long BufferLen){
g_pImageBuffer = (long *)pBuffer; //画像データを受け取るバッファのポインタ
g_BufferSize = BufferLen; //画像データを受け取るバッファのサイズ
InvalidateRect(hWnd, NULL, FALSE) //メインウィンドウの再描画;
return S_OK;
}
/*使わないので実装なし*/
HRESULT STDMETHODCALLTYPE SampleCB(double SampleTime, IMediaSample *pSample){
return S_OK;
}
/*ここは本当は実装するべき?*/
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){
return S_OK;
}
STDMETHODIMP_(ULONG) AddRef(){
return S_OK;
}
STDMETHODIMP_(ULONG) Release(){
return S_OK;
}
}
このクラスのBufferCBメソッドをコールバック関数としてイメージを取得する度に呼び出しているんですけど
これだとDIBに落として合成を終わらせた後に描画するだけという処理にはならないのでしょうか。;

578:565
07/10/07 18:09:09
すみません、インデントがずれてしまいました。

/*コールバックしてもらうための自前のクラス*/
class mySampleGrabber: public ISampleGrabberCB
{
public:
/*コンストラクタ*/
mySampleGrabber(){}
/*目的の関数*/
HRESULT STDMETHODCALLTYPE BufferCB(double SampleTime, BYTE *pBuffer, long BufferLen){
g_pImageBuffer = (long *)pBuffer; //画像データを受け取るバッファのポインタ
g_BufferSize = BufferLen; //画像データを受け取るバッファのサイズ
InvalidateRect(hWnd, NULL, FALSE) //メインウィンドウの再描画;
return S_OK;
}
/*使わないので実装なし*/
HRESULT STDMETHODCALLTYPE SampleCB(double SampleTime, IMediaSample *pSample){
return S_OK;
}
/*ここは本当は実装するべき?*/
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){
return S_OK;
}
STDMETHODIMP_(ULONG) AddRef(){
return S_OK;
}
STDMETHODIMP_(ULONG) Release(){
return S_OK;
}
}


579:デフォルトの名無しさん
07/10/07 18:19:37
こっちで聞いた方がいいんじゃないかしら。

DirectShowと戦うスレ Part 2
スレリンク(tech板)

580:デフォルトの名無しさん
07/10/07 18:28:53
データを受け取るだけで何もしないのに表示されたらそれは魔法だ。

581:562
07/10/07 20:28:05
>>563
なるほど。
ありがとうございました。

582:デフォルトの名無しさん
07/10/10 13:24:52
すみません。質問です。
 DirectX 9.0をインストール仕様と努めましたがインストールできません。
どうすれば宜しいでしょうか?教えてください。

583:デフォルトの名無しさん
07/10/10 13:59:57
>>582
ランタイムの話ならすれ違い
あとOSくらいちゃんと正規品買おうな

584:デフォルトの名無しさん
07/10/10 14:57:30
>>582
DLページで「続行」か「Continue」って書いてあるボタン押せ。エラー出たら正規のWindows買え。

585:デフォルトの名無しさん
07/10/10 17:52:04
いや、いまなんだか知らんけどダウンロードセンターつながらないのよ
詳細が出てるかと俺もここに来た訳だがしばらく待ってみるか

586:デフォルトの名無しさん
07/10/10 19:22:57
割れ厨は消えればいいと思うよ

587:デフォルトの名無しさん
07/10/10 21:28:04
OS割れるとか愚かすぎる

588:デフォルトの名無しさん
07/10/10 22:19:37


589:デフォルトの名無しさん
07/10/10 22:38:17
URLリンク(aol.okwave.jp)
これか?

590:デフォルトの名無しさん
07/10/12 01:47:53
DirectXのサンプルをいろいろ見てると、メッシュを表示するときに
自前でDrawIndexedPrimitveとかを呼んでるのと
DrawSubsetを呼んでるのがあるんですけど、
この二つで出来ることに違いってあるんでしょうか?
(ボーンブレンディングはDrawSubsetじゃ出来ない、とか)

591:デフォルトの名無しさん
07/10/12 08:14:47
たとえばモーフィングとかシャドウマップ用の
頂点のストリームを複数持って必要な部分だけ切り替えるとか


592:デフォルトの名無しさん
07/10/12 11:49:55
DrawSubsetも最終的にはDrawIndexedPrimitive呼んでるんじゃないの?

593:デフォルトの名無しさん
07/10/14 23:24:39
爆発や水面の波などの表現方法を紹介した書籍やサイトはありませんでしょうか。
自分で練ったところで内部的には大して変わらなかったり
いわゆるHow to本だと1通りだけしか書かれてないなど、
エフェクト周りの知識が深まらないという状態になっています。


594:デフォルトの名無しさん
07/10/14 23:30:29
>>593
sample見れ

595:デフォルトの名無しさん
07/10/15 00:01:09
ゲームの体験版やってみる
たまにテクスチャやシェーダが読めるものもあるし。


596:デフォルトの名無しさん
07/10/15 00:05:07
誰が勉強や研究やるっつったよ
良いパクリ元教えろっての

597:デフォルトの名無しさん
07/10/15 01:12:32
RenderMonkeyとか、nVidiaのそれとか
良いパクリ元になるよ

598:デフォルトの名無しさん
07/10/15 01:32:00
>>596
馬鹿かお前、
どのゲームもエフェクトなんて上からムービーかアニメーションモデル被せて終了なんじゃボケ
アルファなんて重ねたらトータルコスト跳ね上がるんじゃボケ
PC移植したときにアルファ処理弱いんじゃボケ
パクリも糞もどこも横一線でムービー被せて終了なんじゃボケ
爆発だって、水面だって、木漏れ日だって、よくみりゃムービーなんじゃボケ
カメラ固定しろボケ
一番軽いのがそれなんじゃボケ
デザイナにすべてまかせたほうが効率いいんじゃボケ
いまどきプログラムでメガデモ気取りでそんなもん作ってるアフォチョーキモイんじゃボケ
汎用性ちょっとつけりゃムービーもテクスチャなんじゃボケ
つまり

モデルロード→アニメーション

で終了
プログラマの介入一切無し、完

599:デフォルトの名無しさん
07/10/15 12:22:30
時代はラスタスクロール

600:デフォルトの名無しさん
07/10/15 13:32:47
>>598
ス☆テ☆キ☆

601:デフォルトの名無しさん
07/10/15 21:29:26
なるほど、欧米に技術が追いつかないわけだ

602:デフォルトの名無しさん
07/10/15 23:26:05
普通に考えたらGemsじゃね?
パクリ云々いってるやつに理解できるかどうかは分からんが

603:デフォルトの名無しさん
07/10/16 02:16:58
でもムービーにもZとか入れられるからほとんどプログラマが手を入れる必要ってないよね

604:デフォルトの名無しさん
07/10/16 17:12:31
VisualC++とDirectX9.0SDKでHLSLで頂点シェーダとか書いてみてるんですけど、
.fxファイルをvisualStudioのエディタ上でシンタックスハイライト表示する方法
(プラグインみたいのとか)ってありませんか?
黒一色だと見づらくてはかどらんのです

605:デフォルトの名無しさん
07/10/16 18:58:18
>>604
こんなんはどーよ
URLリンク(www.shuta.net)


606:デフォルトの名無しさん
07/10/16 20:09:36
リファレンスデバイス上でピクセルシェーダーって動くのでしょうか?
もし動くのなら、どのように実現しているのでしょうか?

607:デフォルトの名無しさん
07/10/16 20:31:22
どなたか
>>493お分かりになる方いらっしゃいませんか?

608:デフォルトの名無しさん
07/10/16 21:12:01
これ?
URLリンク(sora.cc.nagoya-u.ac.jp)


609:デフォルトの名無しさん
07/10/16 21:37:04
圧縮format非対応 これで実用上十分に解決
まあSDKに圧縮フォーマットのも入ってるが、あれはそれ以前にsdkmeshとか当たり前に使われてるしな。

610:デフォルトの名無しさん
07/10/16 21:50:01
Xファイルなんて使ってるのは雑誌かネット上のエフェクトサンプルと同人ソフトくらいだ

611:デフォルトの名無しさん
07/10/16 23:45:38
結局XFileのバイナリフォーマットは公開されてないんだろ?
そんなのわかる訳ないよ

612:デフォルトの名無しさん
07/10/17 00:01:24
>>611
え、ヘルプに書いてなかったっけ?テキストもバイナリも。
かなり前に読んだ覚えがあるんだが・・・

613:デフォルトの名無しさん
07/10/17 00:27:24
圧縮形式がアンドキュメンテッド


614:デフォルトの名無しさん
07/10/17 00:42:07
バイナリをzlibってるだけじゃないの?

615:デフォルトの名無しさん
07/10/17 00:48:47
いいから仕様書か検証結果を張れよ。
俺は調べたことないから知らないがな

616:デフォルトの名無しさん
07/10/17 00:54:49
なんで俺が検証せにゃならんのだ
Xファイルなんか興味ねーし使ってもねーよ

617:仙人
07/10/17 02:51:28
DirectX ゲームグラフィックスプログラミング Ver.2.1 Vista
\2800 SoftBank Creative
第6章 スペシャルエフェクト(頂点系)波のシミュレーション
<求めよ!さらば与えられん 片っ端から漁れ>
<情報は'∞' 奢るなかれ '0'から初めよ>
<た易いNETに頼るな 100万払って1を知れ>

618:デフォルトの名無しさん
07/10/17 05:14:37
た易い.NETに頼るな 100万払ってCOMを知れ

619:デフォルトの名無しさん
07/10/17 08:04:44
>>617
これの2.0持ってるけど、新しく章が増えたのね。

620:デフォルトの名無しさん
07/10/17 18:34:49
USBカメラからの画像をキャプチャして、jpg形式などで保存できるようなプログラム
を作成したいのですが、お勧めの書籍などありましたらご教授願えないでしょうか。
directxには触れたこともない初心者なのですが、これは無謀というものでしょうか?

621:デフォルトの名無しさん
07/10/17 18:35:42
>>620
できんことはないと思うが、それはDirectXと関係ない気がするなあ。

622:デフォルトの名無しさん
07/10/17 18:49:33
>>621
googleなどでキャプチャについて調べているとdirectshowを使えばよいと書いて
あったので、こちらに質問をさせてもらったのですが…。

623:デフォルトの名無しさん
07/10/17 19:01:08
DirectShowはDirectXからは除外されました。

624:デフォルトの名無しさん
07/10/17 19:02:08
>>622
調べたのならなら分かっていてもおかしくはないと思うが、現在
DirectShowはDirectXの一部としては扱われていない

DirectShowスレで質問しましょう

625:デフォルトの名無しさん
07/10/17 19:04:31
>>623
>>624
申し訳ありません、そうさせていただきます。
ご迷惑をおかけしました。

626:デフォルトの名無しさん
07/10/17 19:09:34
いいじゃねーか。馬鹿じゃねーの?>>623-624
たとえば年寄りに大宮市のこと聞かれて「今は大宮市は存在しませんのでわかりません( ̄へ ̄)」とか答える馬鹿をみたらどうおもう?
ちっちぇーよちっちぇーよなあ、おまえら。

627:デフォルトの名無しさん
07/10/17 19:12:43
>>625
「directshow sample」でぐぐると、参考になるかもな。がんばれよ

628:デフォルトの名無しさん
07/10/17 19:42:27
>>626
DirectShowスレも見てれば分かると思うが、
あっちの方が質の高い回答が返ってくるくる可能性が高い。

普通に誘導しただけでなぜ馬鹿呼ばわりされにゃならんのか

629:デフォルトの名無しさん
07/10/17 19:50:26
>>628
ごめんなさい

630:デフォルトの名無しさん
07/10/17 20:17:24
いまのDirectShowはDirectXより敷居が高いからなぁ
Video for Windowsを使うのも一つの手かもね


参考サイト
URLリンク(www1.bbiq.jp)

631:デフォルトの名無しさん
07/10/17 23:43:10
数年前、DirectShowは大量の分け分からんクラスと用語でやる気なくしたトラウマがあるんだ


632:607
07/10/18 22:49:24
>>608
すみません、違います。
>>609
やっぱりそれが現実的ですね、ありがとうございます。
>>611
ググればすぐに出てきますよ。

633:デフォルトの名無しさん
07/10/19 07:55:49
>>611
たしかに見つかりにくいので今回は貼ってやろう
URLリンク(msdn.microsoft.com)

634:デフォルトの名無しさん
07/10/19 07:58:58
>>493
>Microsoft DirectX 9.0ヘッダー
>注 圧縮データ ストリームは現在サポートされていないので、ここでは詳しく示さない
ワロスw

635:デフォルトの名無しさん
07/10/19 22:51:29
ファイルの読み込み速度で言えば

バイナリフォーマット>>>>>>>>>>>>>>>>>テキストフォーマット。
でバイナリ形式が文字通り桁違いに早い。
手元のデータいくつかで試したけど圧縮バイナリはテキストに比べれば早いってレベル。
ファイルサイズに神経質にならない限り、圧縮形式のメリットってあんまりないな。

636:デフォルトの名無しさん
07/10/20 09:00:29
そりゃ、データストレージのバスボトルネックが極端に大きく無い限り
データ展開のアルゴリズムが動く分、バイナリより遅くなるわな。


637:デフォルトの名無しさん
07/10/20 09:40:16
なんでそんな難しく言うねん

638:デフォルトの名無しさん
07/10/20 12:05:37
そこでわかりやすく>>637が解説

639:デフォルトの名無しさん
07/10/20 12:11:21
難しくて理解できんから言うとんねん

640:デフォルトの名無しさん
07/10/20 12:30:58
例えるなら
高速道路でETCを使用しない場合、
料金所が極端に多くない限りETCより時間がかかるって事?

641:デフォルトの名無しさん
07/10/20 12:51:07
スーパーで買い物をして帰ってくるのに、
自転車と乗用車どちらの方が短時間で済むかというのを考えろ。
どこに負荷がかかるのか状況を分析して、最適解を求めるというだけの話。

642:デフォルトの名無しさん
07/10/20 13:01:57
その例だと圧縮が圧倒的優勢や

643:デフォルトの名無しさん
07/10/20 13:12:11
aho

644:デフォルトの名無しさん
07/10/20 14:13:00
スーパーとどれだけ距離があるのか、出発時間はいつでその時に道は混んでいるのか、
駐車場はすぐ止められるのか、駐車場から店舗までの距離はどのくらいか、
考えることはいくらでもある。

元データの容量や圧縮率、ストレージの速度、デコードに使うCPU周りの速度、
条件が異なればどこの処理のプライオリティが高くなるのか変わってくる。

要するに、きちんと条件を整理して総合的にものを考えろということ。

645:デフォルトの名無しさん
07/10/20 14:46:17
簡単に言えばバイナリフォーマットには最初から「数値」が入ってる。
テキストフォーマットには「文字列」が入ってる。
3Dフォーマットだと、その山ほどある文字列を数値に変換する必要があるわけで
それだけでも結構なボトルネックになる。



646:デフォルトの名無しさん
07/10/20 15:02:32
ぇ、テキストフォーマット?
生バイナリと圧縮バイナリの話じゃなかった?

ちなみに全ドライブ圧縮ONの俺は、圧縮フォーマットなんてNTFSの圧縮機能と二重になって無駄なだけだと思う

647:デフォルトの名無しさん
07/10/20 15:06:02
テキストとバイナリの話だと思った。すまんかった。

648:デフォルトの名無しさん
07/10/20 15:08:34
>>646
圧縮方法が違えばさらに小さくなる可能性はあるし、
それに常に圧縮ONのドライブであるならともかく、ソフトを公開すればほとんどがOFFだから、検討する価値はあると思う。

それはともかく、ドライブの圧縮ONにしてる人間を初めて知った。

649:デフォルトの名無しさん
07/10/20 15:58:03

俺も使っているが、MSのファイルクラッシャーパッチ食らってからは
ソースとかライブラリ等大事なファイルの置いてあるところにはかけないようにしている。
物によってはかなり縮むから重宝していたのだけどね^^;
スレチすまん。

650:デフォルトの名無しさん
07/10/20 22:12:08
分からんからガソリンスタンドと車で例えてくれよ。

651:デフォルトの名無しさん
07/10/20 22:28:35
Xファイルって実は結構使えるよな。



652:デフォルトの名無しさん
07/10/20 22:29:49
>>651
モルダー、あなた疲れてるのよ

653:デフォルトの名無しさん
07/10/20 22:31:07
>>651
は?

654:デフォルトの名無しさん
07/10/20 22:39:31
いや、テンプレート好きに拡張出来るのは便利くない?

655:デフォルトの名無しさん
07/10/20 23:11:33
>>654
は?

656:デフォルトの名無しさん
07/10/20 23:17:07
テンプレート型のフォーマットだからXファイルにテクスチャデータを
放り込んだり、当たり判定用のローポリデータ追加したりするの楽じゃん?

素のXファイルが使えないって言ってる?
それなら同意。

657:デフォルトの名無しさん
07/10/20 23:19:39
カスタムテンプレートは自己満足

658:デフォルトの名無しさん
07/10/20 23:22:09
「どんどん拡張してどんなデータも対応可能!!」は
ライブラリ製作マニアの陥りがちな野放図な夢想

659:デフォルトの名無しさん
07/10/20 23:24:19
>>656
は?

660:デフォルトの名無しさん
07/10/20 23:28:44
現状、モデリングソフトのプラグインから出力する以外なにやっても無駄

661:デフォルトの名無しさん
07/10/20 23:29:20
>>658
いや、だから必要に応じて追加出来るのが便利って言ってんの。

662:デフォルトの名無しさん
07/10/20 23:33:19
>>661
そんなの自作フォーマットで十分じゃんw
ID+SIZE+XXX
って形にしておけばいくらでも追加できるぜw
なにが便利だって?え?w

663:デフォルトの名無しさん
07/10/20 23:35:30
別に何使ってもいいだろ・・・
ほっといたれよ

XFileの話しになると必ずでてくるよな

664:デフォルトの名無しさん
07/10/20 23:38:10
独自のテンプレートをXFileにわざわざ追加してなんだってのかマジでわからん

665:デフォルトの名無しさん
07/10/20 23:52:13
好きなもん使えばいいだけ。

666:デフォルトの名無しさん
07/10/21 14:12:10
2の乗数の画像じゃないと、自動的に「画像サイズより大きい2の乗数の大きさのテクスチャ」
に変えられて表示されてしまうのですが、これは仕様でしょうか?

ちなみにテクスチャは「4点の座標を入力して作る」方式のほうです。

治せるのなら治したいのですが、治せないのならこれを計算に入れたプログラムを打ちたいと思っているのですが…。

667:デフォルトの名無しさん
07/10/21 15:06:13
>>666
そのはず。

668:デフォルトの名無しさん
07/10/21 15:54:16
>>666
BBXでもこんな質問あったな。

URLリンク(bbx.hp.infoseek.co.jp)

669:デフォルトの名無しさん
07/10/21 16:16:00
667さん、668さん


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

668さんのURLの所にもあったのですが
テクスチャはD3DXCreateTextureFromFileExで作り、
D3DX_FILTER_NONEを指定しています。


int t_x;
int t_y;

D3DSURFACE_DESC t_data; //D3DSURFACE_DESCとはテクスチャの情報を格納するための関数
texture->GetLevelDesc(0, &t_data); //textureの情報をt_dataに格納

t_x = t_data.Width;
t_y = t_data.Height;

で正確な画像のサイズが取得できると思ったのですが、
やはり101*101の画像なのにサイズは128*128だと言われてしまっていました。

DirectX側では、正確な画像の大きさは取得出来ないし、
正確な画像の大きさのテクスチャは作れないみたいでした。

670:デフォルトの名無しさん
07/10/21 16:20:17
D3DXIMAGE_INFO imageInfo;
hr = D3DXGetImageInfoFromFile( filename, &imageInfo );

imageInfo.Width
imageInfo.Height

671:668
07/10/21 16:34:57
まったく試していないが適当に回答

D3DX_DEFAULT_NONPOW2とか?

672:デフォルトの名無しさん
07/10/21 17:46:33
>>669
読み込まれた後のテクスチャのサイズを取得しても無駄。
読み込むときの引数を良く確認してみろ、注意力が足りなすぎる。

673:デフォルトの名無しさん
07/10/21 18:47:11
670さん、671さん、672さん

回答、誠にありがとうございました。
672さんの言うとおりに取得の時を見て
671さんの言うとおりに治してみたら、値の取得が出来ました。

よく読みもせず、思いつきで質問してしまい申し訳ありませんでした。
670さんのものも試してみたいと思います。

それでは、改めてありがとうございました。

674:デフォルトの名無しさん
07/10/21 23:50:01
頂点バッファって使いまわしても問題ないですよね・・・

HOGEVERTEX vertex[4];
set_hoge_vertex(vertex, x1, y1, x2, y2);
dev->SetTexture(0, t);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xx1, yy1, xx2, yy2);
dev->SetTexture(0, tt);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xxx1, yyy1, xxx2, yyy2);
  ・
  ・
  ・

675:デフォルトの名無しさん
07/10/22 00:05:20
>>674の例ならば問題ないが、その例は
ローカル変数の配列を使いまわしてるだけで、
頂点バッファを使いまわして問題ないケースと問題あるケースの
どちらについても語っていないがな。


676:674
07/10/22 00:27:09
>>675
マルチスレッドでなければ大丈夫ということでしょうか?

677:デフォルトの名無しさん
07/10/22 00:32:50
>>674のプログラムって頂点バッファなんて使ってるか?
俺には頂点バッファのインターフェースが見えないんだけっちょ

678:デフォルトの名無しさん
07/10/22 00:50:26
マルチスレッドの排他制御以前に、ローカル変数ってどんなものかを知った方がいい

679:674
07/10/22 01:02:35
DrawPrimitiveUP()してしまえばそれに使った頂点情報はいらなくなると思うのですが・・・
EndScene()やPresent()まで保持しとかないとだめですか?

680:デフォルトの名無しさん
07/10/22 01:31:26
>>679
頂点バッファを作らないってことは
毎回グラボにデータを送信するってことじゃん

大量な頂点データが必要になるとこれが問題になるんかどうかは知らんけど
無駄なんでグラボにとっておきましょうってのが頂点バッファなんで
四角形描画するだけのお前には頂点バッファはいらないじゃん

って話

681:デフォルトの名無しさん
07/10/22 05:40:15
>>679
その必要はないが、普通Direct3Dで「頂点バッファ」と言ったら
VertexBufferのことを指す。

682:デフォルトの名無しさん
07/10/22 09:18:38
>>674は頂点を格納した配列のことを言ってたのか。
それは頂点バッファとは普通言わないぞ。

683:674
07/10/22 11:33:30
用語とか定石とか触ったとこ以外わかってません。
どうやら大丈夫そうですね^^;
ありがとうございました。

684:デフォルトの名無しさん
07/10/22 11:47:41
テクスチャはどうなんだろう。DrawPrimitiveで指定した後Presentの前に
Releaseしても良いのかな。

685:デフォルトの名無しさん
07/10/22 11:54:51
頂点バッファが大丈夫かどうか考えればおのずと答えが出るだろう。
ちなみに上のは頂点バッファの話じゃないからな。

686:デフォルトの名無しさん
07/10/22 21:52:12
そしてLostするバッファ達

687:デフォルトの名無しさん
07/10/22 22:28:53
FVFでTANGENTやBINORMALを扱うことはできないのでしょうか?
もし扱う場合はD3DDECLUSAGEを使わなければいけないのでしょうか?

688:デフォルトの名無しさん
07/10/23 04:05:30
そうした方が普通で簡潔で分かりやすくなると思うのだが。なにか問題でも?

689:デフォルトの名無しさん
07/10/23 18:24:01
シェーダーを使うときに出てくる
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;

このTEXCOORDというものなんですが
テクスチャ座標を指す、というのはわかったのですが
テクスチャ0は何もしないで送ったテクスチャだとわかるのですが
テクスチャ1はナニを指すのかわかりません。

また
uniform sampler2D texture, //texture0のを送る
uniform sampler1D TransferFunction, //texture1のを送る

としたときに、はじめのuv0はtextureを指すのか、それとも別のものを指すのか
シェーダーの解説本を読んでゴチャゴチャになってしまいました。
すみません、わかりやすく教えていただけませんか

690:デフォルトの名無しさん
07/10/23 18:41:11
>>688
今までFVFでやってきたもので・・・
これを機会に移行します

691:デフォルトの名無しさん
07/10/24 21:17:52
メモリ上のWavファイルをDirectAudioで読み込もうとした場合不具合がでてしまい、解決策を模索しています。

・Wavをメモリー上にロード
・そのアドレスとサイズを指定して、DirectAudioでロード
・Wavをメモリー上からアンロード

・次のWavをメモリー上にロード
・そのアドレスと…

とやると、たまたま「Wavをロードしたアドレスが、以前とかぶった時」に、DirectAudioが
「以前のファイルと同じだなこれ」と勘違いするのか、以前の音をロードしてしまうのです。


ここの
URLリンク(toruweb.web.fc2.com)
DirectMusic / 読み込み
と同じにWavを読み込むようにしているのですが、特にこのサイトでは「同アドレス問題」については対策していないようです。
どのような対策をすればよいのでしょうか?

692:デフォルトの名無しさん
07/10/24 23:01:59
超うろ覚えだがDirectMusicローダのキャッシュをいちいち開放しないと
そんな感じになったような気がしないでもないような。

てか、メモリからWAVE再生すんならDirectSoundかOpenALでええやん。
圧縮WAVEをそのまま再生できるくらいでしょ、この場合のDirectMusicのメリットって。

693:デフォルトの名無しさん
07/10/25 00:29:28
ありがとうございます。
キャッシュをキーワードに探し回っていたら
URLリンク(www.sun-inet.or.jp)
こういう記事を発見しました。

DirectMusicのバグのようですね…。
ついでに「メモリーからのロードは、実行ファイル内のリソースを再生したい時以外は使わないように」という注意書きも発見しました。
うーん、単に暗号化してあるファイルを複合化して読ませたい(複合化したものをTempファイルとして吐き出したくない)だけなのに、厄介ですね

694:デフォルトの名無しさん
07/10/25 01:30:08
初心者ってやたら何でも隠蔽したがるよね
そこに時間かけるくらいなら
他にやることいくらでもあるだろうに

695:デフォルトの名無しさん
07/10/25 01:59:26
本来何も無い所に自ら巨大な壁を作り上げて
疲労していくのはよくあること

696:デフォルトの名無しさん
07/10/25 12:04:45
CYGWINのVISTAでのインストール&実装について質問です。

インストールは完了してデスクトップにも通常通りアイコンが作成されました。そこから起動させてみます。そうすると、

bash3.2/$

と表示され、pwdと打ち込むと

/usr/bin

と表示されます。

最終目標はxtermを起動させプログラミングをすることです。
XPでは緑色の文字がホームディレクトリと共に表示され、xstart と入力したら起動しました。
しかし、VISTAでこの状態で xstart と入力してもコマンドが認識されません。
なにより緑色の文字がホームディレクトリと共に表示されません。

何かのエラーではなく、まだ足りない設定等があるのでしょうか?
御教授お願いします。

環境は VISTA Ultimate 32ビット Core 2 です。
何か足らない情報があれば教えて下さい、補足させて頂きます。

697:デフォルトの名無しさん
07/10/25 12:17:06
足りないのは注意力だと思うよ

698:デフォルトの名無しさん
07/10/25 12:33:53
たしかに強烈に注意力が足りないな。

699:デフォルトの名無しさん
07/10/25 18:24:53
Xファイルの容量を軽くする方法、またはソフトなどありますか?

700:デフォルトの名無しさん
07/10/25 18:28:15
バイナリ、頂点減らし、無駄な項目を消す

701:デフォルトの名無しさん
07/10/25 22:55:03
>>699
圧縮かける

702:デフォルトの名無しさん
07/10/26 00:56:32
またそれかよ
買い物とか駐車場とかネギとかもうやめてくれよ

703:デフォルトの名無しさん
07/10/26 08:15:14
SDK付属のDirectXViewerで、DX10にしてXファイルを開いたら、むちゃくちゃ遅くなった。
DX9で60以上出てたのが、10以下になった感じ。
グラボはgeforce7xxxだし、DX10に対応してるはずなんだけど、なんで?

704:デフォルトの名無しさん
07/10/26 08:38:10
>>703
どーでもいいがGeForce7シリーズは普通、DX10対応とは言わない。
ShaderModelも3.0止まりだし。

お前さんの速度低下の原因が何なのかは別として。

705:デフォルトの名無しさん
07/10/26 08:41:22
いつGeForce7が10対応になったんだよ

706:デフォルトの名無しさん
07/10/26 13:01:34
なんかうっかりさんが多いな

707:703
07/10/26 17:34:23
すいません、てっきりフルサポートしてるもんだと思ってました。

708:デフォルトの名無しさん
07/10/26 20:01:17
DirectX10でポリゴンを画面の座標で表示する方法がわかりません。
チュートリアルのコードは、画面の中心が(0, 0)となっているのですが、単位や基準の位置を設定することはできるのでしょうか?
やりたいことは、自前でスプライトを実装することです。
教えてください。

709:デフォルトの名無しさん
07/10/26 20:29:24
頂点シェーダで座標変換?

710:デフォルトの名無しさん
07/10/27 19:52:43
>>708
君があまりに知識が無さ過ぎるので、どこからどこまで解説したものか途方に暮れ
誰も君の期待に答えることができない。
本屋行って何か本でも買って読んでみれば?

711:デフォルトの名無しさん
07/10/27 21:01:05
DX9までなら扱える。DX10構造がだいぶかわってわからないのさ。
DX9なら、初期化を完了した素の状態からVertexで直に画面の座標で指定できたよね。
それがDX10だと同じようにコーディングできないから、どうしたらいいかわからない。
あんまりDX10やってる人いない?

712:デフォルトの名無しさん
07/10/28 01:54:46
DX10とかどうこういう問題じゃなくてシェーダと座標系の問題なんじゃないの

713:デフォルトの名無しさん
07/10/28 02:05:18
DX9とDX10の問題じゃないだろ。

714:デフォルトの名無しさん
07/10/28 02:13:02
Vertex Bufferに(0,0,0) (0,100,0) (100,0,0) なかんじで設定して描画できる?
可能なら必要な処理を教えて。

715:デフォルトの名無しさん
07/10/28 02:13:38
↑のは座標は画面のピクセル単位ね。

716:デフォルトの名無しさん
07/10/28 10:13:55
CDXUTDialog::OnRender10でも見てくれ。
そこに答えがある。

717:デフォルトの名無しさん
07/10/28 17:39:18
見た。DX10は画面の座標でVertexを直接指定できないでおk?
わからないのですが、これはシェーダーの仕様制限なのかな?

718:デフォルトの名無しさん
07/10/28 19:02:14
>>717
元々頂点シェーダ使用時はそういうもんだった気がする。
頂点シェーダ強制になった副作用と思えばいいんじゃね?

719:デフォルトの名無しさん
07/10/28 21:58:58
ジオメトリシェーダ

720:デフォルトの名無しさん
07/10/29 06:19:37
>>711
おまえDX9扱えるなんて言ってんじゃねーよ

721:デフォルトの名無しさん
07/10/29 07:01:15
ごめん。もうDX10まで扱えるようになった。

722:デフォルトの名無しさん
07/10/29 08:09:17
扱えるってのはポリゴン一枚出すサンプルが作れれば言える


723:デフォルトの名無しさん
07/10/29 14:44:22
シェーダーのPOSITIONセマンテックが何をさしてるのかわかりません

vertex fragmentでのPOSITIONの意味教えください

724:デフォルトの名無しさん
07/10/29 15:34:48
正直セマンテック

725:デフォルトの名無しさん
07/10/29 15:53:42
意味だというのはわかるのですが
vertexが(0,0,0) (-10,0,0) (10,0,0)
とあったときにそれをvertexシェーダに送ると

pos : POSITION
としたときのposは具体的にどんな値が入っているのか。

そしてfragmentシェーダに
OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
スクリーン上のどの値なのか

どうもイメージできてなくて

726:デフォルトの名無しさん
07/10/29 22:15:00
どうせ2Dシューティング作るんだろ
matWVPに単位行列入れればいいのに


727:デフォルトの名無しさん
07/10/29 23:00:40
2Dシューティングだったら、楽しんで作るんですが。

どなたか725の回答お願いします

728:デフォルトの名無しさん
07/10/29 23:20:22
うん、良かったね。

729:デフォルトの名無しさん
07/10/29 23:37:45
>>725
CPU→VertexShader→FragmentShaderという流れでは

・VertexShaderのPosition値は基本的にCPUで設定した頂点バッファの頂点そのままの値です
・VertexShaderからFragmentShaderに送るPosition値は射影空間の値を入れます。
 具体的には(-1,-1,0)-(1,1,1)です
・スクリーンへは射影空間(-1,-1)-(1,1)が引き伸ばされて
 (0,0)-(ViewportSize.X,ViewportSize.Y)に表示されると思ってください

以上を踏まえて

>pos : POSITION
>としたときのposは具体的にどんな値が入っているのか。
そのまま(0,0,0) (-10,0,0) (10,0,0)が入ってきます

>そしてfragmentシェーダに
>OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
>たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
>スクリーン上のどの値なのか
頂点がカメラのフラスタムの中に入っていれば、
射影空間(-1,-1,0)-(1,1,1)の中に頂点が変換されます
その先のスクリーン座標への変換はDirectXが勝手にやります

射影空間とはなんぞやって話なら
SDKの「射影変換とは」って項目でも読んでください

730:デフォルトの名無しさん
07/10/31 21:55:28
>>729
遅くなりましたがありがとうございます
ようやくイメージできました

731:デフォルトの名無しさん
07/11/01 06:12:57
HLSLでピクセルシェーダを書き始めたのですが、
BeginPass()~EndPass()の間でマテリアルごとにDrawSubsetを実行する流れになると思うんですけど、
特定のマテリアルではピクセルシェーダを変えたいというとき、

・特定マテリアルのときフラグ定数を転送してやってピクセルシェーダ内で分岐して処理を変える
・Pass0で特定マテリアル以外を描いて、Pass1で特定マテリアルだけを描く

どっちがベターでしょうか?
もしくは他に「こうやるもんだ」ってのがあれば教えていただきたいです。

732:デフォルトの名無しさん
07/11/01 08:40:16
厳密にはケースバイケースに計測しないと分からないので
一般には「楽なほう」が選ばれるんじゃね

733:デフォルトの名無しさん
07/11/01 14:41:49
発想を逆にして、マテリアルごとにBeginPass()~EndPass()というのも。

734:デフォルトの名無しさん
07/11/01 23:01:47
>>731
マテリアルとシェーダって一対一になると考えるのが普通じゃね?
つまりシェーダが違うんであれば、それはマテリアルが違う。
データの段階でどういうマテリアルにするかを指定しておくべきじゃないかね

735:デフォルトの名無しさん
07/11/01 23:53:10
technique T
{
pass P0{ ... }
pass P1{ ... }
pass P2{ ... }
}


ApplyEffect( func )
{
SetTechnique( "T" );
Begin()
BeginPass( func );
Draw();
EndPass();
End();
}

これはよくやる、っていうかこれしかやらない。
passをループでぐるぐる回すってのは、
むしろあんまり使いどころがない気がする。


736:731
07/11/02 02:56:59
>>732-735
レスサンクス!参考になりました。
とりあえず自分が組みやすい奴でやってみることにします。

737:デフォルトの名無しさん
07/11/02 18:51:21
DirectX10で、MultiSamplingのバックバッファから2Dテクスチャにコピーする方法がわかりません。
つまりバックバッファからイメージを取得したいのですが。
アドバイスをください。

738:デフォルトの名無しさん
07/11/02 21:37:09
>>737
レンダリングターゲットを変えろ。

739:デフォルトの名無しさん
07/11/03 02:40:06
条件を全否定するのではなく、目的の方法を求みます。

740:デフォルトの名無しさん
07/11/03 02:53:28
>求みます。

求みる?

741:デフォルトの名無しさん
07/11/03 03:04:51
揚げ足とるなカス

742:デフォルトの名無しさん
07/11/03 03:06:30
俺も知りたい

743:デフォルトの名無しさん
07/11/03 03:07:35
俺も俺も!

744:デフォルトの名無しさん
07/11/03 03:09:45
あちきも!

745:デフォルトの名無しさん
07/11/03 03:11:40
求みます、ってのは日本語を学ぶ中国人がよく犯す間違い

746:デフォルトの名無しさん
07/11/03 04:45:04
謝罪しる思い出した

747:デフォルトの名無しさん
07/11/03 17:21:38
事故レス
ID3D10Device::ResolveSubresource を使用することで目的が達成できました。

748:デフォルトの名無しさん
07/11/03 17:42:30
>>746
反省しるだろ

749:デフォルトの名無しさん
07/11/03 19:28:39
URLリンク(www.watch.impress.co.jp)

この問題がよくわかんないんですけど
間違ったサンプルコードをコピペしていたのが原因らしいけど、
その詳細が知りたいです


750:デフォルトの名無しさん
07/11/03 19:34:13
>>749
スライドに載ってるソース見てMSDNライブラリで調べればいいだろ。

751:デフォルトの名無しさん
07/11/03 19:35:54
詳細ってこれなんじゃないの?

URLリンク(www.watch.impress.co.jp)

752:デフォルトの名無しさん
07/11/03 19:37:50
>>749
お前なんも記事を読んでないな?
本文に書いてあるだろ、スライドのSS見ろ。

753:749
07/11/03 19:54:12
えーと、IMEの描画をさせないために
WM_IME_SETCONTEXTが来た時にlParamからISC_SHOWUIALLフラグを取り除くのが正解だけど、
サンプルは自動変数に0を入れてるから意味ナス

って理解でいいですかね

754:デフォルトの名無しさん
07/11/03 19:58:51
>>753
肝心なところが足りない。
lParamからISC_SHOWUIALLのビットを下げてDefWindowProcに渡す、で正解。

755:749
07/11/03 20:00:43
そういえば解決策をかいてなかった
>>754
了解です。理解しました

756:デフォルトの名無しさん
07/11/03 20:46:36
海外デベロッパはIMEの動作しない環境で作ってテストしない&修正しないもんだから、Vistaでもう致命的におかしくなった話。
Vistaなプログラミングしていれば周知の事実だぜ。

757:デフォルトの名無しさん
07/11/03 23:46:05
海外全部じゃなくて、欧米だな

758:デフォルトの名無しさん
07/11/05 13:34:46
欧米か・・・

759:デフォルトの名無しさん
07/11/05 21:15:11
米だけじゃね

760:デフォルトの名無しさん
07/11/05 22:07:11
漢字圏以外だと思うが

761:デフォルトの名無しさん
07/11/06 01:51:12
欧とか印のデベロッパの傾向とかはっきり言って知らない

762:デフォルトの名無しさん
07/11/06 07:55:30
インド製の有名なゲームの体験版とかあったら教えてくれ。それで判断する

763:デフォルトの名無しさん
07/11/06 08:10:28
英語のヘルプはほとんどインド製。
ゲームじゃないが。

764:デフォルトの名無しさん
07/11/06 16:08:50
インドの標準語は英語

765:デフォルトの名無しさん
07/11/06 16:56:17
違いますよ

766:デフォルトの名無しさん
07/11/06 21:43:13
インド人の微妙に高いカーストのイケメンのアニオタプログラマガ
半裸で作ったゲームないの


767:デフォルトの名無しさん
07/11/06 23:14:09
カーストなんて言葉聞いたの小学校の社会の時間以来だ。

768:デフォルトの名無しさん
07/11/07 12:41:13
DirectX10で書いた場合、vista専用になってしまいますか?

769:デフォルトの名無しさん
07/11/07 14:50:57
DirectX10専用

770:デフォルトの名無しさん
07/11/08 04:48:53
インドのゲームってやっぱり敵と踊ったりするの

771:デフォルトの名無しさん
07/11/08 10:49:42
DirectXを初めて学ぶのにお薦めの本を教えてください

772:デフォルトの名無しさん
07/11/08 11:58:38
猫でもわかるDirectX ~ 3Dグラフィックス基礎編(1)
URLリンク(www.amazon.co.jp)

773:デフォルトの名無しさん
07/11/08 13:12:06
本読んだことないけど、使えている俺が居る。

774:デフォルトの名無しさん
07/11/08 13:25:18
勘と試行錯誤って大事だよ

775:デフォルトの名無しさん
07/11/08 18:32:19
>>772
リンク先間違ってない?

776:デフォルトの名無しさん
07/11/09 06:35:15
ネタだろ

777:デフォルトの名無しさん
07/11/09 21:16:44
DirectX & C++ & Windowsでシェーダプログラムを組んでいます。
処理が複雑になりすぎて、レジスタ数が足りないというエラーを返される
ようになってしまいました。
この場合1パスで行っていた描画を2パスにすれば解決するのでしょうか?
また、その場合どのようにシェーダの記述を行えばよいのでしょうか?

778:777
07/11/09 22:06:21
やっぱり分からないので再度書き込みをさせて頂きます。
1パス目で行った描画ピクセルに2パス目で色相変換の処理を組み込みたいのです
しかしながら1パス目の描画結果を取得する方法が分かりません。

下のように2パス目のピクセルシェーダを記述しています。
PS_OUTPUT PS_HueShader( PS_OUTPUT In ){//TESTとして1パス目の記述結果をそのまま出力する
return In;
}

このように記述すれば引数Inには1パス目のピクセルシェーダ描画結果が入っていると
思ってたのですが実際には1パス目の頂点シェーダのDiffuseの値が入ってます。
どのようにしたら1パス目ピクセルシェーダ終了時のピクセルの値を操作できる
のでしょうか?

779:デフォルトの名無しさん
07/11/10 01:20:03
1パス目でレンダーターゲットにしたテクスチャに描画して
2パス目でそいつをピクセルシェーダの入力にする
ってのが基本

780:デフォルトの名無しさん
07/11/10 01:34:03
ていうかレジスタが足りないなんてエラー初めて聞いた。
プログラムコードがでかすぎるってのならともかく…

781:777
07/11/10 01:42:28
>779
分かりやすい解説ありがとうございます。
2パスだと描画用のテクスチャを別に用意する必要があるので、処理が重そうですね。
今回は色相変換を諦めようと思います。アドバイスありがとうございました。

>>780
色相彩度変換はレジスタ数を大量に必要とするのでシェーダのバージョンが
低いとすぐにレジスタが足りないというエラーが起きてしまいます…

782:デフォルトの名無しさん
07/11/10 01:43:46
色相彩度変換て具体的にどういうのか知らないんだけど、そんなに消費するのか。
セピア変換とかなら単に行列かけるだけだと思ってたけど
話にならないくらい複雑なことするのかな

783:デフォルトの名無しさん
07/11/10 02:18:16
RGB情報を一度HSV(色相・彩度・明度)の情報に変換して、各値を
操作してRGB値に戻す…というやり方でやってますんで、処理としては
結構複雑です・・・。検索するとシェーダサンプルが見つかると思います。

784:デフォルトの名無しさん
07/11/10 09:18:39
HSVとRGBの変換が大変そうだね…
てか、ソース見て俺も1回やったこと思い出した。CPUでだけど。

785:デフォルトの名無しさん
07/11/10 09:32:46
別にマルチパスレンダは重くないと思うぞ。
重くなる要素が見当たらないし。
VRAMがオーバーフローするなら別だが。


786:デフォルトの名無しさん
07/11/10 11:09:51
シェーダでHSV変換なんてただのエフェクトサンプル以外の使い道あるの?
実用しないなら遅くていいじゃん。

787:デフォルトの名無しさん
07/11/10 17:01:29
シェーダをある程度理解されている方に質問です。

頂点シェーダに1回に送られてくる頂点情報は、基本的に1つですよね。
私は頂点同士の計算がしたいのですが、その為には複数の頂点が必要になります。

(例)
vertex1 と vertex2 でなんらかの計算
vertex1 と vertex3 でなんらかの計算

というように、送られてきた頂点と、他の頂点を使って計算をしたいのです。

こういうことはシェーダでは可能なのでしょうか?
ちなみにHLSLを使っています。

どうぞ宜しくお願いします。

788:デフォルトの名無しさん
07/11/10 17:30:57
シェーダが走る前の特定の頂点情報が必要なら、レンダリング前に定数レジスタに
値を入れてからシェーダを走らせる。

あとは、頂点フォーマットを拡張して、レンダリングを開始する前に、
必要な他の頂点の情報を自分の頂点情報に入れておけば、シェーダで利用できる。

DirectX9までは、基本的にシェーダが走ってる最中の別の頂点の情報が必要な場合、
取得は不可能なはず。(上のような、小細工が必要)

DirectX10のシェーダは、その辺が可能って聞いてるけど、詳しい人ヨロシク。

789:デフォルトの名無しさん
07/11/10 17:49:52
>>788
ご回答していただきありがとうございます。

もう少し具体的に教えてもらいたいのですが、

・レンダリング前に定数レジスタに値をいれる
・必要な他の頂点の情報を自分の頂点情報に入れておく

とは具体的にどうすれば良いでしょうか。

いろいろ本やサイトで調べたのですが、
これに関して掲載されていなかったので投稿させていただきました。
初心者で申し訳ありません。

790:デフォルトの名無しさん
07/11/10 17:53:02
>>787
DirectX10のジオメトリシェーダなら
入ってきた三角形に対して新しい頂点を生成したりすることができるよ

でも、やる内容によるんじゃないかなぁ
DirectX9世代ではピクセルシェーダで頑張ってやってた処理が多い

791:デフォルトの名無しさん
07/11/10 17:54:41
>>789
>・レンダリング前に定数レジスタに値をいれる
こっちは多分、君の言う目的を達成できない方法だよ
プリミティブを描画している間、どの頂点にも同じ情報を送ることができる
まぁ、普通のレジスタの使い方

>・必要な他の頂点の情報を自分の頂点情報に入れておく
これは頂点に他の頂点のコピーを複製していれておく方法。
例えば
struct VERTEX
{

792:デフォルトの名無しさん
07/11/10 17:57:05
SHIFT+Enterで書き込んでしまった
struct VERTEX
{
float4 Position : POSITION;
float4 Texcoord : TEXCOORD;
};
って頂点だったら
struct VERTEX
{
float4 Position0 : POSITION0;
float4 Texcoord0 : TEXCOORD0;
float4 Position1 : POSITION1;
float4 Texcoord1 : TEXCOORD1;
float4 Position2 : POSITION2;
float4 Texcoord2 : TEXCOORD2;
};
みたいにしておいて、他の頂点に触れるようにしておく。
かなり強引な方法(単純に考えてデータ量3倍)

793:787
07/11/10 18:01:40
皆様、早速のご回答ありがとうございます。

ある本を読んでみると、頂点情報をテクスチャに保存して
それをピクセルシェーダで使用すると書いてあるのですが、
具体的にどうすればいいのか分かりません。

複数の頂点情報をテクスチャに保存することってできるのでしょうか?

794:デフォルトの名無しさん
07/11/10 18:08:06
>>793
そりゃ例えばARGB32Fのフォーマットなら、
1ピクセルにfloat4の情報を書き込めるってだけだよ

そもそも具体的に何をしたいのかが分からないから何とも言えない…

795:787
07/11/10 18:18:37
私が具体的に行いことを述べます。

例えば、頂点数が「5」のオブジェクトがあります。
1つの頂点に対して、他の全ての頂点と計算がしたいので

v1-v2 v1-v3 v1-v4 v1-v5
v2-----------同じ------------
v3-----------同じ------------
v4-----------同じ------------ 
v5-----------同じ------------

※ -← は計算するということ

と計算がしたいので、4×5 = 20回分計算が必要になるわけです。
こういう処理をGPU上で計算したいと思っています。
何か良い方法がありますでしょうか。

796:デフォルトの名無しさん
07/11/10 18:20:26
シェーダーで計算したいってことなのかな・・・

797:デフォルトの名無しさん
07/11/10 18:27:57
>>795
いや、それって方法論でしょ?
何を表現したいかってことだよ
それによってはそもそもその手法が正しいのか、って話になるから

まあ、よほど重い処理でない限り、頂点シェーダで強引に計算してしまえばいい
大抵はピクセル処理でボトルネックになってしまうので、どうでもいいんで

798:デフォルトの名無しさん
07/11/10 20:08:54
>>795
だから、>>788で書いたとおり、DirectX9では無理。DirectX10のジオメトリシェーダでは可能。

無理だから、事前に「自分で」必要な頂点の情報を、対応する頂点に「仕込む」等の処理が必要になる。
ある頂点で参照可能な別頂点の数は、入力となるvレジスタの数で決まるから、「あるプリミティブ全体を
対象とする任意の頂点を相互参照」するなんてDirectXでは完全に無理。

このヒントを聞いて、「頂点に他の頂点を仕込む方法が具体的にわからない」なら、
シェーダの理解が足りて無いってことだから、

URLリンク(marupeke296.com)

この辺の一番上の図を見て、頂点シェーダの演算部が参照可能なデータについて、もう一度整理する事を
お勧めする。

>>797もいってる通り、実現方法を変更する方が現実的なんじゃないかな?

799:デフォルトの名無しさん
07/11/10 21:17:22
便乗して質問
>>792のようにPosition0~2まで3つ設定すると
そこに何入ってるの?


たとえば {1 1 0} {0 0 0} {-1 1 0} の三角形があったらどうなるの?

800:デフォルトの名無しさん
07/11/10 21:28:57
何が入ってるかじゃなくて
何を入れるかを自分で決めるんだ

801:デフォルトの名無しさん
07/11/10 21:33:10
ごめん、Cgだから
何を入れるというと uniform型を宣言すると思ってしまって。

Cgでも未だに
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
に何が入ってるのかわかってなくて。
uniform型なら、明示的にブチ込んでるからわかるんだけども

802:デフォルトの名無しさん
07/11/10 21:48:57
実際のところ、頂点シェーダの
入力パラメータが何であるかなんで
どうでもいいことだし、何を渡してもかまわない。
ただ最低限、同次頂点座標を1つ出力しなければならないってだけだ。


803:デフォルトの名無しさん
07/11/10 21:49:30
>何が入ってるのかわかってなくて
工工工工工工エエエエエエ(´д`)エエエエエエ工工工工工工

804:デフォルトの名無しさん
07/11/10 21:53:48
>>802
何が入ってるのかわからないままだと、結局何もわかってないままで
>>803みたいなこと言われるので・・・

805:デフォルトの名無しさん
07/11/11 15:53:09
質問です。

DirectX SDKのサンプルって、みんな「コード生成」->「ランタイムライブラリ」の設定が「マルチスレッド デバッグ」になってるじゃないですか。
これを、「マルチスレッド デバッグ DLL」にしてビルド通して実行しようとすると「MSVCR80.dllが見つかりませんでした」とか「MSVCR80D.dllが見つかりませんでした」
と言われて実行に失敗してしまいます。
これ、対処法ってないんでしょうか。

というのも、自前で作ったライブラリとSDKサンプルを組み合わせて使いたいんですが、ライブラリが「マルチスレッド (デバッグ) DLL」の設定でビルドしてあるものだから、
合わせたいんです。

806:デフォルトの名無しさん
07/11/11 16:26:41
見つかる場所 (PATHの通ってる場所とか) にDLLを置いとけばいいんじゃないの

807:デフォルトの名無しさん
07/11/11 17:35:07
最近ワイドモニターのノートPCを使い始めたのですが、
フルスクリーンのゲームなどをするときに横に伸びてしまいます。
そこで、特定のサイズでフルスクリーンにするとき、自動的に左右をパディングして真ん中だけを使って写すようにしたいのですが、
そのようなソフトウェアを作ることは可能でしょうか?

808:デフォルトの名無しさん
07/11/11 17:40:26
はい。

809:デフォルトの名無しさん
07/11/11 17:45:25
ちなみに、そのようなハードウェアを作ることも可能ですよ。

810:デフォルトの名無しさん
07/11/11 18:12:02
でもそこらの同人ゲームはフルスクリーンで特に何もやってないのがほとんどじゃん。


811:デフォルトの名無しさん
07/11/11 18:36:58
>>810
TL頂点使ってると比率が変わるだけで表示しているものの位置が変わるからね。

812:デフォルトの名無しさん
07/11/11 22:07:15
ドラクエ7の戦闘開始時に画面がばらばらに落ちる処理
をdirectxでやるのに参考になるサイトがあれば
教えてください。

813:デフォルトの名無しさん
07/11/11 22:33:27
URLリンク(www.nicovideo.jp)
ニコニコだけど、これ自作描画エンジンらしい。

エンジンどーこーわからんが、すげぇや

814:デフォルトの名無しさん
07/11/11 22:38:25
DirectXなの?

815:デフォルトの名無しさん
07/11/11 22:39:27
>>813
どーゆーレベルのエンジンかわからんが

それでもスゴイ!と言わざるを得ないw


俺なんて、DirectXのサンプルブラウザーのチュートリアル4を
ウンコをつんつんするような感じで弄ってるところだぞ

816:デフォルトの名無しさん
07/11/11 22:46:48
>>813
開発者のHP見てきた

3Dアクションゲーム作っちゃうレベルの人なので、
素人から見るとすごいが、この人のレベル的にはそんなに凄くないw

817:デフォルトの名無しさん
07/11/11 22:53:59
確かにすごい

トゥーンレンダリングエンジンの開発
キャラのモデリング作成
キャラのテクスチャ作成
モーション付け
アニメーション付け

考えただけで気が遠くなる

818:デフォルトの名無しさん
07/11/11 22:59:16
しかし、SIが正規版なのが気になってしまうw

819:デフォルトの名無しさん
07/11/11 23:03:30
元プログラマー、現在NEET、てw
にしてはいいソフト揃えてんなあ

モデルはちょっとクセがあるけど丁寧だし動きもなかなか自然だねえ

820:デフォルトの名無しさん
07/11/11 23:09:51
URLリンク(www.amazon.co.jp)

この人が見てるらしいこの本、ちょっと欲しいな!

821:デフォルトの名無しさん
07/11/11 23:18:55
XSI

100万とかテラスゴス!
と思ったら、XSI 6 Foundation だと七万八千円なのね

822:デフォルトの名無しさん
07/11/11 23:32:49
一番面倒なのは、モーションを入れる作業だね。
地道に振り付けと、表情のUV切り替え。

データさえ作ってしまえばエンジンの仕事なんてたかが知れている。

823:デフォルトの名無しさん
07/11/11 23:50:43
>データさえ作ってしまえばエンジンの仕事なんてたかが知れている。
どういうこっちゃ?

つーか、プログラマにモデリングが不慣れだというのに
ニコニコではモデリングばっか言われてるのな。

エンジンなんて作れねぇ。つーか無理


824:デフォルトの名無しさん
07/11/12 00:01:35
>>823
プログラマが個人でやる場合だと、データ作る方が大変な気がするw

両方やってるのがすごいなぁと思うよ

825:デフォルトの名無しさん
07/11/12 00:02:54
モデルデータを読み込んで再生するだけなら、普通のプログラマなら全然難しくないんだよ。
モーションデータの生成部分までエンジン側でやっているなら凄いプログラムだが、それはまずあり得ない。

826:デフォルトの名無しさん
07/11/12 00:17:03
そりゃ、モデルデータ読み込んで、toonシェーダかけて再生ってそりゃやるけど。
エンジンってそういうことなん?
あと、全然難しくない、とか言うのやめたほうがいいよ。

つーかライティングやらシェーディング、加えてそれがリアルタイムってあたりで
組むのうんざりだ。


827:デフォルトの名無しさん
07/11/12 00:25:20
データ作るほうがコーディングより作業が大変だろ

828:デフォルトの名無しさん
07/11/12 00:28:54
ビューアは作ったからモデルデータとモーションを作れと言われるのと、
モデルデータは作ったからビューアを作れと言われるとがどちらが良いかと言われたら、
迷わず後者を選ぶ。
労力が全然違う。

829:デフォルトの名無しさん
07/11/12 00:33:44
いつのまに
プログラマーとモデラー・アニメーターの比較になってるんだ?

プログラムの話をしようぜ。
リアルタイムラジオシティtoonレンダでも組んでくれ。

830:デフォルトの名無しさん
07/11/12 00:44:50
光源が固定のラジオシティをリアルタイムといってしまっていいものかどうか。

831:デフォルトの名無しさん
07/11/12 00:52:55
????
なんでラジオシティに光源の位置が、固定か可変か関係あるの?


832:デフォルトの名無しさん
07/11/12 01:08:03
は?全ては光源に依存してるんだから、光源が固定か可変かは大問題だろう。

CG屋さんか?

833:デフォルトの名無しさん
07/11/12 01:13:33
リアルタイムに光源を変化させるのってそんなに難しいの?

まだ、チュートリアル弄ってる段階なんでさっぱりさ!

834:デフォルトの名無しさん
07/11/12 01:17:05
????
そりゃ光源に依存してるけど、普通はレンダリング時に光源の位置を決めて
そこからラジオシティ入るだろ?

つまりはアレか?人がグリグリ動いてる中で、光源(例えば太陽+複数のスポットライト)も
グリグリ動いて、間接光だのをリアルタイムで時間積分して解いてるのか?

つーか、リアルタイムの光源固定ラジオシティでさえまともに実装されてないのに。
光源がグリグリ動くラジオシティがあるっていうのか。ぜひ教えて欲しいわ。


835:デフォルトの名無しさん
07/11/12 01:20:12
>>833
リアルタイムで光源が動いて
シェーディングをかけるのは難しくはない。nvidiaとかのサンプルでもある。

言ってるのは、ラジオシティ。

836:デフォルトの名無しさん
07/11/12 01:24:29
>>834
>>831によると、固定も可変も関係ないらしいから、光源固定のラジオシティも
光源がぐりぐり動くラジオシティもあるってことになるよね。

837:デフォルトの名無しさん
07/11/12 01:28:35
3Dの勉強始めようかな…
なぜかゲームプログラマーになってしまったしな…

838:デフォルトの名無しさん
07/11/12 01:29:35
ここはあなたのブログではありません。

839:デフォルトの名無しさん
07/11/12 01:30:56
>>836
んー
俺の認識だと、ラジオシティでは1枚の光源は
固定したものとしてレンダリングするもんだと理解してるから

可変ってのは無いもんだと思って831を書いたんだけども。
ぃゃ、正直光源がグリグリ動くラジオシティがあるなら、参考にしたいから知りたいというのがある。


確かに1枚=1フレームとして、リアルタイムのラジオシティが出来るのであれば
それは光源が可変なのだと思うけど。
SIGGRAPHでさえ、リアルタイムラジオシティは出てない、はず。

PS3を3台だかつかって、リアルタイムレイトレしてる変な人たちはいたけど

840:デフォルトの名無しさん
07/11/12 05:58:03
変って言うなw

841:デフォルトの名無しさん
07/11/12 17:08:46
ピクセルシェーダで画面の輝度の高い部分にグレア処理をかけたいと思ってます。

画面と同じ大きさで作成したテクスチャにオブジェクトを描画して、
最後にそのテクスチャにグレア処理をかけて画面いっぱいに映し出された
ポリゴンに描画するというやり方でやってます。

しかし、やり方が悪いのかぼやけます。根本から間違ってるのでしょうか?
画面いっぱいに映し出されたポリゴンは出力を見ながら手作業で大きさを
調整しているので、サイズが画面と完全に一致してないのが原因なのか…。

842:デフォルトの名無しさん
07/11/12 17:38:04
テクスチャ自体の解像度が低いとかじゃないの?


843:デフォルトの名無しさん
07/11/12 17:52:51
テクスチャのサイズですが、生成時に画面と同じ640*480を指定しています。
1024*1024等の2のべき乗で無いからぼやけるのでしょうか?

試しに1.5倍の960*720のテクスチャにモデルを描画した後640*480の画面に
ピクセルシェーダで描画したらぼやけは無くなりました。
でもこれは高解像度から低解像度への変換なので当たり前というか…。

844:デフォルトの名無しさん
07/11/12 17:59:54
使ってるビデオカードは2の乗数でないテクスチャに対応しているものか?
そうでないなら640*480なんていう半端なサイズのテクスチャは作れないが

845:デフォルトの名無しさん
07/11/12 18:07:26
ためしに2^nにしてみて検証


846:デフォルトの名無しさん
07/11/12 18:50:05
どうせヘルプをまともに読まずD3DXでテクスチャを作って、勝手に自爆しているだけだろ。

847:デフォルトの名無しさん
07/11/12 19:27:26
シェーダが使えるのにテクスチャが2^nでしか作れないなんて、
VP870(PS1.2)とかXabre(PS1.3)くらいで、シェーダモデル2.0以降なら
1つも無いと思うが。

俺はどうせ座標が0.5ずれてるFAQネタだと思うが。

848:デフォルトの名無しさん
07/11/12 19:33:05
ウィンドウサイズは640x480だけど
クライアント領域が640x480じゃないってオチは?

849:デフォルトの名無しさん
07/11/12 21:17:33
サンプルブラウザのチュートリアル6メッシュっちゅうのを動かしてみたんだが、
メッシュの回転や平行移動ってどうやればええのん?

850:デフォルトの名無しさん
07/11/12 21:33:42
>>849
ワールドマトリックスに好きな行列をセットしろ。

851:デフォルトの名無しさん
07/11/12 21:42:07
>>850
サンキュー!

852:デフォルトの名無しさん
07/11/12 21:56:16
誰か>>801に答えてくれたりしない?

未だにだめっぽなのよ

853:デフォルトの名無しさん
07/11/12 22:03:58
>>850
行列のセットがよくわからなかったので、アフィン変換ちゅうのを使おうとしたんだけど、
こんなエラーが「error C2065: 'null' : 定義されていない識別子です。」

// Set up world matrix
D3DXMATRIXA16 matWorld;
D3DXMatrixRotationY( &matWorld, timeGetTime()/1000.0f );

D3DXVECTOR3 t(1.0f, 0.0f, 0.0f);
D3DXMatrixAffineTransformation( &matWorld, 1.0f, null, null, &t); // ここでビルドエラー
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );


なんで、D3DXMatrixRotationY、D3DXMatrixLookAtLHは使えるのに、
お友達っぽいD3DXMatrixAffineTransformationが使えないのかわかる?

854:デフォルトの名無しさん
07/11/12 22:04:40
null→NULL

855:デフォルトの名無しさん
07/11/12 22:06:24
>>854
ひゃっほう(’’*

856:デフォルトの名無しさん
07/11/12 22:26:17
質問です。

3Dゲームでパラメータ等を2Dで表示する機能を実装したんですが、すごく重くなってしまいました。
本で調べてみたのですがClearでZバッファを一度消しているのが原因らしいです。
とりあえず原因はわかったのですがどういう解決策をとればいいのかわかりません。

いい解決策とかパラメータ表示の代替案とかご存知なら教えていただきたいです。

857:デフォルトの名無しさん
07/11/12 22:35:57
どの本の何という記述からそう思ったのか答えよ。

858:デフォルトの名無しさん
07/11/12 22:42:58
軽くエスパーすると
フォント描画が重いんだと思うけど・・・

859:デフォルトの名無しさん
07/11/12 22:49:29
>>852
頂点の配列は自分で作ってるんだろ?
んで、それをGLの関数にセットして描画してるんだろ?
それだよ。

>>856
Zバッファをクリアせずに
文字を書くときだけZテストをOFFにすれば?

860:デフォルトの名無しさん
07/11/12 22:51:05
>>857.858
すみません直りました。

コードに手は加えていないのに突然直ったので
たぶん別の事が原因だったと思います。それが何かはわかりませんが…。
お手を煩わせて本当に申し訳ない。

861:860
07/11/12 22:53:14
>>859さんも解答してくれてありがとうございます。
>>860の通り解決しました。重ね重ね申し訳ない。

862:デフォルトの名無しさん
07/11/12 23:10:35
それよりもZバッファをクリアすると遅くなる情報の元になった書籍名を答えろ。

863:デフォルトの名無しさん
07/11/12 23:22:40
>>862
マスタリングDirectXプログラミングという本です

864:デフォルトの名無しさん
07/11/12 23:49:30
初心者が買ってはいけない本に認定

865:デフォルトの名無しさん
07/11/12 23:54:54
こんな本でてたのか
日本語でDirectX関連の本は久しぶりだな

866:デフォルトの名無しさん
07/11/13 00:57:58
今、DirectX9SDKで2Dのシューティングゲームを作っています。
ゲームのプログラムは「シューティングゲームプログラミング」の本を参考にして作っているのですが、この本のサンプルでは弾やキャラクタが全て3Dメッシュで作られています。
作りたいのは2Dのゲームなので、DirectX8の2Dゲーム作成のページを参考にしてDX9の仕様に変えながら、後でゲームに組み込むことを目的にして2D描画周りの勉強をしています。
本のサンプルにもテクスチャを描画する関数はついていたのですが、頂点位置を指定しての変形描画や行列を用いた回転を使いたかったので、自分で関数を作ってみようと思いました。

今触っているプログラムの簡単な描画の流れは、
①D3DXCreateTextureFromFile を使ってpngファイルからテクスチャを作成
②SetTexture でテクスチャをデバイスにセット
③DrawPrimitiveUP でバックバッファに転送
④EndScene を待って Present でフリップ (方式はD3DSWAPEFFECT_DISCARD)
というものです。

そこで質問なのですが、テクスチャを描画した際に像がぼやけたようになってしまうのはどうすれば直せるのでしょうか。
現在はステージ画面のフレーム(透過部分を四角く抜いたワク)を描画する段階で、テクスチャの大きさは640x480です。
ファイル形式はpng、bmp、tgaを試してみましたがどれもぼやけてしまいます。

URLリンク(www.uploda.org)
具体的には、画像の左側の絵を描画すると右のようになってしまいます。
解決策を教えて下さいませんでしょうか。

867:デフォルトの名無しさん
07/11/13 02:42:36
ちょっとだけ上を見るとか頭に無いのかな

868:デフォルトの名無しさん
07/11/13 05:05:12
倍の解像度のテクスチャを用意して、0.5ずつ座標をずらしたら綺麗に表示されました。
上を見れなくて申し訳ありませんでした。

869:デフォルトの名無しさん
07/11/13 13:30:43
>頂点の配列は自分で作ってるんだろ?
>んで、それをGLの関数にセットして描画してるんだろ?

だから、頂点が3つあったときに(0 0 0) (1 1 0) (-1 1 0)
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
だと、POSITIONが1個しか無いじゃん
1個しかないのに、3つの頂点入るの?

3つのうちのどれかが入るんでしょ?それuniformじゃないと指定できないじゃん
勝手にCgの方でやられたってこっちが困るんだよ
3つのうちどれが入るか言ってよ!ヴァカ!

870:デフォルトの名無しさん
07/11/13 13:50:10
自分の不勉強を棚に上げて逆ギレとは…。
てか、>>800で終了だろ。

871:デフォルトの名無しさん
07/11/13 16:52:26
>>868
なんで倍の解像度にする必要があるの?

872:デフォルトの名無しさん
07/11/13 19:12:14
ピクセルシェーダ2.0を使う場合って、そのPCが1・1までしか対応
していない場合どうなるのでしょうか?
エフェクトファイル読み込んだ時点でエラー発生でしょうか?
手元にあるのマシンが全部2.0対応なので、誰か分かる人ご教授お願いします!

873:デフォルトの名無しさん
07/11/13 19:15:26
>>870
だから、何を入れるのか決めるのってCgだとuniform使うんだってば
何回も同じこと言わせないでください><
uniformがついてないからわからないんですぅ!


と、厨臭いこと言い方ですいませんでした。自分の勉強不足です
ただ一人じゃわからなくて。アドバイス頂けたらと思って伺いました。
ほんとすいません。教えてください

874:デフォルトの名無しさん
07/11/13 19:41:34
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i、
               i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i゙i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/|;;ト;ト;;;;;;;;;;;;;;;;;;;;;;;;ヽ、
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ;;ノシ/ノ |゙!iヽヾ;;;;;;;;;;;;;;;;;;;;;;ヽ、
         /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ンツン    ! ヽ、 ヾ;;;;;;;;;;;;;;;;;;;;;;;ヾ
           /;;;;;;;;;;;;;;;;;;;;;;;/シンて__;;;、   ,;;;.ソ ~゙ヽ;;;;;;;;;;;;;;;;;ヽ
        /;;;;;;;;;;;;;;;;;;;;;/ゾ      ゙!  /     ノミ;;;;;;;;;;;;;;;;ヽ、
      /;;;;;;;;;;;;;;;;;;;;入  ーt┬‐ュ ヽ ( <エコブ ┃ノ;;;;;;;;;;;;;;;;;ヾ
      /;;;;;;;;;;;;;;;;;;;;;;;;ヽ┤     ̄_ノ  ゙i i ‐-、   |;;;;;;;;;;;;;;;;;;;;;;;;゙i  必要な分は見せたということだ
.      /;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::l、        : : ゙    ノ;;;;;;;;;;;;;;;;;;;;;;;;;;l
    /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::T:、_     r‐ i i┐  イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l   これ以上は見せぬ
.    l;;;;;;;;;;;;;;;;;;;;;;;;;/;|   k┴ヽ、  /‐、l´゙)~ヽ ( |イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
    l;;;;;;;;;;;;;;;;;;;;;;イ;;;|  |   / /  _゙'_'゙  ゙i )| |;;;;;;;;;;;;;;;;;;;;;;;;;;;l
     l;;;;;;;r‐''゙;;;;:;;:;;;;l  ヽ、 ,|. (   f‐ニ‐ヽ /./ /ヾヾ;;;;;;;;;;;;;;;;;;;l
     ヾ/;;;;;;;;;:;;;;:;;;;;ヽ   ゙ヽ\ヽ―'゙―゙'‐// / /;;;:::....゙''‐、;;;;/
  _,.,.r/ ,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ   ゙i ゙i、゙'v    v' i / ノ;;;;::::;;;;;;;;;;;;;;;:.ヽ、
 /::/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ、  ゙r_ヽ! 、,.  ! |  ,/;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;ヽ、

875:デフォルトの名無しさん
07/11/13 20:00:53
>>873
てゆーかホントにお前が何がやりたいんだよ
>>795がやりたいとして
ホントに頂点数は5なのか?
それくらいならできなくもないけど頂点数が数十個のオブジェクトを
この方法で処理するのは土台無理な話だし
ホントにそんな処理が必要なのかも疑わしい

いま自分が目指してる最終地点と
それに対してどういうアプローチをしてるのかぐらい書いてもらわんと
説明する気も起きない

876:デフォルトの名無しさん
07/11/13 20:31:58
>>795さんではありません><

単純に>>869の状況のときに
float4 position1にはどんな座標が入ってるか知りたいだけです!

ポリゴンは(0 0 0) (1 1 0) (-1 1 0)で三角形指定して、頂点が3つあるのに
シェーダーで受け取るPOSITIONセマンテックは1つだけっていうのがわからないのです

Output {
float4 position : POSITION;
float4 color : COLOR;
};
main (float3 position : POSITION)
{
Output OUT;

OUT.position = float4(position, 1);
OUT.color = float4(0, 1, 0, 1); // RGBA green

return OUT;
}

なんでfloat3 positionが1個だけなの?
じゃあ、これに float3 position2 : POSITION1とかしたら、何が入るの?
(0 0 0 ) (1 1 0)? それとも(-1 1 0)?
そこら辺の説明が本でも何でも載ってないのでわかんないんです

877:デフォルトの名無しさん
07/11/13 20:39:44
>>876が何を言いたいのか良くわからんが
頂点数が3個なら
mainは頂点数と同じ数だけ
つまり3回呼ばれてる
1回目のmainのpositionには(0,0,0)がはいっていて
2回目のmainのpositionには(1,1,0)が以下略
ここまではOK?

878:デフォルトの名無しさん
07/11/13 20:55:26
そして
float3 position2 : POSITION1だが
Cgがどんなものなのか知らんので
POSITION1なんてセマンティックがあるのかは知らんが
あると仮定するとposition2には何も入ってきていない
position2になにを入れるかは
頂点情報を設定するときに自分で何をいれるのか決める部分なので
何も指定してないのなら何も入らない

879:デフォルトの名無しさん
07/11/13 21:05:01
>>877-878
ありがとうございます><

間違ってたところがありました。POSITIONはセマンティックが1つだけで
COLOR1とCOLOR0、 TEXCOORD0~7でした!

でもPOSITIONのところはわかりました!ありがとうございます!その頂点分呼び出されて
そのときはPOSITIONに、その値が入るんですね!


でもCOLOR0~1とTEXCOORD0~7がわからなくなってしまいました。
これも外部から指定するのでしょうか。uniformじゃ無いのに。

880:デフォルトの名無しさん
07/11/13 21:07:30
なんという理解力の無さだ・・・

881:デフォルトの名無しさん
07/11/13 21:07:31


struct Vertex{
D3DXVECTOR3 position ;// 頂点の座標(必須)
D3DXVECTOR4 color ;
D3DXVECTOR3 position1 ;// 拡張した頂点情報
D3DXVECTOR3 position2 ;// 拡張した頂点情報
} ;

#define MY_V (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2|D3DFVF_TEXCORDSIZE3(0)|D3DFVF_TEXCORDSIZE3(1))

main (
float3 position : POSITION
float3 color : COLOR,
float3 posion1 : TEXCOORD0,
float3 posion2 : TEXCOORD1
)
{ ・・・

TEXCOORDはテクスチャ座標を入れるために用意されてはいるが
別にテクスチャ座標を入れないといけない決まりはない
たとえば複数光源の計算をしたいときにそれぞれの光源ベクトルをいれたりとか
ここはプログラマが必要に応じて拡張すべきところでみんなはこれのことを言っている
一つ一つの頂点に複数の情報を持たせられるよってだけで
複数の頂点の情報がはいってくるわけではない

882:デフォルトの名無しさん
07/11/13 21:14:53
つまりTEXCOORDは何入れてもいいということですか。

twoTextures(float2 position : POSITION,
float2 texCoord : TEXCOORD0,

uniform float2 leftSeparation,
uniform float2 rightSeparation,

out float4 oPosition : POSITION,
out float2 leftTexCoord : TEXCOORD0,
out float2 rightTexCoord : TEXCOORD1
)
{
oPosition = float4(position, 0, 1);
leftTexCoord = texCoord + leftSeparation;
rightTexCoord = texCoord + rightSeparation;
}

でもこういう風に、「入ってくる側のfloat2 texCoord : TEXCOORD0,」の場合はプログラム側で
指定しないとダメなんですよね。

outのところは、自分の都合にあわせて設定してるっていうのはわかるんですが。


883:デフォルトの名無しさん
07/11/13 21:30:31
やべえ、頭痛くなってきた
誰か、バトンパス

884:デフォルトの名無しさん
07/11/13 21:53:21
   ↓
   ↓
   ↓

885:デフォルトの名無しさん
07/11/13 22:28:46
教えて君・粘着君に付き合うのが嫌なら無視するのが常識。


886:デフォルトの名無しさん
07/11/13 22:33:51
お前頭いいな。

887:デフォルトの名無しさん
07/11/15 05:26:10
高さマップの画像からデコボコな地形を生成したいんですが、
全くやり方が分かりません。ヒント頂けないでしょうか?

888:デフォルトの名無しさん
07/11/15 07:08:10
画像の1ドット毎を高さに変えるだけ。
RGB、つまり256色x3色=768段階の高さが取得できる(アルファも取りたけば自由に)。
黒なら高さ0、白なら768xαという高さに決めればあとは自分でその高さに点を配置して面を作っていく。

889:デフォルトの名無しさん
07/11/15 07:31:08
24bitもってて768段階? なんでbitでやらんの
あと移動可などのフラグとか含めたりする。



890:デフォルトの名無しさん
07/11/15 07:58:39
俺は、>>887の質問の内容が分からん。
エスパーの例題かと思った。
元データはバンプマッピング用のテクスチャの事?
デコボコな地形って何?ポリゴングリッドの事?
それは、DirectXの質問なの?

891:887
07/11/15 12:27:14
言葉足らずで申し訳ないです。
高さマップの画像を元に、メッシュを作成する方法です。
>>888
画像のデータを1ピクセルごと取得していって、自分で頂点を打っていく
ということでしょうか?

892:デフォルトの名無しさん
07/11/15 13:01:48
それ以外にどうしろと?

893:デフォルトの名無しさん
07/11/15 14:49:52
>>891
hight-fieldのことでしょ?

濃淡グレーマップが高さを示しているっていうの。
単純に0-255でRGB値を読み込んで、それをポリゴンの1頂点として
メッシュを刻んでいけばいいんでないの?

RGB値が読めないとかいうなら
PPM、PGMのASCIIモードで保存でもして読み込めばいい。
当然、ピクセル分の頂点が出来てしまうからデータは重い(255×255pixelなら、255×255頂点)
あと頂点間のつながりもプログラムで指定する。

ということなのでは?

894:デフォルトの名無しさん
07/11/15 15:11:38
たぶん、
そういう超便利関数はないの?
って聞いてるんじゃね?

895:デフォルトの名無しさん
07/11/15 15:26:53
pov-rayとかならあったかな。超便利関数
ポリゴン生成してくれるまでは知らんけど。


896:デフォルトの名無しさん
07/11/15 17:00:44
っていうか、普通のバンプマッピングを使ってレンダリングしたら駄目なの?
地形とか作りたいなら、元データに高さマップ使う意味がわかんないし。

897:デフォルトの名無しさん
07/11/15 17:27:01
ビットマップなんてヘッダ以外はただの2次元配列じゃないか

898:デフォルトの名無しさん
07/11/15 18:48:33
URLリンク(www.microsoft.com)
こんなの?
MDXだが。

899:887
07/11/15 19:15:13
>>892
なかなか初心者には分からないものです。

>>893
なるほど、非常に参考になります。

>>894-895
そういうことになりますかね。xファイルをロードする関数があるので、
高さマップなどにも専用の関数がある、もしくは似たようなことが出来る
と思ってました。

>>896
バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから
レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。
それと地形作成専用のツールの出力が高さマップだったので。
逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する
手法が存在するのでしょうか?
>>898
実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体
よく理解していないなかったので手詰まり状態でした。
アドバイスのおかげでそのソースコードの意味も今分かりました。

とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。
ありがとうございました。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch