/var/log/hdk.log

2016 年 7 月中旬


10 (日)

%1 まったり日曜日

よく寝た日。

参院選投票日。 近所の投票所の朝 9 時時点の投票率は前回を上回っていた。10 代の人達はちゃんと投票に行ったかな?

車を運転中にやらかした珍しいエンストパターン 2 つ。 ひとつは、発進時にちょっとアクセルの踏み込みが足りなかったというありがちパターンだが、タイミングが絶妙だったのか、エンスト後に ECO 表示か何か、あのへんのランプがぴかぴかと点滅していたw アイドリングストップの後の再始動は発進の何秒も前に余裕を持って成功させていたんだけどな。 もうひとつは、1 速アイドリング状態でクラッチペダルは離したままゆっくりと転回した直後、なぜかニュートラルにしたものと勘違いして、そのままブレーキを踏んで停車したところ、いかにもエンストしそうな振動があってそのままエンストし、あれっ、と思ってシフトレバーを触ったらギヤはしっかりと 1 速に入っていたwww ニュートラルにしたつもりってやつ自体はたまにあって、信号待ち等でガツンとエンストさせたことはあるが、クラッチペダルに全く触れずにエンストさせ、しかもシフトレバーを触るまで気づかなかったのは結構珍しい。 なお、MT 車を所有し始めてから 10 年が経過している。

%2 SDL

SDL なアプリにフツーのダイアログボックスみたいな GUI を組み合わせるのっていろいろとトラブルを起こしそうな話で、実際 WWW 検索すると、どうも Windows のメッセージ処理まわりが原因のトラブルなどもあるような感じである。 もっとも安全な方法は別プロセスにしてプロセス間通信にしてしまえということらしい。

まぁそのプロセス間通信にしたって、パイプというのが標準的なプロセス間通信の方法のひとつではあるが、Windows に関しては _pipe() という名前が違う API だし、fork() の代わりに spawn だし、select() で待てない (socket じゃないので) し、結局移植性のあるプログラムに使うのはやっかいなようだ。

2016/07/10 のコメントを読む・書く


11 (月)

%1 きのうの F1

レーススタートは見損ねた、というか映像は見てないんだけど、Live Timing を開いたらどうやら悪天候によるセーフティーカースタートだった。 決勝後のニュースによれば、スタートはともかく、セーフティーカー期間が長すぎたとの批判があるらしい。 それで先頭にいたハミルトンがセーフティーカーを煽るように走っていたとか (笑)

その後は乾いていく路面に合わせてのタイヤ交換のタイミングと、乾ききっていない部分の走り方がポイントのようだった。 映像を見ていないのでアレだけど、文字情報だけでも、チャンピオン経験のあるベテラン勢を含め様々なドライバーが、コースオフあるいはスピンといった情報が何度も流れていたので、結構難しいコンディションだったのだろう。 惜しいのは、トップを走っていたハミルトンを除く、複数回のチャンピオン経験者であるベッテルとアロンソの両方が、そういう路面に足下をすくわれて順位を落としてしまっていたことか。

スリックタイヤへ交換後は、そのままレースを走りきれるということで、ラップタイムを見ていると、トップのハミルトンは完全に後ろを見ながらの走りであることが明らかだった。 後のコメントによれば、エンジンが規定の最後の 5 基目であるためセーブして走ったようだ。 後ろはフェルスタッペンががんばっていたが、さすがにロズベルグに抜かれた。 と思ったらロズベルグがギヤボックストラブルで無線でヘルプを求め、最終的にはそれがペナルティーの原因となった。 しかしたったの 10 秒ペナルティーとはね... 前戦で無線の制限によりブレーキトラブルが伝わらずコースオフ・リタイヤしていたドライバーがいたことを考えると、たかがギヤボックストラブルごときの無線制限違反で 10 秒ペナルティーって軽すぎはしないかという気はする。 あと、トラブルのためデフォルト設定に戻せという指示までは緊急の指示として許されるということが今回のことで判明した。 なので、7 速をとばせ、ではなくて、7 速にトラブルがある、と伝えるのは OK だったのではないか。

