トップページgamedev
985コメント286KB

DXライブラリ 総合スレッド その7

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2010/10/04(月) 17:24:47ID:zBoueRHu
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【過去スレ】
DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
http://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
DXライブラリ 総合スレッド その5
http://pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
http://hibari.2ch.net/test/read.cgi/gamedev/1267108154/
0889名前は開発中のものです。2011/03/08(火) 00:57:56.84ID:KY1+fYB9
関係ないかもしらんが俺の環境ではフルスクリーンだとなぜかVsync待ちすらしてないようでvsync_time: 0.005くらいが出まくってた。カウントは16。
0890名前は開発中のものです。2011/03/08(火) 22:22:52.93ID:3MPvLyMj
>>888
>>889
テストありがとう
ん〜、環境によってわりかし違うなぁ
どうすべ〜
0891名前は開発中のものです。2011/03/08(火) 22:26:55.30ID:8AuwhuEL
環境設定で垂直同期オフのタイマー待ちモードを選べるようにしたらいいんじゃないか
0892名前は開発中のものです。2011/03/08(火) 22:38:03.07ID:6A/P0SlX
似たような話で申し訳ないが、俺もちょっと気になる事が。

俺は垂直同期信号待ちを切ったプログラムを組んでる。
それとは別に、ウィンドウモードかフルスクリーンモードかを記録して、
プルグラム起動時にはその記録を読み込んで、どちらのモードで始めるか決まるようにしてる。

で、ここからが気になる事なんだけど。

フルスクリーンで起動した時は、まったくティアリングが出ないんだけど、
ウィンドウモードからフルスクリーンに切り替えた時は酷いティアリングが発生してしまう。
(フルスクリーンで起動して、一度ウィンドウモードにしてからまたフルスクリーンに戻しても同じ)

普通に考えたら垂直(略)待ちしてなければティアリングは発生して当たり前なんだから
フルスクリーン起動時の方が特殊なんだろうか??

他の人でこういう現象を経験した人っていますかね。
0893名前は開発中のものです。2011/03/08(火) 23:27:50.64ID:hpvVdE5K
>>886に同じ
0894名前は開発中のものです。2011/03/09(水) 00:22:43.32ID:rJmaFgi1
>>892
フルスクリーン → ウィンドウモード → フルスクリーン の時の動作が良くわからんなあ。
0895名前は開発中のものです。2011/03/09(水) 00:50:26.09ID:OL3/YmmT
>>892
その様な話を聞いた気がする。新しいので治っていたような…と曖昧な記憶があった。
0896名前は開発中のものです。2011/03/10(木) 05:50:27.58ID:6m0CA7fb
グラフィックの白い部分は濃度100%で、灰色の部分は濃度50%で描画したいんだけど、いい方法ないかな?

そうしたいグラフィックをhoge_a.bmpにして真っ白いhoge.bmpも用意してhoge.bmpのほうを描画するようにすればいいんだろうけど
あんまスマートじゃないよね。
0897名前は開発中のものです。2011/03/10(木) 06:16:14.89ID:FAQ2zmRE
それ加算合成じゃね?
0898名前は開発中のものです。2011/03/10(木) 07:04:03.90ID:6m0CA7fb
違うのよね。例えば描画しようとした場所が元々、色(255,128,0)だったら
白い所は色(255,255,255)になって灰色(128,128,128)の所は色(255,192,128)になって、黒いところは色(255,128,0)のままって感じ。
ようはアルファブレンドの濃度を画像から読み込みたいの。
DrawGraph系はそれがデフォで実現できるんだけど。
0899名前は開発中のものです。2011/03/10(木) 07:18:31.39ID:vOLR/zA1
素直に>>896に描いた通りに画像を用意するか、そういう透過度のPNG画像を用意するかだね
PictBearとかあればぐその通りのPNG生成できるし
0900名前は開発中のものです。2011/03/10(木) 07:24:22.95ID:6m0CA7fb
ああーPNGかぁ……そういえばそんなのもあったねぇ。
16色BMPしか使った事無かったからその発想は無かった。
0901名前は開発中のものです。2011/03/10(木) 07:25:05.24ID:6m0CA7fb
言い忘れた。
回答ありがとうございました。
0902名前は開発中のものです。2011/03/10(木) 07:26:03.94ID:vOLR/zA1
16色BMPっていつの時代だよw
0903名前は開発中のものです。2011/03/10(木) 07:37:10.25ID:6m0CA7fb
いやなんかこう、描いたまんまなのが保障されて信用できるっていうか。
(0,0,0)だけが透過されるってわかりやすいし。元々俺ドット絵しか描けないし。

