ゲームプログラミング相談室[2]

このエントリーをはてなブックマークに追加
>>948
確かにヘルプは全部目を通しておくと良いかもー
同機能の関数を自作し、
その後strstr()の存在を知った漏れの悲しみは異常
死ね俺
953sage:01/10/10 19:48
>>950
win16の頃なら全部読んだが、今のは、必要に応じて開くだけだな。
基本は変わっちゃいないし..

章のはじめにある概要だけつまんで読んでおくといいよ。
一個一個のAPIとサンプルは必要なときに嫁
>は毎回新しいバージョンが出るたびにhtmlに分解して

やり方教えてクレー。粘土をクレー。
955897:01/10/11 08:53
コンパイルは通るんですが、リンクでエラーが出てしまいます。
オブジェクト/ライブラリ モジュールからddraw.hを消すと
Block.obj : error LNK2001: unresolved external symbol _DDReLoadBitmap
Block.obj : error LNK2001: unresolved external symbol _SoundPlayEffect
みたいのが9つ位出てしまいます。
付属のサンプルをトライしても同じです。
基本的なC++とSDKの環境設定ができてないのかもしれません。
時間が許せばSDKのヘルプをとりあえず全部読んでみようと思ってます。
>>945
どうやって分解するのん?
試しに「chm」「逆コンパイル」でgoogleしてきんしゃい。
Office2000 Resource Kit の HTML Help Workshop とか使うと良いアルよ。
>>955

あー。じゃあとりあえずねー
サンプルのプロジェクトを“別フォルダにコピーしないで”(←重要)
そのまんま開いてビルドしてみて。(嫌ならそこのバックアップ取っといて)

それが失敗したらね、レジストリがおかしいのかもしれない。
『HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX』とか。色々。

弄るのがメンドければね、もうWindows再インストール。
959958:01/10/12 00:00
>>958

ごめん。ビルドエラーとレジストリは関係ないわ。

>サンプルのプロジェクトを“別フォルダにコピーしないで”(←重要)
>そのまんま開いてビルドしてみて。(嫌ならそこのバックアップ取っといて)

やっぱこれが失敗するならお手上げだよ。原因全然分かんないや。
× >>958
○ >>955
961_:01/10/12 00:46
age
Direct3Drmをフルスクリーン表示に変更しているのですがコンパイルすると

-----------------------------------------------------------------------

hres = lpDirect3DRM->CreateDeviceFromSurface(NULL, lpDirectDraw,lpBackBuffer, &lpD3DRMDevice);

