トップページ⇒tech
1001コメント303KB

C#でDirectX9 初心者の館

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Windows Longhorn でGDIに取って代わって標準になりそうなDirectX9ですが
GDIと違ってドキュメントも難解で何をすれば描画できるのかさっぱりさっぱりなライブラリです。
その上知っている人はレベルが高すぎて聞いても宇宙語でしす(泣
そんなDirectX9を将来に備えて勉強してみようというスレです。
Microsoftの掲示板
http://www.gdncom.jp/general/bbs/ShowForum.aspx?ForumID=29
SDKをダウンロードできるところ
http://www.microsoft.com/japan/msdn/directx/downloads.asp#CDasp#CD
0046デフォルトの名無しさんNGNG
>C#でDirectXってほんとにいばらの道だね。
なんで?
004745NGNG
>>46

資料が少ないのと、comとusing Microsoft.DirectXとどっちを使ったら
いいのか分からないから

0048デフォルトの名無しさんNGNG
その程度の悩みなのか。
C++とかでやったらもっと死ぬぞ。
0049デフォルトの名無しさんNGNG
>>48
C++は資料やHPがたくさんあるからマシ。
0050デフォルトの名無しさんNGNG
そうだね、C#でプログラム組んでわからなかったときは、C++のHP検索してるよ。
0051デフォルトの名無しさんNGNG
http://popup.tok2.com/home/ryza/
見つけました!
0052デフォルトの名無しさんNGNG
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が投げられてしまいます。
サンプルは正常に動作したのですが、問題点や上手い解決方法をご存知の方が
いらっしゃいましたらどうかよろしくお願い致します。
0053デフォルトの名無しさんNGNG
>>52
joystick.Acquire();
joystick.Poll();
してから
joystick.CurrentJoystickState
で簡単にジョイスティックの情報が取れますよ
僕は
joystick = new Device(instance.InstanceGuid);
    break;
のコードにjoystick.Acquire();を追加しました

C++より列挙がらくでびっくりしました。
0054デフォルトの名無しさんNGNG
全くの手探りでとんでもなく初心者の質問なんですが。

C++で作った時はPeekMessageとかでメッセージループを書いたもんですが
>51 をみるかぎりやっていないようです。
C#はまさかタイマーでやるとか? 違うよなぁ。

どなたかサンプルコードを提示していただけませんか。
form の main にループを書くのかしら。。。


0055デフォルトの名無しさんNGNG
>>54
ちゃうちゃう、この場合すでにFormクラスにループが仕込んであってイベントがあったら
それに対応したメソッドを呼ぶんよ。

例えば、

http://popup.tok2.com/home/ryza/csharp/prog007.html

ここのソースの場合、OnPaintってのがそのメソッド。

#PeekMessageが出るちゅう事は、前はMFC使わずWin32APIでゴリゴリ書いてたんかな?(w
0056デフォルトの名無しさんNGNG
単純にスレッドを生成してループさせればいいだけの話では?
0057デフォルトの名無しさんNGNG
private Timer timer;
private void InitializeTimer() {
// タイマーを作成
timer = new Timer();
// インターバルを30[ms]に設定
timer.Interval = 30;
// イベントハンドラを指定
timer.Tick += new EventHandler( this.Render );
// タイマーを起動
timer.Start();
}
スレッドづくりは難しいのでイベントハンドらをつかってみるといいと思います
後は自作のRender()の中に描画処理を書けばいいです
0058デフォルトの名無しさんNGNG
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){}内で呼べばいいです。
005954NGNG
返事が遅れました。ありがとうございます。

>55
はい、WIN32APIで書いてました。
Formクラスに既にメッセージループがある、ということですね?
メッセージハンドラなどはMFCを触ったのでそれは解りますが、
一定の間隔でプログラムを実行したい場合、どうすれば良いかが分かりません。

タイマーだと簡単ですが、それ以外の方法ではないと
DirectXのゲームとしては遅くありませんか?

>58
ありがとうございます。
ところで while(true){} はどこに書くのが理想なのですか?
この状態でもメッセージハンドリングは生きているのですか?
終了処理は無くても良いのですか?