でもPNGって色情報とその色が何ビット連続で続くかっていうデータ構造なんだっけか?
それなら見た目は変わらないだろうしそのほうがサイズ的にもいいんだよね。
いや前から気付いてたんだけどね、めんどくさいからずっとそのままでやっての、ごめん。
0904名前は開発中のものです。2011/03/10(木) 09:38:01.41ID:jQ8f/olW
PNGは基本的にはピクセルのデータをzip圧縮してるだけ
可逆圧縮だから絶対に全てのピクセルが描いたままの色になる
0905名前は開発中のものです。2011/03/10(木) 12:34:25.51ID:+yprSrry
俺も最初bmpでやってたけどpngにしたら
かなり表現したいものが楽で簡単に作れるようになった
おすすめ
0906名前は開発中のものです。2011/03/10(木) 12:35:03.98ID:+yprSrry
楽で簡単ってなんだよ…orz
0907名前は開発中のものです。2011/03/10(木) 19:59:55.15ID:6m0CA7fb
やったぁPNGでできたヨーありがと
0908名前は開発中のものです。2011/03/10(木) 20:13:25.51ID:FAQ2zmRE
PNGでドット絵というなら、pngoutっていうフリーのコンソールアプリケーションでPNGの最適化とかおすすめよ
別にしなくてもいいけど
0909名前は開発中のものです。2011/03/10(木) 20:33:30.41ID:6m0CA7fb
ということはデフォルトでは最適じゃないってこと?
まぁ情報ありがとう。
0910名前は開発中のものです。2011/03/10(木) 21:43:01.44ID:2JxcKgYY
圧縮の最適なパラメータ値を探し出すのは
わりと時間がかかるからね。
0911名前は開発中のものです。2011/03/10(木) 23:01:54.80ID:eX9JRndm
男は黙って32bitBMP
0912名前は開発中のものです。2011/03/11(金) 07:33:52.45ID:gK4E7Ao2
データーがでかすぎじゃん。
最近のゲームはDVD埋めるためにBMP使ってるとしか思えん
0913名前は開発中のものです。2011/03/11(金) 07:45:02.94ID:fDILOKgF
最近のゲームってBMPなのか?
違法コピー対策にデータ量水増ししてるという話は聞いたことあるけど
0914 [―{}@{}@{}-] 名前は開発中のものです。2011/03/11(金) 07:46:39.43ID:jcxEZYMy
でも結局実行するときには展開するわけじゃん。圧縮したまま表示できるわけじゃないし。メモリ使用量は変わらんのでしょ?展開処理が省かれる方がいいじゃん
0915名前は開発中のものです。2011/03/11(金) 08:26:21.44ID:3h44Ixvy
メモリやCPUの少ないPSとかの中期コンシューマ機はわからないけど、
そういった処理能力が十分にある最近のPCは「展開速度<読み込み速度」だと思うのよね
大きいファイルをHDDガリガリ言わせて読み込むよりは、小さい圧縮ファイルをちょいと読み込んで、
高速なメモリやCPUで展開した方が速度的には早いんじゃないかな
0916名前は開発中のものです。2011/03/11(金) 10:50:48.71ID:plaIhemI
そもそもそんなbmpとかpんg違うだけで変わってくるもんなんか
0917名前は開発中のものです。2011/03/11(金) 10:50:54.67ID:OccSvVJ3
SDカードからデータを読み込む時マップ移動でめっちゃ遅かったけど
圧縮してみたら物凄い早くなってびっくりした
0918名前は開発中のものです。2011/03/11(金) 10:56:30.82ID:LEs/Jeuf
そりゃHDDに比べて転送速度がかなり遅いのが多いからな
0919名前は開発中のものです。2011/03/11(金) 11:36:41.06ID:KcMscP0h
>>884
過去スレにそういう話が出てた。
14ヶ月ぐらい前のレスだったけど、多分
今も再生できると思う。


