ゲームプログラマ志望が福岡で叫ぶ 『絶望』 -4ページ目

ゲームプログラマ志望が福岡で叫ぶ 『絶望』

プログラマーになりたい!!!!! あ、風のうわさで聞いた最近若者で流行っているトゥイッターなるものを始めてみました (・ト・) @toshi_desu_yo

はい。 サボりです。


5月なんてなかった。

そう、無かったんです・・・






というか、仕事が忙しくなる前に『しばらく更新出来ません!!』ぐらい書いていくべきなんだろうけど・・・


これじゃあただ逃走しただけじゃあないか!! まぁそうなんですけど




はい!

これを書けるということはもうそろそろお仕事もゆるゆるになりそうなのでまた再開して行きたいとおもーます。


というか、一行でもいいから毎日続けるべきなんだろうけど、3日ぐらい更新しなかったら自分の不甲斐なさに ( ゚∀゚)・∵. グハッ!! っっとなってブログ自体開かなくなるという意味不状態になってしまいますwwww




この一ヶ月ちょっとで Android を揉みしだいて 簡単なゲーム作成も、OpenGL ES もなんとなく出来るようになりました・・・


Androidどころか Java も触ったことなかったのに、、、仕事って怖すぎぃ!!




現在のAndroidが終われば 僕の大好きなワイフ、 Windowsプログラミングに戻れそうなので頑張りまs!


ブログも頑張ります・・・   |彡サッ


現在トレンドな

Windows 8
デスクトップアプリケーションを作成中において、、、




Windows 8 になって革新的で分かりやすい技術といえば・・・・





タイル状のUI





タ ッ チ パ ネ ル。 

コレですね。



Windows 7 が出た時と違い、スマートフォンやタブレットが復旧しまくったおかげで
ユーザーのタッチパネルへの抵抗が減り、


メーカーもタッチパネル対応のディスプレイをどっきゅんどっきゅん出してます。




何時かは


 
”タッチパネルで女の子にお触り!
  イチャイチャんふんふ しようっ!☆☆( R18 )☆☆”





というゲームが出てくるのではないかと今からワクワクと鼻血が止まらなくなっております。



やっぱり今の時代、
 デスクトップでもタッチでゲームを作成したい所です。


マウスと違い、


・マルチポインタ
・直感的な操作


が可能!!


そして、スマートフォンと違い

ハイスペック、大画面でゲームや操作ができます。




そしてキーボードも同時に操作が可能。




夢が広がりますな!!

未来のエロゲーは安泰じゃ!!!( `ハ´)






で、

開発中にタッチイベントの取得に関して迷いに迷って爆発して


(^ω^)ペロペロ したので、書き留めたいと思います。





*************************************
*************************************


【タッチイベント】



まず、Windows 8 だと、、、



取り敢えず
ドライバインストールや特別なことをしなくても従来のアプリをタッチで操作出来ます。


ちょっと驚きました。



画面をタッチして離したら


マウスのイベントである


WM_LBUTTONDOWN
WM_LBUTTONUP が呼び出されてやがります。




『へー! タッチがマウスの代わりになるのか!
 じゃあ従来の方法のままでいけんじゃーーん!!』







 ウルセー!!(((((;`Д´)≡⊃)`Д)、;'.・





まぁ、そうもうまくいくはずがなかろうみとこうもんですね。



まず、↑で

『 画面をタッチして離したら
 WM_LBUTTONDOWN と WM_LBUTTONUP のマウスイベントが呼び出される』


と書いてますが、



この通りで、


画面をタッチした時に WM_LBUTTONDOWN イベントは呼び出されない。



画面を話した時、またはタッチした指を動かした時に




 WM_LBUTTONDOWN → WM_LBUTTONUP




 WM_LBUTTONDOWN → WM_MOUSEMOVE


順に呼び出されます。





つまり、画面にタッチして、動かさず、離さずの場合、



なーんにもイベントがプロシージャに来ません。



これ・・・

 超悩みました・・・・




タッチした時に何も起きないので


 !?!?!?!?!?(゚д゚)?!???!!??



となり、

ユーザーの中にはもちろんそれに対して疑問を持つ人がいるので
どうにかしなければならないと躍起になりました。




残念なことに、まだ Windows 8 の情報が少ないのか

ネットに中々情報がない(´;ω;`)



で、半ば諦めかけた所、 MSDN に情報がありました!!



【 (URL) Message


英語だわ- 超英語だわ-


でも、なんとなく分かりますしコチラにはグーグル先生が付いているので大体解決しました!







まず、タッチされた時には



WM_POINTERDOWN メッセージが、




タッチアップの時は


WM_POINTERUP メッセージ、




タッチして動かしたときは

WM_POINTERUPDATE メッセージがプロシージャに来るそうです。





後のメッセージは使いたい人が使う感じ。 基本はコレ。




あと、嬉しいか嬉しくないかはわかりませんが、

デフォルトでマルチタッチ対応らしく