今回ラップタイムをずっと見ていたのだが、トップ 4 (メルセデスとレッドブル) が異次元の速さだった。 フェラーリとフォースインディアがそれに続く。 フォースインディアはタイヤがきつかったようだが、フェラーリのライコネンはタイヤは大丈夫そうだった。 ただし、前がとばすと 1 周で軽く 0.5 秒以上離されている感じで、何があってもトップ 4 には届いていなかったな、というラップタイムだった。 レッドブルはフェルスタッペン移籍の頃から本領を発揮し始めた感じかな。 それでも本気のメルセデスにはついていけなさそうな感じ...

フォースインディアの速さを見てもメルセデスエンジン (パワーユニット) は今年もやっぱり強い。 フェラーリもがんばってはいるが追いつけていないのではないか。 開発規制は厳しい。 来年はトークン廃止で開発競争になるのではということだが、規制緩和が遅すぎるのではないか。 そもそも世界最高峰といいながら開発規制って何だよ... 基数制限だけでお腹一杯だよ。

2016/07/11 のコメントを読む・書く


12 (火)

%1 おとといの F1 の追記

そうそう、予選でいろんなドライバーがコースリミットを外れたり (リミットの線を 4 輪脱輪するとタイム抹消される決まり)、ミスをやらかしたりしていた。 ハミルトンは Q3 でタイム抹消されたあとトップタイムをたたき出す見事な走りだったが (しかも本人はミスらないように少しマージンをとっていたというようなコメントだったかな)、ライコネンは Q2 で 2 回目のアタックも失敗して最後ギリギリ通過だった。Q2 のタイムを出したタイヤで決勝スタートの決まりがあるので、ライコネンはロックさせた上 1 周多く走ったタイヤでスタートすることになり、不利だなぁと思っていたら、雨スタートだったのでそのルールは適用されなかったのだった。

アロンソは Q3 の最後にそこそこのタイムを出したがタイム抹消されてしまい、決勝でのスピンもあってぐだぐだな結果に。 バトンはトラブルで Q2 に進めなかったが、決勝は着実に、といってもポイントは遠かったか。 ベッテルは金曜日・土曜日に立て続けにギヤボックストラブルが出たとかで、珍しくチームメイトに届かない予選タイムに加えギヤボックス交換ペナルティー、さらに決勝では真っ先にスリックタイヤにかえたアドバンテージをスピンで失ってしまっていたようで、何とかポイントは取れたという感じ。

と、5 人もチャンピオン経験者がいるわけだが、チャンピオンらしい走りはハミルトンだけだった。 そのハミルトンも決勝でコースオフがあったわけだが、後続もコースオフするという幸運もあったし、あの圧倒的なペースから言えば例え抜かれても抜き返していただろう。

%2 選挙

そういえばおとといの選挙は大変いい加減な気持ちで投票に行って、2 枚目のほうに書く内容は決めていたが 1 枚目 (選挙区) は何も決めていなかった。 鉛筆を持ってしばし悩み、あんまり聞き覚えのない人の名前を書いたら、その人は落選だったようだ。

そして次の選挙は都知事選、何人か出馬表明しているが... ウーン。 石田純一は出馬断念したが、野党統一候補ならという条件だったからそもそも出馬の可能性は低かったのでは。

2016/07/12 のコメントを読む・書く


13 (水)

%1 ノート PC

そろそろ Windows 7 から Windows 10 への無償アップグレードが可能な期間の終わりが迫っている。 自宅のノート PC ThinkPad X201 にプリインストールの Windows 7 が入っており、無償アップグレードの権利を未だ行使していない。