645:名前は開発中のものです。[sage]2010/01/18(月) 19:34:01 ID:YzUndEty

gifアニメ、
PlayMovie()で出来たはず。
0920名前は開発中のものです。2011/03/11(金) 21:37:47.82ID:plaIhemI
つい2か月前じゃんw
0921名前は開発中のものです。2011/03/11(金) 21:58:57.74ID:XN7O6btB
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0922名前は開発中のものです。2011/03/11(金) 22:06:30.00ID:7H8Pgyin
>>890だけど
結局vsync待ちするのやめて
ティアリング発生覚悟で
高精度パフォーマンスカウンタでFPS制御することにしたわ
すげー安定した
ティアリングも思ったより気にならない
0923名前は開発中のものです。2011/03/11(金) 22:41:51.60ID:TNQZ9jw4
そういえばVistaか7かでOS側がティアリング防止してるなんて話も聞いたような気がする
垂直同期信号待ちとかもうする必要なさそうだね
0924名前は開発中のものです。2011/03/11(金) 22:44:33.33ID:7H8Pgyin
>>923
らしいね、オレはXPだから関係ないけどな〜
どういう仕組みでティアリング防止してるんだろ
0925名前は開発中のものです。2011/03/11(金) 22:50:03.08ID:TNQZ9jw4
ちょっと調べた感じだと、単純に1フレーム遅らせてるだけみたい
Vistaでマウスの位置に画像を表示するだけのプログラム動かすとちょっと遅れて付いて来てるような感じを覚えてるなそういえば
0926名前は開発中のものです。2011/03/11(金) 22:54:16.60ID:2Fw05PYB
DWMは画面全体をゲームの画面と同じように描画するんだよ
DXライブラリの言葉で説明すると、まず各ウィンドウをそれぞれ別々のグラフィック(テクスチャ)に描いて
それをDrawGraphで裏画面に描画した後、垂直同期待ちを行ってから表示する
0927名前は開発中のものです。2011/03/12(土) 11:21:42.70ID:9O79jOON
管理人さん無事みたいだな
0928名前は開発中のものです。2011/03/12(土) 11:26:31.82ID:f65tMTTN
おお、よかった
0929名前は開発中のものです。2011/03/12(土) 11:37:26.12ID:o3j8l5hp
よかたよかた
0930名前は開発中のものです。2011/03/12(土) 11:59:56.06ID:yD3YkCG3
ふう
0931名前は開発中のものです。2011/03/14(月) 22:40:22.44ID:gNx4XTy2
流れぶったぎったうえに初心者で申し訳ないんですが、質問させてください。

