トップページgamedev
1001コメント305KB

鬱だ氏のう DirectX (Part 3)

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001 ◆WMpzjIm. 01/11/07 16:56ID:???
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
0848名前は開発中のものです。02/02/25 05:33ID:???
ふーこれだから、DirectXヲタは(以下略)
0849名前は開発中のものです。02/02/25 05:42ID:???
>>846
そのこころは?
マジでわからん
0850名前は開発中のものです。02/02/25 05:59ID:???
16進数だろ
0851名前は開発中のものです。02/02/25 07:34ID:???
>>850
なわけねーだろ!!
計算しようとしちゃったじゃねーかよ
0852名前は開発中のものです。02/02/25 08:47ID:???
>>851
0x1F300000 は 523239424 ですが。
0853名前は開発中のものです。02/02/25 10:09ID:???
>>852
なわけねーだろ!!
計算しようとしちゃったじゃねーかよ
0854名前は開発中のものです。02/02/25 10:09ID:???
>>852
納得
0855名前は開発中のものです。02/02/25 12:24ID:???
>>847
だな
0856名前は開発中のものです。02/02/25 13:25ID:???
1 frame が何秒であろうと、triangles / frame という単位は
シーン自体の複雑さを表す指標として役割を果たす。
frame はそもそも無次元なので、時間の次元を持つ秒と
単純に比較している >>847 の論理は意味を成さない。
0857名前は開発中のものです。02/02/25 13:38ID:???
>frame はそもそも無次元なので
ごめん、折れには理解できないや。(藁
その上の2行も答えになってないし。
1frame(1/60秒)みたいに誤解されないように書けばいいこと。  
0858名前は開発中のものです。02/02/25 21:16ID:???
単位時間あたりにだせるポリゴン数の話じゃなかったのかよ?
0859名前は開発中のものです。02/02/25 21:41ID:???
>>856
3D野郎によくいるヘリクツが得意な人ですか?
086084702/02/25 23:20ID:nuWG/p8d
>>856
>シーン自体の複雑さを表す指標
「ポリゴン数=複雑さ」っていつの時代の話だ?

>frame はそもそも無次元なので、時間の次元を持つ秒と単純に比較している
まず、frameはゲーム中における「単位時間」と考えることも出来る。
というか、俺はこれを前提として話したんだが・・・。
わかりやすいように簡単な例を提示します。

A:「マシン新しくしたよ。PIIIの1.0GHzのマシン買ったの」
B:「へぇ〜CPUの速度が速くなったね〜」
A:「Hzは速度の単位ではないよ。次元が別だよ」
B:「・・・」
0861名前は開発中のものです。02/02/26 00:58ID:???
>>860
>frameはゲーム中における「単位時間」
時間に対してフレーム数が固定されてないと性能比較の話がなりたたない
今回は不適切
>わかりやすいように簡単な例を提示します。
なにがいいたのかわかりません
0862名前は開発中のものです。02/02/26 01:05ID:???
単位とすれば可変な長さの1フレームよりも固定の長さ1秒の方が適切だと思うんだが、
なんで訳のわからない論争してんの?
0863名前は開発中のものです。02/02/26 01:23ID:???
856の言うように、1フレームは時間次元の単位ではなく
単なる無次元の計数と考えたほうが明らかに合理的だよな。
>「ポリゴン数=複雑さ」っていつの時代の話だ?
複雑さを表す1つの指標であることには変わりないと思うが?
0864名前は開発中のものです。02/02/26 01:31ID:???
フレームとvsyncを勘違いしてるんじゃないだろうな?
0865名前は開発中のものです。02/02/26 01:40ID:???
>>847=>>860
  わけ     わか     らん♪
  ∧_∧   ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)
⊂ ⊂  )  ( U  つ  ⊂__へ つ
 < < <    ) ) )     (_)|
 (_(_)  (__)_)    彡(__)