この ThinkPad は中古で購入したもので、8GiB の RAM があるにも関わらずなぜか 32bit 版の Windows 7 が入っているという謎な状態。 無償アップグレードの権利を行使すれば、おそらく 64bit 版を入れ直すことも可能だろう。 問題は、パーティションの空きがほとんど無いためアップグレードがめんどくさいということと、そもそも、購入してからの 4 年半のうち、SSD に入れ替えた時に入れたっきりで、それ以降ほとんど起動していない Windows を、わざわざアップグレードする意味があるのかというところである。 しかも、Home Premium エディションなので、デスクトップの Windows PC をアップグレードする前と変わらないというか、むしろ 32bit 版で劣化 (?) 状態である。

SSD 容量は 64GB (not 64GiB) であり、今の感覚ではかなり小さめ。 これを買い換えることも考えたが、調べてみると X201 の販売開始は 2010 年 3 月 1 日らしい。 モデルとしては 6 年が経過している古い PC で、わざわざ SSD にお金を投入するのもなぁという感じになる。

Windows を残してあるのはバッテリーの充電容量調整が目的だった。 この件に関しては tp_smapi カーネルモジュールを使えば Linux でも設定可能らしいことが判明しており、Windows を残す理由ではなくなっている。 おまけに、職場の ThinkPad X200 の経験で言えば、Windows 10 にアップグレードするとおそらくこの時期の ThinkPad のバッテリー関係のアプリは互換性が無く、アンインストールされてしまうからますます意味は無い。

結局、アップグレードはしないか、するにしても、もともとついていた HDD でアップグレードしておく程度にして、SSD からは Windows を消し去ってしまうのが良い気がしている。Windows を消し去れば 20GiB もの空き容量ができるので、空き容量 1GiB 以下でがんばってきた GNU/Linux 環境にもかなり余裕ができる。LVM にはしていないので増やすのもめんどくさいところはあるんだけど、頃合いを見てやってしまったほうがいいだろうなぁ。

%2 Windows 10

Windows Update の日に、「更新してシャットダウン」が選択肢に無いのは疑問だったが、自動更新の設定にしてあれば、ほっといても更新のインストールは始まっており、あとは再起動の時刻を設定するだけの状態だから、シャットダウンすれば更新はインストールされるかな、なんて思った。 職場の PC で、実際にシャットダウンしてみると、目の前で点滅を始めるスリープランプ... 高速スタートアップで休止状態になってやがるwww

デュアルブート環境ということもあって、高速スタートアップを解除しておいたほうが安心なので解除してシャットダウンを選ぶと、今度は更新のインストールが走った。 うーん、帰るときにシャットダウンするついでに更新をインストールしておいてほしいって自分だけでは無いと思うんだけどなぁ。 なお、この PC は時々 Fan error が出るような、どうもシステムボードに問題を抱えた PC で、スリープにしていたらファンが回らなくなっただけでなく、無線 LAN がつながらなくなるといったトラブルが出たことがあって、いつもは帰る時には休止状態にしている。 デュアルブートの設定でデフォルト Windows ではないので、休止状態から夜中に勝手に復帰していることは無いようだ。

なお、相変わらず Windows Update が自動的に再起動しようとする時刻としては真っ昼間が出る状態であり、勝手に再起動されると大変迷惑である。 今日なんて、昼休みの始まる時にはまだ更新のインストール中だった癖に、昼休みの終わる時間が再起動のタイミングにされていて、ギリギリで気づいたけどもう少しで再起動されていたのかも知れないw 使用されていないとか何とか出るけど、そりゃ昼休みには使用しないけどさw

2016/07/13 のコメントを読む・書く


14 (木)

%1 ThinkPad X201

もとの HDD をどこにやったかなと、探したら SSD の箱が PC の棚に置いてあって、そこに入ってた。 それに入れ替えて、これリカバリーディスクを作成するのに使っただけでリカバリーもしてなかったと思うんだけど、ハードオフの店員さんを信じて (←?) そのまま Windows 10 にアップグレード。 そしてネットワークにつなぎ Windows Update。 なぜか懸案の省電力マネージャーは消されずに残っていて、首をかしげたがまぁいい、どうせ使うことはない (ぉぃ)。