アクションゲームを作ろうと思っているんですが、
CheckHitKey関数でキー情報を取得→ベクトルで座標計算
という風にすると左キーと右キーを同時押しした時に
右と左に同時に座標が計算されて、キャラが静止してしまいます。
これを回避するにはどうすればいいでしょうか?
まだポインタも理解していない程なので理解力が低いかもしれませんが、
よろしくお願いします。
0932名前は開発中のものです。2011/03/14(月) 22:45:54.96ID:UnZDECUY
静止しちゃまずいのか?
どう動いて欲しいのかを書かない限り「どのコードも正しい」
0933名前は開発中のものです。2011/03/14(月) 22:55:43.30ID:gNx4XTy2
>>932
すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。
0934名前は開発中のものです。2011/03/14(月) 23:06:54.10ID:TbizatYE
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる
0935名前は開発中のものです。2011/03/14(月) 23:13:39.89ID:gNx4XTy2
>>934
アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!
0936 [―{}@{}@{}-] 名前は開発中のものです。2011/03/14(月) 23:21:23.20ID:E5S/TLVJ
while(1)
{
  old_left_key_state = left_key_state;
  old_right_key_state = right_key_state;

  if(CheckHitKey(LEFT_KEY)){ left_key_state = PUSH; }
  else{ left_key_state = RELEASE; }
  
  if(CheckHitKey(RIGHT_KEY)){ right_key_state = PUSH; }
  else{ right_key_state = RELEASE; }

  if(left_key_state == PUSH && right_key_state == RELEASE){ press_key = LEFT_KEY; }
  if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
  if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }

  if(left_key_state == PUSH && right_key_state == PUSH){
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
  }
}
0937名前は開発中のものです。2011/03/14(月) 23:54:12.21ID:gNx4XTy2
>>936
コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。
0938名前は開発中のものです。2011/03/15(火) 00:03:07.27ID:X3tKRN+k
ttp://dixq.net/rp/2.html
これの値でかいほうにすりゃいんじゃね
0939名前は開発中のものです。2011/03/15(火) 03:26:20.84ID:DqTTW319
これ関係ないキーまで256回もチェックするのが気になるのだが
256回程度じゃ問題ないという考えなのか

あとその上の奴は4塊目
普通
else if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
else if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
入れるもんじゃないのか

もしそうするとその次の
if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう

それとその後の
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
だが
left_key_state == PUSH && 、right_key_state == PUSH && いるかね
こまけえこたあいいんだよ?
0940名前は開発中のものです。2011/03/15(火) 06:05:58.86ID:xbXr2Nkf
>>939
「これ」とか「その」とかってなんだよ、ちゃんとどこか安価でもしろよ
答える方に探せってか?
幸いレスが近いから>>936のことだろうって分かるけどよ
あと4塊目ってなんだよ、そんな言葉初めて聞いたよ

簡単な例示のプログラムなんだから
こまけぇこたあいいんだよでおkだろ
おまえの言ってることはあってるけど、動作的には同じだろ?
条件を明示的にわざと条件を冗長に書いて
コードの可読性を上げるという意味はある
nに1〜4までしか入らないswitch文でも
switch(n){
case 1: break;
case 2: break;
case 3: break;
default: break;
}
とは書かんだろ?

>これ関係ないキーまで256回もチェックするのが気になるのだが
全部のキーを調べないと汎用性がないだろ
もし、使いたいキーが増えたらその都度増やすのか?
べつにそれでもいいけどさ
あと、普通はGetHitKeyStateAll使うだろ
0941名前は開発中のものです。2011/03/15(火) 09:09:53.01ID:DqTTW319
普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ

あと安価付けるの照れ臭いんだ
察してくれよw

4塊目ってのは言い方が思い付かなかったんだから分かるだろと思って俺が勝手に作ったんだよ
分かるだろ?w
まあ何か言い方はあるんだろうけどすぐに思いつかなかった
まあそれだけのことだw

明示的にわざと書いてとは言うがこの場合は書かなくても分かると思ったんだよ
まあ人それぞれだろうが

全部のキーを使わないと汎用性ないだろとは言うがだからといって256個も使うわけねえだろって思ってw
大体方向キーとボタン数個だけだろ、使うとは言っても
いくら汎用性がないとはいえ調べる必要ない奴の方が圧倒的に多いのに256個もチェックする必要があるかねって思っただけw
0942名前は開発中のものです。2011/03/15(火) 09:12:40.30ID:gnI9eXa6
0943名前は開発中のものです。2011/03/15(火) 09:14:29.72ID:DqTTW319
だから
> if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう
は置いといてもだ

>     if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
>     if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }

> left_key_state == PUSH && 、right_key_state == PUSH &&
はすぐ上に同じ条件があるんだからいるかね?って思っただけ