0866名前は開発中のものです。02/02/26 10:37ID:???
>862
禿同。
てか、poly/secが一般的な単位なんだからそれ使えばいい話だと思うが。
0867名前は開発中のものです。02/02/26 11:16ID:???
プログラマにとって重要なのはpoly/secとframe/sec(fps)
グラフィックデザイナにとって重要なのはpoly/frame
0868名前は開発中のものです。02/02/26 19:03ID:???
気になってたんだがなんで鬱だ氏のうなんだ
0869名前は開発中のものです。02/02/26 19:35ID:???
>>868
初代スレが鬱だ氏のうだったから
0870名前は開発中のものです。02/02/26 19:42ID:???
DirectX5くらいの時はバグ酷かったしね。
環境で動かないなんて当たり前だったし。
0871名前は開発中のものです。02/02/27 03:40ID:???
DirectX8.1って日本語ドキュメント出てるんですか?
M$のサイト見たけど、あがってないような・・・・・。
0872名前は開発中のものです。02/02/27 03:48ID:???
8.1の日本語ドキュメントはいくら待っても出ません。
0873名前は開発中のものです。02/02/27 03:49ID:???
chmをhtmlに分解してから翻訳ソフトにかけてchmに戻す。
これで日本語ドキュメントの完成。
0874名前は開発中のものです。02/02/27 04:04ID:???
>871
糞ガイシュツ。>>683-684
0875名前は開発中のものです。02/02/27 12:24ID:???
どうしてDirectX AppWizardの生成するコードは
CMyD3DApplication クラス内で ID3DXMesh* を使ってるんだ?
CD3DMesh* じゃダメなのか?
CD3DMeshの使いどころが厨だからわからんチン。
0876名前は開発中のものです。02/02/28 09:32ID:wFzdbIi3
同じ処理をフルスクリーンとウインドウで動かすと、
ウインドウモードのほうが速いんですけど、これって
普通なんですか?
(イメージ的にフルスクリーンの方が速いと思ってたんですけど)
0877名前は開発中のものです。02/02/28 10:08ID:???
ウインドウモードではモニターのリフレッシュレートを無視して
描画するから速くなるかも。
0878名前は開発中のものです。02/02/28 11:39ID:???
逆にいうとフルスクリーンでリフレッシュレートに依存するプログラム書いていると、一定以上FPSが上がらない。

それと、ビデオ周りがうんこだとフルスクリーンの方が遅い場合もある。
まあ今時のものなら考えられんけど
0879名前は開発中のものです。02/03/01 09:16ID:SPjU9Ic9
Visual C++ 5.0 SP3とDirectX 8.1 SDKで

>D:\DXSDK\INCLUDE\d3dx8math.h(259) : error C2065: 'UINT_PTR' : 定義されていない識別子です。

とか怒られるんだけどなんなんやろね。
typedef UINT UINT_PTR;
とかやって強引に通してるけど。大人しく.NET買えってことですか。

それと、MSのサポート技術情報ページ、
なんか知らんうちにリニューアルされてますが、ちゃんと検索できます?
IE5.5SP2でもIE6でも本家の英語サイトでも駄目だぁ。
0880名前は開発中のものです。02/03/01 20:03ID:???
>879
VC++6.0買えってこと。
どうせ.NETもいくつかSPあたるまで使い物にならないだろうし。
0881名前は開発中のものです。02/03/03 04:44ID:???
>>879
最新のPlatform SDKを落としてみたら?
0882 02/03/07 16:15ID:???
半透明ポリゴンのソートの実装サンプルってない?
MSとかNVidiaのはXフォーマット用のクラスで中みえないし
個人HPでもあんまり解説してないですよね〜