また SSD に戻しパーティションを拡大する。 ちょうど Windows の入っていたところが rootfs のサイズ +5GB 程度あって良い感じなうえ、home のパーティションの後ろが rootfs なので、rootfs を Windows 跡地に引っ越し。90% 以上使っていたので dd でコピーした。 すっかり忘れていたけど reiserfs はマウントした状態で resize すべし。 メッセージよく見ないで再起動して、あれ、変わってない、と思ったけどそういえばそうだった。

次に home の拡大、こっちは暗号化パーティションなのでやっかいだ、と思っていたけどその前に、パーティションの開始位置に何をやったか覚えていないのだが fdisk で同じ位置に設定できず後ろにずれてしまう。 仕方が無いのでズレた位置に作っておいて、バイナリーエディターで見比べて修正。fdisk は /dev/sda をアクセスするのに対し、手で編集するときに /dev/sda3 を直接いじったから fdisk でその結果を確認できない... /proc の下を探してキャッシュフラッシュさせたら確認できた。

で、これでパーティションのサイズが変わったので次は暗号化の設定だ、と cryptsetup resize を実行したんだけど何も起きない、っていうか、実行する前からすでにブロックデバイスのサイズは大きくなっていた。 そういうもの? なので、ファイルシステムの resize をすませて完了だ。 だいぶ余裕ができたのでいろいろ使えそうだ。

%2 梅雨明けは?

今日も妙な天気で、何より来週の海の日あたりの天気予報が良くない。 海水浴場で働いている人達にはうれしくない天気予報だろうが、そんなことより梅雨明けはいつなのか。 今日はよりにもよって熊本に大雨警報が出ていて、九州は大雨の被害もかなりありそうだ。

九州南部の梅雨明けは?(日直予報士) - 日本気象協会 tenki.jp

首都圏は水不足も心配なところだし、せめて涼しくなってくれれば...

2016/07/14 のコメントを読む・書く


15 (金)

%1 皮膚科

手の皮がかさかさでぼろぼろに剥ける症状が 1 か月ほど続いていたので皮膚科に行った。 汗が原因? の汗疱とか何とかいうやつらしくて、かゆみも無いので、ヒルドイドローションというハンドクリームを処方してもらって終わり。 薬剤師の人曰く、顔にも使えるんだとか。

手が温かい人はなりやすいんだとか、季節の変わり目には多いんだとか。 言われてみれば今は手は温かいほうかも知れない。 やたら冷えてる時もあるけどね。

%2 映画

テレビでやってた映画『ホットロード』。2014 年の邦画。 原作は 1986 年頃に連載された少女漫画とのこと。 初映像化のようだがよく発掘したなぁ。

暴走族やら、出てくる車やら、時代設定も当時なのか。 ぼーっとした感じの主人公 (中学生) とその同級生、そして暴走族の抗争? みたいな。 和希 (かずき) って名前で何か一樹とか一貴とか男性名を思い出してしまって違和感があった。Wikipedia 見ると暴走族にあこがれってあったけど、映画見ててもあこがれてる風には見えなかった。

中学生の主人公を演じる能年玲奈はおそらく撮影時 20 歳前後である。 そりゃ「中学生には見えない」よねw

YouTube で暴走族の「コール」と呼ばれる動画を見るとわかるけど、あの人達のエンジンの吹かし方は、ギヤを入れておいて、吹かしてあげた回転数をクラッチをつないでストンと落とすというような操作をしているらしい。 しかし、この映画のやつはただの空ぶかしに見える。 まぁこれも、時代の違いなのかも知れない。 しかしどうでもいい。

ヨンフォアと言っているやつ、ホンダ CB400FOUR のことらしいのだが、CB400FOUR は 1997 年発売で時代が合わない。 そうするとドリーム CB400FOUR のことなのか。 アクセルターンのシーンの違和感。 映像は人や心のほうに力が入れられていて、車両のほうは雑かも。