同時に ぶわっっと画面にタッチした場合、

タッチした指の本数分 WM_POINTERDOWN メッセージが来ました。







しかし!!


今回作ってるのはマルチタッチ非対応・・・(´;ω;`)

マルチタッチ対応させるとイベントが複数呼び出されて表示がおかしくなる・・・



普通はマルチタッチを考慮した上で開発すべきでしょうなぁ。。



で、
どうにかマルチタッチを非対応にしたいと思い色々と検索。。。。



なんかポイントした情報を取得できるやり方が↓のサイト様に載ってた



【 (URL ) HEY! English!!!



【 (URL) GetPointerInfo

【 (URL) PointerInfo 構造体




これがですねー 64bit アプリケーションだと動かなかったんですわ-

よくある


未解決のシンボル うんたらなんたら

おそらくは ライブラリが足りないのだろうと思いますが、よくわからんー



これで色々とポイントした情報が取得できそうなんですが・・・・


こちら、
まだ32bitでは試してないので、32bitで色々とやった結果を後日また書こうと思います。





なので今回は他のやり方を探してみました。






   あ っ た ( ゚д゚ )


【 (URL) WM_POINTERDOWNの下の方に怪しい記述を発見!



↓ これ





IS_POINTER_PRIMARYBUTTON_WPARAM



PRIMARY・・・     最初!( ゚д゚)ハッ!




これや!! ワイみつけたったで!!

と、半信半疑で実行してみたら・・・




できた。


つまり、こいつに
wParam を入れたら 最初のタッチイベント情報のみ true を返すっぽい




しかも嬉しいことに、

後から指をタッチして動かしたり離したりしても



最初の指が画面にタッチされてる限り false を返す。


true を返すのは常に最初にタッチした指に対してのみ。




便利すぐる・・・////



いやはや、なんとかこれでシングルタッチ対応が出来ました。


後は、 
Windows 7 からあった、 ”ジェスチャーの対応” とかもあるみたい。


ピンチアウト、インとかの指の動きを一々自分で解析しなくても

ある関数に通すだけで、 マイクロソフト が決めている動きならば、『~のジェスチャーですよ-』と返してくれるらしい。



これを組み込んだら簡単に楽しいゲームが作れそう。


今回はたまたまシングルタッチ対応だったので、マルチタッチでゲーム作りたい!!

作りたいよ!!!





現在、仕事の関係で23インチのDELL製タッチパネルを使わせてもらってます。

正直とても良い・・・(u_u*)



すんげー綺麗だしタッチ反応も良い。

マルチタッチは10本まで対応とスマホの比じゃない。


そして画面がでかいことによる迫力がパない。





『windows 8 でタッチ?www にわかかよwww』 
と思ってるみなさん。



これ、デスクトップでもタッチの未来が来ますよ。


タッチパネル対応のアプリケーションが充実してきたら明らかにマウスより使い勝手良くなる。


まずタッチパネルだったらペンタブ要らないし。




オススメしますよタッチ可能ディスプレイ!!!





という、宣伝です。 はい。 





【結論】

お触りゲーはよ!!!


ふぅ~・・・


来週の日曜日、つまり14日にお引越しを実行しなければいけないというのに

全然準備できてなくてちょっと焦ってる私です\(^o^)/


準備したのはダンボール二箱!!

残ってる荷物は無限大!!!


平日は仕事!

土曜も仕事!!!!





   積  ん  だ  ・・・


取り敢えずダンボール欲しい。

最悪パンツとティッシュさえ持っていけばいいかなと短慮な振る舞いをしております。


そして今現在は仕事も終わり、ランニングも終え
キャベツと玉ねぎを水で晒して鰹節を乗せ、お酒を飲みながら気持よくブログを書いております。



いやー・・・


酒ですな・・・・ 酒がやっぱ至高やで・・・


酒がないとやってられない。。


新玉ねぎUMEEEEEEEEEEE!!!!!!!!!!!!!


程よい酸味がいいアクセント。

柔らかくて甘い(´∀`*)



そして、酒を三本目に突入しようかどうか思い巡らせてます。




酒うますぎ。

酒と女さえあれば何もいらないと何処かの歌詞で見たことがありますがまさしくそうですな。

僕はそこに、金があればもう何も言いません。



所詮金ですけどね。




金欲しいいいいいいいいいいいいいいいいいいい!!!!! 

うわああああああああああああああ!!!!!

おっぱあああああああああああああああああああああいいいいいいいいいいいいい








【(URL)15歳少年を8日間連れ回す…30歳男逮捕 


少年(15)を8日間にわたって連れ回したとして、警視庁愛宕署が、横浜市港北区小机町、無職杉山英律容疑者(30)をわいせつ目的誘拐容疑で逮捕していたことが、同署への取材でわかった。



┌(┌ ^o^)┐




ほもかよ( ゚д゚ )



YABEEEEEEEEEEEEEEEEE!!!!!!!!!!!

最近ホモネタ多くないですかねぇ!?(驚愕)