いろいろとすみません。
0060デフォルトの名無しさんNGNG
>>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();
}
0061デフォルトの名無しさんNGNG
>>59
こんな感じかな、コメント入り
http://www.realdigital.co.jp/densi2/program/d3d/dx3d-002.htm
しくみはここを見てください。
ここのサイトのコードをC#のコードにかきかえただけだけどね

ちなみにD3DApp.cs(GraphicsSampleクラスが記述されている)
のソースをサンプルから探すといいよ英語だけど解読する価値はあるよ

んじゃ
0062デフォルトの名無しさんNGNG
 現在、C#とDirectXを勉強しています。
DirectXのC++のDirectShowのサンプルのCaptureTexのようなもの(USB or IEEEカメラでリアルタイムにDirect3D画面に出す)をC#で作りたいと考えています。
 C#ではDirectShowがサポートされていないと聞きましたがDirectShowをラッパー?したものを使えば大丈夫とも聞きました。
 C#でこのようなプログラムを作成するにはどうすればいいでしょうか?サンプルや参考になるページなどがありましたらお教えください。よろしくお願いします。
0063デフォルトの名無しさんNGNG
MC++でラッパーを作るだけ。
0064デフォルトの名無しさんNGNG
>63
具体的にどうすればいいでしょうか?
0065デフォルトの名無しさんNGNG
DirectShowが呼び出せる言語でDLLを作って、C#からDllImportする。
0066デフォルトの名無しさんNGNG
>62-65
誰か作って・・。簡単なの?
0067デフォルトの名無しさんNGNG
他人に頼るくらいなら、きっぱり諦めたほうがいいよ。

0068デフォルトの名無しさんNGNG
まずC++側で目的のものを作る。
次にMC++で.NET対応のコンポーネント化する。
.NET対応作業はさして難しくはない。
0069デフォルトの名無しさんNGNG
C++はさっぱり分からないんですが・・・。
0070デフォルトの名無しさんNGNG
文法はC#に近いんだから、それほど問題はない。
こんなところで分からないなどと書き込んでいる暇があったら、
その時間に学習すればいいだけの話。
0071デフォルトの名無しさんNGNG
ところで、DirectDrawのHardware overlay surface(たぶん)を使って
ビットイメージを連続的にTV出力したいだけの漏れなんだが、いったい
どっから手を付けていけばいいのか?

どっかにサンプルない?
0072デフォルトの名無しさんNGNG
C#初心者とDirectX初心者です。

 Managed C#で作成したプロジェクトがありまして
そこにImageListを追加してImagesに画像を追加しました。
実行すると

【'GraphicsTemplate.ourRenderTarget'は'フィールド'を意味しますが、'クラス'でなければなりません。】

とエラーが出てきました。単なるWindowsアプリケーションではこのようなエラーはでなかったのですが、どうしてでしょうか?簡単な説明と解決法をお願いします。
0073デフォルトの名無しさんNGNG
エラーの意味はourRenderTargetはネームスペースだけどクラスではない、と言う意味。
Listを使っているみたいだから、foreach構文を使って追加した画像にアクセスしてみたらどう。
それとArrayクラスやリストについて勉強するといいかも。

以上へたな回答でした
0074デフォルトの名無しさんNGNG
DirectX初心者です。

VertexBufferを動的に扱う方法をお教えください。
VertexBufferの要素の数と値を動的に変化させたいと思っています。

具体的にはマウスをクリックする度にVertexBufferに追加していきたいと思っています。
マウスでクリックした座標をどんどん結んでいく感じです。

試しに作ってみたのですが、クリックを繰り返すと

「Exception An exception has occurred. This sample must exit.
System.OutOfMemoryException:プログラムの実行を続行するための十分なメモリがありませんでした。」
と出てきてしまいます。何か方法などありますか?
0075デフォルトの名無しさんNGNG
最初に作ったときのサイズを超えていたらエラーが出るのは当然。
DirectXに手を出す前に、言語の基礎をやり直すべき。
0076デフォルトの名無しさんNGNG
ぃあ、配列のオーバフローとかそういう意味ではないんですよ。
Render()の中で新規でVertexBufferを作成してその中にListに格納した値を入れています。
Render()中でVertexBufferを作るというのは、問題なのでしょうか?