%3 Windows

やっぱり Windows 7 から Windows 10 にアップグレードした各種 PC を見ると、何となく軽快になったような気がするわけである。 しかし Atom Z530 搭載のとある PC はさすがに CPU の性能が厳しいし、GMA500 のグラフィックドライバーは自動的にインストールされないしで、かなりイケてない。 プリインストールされるキャンディークラッシュも 5fps くらいか? ガックガクである。 それでも Windows 7 よりはマシかも知れない...

でもリカバリー直後の Windows 7 って意外と軽快? そういえば Windows 2000 も Windows XP も、最初は快適だったような気がする。 そうか、つまり、レジストリーの肥大化やら何やらで、だんだん遅くなったところで大規模アップグレードですっきり高速化ってわけで、Windows 10 は頻繁に大規模アップグレードを入れることで、軽快さを保とうってわけだな! レジストリー以外にも、Windows Update の遅さなど、他の OS よりいまいちな部分は未だに改善されていないもんね。

2016/07/15 のコメントを読む・書く


16 (土)

%1 三連休初日

歯医者に行って、親知らず抜歯の続きのための状況確認。 前よりは確実に出てきていて前よりは抜ける可能性が高まったが、またしても引っかかっているから完全には抜けないかも知れないとのことで、その場合また同じように出てくるのを待つことになるかも知れないとのこと。 ふむむ。

曇り空のなかレンタルカート。 飯能。3 回乗ってベストタイムは 34.480 秒。 湿度が高くて EX エンジンの元気がない。

飯能はさすがに山なので、天気がちょっと違うというか、帰る時にほんの少し霧雨っぽい感じになったり、霧っぽいのが出たような感じになったりした。 地上に... いや、青梅に降りてきたら、もう全然濡れない感じ。

道はやっぱり三連休らしく、少々混雑していた。 行きは新青梅街道に出るつもりが、渋滞回避しようとして小平霊園に紛れ込み、道に迷っているうちに元の道に戻り、単なる遠回りになったという... 小平霊園ってのは、多磨霊園みたいなものかと思って入り込んだんだけど、出入り口は一カ所みたいなことが書かれてて、あっ、多磨霊園とは違うんだなと。 地図を見ればそれはもう明らかに面積が違うなw 多磨霊園の面積は都立霊園のなかでは一番大きいらしい。

2016/07/16 のコメントを読む・書く


17 (日)

%1 三連休中日

よく寝た日。

バイクのチェーンメンテナンス。 オイルくりくり。

車のガラスにガラコ。 塗って拭き取るタイプ、カー用品店の定番商品だが自分で使ったのは初めてかも知れない。 なんか油性マジックみたいな臭いがする。

きのうもすごかったが今日も夜になったらなかなかの蒸し暑さ。 気温はそんなでもないけど高湿度でむわーっと。

%2 スーパーフォーミュラ

今日は富士スピードウェイでスーパーフォーミュラの決勝だったようだ。F1 の若手リザーブドライバー、バンドーンがスーパーフォーミュラ参戦 3 戦目にしてポールポジションを取ったと F1 ニュースで出ていた。 なるほどすごい人だ。

決勝はスタート直後の 1 コーナーで失敗したみたいで、やっぱり若手なのか。 若手といっても 24 歳、今の F1 ドライバーの中ではそこまで若くもない。 元 F1 ドライバーのアルグエルスアリは昨年 25 歳でモータースポーツからの引退を発表しているし。

2016/07/17 のコメントを読む・書く


18 (月)

%1 三連休最終日

よく寝た日。

あのハンドクリームすげぇ。 半日は持つ感じ。

%2 Qt

ポータブルな GUI アプリケーションに使うツールキットといえば GTK+ とか Qt とかいろいろあって、GTK+ は以前簡単なユーティリティーを作るのに使ったことがある。 一応 GUI のデザイナー的なものがあったと記憶しているが、そんなに使いやすいとは思わなかった記憶がある。

