2015年10月02日

directXのウィンドウサイズ変更後の比率

directxでウィンドウサイズを変更すると画像が伸びたり縮んだり困ったことになるんですよね
これを回避するためにはバックバッファサイズを変更後のウィンドウサイズに合わせてやるといいみたい
はじめからフルスクリーンサイズでdirectXを初期化させておいて、あとでウィンドウ変更させるときに
そのバックバッファサイズを変えてやるとdirectXの解放と初期化処理を省けるわけです

http://hsp.tv/play/pforum.php?mode=pastwch&num=58920
暇人さんがウィンドウサイズ変更のサンプル作ってくれていたので
hgresetの解放処理とフルスクリーンの設定などを省くと、バックバッファサイズだけ変更でき
比率を維持してウィンドウサイズ変更が可能となります

おかずの友はウィンドウサイズ変えるときに、directXの初期化させていたのでテクスチャを再度作り直したり
手間かかってたんですよね、ラグもはっせいするし(重大)
このバックバッファサイズ変更処理を取り入れたとしても
常にフルサイズの描画をさせることになるので描画処理にどう影響するかはまだわかりませんね…

追記
http://wisdom.sakura.ne.jp/system/directx/dxg4.html
IDirect3DDevice8::Reset() デバイスリセットだけ使えば目的が達成できるっぽい
暇人さんサンプルのIDirect3DDevice8_GetViewport部分省いていいかも

追記
基準ウィンドウサイズより大きくしてテストしてた、基準サイズよりウィンドウを小さくする目的なのに…
それで基準サイズより小さくしたらポリゴンがウィンドウサイズに合うように変更される…振り出しにもどったわ
でもhgrotateなど2Dの直接描画はサイズがきちんと表示されている
ポリゴンと2Dでなんでこう変わるのかわかりませんが
必要なのは2Dの直接描画だけなのでこれでいいかな…

追記
どうやらhgimd3のhgviewが3Dの描画範囲に悪さしてるみたい、2Dのほうには介入してないみたいだから一安心…
詳しく言うと、hgviewで設定した描画範囲がウィンドウサイズ以上だったら強制的に
ウィンドウサイズに合わされるようになっているっぽい


posted by 26℃ at 12:27| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

サムネイル

ビューアの機能に取り入れるかは未定だけど興味あるんだよなあ
GDI+でサムネ画像作成方法
http://www.atmarkit.co.jp/fdotnet/dotnettips/559thumbnail/thumbnail.html

追記
WS000010.JPG
うまくいけた、サムネイルで小さいサイズを取得した後にわざっと引き延ばして表示してみた
元の画像は4kサイズのやつ、画像ロードが遅れるときにサムネを引き延ばして表示させるのもいいかもしれない
posted by 26℃ at 01:24| 福岡 ☔| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2015年10月01日

次回バージョン

おかずの友を公開して1カ月余りたちますがあんまり好感触でもないので
これまでの方針を変えてビューアのシンプルさを押し出してみようかなと思う
画像が弾むとかカーソル変えれるとか変態要素は裏機能として表にださないようにしたい

win標準のフォトビューアはファイルの並び順で表示していけるのですが
この機能を搭載したビューアってないんですよね、自分でその機能を取り入れようと思ってわかりましたがかなり難しい
win7あたりからエクスプローラの仕様もかわっているので並び順の取得が容易じゃなくなってました
うまく実装して次回の目玉機能としたいな(地味)
posted by 26℃ at 23:12| 福岡 ☔| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2015年09月30日

hspのメソッドindex値の求め方

index値の求め方を自分なりに考えてみた
メソッドを探すのでなくまずはインターフェースから探します
googleの検索ワードは""で囲む、これで余計なものは引っかからない
例えでインターフェースIServiceProviderを探すとすると
"struct IServiceProvider : public"として検索する
すると、外国のサイトに落ちてる.hヘッダファイルが高確率でヒットするのでそれで継承などindex値を求めていく

: publicの横には継承のクラス名が必ず表示されますIUnknownが継承されていたらindex値は3以上から設定されていることになりますIUnknown以外のクラス名が表示されていたらそのクラス名を検索する必要があります
posted by 26℃ at 16:31| 福岡 ☁| Comment(0) | モルモットの戯言 | このブログの読者になる | 更新情報をチェックする

#comfunc

#comfuncでメソッドのindex値を探すのが鬼門すぎる、継承とかなんとかで値が加算されてるから
ソースファイルみてもわからん。けっきょく1ずつ値ふやして望みの結果がえられるまで値を探すことに…
継承されているのをさかのぼって数えればすこしは楽になるかもしれん

ちなみに探してたメソッドはIWebBrowserAppのget_HWND、index値は37でした
37回トライアンドエラー、先が思いやられるね
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/!!MEMBERTYPE_Methods_SHDocVw_IWebBrowserApp.html
posted by 26℃ at 12:36| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2015年09月29日

フォルダ

フォルダ、エクスプローラのことだけどそのファイルの順番を取得しようと方法を探し出したら泥沼に陥った…
情報がねえ、あったけどwin7から糞仕様になってる
posted by 26℃ at 23:47| 福岡 | Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2015年09月27日

おかずの友 ver1.4.17

分割のときに左から表示のみでしたが、日本の右から読む漫画なども考慮してマイナス値を分割数に設定すると
右から表示するようにしました
ひとまずこれにて開発終了します
okazunotomo_1_4_17.zip
posted by 26℃ at 12:12| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

おかずの友 ver1.4.16

gifの再生速度をブラウザに近づけるためFPSを50固定にしました、そのために大幅な仕様変更を行いました
更新内容
・FPSを50に固定しgifアニメをスムーズに表示できるようにしました
・スライドショーの待ち時間を秒単位に変更しました、1秒から999秒まで設定できます
・メニューの内部処理を修正
・最大化したときに分割数が増えるバグを修正
・カーソルの倍率を変えたあとに、画像を分割すると発生するバグを修正
・分割1/1にしてもタイトル文字が変わらないバグを修正
注意:スライドショーの待ち時間を秒単位に変更しました、以前はフレーム数なので値の大きさがまったく違います
http://oirahakobito.up.seesaa.net/image/okazunotomo_1_4_16.zip 
posted by 26℃ at 03:13| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2015年09月26日

hgimg3の待ち時間

hgimg3でFPSを固定化させようとして気づいたのですがawaitの精度が落ちてる
#include "hgimg3.as"これをインクルードするだけで設定が変わるみたいですね
とりあえずtimeBeginPeriod関数を使って精度を戻すことにしました
HSP掲示板見てると普段は流し読みしてるとこに重要なことが書かれてたりする
posted by 26℃ at 17:00| 福岡 ☀| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

おかずの友1.4.15

バグ修正完了、swfとgifの再生速度がおかしかったので仕様変更しました
http://oirahakobito.up.seesaa.net/image/okazunotomo_1_4_15.zip 
posted by 26℃ at 10:33| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

timer

SetTimerを複数使うのもよくないっぽいな…
posted by 26℃ at 02:39| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

killtimer

gifの再生に一コマずつにSetTimerとkilltimerを交互にさせていたのですが
killtimerはどうやら重い処理のようですね、killtimerの後にawaitなど一区切りしないと
へんな現象がはっせいするし…マウスカーソルを動かさないと処理が進まないという謎の現象
SetTimerのドキュメント読み返してみるとkilltimerさせずにSetTimerで待ち時間上書きしていけるっぽいのでkilltimerいらねえわ
posted by 26℃ at 01:39| 福岡 ☁| Comment(0) | 雑記 | このブログの読者になる | 更新情報をチェックする