海外のエンジン集めたHPとかならあるんだろうけど、逆にありすぎてわからん
(質もわかりにくいし

頂点フォーマットが複数ある場合、頂点バッファではなく、
floatの配列に突っ込んで描画すんのかなぁ?
0883名前は開発中のものです。02/03/07 17:58ID:???
>>879
俺も同じ現象が出てたよ。VC5 SP3。
>>881氏 の通りにやって動かしたよ。
俺がちゃんとした解決策を知ったのはOpenGLで書く決心がついてからだった… タイミング悪すぎ。
0884_02/03/07 19:13ID:???
>882
意味よくわからんのだが、普通にソートするだけじゃダメ?
0885 02/03/07 19:43ID:???
うーん並び替えのアルゴリズムはQSORTや他のなんでもいいんだけど、

どーいうデーター構造&GPUを考えるとVRAMorSYSTEMメモリの使い分けとかどうすんのかなぁ、と

あと並び替えの基準とする座標って、三角形の3頂点のどれかでいいの?
それとも、重心とか別に求めた座標使わないと駄目?
0886名前は開発中のものです。02/03/07 20:20ID:M+bebc/H
>>885
メッシュの重心じゃ駄目かに?
つーか普通半透明ポリゴンのソートって言えばメッシュ単位だろ?
流石にポリゴン1枚1枚でソートはしないと思うぞ。
結局ドロープリミテブに渡して描画して貰うんだから
意味ないじゃん。
0887 02/03/07 20:57ID:???
まぁゲームだとメッシュ単位でいいんだけど、切り替え式でポリゴン単位も実装したいと思って〜
つか、人体とか入り組んだ形状だとメッシュ単位だとおかしくなるでしょ?
人体のパーツ(BONE)毎にソートすればいいけど、それでも接続部分でおかしくなりそう

間違ってる?

0888名前は開発中のものです。02/03/07 21:26ID:???
半透明は使わないようにする。これが最強。
半透明以外の部分が極まってくると、半透明部分は屈折とかやりたくなるのよ。
そうすると入り組んだ形状がどうしようもなくて、結局半透明は使わないで
くださいという結論になる。窓ガラス以外の半透明禁止!
0889名前は開発中のものです。02/03/07 23:10ID:mRevsoRy
>>888の理由で窓ガラスを全部鏡にしたことあったりして。
そしたら全面鏡張りの部屋になたよ。
0890 ◆qZpyBXM2 02/03/08 00:11ID:???
 
0891名前は開発中のものです。02/03/08 23:49ID:kqtc4bt/
FAQ っぽいのですが…
DirectDraw7 でフルスクリーンにした途端、指定したウィンドウの縦サイズが
画面高さ - (多分)タスクバーの高さ に固定されてしまいます。
画面の下側をクリックするとデスクトップのアイコン等がいじれてしまうのですが、どうしたらいいでしょうか?
0892名前は開発中のものです。02/03/08 23:52ID:???
>>891
環境プリーズ
089389102/03/09 00:04ID:FSCavH5A
>>892
書き忘れました^^

Win2k sp2
VisualC++6.0
DirectX8.1

で、DirectDraw7 です。よろしくおえがいします。
0894名前は開発中のものです。02/03/09 00:11ID:heeM/QyX
http://www.inkando.com/cgi-rankingplus/rankin.cgi?id=0511030508
089589102/03/09 00:26ID:FSCavH5A
なんとなくタイトルバーの高さな気もします。
SetDisplayMode をしないときは正常サイズなので
SetDisplayMode が何かをしているのだと思うのですが…。

変更するだけならまだしも、変更後、再変更不可能なのです。
どうしたらいいでしょうか?
0896名前は開発中のものです。02/03/09 00:59ID:???
>>895
ビデオカードは?
とりあえずはビデオカードのドライバ入れなおしてみたら?
0897名前は開発中のものです。02/03/09 01:25ID:???
>>895
ソース出せるなら、関係しそうな部分だけでも出してみ。
089889502/03/09 11:50ID:ixeDcFTn
ちょっと >>891 で説明していた事は間違いだった事がわかりました。
SetCooperativeLevel で、ウィンドウの子ウィンドウを渡していたのですが、そのせいで、親ウィンドウのサイズが

親ウィンドウが画面サイズいっぱいになった時の子ウィンドウの大きさ

になっていたみたいです(タイトルバーとボーダーの分をタスクバーの高さと勘違いしていました)

で、結局、何がしたくて、困っている問題は何かなのですが

したいこと
 ウィンドウのクライアント領域のサイズを画面サイズにして、
 フルスクリーン時には画面の左上にクライアント領域の左上がくるように、
 通常のウィンドウ時は普通のウィンドウとして扱いたい。

困っている事
 協調レベルのセットと解像度変更をすると、ウィンドウのサイズ(非クライアント領域も含めたサイズ)
 が、解像度と同じに設定されてしまって変更できない。
 (マウスイベントを拾いたいので、フルスクリーン時に画面いっぱいのクライアント領域にすることが必須なのです)

>>896
Millenium G400 なのですが…。ドライバはおかしくなさそうです。

>>897
ちょっと質問の内容変更しましたが、やっぱりソース必要でしょうか?


これはなんとかなるでしょうか?よろしくお願いします。
0899名前は開発中のものです。02/03/09 15:02ID:???
>>898
フルスクリーンモード時
 親ウィンドウの非クライアント領域で発生したメッセージ捕まえて、子ウィンドウの
 クライアント領域で発生したメッセージに変換する。

で良いんじゃないの? 非クライアント領域で発生したメッセージを、クライアント
領域へのメッセージに変換するのは、WM_NCHITTEST に対して HITCLIENT 返
せば OK。
090089802/03/10 13:14ID:0/yRfR5S
>>899
わ〜!望んでいた事ができそうです〜〜!!ありがとうございます〜〜!!
あと、 HITCLIENT ではなくて HTCLIENT ですよね?

あと、ウィンドウの左上とクライアント領域の左上の差をできるだけ実行時の
コストがかからないで取得する方法ってあるでしょうか?
090190002/03/10 14:10ID:0/yRfR5S
ちなみに私は安直なので↓のようなコードしか浮かばないのですが
もっといい方法はありますか?

POINT ptClient;
ptClient.x = 0;
ptClient.y = 0;
::ClientToScreen(hWnd, &ptClient);
RECT rcWindow;
::GetWindowRect(hWnd, &rcWindow);
x = LOWORD(lParam) + (ptClient.x - rcWindow.left);
y = HIWORD(lParam) + (ptClient.y - rcWindow.top);
0902名前は開発中のものです。02/03/10 15:04ID:???
>>900
そこまでいくと DirectX の質問じゃないだろ。プログラム技術板の Win32 API スレ
で聞いたほうが良いぞ。
0903名前は開発中のものです。02/03/10 16:15ID:???
DirectX8でウィンドウのサイズ変更時に勝手にウィンドウサイズに
合わせてスプライトが伸縮してしまうんですが、どうしたらいいんでしょうか?
0904名前は開発中のものです。02/03/10 16:38ID:zRtP+ORA
バックバッファの転送のところをチェック
転送元の範囲を固定でなく、windowのリサイズにあわせてやればok
090590102/03/11 00:18ID:nAiYUbSf
>>902
たしかにそうですね。とりあえずうまく逝ってるのでこれで我慢します。

で新たに質問なのですが

Flipしようとすると DDERR_NOTFLIPPABLE が返ってきます。
フルスクリーンですし、サーフェイス作成時に
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
と指定していて、ぶら下がってるサーフェイスもちゃんと取得できています。
Flipの引数は(NULL, DDFLIP_WAIT)でやっています。
ビデオボードは Millenium G400
DirectX8.1 で DirectDraw7 を使っています。

なぜなのかさっぱりわかりません、どういった理由が考えられるでしょう?
よろしくお願いします。
0906名前は開発中のものです。02/03/11 00:23ID:sZq/vYAU
DirectX7でBltを使うときに
DDBLT_WAITを指定しているんですが、
Blt後のGetBltStatusがDDERR_WASSTILLDRAWINGを
返します。

なんで描画が終わるまで待っててくれないんでしょう。
090790502/03/11 13:52ID:iNy4rQum
すいません、どうしてもわかりません。何故 NOTFLIPPABLE になってしまうのでしょうか?

#include <windows.h>
#include <ddraw.h>

char szClassName[] = "Windblow-Window";
LPDIRECTDRAWSURFACE7 pSurfPrim = NULL;
LPDIRECTDRAWSURFACE7 pSurfBack = NULL;
LPDIRECTDRAW7 pDD7 = NULL;

LRESULT CALLBACK InitialWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch (msg){
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return ::DefWindowProc(hWnd, msg, wParam, lParam);
}

int WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow){
HWND hWnd = NULL;
bool bFullScreen = true;

WNDCLASSEX wndClass;
ZeroMemory(&wndClass, sizeof(wndClass));

wndClass.cbSize = sizeof (wndClass);
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = InitialWndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hIconSm = NULL;
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wndClass.lpszClassName = szClassName;
wndClass.lpszMenuName = NULL;

if (!::RegisterClassEx(&wndClass)) {
return 1;
}

DWORD windowStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
DWORD windowStyleEx = WS_EX_DLGMODALFRAME;

RECT rcClient;
::SetRect ( &rcClient, 0, 0, 640, 480);
::AdjustWindowRectEx ( &rcClient, windowStyle, FALSE, windowStyleEx);
続く
090890502/03/11 13:53ID:iNy4rQum
hWnd = ::CreateWindowEx(windowStyleEx, szClassName, "", windowStyle, CW_USEDEFAULT, CW_USEDEFAULT, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top, NULL, NULL, hInstance, NULL);
if ( !hWnd) {
return 1;
}

HRESULT ret;
ret = DirectDrawCreateEx( NULL, (void**)&pDD7, IID_IDirectDraw7, NULL);
if ( ret != DD_OK) {
MessageBox(NULL, (LPCSTR)"DirectDraw 初期化に失敗しました", (LPCSTR)"エラー", MB_OK);
}

int ddsclFlags = bFullScreen ? (DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN):(DDSCL_NORMAL);
ret = pDD7->SetCooperativeLevel( hWnd, ddsclFlags);
if ( DD_OK != ret) {
MessageBox(NULL, (LPCSTR)"協調レベル設定に失敗しました", (LPCSTR)"エラー", MB_OK);
}

::ShowWindow( hWnd, SW_SHOW);
::UpdateWindow( hWnd);

if ( bFullScreen) {
if ( DD_OK != pDD7->SetDisplayMode ( 640, 480, 24, 0, 0)){
MessageBox(NULL, (LPCSTR)"解像度変更に失敗しました", (LPCSTR)"エラー", MB_OK);
}

DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
if (DD_OK != pDD7->CreateSurface( &ddsd, &pSurfPrim, NULL)) {

MessageBox(NULL, (LPCSTR)"プライマリサーフェイスの作成に失敗しました", (LPCSTR)"エラー", MB_OK);
exit(1);
}

DDSCAPS2 ddsCaps;
ZeroMemory(&ddsCaps, sizeof(ddsCaps));
ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
if (DD_OK != pSurfPrim->GetAttachedSurface(&ddsCaps, &pSurfPrim)) {
MessageBox(NULL, (LPCSTR)"バックサーフェイスの取得に失敗しました", (LPCSTR)"エラー", MB_OK);
exit(1);
}
}else{
続く
090990502/03/11 13:54ID:iNy4rQum
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if ( DD_OK != pDD7->CreateSurface(&ddsd, &pSurfPrim, NULL)) {
MessageBox(NULL, (LPCSTR)"プライマリサーフェイスの作成に失敗しました", (LPCSTR)"エラー", MB_OK);
exit(1);
}
}

LPDIRECTDRAWSURFACE7 pChip;
DDSURFACEDESC2 ddsd2;
ZeroMemory(&ddsd2, sizeof(ddsd2));
ddsd2.dwSize = sizeof(ddsd2);
ddsd2.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
ddsd2.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
ddsd2.dwWidth = 32;
ddsd2.dwHeight = 32;

if (DD_OK != pDD7->CreateSurface( &ddsd2, &pChip, NULL)){
MessageBox(NULL, (LPCSTR)"オフスクリーンサーフェイスの作成に失敗しました", (LPCSTR)"エラー", MB_OK);
exit(1);
}

続く
091090502/03/11 13:54ID:iNy4rQum
switch ( pSurfPrim->Flip( NULL, DDFLIP_WAIT) ){
case DD_OK:
break;
case DDERR_GENERIC:
::SetWindowText(hWnd, "DDERR_GENERIC");
break;
case DDERR_INVALIDOBJECT:
::SetWindowText(hWnd, "DDERR_INVALIDOBJECT");
break;
case DDERR_INVALIDPARAMS:
::SetWindowText(hWnd, "DDERR_INVALIDPARAMS");
break;
case DDERR_NOFLIPHW:
::SetWindowText(hWnd, "DDERR_NOFLIPHW");
break;
case DDERR_NOTFLIPPABLE:
::SetWindowText(hWnd, "DDERR_NOTFLIPPABLE");
break;
case DDERR_SURFACEBUSY:
::SetWindowText(hWnd, "DDERR_SURFACEBUSY");
break;
case DDERR_SURFACELOST:
::SetWindowText(hWnd, "DDERR_SURFACELOST");
break;
case DDERR_UNSUPPORTED:
::SetWindowText(hWnd, "DDERR_UNSUPPORTED");
break;
case DDERR_WASSTILLDRAWING:
::SetWindowText(hWnd, "DDERR_WASSTILLDRAWING");
break;
default:
::SetWindowText(hWnd, "不明なエラー");
break;
}

MSG msg;

while (GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;
}
以上です。いったいどこを間違えているのでしょう?
0911名前は開発中のものです。02/03/11 15:29ID:???
>905
問題の個所くらい書け。
0912名前は開発中のものです。02/03/11 15:35ID:MdXhYgnA
>906
WaitForVerticalBlank() を挟んでみたら?
で、便乗質問なんだけど、WaitForVerticalBlank()って描画ループの間に挟まないとダメみたいなんだけど、どうよ?
俺はDirectDrawの初期化の時なんかに一度だけ呼び出せば良いと思ってた。
0913名前は開発中のものです。02/03/11 15:55ID:???
>905
まずSDKのサンプルでも同じか確認してくれ。
ビデオカード依存なら他の環境ではでなさそうだし。
0914名前は開発中のものです。02/03/11 15:58ID:MdXhYgnA
>>913
どうやらループ毎に呼び出すのが正解らしい。
サンプルはDX7のヤツなんだが、WormHoleのやつしか使ってなかった。ただしメインループ内で使ってたな。
これは小言だが、***_FAITとかって信用できん。。これもビデオカード依存かも。
091590502/03/11 16:14ID:NNQaCTIn
鬱だ…。バックバッファの取得でプライマリバッファへのポインタ破壊してました。

お騒がせしました。ほんとにスレタイトル通りって感じです。
091691402/03/11 17:12ID:???
>>914
***_FAIT -> ***_WAIT
鬱だ死のう
091790602/03/11 23:35ID:s9ACuIQk
>>912>>914
ありがとうございます。

プログラムとしてはGetBltStatusを見て描画が終わるまで
ループさせているので動作に問題はないのですが、
ちょっと気になったので質問してみました。

やっぱりこのフラグ信用できないんだ・・・。
0918名前は開発中のものです。02/03/12 21:32ID:nri+3Ey/
ゲーム作ってる人はclassつかってるの?
それとも昔ながらの構造体+関数?
0919名前は開発中のものです。02/03/12 21:42ID:???
>>918
モジュールの概念は知っとるけ?あと、externやstaticの使い方は?
つーか、classの使い方を覚えるよりも、コッチを先に覚えるべし。
0920名前は開発中のものです。02/03/12 22:08ID:nri+3Ey/
>>919
うん、一応は。
Class化するかどうかは好みの問題?
0921名前は開発中のものです。02/03/12 23:55ID:???
>>919
そんなことは聞いてません
0922 02/03/13 00:35ID:XCyICkzD
windowsならクラス使うでしょ
コンソールとか、c++の動作がキモイ環境ならC Only
0923名前は開発中のものです。02/03/13 00:44ID:cmWHcEPh
ゲーム製作者ならば
C++禁止、ランタイムのmalloc禁止は当然だろ。
市販ゲームでハード依存なんて問題外だからDirectX禁止。

0924名前は開発中のものです。02/03/13 00:46ID:???
>>923
ネタは sage てな。
0925名前は開発中のものです。02/03/13 13:31ID:???
>>923
C++ と malloc と DirectX が苦手なんですね。
0926名前は開発中のものです。02/03/13 16:55ID:???
そのとおり。
なんとかしてください
0927名前は開発中のものです。02/03/13 17:08ID:???
うふふふふ、DirectX 8.1 SDKの入った環境にPlatform SDKを入れて、
Platform SDKのDirectX 8.1 SDKプレビュー版をアンインストールしたら
DirectX 8.1 SDKがツールもサンプルも動かなくなって
インストールもアンインストールもできなくなってしまいました。
Windows Installer Clean Upも効かないでやんの。

結局、Win2kからクリーンインストールし直したぞよ。
みんなも気をつけてね。
0928名前は開発中のものです。02/03/13 18:24ID:???
>>925 malloc にワラタ
つーかWindows自体ハード依存してるから全ての市販ゲームは禁止な罠
0929名前は開発中のものです。02/03/13 19:44ID:dMh5H0pu
クラス使わないでCオンリーとか言ってるけど
実際は自分でクラスまがいな設計にしちまうんだろ?
0930名前は開発中のものです。02/03/13 21:14ID:???
コンシューマーと PC を混同している方がいらっしゃいますね。
0931名前は開発中のものです。02/03/13 21:31ID:???
C/C++ネタは別スレで頼む。ここは由緒あるDirectXスレだ。
0932名前は開発中のものです。02/03/13 21:44ID:e1uF0puM
で、結局DirectXでのクラスの話はどうなのよ?
0933名前は開発中のものです。02/03/13 22:14ID:???
コンシューマはハード依存しません(藁
0934名前は開発中のものです。02/03/13 22:34ID:???
>つーかWindows自体ハード依存してるから全ての市販ゲームは禁止な罠
ハード依存の意味がわかってるのかと小一時間(略
0935名前は開発中のものです。02/03/13 22:46ID:5XPBpgUY
DirectDraw での RECT の指定についてなのですが、

left=0, top=0, right=639, bottom=479

は 全部で639ピクセル x 679ピクセル ですか?
それとも 640ピクセル x 680ピクセル ですか?
0936名前は開発中のものです。02/03/13 22:57ID:???
>935
冷静に読み直せ。どっちも違う。
0937名前は開発中のものです。02/03/13 23:05ID:???
>935 ワラタ
0938名前は開発中のものです。02/03/13 23:14ID:???
>>936
そのくらいわかって答えてやれよ
093993502/03/13 23:51ID:TK/wJ18X
恥ずかしい………。479? 480?

結局どっちなのでしょうか?
0940名前は開発中のものです。02/03/13 23:53ID:???
>>939
479
0941名前は開発中のものです。02/03/13 23:55ID:???
>935
DirectX7のドキュメントには書いているんだけどな。Bltの項目を読め!

つーか、そのくらいプログラム組んで比べれば分かるだろうよ?
094293502/03/14 00:08ID:oILUKkp9
>>940
ありがとうございます。

>>941
この扱い方って通常の RECT の扱い方と違いませんか?
実際試してみて、自分の中で結論は出ていたんですけど、
おっちょこちょいなので、やっぱりどこかでミスしてるのかなぁ?と
不安になったので人に聞いてみたかったんです。
とりあえずあっていたのでよかったです。ありがとうございます。
0943名前は開発中のものです。02/03/14 00:29ID:???
>938
メール欄見れ。
0944名前は開発中のものです。02/03/14 00:37ID:???
いや、その答えじゃなくて
0945名前は開発中のものです。02/03/15 12:49ID:jZhmWUKm
どなたかDirectX7のヘルプファイルをいただけないでしょうか?
お願いします!
0946親切な人02/03/15 12:55ID:???

ヤフーオークションで、凄い人気商品、発見!!!

「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0947名前は開発中のものです。02/03/15 13:02ID:???
インストールしようとすると互換性がナイとかPCに言われる
レス数が900を超えています。1000を超えると表示できなくなるよ。