で、Qt というのは結構歴史もあって、Windows 用だけ当初 GNU GPL 互換のライセンスがなかったものの、GNU GPL 互換のものが出てから 10 年以上経つ。 これも触ってみようと、調べると、Qt Designer... ではなくて、Qt Creator ってのがある。2009 年にリリースされた統合開発環境らしい。 へぇー。

ノート PC の SSD にも余裕ができたことだし、と、Qt Creator を入れて使ってみた。 プロジェクトの作成から、ポチポチと操作していったら、ほとんど違和感なく、フォームにボタンを配置して、クリックしたら何かが起きる、みたいなところまであっという間にできてしまった。 簡単に言うと、Visual Studio で C# か何かを触っているような気分になれる。 しかもよく見ると、バージョン管理システムも Git と Mercurial に対応しているらしい。 あ、いや、設定画面みたら大量に対応してた。Eclipse みたいにもっさりした感じもないし、普通の C プログラムの開発環境としても結構イケてるんじゃないのと思えてくる。

Visual Basic をマニュアルを見ながら初めて触った時を思い出す。 小学生の頃だったかな、あれは PC-98 用の DOS 版だった。 オブジェクト指向のオの字も知らない状態で、オブジェクトのプロパティーとかメソッドとか何とかやってみるのは新鮮だった。 今の Visual Studio でも Visual Basic をある程度ぱっと触れるのは、あのときの経験があるからだ。 それと同じで、Qt Creator でも何も知らずに何でもできるわけではない。 例えば、コンボボックスを置いて中身を入れるまではいいが、そのコンボボックスの選択項目をプログラムから取得するにはどうすれば良いか、みたいな話は、調べるしかない。 しかし、すぐにわかった。ui->comboBox というふうにしてオブジェクトにアクセスできるらしく、ui->comboBox->currentIndex() のようにメソッドを呼び出せば何番目の項目が選ばれているかが取得できる。VB 脳なのでコンボボックスはデフォルトでテキスト編集可能なのではないかと思ってしまうが、そんなことは無いらしい。

メッセージボックスは QMessageBox を使う。 ファイル選択ダイアログは QFileDialog だ。 ファイル選択ダイアログなんて、昔の Visual Basic では手作りするしか無かった記憶が... Windows 版では common control がどうとか言って (拡張の形ではあるが) 良くなってたけどね。 それはともかく、このとっつきやすさは気に入った。

ソースコードには .pro という拡張子のプロジェクトがあって、コマンドラインからは qmake というコマンドをたたくと Makefile が作られる。 後は make するだけで OK、これならソースコードの配布をする時にも悩むことはなさそうだ。

Windows 版のビルドはというと、SDL2 は自分でクロスコンパイル環境を configure-make してもたいしたことは無かったが、Qt は相当な規模なのでビルド済みのものを使いたい。 ところがクロスコンパイルでどうすれば良いのかわからない。 そこで、Windows の MinGW 用コンパイル環境一式を Wine でインストールしてしまう。 途中 Visual Studio 絡みの何かで引っかかるっぽくてそれは kill したら進んだ。 あといくつか登録関係っぽいエラーが出たが全部無視した。 わざわざ Qt Creator もインストールしてくださるが、qmake と make をしたいだけなので使うことはない。 なおインストールされた Qt 関係のバイナリーだけで 2.0GiB に達していたので、ディスク容量には注意が必要だ。 済んだら wine cmd でコマンドプロンプトにして、PATH=c:\Qt\Tools\mingw530_32\bin;c:\qt\5.7\mingw53_32\bin;c:\windows\system32;c:\windows みたいにしてやれば、qmake と mingw32-make コマンドが使えてビルドができる。