まあ別に大した問題ではないんだけどねw
それでも細かい俺は気になったの
細かいこと気にし過ぎ?w
0944名前は開発中のものです。2011/03/15(火) 09:23:09.01ID:7Ujss6hx
まぁ情報が少なくて困るよりは、
教科書どおりの良い情報と、流し見でいい発展情報とがあるほうが、いいんでないかい

教科書と発展とが混ざってわからなくなると困るけど、そこはみんな
鋭くツッコミ入れてくれるところだしな
0945名前は開発中のものです。2011/03/15(火) 09:34:29.08ID:xbXr2Nkf
>>943
気にしすぎ
あとイチイチ語尾に芝はやすのうざい
真面目にレスする気なくす

>普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
言えよ

>あと安価付けるの照れ臭いんだ
>察してくれよw
ムリ

あとはコーディング規約をどうするかって話だけだ
そこは人と場合それぞれで明確な解答はない
以上、もうお前にはレスしない
0946名前は開発中のものです。2011/03/15(火) 09:47:22.67ID:LRL3QteV
bool Input::KeyDown(BYTE key)
{
return (m_keyInput[key] & ~m_keyInputPrev[key]) == 1? true:false;
}
俺は上みたいにしてるよ
前フレームのをmemcpyで配列毎コピーすれば良いと思う
0947名前は開発中のものです。2011/03/15(火) 10:12:36.70ID:DqTTW319
>>945
今回は敢えて言う必要ないかなと思っただけだよ
レスしねえなら最初っからすんじゃねえカス
0948名前は開発中のものです。2011/03/15(火) 10:35:06.21ID:sVXS+gQF
相手からの反論がないならと安心して罵倒か
カスはお前だろw
0949名前は開発中のものです。2011/03/15(火) 10:47:54.36ID:xUaeA1H3
>あと安価付けるの照れ臭いんだ
>察してくれよw

無茶言うなw
0950名前は開発中のものです。2011/03/15(火) 16:58:39.83ID:18Xm69u5
プリコンパイル済みヘッダって、DxLibくらいじゃ効果薄いよね?
0951名前は開発中のものです。2011/03/15(火) 17:11:32.96ID:KXScCzgE
とある人の受け売りだけど、VCにてビルドを超高速化する方法

自作のヘッダファイルにはインクルードガードを施す

cppファイルを1つを除いて全部「ビルドから除外」する

そして、その1つのcppファイルにそれら「ビルドから除外」したcppファイルを全部インクルードする

ビルドする

サラマンダーよりはやーい