な~にが楽しくて男に走るんだか。。

しかし、昔の偉人たちはホモだらけだとか。


ここは一躍有名になるためにもホモに・・・・       無理。





僕のブログに 【 iPhone OpenGL 】 や 【 ios OpenGL 】など、

で来てくれる方がたくさんおり、本当に嬉しいです。



確かに



『iPhone で OpenGL ES の記事あまりないな- 
  ・・・これは書いたらgoogle検索来るか!?』



と思って、腹を黒くして書いてみたわけですが、正直ここまで来てくれるとは喜色満面でござりますm(_ _)m



しかしあれですよ。


最近、
iPhone について、ほぼ更新してないっていうね。。。。




結構 OpenGL ES は頑張ってみたのでそれなりに書くことはあるんですが・・・



そう、


『PMD フォーマット を使って
      iPhone で 3Dモデル描画!』



これを書きたい。

自分自身も忘れかけててヤバイので、すんごい書きたい。


そしてアクセス数を稼ぎたい。




その前に 3D について云々も書きたい。




うわああああああああああああああああああああああああああ!!!!!!!!


取り敢えず iPhone で 3D!!

これを近日中に書いていきます!!!!(乞食)


→ 未定





やっぱりアクセス数が多くなるとうれしくなるんですよ(´∀`*)



さぁ やって来ました見てらっしゃい。



DirectShow のエラー報告ですよ!





DirectShow を


【Release】【64bit】ランタイム で

【D3DPOOL_DEFAULT】【D3DUSAGE_DYNAMIC】
で動的テクスチャにして


ムービーをテクスチャに貼り付けると・・・






メモリアクセスエラーが出た。


もし、テクスチャが【 D3DPOOL_MANAGED 】だとメモリアクセスエラーは出ない。



しかし、

前日
動画は動的テクスチャのほうが良いと学んだばかり。



ずっと D3DPOOL_MANAGED で作ってきた DirectShow を改造しようとしたらダメでした。



何がダメなの-・・・ ( ゚д゚)、ペッ 

っと心麗しく悩んでいました。



『1920x1080 のムービーでフルスクリーンだから無理なのかな・・・』


と思い、ウィンドウモードでしてもダメ。  神は無慈悲なり・・




しかし、、、、




サンプルは同じ設定で出来た。
↑ココ重要。




 で き ん の か よ( ゚Д゚)

希望の光どころか自分の情けなさに涙がちょちょぎれた。




で、さんざん悩んだ所・・・





サンプルの CreateDevice の所で見慣れないものが・・・



g-pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, 
D3DCREATE_SOFTWARE_VERTEXORICESSING | D3DCREATE_MULTITHREADED , &d3dpp, &d3dDevice );




ん???


D3DCREATE_MULTITHREADED


??????


調べてみると



『マルチスレッドを安全に行うフラグ』

らしい。


マルチスレッド? 使ってないよ。


と思い、 何故か SOFTWARE の方に目が行き、 


『えー・・・  HARDWARE じゃだめなのか・・・』


と、勘違いして → 実行 ↓



   落  ち  る




( ‘д‘⊂彡☆))Д´) パーン



そうですね。 D3DCREATE_MULTITHREAD を指定するのが正解みたいです。


おそらくは DirectShow はどこかでマルチスレッドをしやがってて、



"描画がまだ完全に成功していない"のにテクスチャを触ってるからメモリアクセスエラーが出ていた。


と考えるのがしっくりちっくりちくびんびん来ました。




D3DCREATE_MULTITHREADED


は 『マルチスレッドを安全に行う』フラグ。



恐らく、

描画時等でテクスチャを触ってる時は、 テクスチャLOCK を自動的に待ってくれるのでろでろ。

だからテクスチャ書き換え時、メモリアクセスエラーが出ない。




あー・・・ なるほど・・・・


そう思った。 それだけです。


ここは見てなかった _| ̄|○




--------------------【追記】--------------------

なんで D3DPOOL_MANAGED だとメモリアクセスエラーが出ないか考えてみた。



D3DPOOL_MANAGED
 VRAMにも、システムメモリにもリソースを取る。



つまり、、




描画時はVRAMを使っている。


そして、


テクスチャ書き換え時はシステムメモリのリソースを使っており、
書き換え終了後、 システムメモリのリソースをVRAMに移してる。 → そして描画。



D3DPOOL_DEFAULT は VRAM にしかリソースを取らない。
   → 同じ所を触ろうとするので、描画中にもかかわらず
      テクスチャを書き換えようとアクセスしてエラーなう!!





マルチスレッドを美味くかわしてやがるぜこいつ!!( ゚д゚ )





考えてみたらなんてことなかったけど、今までは危ない橋を渡っていたんだな・・・


やっぱりリソース管理を勉強してよかった。







【結論】


やっぱり D3DPOOL_MANAGED より、 D3DPOOL_DEFAULT の動的テクスチャにしたほうがパフォーマンス良くなりました(笑)