waiei -blog-

その日の出来事を簡単に紹介する日記

スポンサーサイト

--------------:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

蜃気楼の画質向上

2017-05-07-Sun-01:00
※5/7 AM9:00追記あり

こんにちは、A.Cです。
昨日も記事を更新したばかりですが、蜃気楼の拡大時画質向上に成功したので緊急でバージョンアップしました。

蜃気楼1.25

旧バージョン
1.24
※クリックして拡大

新バージョン
1.25
※クリックして拡大

Windows7の時は新バージョンと同様の画質で拡大していたのですが、
Windows8以降かなり画質が落ちていました。

で、Windows10のCreatorsUpdateから画質が復活したという情報を以前から耳にしていたのですが相変わらず蜃気楼の画質が低かったのでそんなことはないのではと思っていました。
ところが、DWMAPIのサムネイル機能のサンプルプログラムをいじっていたら特定条件下に限り画質が向上することがわかりました。

条件とは、 DwmUpdateThumbnailProperties 関数でDWM_THUMBNAIL_PROPERTIESのfSourceClientAreaOnlyをtrueにすることでした。

つまりどういうことなのという話ですが、このフラグを有効にすることで対象のウィンドウのクライアント領域(ウィンドウフレームやタイトルバーを除いた部分)のみを拡大対象にすることができます。
今までの蜃気楼は、ここのフラグをfalseに設定してウィンドウ全体を取得、タイトルバー等を表示しないように位置をずらして表示させていたために今回の画質向上の恩恵を受けられなかったみたいです。(何故ウインドウ全体なら低画質のままなのかは謎ですが)

何故そんな面倒なことをしていたのかというと、ここのフラグを有効にしてもウィンドウ全体が取得されていたためです。
まあ、実際は設定しているのに反映されないわけがないのですが、これはHSPで開発しているのが原因の一つでもあります。

通常であれば、DWM_THUMBNAIL_PROPERTIESのページに書かれている通り、fSourceClientAreaOnlyをtrueにするだけでいいのですが、HSPでは「fSourceClientAreaOnly」が定義されているわけがなく、自分で設定する必要があります。
DWM_THUMBNAIL_PROPERTIESの定義部分のソースは以下のようになっています。
#define DWM_TNP_RECTDESTINATION 0x00000001  
#define DWM_TNP_RECTSOURCE 0x00000002
#define DWM_TNP_OPACITY 0x00000004
#define DWM_TNP_VISIBLE 0x00000008
#define DWM_TNP_SOURCECLIENTAREAONLY 0x00000010
    dwFlags=DWM_TNP_RECTDESTINATION | DWM_TNP_RECTSOURCE | DWM_TNP_OPACITY | DWM_TNP_VISIBLE | DWM_TNP_SOURCECLIENTAREAONLY
    dim tnProperties,11
    lpoke tnProperties,  0, dwFlags
    lpoke tnProperties,  4, 0
    lpoke tnProperties,  8, 0
    lpoke tnProperties, 12, drawx
    lpoke tnProperties, 16, drawy
    lpoke tnProperties, 20, 0
    lpoke tnProperties, 24, 0
    lpoke tnProperties, 28, crect(2)
    lpoke tnProperties, 32, crect(3)
    poke  tnProperties, 36, 255
    poke  tnProperties, 37, 1       ;0なら不可視
    poke  tnProperties, 41, 1       ;1ならクライアント領域のみ

要するに構造体は連続したメモリにデータを入れたものになるのですが、最後の行に書かれている41バイト目のここが1の時にfSourceClientAreaOnlyがtrueとなります。さて、じゃあこの41バイト目というのはどこから出てくるのかという話ですが、DWM_THUMBNAIL_PROPERTIESのページに書かれている順に定義するので、それぞれの値サイズずつずらして代入していきます。




DWORD dwFlags;0バイト目から4バイト分
RECT rcDestination;4バイト目から4バイト分×4
RECT rcSource;20バイト目から4バイト分×4
BYTE opacity;36バイト目から1バイト分
BOOL fVisible;37バイト目から4バイト分
BOOL fSourceClientAreaOnly;41バイト目

はい、上の赤字部分、BOOL(trueかfalseか)なのに4バイトあります。今までここは1バイトだと思い込んでいたので38バイト目から1バイトを書き換えていたのですが反映されていなかったわけです。わかるかー

とにかくまあ、いろいろいじっていたら上記原因が解明できたので1.25に反映しました。