プリコンパイル済みヘッダはシラネ
0952名前は開発中のものです。2011/03/15(火) 17:14:05.00ID:fAuDpb2f
>>951
最後なんなんだよ。
俺とやる気か?あ?
0953名前は開発中のものです。2011/03/15(火) 18:01:11.55ID:nteT3Zz7
>>950
めっちゃ早くなってるよ
アホだから設定苦戦したけど。
0954名前は開発中のものです。2011/03/15(火) 19:05:01.55ID:QQAoE1bu
>>951
それって1ファイル書き換えただけで全部の.h/.cppをコンパイルし直すことにならないか?
0955名前は開発中のものです。2011/03/15(火) 19:44:40.83ID:KXScCzgE
>>954
よっぽどの量でない限り、一つのファイルのコンパイル速度はコード量に左右されないよ
ビルドで時間使ってるのはプリプロセスやobjのリンクで、それをすっ飛ばせるとかなり早くなる
cppが多いプロジェクトを書き換えると感動すると思うよホント
正直今まで人に教えるのを勿体無いと思ってたレベル
0956名前は開発中のものです。2011/03/15(火) 20:12:52.73ID:Q7+nM0HN
つうか、普通にそういうのオフに出来るオプションあるんじゃないの?
いや、詳しくは知らんけど。
0957名前は開発中のものです。2011/03/15(火) 20:32:14.80ID:xbXr2Nkf
>>951
includeの順番間違えて
ビルド出来るようにするまでちょっと戸惑ったけど
むっちゃくちゃ速くなった、ありがとう
0958名前は開発中のものです。2011/03/15(火) 20:38:02.64ID:hTtiuP+j
#includeでcppか……違和感はあるな
0959名前は開発中のものです。2011/03/15(火) 21:01:01.48ID:44jcDk3e
LL系言語のloadfileみたいだなw
0960名前は開発中のものです。2011/03/16(水) 15:22:41.05ID:ywftU18L
理に適ってるかどうかは置いといて、非合理的ではある
0961名前は開発中のものです。2011/03/16(水) 16:22:15.68ID:zS54Nj1q
なぜ非合理的なのでしょうか?
0962名前は開発中のものです。2011/03/16(水) 16:25:58.79ID:zS54Nj1q
つか、理にかなってないかわからないけど
非合理的って矛盾してね?
0963名前は開発中のものです。2011/03/16(水) 16:26:24.95ID:do/XMJJp
合理的かどうかは知らんが、スピードを優先するために何かを犠牲にするって話だよね
何かってのは例えば>>957がたどったような手間とか
0964名前は開発中のものです。2011/03/16(水) 18:52:54.43ID:UW09KiLI
>>963
オレがその>>957だが、ビルド出来るようにする手間より
ビルドにかかる時間の短縮のほうがでかかったよ
すげ〜得した
>>955の言うとおりcppファイルが沢山あるプロジェクトほど効果はデカイ
>>960のレスこそ非合理的って話だな
0965名前は開発中のものです。2011/03/16(水) 18:53:19.02ID:gTLtkOfi
まぁぶっ飛んだ裏技的やり方だからね
C++の仕様を理解できてコードの依存関係を頭の中でちゃんとイメージ出来る人だけ
楽する手段としてつかって欲しい感じ
0966名前は開発中のものです。2011/03/16(水) 19:07:37.43ID:BjnjOb1q
このやり方を支援するプラグインがあればいいのにな
0967名前は開発中のものです。2011/03/16(水) 19:17:41.84ID:i6gMh4cT
てか、俺からしたらそんなにビルドに時間がかかるほどのゲームを作ってる人がいるのに驚きだ。
しかもDXライブラリを使って? いったいどんな規模のゲームなんだ。
0968名前は開発中のものです。2011/03/16(水) 19:17:48.09ID:BC+pXFRw
デフォでオフだけど並列でビルドするオプションがある
すごく早くなる
0969 [―{}@{}@{}-] 名前は開発中のものです。2011/03/16(水) 19:31:14.46ID:wm2Br6SF
// main.cpp
#include <stdio.h>

#include "sub_1.cpp"
#include "sub_2.cpp"

extern int get_sub_1_val(void);
extern int get_sub_2_val(void);

int main(void)
{
  printf("sub_1_val: %d\n", get_sub_1_val());
  printf("sub_2_val: %d\n", get_sub_2_val());
  return 0;
}

// sub_1.cpp
static int val = 10;
int get_sub_1_val(void){ return val; }

// sub_2.cpp
static int val = 20;
int get_sub_2_val(void){ return val; }

sub_2.cpp(1) : error C2370: 'val' : 再定義 ; 異なるストレージ クラスです。
sub_1.cpp(1) : 'val' の宣言を確認してください。
0970名前は開発中のものです。2011/03/16(水) 19:47:41.09ID:zS54Nj1q
なるほどね
Cだと駄目だね
無名空間とかもそうなるのかな?
0971名前は開発中のものです。2011/03/16(水) 19:50:17.06ID:gTLtkOfi
>>967
そんな大規模じゃなくてもcppファイルが多くて…… STGなんだけど、
自作計算関数、自作システム関数、保存データ管理関数、敵クラス、弾クラス、その他オブジェクトクラス、
ゲームシーンクラス、メニューシーンクラス、リソース定義……とか
全体の行数はたった6000行ちょい(空改行除く)