c:\direct3d\initd3d.cpp(36) : error C2664: 'CreateDeviceFromSurface' : 2 番目の引数を 'struct IDirectDrawSurface *' から 'struct IDirectDraw *' に変換できません。 (新しい機能 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

hres = DirectDrawCreate(NULL, &lpDirectDraw, NULL);

c:\direct3d\main.cpp(145) : error C2039: 'SetCooperativeLevel' : 'IDirectDrawSurface' のメンバではありません。
c:\mssdk\include\ddraw.h(1417) : 'IDirectDrawSurface' の宣言を確認してください。

hres = lpDirectDraw->SetCooperativeLevel(hwnd, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT);

c:\direct3d\main.cpp(145) : error C2039: 'SetCooperativeLevel' : 'IDirectDrawSurface' のメンバではありません。
c:\mssdk\include\ddraw.h(1417) : 'IDirectDrawSurface' の宣言を確認してください。

hres = lpDirectDraw->SetDisplayMode(640, 480, 16);

c:\direct3d\main.cpp(147) : error C2039: 'SetDisplayMode' : 'IDirectDrawSurface' のメンバではありません。
c:\mssdk\include\ddraw.h(1417) : 'IDirectDrawSurface' の宣言を確認してください。

hres = lpDirectDraw->CreateSurface(&ddsd, &lpPrimary, NULL);

c:\direct3d\main.cpp(157) : error C2039: 'CreateSurface' : 'IDirectDrawSurface' のメンバではありません。

hres = lpDirectDraw->CreateClipper(0, &lpClipper, NULL);

c:\direct3d\main.cpp(184) : error C2039: 'CreateClipper' : 'IDirectDrawSurface' のメンバではありません。

hres = lpDirect3DRM->CreateDeviceFromSurface(NULL, lpDirectDraw, lpBackBuffer, &lpD3DRMDevice);

c:\direct3d\main.cpp(193) : error C2664: 'CreateDeviceFromSurface' : 2 番目の引数を 'struct IDirectDrawSurface *' から 'struct IDirectDraw *' に変換できません。 (新しい機能 ; ヘルプを参照)

-----------------------------------------------------------------------

なぜかこのようなエラーが出てしまいます。ちゃんとddraw.libとかもリンクしてあるのに
4時間ほど悩んでます。ヘルプを見ても解らないです。
>>956
HTML Help WorkshopでDecompile
   
   
   
   
              そうか。まぁ気長にやれ。
  
  
  
   
>>962
根本的に色々まちがっとる。多分、ここを一個直したら何とかなるという性質の物ではないので、もっと小さいサンプルから手がけること。リンクがどうこうは関係ない,、たってリンクまでたどり着いてないし。

ここから本題。普通掲示板に↑みたいなエラーメッセージを書くと嫌われる。困っている事象をコンパクトにまとめて質問に来ること。
ここは2ch、普通なら逝ってよしの一言で済まされるぞ。
966964:01/10/12 01:02
あ、>962ね。
963スマソ。
・・・・ぶっちゃけた話、
>>962はコピペネタだと思われ
968945:01/10/12 05:54
APIバイブルとかは一度は全部目を通しておかないと、そんなAPIがあるかどうか
すら分からないから、やはり一通り全部見ておいた方がいいと思うよ。
例えばアンチエイリアスのかかった文字が得られるAPIってのがあるけど、そんな
の普通あるとは思わないよね?だけど全部目を通しておけば、そういうAPIがある
事は分かる。目を通すと言っても全部覚えるわけじゃなくて、どんなAPIがあるの
か大体の概要を掴むのと、極一部の便利そうなAPIを覚えておく程度。

あと、ヘルプやAPIバイブル以外でも、SDKのヘッダファイルなんかも見ておくと
いいよ。WindowsX.hなんてヘルプに説明ないけど便利なマクロがたくさん入ってる。
Direct3Dでも、D3DX_PIなんかはヘルプには書いてないし。
GetGlyphOutline()のことか?
ちなみにアンエリ取得がOSに依存するため実際には
GGO_BITMAPで取得して自力で縮小してアンエリ作らなきゃいけないってのも
知っておけよ
■CreateFont()の“ANTIALIASED_QUALITY”とかも同質の制限アリ
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_createfont.htm
971970:01/10/12 12:24
んで、俺も結局これ使わなかった。
適当にヘボルーチンを組んで済ましちゃうほうが手っ取り早いアルよ。
2xスーパーサンプリングで十分な品質得られたYO
972969:01/10/12 12:34
x2でのスーパーサンプリングだと品質あんまよくないよ
少なくともx4で取らないと
x2とx4は目で確実に認識できるx4とx8は微妙だけども
973970:01/10/12 12:43
うぇ〜ん。俺の感覚は素朴に出来てるんだよぅ
974デフォルトの名無しさん:01/10/12 12:46
>>971
2倍のスーパーサンプリングだと、αが5段階程度にしかならん。
975945:01/10/12 13:12
968で言ったのは、たしかにGetGlyphOutlineの事だけど、一通り目を通さないと
そんなAPIあるとは思わないっていう例で挙げただけで、GetGlyphOutlineについ
て熱く語り合う気はなかったんだが。

ところで、>>969のOSに依存するってのは具体的にどういうこと?
Plus!入れてない95だと使えないとか?
CreateFontのANTIALIASED_QUALITYはややこしい制限があるんだね。

x2とx4については、どう感じるかは個人差ありそうだね。
少しだけ傾いた細い線なんかはx2だとちょっと気になるよね。
ただ、x4にしてそのコストに見合うだけ品質が上がるかは微妙。
976デフォルトの名無しさん:01/10/12 13:34
>>969
>アンエリ取得がOS
すまん、おれも詳細をしりたい 
977970:01/10/12 14:01
>>974

うぇ〜ん。知ってるよ。
『実際の文字の出力結果』に満足してるって話なんだよぅ。
主観の相違だから仕方ない話なんだー。もう勘弁してくれよぅ。
>>975
サイズや選んだフォントによってかかったりかからなかったりする。
その閾値となるサイズがOSやフォントによってまちまちだったりする。
>>978
それはGetGlyphOutlineではなくてスクリーンに
フツーのテキスト描画系GDI APIをつかって
描画するときのはなしでわ?
>>974

実際の話をすると
ここで前提とされているようなゲームアプリ程度の文字出力用途
であれば、x2でも別に実用に耐えてるし普通に使ってるよ。

デザイナのオーケーが出てりゃそれでいいんだよ。こんなもんわ。

           え、駄目?
981897:01/10/12 16:55
>>958
わかりました。
とりあえず妥協して他のプログラムで経験つんでDirectXを理解できるようになったらまたトライしてみます。
何度も親切なアドバイス、ありがとうございました。
982978:01/10/12 16:57
>>979
ややこしいが、978は975の

>ところで、>>969のOSに依存するってのは具体的にどういうこと?
>Plus!入れてない95だと使えないとか?

に対応し、969の

>ちなみにアンエリ取得がOSに依存するため実際には

に対応していると思われる。
>>982
ああ、いや、それはわかるんだけど
>サイズや選んだフォントによってかかったりかからなかったりする。
すくなくともGGO_GRAY?_BITMAPでアンチエイリアス取得できるフォントの場合は、
サイズは関係ないよ。これはPlus!無しWin95でも確認済み。
>983
それはちゃんとOSR1でIEなしなWin95か?
そろそろだな



15
>>984
さようでございます
御意
新スレはこちら↓

■ゲームプログラミング相談室[3]
http://piza2.2ch.net/test/read.cgi/tech/1002894129
989キリ番ゲッター:01/10/26 19:20
1000間近スレッド発見
990キリ番ゲッター:01/10/26 19:20
1000狙うからな
覚悟しておけ
991キリ番ゲッター:01/10/26 19:21
ああああああほーーーーーーーーーーーーーーー


邪魔するやつは
氏ね
992キリ番ゲッター:01/10/26 19:21
俺様が1000とったら ウラビデオさしあげます
993キリ番ゲッター:01/10/26 19:22
1000だ



0ほしい
994キリ番ゲッター:01/10/26 19:22
邪魔したらウラビデオ配布中止
いらんよ
996キリ番ゲッター:01/10/26 19:24
997キリ番ゲッター:01/10/26 19:24
ぬおおおおおおおお!!!!!
なぜ
じゃまするのだ

氏ね
998:01/10/26 19:24
999キリ番ゲッター:01/10/26 19:24
邪魔したら
おしおきだ
サーシャたんハァハァ……

すまん、スレ間違えた。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。