ちなみにですが、クライアント領域を取得した場合、Aeroの合成部分は黒色になります。
例えばエクスプローラーを拡大対象にした時がわかりやすいと思います。
1.25Aero

タイトルバーが黒くなっています。これはDWMによってウインドウを合成する前の状態を取得しているためなので、対応できません。仕様です。

1.24では合成後のウインドウを取得しているためしっかりと色が付きます。
1.24Aero

大した問題はないと思いますし、画質を落としてまで1.24表示にする必要はないと思いますが、settings.iniを編集することで1.24モードの表示に戻すことができます。詳しくはreadmeを参照してください。

追記:ちょっといじったら黒色問題は対応できたので1.251として更新しました。5/7の9:00以前にDLされた方はお手数ですが再DLをよろしくお願いします。

まあクライアント領域のみ取得とか言ってたのに実際は余計な部分まで取ってたりしたんでそのあたりどうやって消すかいろいろ試行錯誤しましたががが
スポンサーサイト

Web拍手レス

2014-02-06-Thu-02:48
Web拍手レス
>BBSが無いのでこちらで質問させていただきます。
>以下のエラーが出ます。どういったエラーなのかわかりません。
>よろしければ教えて下さい。
>Error1
>-->内部エラーが発生しました(1)ソフト関係がイイネ!
>先ほどの質問は蜃気楼に関してです。すみません。
(takuroさん)
報告ありがとうございます。
BBSはサービスが終了してしまったのと、僕が気付かない為
現在設置していません。
基本的にはTwitterでメッセージを送ってもらえると対応します。
今回は、この記事のみコメントを受け付けるようにしましたので、
こちらに書き込みをお願いします。

久しぶりのツール

2013-12-29-Sun-00:30
Web拍手レス
>I like waiei theme!and I wish it become better.
>StepMania関係がイイネ!(CrzPさん)

ありがとうございます!
StepMania5は拡張性のあるテーマが作成できて本当に楽しいです。
これからもよろしくお願いします!




蜃気楼
日記マンガ

あかやとましろはどんなキャラだったか
すでに忘れ気味…ゲフンゲフン





こんにちは、A.Cです。
そんなわけでWinSizeChangerの後継ソフト、蜃気楼を公開しました。

⇒ダウンロードはこちら

マンガにも出ていましたが、花映塚以前の東方原作の
ウインドウサイズを大きくしたり、
あるいは風神録以降を640x480で起動した後このソフトで拡大すると
きれいに拡大されます。
標準機能で拡大した場合との比較はこんな感じです。
(クリックで画像拡大)
東方地霊殿画質比較
また、WSCではDirectXで画面描画しているゲーム限定でしたが、
蜃気楼ではどんなソフトでもきれいに拡大表示できます。
※おそらく東方原作の標準機能の拡大は、
 WSC2とやっていること自体は同じかと。

このソフトがどういうつくりになっているのかは
蜃気楼の専用ページを見てもらえればだいたいわかると思いますが、
具体的には対象ウインドウとは別に拡大用のウインドウを生成し、
そこに画面をコピーしているわけです。
蜃気楼の内部構造
つまり実態とは別に触ることのできないウインドウが見えるので
「蜃気楼」という名前になっています。

でもこれ動作が重くなるんじゃ…と思ったそこのあなた!
大丈夫、Aeroが有効環境だとOSの機能でクローン画面を生成できます。
Vista以降でAeroが有効な場合、タスクバーにカーソルを持っていくと
ウインドウのサムネイルが表示されると思いますが、
あれを大きくして表示してるのがこのソフトです。
ウインドウサムネイル
この機能ですね。

ただしこの機能、Aeroが有効な時だけしか動作しないので、
XPやAero無効環境だと定期的に対象ウインドウの画面を
キャプチャする処理を行っています。
現バージョンのこの動作はCPUで行われるので
Aero無効だと場合によっては若干重くなるかもしれません。

まあ、直感的に使えるつくりになっているので
ぜひ一度お試しください!




その他

ハタアゲわいえいがHSPプログラムコンテストで
ふりーむ!賞を受賞しました!ありがとうございます!


そして今僕の背後には賞品のデリシャススティック1年分が
置かれていますw
デリシャススティック

そしてそのハタアゲわいえいをバージョン1.10に更新しました。
詳しくはハタアゲわいえいの専用ページを参照してください。

⇒ハタアゲわいえい




もひとつ

StepMania5.0専用テーマwaieiを1.331に更新しました。