>>969
extern宣言してないグローバル変数の衝突は仕方ない……
てか考えると思ったよりも問題の出るケース多そうね……
0972名前は開発中のものです。2011/03/16(水) 20:02:03.60ID:1Ae82QgD
>>968
教えてくれてサンクス
一瞬で終わって驚いた
0973名前は開発中のものです。2011/03/16(水) 21:19:17.62ID:tAHP0ur9
全体の行数ってどうやったら数えられるんだっけ?
0974名前は開発中のものです。2011/03/16(水) 21:19:47.26ID:tAHP0ur9
書き忘れた、もちろんVCの話で…
0975名前は開発中のものです。2011/03/16(水) 23:33:53.97ID:do/XMJJp
行数カウントツールが、フリーソフトページにあるよね

並列ビルドはぐぐったけど見つからなかった
複数プロジェクトを同時ビルドってのは初期値が2で最大値が32みたいだけど、これは違うよねきっと
0976名前は開発中のものです。2011/03/17(木) 01:14:09.79ID:jlNSzrqd
VCに「複数プロセッサによるコンパイル」という項目がある
0977名前は開発中のものです。2011/03/17(木) 04:33:38.84ID:FsTg2Syb
プロジェクトのプロパティ>構成プロパティ>C/C++>全般>複数プロセッサによるコンパイル
だな
VC++2010にはあるけど、VC++2008には無いみたいだな
0978名前は開発中のものです。2011/03/17(木) 21:28:02.94ID:USLN5jlJ
2008なら/MPオプションを直接与えればいい
0979名前は開発中のものです。2011/03/23(水) 01:22:18.41ID:BguXpQI+
画面上にクリックできるボタンを表示するのってどうしたらいい?
GetMousePoint で、マウスがボタンの位置にあるときにクリックしたらボタンを押したことになるようにする?
0980名前は開発中のものです。2011/03/23(水) 06:04:44.61ID:vGu+J6dj
むしろマウス位置取得とかクリック検知以外の方法でいいのあるならおせーてほしい

クリックした瞬間マウスポインタがボタン範囲内で且つそのまま範囲から出ずにリリースしたら動作→ネットブラウザとかのリンク
クリックした瞬間マウスポインタがボタン範囲内で且つ範囲内でリリースしたら動作→Janeの書き込むボタンとかのGUIに多いボタン
クリックした瞬間マウスポインタがボタン範囲内なら動作→ネットブラウザとかのタブ切り替えみたいな部分
クリックした瞬間マウスポインタがボタン範囲内でかつリリースしない間動作→ドラッグ、リリースした瞬間→ドロップ
クリックした瞬間マウスポインタがボタン範囲内でかつリリースしない間、範囲内にマウスポインタがあるとき動作→ボタンの押されてる画像

クリックした瞬間、押してる時、リリースした瞬間、とそのときのマウス位置のボタン内外、の組み合わせで色々なボタンが出来るようにしてる。
一度作っちゃえばいいんだけどややこしかばってん。
0981名前は開発中のものです。2011/03/23(水) 14:29:41.24ID:eQUXn6+m
そんな特殊な操作を細かく識別する必要がある時点で、コモンコントロールのボタンなんかどうせ役に立たない
ボタンからマウスカーソルが出たとかいろいろイベントはあるけど、余計に複雑になるので自前で調べた方が早い
だいたいそんなもんDXライブラリで作るのが間違ってる
MFCとかC#とかでやれ
0982名前は開発中のものです。2011/03/23(水) 14:55:42.92ID:fvm4gyRB
なんでコモンコントロールの話が?
0983名前は開発中のものです。2011/03/23(水) 15:02:00.14ID:IIbgoWBK
たったそれだけのことで言語乗り換える方がアホだろw
0984名前は開発中のものです。2011/03/23(水) 21:42:44.75ID:o1md/rGP
たいして複雑じゃないだろww
0985名前は開発中のものです。2011/03/24(木) 03:30:37.75ID:RCGNG7hY
ややこしいとは思わんけど、ボタンクラスは一回作っておくと便利そうだな。
レス数が950を超えています。1000を超えると書き込みができなくなります。