Windows 向けはスタティックリンクならバイナリー配布が楽だが、配布されている環境はダイナミックリンク用のもので、スタティックリンクにするには Qt のソースコードからのビルドが必要なようだ。 ダイナミックリンクの場合、実行可能ファイルがあるディレクトリーで windeployqt というコマンドを実行すると、必要なライブラリーやファイルを集めてきてくれる。40MiB 程度必要。

2016/07/18 のコメントを読む・書く


19 (火)

%1 SDL2 画面

NEC PC-98 や IBM PC みたいにスプライト機能などを持たないコンピューターのエミュレーターを書くとき、特にゲームに対応させる場合はやっぱり画面全体を 60fps で書き直し続けるみたいな処理が一般的ではないかと思う。 これは SDL2 のテクスチャーが云々より昔ながらの surface を使っちゃったほうが楽だと思って、使ってみたけど、SDL_Flip が無くなった分、垂直同期を待たないみたいでテアリングが発生する。 じゃあ垂直同期を待たせるにはというと、SDL_RENDERER_PRESENTVSYNC というのがあって、やっぱりテクスチャーに手を出さなきゃならんのかー!

cpp-cheat/plot2d.c at master - cirosantilli/cpp-cheat - GitHub

とまぁそれで見つけたのはこの簡単なサンプルである。 ポイントは SDL_TEXTUREACCESS_STREAMING を付けておき、SDL_LockTexture / SDL_UnlockTexture を使ってテクスチャーのバッファーに直接書き込むところ。 手元のノート PC で実行するとそもそも 30fps もいかないのだが、画像を作るところの sin 等の演算が重いらしい。 そのへんを改造して軽い内容にすれば 120fps くらい出て、SDL_RENDERER_PRESENTVSYNC を付けると 60fps くらいになって、いい感じに動いているのがわかる。

ちょっと待った、これだと 32bpp になってしまう。 だいたい古い PC のエミュレーターだと 8bpp やら 4bpp やらで十分なんだよ。 わざわざ 32bpp なんてのは... と思うんだけどこれを 8bpp にかえる方法がわからない。 フォーマットの選択肢はあるくせに、テクスチャーにパレットを設定する箇所は見当たらない。 何なんだこれ。 いろいろ探したけど surface を作ってそれをどうのこうの、SDL_ConvertPixels って、うーん、ソフトウェアで後から変換するくらいなら 8bpp 見捨てて最初から 32bpp で書くようにプログラム直すほうが速くて簡単だよ... まぁメモリー使用量を考えれば 12bpp あたりがクレバーか?

っていうか、OpenGL のテクスチャーで 8bpp とかできるのか知らないけど、WebGL を触った感じから言えば、シェーダーで変換すればドット (フラグメント) 単位の色変換なんて楽勝なんだよな。 さっきのサンプルの重たい sin の処理だって全部シェーダーですませれば圧倒的に速い。 なので、8bpp のパレット変換ごときができないのは何かもにょる。

%2 SDL2 音

SDL2 のオーディオの説明、SDL1 もかな、肝心なところが抜けてると思うんだけど。 コールバックは指定したサンプル数よりも少ない長さで来るのかと思ったら、指定したサンプル数分の長さぴったりで来る。 どこにもダブルバッファーだって書かれてないのだけど、もしこれシングルバッファーでやってたらとぎれること必至なのだ。 それで、探すとどうもダブルバッファーらしいのだが、じゃあそうだって説明に書いとけよw これは実際に音が出るまでの遅延に影響する。

で、Windows の API なんかだと再生中の位置を取得する API があるんだが、SDL にはそれも見当たらない。 コールバック関数でデータを埋めたら、後はそこからの経過時間で推測しろということだろう。 推測、というのは、オーディオシステムの時間がオペレーティングシステムが管理する時間と完全に一致しているとは限らないので、多少狂う可能性があるということだ。

2016/07/19 のコメントを読む・書く


Powered by Tomsoft Diary System 1.7.4

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2016 年 7 月中旬)

Hideki EIRAKU