1.33は互換アップデートと題し、
曲を好きな順番にソートさせる機能やカロリー表示などを
実装しています。

そしてそのwaieiで最適に遊べるパッケージ、
FIXED Project5 -waiei Extended- Appendを
クリスマス企画としてバージョンアップ!
Append3になりました。


有名なゲーム楽曲アレンジ4曲と、
かなりの高難易度ボス曲を追加しています!
まだ遊んでないよ!って方はぜひ遊んでみてください。

ではでは、相変わらずの宣伝だらけですが今回はこの辺で~。

HSPプログラムコンテスト参加なう

2013-11-13-Wed-22:00
帰ってきたハタアゲ
日記マンガ

そんなわけでハタアゲわいえい公開中です!




こんにちは、A.Cです。
数年ぶりにゲーム作って公開しました!

このゲーム、HSPプログラムコンテスト2013にも出展してるので
もしよかったら感想などよろしくお願いします><

久しぶりのゲームですが、実は以前このサイトで公開していた
「3本バナナのハタアゲ」というゲームのシステムを引き継いでいます。
3バナは当時の技術量的な問題で音ゲー要素はなく、
赤・あげ・てと同じ感覚で「ピッ」と笛の音が鳴るのでそのタイミングで
操作すると高得点というルールでした。(ちなみに1ミスでゲームオーバーです)
これを4拍子の曲に合わせることでプレイしやすくしたのが今回作成したゲームです。
ストーリーモード搭載ですが、ノーコンテニュークリアの場合大体20分程度で終わると思います。

楽曲はStepManiaパッケージ企画の
FIXED ProjectRELATIVE Projectでおなじみの曲です。
また、最新のFIXED Projectにはハタアゲわいえいの楽曲を
3曲追加する解禁ファイルが同梱されているのでこの機会にぜひ遊んでみてください。
せっかく特殊ルール機能があるのに、本編ではあまり活かせてなかったので隠し曲の方で使っています。

最近何かと作品のタイトルに「waiei」または「わいえい」の文字が入っているのでそろそろ自嘲しないとなーと思う今日この頃。

たまにはただの日記でも

2008-11-11-Tue-02:00
Web拍手レス
すこしお久しぶりです( ´Д`)ノ
いまさっき改名しましたw

ABOUTみて閃いたのですが、A,Cさんの曲のみ
DWIに使わせていただいてもよろしいですか??
楽曲使用の項を画面に穴が開くぐらい熟読しますので。

仮に完成したらまたBBSに連絡しますヽ( ´∀`)人(´∀` )ノ

らのっちぇ(旧 珀威)さん
どうもですー。
えっと、つまり過去に作った曲にDWI譜面をつけるって意味ですよね?
問題ありませんよー。名義は作曲当時の名前(YOSSHI,sin)でも
今の名前(A.C)でもどっちでも良いですのでw
完成しましたらこちらのページにリスト追加いたします~。




今日はマンガないよ(´・ω・`)

どうも、今日こそは12時に寝ると思っていても
結局こんな時間(2時)まで起きてしまい
次の日が大変なA.Cですこんにちは。

ホントに早く寝る癖つけないとなー…。

BDSVの進行状況報告~
(もう開発日記はほぼ機能してないなw)

今回のバージョンで追加予定のフォルダの削除、移動機能ですが、
大まかな流れで言うと、
移動、削除したいフォルダを選択
→上部(現在の予定)に設置されたボタンを押して移動等を選ぶ
てな感じになっていまして、とりあえず選択できるようにしました。
bdsv2200_1.png
こんな感じに右端にチェックボックスが搭載されましたー!

て言うかこの機能、2.00の時にホントはつける予定だったんで
現在公開しているバージョンもアーティスト名が長い場合
このチェックボックスのある範囲は文字が切れるようになっています。

ついでにこの部分も
bdsv2200_2.png
独自の描画方法からWindowsのポップアップを使うように変更。
じゃないと、選択した直後に下に重なってたリストを
選択してしまうことがあるからねー。

今のところほかの修正点は下の通り
・難易度18まで表示できるように(数値はいくらでも問題ない)
・右クリックポップアップメニューにセパレータ追加(かなりどうでもいい)
・右クリックメニューが認識されないバグも修正されているはず
・グループを読み込んでいない場合にソングフォルダのプロパティを
 開こうとするとエラーが出るのも修正できているはず

さーて、あとはフォルダの移動や削除機能だなー(かなり肝心な部分だがw)
HOME NEXT
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。