0077デフォルトの名無しさんNGNG
それは解放されずに作りすぎになっているのでは?
0078デフォルトの名無しさんNGNG
たぶん。仰る通りそうだと思います。
いまいち、Render()、Frame()、InitializeDeviceObjects()などの関係が
よく分かりません。この場合どうするのが一般的なんでしょうか?
0079デフォルトの名無しさんNGNG
日経ソフトウェアの今月号にC#とDirectXでシューティングゲームを作るというのがあったので
DirectX初心者の私でもできるような記事かなと思って買ったのですが
うまく実行できません。VC#使いだけど、記事ではBorland使っているし。

しかたがないから 1から自分で勉強したいので、
C#ユーザー向けの DirectXの初歩から学べる ページを紹介してください
0080デフォルトの名無しさんNGNG
C#+DirectXでトゥーンレンダリングの方法を紹介しているページとかありますか?
0081デフォルトの名無しさんNGNG
今日からDirectXに挑戦しようと思って、
DirectX SDKなどをダウンロードしてインストールしたはずなんですが、
サンプルプログラムをダウンロードして実行しようとすると
「初期化できない」というエラーになります。
どうしてなんでしょうか?
解決法を教えてください。このままじゃDirectXのDの字も出ないうちに
諦めなければなりません
0082デフォルトの名無しさんNGNG
>>81
Text3D、LightingVSあたりを実行してみ?
しょぼいグラフィックボードじゃSDKのかなりのサンプルは起動しない
0083デフォルトの名無しさんNGNG
少なくとも質問する上で、ビデオカードの種類や実行したサンプルの名前が必要だということを
考えることが出来ないのであれば、
>今日からDirectXに挑戦しようと思って、
これはまだ早すぎる。
>このままじゃDirectXのDの字も出ないうちに諦めなければなりません
妥当な判断。
0084デフォルトの名無しさんNGNG
デバイスマネージャで確認したところ
> 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だけど最近の機種だから動いてほしい、マジで。
0085デフォルトの名無しさんNGNG
> S3 Graphics ProSavage
これでまともに3Dをやるのは無理。
0086デフォルトの名無しさんNGNG
> S3 Graphics ProSavage
これでまともに3Dをやるのは無理。
0087デフォルトの名無しさんNGNG
> S3 Graphics ProSavage
これでまともに3Dをやるのは無理。
0088デフォルトの名無しさんNGNG
>>84
最新だから動くかっていうと、それは間違い。
とりあえず、DirectXの前に適切なPC購入の勉強からしてみてはどう?
0089デフォルトの名無しさんNGNG
>>84
昔、K6のDynabookでSavage(Proじゃない)が乗っていて、それで組んでいたことがある。
DirectX8のD3DXで、(確か)100ポリぐらいのQVGAで60fps動いた。
Spriteクラスを使って数個のオブジェクトが動く程度のものなら問題ないだろう。
・・・たぶん。(;´Д`)

なにせ何年も前の話だから記憶も曖昧なのは勘弁。
0090デフォルトの名無しさんNGNG
>>84
そういうのはメーカーや型番さらさないと有益な情報が集まらないと思われ
ドライバの情報収集は自作板が強いよ
PCの能力自体を疑うなら3DMarkなどベンチをとってみれば?

とりあえずドライバはここな
http://www.savagenews.com/?action=articles&article=list&dir=7
0091デフォルトの名無しさんNGNG
>>85-90
サンクスコ。 とりあえず自作板とか初心者板、くだ質巡って 情報収集してきます。
早く喪前らと同じくらいの実力をつけたいですよ・・・。第一歩すら踏めてない。

もともとゲーム(=DirectX)使うつもり無くてPC買ったからなぁ。
少しグラフィック関係には弱いのかもしれない。
デスクトップにテレビ機能なんていらんから、3Dを強化したの選べばよかった。

デスクトップ(2002年購入)は英語分からんからメーカーの日立に聞いたら
「無い」って断言してたので諦め。
ノート(2004年購入)はメーカーのNECのウェブサイトにドライバアップデートの時に見たら
ATI社の RADEON だった。期待できるかもしれないな。
0092デフォルトの名無しさんNGNG
>>74
// マルチレンダリングターゲット
device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, verts);
をつかいましょう僕も動的に扱うのにC#の資料がなくて苦労しました。。。
vertsにフレキシブルな頂点データの参照を書きます(わかるよね?)
あとはサンプル、ヘルプやC++の資料を柔軟に解釈すればできるはずです。

では健闘を祈ります
0093デフォルトの名無しさんNGNG
>>80
C#からDirectXを始める場合資料がないので結局C++からC#に直して考えるかMSのページで我慢するかです
3Dグラフィクスを始めたい場合おすすめ書籍は

「DirectXゲームグラフィックスプログラミング(N2Factrory)」

をみるとけたたましくわかりやすいです。すべてのDirectXの初期化コードの意味がわかるようになります。
いかんせんC++なのですがC#に似ているコマンドを探せば何とか対処できるはずです。

C++より断然かんたんなC#ですからがんばってください。
0094デフォルトの名無しさんNGNG
>>91
そのパソコンでも勉強はできます。
3Dゲームプログラムは2Dゲームの応用なので
まずDirectDrawをつかった2Dゲームを作る練習からすると良いと思います。
またDirectDrawは初期化も簡単だし、スプライトさえ表示できれば簡単にゲームが作れます。

ぜんぜん悲観することはないですよ。
0095デフォルトの名無しさんNGNG
>>93
>をみるとけたたましくわかりやすいです
斬新な表現だ。

0096デフォルトの名無しさんNGNG
つーかさ、DirectXを叩くクラスが.NET Frameworkにあれば
けたたましく苦労する事ないのにな。
0097デフォルトの名無しさんNGNG
>>94
自作板で厨房な質問したのに、親切に教えてもらえた―(゚∀゚)――!!!
おかげで無事にドライバアップデート完了。
Direct3Dが使えるようになりますた。

これで日経ソフトウェアについてたサンプルが実行できますよ。

その後は2DからDirectXの勉強していきたいです
0098デフォルトの名無しさんNGNG
よかったな。厨房質問しなくて良いようにがんがれよ
0099デフォルトの名無しさんNGNG
88べーしっくしかつかったことなかったが
きょうからC#とDirectX9勉強する
初心者にもわかるHPつくってまとめるから
わからないことあったらおしえろ
と書いてみるてすと
0100デフォルトの名無しさんNGNG
なんだよ まじで誰もいないのかよ
C#.netでDirectXってこと自体が破綻してるってことか?
だがチュートリアルを攻略するまでは諦めんからな
誰でもいいから教えろまじで
0101ぐっすり八兵衛NGNG
...zzzZZZ
0102デフォルトの名無しさんNGNG
>>92
>// マルチレンダリングターゲット
>device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, verts);

ありがとうございます。がんばって調べてやってみます。
C++からDirectXやっている方は、C#でプログラムしてもなんとかなるかと
思いますが、C#からDirectXをはじめたものとしては、参考書とか少なくて
大変です。これからもがんばってみます。
0103デフォルトの名無しさんNGNG
C#からDirectXを始めたヤシはC++の参考書も読むべし
0104デフォルトの名無しさんNGNG
>>102
そのへんは結構がんばったのでまた分からないことがあれば質問してください。
ま、僕が答えられたらの話だけど。。。
010599NGNG
C#。NETの本を読んでみた
Cっぽくてなんとなくわかりやすかった
土日でDirect3Dのチュートリアルをやりまつ
とイチイチ予告してみるてすと。
0106デフォルトの名無しさんNGNG
>>105
独り言を言いたいならゲ製作技板にそういうスレあるよ
0107デフォルトの名無しさんNGNG
Direct3Dのチュートリアル1の
パラメータ設定んところで SwapEffectの項目は
D3DSWAPEFFECT_DISCARDが選択されてますが

D3DSWAPEFFECT_FLIP
D3DSWAPEFFECT_COPY
との違いが説明読んでもよくわからないので
解説お願いシマス
0108デフォルトの名無しさんNGNG
>>107
交換と上書きコピー
0109デフォルトの名無しさんNGNG
>>108
D3DSWAPEFFECT_FLIP = バッファ交換
D3DSWAPEFFECT_COPY = 上書き
D3DSWAPEFFECT_DISCARD = これは何?
0110デフォルトの名無しさんNGNG
>>109
ドライバに任せる
0111デフォルトの名無しさんNGNG
超サンクスコよくわかりました
0112デフォルトの名無しさんNGNG
おれも聞きたい。
SwapEffect.Discardのとき250のfpsが
なぜかSwapEffect.CopyにするとFpsが200になる??

読んでもあんまわかんなかったけど予想はつく、
Discardだとバックバッファの情報はPresent()した瞬間に消えて再利用ができない。
Copyの場合バックバッファを二つ作ってPresent()した後コピーするからバックバッファを利用できる。
しかしメモリ効率が悪い。

たぶんCopyはマルチパスレンダリングや2分割画面を使うのに有効だと思う。。。
0113デフォルトの名無しさんNGNG
>>55
>ちゃうちゃう、この場合すでにFormクラスにループが仕込んであってイベントがあったら
>それに対応したメソッドを呼ぶんよ。

その仕込んであるループってどういう形なんだろうか?
その部分がメソッド化しててオーバーライド可能であればWin32APIのような
メッセージループができるわけだが・・・
0114デフォルトの名無しさんNGNG
Form.WndProc()
0115113NGNG
>>114
なるほど!ありがとうございました。そのまんまWndProc()だったんですか!
C#で何も操作していなくても画面が進行していく処理が知りたかったのですが
これならタイマやスレッドを使うより高速で安定してますね。

近いうちにC#とDirectXで何か作ろうと思ってた所でとても助かりました。
0116デフォルトの名無しさんNGNG
http://www.geocities.jp/mootdata/
0117デフォルトの名無しさんNGNG
>>79
その記事はDirectX初心者用ではないよ。
だってソースも間違ってるから、それに気づかないとダメっぽいw

それと、その程度で行き詰ってるようでは先は無いな。
諦めろw
0118デフォルトの名無しさんNGNG
諦めろとか、やめろとか安易に言う奴さ、
おまえはよほどいいゲームを作れたんだな?
作品見せてみろよ

初心者用の板で吼えてるんじゃねーよ
子ね
0119デフォルトの名無しさんNGNG
>>116 >>90
アフォ、DoEventは動作が不安定になる(数秒間とまったりする)ってManaged DirectXの
作者自らが公言しているだろ。
きちんとApprication.run(form)して >>114みたいにプロシージャでループ作れよ。

ttp://blogs.msdn.com/tmiller/archive/2003/11/07/57524.aspx
0120デフォルトの名無しさんNGNG
↑すまん、レス間違い

>>90 ×
>>60 ○

0121デフォルトの名無しさんNGNG
C#+DirectX関連の書籍、
いつまでたっても
ほとんどでなさすぎだなぁ。
0122デフォルトの名無しさんNGNG
すごい日本語ですね。
0123デフォルトの名無しさんNGNG
日本語は意味が伝わればモウマンタイ。
0124デフォルトの名無しさんNGNG
どうでもいいけど、ゲイツちゃんは
DirectXベースの.NETFrameworkは作らないのかよ!?
0125デフォルトの名無しさんNGNG
Microsoft XNAのことか?
0126デフォルトの名無しさんNGNG
DirectXがFrameworkに取り込まれたら
けたたましくステキなヨカン
だが、逆に使いにくくなるような気がしなくもない予感

>122
?
0127デフォルトの名無しさんNGNG
しかしC#+DirextX9の解説はネットにあまり転がっていないなぁ。
本のほうも、あまり多くないし、ヘルプは 更新されていないし間違い多いし。

>>117
ソース間違っているの?まだ日ソフのサイトから ソースだけ落として
VC#のプロジェクトに変換しただけで 中身見て無いけど。
実行はできたけど。
0128デフォルトの名無しさんNGNG
>>127
俺は>>117しゃないけど多分、サンプルの方。
Direct3D.Fontクラスの第一引数がnullになってる。
ここってstringでしょ?
0129デフォルトの名無しさんNGNG
>>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♯は始めたばかりなのでよく分かりませんが、他の方で修正無しでコンパイルできた方はいるのでしょうか?
ソースファイル自体は貴重な情報源なので重宝してますが。
0130デフォルトの名無しさんNGNG
>>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のみがインストールされてたらコンパイルできねーよ。
ランタイムの方にもバージョンの違いで動かない等、問題がおきているよね。
0131デフォルトの名無しさんNGNG
リスクがいっぱいのManagedアプリよりも、Javaでのんびりゲーム製作したほうが楽しいと思う。
メインループさえまともに起こせない現段階のC#+ManagedDXに力注ぐのは無駄。

もう一度言う。LongHone出るまではキッパリあきらめて、Javaゲーム製作の練しとけ。
0132デフォルトの名無しさんNGNG
同人ゲームつくるのにC#がいいかなって思ってるんだけどさ、
どうやって配布すりゃいいのか悩む。
.NET Framework再配布パッケージをCDに入れるのも、なんだかトラブルの元になりそう。
Javaで作っても同じだけどね。

ネット配布の場合はMSのページにリンクでも張っとじゃなんとかなるかもしれんけど、
CD媒体のアプリではC#は避けるべきなんだろうか…
0133デフォルトの名無しさんNGNG
トラブルの元になりそうと思った理由は?
0134デフォルトの名無しさんNGNG
RPGツクールのようなゲームエディタ系アプリの中で
ソースコードを吐き出してくれるモノってあるの?
板違いかもしれんが・・・
0135129NGNG
>>130
最新のSDK入れたら動きました。初代9.0からSDK変えて無かったorz
0136デフォルトの名無しさんNGNG
>>131
Javaじゃろくなゲームできないだろうに。
現行の市販3Dゲームと同じような
クオリティのものなんてみたことないぞ。
Java3Dってパフォーマンスよくないっしょ。
0137デフォルトの名無しさんNGNG
>>131
>メインループさえまともに起こせない現段階のC#+ManagedDXに力注ぐのは無駄。
それはつまりスレッドをまともに扱えない無能者であることの宣言ですか?
0138デフォルトの名無しさんNGNG
>119
単にDoEventの行だけ削除するんじゃダメなん?
0139138NGNG
今更だがスゲーあほな質問してました
ダメに決まってるよな  スマソ
014054NGNG
WndProcの中で永久ループしちゃっていいの?
いまやってみてるけど、巧く行かない…。

113さんは巧く行ったのだろうか。
0141デフォルトの名無しさんNGNG

.NET系はソースレベルで逆コンパイルできるから
EXE配布==ソース公開 と思ったほうがいいぞ。

せっかくC#にもなれてC#まんせーって感じだったのに
まともなリバースエンジニアリング対策ができない事がわかってやる気なくした。

難読化ぐらいはできるがデバッグ情報付で再コンパイルできるんだぞ
署名機能とかあるけど間単にはずせる。

ようはオープンソース派以外は.NET系は使わないほうがいい。
もしくはMSにどうにかしろとメールだすなりして対策されるまで使わないか、
せめて誰かエロい人が.NetFrameworkのコール隠すツールが作られて公開されるまで.NET系は使わない方がいい。

0142132NGNG
>133
単純に、インストーラを2つ立ち上げなければならないってだけで、
ユーザは十分混乱すると思われ。

…と思ったんだが、さっきぐぐってみたら.NET再配布パッケージをインストーラに
ふくめることができるツールがあるとか。
ただし英語版のみで日本語環境ではそのままでは動かないらしいが。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=1509

それじゃ配布に関しても特に問題はないのか…俺のC#Builderで
こいつが動くかどうか不安だが。
0143デフォルトの名無しさんNGNG
>141
そんなのはどの環境で作ったって同じでしょ。程度の問題で。
0144デフォルトの名無しさんNGNG
>>140
何故スレッドを使うという選択肢が存在しないのですか?
0145デフォルトの名無しさんNGNG
>>143

程度っていうけど普通のEXEの逆アセンブルレベルじゃないぞ
普通のEXEならC++のクラスレベルで逆コンパイルは出来ない。(少なくとも漏れのしるかぎりでは)

.NET系の場合は綺麗に逆コンパイルできるから
EXEから一部のクラスをそのままぱくる事が可能。
しかもILレベルで逆コンパイルとじゃなくC#の言語レベルで逆コンパイルできる。
0146デフォルトの名無しさんNGNG
たいしたものでもないのに、
やたらソース見せたくないと思ってるやついるよな。
■ このスレッドは過去ログ倉庫に格納されています