2 :
デフォルトの名無しさん :03/11/24 18:36
2
人間は宇宙人だし、日本語も宇宙語と言える。 よって(ry
1 は土日で勉強しながら、判らなかった事をチクチク書いたり。
引っかかって、困った事とか書きます。
とりあえず、今日までずっと判らなかった VisualStudio.NET 2003 に
インストールできない原因がわかったので、ここに書いておきます。
単なるVisualStudio.NET 2003未対応でした、DirectX 9.0 Update (2003 Summer)
で対応していたようです、
またこれをインストールするとき前のバージョンのDirectX SDKをアンインストールしないと、
プロジェクトの生成が変になるという事に気づいています。
>>3 それは屁理屈〜
おい
>>1 よ、言語に関係なく
>>5 に統合されたのを知ってるか?
7 :
デフォルトの名無しさん :03/11/25 21:11
誰も居ないので独り言モード化す1です
とりあえず、ダウンロードには成功したのでヘルプを読んでいますが、C#で勉強しようとするといきなり壁がありますね。
サンプル等を見ていると、まずは一旦C++で軽く流しておいたほうがやはり無難なのでしょうかね?
>>6 ここはド素人お間抜けなので知っているけど知らない事にしておきますぅ
DirectX 初心者はもちろんC#初心者も歓迎します、だれか一緒に勉強しましょ〜
のし
9 :
デフォルトの名無しさん :03/11/25 22:29
良スレノ予感
せっかくのC#なのでDirectXをポトペタで済ます方法ないっすかねー
11 :
デフォルトの名無しさん :03/11/26 15:58
・・・ポトペタ? ('o';
13 :
デフォルトの名無しさん :03/11/26 21:19
メッシュの方から頂点のデータを取ってきて物体を変形させたりしたいんですが、 mesh = Mesh.FromFile("mesh.x", MeshFlags.SystemMemory, device, out materials); VertexBuffer vertexBuffer = mesh.VertexBuffer; CustomVertex.PositionNormalTextured[] verts = new CustomVertex.PositionNormalTextured[10]; GraphicsStream stm=null; for (int i=0;i<10;i++) { verts[i].X = 10.0f; stm = vertexBuffer.Lock(0, 0, 0); stm.Write(verts[i]); } stm.Close(); vertexBuffer.Unlock(); meshMaterials = new Direct3D.Material[materials.Length]; for( int i=0; i<materials.Length; i++ ) { meshMaterials[i] = materials[i].Material3D; meshMaterials[i].Ambient = meshMaterials4[i].Diffuse; } これではダメなのでしょうか?ビルドは通るんですが描画されずに灰色の画面になるのれす・・ 分かりにくい説明でスマソ(;´∀`)
14 :
デフォルトの名無しさん :03/11/27 17:36
とりあえずメッシュ描写コードだけ出来るかどうか試してみては。 どういうデータのメッシュか知らないけど、視点に近づきすぎてるか それともDevice設定間違ってるか。
>>12 DelphiとかC#とかでー
ぽとっとコンポーネントを落としてペタっと貼り付けながらソフトウェアを作っていくこと
つまり初期化がまだ面倒だからいいかげんDirectXコンポーネント作れってこと
DelphiとかだとダブルクリックすりゃDirectXの世界へご案内なのよ
誰かつくってよー
>>15 作って欲しいと思ったら、必要なコンポーネントと明確な仕様を挙げよ。
どっかでデバイスかVertexBufferの設定間違ってるんですかね? まとりあえず色々やってみま(ノ∀`)
>>18 現在ヘルプ読み読み中の1 です、プログラムをみても現状なんだかさっぱりですが頑張ってください
僕も頑張ってますよろしくお願いします。
20 :
デフォルトの名無しさん :03/11/30 16:04
>>16 Xファイルアニメーションのサンプル。
あれのの単独ソースが欲しいデス。
Xファイルのサンプルいじってるんだけれど、元々のBlank以外のコードがわけわかめ。。。。
ヴぁーちゃる使いまくってる部分ですらコメント殆ど無いし。
わかんねーと思ってかたっぱしからぐぐってるけど、ヒットするページが1・2件しかないのもざらにある・・・。
Xファイルのアニメーションまで書いてる書籍ってなんかありますかね。
C#使う必要性がわからん… X-BOXででも動かすのか?
22 :
デフォルトの名無しさん :03/11/30 19:32
骨アニメできたー、ハァハァ
といっても自前のコードに殆どこぴぺで持ってきただけですが。
デフォで出力されてるコードの説明が切実に欲しいと願う今日の半日・。
こっちの説明する方が先だろうと思うのは俺だけでしょうか。
いくらぐぐっても解説全然でてこねえし。英語覚えろって事ですかね・・・・。
>>21 なんでX-Boxが引き合いに出るのかよく分かりませんが・・・・
まぁフォームのコントロールの追加とかが楽なんでこっちでやっとります。
コード自体かなり減ってるし、個人で遊ぶならこっちのがええかなと。
Xfileつーか、3Dモデルって人気あるんだね。 でもさ、DX8の頃から思ってたけどXfile扱うのって処理する関数や型を覚える事じゃ無いのになって。 (提供されるライブラリ処理のみで良いって方は、それにあらず) 最初は3Dの基本を覚える。 で、Xfileのフォーマットを覚える。 それで、fileから必要な情報を受ける。 それを基に頂点描画。 アニメーション情報が入ってるなら、スキニングなり親子構造なりでモデルを動かす。 これってさ、D3DX系のライブラリ使うのを覚えるのとは別次元の物。 関数をどう使うか調べるだけじゃなく、関数の処理を理解出来てないと つかえねーだの、不親切だのって言い出す始末になるかと。 ある程度の人間は自前でXfile読み込み、自前のモデル型に情報いれて 自前でアニメーションなんてあたり前だよ。 つまり、言語を覚えて、プログラム覚えて、 数学出来て、3D処理出来てって感じの基礎力が必要なんだよ? DirectXの関数覚える事 != 3Dの勉強 これを踏まえて、Xfile系を覚えたいって人間は基礎力があるか自分を振り返ってみれば。 …マジモードでした。
長文はスルー
>>21 1の場合はGDIよりもう少し派手な事がしたいのと、ちょっとムチャな描画をしても耐えられそうなのと
きたる Longhorn の布石です。
バリバリ3Dをしようとは思っていません。
>>25 にちょっと付け加え
そうは言っても、できるようになったら・・・するかも知れません
DirectXがC#に向いてるんじゃない C#がDirectXに向いてるんだ
>>22 X-BOXの中の人はC#が多かったりするのだよ。
X-BOXはC#はおろかDirectXも経由せずにチップ直接キックとか良く聞くけど
XBoxって.NETネイティブなの?
33 :
デフォルトの名無しさん :03/12/04 17:12
今のDXバージョンv9.00.0900ですか?
FrontPage -PukiWiki- ↑ サイトのタイトルではないと思うんだが。
( ’ ⊇’)つ旦
37 :
デフォルトの名無しさん :04/01/28 14:42
conv3ds.exeってどこに入ってますか? MSサイトから落としたのに見つからないです。
DirectX3Dのサンプルで、チュートリアルの中に Vertexっていうのがあるんだけど、ポリゴンは 表示されるんだけど、視点を設定してもずっと同じ位置に表示 されたまんまなんだよね。 試しに別のサンプルのポリゴンを同じ画面に表示したら ちゃんと視点の設定が反映された。 同じような現象になった方いませんか? というかどこかに視点の設定を反映させるパラメータが あるんだろうか?
>>38 トランスフォーム済み頂点だからじゃんとかいってみる
PockertPC用DirectPlayってのをMSのサイトで見たんですが、ってことはそれ以外(DirectSoundとか)はまったくPocketPCでは使えないってことなんですか? 微妙にスレ違いで申し訳ないんですが、PocketPCで音を重ねたりするようなアプリを作る方法を探しています。どなたか情報ご存知でしたら教えていただけないでしょうか。
>>4 あの、VisualStudio.NET 2003のテンプレートにDirectX 9.0が表示されないのは
つまり、そういう事なんですか?
初心者ですいません。
43 :
デフォルトの名無しさん :04/02/03 15:48
Managed DirectX と DirectX SDK の違いを教えて下さい。 どれをダウンロードしていいのかわかりません><。
44 :
デフォルトの名無しさん :04/02/03 17:24
どっちともDLしてインスコする。
45 :
デフォルトの名無しさん :04/03/02 00:45
C#でDirectXってほんとにいばらの道だね。 やっと1週間半かけてDirectInputを使ったプログラムが出来た。 先は長い・・・・
>C#でDirectXってほんとにいばらの道だね。 なんで?
>>46 資料が少ないのと、comとusing Microsoft.DirectXとどっちを使ったら
いいのか分からないから
その程度の悩みなのか。 C++とかでやったらもっと死ぬぞ。
49 :
デフォルトの名無しさん :04/03/04 21:50
>>48 C++は資料やHPがたくさんあるからマシ。
そうだね、C#でプログラム組んでわからなかったときは、C++のHP検索してるよ。
51 :
デフォルトの名無しさん :04/03/24 13:23
52 :
デフォルトの名無しさん :04/03/30 20:15
Visual Studio .NET 2002 + .NET Framework 1.1 + DirectX9 SDK summer update + C# VSの参照設定はWINDOWS\Microsoft .NET\v9.00.1126の中の物を使用しています。 DirectInputのJoystickサンプルをそのままビルドしてみたのですが、実行すると foreach (DeviceInstance instance in Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly)) { joystick = new Device(instance.InstanceGuid); break; } の部分のManager.GetDevicesでNullReferenceExceptionが投げられてしまいます。 サンプルは正常に動作したのですが、問題点や上手い解決方法をご存知の方が いらっしゃいましたらどうかよろしくお願い致します。
53 :
デフォルトの名無しさん :04/04/04 00:14
>>52 joystick.Acquire();
joystick.Poll();
してから
joystick.CurrentJoystickState
で簡単にジョイスティックの情報が取れますよ
僕は
joystick = new Device(instance.InstanceGuid);
break;
のコードにjoystick.Acquire();を追加しました
C++より列挙がらくでびっくりしました。
全くの手探りでとんでもなく初心者の質問なんですが。 C++で作った時はPeekMessageとかでメッセージループを書いたもんですが >51 をみるかぎりやっていないようです。 C#はまさかタイマーでやるとか? 違うよなぁ。 どなたかサンプルコードを提示していただけませんか。 form の main にループを書くのかしら。。。
単純にスレッドを生成してループさせればいいだけの話では?
57 :
デフォルトの名無しさん :04/04/18 17:31
private Timer timer; private void InitializeTimer() { // タイマーを作成 timer = new Timer(); // インターバルを30[ms]に設定 timer.Interval = 30; // イベントハンドラを指定 timer.Tick += new EventHandler( this.Render ); // タイマーを起動 timer.Start(); } スレッドづくりは難しいのでイベントハンドらをつかってみるといいと思います 後は自作のRender()の中に描画処理を書けばいいです
58 :
デフォルトの名無しさん :04/04/18 17:39
private int preCount = 0; private const int FPS = 16; public void GameLoop() { int t =0; if( Environment.TickCount < preCount) preCount = Environment.TickCount; double t = Math.Abs(Environment.TickCount - preCount); if( t >= FPS ) { do { t -= FPS; preCount += FPS; }while( t >= FPS ); // 描画開始 Render(); } } Timer使わないとするとEnvironment.TickCountを使ってこの関数を作って この関数をwhile(true){}内で呼べばいいです。
返事が遅れました。ありがとうございます。 >55 はい、WIN32APIで書いてました。 Formクラスに既にメッセージループがある、ということですね? メッセージハンドラなどはMFCを触ったのでそれは解りますが、 一定の間隔でプログラムを実行したい場合、どうすれば良いかが分かりません。 タイマーだと簡単ですが、それ以外の方法ではないと DirectXのゲームとしては遅くありませんか? >58 ありがとうございます。 ところで while(true){} はどこに書くのが理想なのですか? この状態でもメッセージハンドリングは生きているのですか? 終了処理は無くても良いのですか? いろいろとすみません。
60 :
デフォルトの名無しさん :04/04/26 23:03
>>59ごめんおれもおくれた・・・ Formを継承したクラス内のゲームの初期化をすべて終えた後にいれます。 ぼくはRun()の中に書いた、ぶちゃけどこでもいいよ。 while (this.Created) { // 1フレームの長さをfpsにそろえます if (device != null) { if( Environment.TickCount < preCount) preCount = Environment.TickCount; int t = Math.Abs(Environment.TickCount - preCount); // fpsだけ経過していたときレンダリングをします if( t >= fps ) { do { t -= fps; preCount += fps; }while( t >= fps ); // レンダリングの前処理を行います。 // デフォルトではクリア処理が行われます PreRender(); SetupMatrices(); // レンダリングを行います。 device.BeginScene(); Render(); device.EndScene(); // 表画面に表示します。 device.Present(); } } // Windowsメッセージを処理します。 Application.DoEvents(); }
61 :
デフォルトの名無しさん :04/04/26 23:04
62 :
デフォルトの名無しさん :04/04/28 14:47
現在、C#とDirectXを勉強しています。 DirectXのC++のDirectShowのサンプルのCaptureTexのようなもの(USB or IEEEカメラでリアルタイムにDirect3D画面に出す)をC#で作りたいと考えています。 C#ではDirectShowがサポートされていないと聞きましたがDirectShowをラッパー?したものを使えば大丈夫とも聞きました。 C#でこのようなプログラムを作成するにはどうすればいいでしょうか?サンプルや参考になるページなどがありましたらお教えください。よろしくお願いします。
MC++でラッパーを作るだけ。
64 :
デフォルトの名無しさん :04/04/28 21:35
>63 具体的にどうすればいいでしょうか?
DirectShowが呼び出せる言語でDLLを作って、C#からDllImportする。
66 :
デフォルトの名無しさん :04/05/08 16:42
>62-65 誰か作って・・。簡単なの?
他人に頼るくらいなら、きっぱり諦めたほうがいいよ。
まずC++側で目的のものを作る。 次にMC++で.NET対応のコンポーネント化する。 .NET対応作業はさして難しくはない。
69 :
デフォルトの名無しさん :04/05/08 18:52
C++はさっぱり分からないんですが・・・。
文法はC#に近いんだから、それほど問題はない。 こんなところで分からないなどと書き込んでいる暇があったら、 その時間に学習すればいいだけの話。
ところで、DirectDrawのHardware overlay surface(たぶん)を使って ビットイメージを連続的にTV出力したいだけの漏れなんだが、いったい どっから手を付けていけばいいのか? どっかにサンプルない?
72 :
デフォルトの名無しさん :04/05/12 14:18
C#初心者とDirectX初心者です。 Managed C#で作成したプロジェクトがありまして そこにImageListを追加してImagesに画像を追加しました。 実行すると 【'GraphicsTemplate.ourRenderTarget'は'フィールド'を意味しますが、'クラス'でなければなりません。】 とエラーが出てきました。単なるWindowsアプリケーションではこのようなエラーはでなかったのですが、どうしてでしょうか?簡単な説明と解決法をお願いします。
73 :
デフォルトの名無しさん :04/05/22 01:14
エラーの意味はourRenderTargetはネームスペースだけどクラスではない、と言う意味。 Listを使っているみたいだから、foreach構文を使って追加した画像にアクセスしてみたらどう。 それとArrayクラスやリストについて勉強するといいかも。 以上へたな回答でした
74 :
デフォルトの名無しさん :04/05/25 15:29
DirectX初心者です。 VertexBufferを動的に扱う方法をお教えください。 VertexBufferの要素の数と値を動的に変化させたいと思っています。 具体的にはマウスをクリックする度にVertexBufferに追加していきたいと思っています。 マウスでクリックした座標をどんどん結んでいく感じです。 試しに作ってみたのですが、クリックを繰り返すと 「Exception An exception has occurred. This sample must exit. System.OutOfMemoryException:プログラムの実行を続行するための十分なメモリがありませんでした。」 と出てきてしまいます。何か方法などありますか?
最初に作ったときのサイズを超えていたらエラーが出るのは当然。 DirectXに手を出す前に、言語の基礎をやり直すべき。
76 :
デフォルトの名無しさん :04/05/26 13:14
ぃあ、配列のオーバフローとかそういう意味ではないんですよ。 Render()の中で新規でVertexBufferを作成してその中にListに格納した値を入れています。 Render()中でVertexBufferを作るというのは、問題なのでしょうか?
それは解放されずに作りすぎになっているのでは?
78 :
デフォルトの名無しさん :04/05/26 14:51
たぶん。仰る通りそうだと思います。 いまいち、Render()、Frame()、InitializeDeviceObjects()などの関係が よく分かりません。この場合どうするのが一般的なんでしょうか?
79 :
デフォルトの名無しさん :04/05/26 19:30
日経ソフトウェアの今月号にC#とDirectXでシューティングゲームを作るというのがあったので DirectX初心者の私でもできるような記事かなと思って買ったのですが うまく実行できません。VC#使いだけど、記事ではBorland使っているし。 しかたがないから 1から自分で勉強したいので、 C#ユーザー向けの DirectXの初歩から学べる ページを紹介してください
80 :
デフォルトの名無しさん :04/05/26 19:44
C#+DirectXでトゥーンレンダリングの方法を紹介しているページとかありますか?
81 :
デフォルトの名無しさん :04/05/26 21:12
今日からDirectXに挑戦しようと思って、 DirectX SDKなどをダウンロードしてインストールしたはずなんですが、 サンプルプログラムをダウンロードして実行しようとすると 「初期化できない」というエラーになります。 どうしてなんでしょうか? 解決法を教えてください。このままじゃDirectXのDの字も出ないうちに 諦めなければなりません
>>81 Text3D、LightingVSあたりを実行してみ?
しょぼいグラフィックボードじゃSDKのかなりのサンプルは起動しない
少なくとも質問する上で、ビデオカードの種類や実行したサンプルの名前が必要だということを 考えることが出来ないのであれば、 >今日からDirectXに挑戦しようと思って、 これはまだ早すぎる。 >このままじゃDirectXのDの字も出ないうちに諦めなければなりません 妥当な判断。
デバイスマネージャで確認したところ
> S3 Graphics ProSavage + utilities
とのことです。
2002年のPCだし仕方ないのかもしれん。
ネットに転がっているゲームなどは、DirectXの初期化ができない。
DirectX診断ツールでは、
> ディスプレイ ドライバがサポートしていないため、
> ハードウェア アクセラレータを使った Direct3D 9+ は利用できません。
> ハードウェアの製造元から新しいドライバを入手できるかもしれません。
というので更新しようと思った。
で、検索したが、ない。メーカーに聞いたがないとのこと。もうだめぽ。
DirectDraw アクセラレータ、Direct3Dアクセラレータ、AGP テクスチャアクセラレータは
すべて 使用可能 と 成っているので まだ少しの希望は残っているのですが・・・
Text3D は起動した。 いろいろプログラム動かしているから遅いのかもしれないが、
それでも 400x300で 4fps(w
Lighting は 3fps。
http://dxsimulation.at.infoseek.co.jp/supplement/test.htm ここの「オブジェクトの表示」は動かなかった。
長々とすみませんね。
でも諦めきれないので、なんとかDirectXを弄れるように頑張ります。
最近のPCなら動くと思うので試しますが、手元にあるのは今年に買ったノートPCだけ・・・。
ノートPCだけど最近の機種だから動いてほしい、マジで。
> S3 Graphics ProSavage これでまともに3Dをやるのは無理。
> S3 Graphics ProSavage これでまともに3Dをやるのは無理。
> S3 Graphics ProSavage これでまともに3Dをやるのは無理。
>>84 最新だから動くかっていうと、それは間違い。
とりあえず、DirectXの前に適切なPC購入の勉強からしてみてはどう?
>>84 昔、K6のDynabookでSavage(Proじゃない)が乗っていて、それで組んでいたことがある。
DirectX8のD3DXで、(確か)100ポリぐらいのQVGAで60fps動いた。
Spriteクラスを使って数個のオブジェクトが動く程度のものなら問題ないだろう。
・・・たぶん。(;´Д`)
なにせ何年も前の話だから記憶も曖昧なのは勘弁。
>>85-90 サンクスコ。 とりあえず自作板とか初心者板、くだ質巡って 情報収集してきます。
早く喪前らと同じくらいの実力をつけたいですよ・・・。第一歩すら踏めてない。
もともとゲーム(=DirectX)使うつもり無くてPC買ったからなぁ。
少しグラフィック関係には弱いのかもしれない。
デスクトップにテレビ機能なんていらんから、3Dを強化したの選べばよかった。
デスクトップ(2002年購入)は英語分からんからメーカーの日立に聞いたら
「無い」って断言してたので諦め。
ノート(2004年購入)はメーカーのNECのウェブサイトにドライバアップデートの時に見たら
ATI社の RADEON だった。期待できるかもしれないな。
92 :
デフォルトの名無しさん :04/05/29 17:22
>>74 // マルチレンダリングターゲット
device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, verts);
をつかいましょう僕も動的に扱うのにC#の資料がなくて苦労しました。。。
vertsにフレキシブルな頂点データの参照を書きます(わかるよね?)
あとはサンプル、ヘルプやC++の資料を柔軟に解釈すればできるはずです。
では健闘を祈ります
93 :
デフォルトの名無しさん :04/05/29 17:32
>>80 C#からDirectXを始める場合資料がないので結局C++からC#に直して考えるかMSのページで我慢するかです
3Dグラフィクスを始めたい場合おすすめ書籍は
「DirectXゲームグラフィックスプログラミング(N2Factrory)」
をみるとけたたましくわかりやすいです。すべてのDirectXの初期化コードの意味がわかるようになります。
いかんせんC++なのですがC#に似ているコマンドを探せば何とか対処できるはずです。
C++より断然かんたんなC#ですからがんばってください。
94 :
デフォルトの名無しさん :04/05/29 17:36
>>91 そのパソコンでも勉強はできます。
3Dゲームプログラムは2Dゲームの応用なので
まずDirectDrawをつかった2Dゲームを作る練習からすると良いと思います。
またDirectDrawは初期化も簡単だし、スプライトさえ表示できれば簡単にゲームが作れます。
ぜんぜん悲観することはないですよ。
>>93 >をみるとけたたましくわかりやすいです
斬新な表現だ。
つーかさ、DirectXを叩くクラスが.NET Frameworkにあれば けたたましく苦労する事ないのにな。
>>94 自作板で厨房な質問したのに、親切に教えてもらえた―(゚∀゚)――!!!
おかげで無事にドライバアップデート完了。
Direct3Dが使えるようになりますた。
これで日経ソフトウェアについてたサンプルが実行できますよ。
その後は2DからDirectXの勉強していきたいです
よかったな。厨房質問しなくて良いようにがんがれよ
99 :
デフォルトの名無しさん :04/06/03 22:37
88べーしっくしかつかったことなかったが きょうからC#とDirectX9勉強する 初心者にもわかるHPつくってまとめるから わからないことあったらおしえろ と書いてみるてすと
100 :
デフォルトの名無しさん :04/06/04 01:04
なんだよ まじで誰もいないのかよ C#.netでDirectXってこと自体が破綻してるってことか? だがチュートリアルを攻略するまでは諦めんからな 誰でもいいから教えろまじで
...zzzZZZ
102 :
デフォルトの名無しさん :04/06/04 19:49
>>92 >// マルチレンダリングターゲット
>device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, verts);
ありがとうございます。がんばって調べてやってみます。
C++からDirectXやっている方は、C#でプログラムしてもなんとかなるかと
思いますが、C#からDirectXをはじめたものとしては、参考書とか少なくて
大変です。これからもがんばってみます。
C#からDirectXを始めたヤシはC++の参考書も読むべし
104 :
デフォルトの名無しさん :04/06/04 21:56
>>102 そのへんは結構がんばったのでまた分からないことがあれば質問してください。
ま、僕が答えられたらの話だけど。。。
C#。NETの本を読んでみた Cっぽくてなんとなくわかりやすかった 土日でDirect3Dのチュートリアルをやりまつ とイチイチ予告してみるてすと。
>>105 独り言を言いたいならゲ製作技板にそういうスレあるよ
Direct3Dのチュートリアル1の パラメータ設定んところで SwapEffectの項目は D3DSWAPEFFECT_DISCARDが選択されてますが D3DSWAPEFFECT_FLIP D3DSWAPEFFECT_COPY との違いが説明読んでもよくわからないので 解説お願いシマス
>>108 D3DSWAPEFFECT_FLIP = バッファ交換
D3DSWAPEFFECT_COPY = 上書き
D3DSWAPEFFECT_DISCARD = これは何?
超サンクスコよくわかりました
112 :
デフォルトの名無しさん :04/06/05 00:07
おれも聞きたい。 SwapEffect.Discardのとき250のfpsが なぜかSwapEffect.CopyにするとFpsが200になる?? 読んでもあんまわかんなかったけど予想はつく、 Discardだとバックバッファの情報はPresent()した瞬間に消えて再利用ができない。 Copyの場合バックバッファを二つ作ってPresent()した後コピーするからバックバッファを利用できる。 しかしメモリ効率が悪い。 たぶんCopyはマルチパスレンダリングや2分割画面を使うのに有効だと思う。。。
113 :
デフォルトの名無しさん :04/06/06 09:55
>>55 >ちゃうちゃう、この場合すでにFormクラスにループが仕込んであってイベントがあったら
>それに対応したメソッドを呼ぶんよ。
その仕込んであるループってどういう形なんだろうか?
その部分がメソッド化しててオーバーライド可能であればWin32APIのような
メッセージループができるわけだが・・・
Form.WndProc()
>>114 なるほど!ありがとうございました。そのまんまWndProc()だったんですか!
C#で何も操作していなくても画面が進行していく処理が知りたかったのですが
これならタイマやスレッドを使うより高速で安定してますね。
近いうちにC#とDirectXで何か作ろうと思ってた所でとても助かりました。
>>79 その記事はDirectX初心者用ではないよ。
だってソースも間違ってるから、それに気づかないとダメっぽいw
それと、その程度で行き詰ってるようでは先は無いな。
諦めろw
諦めろとか、やめろとか安易に言う奴さ、 おまえはよほどいいゲームを作れたんだな? 作品見せてみろよ 初心者用の板で吼えてるんじゃねーよ 子ね
C#+DirectX関連の書籍、 いつまでたっても ほとんどでなさすぎだなぁ。
すごい日本語ですね。
日本語は意味が伝わればモウマンタイ。
どうでもいいけど、ゲイツちゃんは DirectXベースの.NETFrameworkは作らないのかよ!?
Microsoft XNAのことか?
DirectXがFrameworkに取り込まれたら けたたましくステキなヨカン だが、逆に使いにくくなるような気がしなくもない予感 >122 ?
しかしC#+DirextX9の解説はネットにあまり転がっていないなぁ。
本のほうも、あまり多くないし、ヘルプは 更新されていないし間違い多いし。
>>117 ソース間違っているの?まだ日ソフのサイトから ソースだけ落として
VC#のプロジェクトに変換しただけで 中身見て無いけど。
実行はできたけど。
>>127 俺は
>>117 しゃないけど多分、サンプルの方。
Direct3D.Fontクラスの第一引数がnullになってる。
ここってstringでしょ?
>>127 7月号特集7「C♯とDirectXで3Dゲーム作りに挑戦!」の106ページリスト4font.DrawTextの第一引数のこと?
あと、サイトから落とせるt70407.zipのD3DSampleフォルダのWinForm.csと
SpaceSimフォルダのGamePlay.csにあるfont.DrawTextの第一引数もnullになってるね?
C♯Builderではこれでいいの?
VC♯だとnullを消さないと「引数が多い」等のエラーでコンパイルできなかった。
Microsoft.DirectX.Direct3D.FontのDrawTextメソッドのシグネチャは2種類あって
どちらも第一引数はstringなんですね。
私は先月C♯は始めたばかりなのでよく分かりませんが、他の方で修正無しでコンパイルできた方はいるのでしょうか?
ソースファイル自体は貴重な情報源なので重宝してますが。
130 :
デフォルトの名無しさん :04/06/08 12:30
>>129 外出だろうけど
コンパイルできない理由は多分、参照しているDirect3Dアセンブリのバージョンが違うからじゃねーの?
ここ読んでみろ。
http://www.dwahan.net/nyaruru/getreadyformdx/ DirectX9.0bのDirect3Dアセンブリのバージョンは1.0.900.0
DirectX9.0 UPDATE SUMMER 2003のDirect3Dアセンブリのバージョンは1.0.1901.0
日経のそのソースは後者のDirectX9.0 UPDATE Summer 2003で組まれているから1.0.1901.0の方を参照するべし!
もしDirectX9.0bのみがインストールされてたらコンパイルできねーよ。
ランタイムの方にもバージョンの違いで動かない等、問題がおきているよね。
リスクがいっぱいのManagedアプリよりも、Javaでのんびりゲーム製作したほうが楽しいと思う。 メインループさえまともに起こせない現段階のC#+ManagedDXに力注ぐのは無駄。 もう一度言う。LongHone出るまではキッパリあきらめて、Javaゲーム製作の練しとけ。
132 :
デフォルトの名無しさん :04/06/09 04:55
同人ゲームつくるのにC#がいいかなって思ってるんだけどさ、 どうやって配布すりゃいいのか悩む。 .NET Framework再配布パッケージをCDに入れるのも、なんだかトラブルの元になりそう。 Javaで作っても同じだけどね。 ネット配布の場合はMSのページにリンクでも張っとじゃなんとかなるかもしれんけど、 CD媒体のアプリではC#は避けるべきなんだろうか…
トラブルの元になりそうと思った理由は?
RPGツクールのようなゲームエディタ系アプリの中で ソースコードを吐き出してくれるモノってあるの? 板違いかもしれんが・・・
>>130 最新のSDK入れたら動きました。初代9.0からSDK変えて無かったorz
>>131 Javaじゃろくなゲームできないだろうに。
現行の市販3Dゲームと同じような
クオリティのものなんてみたことないぞ。
Java3Dってパフォーマンスよくないっしょ。
>>131 >メインループさえまともに起こせない現段階のC#+ManagedDXに力注ぐのは無駄。
それはつまりスレッドをまともに扱えない無能者であることの宣言ですか?
>119 単にDoEventの行だけ削除するんじゃダメなん?
今更だがスゲーあほな質問してました ダメに決まってるよな スマソ
WndProcの中で永久ループしちゃっていいの? いまやってみてるけど、巧く行かない…。 113さんは巧く行ったのだろうか。
.NET系はソースレベルで逆コンパイルできるから EXE配布==ソース公開 と思ったほうがいいぞ。 せっかくC#にもなれてC#まんせーって感じだったのに まともなリバースエンジニアリング対策ができない事がわかってやる気なくした。 難読化ぐらいはできるがデバッグ情報付で再コンパイルできるんだぞ 署名機能とかあるけど間単にはずせる。 ようはオープンソース派以外は.NET系は使わないほうがいい。 もしくはMSにどうにかしろとメールだすなりして対策されるまで使わないか、 せめて誰かエロい人が.NetFrameworkのコール隠すツールが作られて公開されるまで.NET系は使わない方がいい。
>141 そんなのはどの環境で作ったって同じでしょ。程度の問題で。
>>140 何故スレッドを使うという選択肢が存在しないのですか?
>>143 程度っていうけど普通のEXEの逆アセンブルレベルじゃないぞ
普通のEXEならC++のクラスレベルで逆コンパイルは出来ない。(少なくとも漏れのしるかぎりでは)
.NET系の場合は綺麗に逆コンパイルできるから
EXEから一部のクラスをそのままぱくる事が可能。
しかもILレベルで逆コンパイルとじゃなくC#の言語レベルで逆コンパイルできる。
たいしたものでもないのに、 やたらソース見せたくないと思ってるやついるよな。
パクられて困るようなものってそんなにないと思うがどうか
ネットゲーム
パスワードがべた書きとかじゃなければ 別に良いよ。 どうでも良いヤツ(糞ソースとか、ブス女とか)ほど隠したがるのは どの世界でも共通なんだなw
議論がずれてないか? なんにしても、ソースまる分かりな.NETを商用で使えるかってなると使えないだろ? ソースが綺麗とか価値があるないとかは関係ないぞ
初心者の館で商用の話すんなよ
152 :
デフォルトの名無しさん :04/06/09 23:32
>>151 同人ゲーで一儲けしようと思ってるんだよ。
相手にすんな。
商用でソースがバレたらなぜだめなのかがわからない。 ネットゲームでプロトコルがバレたらまずいなどの理由ならわかるが 商用全般を指しているようだ >ソースが綺麗とか価値があるないとかは関係ないぞ と書いてあるので技術流出も関係なさそうだ いまいち想定している危険が想像できない
(´-`).。oO(商用でソースばれたらダメダメでは…
>144 スレッドを使うという話になってなかったから。 いま仕方ないのでスレッドでやってます。 でもWndProcで出来ないというのもイヤですよね? せっかく聞いたのに。
WinProcをオーバーライドして使ってみたんだが、 何かしらのメッセージが発生した時に来る。 つまり、PeekMessageの中って事になるわけで…。 それだったらループには組み込めないんだけど、 WinProcで回してる人はどうやってやってるんだろう? それよりも実際にいるの?
>>156 Controlクラス上のイベントハンドラの定義されていないようなメッセージの場合は
Win32APIの時と同じようにswitch,case文で自前でメッセージ処理を行えばいい。
ドキュメントのControl.WndProcの欄を見ればやり方が書いてある。
てか普通、気にしなくてもいいと思う。
>>140 その中でループを組んじゃダメ。
WndProgメソッド自体をループだと思えばいい(毎フレーム呼ばれる、と思う)
アプリの初期化処理はApprication.run()以前に済ませておくか、formのコンストラクタ内でやる。
描画に関してはOnPaintをオーバーライドしてDevice.Begin()〜end()を含んだRander()なりを入れればOK。
This.invalidate()メソッドをオーバーライドしたWndProc()の最後に入れてやると、
実行後ほおっておいても再描画を繰り返してくれる。
チョット分かりにくい説明ですまんが
>>156 常にWM_ACTIVATEAPP (0x001C)は呼ばれている(毎フレームかどうかは知らんが)ので大丈夫です
すまん、徹夜で超疲れてて発言おかしい。 Summer2004版ではおそらくDoEventの改善は行われるはずだから リリースまで待ってみるのもいい。
俺はこんなかんじでやってるが、問題なし。 protected override void WndProc(ref Message m) { switch(m.Msg) { // メッセージ処理 case 0xxxx: break; } Game.mapDraw(); // マップ処理 Game.characterDraw(); // キャラクタ処理 Game.padInput(); //入力処理 base.WndProc(ref m); // 親クラスにもメッセージを送る(必須) this.Invalidate(); // 画面の更新(OnPaint()を呼んで再描画する) }
スレッドを使えばいいだけのことを、なぜわざわざメッセージループ中でやろうとするのか、 理由と必要性がさっぱり分からない。
イベントをウインドウ制御側のスレッドで実行したければ、 必要に応じて別スレッドからSendMessageでユーザーメッセージを処理させればいいだけだし。 何故イベントリブンを無意味にするような方法を使おうとするのだろう?
スレッドはパフォーマンスが落ちるからなるべく避けてきたというゲーム独特の歴史的背景のせいだと思われ
>157 そのソースを見る限り「Invalidate」のおかげで WndProcに戻ってきてるのでは……。 だったらそもそもOnPaintの中に書けばいいんじゃないかな。
そしてメッセージループ中で重い処理を書いた方が、 ウインドウの反応速度が落ちて重く感じることになるという。
OnIdleなんぞ使おう物なら、どうでもいいときに制御が回ってきて無駄が多いは、 他のスレッドが重い処理をするととたんに回ってこなくなるはで、さあ大変。
168 :
デフォルトの名無しさん :04/06/10 22:55
>>161 スレッドはアクションゲームには向かないし初心者には同期とるのもね。デッドロックかかちゃいそう。
>>140 この答えはいろいろあるとおもいますが
>>60 の最後に書いてるけど
// Windowsメッセージを処理します。
Application.DoEvents();
をつけたせばウインドウズのメッセージを処理できるー>無限ループにならない。
僕はWinProcやOnPaintはつかってないねぇ。
>スレッドはアクションゲーム向かないし あなたがどうしようもないほどの馬鹿だということが分かりました。
>>160 すべてのメッセージがそこを通るんだから描画と処理の同期がおかしくなる
初心者が大勢集まってるもんだから
Device デバイス = new Device( 0, DeviceType.Hardware, フォーム, CreateFlags.SoftwareVertexProcessing, パラメータ ); のときに 1つめの引数が0になっていますが0ってどういう意味でしょうか? C++ヘルプでは Adapter[in]ディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリディスプレイ アダプタである。 とありますが 0はプライマリディスプレイアダプタなんでしょうか?
#define D3DADAPTER_DEFAULT 0
D3DADAPTER_DEFAULT=0 defineの数値に対応してるんでつね、 ありがとうございます にしてもC++のへるぷないとどうにもなりまつぇんね・・ おとなしくC++でヤったほうがよいのかとすら思えてきますた
>>169 馬鹿って言い方は失礼だと思うぞ。
単に、ここ最近のWindowsの仕組みを知らずに言い放った愚か者ってだけ。
スレッドを勘違いしている無能者って、VBからC#に移ってきた奴なんだろうなあ。
N88べーしっくから移ってきた漏れよりはマシなんではないでしょうか
>176 ここ最近って何か変わったの?
そもそもVB厨でもなければ、スレッドを使わずにDoEventでぶん回そうなどと、 阿呆なことは考えない。
>>180 おまいの理屈だと
チュートリアル作ったやつも
VB厨って解釈できるが
それについて何かコメントおながいしまつ
もうね、ループすりゃどうだっていいじゃん
偉そうなこと書くなら
おまいらの言う理想のループ処理とやらを書いてくれ
参考にさせてもらうから
だからスレッド使えよ。
*言うだけなら誰でも*
>>183 おまいの理想とする
スレッド使ったコードを晒してください
話はそれからだ
*言うだけなら誰でも*
関係ない話題は、然るべきスレでかきなよ。 いい加減、うっとおしくなってきた。
C++ではメインループとウインドウメッセージを分けることなど当たり前なのに、 何故C#になるとスレッドを使おうとしないのか不思議で仕方がない。 別にC#特有の問題が存在するわけでもないのに。
>>187 C#ではメインループとウィンドウメッセージを意識せずにコードが
書けるからでは?
>>187 スレッドの場合
たとえば16ms毎にゲーム処理のスレッドを呼び出すとすると、もしスレッドの処理が3msで終わってしまえば
次の呼び出しまでの13msは待ち時間となり無駄になるだろ?
でもメインループなら、マシンの限界まで処理を回ることができる。
お前ってMFCしか使ったこと無いの?
スレッドをループさせれば同じことじゃないの? あと、アクションゲームの場合は、おそらくイント単位で処理することになるから、 メインループでもスレッドでも、待ち方が違うだけで同期処理は同じになると思われ。
イントってなに?
>>189 待ち時間はSleepなり、正格にやるならマルチメディアタイマーのイベントシグナル(コールバックを使わない方法)等で
処理を休ませることになるが、Win32APIでプログラムを組んだことがないの?
正格→正確
Sleepもマルチメディアタイマーも問題山積なのを隠して語っても仕方ないだろう とりあえず叩き台になるソース晒せや *言うだけなら誰でも*
ていうか、そもそもC#自体がWin32APIを直接叩く事を 推奨していない言語仕様だからなぁ。
質問でつ チュートリアル2で 頂点バッファ.Lock(0, 0, 0); といふ頂点をロックする処理がありまつが、 1つめの引数=頂点バッファをロックを開始する位置(バイト単位) 2つめの引数=頂点バッファをロックするサイズ(バイト単位) でいいのでせうか? しかも両方のパラメータが0なのでバッファ全体をロックを指定したといふことですよね? 3つめの引数は0になってまつが、 D3DLOCK_DISCARD D3DLOCK_NO_DIRTY_UPDATE D3DLOCK_NO_SYSLOCK D3DLOCK_READONLY D3DLOCK_NOOVERWRITE のどれが0だかわからないでつ デファインに対応した数値表とかないんでつかね?
>問題山積なのを 何が問題なのか提示せず反論だけ。 *言うだけなら誰でも*
C#でWin32API使うのは、面倒で非効率です。 素直にMC++と併用するのが無難でしょう。
>>197 マルチメディアタイマーの機種依存、Sleepの精度
Win32APIやったことあるなら知ってるだろ?
そういう話題の振り方して逃げるようなこと書くなや
Sleepに関しては、精度が気になるのであればマルチメディアタイマーと書いている。 マルチメディアタイマーに関しては機種依存といっても、最小間隔の値のが違うだけで、 しかも1msに設定できないのは、そうとう昔のチップセットの話。 3Dを扱うPCスペックのマシンで、最近も問題があるというのなら具体例を挙げて欲しい。 今、機種依存の問題と書くからには、それなりの根拠があった上での話だよね?
☆ チン ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・)< DirextXのラッパークラスまだー? \_/⊂ ⊂ )_ \________ / ̄ ̄ ̄ ̄ ̄ ̄ ̄/| |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| | 愛媛みかん |
>>196 ここのバカどもには答えられないから他で質問汁
まぁ漏れもそんなバカどもの一人だが
C++側のヘルプを見れば載っているのに、Managedの方しか見ない奴が悪い。
C++イラネ
.Net Frameworkのヘルプを見ても載ってないマイクロソフトが悪い。
スレッド使うとかゆいところに手が届かないというか、 届かなくてもいいとこなら使うって感じなんだが、 ゲーム開発の世界ではふつーに使ってるものなの?
>>203 C++のほうも見たが196 の
>どれが0だかわからないでつ デファインに対応した数値表とかないんでつかね?
は俺もわかりませんでつたよ わかる神はいませんか?
>1つめの引数=頂点バッファをロックを開始する位置(バイト単位)
>2つめの引数=頂点バッファをロックするサイズ(バイト単位)
>しかも両方のパラメータが0なのでバッファ全体をロックを指定したといふことですよね?
これはたぶんあってると思う
DirectX SDK 有料にしてでも ちゃんとしたヘルプつけてくださいまし といいたくなるくらい ManagedのDirectXヘルプはウン○だね・・
#define D3DLOCK_READONLY 0x00000010L #define D3DLOCK_DISCARD 0x00002000L #define D3DLOCK_NOOVERWRITE 0x00001000L #define D3DLOCK_NOSYSLOCK 0x00000800L #define D3DLOCK_DONOTWAIT 0x00004000L #define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L これじゃなくて?
>>208 > DirectX SDK 有料にしてでも ちゃんとしたヘルプつけてくださいまし
DirectX5以前までは英語版のヘルプしかなく、
和訳された辞書みたいな分厚い本が2,3万で売ってた気がするけどな。
フラグを付けなければ、フラグにある効力は一切使用しないだけ。 デフォルトもへったくれもない。
>>210 ああ、あったな。「馬鹿高い本だなぁ。」と驚いた。
なつかしい。
Managed DirectX(C#)用の詳細に書いた本が今でれば、
2,3万でも買うんだけどなぁ。
>>209 それ、どこに載ってた?
0x〜ってことは16進数だよね・・
10進数値が0のやつは1つもないね
>>213 >[in] 実行するロックの種類を記述する、0 個以上のロッキング フラグの組み合わせ。このメソッドに使用できるフラグは次のとおり。
>0 個以上のロ
これじゃねーの
>>209 はC++のヘッダファイルより
>>214 いつのまにか神が降臨してる〜
つい最近c#はじめた漏れにC++のヘッダファイル云々ってムリポでつよママン
つまり 0を指定してるのでフラグつかってませんってことでつね
ボロHPにまとめておきまつ
あえてC#でやるからには、 C#の特性を存分に使うべきだね。 そうしなければ、C++でやったほうが 情報も多いし、パフォーマンスも優れるし良いと思う。 まあ、あたりまえのことだけど・・・。
>>216 .Net FrameworkにDirextXのラッパークラスが載ってない以上、
C#でDirectXを使うメリットはないと思う…
そう言う意味では
>>201 や
>>205 は的を射ている。
つか、WindowsもOfficeみたく、殆どの機能をクラスで扱える
ようになればいいのに。
218 :
デフォルトの名無しさん :04/06/18 15:03
ビデオカードのテクスチャサイズ制限(256x256までとか、2のべき乗とか)を プログラムで取得するにはどうしたらいいでしょうか? RADEON9600で640x480のテクスチャ読み込ませたら問題なく使えてしまったので もしかしたらsummer版から内部で適当に処理してくれてるのかと思ったのですが そうでもない気がしてきたので…。 VRAMのテクスチャバッファ残量を動的に取得する方法もあるようでしたら知りたいです。
CAPS?
>>219 caps見れば良かったんですね。
あっさり解決しました。ありがとうです。
221 :
デフォルトの名無しさん :04/06/20 03:16
C++ C# DrawIndexedPrimitiveUP DrawIndexedPrimitives DrawIndexedPrimitive DrawIndexedUserPrimitives DrawPrimitiveUP DrawPrimitives DrawPrimitive DrawUserPrimitives これでいいですか?
すみません。よく調べたらUP系が逆でした…
>221-222 その無駄な変化はなんなんですか...
D3DX系(Sprite、Matrix)と自前系(Primitive)を比較してみると機種にもよるがフレームレートの差は2〜5倍もある。 糞重いD3DX使ってる奴は艇脳負け組って意味だろw
差はあっても、カード依存という壁をなんとかしてくれるD3DX系の使いよさは、 多くのユーザーを抱える場所では開発コストを抑えられるたまらない恩恵なわけで。
どこの板でも定期的に
>>224 みたいな馬が涌いてくるね
土日の定期便みたいなもんだ
馬鹿定期便。
>>224 D3DXが無ければXファイルや形状データ、座標を扱うのって難しくないですか?
自前ライブラリを持つメーカーならともかく、一般人ならD3DXに頼らざるを得ないと思う。
初心者の意見ですけど。
速度云々よりは、内部構造を理解しておかないと、 用意されていない機能を実現しようとするときに困ることになる。 実用出来るかどうかは別にしても、Xファイルの読み込みからレンダリングまでは、 ある程度自分で作れるようになっておくに超したことはない。 まあ何を作るかにもよるので、何が必要なのかは各々で判断すればいい。
自作ライブラリ作るのが生きがいですってならともかく 漏れみたいに、ただヌルい3Dゲを作りたいって人は レンダリングまで自分でやりたいなんて到底思わないかと
Microsoft.DirectX.Direct3D.Pool.の Default Managed Scratch SystemMemory の違いがイマイチよくわからんでつ よくわからない場合はとりあえずDefaultを選べってことでつか?
今後 C#が、C++での実装に パフォーマンスで追いつくことは不可能かな?
GDI+が異常に遅かったのは自分でチャックしたんだけど、トータルでも結構遅いの?
>>233 ノートPCの性能がデスクトップに追いつくの?
ってのと同等の質問に見えた漏れは夢がないんでしょうか・・?
C#やJavaに日頃慣れていると、 C++の開発が非効率に思えてね。
>>234 俺も偏った部分しかチャックしてないが、あんま速くなかったよ。
でもま、あれは簡単に扱えるって意味でのライブラリだから、あんなもんでいいと思うよ。
チャック?
GDI+はDIBでゴリゴリやってるのと同じだし、 別にDirect3D使ってるわけじゃないし、 遅いのはC#のせいじゃないだろ。
じゃあ、C#+DirectXで パフォーマンスは追いつくわけだ。
240 :
デフォルトの名無しさん :04/06/21 20:13
☆ チン ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・)< DirextXのラッパークラスまだー? \_/⊂ ⊂ )_ \________ / ̄ ̄ ̄ ̄ ̄ ̄ ̄/| |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| | 愛媛みかん |
完全にスレ違いけど、GDI+ ってα値付きで絵が描けるんで DirectX のテクスチャに 絵を書くときとても便利だよね。線とかパスのスミージングも出来るし。
↑ スミージング・・・何語だよ
用途によって異なるとしか言いようがない。 ヘルプを読めば分かるだろ。
ヘルプ読んでもわからない馬鹿がここにいますが何か? ヘルプ読めばわかるって言うならこんなスレいらないよね
ヘルプは粗末すぎだよな。 メソッドやフィールド名で推測するしかないし。 高くてもいいから、分厚い本でもだしてくれ。
C++のヘルプも読め、そっちにきっちり書いてあるから。
どこがわからないとか言わないと回答のしようもないよ まさか専門用語がわからないなどとググりもせずホザイテマスカ?
>>247 のとおり、C++側に大抵書いてある。
若干名前が変わってるが手順などほとんど同じだし。
>>246 「高くてもいいから、分厚い本でもだしてくれ」
マニュアル登場
「もっとわかりやすい本だしてくれ」
分かりやすいマニュアル本登場
「なんかマンドクセー!」
C++でDirectX慣れていれば、 C#でもすらすらと開発できそうなんだけどなぁ。
>>251 「初心者」っていうのは、C# にも DirectX にも、ドキュメント読むことにも、考えることにも、
推測することにも、質問することにも、調べることにも初心者なんですよ。
どれか一つでもうまく出来るようなら、他のことも大抵できるようになって、もう初心者じゃ
なくなるから。
C++のドキュメント読まないといけないなんてC#は糞ですね?
>>252 それは人間の初心者。
今までの人生で成長が存在しないとは、いったい何をしていたんだか。
単純にドキュメントだけにフォーカスをあてるなら253の言う通りC#&Xはクソですな
C++も2003summerの日本語ドキュメントないよ
257 :
デフォルトの名無しさん :04/06/22 21:06
>>253 いや、マイクロソフトがヽ('A`)ノウンコー
RHW=同次空間上のトランスフォームした頂点。(x,y,z) データは既に w で除算 (w の逆数を乗算) されている。 結局んとこ、この値を設定すると何がどうなるのかよくわかりませぬ まったく指定しなくてもチュートリアルは普通に動くみたいだし
テクスチャマッピングの補正につかうんだったかなー
くだらん論議してるときは盛り上がるのに
質問でるととたんに静かになるんやね
>>258 はそのくらい自分で調べろとか言われちゃうんだろうね
>>259 ためしにテクスチャ張って数値をいろいろ弄ってみたらワカッターよ
テクスチャを張ってから数値変更すると設定した数値ぶん、テクスチャが歪むのね
メディアプレイヤーのようにフォームの一部分にDirectXの画面を表示させたいのですが C#で可能でしょうか?
可能
>フォームの一部分にDirectXの画面を表示させたいのですが フォームに絵boxを配置して Deviceの引数に絵boxを指定してもダメポだったよ どうやって遣るんだかワカンネ 誰か教えれ
デバイスに指定するのはトップフレームであって表示する場所ではない。 ただそこがデフォルトになるだけの話。 描画先のウインドウを指定するのは描画する時点で、指定しなければデフォルトが適用されるだけ。 少しはメソッドのヘルプを読め。
>>264 Rectangle reg = new Rectangle();
reg.X=100;
reg.Y=100;
reg.Width=200;
reg.Height=200;
device.Present(reg,null,false);
>>265 最後の一行が余計杉
どいつもこいつもヘルプヘルプうぜーんだよ
ヘルスにでもいってこいや
UNIX系やMacで動く、フリーの.NET動作環境なんてあったんだね。 既にほとんどの標準クラスが動くようになっているそうなので、Managed DirectXも 移植されれば相当面白いことになりそうな気がする。
GUI部分が移植されていないのに、DirectXなんて無理に決まってるだろう。 何でおまえみたいな頭の悪い奴が存在するのか、理解に苦しむ。
Windows Formを作っているプロジェクトの存在をご存じないのか269は。
マイケルソフトはja●aみたいに 他OSでも.net環境を整えたいと思ってるんだから 生暖かく見守ってればいいんだよバカチン そしてここでは Win + C#.net + DirectX の話をしてればそれでいいじゃないか .net環境の話は終了 続きは他で殺れ
初心者スレで、鼻高々としたい奴は要らない。 ピノキオはどっかいってくれ。
>>270 互換性がとれていないということを存じないのか270は?
ライトのcommit()の説明が 指定したライトに対する遅延ライト設定を適用する。 だけなんですが 遅延ライト設定ってのは何なんでしょうか?
>>274 これに懲りたら、考えなしにもういい加減なことを言う癖を直せよ。
C++の本を読みながら勉強をしているのですが、 D3DXVec3TransformCoordって、 C#だとそれらしきメソッド名のものが見つからなかったのですが、 メソッドは何になるのでしょうか?
見つけました。 Vector3.TransformCoordinateというメソッドでした。 Matrixのほうを探してました・・・。
>>276 なんで初心者スレにピノキオが混入されてるの?
なにが「これに懲りたら」だよ、何様のつもり?キモ杉
つまらないこと言ってる暇があったら質問に答えろよ
質問回が甘いくせに276みたいな馬や鹿が多いスレはここですか
>>279 >何様のつもり?
俺様。
いい加減なことを言ったことについて、反省する様子は無しか。
まあ考え無しで発言してしまうからには、自分を省みることなど出来ないだろう。
せめて実際に使ってみれば、どんなに使えない物なのかぐらい分かるんだが。
口先だけでいい加減なことを言っている暇があったら、自分で試してからにしろよ。
>>281 会社で虐められてるんですか?
明日になるのが不安なんですなw
明日からは、適当なことを言う前にまず試してみる人間になれることを祈ってるよ。 教訓を生かしてがんばれよ。
あまりに煽りが唐突すぎて うまく話をそらせず自爆した典型例だな
276 281 283 そろそろ皆に嫌われてるのに気付かないのかね
あの、横槍すみません。 MSは最初から.NETをUNIXやMacで動かしたいなんて思っていないと思うのですがどうなんでしょう? 私だけかもしれませんが、実際Windows以外で動かなくてもいいんですが… っていうか、そんなことしてほしくありません。
なんで?
>>286 コンソール部分はMS自らがFreeBSD用に移植している。
少しは調べてから発言しろ。
誰か、276を止めるメソッドを教えてください。かなり深刻なんです。
きちんと自分で試すなり調べるなりした上での発言なら突っ込む必要がないのだが、 何故聞きかじった知識だけで語ろうとするのか理解に苦しむ。 FreeBSD用ならPortsからライセンスに同意するだけで馬鹿でもインストールできるから、少しは試せ。 コンソールや通信部分に関してはWindows側でコンパイルした物がそのまま動く。 GUIはMSのフレームワークを使う限り、エミュレータを除けば何を使ってもWindows側で作った物は動かない。 GUIも独自実装と、MS互換擬きがあるが、実際に使い物になるかどうか自分で試してみろ。 その上で実際に使えると判断したのなら、技術的に突っ込めばいい。 実際にある物を試さないで、想像だけで語って何の意味がある? 私を嫌おうが構わないが最低限、想像ではなくきちんと試せ。 そうすればいちいち突っ込む必要はなくなる。
いちいち言葉が多いなぁ。
スレ違いは放置して
>>290 偉そうに発言するのは
未回答の質問に具体的な解決法を提示してからにしてくれないかな?
そうすりゃ誰も文句言わないよ
ここは貴方が大儀を貫く為のスレじゃないの。わかる?
>>292 ごめ、こんなカボチャみたいな頭の奴に反応してしまった漏れも逝ってヨシですね
煽って八つ当たりしないと気分が晴れないほど、デスマーチしてるんだよ。 きっと。
FPSなどのゲームでよくある、 マウスで視点をグリグリ、 キーボードでカメラを移動というので つまづいてます。 MATRIX関係の理解ができてないみたいで、 自分で初心者だなぁと思うかぎり。
>>296 マウスの移動量やらキーボードの入力を検出して
Transform.View = Matrix.LookAtLHの値を手動で操作するクラス作ってガンガレ
Transform.View = Matrix.RotationYとかでお手軽にカメラ回せるかとも思ったが
ダメポだったーよ
>>296 >Transform.View = Matrix.RotationYとかでお手軽にカメラ回せるかとも思ったが
>ダメポだったーよ
Transform.View = Matrix.LookAtLH * Matrix.RotationY
で、できますた 参考までに
>>298 色々な書籍などを参考にしてみたけど、
なんか円周率やら内積やらでてきて、異様に複雑でした。
割と単純にできるんですね。ためしてみます。
どうもです。
視点の移動については、
平行移動ってやつですかね。
平行移動は Translation X、Y、Z軸を基準として 水平移動 他は RotationX X軸を中心に回転 単位は角度ではなくラジアン RotationY Y軸を中心に回転 単位は角度ではなくラジアン RotationZ Z軸を中心に回転 単位は角度ではなくラジアン RotationYawPitchRoll RoutationX、Y、Z を1メソッドで実行 RotationAxis 任意の軸を定義し、その軸を中心に回転 他はヘルプや116がまとめてるゴミHPなどを参照汁
丁寧にありがとう。 実は、日曜日一日かけてもできなかった・・・。 また夜にでもがんばってみよう。
Rotation関係をつかっても、 なぜかZ座標がうまくいかなかったので、 C++のサンプルプログラムのを真似したらできました。 COSやらSINやら、よく理解してないですが・・・。
3Dゲーム制作はまず高校を卒業してからにしようね
ここは、井の中の蛙と言うか、ピノキオの多いスレですね。
三角関数は三角定規の形を考えれば理解できる。
とりあえず 「やさしく学べる基礎数学」(ISBN4-320-01683-1) あたりでも読んで出直して来い ちょうど線形代数と微分積分にしぼってあるからプログラマにはうってつけだぜ
>>306 微積って必要なのか?ちとピンとこない。
>>307 知っておいたほうが物を動かすときに便利でしょう。
近頃3Dゲムの為の数学の本が出てるが 教養のない中卒の漏れには理解不能な式ばかりでつ あれ読むなら>306が紹介してるような 普通の基礎数学書のほうがわかりやすいでつね
とりあえず高校数学のテキストを確認して、分からないところから進めればいい。
PC初心者なんですが、S3 Graphics ProSavage + utilitiesのデバイスで3Dって 無理なのでしょうか? グラフィックボードくっつければ動くようになるのでしょうかー? このスレと関係しているのかすらわからない(;´Д`)
>>311 S3 Graphics ProSavage + utilitiesのデバイス
↑グラフィックボードのこと?
もしそうだとしたらPCパーツスレのほうが
けたたましく詳しい回答が得られると思ふ
>>312 グラフィックボードのことです
レスありでした〜
C++でDirectX5ぐらいだったら動くと思うよ。
何気にゴミHPのチュートリアル攻略終わってるんな
317 :
デフォルトの名無しさん :04/07/03 18:34
おいおい、リアルで中卒がプログラミングなんかしてるの? 中卒って将来ヤクザ、暴力団とかそんなレベルの奴だろ?
>>316 こういうページは飽きて更新しなくなっても消さないで置いておいてほしいもんだな。
>>317 ゲーム屋にはちらほら居るよ、
そういう連中は三流大卒よりゃハイレベルだったりする
一流大学でてようが、できないやつはできないし あまり学歴は関係ないな。
ディスプレイって対外メーカーに関係なく接続できるもんなんですか? どなたか教えてください・・・
またすれ違いな会話してるなおまいら
チュートリアルを扱ったHPは
途中で放置なとこが多いような気がしなくもない
>>318 どういう意味で消さないでほしいのか気になりますね
>>322 おまいはVB6でジャンケンゲーム作ることからはじめるとよいよ
あと312あたりも参考に汁
プログラム以前に、PC初心者板に移動することが先決だと思うが。
C#&DirectX9.0楽しいっす。 C++でやってたころよりゲーム本編の作成に集中できるというか。
Win32APIを呼び出すのに、定数の確認のためヘッダファイルを検索したりと面倒なので、 結局MC++と併用することに。 ツール部分を作るのは楽になったが、ゲーム本体は余計に面倒になった。
なぜC++と併用なのかと 面倒ならC++だけで作れよ・・ それともう来なくていいからね
ゲームを作るのに、関連ツールを作る必要があるから。 ウインドウフレームワークが必要な部分に関してはC#側で作った方が圧倒的に楽。 DirectXを利用するという点に関してはC++の方が組みやすいが、 実際のゲーム作成は本体だけ作れば良いわけではない。 本体はC++の方が楽だが、そうなるとツール側と本体の関連プログラムを二重に作らなければならなくなる。 つまり両方の利点を生かす上で、MC++との併用が一番楽だったという話。 作成方法は個人によって異なるとは思うが、何故頭ごなしに併用を否定するのだろう。
スレ違いだからじゃないん?ちと微妙だけど。
330 :
デフォルトの名無しさん :04/07/05 23:00
よい子のみんな〜
無限ループの予感がするから
C++の話はここで終了ね
おねーさんとの約束よ?
>>328 はC++やC#じゃなくて空気の読みかた勉強したほうがよいよ
ピノキオ
C#にあるメソッドでC++ない奴ってあるのね(´・ω・`)
MCとC#はDOS時代で言うところの、アセンブラとCに似てますね。 低レベル部分をアセンブラで作って、Cで利用するのはよくやりました。
>>334 C++にはないのにC#にはあるメソッドは悲惨でつねほんと
ヘルプがダメポすぎなのにC++のほうは参照できないといふ・・
>>335 他のピノキオが脊髄反応するのような
スレ違いな話題振るのやめましょうね
MCのラッピングとC#からの利用は、すれ違いではないと思うのですが。 使いやすいラッパーを作っていければ、開発が楽になります。 C用のライブラリはたくさんあるのに、 C#は今のところ、そういったものを公開している人がいないところが泣き所です。
C++で出来る人は、ここでも言われているとおり、C++だけで作ってるから、 わざわざ.NET用のラッパーを作る奇特な神はいないのだろう
たとえそういった物があったとしてもここでそんな話をすれば スレ違いだということで荒れる原因になるという。 全てがC#でなければスレ違いというローカルルールがいつ出来たのかは知らないけど。
C#でDirectXを扱いたいだけなのに、やれC++では簡単だとか、 やれC++のヘルプを見れだとか言うレスが付くからなんじゃね? まぁ、あれだ。C#でDirectXを扱うのが困難な状況を改善しない MSが諸悪の根源なんじゃねーかなぁと。
>>337 .NET FrameworkにDirectXを叩くクラスが無いのが問題だと思う。
別にラッパー作りたい訳じゃないから。
規格的に配列などのメモリーの扱いが違うから、 直接叩くようにするのは無理っぽい。 いっそC#にもアンマネージの直接アクセス出来る機能を付けるとか。 どうせDirectXを使った時点で移植なんか無理なんだし。
なんでManaged微妙にちがってんの?DirectXの内容自体は同じでないの?
全てがそのまま移植できるわけではないから。 保護された安全な場所から、外の戦場を制圧する武器を作っているような状態で、 出来る限り現地で行動するのと似せて作ってあるけど、やっぱり限界がある。
>>342 それやるとC#の意味ねぇと思うがどうか。
元々C#もDirectXも出所は同じなんだから、いっその事
過去の互換性を捨ててでもDirectXのマネージコード化
を進めそうな希ガス。
DirectX10の話を聞かなくなったから、今度はマネージ
コードだと言われても驚かないな俺は。
10まで2年待たなければならないけど、そこまで気長に待つのもどうかと。
XBOX2では、DirectXに代わる開発フレームワークを用意するって 話をどっかのサイトで読んだんだが、これがDirectX10の代わりに 来るんじゃないのかね?
コンシューマーをマネージ対応コードで作るとは思えないが。
XNAのことか? あれはむしろ、Windows、WindowsMobile、XBox用のソフトがクロス開発できる プラットフォームかなと見たが。
>>349 それだ。
.NET FrameworkがWindowsとWindowsMobileのソフトウェア開発の
ハードルを下げたように、今度はDirectXのマネージ化がくるんじゃ
ねーかなと。
していなかったら、そもそもこのスレが存在していない可能性が高い。
p://www.watch.impress.co.jp/game/docs/20040706/xna.htm これを見た感じ、XNAはマネージ以上にハードル低いように読める。
誰でも簡単にというだけで、具体的にどれだけ簡単なのかまるで説明されていない。 描画や演算ライブラリが一通りそろっていても、それをイメージ通りに動かす上で、 そのイメージをどうやって伝えるのか、それが誰でも出来るほどに簡単にするすべは何なのかがさっぱり。 HTML作成ツールを例に挙げているが、あれだって配色や素材の問題もあるし、 ツールを使ったからと言ってセンスのいいデザインになるとは限らない。 また多機能にしようと思えば、ツールで補える範疇を超える。 小規模で定型に絞り、限られた範囲という条件で簡単だというのなら、 今までと大して変わるところはない。
物理エンジンや3DエンジンのAPIをMSが用意してそれの交換を楽にしてやるよって話じゃねーの レゴブロックみたいに上手くいくかは知らんけど物理エンジン、3Dエンジン、シェーダーは挿げ替えできたほうがいい
>>353 ここで言ってる理想通りになったらそれこそスバラシイだろうけど
もし仮に実現したとしてもDirectXをコネコネしながら
ゲーム作ったって経験は生きそうな予感
出るの待ってる暇があったら必死こいてコード書いてたほうがよさげ
>>356 DirectXをコネコネしながらゲーム作ったって経験は活きるよ。
だけど、多くのゲーム作りたい人はゲームを作りたい訳であって、
DirectXをコネコネしたい訳じゃないよな。仕方なくコネコネ
しているだけでさ。
そう言う意味では、本来のゲーム作り以外の部分のハードルが
低くなる事には意味がある。
無論、現状では実現されてない訳だから、それを待ち侘びるだけ
ではなく、現状でやれる事をやってくってのは大事だと思うけど。
とりあえず、SDKドキュメントのチュートリアルはなぞってみた。 D3Dを使っての2D表示(要はビルボード)をいろいろいじってみたいんだが、 sampleディレクトリにある奴はどれも高度っぽくて参った。 将来的には簡単なシューティングゲームみたいな物を作ってみたいんだけど、 こんな文献が参考になるよーっていうのがあったら教えていただきたい。 …ってスレ違いですか?(´・ω・`)
>>359 やっぱりというかなんというか
C#本じゃないのが残念
立ち読みしてきまふ
>>359 アルゴリズム本であってシューティングを絡めた言語入門書じゃないぞ
>>359 その本買ったんだけど、ガチガチのアルゴリズム本でした。
いや、承知して買ったんですが。
面白かったんですが、入門書にはならず。
C++のソースついてるけど、規模が大きいから
ソースなぞりながら理解していく、ってのが難しそうなのであきらめました('A`)
ネット対応3Dシューティング(FPSなど)のアルゴリズム本でないかな。
コンパクトなシューティングのソースならゲ製作技術板にイパーイある C++とDelphiばっかりだけど
ColorKey.ColorSpaceHighValu ってARGB値ですか? 透過しなくて困っています。
久々の質問だ 気合入れて答えろよおまいら 俺? すまん、わからん
>>365 ソースのサーフェスのピクセルフォーマットの通りに指定する。
んでもいまどき使う、それ?
>367 え、いまどきは何を使うのでしょうか。
いろいろ調べて試してみましたが、 367の発言だけで巧くいくほど理解していないようです。 ソースのサーフェスのピクセルフォーマットは どこで設定しているのでしょうか。 現在のソースは以下のようになっています。 SurfaceDescription description = new SurfaceDescription(); // description.Clear(); // Clear out the SurfaceDescription structure. Surface bmpSurf = new Surface("filename" description, draw); // . ColorKey ck = new ColorKey(); // Create a new colorkey. ck.ColorSpaceHighValue = ck.ColorSpaceLowValue = Color.Green.ToArgb(); //左上をcolorkey bmpSurf.SetColorKey(ColorKeyFlags.SourceDraw, ck); //
う〜ん…… > ck.ColorSpaceHighValue = ck.ColorSpaceLowValue = Color.Green.ToArgb(); //左上をcolorkey Color.Green.ToArgb()で取るより、直接サーフェイスから取った方が良くない? せっかく、「左上をcolorkey」という仕様になっているんだから。 あと、サーフェイスってビデオカードの状態によって誤差が出そうな気がする。 DirectDrawが廃止される以前にC++でいじってた頃の記憶なので、はずしてたらスマソ。
コメントは抜き忘れです。 本当はbmpに読み込んでbmp.GetPixel(0,0).ToArgb()をやってました。 でもこれもだめらしい。 サーフェイスから直接、ってどうやってとるんですか?
>>371 Surface を Lock して、左上と思しきアドレスから、1ピクセル分と思しき
サイズ (2バイト〜4バイト) だけデータを読んで、RGB部分を取り出して使う。
たぶんこんな感じ。
byte [] pixels = bmpSurf.Lock();
switch (description.PixelFormat.RgbBitCount + description.PixelFormat.AlphaBitDepth ) // RGB と仮定
{
case 15: val = pixels[1]*256 + pixels[0]; break;
case 16: val = pixels[1]*256 + pixels[0]; break;
case 24: val = (pixels[2] * 256 + pixels[1]) *256 + pixels[0]; break;
case 32: val = ((pixels[3] * 256) + pixels[2] * 256 + pixels[1]) *256 + pixels[0]; break;
}
val = val & (description.PixelFormat.RBitMask | description.PixelFormat.GBitMask | description.PixelFormat.BBitMask);
>え、いまどきは何を使うのでしょうか
Direct3D を使ったほうが情報も多いしラクだと思います。
しょぼいビデオカードでも VSync に厳密にあわせられてテアリングしないのは良いけど > 昔のDDraw
>>372 あ、これが済んで pexels が無用になっらた Unlock を忘れずに。
ありがとうございました。 確かにDIrect3dのほうが情報が多いんですよね。 少し3Dもやってみます。 本もどかどか買ったことだし……。
375 :
デフォルトの名無しさん :04/07/15 23:35
最近、DirectXを始めたので、周りに聞く人もいないので、質問させてください。 おばかな質問かとバカにされるかもしれませんが・・・。本当に分からないので。 Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか? Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか? 本とかサイトを見る限り、板ポリゴンの上にテキスチャを張っているサンプルが多いのですが・・・。 参考になるページとかありましたら、お教えください。よろしくお願いします。
>>375 >Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか?
不可能
>Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか?
一部意味不明な部分があるがポリゴンとスプライトの混在は可能
>参考になるページ
Cマガでたまに組む特集ぐらいしか取っ掛かりがないよね
そもそもスプライトなどという機能は存在しないので、無い物は混在できない。
>>375 変換済み頂点を使った板ポリゴンで十分だから、いまさら DirectDraw の
スプライトを使う人はほとんどいないと思います。
お金儲けをしようと思って、自販機のお釣り帰ってくるところを探し回る人と
同じくらいのレア度だと思いますよ。
C#からDirectDrawは使えないだろ?
C#からDirectShowは使えますか?
>>379 何の問題もなく使えるが、お前は何を言っているんだ?
DirectX7のころはDirectDrawサーフェイスに描画した画像を テクスチャに指定することができたみたいですが DirectX9になってからはできなくなったというのはホントでつか? 仮にホントだとして同じような機能を実現するにはどーしたらよいのでしょうか?
うそです。
無くなった機能をどうしても使いたいのなら、古いバージョンで開発する。 その為の互換性でもあるんだけどな……。
>>385 殺り方とかのってるHPはないんでしょうか?
389 :
デフォルトの名無しさん :04/07/19 12:32
ageてみますね・・・
>>387 GetDC して GDI で書いてもいいし、LockRect してバッファに直接書いてもいいし。
DirectDraw の頃とたいして変わってないと思うけど・・・
391 :
デフォルトの名無しさん :04/07/20 15:53
>>391 アンタ、スゲーいい香具師だな
メガトン級サンクスコ
393 :
デフォルトの名無しさん :04/07/23 16:10
質問です。 うまく伝えられるかどうか分かりませんが・・・。 Direct3Dのシーン上で二つのカメラを扱うことは できますか?一つのオブジェクトを異なる複数の視 点から表示したいと思っています。 よくゲームとかで、画面の隅っこの方にキャラク タを上から見たようなの(地図みたいなの?)が表 示されるのってありますよね?そういうのを作りた いと思うのですが、どうしていいのか、さっぱり、 分かりません。何かアドバイス等いただけたらと思 います。宜しくお願いします。
ビューの設定を変えて表示したい数だけレンダリングすればいい。
>>393 266をまとめた116の「ウインドウの一部に表示したい」
って奴を応用してカメラの位置かえて再描画
すみません。 C#ビルダー使いはじめたのですが、そもそも言語仕様を詳しく解説したサイト ありませんか?とくにCとの比較 違い Cでこうしたい時は、c#ではこう書く みたいな... いきなり構造体の中に配列作ろうとしてエラー #define <(これは無いらしいのはわかった、正確にはあるけと用途が違う) useing ... const int MAXVIEWPORT =8; <ここでは宣言できないらしい amespace hoge { const int MAXVIEWPORT =8; <ここでも宣言できないらしい #define MAXVIEWPORT =8;<これも駄目らしい #defineはこういう使い方ではない struct dRECT{ int T,L,W,H; } struct SaveFORMAT { int ClientSizeX,ClientSizeY; dRECT RECTS[MAXVIEWPORT];<こんな使い方したいけど全文がエラーだから駄目 dRECT RECTS[7];<こういう書き方もだめ orz... }; public class WinForm : System.Windows.Forms.Form { } グローバルな定数をどうやって宣言するのだろう。 ある程度C++も理解しているが、かえってその違いにクラクラしてますorz..
>>396 .NET SDK付属MSDNライブラリ(無料)
402 :
デフォルトの名無しさん :04/07/25 11:43
誰でも簡単にって・・・w 万能な開発ツール作ってコードの自動出力付ければいいだけだと思うがねw XNAには期待してないからDirectX10だせや また一から覚えなおすのはやだから
そろそろ俺の出番かな?
関係無いが、池袋に「俺の出番」というラーメン屋がある。
ダレでも簡単 ってヤツに限って 誰でも簡単にいじれない代物なんだよね・・(にや
関係ないが、小便少女もいる。
申し訳ありません。質問です。 自分で作ったフォントをインストールさせずにDirectFontで使用する事はできますか?
申し訳ありません。質問です。 印刷業界を崩すために98年MicroSoftが放つとどめの一撃。 AdobeのAcrobat実用段階システムにしてMSでDirectFontと呼ばれていたプロジェクトって何ですか?
いろいろ調べたけど明確な答えが見つからないなぁorz.. 構造体の中に配列すら単純に記章できないのでしょうかorz.. サンプル見てもc#の得意な事ばかり強調されているけど、C++からの移植について ベーシックな部分を説明しているところがない... 構造体にコンストラクタって(もちろん便利ではあるのだけど) 構造体のポインタをファイル関数に渡して、メモリイメージを保存したい。 そんな場合には、無用な機能だし 誰か明快なお答えをorz.. #define wm_mycommand = 1111; Cでかかれているこんな定義は何処ですればいいのだろう。
C++頭でC#を使って開発してもメリットないだろうな。
そもそもCでも#defineは別の物に置き換えるのが推奨されているし、 その書き方はC#側と同じになる訳なんだが。 つまりC#以前にCが理解できていないということなのだから、 まともに移植など出来ようはずがない。
public const = wm_mycommand = 1111;
まちがいた public const int wm_mycommand = 1111;
DEFINT A-Z
>>418 それが理解できないお前は何者なんだろうな。
420 :
デフォルトの名無しさん :04/07/28 11:47
なんだろ、この思考力の欠片も感じられない最低品質の煽りはw
お前もな。
>>415 すみません
ネームスペースの外に宣言できますか?
でなければクラスの外に宣言できますか?
クラス内でしか宣言できないとなると
クラスで使用したい構造体の為の宣言が出来ないのですがorz...
>>422 あのさ(←書き方が乱暴で悪いけど)、世の中には C# で必要な struct を定義して
Win32 API を読んだり、あるいは単に C# で struct を使ったりしてる例が山ほどあるでそ。
喪前のやろうとしていることは、どれほど「特別な」ことなんだ?
誰でも当たり前のように出来るのに、422には出来ない、という場合には、
「できますか?」って質問するんじゃなくて、何をやろうとしているのかを具体的に書いて、
「やり方を教えてください」って頼んだ方が良いと思う。
>>423 「できますか?」って質問に対しては、
単純に
「できます」
「できません」
って答えてあげればいい
ばーか
>>422 こうするんです
public class ConstValueList
{
public const int a ;
}
class Hoge2
{
void func() { System.Console.WriteLine( "{0}" , ConstValueList.a ) ; }
}
C++と違いconst はクラスのメンバであってインスタンスのメンバーではありません。
文法こそC++と似ていますが、中身は似ても似つきません。
なので、グダグタ言わず色々試してみるべし。
もう一つ、構造体の中身を書き出すのは、ISerializable を使うのがC#流のようです。
あんまり良く分かっていないのですが、こうする事でファイルを仲介してprivateメンバへの
アクセスを防止してセキュアなアプリを構築しやすくなっているようです。
また簡単にXMLとして保存もできるようになります。
ちなみに、直接バイナリで保存できる方法があったら、誰か教えてください、僕も知りたいです。
427 :
デフォルトの名無しさん :04/07/28 22:19
>>417 初めてDirecTXにふれるなら参考になるはず。
俺はその系統のDirectX8のヤツ買ったけどかなり役に立ったよ。
DirecTV
まずは、オブジェクト脳を作るんだ。
そもそも、
>>422 は
なぜわざわざC#でやりたいんだろうか・・・。
C++で無難にやったほうが
情報量も多いし、パフォーマンスもいいのに。
>430 開発時間が圧倒的に短いから。 > 情報量も多いし、パフォーマンスもいいのに。 Managedによるパフォーマンスの低下は約一割。 ケース倍ケースだが、C#を選ぶ理由は充分にある。
生産性がいいわりには苦労してるようだが……。
>>431 SDKのサンプルを見る限りは、軒並み一割どころではない差が付いているが、
何をもって一割なんだか意味不明。
>>431 C++からの移行だとそうでもないよ、もともとDirectXはC++を想定して作られているので
C#のクラスとして考えるとやり方のキテレツな方法が仕様中に詰まってます。
メモリーの構造がイメージできないと理解に苦しむような仕様があります。
パフォーマンスもかなりトリッキーな事をしないと一割は難しい。
誇大広告は鵜呑みにするべからず。
それでもGDI+よりかなり面白い事ができるので、気に入ってはいますけど・・・
あるWindowsアプリケーションが、一連の動作の中で 使用するポート、プロトコルについて 調べるソフトウエア または、方法はないでしょうか?
>430 メモリ管理がらくでわかりにくいバグがでないからだと >434 CustomVertexのこと? もっとましなインターフェイスにしてほしいよ。
438 :
デフォルトの名無しさん :04/07/30 18:46
コマンドラインからビルドするにはどうすればいい? csc /lib:"e:\windows\microsoft.net\managed directx\v9.00.1126" /r:Microsoft.DirectX.dll *.cs とかやってもだめです。
>>437 そもそも言語側でメモリ管理をしなきゃならんってのが今となっては前時代的だしなぁ。
言語側でメモリーを管理するのが前時代的なのか。 それじゃC#はもろに前時代的な言語だな。
>>439-440 煽りは死滅スレでやってね、くだらない質問で埋め尽くされるのは、このスレの意義があったと言えるが
キチガイ発言で埋め尽くされるのはゴメンだよ。
>>440 そりゃあーたC/C++じゃねーのか?
>>441 スマソ、でもこれだけは言って置きたかった。
C/c++は言語側が管理するのではなく、プログラマ側が管理するんだが。
2004 summer入れたらビルド通らなくなってた。 微妙に変わっているのね。
C/C++だと、ハードをプログラマが管理するんですね とてもとても前時代的ですね。
最近のドライバは大概C/C++で組まれているが。 どんな最先端OSを使っているのか興味津々。
リソースの管理はロックしないように気を付けたり、 勝手に開放されないように明示的設定をする必要があったりと、 気を抜ける場所ではありません。
449 :
デフォルトの名無しさん :04/07/31 01:12
でもま、メモリをプログラマが一々管理するってのはアホらしいとは思うね。 機械的な作業まで人間様が面倒見なならんってのはなぁ。
VS.NET2002だとDirectXSDK入れただけでウィザード出来るんじゃないんですか?
夏版なら2004でもウイザート動くよ
無料でアップグレードできるのに、未だに2002を使っている理由が分からない。 アカデミックならゴミみたいな値段で買えるし。
2004からウィザードは無くなったよ
>>453 そーゆーのは余計なお世話ってやつじゃない
2004ってなに?
2004Summerを入れたんですがDirectXプロジェクトのウィザードが出来ないんです MSのフォーラムによれば2002ならウィザードが出来るはずなんですが。
2003ですね(藁
Visual Studioのバージョンと、DirectX SDKのバージョンが 激しく混乱している予感
460 :
デフォルトの名無しさん :04/07/31 01:32
>>450 機械的な作業でお金貰ってたら人間として恥ずかしいだろ。
アホは無視の方針で頼む >ALL
未だに2002を使っている奴って、非合法的手段で入手した臭いがするんだが。
463 :
デフォルトの名無しさん :04/07/31 01:40
>>438 俺はこんな感じでやってる。こんなんでいいのかは知らんが。
sc /nologo /target:winexe /out:xxx.exe /optimize /win32icon:icon\xxx.ico /lib:C:\WINNT\assembly\GAC
/r:Microsoft.DirectX\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.dll;Microsoft.DirectX.Direct3D\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll;
Microsoft.DirectX.Direct3DX\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.Direct3DX.dll;Microsoft.DirectX.DirectInput\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll source\*.cs
やべー、いくつか改行入れたのにまだ長すぎた(汗) みなさんすいません。
しかもコンパイラ名の c が抜けて sc になってるよ。 今日はもうだめぽ。
ていうか長ぁ
468 :
デフォルトの名無しさん :04/07/31 01:45
↓ こんな感じのテクスチャを用意しておいて、 スプライト描画するときに回転させて描画(←とか↑とか)させたいんですが どうやったらできるでしょうか? Sprite.Draw2D()に回転角を引数に取るものがあったのですが、 説明が少なくてよくわかりませんでした。 (全体が回転する?)
>>457 俺も2004summerを入れたけど、ウィザードできなかった。
VisualStudioのバージョンは2003。
theSpokeのやつ。
VisualStudio2003じゃウィザードでないですか?!
激しい既出の質問ですが、答えらしい答えは無かったような気がします。
どなたか分かる方いたら、教えてください!
おねがいしゃす!おねがいしゃす!
Summer2004ではウィザードは廃止された。 代わりにGUIも使える新しいフレームワークのサンプルが、 EmptyProjectとしてサンプルブラウザからインストール出来る。 これFAQになりそうだ。
>>473 は 唯一神です。
ありがたき幸せ。生きていて本当に良かった。ありがとう。ありがとう。
>>473 つーコトは、VC#以外の開発環境(ボーランドの奴とか#D)でもサクッと作れるように
なったのか。ヒャッホウ!
てか、機能ダウンだろ。
根本的にウィザードなど使用する必要性がないのでどうでもいい。
日経ソフトウェアで連載始まったらしいけど 他にも連載してるとこある? Cマガで2回ほど特集してるのは持ってるんだけど
479 :
デフォルトの名無しさん :04/08/01 19:51
>>478 アバンジェリスト川西さん期待age。
Cマガでやってた特集はどれも糞。
連載は他にはやってないんじゃないかなあ。
VS.NET 2003でManagedDXウィザードを使うには。 1. Summer2004にウィザードは含まれないため、まずDX9SDK Summer2003を入れておく。 2. DX9SDK Summer2004を入れる。 3. ウィザードのテンプレートファイルを修正する。 具体的には [VS.NET2003をインストールしたディレクトリ]\VC#\VC#Wizards\Mdx9AppWizard\Templates\1033\ 例えば C:\Program Files\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\Mdx9AppWizard\Templates\1033\ 3.1 ファイル:D3DBlank.cs 219行: Color.White.ToArgb() -> Color.White 3.2 ファイル:D3DApp.cs 61行: RenderStates ->RenderStateManager 62行: SamplerStates -> SamplerStateManagerCollection 63行: TextureStates -> TextureStateManagerCollection つづく。
481 :
デフォルトの名無しさん :04/08/01 23:09
つづき。 3.3 ファイル:D3DFont 40行: TextureState -> TextureStateManager 41行: TextureState -> TextureStateManager 42行: Sampler -> SamplerStateManager 43行: RenderStates -> RenderStateManager 3.4 ファイル:D3DUtil.cs 925行: RenderStates -> RenderStateManager 3.5 ファイル:D3DEnumeration.cs 379行: ref qualityLevels -> out qualityLevels 4. ウィザードからプロジェクト作成して、DirectX系の参照が バージョン1.0.2902.0(Summer2004)になっていることを確認しつつコンパイル。 5. 嘘ついてたらごめんょ。
ウィンドウのクライアント領域と同じ大きさのバックバッファサーフェスを作ったんですけど、 ウィンドウのサイズが変更されたときに、サーフェスのサイズを変更するにはどうしたらいいんでしょうか? プロパティやメソッドの一覧を見ても、サイズを変更する方法が見つかりません・・・
protected override void OnLayout(LayoutEventArgs e) { image.Dispose(); image = new Bitmap(ClientSize.Width, ClientSize.Height); }
新しく作り直すしかないんすか・・・ (´・ω・`) なんかオーバーヘッドがでかそう。
オーバヘッドを気にするのなら、そもそもC#という選択に問題がある。
>>485 C++ だとどうやるんですか。参考までに。
>>485 Java だとどうやるんですか。参考までに。
あるけど backSurface.SurfaceDescription.Width backSurface.SurfaceDescription.Height
>>486 そもそも、フレームバッファをウィンドウフレームのサイズに拡大縮小してBlitしているだけで(CViewが勝手にやってくれるんだと思う)、
クライアントエリアの大きさが変更されても、実際にフレームバッファ(フロント・バック・Z・ステンシル等)のサイズが変更されるわけじゃないよ。
だから、320x240のフレームバッファを1024x768のウィンドウフレームに表示してくれるしその逆もある。
拡大縮小を行うか否かは出力時に決定するものだが、 なぜ突然行うことが前提で話し出す馬鹿が出現するんだろう?
>>489 >だから、320x240のフレームバッファを1024x768のウィンドウフレームに表示してくれるしその逆もある。
主観だけど、そんなゲームやりたくないし、作りたくないよ。っていうか、482で明確に
>ウィンドウのクライアント領域と同じ大きさのバックバッファサーフェスを作ったんですけど、
って書いてるから、今話してるプログラムはそういうタイプのものでは無いと思う。
理由も無しに決めつけるのはよくないですね
なんか10秒に一回くらい、0.5秒くらい固まるんだけど、コレって何?
ガベコレががんばっているんじゃないの?
Dispose を忘れてますた OTL
directinputでマウスの動きを検出しようとしてるんだが、 何故かdeviceのSetEventNotificationで設定したイベントが 飛んでこない。 サンプルと同じようにやってるのに何故だorz
中濃ソース晒さんとアドバイスもできん サンプルが普通に動いてるなら おまいのコードが悪いってことに
501 :
デフォルトの名無しさん :04/08/09 23:06
焼そばソースなら晒せます。
おじさんつまんなーい
503 :
デフォルトの名無しさん :04/08/11 00:02
> 本来、アニメーションセットの取得には GetAnimationSet メソッドを使うべきですが、 > DirectX 9.0 Update (Summer 2003) では、GetTrackAnimationSet メソッドがその機能を持っています。 > 逆に言うと、このリリースの GetTrackAnimationSet は正しく実装されていません。 > これは修正される予定なので、このコードは将来のバージョンでは正しく動作しません。 > GetAnimationSet メソッドを使ったコードをコメントアウトしていますので、正しく修正されたリリースではそちらを使ってください。 2004夏ではこのバグ(?)は修正されていますでしょうか。 落とされた方教えて下さい。
504 :
デフォルトの名無しさん :04/08/15 10:20
C#で高速化目指すなら静的なプログラミングじゃないと難しいなぁ。 大量のnew→disposeの繰り返しは厳しすぎる。 まぁゲームは基本的にスタンドアロンだから開始前に大量にメモリ確保しても問題ないか。 いちいち事あるごとにnewなんてしてられないしね。
ここは駄目初心者の日記帳じゃないんだが。
ここは書き込みの内容が支離滅裂で意味不明で標語的な言葉を暗記するだけで判断を外部に任せてしまう駄目初心者の日記帳じゃないんだが。
ManagedDirectXを解説したオススメの書籍とかないでしょうか?
508 :
デフォルトの名無しさん :04/08/18 00:59
押すじゃなく推すじゃないのか
>508の本は俺も持っている。 突然自分の頭が良くなったんじゃないか?ってぐらいわかりやすい。 超オススメ。
>>508 カケラも日本語でのなさそうな ふいんき(なぜかry)なんだが・・
英語オンリーじゃ教養のない漏れにはつらすぎる
>>511 いや、本当にわかりやすいんだよ。
とにかく英語が平易でわかりやすい。
辞書なしで読み進めることができたんで
自分でもビックリした。
技術英語なら何とかなる.がんがれ
514 :
デフォルトの名無しさん :04/08/19 15:28
ならないよ 才能のある人間達の会話はこれだから嫌なんだ
515 :
デフォルトの名無しさん :04/08/19 15:40
才能じゃなくて努力だろ。 がんばれ。
どちらにせよ英語確定なわけか・・ 立ち読みしてみて判断したいとこだが 洋書じゃそういうワケにもいかんよなぁ・・
MSDN(英語)で挫折した偏差値50の俺でも大丈夫でしょうか?
偏差値50なら学校で英語の授業ないだろ
あったわい
>517 なら無理。 でも努力すれば可
サンプルコードとかって載ってますか?
>>521 前の書き込みで書いたが、
コードだけでも読み進められるくらい、
めちゃくちゃいっぱい載ってる。
あと紀伊国屋新宿南店で存在確認。
すまん質問さしてくれ マネージドの解説本らしいがVBとC#どっち使ってる? この本にはどんなサンプルがのってるん? Direct3Dオンリー? サンプルやチュートリアルで網羅しきれてないサンプルとかある? ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか? 新宿遠すぎ 騙されたともって買ってみるカ・・
騙されないから買っておけ。
> マネージドの解説本らしいがVBとC#どっち使ってる? C# > この本にはどんなサンプルがのってるん? いろいろ おまけCDはMSI > Direct3Dオンリー? いいえ > サンプルやチュートリアルで網羅しきれてないサンプルとかある? いいえ(はい) > ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか? はい(いいえ) > 新宿遠すぎ いいえ
> サンプルやチュートリアルで網羅しきれてないサンプルとかある? いいえ(はい) ←どっちでつか > ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか? はい(いいえ) ←どっちでつか アマゾンで注文しまつた
528 :
デフォルトの名無しさん :04/08/20 21:11
Mesh.LoadHierarchyFromFile でアニメーションが入ってないファイルを読み込むと、 中身が腐ったAnimationRootFrame.AnimationContollerが返ってくる。 外からじゃ腐ってるか判別できないから、 覗こうとして適当なプロパティをを参照した瞬間あぼーんもうだめぽ
何回やってもデバイスの初期化であぼんぬなんですがやっぱノーパソごときでMDX使うのが間違ってますかね?
>>508 は、例のマネージド本の出版社の社員です。
>>526 は彼の営業活動に騙された、立派な被害者です。
ノーパソもここ2年ぐらいは3D強化されてるから動くと思うけど どんな化石を使ってるのかね
>>525 補足
おまけCDにはVB.NETのソースもはいってたはず
この本、付属のCDにC#とVBのコードが入ってる。 しかし、すでに1年前の本なんで、サンプルコードがちょっと古くなってるね。 summer2003で書かれているので、summer2004で書いてるヒトは そのままではコンパイルは通らないハズ。 たとえば、一番最初のプログラム例で、CustomVertex.TransformedColoredの 頂点配列を使うんだけど、 vertices[0].SetPosition(new Vector4(Width / 2.0f, 50.0f, 0.5f, 1.0f)); と、summer2003での書き方になってる。summer2004では、 vertices[0].Position = new Vector4(Width / 2.0f, 50.0f, 0.5f, 1.0f); このようにメソッドがプロパティに変更されてる。 まぁ、こーゆー所を直しながらコードを打ち込んでいくのも勉強になるんで頑張れ。
いろんなところに、「SHOP TALK」ってあるんですけど、 これってなんですか? 前後の文脈から、点睛慎吾みたいなものかなあと想像するのですが
"Shop Talk" うんちく話。相手、時、場所を選ばず、自分の商売の話ばかりすること。専門話。
要するに、トリビアか。
藻前らいっしょにShop TALKしようぜ。
summer2003と2004ぜんぜん入れてませんでつた アップテートとかぬかしてるのに上位互換なんいんですねこいつら サンプル動かなくて激しく鬱でつ
541 :
デフォルトの名無しさん :04/08/23 10:39
ちょっと分からないので質問します。 DirectXのMeshクラスでティーポットとかトーラスを作成できますよね。 そのティーポットの頂点データなどを取得する方法はありますか? どうすればよいでしょうか?宜しくお願いします。
542 :
デフォルトの名無しさん :04/08/23 14:01
マルチか?コピペか?厨房王国BBXが今夜も嵐を呼ぶ!!
>>541 Mesh.Teapot(device).Device.RenderState.Lighting = true;
これで落ちるらしいぞ。
>>541 あ〜。うろ覚えなんで、自分で確かめてほしいんだけど。
BaseMeshにVertexBufferやIndexBufferをゲットするためのプロパティがなかったかな?
メッシュ、プログレメッシュ、パッチメッシュなどは、このクラスからの継承。
public class Mesh : BaseMesh { ... }
545 :
デフォルトの名無しさん :04/08/24 11:58
>541.544 Mesh box = Mesh.Box(device,1.0f,1.0f); VertexBuffer vb = box.VertexBuffer; ここから、どうやってvbに格納されている頂点データを取得したらいいのでしょうか?
>>545 お前はなぜ自分で調べようとしないんだ?
サンプルならWebにごろごろ転がってるぞ。
Direct3Dで動いてる画面のスクリーンショットを取るプログラムを作り たいのですがどのAPI?クラスを使えばいいのでしょうか? スクリーンショットを取ってメモリやbitmapで保存できるような物が作 りたいのですが
>>545 手順を書いとく。
たしか、DXの付属サンプルに、その目的そのまんまのコードが
あったような気がする。イルカのやつ。
@メッシュからVertexBufferとその数を取得。
A新しいVertexBufferを確保。
BメッシュからゲットしたVertexBufferをロック。ストリームまたは配列をゲット。
C新しいVertexBufferへメッシュのVertexBufferをコピーする。
DメッシュからゲットしたVertexBufferをアンロック。
>548 そうだ、忘れてた。w 書き込むバッファもロック、アンロックしろよ。
DirectSoundではMP3を再生することはできなんでしょうか?
デコードしながらバッファに書き込んでいけば問題なく出来るだろ。
>>551 そんな上等なことできたら初心者板に居る必要ないね
>>552 DirectShowの機能だっけVideoって
Windows Mediaな。
>546.548 どうもありがとうございました。 できました。めちゃくちゃ考え違いしていたみたいで・・・。お恥ずかしい。 大変お手数をおかけしました。ありがとうございました。
Audio audio = new Audio("smp.mp3", true); audio.Play(); Video video = new Video("smp.mpg", true); video.Play();
どこが神なんだ・・・ サンプルからそのままやんか
551や558に比べたら超神杉だろ 文句だけは達者なヤツはウザイだけ 他池
結局、条件のDirectSoundでというのは何だったんだ? 再生できるなら何でもいいのなら、そんな条件を付けなければいいのに、 何のためにDirectSoundを指定したんだ?
音鳴らすってことを全部DirectSoundでできたら楽なのにとか思ったんだろ? それ以外はダメなんて一切書いてないしAudioあたりで満足したみだいだし放置しとけ
>>561 匂いを出すってことは全部DirectSmellでできることを知らない罠。
>>562 神きたーーーーーーーー!!!!!!!!
DirectSmell使ってみたけどホントに臭い出たよ!!
ようやくレモンの香りのするシューティングが完成しそう
アリガトン!!!
って時代がいつか来るのかな・・?
臭い出た時点で少なくともクリスクロスは超越するわけだが
現代でいうブラクラのニオイ版とかあったら、マジで洒落にならないよな。 悪質なニオイに出くわしたら、ほんとに吐いて具合悪くするんじゃない?
そうなると、きっと匂いファイヤーウォールとか出るに違いない。 フィルタリングする項目にウンコ、カメムシ、生ごみとかリストアップしてあったりして。
あ
567 :
デフォルトの名無しさん :04/08/26 17:33
匂いファイアウォール・・・。嫌ですね。特にカメムシは・・・。 質問です。C#でForceFeedbackについて簡単に解説&サンプルが載ってるページってご存知でしょうか? あと「それぐらい調べてください」といわれそうですが、質問ついでに質問します。ごめんなさい。 DirectPlayは使ったことがないので良く分かりませんが、 一つの空間に複数の人がアクセスしてくるようなプログラムを作成したい場合、 DirectPlayの関数で、簡単に空間を共有してくるような機能ってありますか?やっぱり、 DirectPlayは単なる通信の方法でしかなくて、オブジェクトの共有とかデータで送ってあげないとムリですか? やっぱ、そこまではできませんよね?
>匂いファイヤーウォール 匂いデバイスを意図的に誤動作させるパケットを切れば・・ それ以前に匂いを発生させるデバイスがない限り無問題っぽいが そんな装置作ったら特許モンだよな > 一つの空間に複数の人がアクセスしてくるようなプログラムを作成したい場合、 クライアント/サーバー トポロジのことを言ってんのか ピアツーピア トポロジのことを言ってんのか どっちなのかはっきりしてほしいぞ ヘルプに絵つきで糞わかりやすい解説がついてるからまずそれを見てくれ たぶんクライアント/サーバー トポロジのほうを想定してるんじゃないと思うが >DirectPlayの関数で、簡単に空間を共有してくるような機能ってありますか? >DirectPlayは単なる通信の方法でしかなくて、オブジェクトの共有とかデータで送ってあげないとムリですか? たとえばおまいさんの想像してるのは キャラクタ1〜10までの座標とHPを共有 とか設定すれば勝手にデータ転送して整合性保ってくれる みたいなのか? だとしたら無理 そんな都合のいい機能はないかと思われ 自分で実装しる DirectPlayはパケット(文字列やら数値やら音声やら)を転送するための手段を提供してくれるだけと考えておいたほうがよいよ
569 :
デフォルトの名無しさん :04/08/26 23:07
>>563 そのくらいヘルプ嫁、と言いたいところだが、ヒントだけな。
味はとりあえず俺の好みに合わせているが、各人好きなように調整してくれ。
DirectSmell.Device dev = new DirectSmell.Device(form1);
DirectSmell.Buffer coffee = DirectSmell.Presets.Coffee.Wonda.MorningShot(CoffeeStrength.Strong, CoffeeSugar.Double, dev);
coffee.Play();
>>569 匂いだけでなく味まで再現するのか・・
どんなハードウェアか想像もつかん
みんなが飽きる前にそのネタやめとけ?
もうとっくに飽きてるんですが何か。
たぶん、色表現をRGBの値で表現するように、 色々においを表現できるんだろうな。 ウイルスの付録になりそう。
おまいら、たまにはニュースみろよ 臭いのでるデバイスはネットカフェで遊べるよ 東京だけど
>DirectPlayはパケット(文字列やら数値やら音声やら)を転送するための手段を提供してくれるだけと考えておいたほうがよいよ やっぱりそうですよね。もしかしたらそういう「便利な機能もあったりして?」と思っただけです。 お手数をおかけしました。
576 :
デフォルトの名無しさん :04/08/27 11:51
DirectDrawを使って2D画像を拡大縮小させたりしたいのですが、2D画像のサイズは 2の倍数しか扱えないのですか?
それと、C#のGDI+系の命令と共存して使用できますか?
wmsdk.hって何を落とせば入ってくるの?dx9sdk落とせばいい? 9入れたら8戻らないとかあったりしませんよんね
>>577 できるよ。
Surface.GetGraphics() で GDI+ のグラフィックスオブジェクトをゲットできる。
使い終わったら Surface.ReleaseGraphics() で開放すること。
そのときの注意点は以下の通り。
・サーフェスのフォーマットはバックバッファに使われるのと同じ種類でないとダメ。
・サーフェスをミップマップのテクスチャチェーンに入れてはダメ。
・すでにロックしてあるサーフェスに Surface.GetGraphics() を呼び出すと失敗する。
・サーフェスがレンダーターゲットの場合は、ロッカブルであること。
・メモリプールを Pool.Default にした場合はダイナミックバッファであること。
・メモリプールがスクラッチの場合は常に失敗する。
>DirectDrawを使って2D画像を拡大縮小させたりしたいのですが、2D画像のサイズは >2の倍数しか扱えないのですか? DirectDrawに関してはんなこた〜ない筈 拡大縮小も任意の数値で思いのママだよ その昔、爺フォースとかのグラフィックボードが 3Dポリゴン(メッシュ)に貼り付けるテクスチャは 2の乗数でないとダメって仕様なのはあったとは思ったが たぶんそれと勘違いしてるのかと思われ
>>573 とりあえずソースよろしこ
もしホントなら逝ってきて体験談をここに記す
>>576 >2の倍数しか扱えないのですか?
偶数しか使えないとかいう制限は聞いたことないな
526じゃないけどアマゾンで買ってみた。 これくらいの英語ならさくさく読める感じ。高校レベル+専門用語知識 内容は…あんまり深く読んでないのでパス。 4kちょいの出費が痛くなければいいんじゃない?
>>508 の被害者がまた一人増えたな。
SAMSマンセー
ピアーツーピアを使ったサンプルってありませんかね?
サンプルもなにも PtoPなら普通にチュートリアルあるだろうが
>>589 それは何処にありますか?
ドキュメントの中から探しても見つからなかったんですけど。
591 :
デフォルトの名無しさん :04/08/29 21:27
LightにCommitというメソットがあります。 ヘルプを見ると「指定したライトに対する遅延ライト設定を適用する。」 と書かれてあるのですが、この意味がさっぱり分かりません。 遅延ライトとはどういう意味なのでしょうか?
592 :
デフォルトの名無しさん :04/08/29 23:34
3D空間内にテキストを出す方法ってないですか? 人のモデルの頭上にテキストをつけたいんですが C++でもいいのでサンプルないですかね。
>>591 Summer 2004 では Commit() はなくなって、代わりに Update() になっている。
Light の各プロパティは、それぞれ変更された瞬間に値がデバイスに反映されるのではなく、
Commit()/Update() されるまで反映されない。
Update(); と Enabled = true; は同じ意味。
“遅延ライト”というのはよく分からない。
そもそも、"light" なのか "write" なのか…。(意味的には後者。)
>Update(); と Enabled = true; は同じ意味。 けひひ。これは本当ですか?
ちょこちょこ仕様変えるのは勘弁してもらいたいなぁ。
>>595 ホントだよねぇ。
俺たちをヒトバシラーにしてWinFXのグラフィック関連は使いやすくなるんだろうか?
そうなってもらわないと、報われないよ。ハニワ。
>>594 あうあう。ここでは“意味”ではなく“効果”というべきでした。
> Changes made to the Light object's properties do not take effect until this method is called,
> or Light.Enabled is set to true.
Enabled = true で Update() と同じ効果(デバイスの更新)が得られる。
Update() は Enabled = true; で代用できる。
Enabled プロパティの本来の目的は Light の有効無効の切り替え。
Light を利用するには Enabled = true; が必須。(Update() だけでは有効にならない。)
>>590 DirectPlayのチュートリアルにのってるよ
まずはそこ嫁
>Update(); と Enabled = true; は同じ意味。 まじでこれは本当ですか?
>>593 自身も書いているが、
>Light を利用するには Enabled = true; が必須。(Update() だけでは有効にならない。)
という時点で少なくとも同義ではない。
よって
>>594 のけひひは正しい。
すいません。 Visual Studio .netのアカデミック版使っているんですが、分からないところが・・・。 DirectXのSDKをインストールしてもプロジェクトのところにDirectが追加されません。 それにサンプルもコンパイルが通らないです。 いくら調べても 「SDKをインストールするとプロジェクトに追加されます」 見たいなことしか書いてありません。 どこか設定おかしいのかと思っていろいろいじくって見ましたが、結果は変わらず。 さらに日本語ドキュメントをインストールしたにもかかわらず、そんなものありません。 どこかおかしいとは思うんですが、なにぶんC#初めて4ヶ月足らずなものですからぜんぜん分かりません。 教えていただけないでしょうか?
>>602 サンプルブラウザのempty projectをフォルダにインストールするがよい
DirectPlayのサンプルでパケを送信するとき 送信フラグに C++でいうところのDPNSEND_SYNCが設定されてますが DPNSEND_SYNC=非同期 IDirectPlay8Peer::SendTo 要求を取り消す。 これだけではワカランです 非同期の要求を取り消す=同期させるってとこですか? 何に同期させるのか、同期と非同期が具体的にどう違うのか知ってる方いたら教えてくらはい
>>603 ありがとうございます。
一応インストールしてみました。
しかし、インストールして実行してみますと、なんか
「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と意味がさっぱり分からない警告が出ます。
教えてくれたことの意味を取り違えていたらすいません。
何かいい本ないでしょうか・・・・。
実はは格闘ゲーム(2D)を作ってみたいのです。
参考になる書籍などを探しているのですが、なかなか見当たりません。
そもそもそういったものはDirectXを使わないでも実現できるものなのでしょうか?
DirectXの概念といいますか、何も分からないもので。
すいません。
ゲームスピードにもよりけりだろうけど多分GDI+じゃ無理だと思う
ADVでおなじみのクロスフェードをC#でしこしこ書いてみたんだけど、 そこそこ実用的な速度になったよ。 ただ、同じことをGDI+でやらせようとすると無茶苦茶遅い。
やっぱりDirectX使ったほうがよいのでしょうか。 使ったほうが、というより勉強した方がっていうのが正しいですけどw でも・・・まだDirectXのサンプルのコンパイルが通りません・・うるうる(涙 昨日書き込んだ後からもずっと解決策を探していましたが、いまだにできません。 あと書籍のことですが、DirectX関連の本は全部3Dグラフィックばっかりで・・。 自分にはとても・・・・経験足りなくて分からないです。 2D関係のことを解説している本はあるでしょうか? C++では見つけたような気もしますが、C#が見つからないです。 なにか書籍はあるでしょうか? またまた申し訳ありませんが、よろしくお願いします。
>>508 の本は2Dも一つの章を使って解説してるよ。オススメ。
え・・・英語っすか・・。 鳥肌が・・・・。 でもやってみないとこの先進めなさそうですから、がんばって読むしかなさそうですね。 ありがとうございました。 英語分からなくてもソースコードだけで十分という方もおられるようですが それだけの技術はまだないっす・・・・・。 和訳ソフトを共同で読み進めていけるぐらいだと期待して、購入いたします。
また
>>508 の本薦めてるやつがいるな・・
どっか立ち読みで確認できる本屋の情報きぼん
つかUpしてくれ
あの本は良質だから、買って損はないよ。 気になるなら、amazon.comのほうのレビューを読んでみたらどうかな。
>>611 >>522 Kick Startシリーズが何冊かまとめて置いてあるから、すぐ見つけられると思う。
べつに3Dだから2Dが使えないって事はないわけで・・・・・。 データをヴュー変換後のモノとして扱えばそれで2Dな訳だ。 Object Space ↓ World Space ↓ ← Model-View/World 変換 Camera Space ↓ ← Projection 変換 Homogeneous Space ↓ ← Viewport 変換 Window Clipping Space (これが実際のウィンドウでの座標になる) Managed DirectX では CustomVertex . TransformedXXX となっているのがヴュー変換後の座標値。 CustomVertex.Transformed CustomVertex.TransformedColored CustomVertex.TransformedColoredTextured CustomVertex.TransformedTextured
ヴ ュ ー ! !
以前Cマガで、DirectXを使って2Dを扱うという特集があったので参考にした。 >ヴュー ワラタ(失礼)
マルチBBXばんざ〜い
>>618 2003年10月号?
ほかにもあるなら教えてけれ
ttp://wanderer.jp/ ここの管理者が書いてる。
何度か特集があったんで立ち読みしてきたが、
これのために買うくらいなら、ヘルプ、サンプルを眺めたほうがよっぽどまし、なレベルだ。
>>620 2004/03 学校の図書館でコピーしたのを持ってるから間違いない。
624 :
デフォルトの名無しさん :04/09/05 21:00
C#でForceFeedbackについて簡単に解説&サンプルが載ってるページってご存知でしょうか?
C#でDirectXを使う人も増えてきたみたいだし、 そろそろ和書も多くなっていいと思うけどなぁ。
626 :
デフォルトの名無しさん :04/09/06 17:34
SDK Update (Summer 2004)をインストールしたら vs.netのDirectXウィザードで作られたアプリがビルドできなくなった。 名前空間がないとかどうたら言われて・・・
>>626 リリースノートくらい読めよ・・・
マルチくらい自覚しろよ・・・
628 :
デフォルトの名無しさん :04/09/06 21:21
45度見下ろしRPGで、地面をクリックすると緑の環ができる やり方知ってる方います? スクリーン座標と地面座標の合せ方がちょと わからないんですけど・・・。
緑の輪ってどこにどう表示されるんだ? あと地面は平坦か? ぐらいは書けよ…
シミュレーションRPGみたいなのかな?
プログラムをまともに書けない奴は、説明のための文章もまともに書けない。
>>631 こっちのほうが正しくねえか?
説明の文章をまともに書けない奴は、プログラムもまともに書けない。
だからウィザードには追加されないと何度言えば(ry
・・・と思ったがもしかして参照の設定のことを言ってるのか?
>>631-362 どちらも可である可逆式ですか・・?
例えばあるメッシュが表示されてたとして
スクリーン座標(X,Y)にはそのメッシュが表示されているか調べるメソとかないんでしょうか
あるいはあるメッシュのスクリーン座標(X,Y)を返すメソとか
計算すればいいだけの話で、何が聞きたいのかさっぱり分からん。
>>634-635 あれ?ウィザードには追加されないんですか?
そうだったら・・・・なんて無駄な努力を・・・・。
申し訳ありません・・・・。
その参照の設定というのを教えてもらえませんでしょうか?
質問が下手な人は損だな。
>>610 最新版のSDKじゃなくて
一つ前のやつ(summer2003update)を入れればウィザードが出ますぜ。
購入した本がウィザードがあることを前提にして解説してたもんで
summer2003で学習してますが・・・
いつか最新のSDKに切り替えないとまずいんでしょうね。
644 :
デフォルトの名無しさん :04/09/08 17:35
VertexBufferで四角のBOXを作成して、それを半透明にしたいと思っています。が・・・。 どこをどうやったら半透明になるのかサッパリわかりません。 半透明の設定はどこを設定すればいいのでしょうか?ご教授をお願いします。
645 :
デフォルトの名無しさん :04/09/08 21:37
>>644 マテリアルのアルファ値をさげればよろし
RenderState.AlphaBlendEnableもかえる
デバイス.RenderState.SourceBlend=Microsoft.DirectX.Direct3D.Blend.SourceAlpha; デバイス.RenderState.DestinationBlend=Microsoft.DirectX.Direct3D.Blend.InvSourceAlpha; デバイス.TextureState[0].AlphaOperation= Microsoft.DirectX.Direct3D.TextureOperation.Modulate; ブレンド設定とか αオペレーションの設定も必要〜 と追加してみるてすと
へっぽこハミルトニアン
>>640 おお!
これは気が付きませんでした・・。
できました!!
ありがとうございます。
でもなぜ2004だとウィザードに追加されないのでしょうね。
やはり最新バージョンの2004で勉強していったほうがよいのでしょうか?
2004はどこか変わっていたりするんでしょうが、どっちの方がいいのかなと・・・。
返答ありがとうございます。 645 > マテリアルのアルファ値をさげればよろし マテリアルのメソットにアルファの値を入力できるような項目がないのですが・・・。
>>649 material.Diffuse = System.Drawing.Color.FromArgb(128, 255, 0, 0)
とか
>>646 をやればアルファ下げる必要はない気もする
だめならとか
device.RenderState.SourceBlend = Blend.SourceColor;
device.RenderState.DestinationBlend = Blend.InvSourceColor;
651 :
644 :04/09/11 08:32:35
>>650 できました!!
おかげさまで助かりました。ありがとうございます。
>>648 >でもなぜ2004だとウィザードに追加されないのでしょうね。
メンテが大変だからウィザードはもう作らない、サンプルexeからプロジェクトをインストールしてくださいな、
みたいなことがリリースノートに書いてあった気がしますが。
うろ覚え。
3Dゲームプログラミングに必要な数学って、 線形代数と微分積分位でしょうか? 空間図形は役に立ちますかね・・・。
>>653 とりあえず線形代数だけわかっていれば問題ない。
微分積分はまじめに計算することはめったにない。
たいていコンピュータ向けの解法をつかう。
たとえば微分だと極小区間の単純な差分で求めたり
積分でもモンテカルロ積分をつかったり。
3Dゲームプログラマーのための 数学 [基礎編] が工学社からでるらしい。
DirectXの国産書籍はろくなのがないね・・ 実際
>>659 その本、和訳版でてるよね。
ゲームプログラミングのための3Dグラフィックス数学
ってやつ。
ある程度数学わかってないと、初心者には難しい。
>>660 だよね。本屋でDirectXのコーナーを見てると鬱になる。
「俺がもっとましなヤツ書いてやるぜーっ!」って思う。
>>661 和訳版は一応でているが、
値段がべらぼうに高いのに、それに見合うだけの内容が全然ない。
紙面のマージンをべらぼうに取りすぎ。
主にアルゴリズム関連を知りたいのですが、 洋書のおすすめの書籍って何かありますかね? Game Programming Gemシリーズが有名みたいですが。
gemsは別にアルゴリズムの本ではない。 純粋にアルゴリズムについて調べたければ、ゲームの枠に虎割れてはいけない。 数学とかソフトウェア工学とか、学会の論文を当たってみても、 金を斯けずともおいしいものはゴロゴロと転がっている。
Zバッファが上手く機能しません。 レンダ毎に Device.RenderState.ZBufferEnable=true; としてやっているのですが、 後から描画したオブジェクトがZ-Bufferを無視して 前面に描画されてしまいます。 考えられる問題点としてどのようなことが挙げられるのでしょうか。 宜しくお願いします。
マトリクス使ってないに100セペタ
べつに毎回ZBufferEnableを設定せんでも・・・・・・。 Device.Clear()でZBufferをクリアしてない。ってのは?
DirectXだと思ったら実はDirectorだったに32767ポリゴン。
667ですが未だ上手くいきません。 >668 マトリクスと使っていないというのは、 具体的にどういう状況を指しているのでしょうか。 >669 レンダ毎に Device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, Color.DarkBlue, 1, 0); とやっております。引数に何らかの問題点が…? >670 ポリゴン数が多すぎるのも原因になるのでしょうか。 およそ、400,000ポリゴン使っております。
>>671 その設定だったら問題なさそうなんだが
そいうときはもっと簡単な手法で確認すれ
例えばチュートリアルの三角形やら虎メッシュを2つ表示してみるとか
それでOKなら おまいさんのコードかグラボのどっちかがダメってことで
原因が分かりました。 Device.Transform.Projection に設定するMatrix Matrix.PerspectiveFovLH(fieldOfViewY, aspectRatio, znearPlane, zfarPlane) の第3引数であるznearPlaneの値に問題があったようです。 問題解決以前はznearPlaneの値を0に設定していました。 この値を適度な正の数値に変更をしたら、 とりあえず見た目の問題は解決しました。 但し、この数値が小さいと、 局所的にZバッファが無視されるという現象が発生しました。 改めてこのあたりの数学的な意味を勉強し直す必要があるようです。 ご指示を頂きありがとうございました。
>>667 なるほど、プロジェクション変換で間違ってたんですね。
解決して良かった、良かった。
プロジェクション・マトリックスはワールド座標系を同次座標系に
変換するマトリックスです。
>プロジェクション・マトリックスはワールド座標系を同次座標系に >変換するマトリックスです。 なに言ってんのあんた。 「ワールド座標系」と「同次座標系」は言葉のカテゴリが全然違うでしょ。 プロジェクション行列は、ビュー座標からプロジェクション座標への変換。 DirectXでは、どっちの座標も同次座標で表される。
ワールド座標XYZからスクリーン座標XYを知るにはどう計算すればいいんですか?
>>676 ワールド座標をベクトル(x,y,z,1)とするとこれに(ビュー行列x射影行列)
を掛けて求まったベクトル(x',y',z',w')の各成分をw'で割ると
スクリーン座標が求まる。っつーかこれがわかってないと
3Dプログラミングができないと思うんだけどどうしてんの?
Managed DirectXのDirectSoundってうんこ? c:\Windows\media\start.wavで再生の練習しようとしたんだけど、 うまくいかなくてどーにもこうにもおかしいと思ったんです。 自分のコードが駄目かもと思ったがサンプルのbinにあるcsPlaySoundでも再生不可能。 ほかのファイルなら自分のもcsPlaySoundもOK。 調べていくとBufferTooSmallExceptionってのが発生してるらしい。 ということは極度に小さい長さのファイルは再生できないってこと??? そんなあほな…。C++じゃこんなことなかったのに。 というわけで折角C#に移行しようとしたのにいきなり出鼻を挫かれたという感じ。
679 :
デフォルトの名無しさん :04/09/29 10:16:40
ものすごくアホな質問ですいませんがDirectX9cをダウンロードできませんorz セットアップ中の承諾したあとにコンポーネントをダウンロードしますってところから 進みません 漏れには何が何だかわからないんです(´・ω・`) どうしたらいいのですか。・゚・(ノД`)・゚・。
>677 視点固定でマウスで操作しないタイプならなんとかなるポ その説明でも分からない漏れは死んできまつ
誰か677の言ってることを日本語に翻訳してください
>>680 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/transforms/transforms.asp これでも読めれ。
多分、同次座標系が解らんと意味がわからんと思うので解説。
3DCG用途では透視変換や平行移動を4行4列の行列で扱える
ようにするため同次座標系というのをつかう。同次座標系では通常の
3次元ベクトル(x,y,z)に等質wを加えた(x,y,z,w)で表現される。
通常の3次元ベクトル(これをユークリッド座標系という)と
同次座標系との相互変換は以下のとおり。
・3次元ユークリッド座標系でx,y,z)で表されるベクトルを同次座標系(x',y',z',w')に変換
w=1とし、x,y,zはそのままつかう。(x',y',z',w')=(x,y,z,1)となる。
・同次座標系(x,y,z,w)を3次元ユークリッド座標系(x',y',z')で表されるベクトルに変換
同次座標系の各成分をwで割る。(x',y',z')=(x/w,y/w,z/w)となる。
以上から例を挙げれば同次座標系(x,y,z,w)と(2x,2y,2z,2w)は3次元ユークリッド
座標系上では同一のベクトルとなる。
ビュー行列と射影行列はネットでも検索して勉強してくれ。
昔(DirectX5とか6とかの時代)はSDKの解説はもうちょっと詳しかったし
もっぱら話題の中心がこんなことばっかりだったからもっと解説している
サイトが多かった(宇治社中とかが親切だった)けど、今はあまりこんなの
だれも解説しないからな。初心者には厳しいかも。もし手に入るようだったら
昔のDirectXのSDKのリファレンスでも読んでくれ。
>>678 start.wavなのに始められない、ってなんか笑えるな。w
いや笑っちゃいけないのかもしれないけれど…
>>678 俺はYouTooFoolExceptionが発生して半分あきらめてる
>>686 俺に対してTooFoolってこと?
それにしても短い音は駄目っぽ…
音の後半を無音にすれば行けるがスッキリしないな
あとDuplicateに対応するのってManagedだとCloneなんだろか。
YouAreFoolTooException
689 :
デフォルトの名無しさん :04/10/01 23:00:04
ハンドルされていない例外 ThreadAbonedException が発生したため、このスレは
すれぽ
やっぱその表現で行くのなら YouIsBigFoolManException だろw
you is って聞いたことありません
>>691 は何語をしゃべっているのか教えてくださいおながいします。
"you is big fool man"でググれ 有名なネタだ
ググラずに聞くが北米院?
書き込み少ないけど、常駐率が変に高いスレだな。
>>682 683
アリガトン ・ゲームプログラミングのための3Dグラフィックス数学 は手にとってみたけど
公式ばっかりならんでてウザかったんで挫折してしまいますた
>>684 ミラクル トンクス。
やっぱり便利なメソがあったんでつね
自分で計算しろとかいうウザイやつばかりだったんで感激でつ
初心者すれで揚げ足とって楽しんでる奴もう(ry
699 :
デフォルトの名無しさん :04/10/04 12:37:44
音楽関係の質問ですが、 AudioVideoPlaybackを使ってMP3を複数同時に再生するにはどうしたらいいのですか? 最終的には2つ以上の音が合成されて出力させたいのです。
new Audio("1.mp3").Play(); new Audio("2.mp3").Play(); じゃだめなのん?いや全然試してないんだけどね。
それ以前にMP3じゃなくてOggを使おうぜと言ってみるてすつ
それ以前に new Vorbis.OggAudio("1.ogg").Play(); でいいような気が。
今Managed C++でOggのSDKからSystem.IO.Streamへのプロキシを書き終えた。 WAVEファイルに見せかければSecondaryBufferにStream食わせて簡単に再生できるからねぇ。 だけど実際はストリーミングしないでワンショットとして扱うらしく、長いファイルの演奏に向いてなさげ。 結局ストリーム再生しようとしたら今まで通りその辺を自力で書かないと駄目かもなあ。
704 :
デフォルトの名無しさん :04/10/07 19:38:19
900 -> 1901 -> 2902 -> ? いや規則は分かるが、なんでこんな変な付け方なんだ? だれか解説きぼん
日本語版まだぁ〜
しもたー さっき2004summer入れたのに・・orz
>>708 つーか、October入れるのにSummerをアンインストールする必要はない、
というかアンインストール「してはいけない」。
だから君は正しい手順を踏んでるよ。
>>704 今回のOctoberでは変化ないな。
変な上がり方はともかく、内容が変わったのに数字に変化ないのはどーかと思うが。
FreeBSD対応は、DirectXの前にウインドウフレームワークの実装の方が先だと思うが。
October = 9.02.3900・・・?
715 :
デフォルトの名無しさん :04/10/11 02:10:26
VS.NET2003でやってみたいんですが、やっぱりDirectX SDKが必要なんでしょうか? 200MB超えてるんですが orz
最近はわからんが、雑誌の付録についてたりしないか?
サンプルとかヘルプとか要らないなら再配布パッケージだけでも開発できるが、 やっぱりSDKがあった方がいい。
200MBぐらいテレホで4日あれば落とせるよ テレホ終了で自動的にモデムが切れるソフト使えば余裕
トンクス 今までマネージドコードDirectX別にインスコさせてカッタルかったんで助かりまつ
>>721 そういう事見たいやね。
うちの翻訳ソフトの出力:
このダウンロードは、開発者が含むことができる再分配可能なDirectX 9.0cエンド・ユーザーに
彼らの製品を与えます。
この更新は、DirectX 9.0 SDKアップデート(2004年10月)から管理されたコードのための
DirectXアップデートを含みます。
管理されたコードのためのDirectX == Managed DirectX
723 :
デフォルトの名無しさん :04/10/11 22:39:24
普通にWindowsUpdateで入るDirectX9.0cだとManaged DirectXで作られたアプリは動かないってこと?
マネージドだいれくとセックルを別にインスコすれば動く だけどそれがメンドイ ところで DirectX 9.0c Redistributable for Software Developers - Multilingual - 日本語 with updated DirectX for Managed Code (October 2004) って フレームワーク以外何も入ってない環境でも コレ一つでおK?
725 :
デフォルトの名無しさん :04/10/12 18:00:35
DirectXで全画面表示にして最小化されたりとかして 元に戻してもおかしくならない方法って結構複雑にならない? もっと簡単に出来ないのかな。
最大化できないようにウインドウサイズを固定するんじゃダメなのか?
>>726 いや、通常は全画面(画面の解像度とか変えたりするほう)で表示してるけど、
Alt+Tabキーとか押されたら最小化されちゃうから
そのときに描画処理やらないようにするための処理が結構面倒で
何とかならんもんなのかなぁと。
スマソ。 今書いてみたらあんまり面倒じゃなかった。
全画面モードにするとデバッグ中に開発環境が「小さくなる」のは痒い。
聞いて解決したんなら、自己解決でも 何をしたか書こうな。
>>730 面倒だと思ったことをやってみたけど
実際は面倒じゃなかったってだけのことだったんで
書かなくてもいいかなと思ったんだけど書いとくか。
bool deviceLost = false;をどっかに置いといて
レンダリングメソッドにて
public void Render()
{
if ((deviceLost) || (Form.ActiveForm != this))
{
System.Threading.Thread.Sleep(100);
}
続く
if (deviceLost) { try { device.TestCooperativeLevel(); } catch (DeviceLostException) { return; } catch (DeviceNotResetException) { device.Reset(device.PresentationParameters); OnDeviceResizing(device, new CancelEventArgs()); } deviceLost = false; } device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, options.Background, 1.0f, 0); //ここで描画処理 try { device.Present(); } catch (DeviceLostException) { deviceLost = true; } }
Direct3DのSpriteってDirectDrawでDrawするのとは根本的に違うのでしょうか? それともDirectDrawをDirect3Dから使えるようにしたものでつか?
Direct3DのSpriteはポリゴンにテクスチャを貼り付けたものをバックバッファへ書く。 DirectDrawのDrawはオフスクリーンサーフェスからバックバッファへ転送する。 まあDirect3Dのほうはポリゴンだから変形が楽だとか 演算やシェーダを使ってエフェクトをかけたりすることもできるというあたりかなり高機能
Sprite.Drawのcenterパラメータってなんか意味あるの? 回転するパラメータもないのに。
>Sprite.Drawのcenterパラメータってなんか意味あるの? 何を言ってるんですか意味ありまくりですよあなた >回転するパラメータもないのに。 Draw2DやRotationZで回転するときの中心補正点になるんだよ 使わないなら Vector3(0,0,0)でも指定しとき
ところでスプライトって RotationXやRotationYは使える? 漏れのダメポPCだとRotationZしかつかえない ほかは表示がヘンチクリンだ
ちょっと教えて下さい。 Vector3とMatrixの積を返すメソッド。 ヘルプで探したのですが見つからなかったので…。
メソッドでやってもいいんだが 掛けるだけじゃ出来なかった? Vector3 v = 〜〜〜〜; Matrix matrix = 〜〜〜〜〜〜; v = v*matrix;
742 :
たけし :04/10/19 01:24:52
DirectX 9.0 SDK Update (October 2004)になって、Spriteの扱い方がかわって、スプライトの2D描画がうまくいきません。 まずsprite.Begin(SpriteFlags.None);とsprite.End();が必要になったのはわかりました。 ですが、Draw関数を以下のように、体力の黄色と赤のゲージを描画するコードだと、1本で体力を表したいのに、上下に2つ画像が描画されます。 sprite.Draw( barTEX, new Rectangle(0,0,(hero.energy>0)?hero.energy:0,16), new Vector3(0,0,0), new Vector3(10,10,0), Color.White); sprite.Draw( barTEX, new Rectangle((hero.energy>0)?hero.energy:0,16,300,32), new Vector3(0,0,0), new Vector3(10+hero.energy,10,0), Color.White); Draw2Dは、 public void Draw2D(Texture, Point, float, Point, Color); だけうまく描画されましたが、他は描画さえされません。 以前のバージョンのコードを、ちょっと変更してプログラミングしただけなので、それがまずいのかもしれませんが、どうやればうまくスプライトのDrawとDraw2Dを描画できるでしょうか?
Microsoft.Samples.DirectX.UtilityToolkitってなんどすか?
>Spriteの扱い方がかわって、スプライトの2D描画がうまくいきません。 以前のバージョンではちゃんと表示されてたのか?
747 :
たけし :04/10/22 04:32:52
SDK2003のSprite.DrawではRectangleが(左,上,右,下)だったのが、SDK2004では(左,上,幅,高さ)に変わったようです。 これでうまくいきました。
よし!がんばれ たけし!!
749 :
デフォルトの名無しさん :04/10/24 21:08:30
次はDecember2004である、に一票。
しかもまたスプライトの仕様が変わるに一票
と思ったらフェイントでOctober-II 2004 緊急リリース!、に一票。
かったるいから しばらくの間 2004夏で我慢することにした いちいち仕様カエルナヨ・・MSさんよぉ
753 :
デフォルトの名無しさん :04/10/25 19:42:25
>>752 別にそれで構わんが、2004夏でManagedなら
TextureLoader.FromFileには気をつけろよ。
このせいで2004十月が出たようなもんだから。
>>753 Managedで2004夏使ってなおかつTextureLoader.FromFileを使ってるんだが
何がどうまずいの?
755 :
デフォルトの名無しさん :04/10/26 02:38:08
756 :
デフォルトの名無しさん :04/10/31 18:03:28
C#でDirectXの入門サイトでお勧めのところを教えてください。もしくは書籍。 やりたいのは2Dの処理です。パズルゲームとかトランプゲームみたいなのを作りたいと思ってます。 (わざわざDirectXでやるな、といわれそうですが・・・) いろいろ探してみたんですが、C++で解説してたり、3Dを扱ってたりでお手上げです。 いちおうあげておきます
そうやって他人が何とかしてくれるだろうと甘い考えを持った末路は、 グビチョン
ヘルプとサンプルでどうにかなるんでない? やりたいことが2Dでも、3Dは勉強しなきゃならんと思う。 DXSDK\Samples\Managed\Direct3D\Tutorialsにあるサンプルを1から6までやるべし。
>>758 うむむ、なかなか読み応えありますね
DirectXで2Dをやろうとすると、DirectDrawよりもDirect3D.Spriteを使ったほうが良い場合が多いそうですね(理由はわかりませんが)
とりあえず3Dに挑戦してみます。どうもでした
仕様変更で面倒ばかり起こすSprite系には何のメリットもない。 普通に頂点を作ってテクスチャを張るべし。
DirectDrawとDirect3Dでは難しさが・・・
2Dの場合、Direct3DはDirectDrawより少し遅い 2004Summerでまたスプライト関数の引数が変更したらしいな
GDI+とどっちが早いですか?
GUI+使うなら DirectDrawをオススメします 3DSpriteは仕様変更がウンザリなのと ちょっと古いPCやドライバの更新もできないような ヘタレ君の環境だとマトモに表示されないケースが多いのがマズー
>>765 GUI+なる謎の物体を突然持ち出す君の方がマズー
君ってチンカス以下だね
>766 つまんね C#にもC++並のサンプルつけてくれMS VBに至ってはサンプルナッシングかよ かわいそうに
ぶっちゃけVBいらね
ぶっちゃけC#いらね
わざわざ無理にC#でやろうとしなくていいよ。 C++とかのほうが情報多いんだし。
でも、未開拓の言語って触るの面白いんだよ。 ……これが仕事でなければ。
枯れた言語は掲示板のレスもツマンネ奴ばっかりだしな
つまりC#も枯れた言語というわけか。
C#のことは気にせず、 黒い箱にスパゲティ入れて遊んでな。
C#でMDX使い始めたらC++でDirectXは使いたくなくなった
777 :
デフォルトの名無しさん :04/11/03 23:29:36
>>776 M$の罠にかかった香具師がここにも一人。もうだめぽ。
>776 そんなに楽?すぴーどなどもよろ。
楽そうとかいう理由で使うやつは初心者。 C++のほうがパフォーマンスいいんだから、 そっちで無難にやっておけよと。
780 :
◆Rk6dvtD5gI :04/11/04 01:23:47
自分ではパフォーマンスの測定もろくにせず
一般的な文言を鵜呑みにして他人をも洗脳しようとする
>>779 の方がよっぽどクズ。
いろんな系統のプログラムで測定してみたが、
俺の環境ではManagedによるパフォーマンス低下は大体0〜15%。
当たり前のことだが、GPUよりCPUを酷使するプログラムでは
パフォーマンスはネイティブに比べ大きく低下する。
逆にパフォーマンスがほぼGPUでの処理のみに依存しているようなプログラムでは、
体感的にはもちろん、数値的な差もほとんど確認できない。
ただし、MDXが提供するクラスの中には、単なる状態取得プロパティ・メソッドに見せかけて、
実は呼ばれる度にオブジェクトを新規に確保→コピーを繰り返すという、なんとも迷惑なのがかなり多くある。
また最近のバージョンでは減ってきたとはいえ、
>>755 みたいなバグが未だ潜んでいる可能性は大いにある。
Managedでパフォーマンスを重視するなら、ネイティブでの開発経験はもちろん、
Managedメソッドとそれに対応するネイティブメソッドとの関係を詳細に把握しておくことが必要。
逆にManagedで開発するメリットとしては、やはり圧倒的な開発効率がある。
.NET Frameworkが提供する豊富なライブラリを利用できる上、
対象の説明まで表示してくれるインテリセンスなどIDEのサポートも非常に便利。
上では欠点ばかり書いてしまったが、
MDXのクラスはManagedの流儀に併せてきれいに再構成されているし、
ほとんどのクラスがMarshalByRefObjectから派生しておりAOP的なプログラミングも可能。
何にでも言える事だが、そのデメリットを充分に理解しているのなら、
そのメリットを生かすためにそれを使うことには躊躇しなくてもよい。
俺はもちろんネイティブDirectXも使うし、Managed DirectXもありがたく使わせてもらっている。
コピペ乙
>>772 >でも、未開拓の言語って触るの面白いんだよ。
ここは同意出来るが、C#が未開拓かと言えばそうでもない。
いつものように既存のものを名前変えただけだろ。
変なのが紛れ込んできたな。 どこかにここのリンク貼られたのか?
>783 へんなのってこれか?>780 至極まっとうな意見だが。
コピペじゃないと思われ
すべてのぎろんが>780見たいな物だったらいいスレができると思われ
起動が遅くて糞糞言われてるんだからネイティブもポジティブもないだろう。
>ネイティブもポジティブも つりなのかどうなのか微妙なところだ
やっぱり780の意見は素晴らしいと思われ
>>788 微妙だな。
不覚にも微妙にワロテシモタ
チップ依存が吸収できる3Dエンジンなら、パフォーマンスなんかドブに捨ててもいいでつ。 趣味でプログラムしているうちが華だよもう (´・ω・`)
趣味でプログラムしてる漏れは勝ち組 といった、クソ厨のような発言をオマイにささげてみるテスト(debugビルド)
全然面白くない
794 :
デフォルトの名無しさん :04/11/07 22:23:26
俺的には、C#でDirectXは面白い。
面白いんだが .netフレームワーク + DirectX + ManagedDirectX を インストールさせなきゃならんのが イイ手はないですか兄さん
LongHormをインストールさせるがよろ氏。
>LongHormをインストールさせるがよろ氏。 もうβ出たっけ? >全然面白くない 面白くする努力するなり 他へ逝くなりご自由に
真投げは駄目駄目
じゃ、じゃあ
>>800 氏によるすばらしい意見きぼん
今度の
衆議院選挙は
なぁ、C#+DirectXで作ったアプリを配布する時って、 .NET再頒布パッケージ入れてMDXランタイム入れてもらえば良いんだよな?
それとDirectXのインスコ 1パッケージで 全部インスコさせられたらいいのだがな
MSのやる気が無いから仕方が無い。
しばらくの間は報われそうにないな、俺ら(´・ω・`)
>>780 氏がついてるかぎり、大丈夫だ。がんばれ!!
809 :
デフォルトの名無しさん :04/11/13 17:38:01
次期Winで フレームワークが標準インスコされていて かつDirectXにマネージドコードのも入れば・・ ウマーなんだがねアンダーソン君
フレームワーク標準インスコはもうなってるだろ。
2003Serverで?
.NET FrameworkとDirectXだけですまないんじゃあ、他人への配布用アプリとしてはつらすぎる
XPでデフォルトが1.0なのが辛い。
あれ、XPに標準搭載されてたっけ?
XPは、 .NET Frameworkは1 DirectXは8
そろそろ2.0が・・・(´Д⊂
全部インストーラに含められるツールか何かあるようなことを聞いたよ 英語版のみらしいが ゲーム本体より付属品のほうが容量大きくて笑えそうなヤカン
818 :
デフォルトの名無しさん :04/11/14 22:46:03
四捨五入とか切り上げとかをする方法を教えてください
四捨五入 int b = (int)(a + 0.5); 切り上げ int c = 1 + (int)a;
>>819 それ、切り上げの方、a が整数だったときに変になるよ。
Math.Floor, Math.Round, Math.Ceiling を使うべし。
aが整数だったら四捨五入も何も
824 :
デフォルトの名無しさん :04/11/15 08:06:39
だれかDirectShowのサンプルのSampleGeabberをC#に移植した方はいらっしゃいませんか? はまってます。
はまってるんなら素直にC++でやればよかろう
Managed C++で作って.NETで使えるようにしたら?
そして、だったら全部C++で書いた方が楽だということに気が付くという。
828 :
デフォルトの名無しさん :04/11/15 17:12:28
824です。 C#のプロジェクトなんですけど、この部分だけC++で書くことにしました。 ていうか、何のためにC#使ってるかわかりません。 誰か教えてください。
829 :
デフォルトの名無しさん :04/11/15 17:13:23
MS も ゲイツ も好きだけど、Windows95 あたりから Windows が嫌いになりました。 だって、不具合多過ぎるんだもん。あとウィルス、セキュリティホール。 Windowsを買ってからセキュリティの問題で毎日Windowsアップデートでてんてこ舞い。 こないだはWindowsXP SP2にしたら起動しないアプリ勃発、まだ直らず。 業務に多大な損害が出た。 ハードウェアの構成を替える度、アクティベーションにどれだけの時間を割いたことか。 気軽にパーツも買えん。 こんなに使い買っての悪いクソOSがあの値段だよ。またセキュリティホールだウィルスだよ。もう疲れました。 なんてレスをしているとまたセキュリティホールだよ、ウィルスだよ。勘弁してください。 最初からクソだと思っていたけど、最近のMSは醜態が際立ってるね。 古川が張り切ってはじめたMSN BlogなんてMS社員しか使ってないしな。 MSN Musicにおいてはサービス開始に誰も気づいていないw もうだめじゃんw
何かあるたびにC++でやれば? だもんなぁ・・ いや、確かに正論ですよ 正論ですとも んじゃ何のためにこのスレがあるのか いや それ以前にC#にもC++並のサンプルつけろMS
まぁロングホーントレインの1千万パワーをまてという事ですよ
834 :
デフォルトの名無しさん :04/11/19 18:54:25
int a=1,b=1; a=b=0; この場合、どちらも0になりますか?
なる。 つーか、自分で調べなよそれくらい。
燃料のつもりだったのかな
837 :
デフォルトの名無しさん :04/11/20 11:30:23
a=b=0; a=b; b=0; これって同じことですか?
DirectXと何の関係があるんだよ。 ネタとしても全く面白くない。
文句タレは一人前だが いざDirectXに関する質問が出てくると 答えられない香具師ばかりなインターネッツで 面白いも糞もないかと思うのだ
一人で面白いと思って書き込んだあげく、否定されて憤慨。 アホの典型。
ひさしぶりにきてみたら ものすごいくそすれになってますね なんかかなしいです なかよくやろうよもまいら
ひもなな? そうだな、オレもひもななな気分だ。
844 :
デフォルトの名無しさん :04/11/22 11:08:41
くだらんミニゲームを作ってみた ここで晒したら遊んでくれるだろうか・・
いいんじゃないの? 色々アドバイスくれるかも
847 :
デフォルトの名無しさん :04/11/22 23:06:25
bool a=b=true; abともに真である条件式で if(a & b){} if(a && b){} お前らはどっち書く?
a && bに一票 a & bだと bitの andに見えるし
DirectXと関係ない話題をいちいち振る馬鹿と、それに答える大馬鹿。
その上マルチだ品
851 :
デフォルトの名無しさん :04/11/23 00:42:08
(´⌒⌒⌒`) __ 〃|___|ヽ ヽ\ ノノノ)ヘ)、!〉 (0_)! (┃┃〈リ Vレリ、" lフ/ 呼んだ? l´ヾF'Fl 〉、_,ノ,ノ
自作自演なんだからほっといてやれよ・・
じゃあDirectXの話題を投下。といっても俺はPlayしか知らないが。 一番目のパケットが届いてそれの処理をしている間に二番目にパケットが来た場合、 二番目のパケットの受け入れを一時的にロックしておくような機能ってある? あと確認だが、一回目のReceiveイベントと二回目のReceiveイベントは非同期に処理されるよな?
受け取りたくなければ受け取らなければいい。
>一番目のパケットが届いてそれの処理をしている間に二番目にパケットが来た場合、 >二番目のパケットの受け入れを一時的にロックしておくような機能ってある? 漏れはそれっぽい機能を発見できなかったのでArrayListで解決したよ パケットくるたびにキャッシュに叩き込んで逐次取り出すってのはだめなのか? ArrayListはいじくるたびにlockしないと悲惨なことになるが >一回目のReceiveイベントと二回目のReceiveイベントは非同期に処理されるよな? デバッグウインドウに処理するたびにメッセージ表示するようにして検証すれ たぶん非道鬼だったと思った >受け取りたくなければ受け取らなければいい。 受け取りたいけど受け取れないから保留にしたいという話を・・げふんげふん(咳
856 :
デフォルトの名無しさん :04/11/29 17:51:09
Effect.FromFileのStringって2バイト文字が入ってると失敗するんですかね? デスクトップにEmptyProjectのディレクトリ置いてたせいで実行出来なくて原因を 探すも今時そんな原因も無いだろと思ってたのでハマってしまってたんだが・・・。 あとデバッカのウォッチの動作がおかしいのはバグなんでしょか。 明らかに同一スコープ内のフィールドの中身が"スコープ外です"と表示できなかったり、 あるメソッド内で特定のメソッドを呼んでいるとウォッチで見るクラスや構造体の 定義されてるはずの中身が一部"error: cannot obtain value"と"<未定義の値>"になったり、 "<未定義の値>"をクリックして変更しようとすると文字が巨大化するし。
>>856 「スコープ外です」
「cannot obtain value」
は俺もしょっちゅうあるなあ。どうにかして欲しいよね・・・
なぁなぁ、ManagedDirectXの日本語ドキュメントをVSを使わずに見る方法があるはずなんだが、 どうやってやるんだっけ?
マルチ(・A・)イクナイ!!
iexplorer.exe
I/O書籍シリーズはVC++で書いてるし やっぱ、VBやらC#より メンドイだろうけど キッチリできるんだろうなぁ・・ と言いつつVBでやってみたり・・・('A`)
旧VBやVCはCOMネイティブ対応だからね ATLなんてまさにActiveX作るためにあるようなものだし C#やVB.NETだと互換性のためにCOMサポート残してあるだけだから ラッパクラスが必要になったり
C#でMDXが楽すぎて仕方がない
>>864 禿同。もうC++に戻れないかもしれん・・・。
MDXのドキュメントも、Oct 2004 の日本語ドキュメントでやっと少し マトモになったしね。
ドキュメントまともになったんだ? Octインスコするのまんどくさかったけど やる気がでてきますた
>>856 前に引っかかったことがある。俺も今更と思ったけど、
Effect.FromFileのStringに2バイト文字が入っていると
ロードできないっぽい。
エフェクトファイルをFileStreamで開いて、Effect.FromStreamを
使えば回避できる。
なるほどそんな解決方法が。 それにしてもサンプル(EmptyProject等)がそう書かれてるのでとりあえず修正して欲しいなぁ。
DirectShowがマネージ化されないと話にならないって言うか
MC++が使えないC#使いは話にならないって言うか
>>870 Showは他のコンポーネントと違って、COMクラス・インタフェイスの数が膨大だからねー。
素直にComImportAttributeなりで直接COMを叩くほうがいいんじゃない?
ってスタンスなんじゃないかな。
お手軽版?のAudioVideoPlaybackは機能が少ない分構成も頗るシンプルで、
これはこれで間違っちゃいないとは思うが、
やっぱり標準のマネージShowは見てみたいな。
MC++は意味あるんだろうか。
あるよ Cで作られてるSDKを.NETに移植するとか
DirectShowってMP3流せるのと動画再生するの以外に何かできることあるん? MP3流すためにしかたなく使用してる漏れ程度では いまいちありがたみがわからんですよ
mpegファイルやreal media ファイルなどの音声、動画ファイルを、 すべて再生できるようにする場合は 読み込むファイルの種類によって、それぞれ対応するしかないのですか? (realmediaの場合は、Real Player ActiveX Control Libraryを使って 再生したり、そのほかは、QuartzTypeLibを使用したりなど。) 一括して、すべてのファイルを操作できるような方法はないのでしょうか?
対応する汎用CODECを作れば可能。
879 :
デフォルトの名無しさん :04/12/03 22:20:09
offscreen = new Surface("C:\\dxdata\\Samples\\C#\\DirectDraw\\Windowed\\無題.bmp", description, draw); ここの対応してる画像の拡張子はBMPだけですか? jpgだとエラーが起きて落ちてしまいます。
>>876 TVチューナーやビデオキャプチャ
ビデオやオーディオのエフェクト/変換も自由自在
>TVチューナーやビデオキャプチャ >ビデオやオーディオのエフェクト/変換も自由自在 マジカヨー そらぁ便利だな まぁ便利でも対応してないんじゃアレなんだが Webカメラの画像とかも扱えるのだろうか
>>879 そのSurfaceがDrawのものなのか、3Dのものなのか、自分じゃ何も言わない。エラーの種類も書かない。
もうだめぽ。
DrawにJPEG関係の機能はない。
>>876 USBカメラの画像取り込んでエフェクトかけて遊んだりできます
>USBカメラの画像取り込んでエフェクトかけて遊んだりできます C#でもManagedDirectXで普通に殺れまつか?
之で引きこもりの部屋のにおいとかも再現かのうなのかな・・・
>>888 検索してませんでした。すいません。
これで僕の部屋のにおいが再現できました。
明日ネットカフェで試します。
893 :
749 :04/12/12 20:22:58
ドキュメントもっと充実キボンヌ
矢継ぎ早にSDKの更新されてますが これって入れる度に古いSDKアンインストールしてから入れるものなんでしょうか そのまま上書きしても大丈夫なものでしょうか?
897 :
デフォルトの名無しさん :04/12/13 11:56:14
>>896 使い方とかリリースノートくらい読めよ。
読むのすら面倒くさい奴は使うな、向いてない。
>>896 古い奴から順番にいれろ!
新しい奴だけ入れてもいいけど昔のサンプル入ってねぇぞ!!
サンプル以外は一緒だ。精神的に不安定な奴はウィンドウズの再インスコからしとけ。
899 :
749 :04/12/14 00:14:06
前回の予言が的中しご好評いただいたので、今回もやってみます。 次のバージョンは、DirectX SDK Update Christmas 2004 です。 つーか、たぶん当たります。
>>899 情報ありがとう。じゃあ次バージョンは来週末あたりだな。
902 :
デフォルトの名無しさん :04/12/19 20:18:42
よく知らないんですけど、このスレ的に 12月ってなんかいいことあるんですか?
903 :
デフォルトの名無しさん :04/12/20 16:56:45
javaでDirect3Dプログラミングって不可能? C++はあまり手つけたくない・・・。
釣りかと思うがマジレスすると、無理、つーか、 JAVAクローンなC#をなぜ使わないのかな。
DirectXはともかくJavaなら3Dなプログラムもそんな悪くないかと思われ ただ、ゲーム作るんならおとなしくマイケル開発言語使ったほうがいいと思うが
C#良さそうですね。 実は、ゲーム制作業界に入りたいとおもってるんですが、 CG制作で最も一般的なのはどの組み合わせかなと思って。 C++とDirect3Dかな?最近の動向はどうですか? 別にJAVAにこだわってるわけじゃないです。
あ、C#やる場合、やっぱり、summer2003か2004ってことに?
909 :
デフォルトの名無しさん :04/12/21 02:34:01
そんなことも自分で調べられない人間は、 俺が面接官なら絶対に落とすな。 今現在のゲーム業界にプログラマとして入りたいんなら、 C++を使いこなせることは大前提。 今のゲーム機に.NETなんて入ってると思ってるのか?
910 :
339 :04/12/21 02:41:07
ゲーム業界なんて、いつ吹き飛ぶか判らんぞ。入ってもいいことないぞ。
>>903 Java3DはDirectXで実装されてるんだがそういう話ではなく?
>>912 俺、去年の今頃JAVA3Dを調べたっきりなんだが、
JAVA3Dが使っているのは、DirectXじゃなくてOpenGLじゃなかったっけ。
DirectXだとWindows限定じゃん。
もし俺の勘違いだったらスマソ。
>>913 ウィンドウズはDirectXとOpenGLの両方が出てる
何で実装するかなんて決められていない
>>912 JAVA3Dが結局はDirectXかOpenGLを使ってることは知ってます。
でも、JAVAでゲームとかはあまり良くないというか標準でないと聞いたので。
しかも、3Dやるなら、わざわざJAVAでやる必要性もなく、直でDirectX、OpenGL等
使ったほうがいいかな、と。
色々調べたところ、C++との組み合わせが普通らしく、
でも、C++は難しいのであまり手を付けなくないといった状況です。
やっぱり、C++するしかないのだろうか
C#だとどうなのか?といった感じです。
JAVAでC++またはC#のようにDirectX等を直に扱えないかなということです。 JAVA3D経由じゃなくて。 そもそも、JAVAVM通り越して、DirectX扱うってむりぽい? ではなんで、C#の.NETはDirectX使えるんだ? すいません、何も分かってない状況です。。。
>>917 DirectXというのは何層にもわかれている。
ハードウェア、デバイスドライバ、API、ライブラリ、フレームワーク。
おまいさんが「直」と表現しているのはおそらくAPIのことだろう。
このAPIはCOMとManagedの二種類が用意されている。
つまり二通りの「直」がある。
COMのほうはVC++用のLIBがデフォルトで用意されている。
変換ツール等を使うことでBC++、DelphiなどからでもDirectXを直で扱うことができる。
Managedのほうはもっとシンプルで.NETに乗っていれば基本的にどんな言語からでも使うことができる。
これらAPIの上にライブラリ(D3DXなど)やフレームワーク(DXUT)が乗る。
さらにツールやプラグイン、ドキュメントなどを含めた総称がDirectX SDK。
Q. Javaで直接DirectXを扱えますか? A. 扱えません
>>918 説明ありがとうございます。
C#使うとすると、
C# + Managed + DirectX ということになるのかな
おとなくしく、C++にしとけって感じなんですが。。。
.NETが将来どうなるのかが、けっこう不安。。。
C++でDirectXを扱う知識がある上で、C#のDirectXを扱うのは、容易いと思った。 C++での知識があれば「あれはこうやるんだな」ってのがなんとなく想像できちゃうからね だけどいきなりManaged DirectXから入るのはどうか分からん
まだ先の話だが、C#(.NET)でかくとManaged空間しかいじれなくなることが保障される。 そのためManagedコードに関してはユーザーモードでなくカーネルモードで動かしても問題が生じなくなり、 現在のカーネルモードとユーザーモードの切り替えに生じるロスをなくすことができパフォーマンスが爆発的に増加する。 とあった。時期など不明だがそういうのもきたいされるかも。
とりあえずここにJ#おいときますね
完全にネイティブなコードになるみたいなイメージでいいのかそれは
>>922
>>924 えーと、エンタープライズ分野で重要なサーバ類のお仕事の多くが、↓みたいな感じだから、サーバアプリは
場合によってはすごく速くなるだろうけど、DirectXの場合昔からカーネルメモリ空間に直接してるから変わらないと思う。
リクエスト受信
-> TCP/IP処理
-> ユーザーメモリへコピー
-> アプリ処理
(そして処理中のFileやネットワークのI/O処理)
-> データをカーネルメモリへコピー
-> I/O 処理
-> データをユーザメモリへコピー
レスポンス返信
-> 処理結果をカーネルメモリへコピー
-> TCP/IP 処理
なるほど、そいうことね
Java,C# ≠ 初心者用の言語
これは初心者用 あれは玄人用 区別したがる奴ほど初心者 あほらしくて見てらんないが 哀れだからエサは与えてみる
とりあえず、VS2005でDirect3Dさわってみた。 仕組みよくわかっとらんが、とりあえず、Begin-EndSceneの間で力技で描画すればよいらしい。 3万ポリゴン表示してもそこそこ動く。 これなら作りたいやつに使っても大丈夫そう。 今知りたいこと。 ・ウィンドウの一部に対する描画。 ・Zソート?とかの使い方 ・マウスと野などの操作との連動。 ・マウスでクリックしたときのオブジェクト探す方法。 ・透明。 ・テキスト、線。 ・・・まぁ入門書を素直に買って濃いって請った・・・
・ウィンドウの一部に対する描画。 present ・Zソート?とかの使い方 zbuffer ・マウスと野などの操作との連動。 DirectInput ・マウスでクリックしたときのオブジェクト探す方法。 transform2d transform3d ・透明。 alpha ・テキスト、線。 drawtext drawline
Java,C# ≠ 初心者用の言語
>>930 =932
頼むからダメ日記はここじゃなく広告のウラに書いてくれ。
今の時代、本がないと何も出来ない奴は何やっても無駄。あきらめれ。
自治厨多杉
2chは日記帳じゃないYO!
個人的にはそういう批判もチラシの裏にでも書いてて欲しいがな。 まあ、例によってオレモナー、なんだけど。
資料がないと何もできないと思うんだが… 本っていうのはたまたま媒体が紙なだけで。
>>934 じゃぁお前はプログラム関係の本を雑誌を含め一切買ったことがなく、すべてSDKとWEB(サイト、掲示板、メーリングリストなど)だけで済ましてるんだな?
してそれにどれほどの意味が?
>>939 少し同意。漏れはWin者なのでSDKとMSDNでかなり十分足りてるけど、Unixの人は
正直本読むの悪くないと思う。manpage を頭から順に流し読みするとか、し難いし・・・
「本」って「資料」だろ? 「ヘルプ」とか「Webサイト」とかも「資料」だろ? なぜ「本」だけを目の敵にするのかがわからん。
これは初心者用 あれは玄人用 区別したがる奴ほど初心者 本がどうとか MSNみろとか ググれとか 言ってる奴ほど自分で調べない 広告とか 日記とか うざいと言う奴のほうが遥かに邪魔
結局誰かがまとめたものよりも自分で散在した資料を纏め上げろってことなんでしょ? その分の時間をほかに使えばいいだけなのに。 誰かがしたことをまた自分でしてオナニーしてるだけな部分もあるのでないの?
>>939 うーん、正直に言うと、プログラム関係の雑誌は買ったことあるな。
93年ごろまでのベーマガ。今でも全て持ってる。
別に「意味」があったわけじゃなく、ど田舎育ちで小遣いも月千円だった俺にとって唯一の情報源だったから。
ここ十年はプログラム関係の本は恐らく買ってない(と思われ)。
今は、研究・開発のためのリソースはヘルプとWebのみだな。
情報の取捨選択さえてきぱきと出来れば、今現在はこれで必要充分。
>>941 うーん、本が嫌いだからかなー。
小説とかも読書感想文の宿題以外では読んだことないのよ。
>>942 俺は別に初心者とか玄人とか区別はしないが、MSNは見ないぞ。
ちなみに、広告のウラ、プリンタ用紙のウラは大好きだな。徹底活用してる。
普通にインストールできないんですが、何故ですか?
ヘルプやらドキュメントを読んでも 3Dの用語がさっぱり分からない_| ̄|○
>>921 C++でDirectX使ったこと無い人間が
C#+MDXをいじってみてるが、結構辛いですよorz
MDXのドキュメントがあんまりないから
C+++DirectXのドキュメントを探して、その中の
関数名をSDKドキュメントから探す、の繰り返しです
でも、D3DXHOGEHOGE〜みたいに定数を
書き連ねまくらなくてすむのはいいと思った>MDX
ね、ワールド変換ってどんなとき使うの? 仕組みはわかるんだが、自分だとビューをぐりぐり動かすのしか使わないもんで・・・
3DCGソフトのモデリングビューたいのだと使うのか。
なるほど、ベーマガを読めばいいのか。
C#+DirectX関連の書籍でいいのある? DirectX9 3Dゲームプログラミング〈vol.1〉C#によるアルゴリズムの基礎 これ検討中なんだけど
>>954 ん?適当に作ったのだから終了処理とかなにも見てないが、そのこと?
作ったプログラムを自慢げに見てほしがる厨房がいちばんうざい。 誰が好き好んでお前のアホプログラムなんか見たがると思ってるんだ? 950はさっさと次スレでも立ててこいってこった。
んー自分は人の書いたサンプルとか見るの好きだけど。 人の主義主張に踏み込むやつのほうがう財
自慢げに見てほしがる厨房がうざいなら そいつがウンともスンとも言えないくらい 完璧かつ実用的あるいは面白いものを モマイが作ってUPすればよいだけのこと あまり否定的なこと書くとスレが閑散とするだろ〜が せめて次スレぐらい立てろや無能
おまいの作ったサンプルみしたら立ててくる
正直ほかのひとつくったすごいやつ見たいぞ
このスレは今年中には1000いかない、に一票。
>>955 ほかによさげなのがないので、買ったんだが、
値段の割にはたいしたことない。いまいち。
よっぽどのDirectX初心者でなければ買う価値なし。
ほかにお勧めもないけどね。
どうせかうなら、上のほうで出てた英語の本のほうがいいんではなかろうか。
結局のところ、 C++を取得 << C#でDirectXを扱うための情報の収集 のような気がしてきたので、おとなしく、 C++でいきます。
> C++を取得 << C#でDirectXを扱うための情報の収集 何の大小を比較してるのか理解不能。 ってかお前アホだろ。
ビットシフトだろ
971 :
デフォルトの名無しさん :04/12/27 22:25:32
不等号は労力の大きさです。。。
動かしてるとメモリを食いまくり仮想メモリが足りなくなるんだが、リソースの開放忘れ? 我部これしてくれないのか?
GC.GetTotalMemoryで確認してみてはいかがか。 俺は毎フレームこの値を表示させてるけど、 ちゃんと解放できていれば定期的にガクンと減ってくれる。
ガベコレを強制行使するのもええかもしれん タスクマネージャで見るとメモリ使用量減るまで時間かかるのがムカツクが
System.GC.Collect呼びだししてみたんですが、さくっと抜けてしまいメモリはそのまま依然増えてしまいます・・・。・゚・(ノД`)・゚・。s GC.TotalMemoryちょっとやってみます。 現在3つ問題抱えています・・・ ・メモリーリーク ・大量のメッシュオブジェクトある際のオブジェクトピッキングに時間がかかること(全部なめてます)。 ・メッシュに別に作成したテクスチャの作成。 英語でぐぐってもどっかの外人が同じようにメッシュにテクスチャはれねぇよ。・゚・(ノД`)・゚・。といってる掲示板があった・・orz
C#でやってるわけだからメモリーリークは意識しなくていいはずだが。
リソースリークのことかい?
まあ
>>973 の様子だとリソースリークっぽいけど。
動かしてるとメモリーが増大し続けます。 C#暦あさいのですが(C++つかい)いわれてるようにメモリーリークはしないと思っていたので困ってます。ガベコレも効果ありません。 DirectXも全体つかめていないのでどこか間違ってそうなんですが・・・
現象が再現する最小限のソースを公開するのが一番早いかもしれんが・・・。 ソース見られるのが嫌だったら別に構わないよ。
よかったらどこかにあげます。いろいろいじってる実験ソースなのでぐちゃぐちゃですが・・・
>>979 も言ってるが、問題が再現するミニマムコードにしてからにしてくれよ。
間違ってもそのまま見せるのは無礼極まりないよ。
そうですね。自分でも切り出ししないといけないのでそれでも原因不明だったらあげることにします。 ガベコレ、などもいじってみます。
なんかスレの住人増えてるな。
C#+DirectX使うの楽だけど、こういうことした言ってる時に微妙にじょうほうしらべるのたいへんだぁね・・・
C++&DirectXのスキルあってのC#&Directxだろう。おそらく。
文字列メッシュで表示できるけど遅すぎ・・・
それはC++でもかなり重い
高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 空間のなかをウぉークスルーするようなもの作りたいんですけど文字表示が遅すぎ・・・
キャッシュ、α
>>988 Webにもごろごろ資料はころがってるし、
探せば2chにもいい回答が沢山ある。
何度も言うが、ここはダメ日記帳ではない。
質問なら聞きたい部分の要点をはっきりと書け。
正直うざすぎ。
高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。 高速にきれいな文字を表示するにはどうしたらいいんでしょうね。
>>990 どうせまともな回答できる人はごくまれと思われ
欲しい回答を得られる精度をもって質問せよ。
>>992 ある2行をジグザグに読むと「はにはに」
行じゃないな・・・列か_| ̄|○
住人増えるのはいいんだけど、 変なのしか増えていない気がWw W w。。 W
まったりとせん
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。