読者です 読者をやめる 読者になる 読者になる

しらいとブログ

ネットで検索してもなかなか出てこないIT情報を独自にまとめています

「WinFont+」開発記録 Part 6

今回は実験結果を記録として残すのが目的なのでソフトの公開はありません。

「WinFont+」開発記録 Part 5

今回のWinFont+はGDIはフックしていません。DirectWriteをフックしてラスタライズ処理をFreeTypeに置き換えています。

「WinFont+」開発記録 Part 4

今回はFreeTypeを使ってみました。 GDI++(FreeType版)やMacTypeのコードを読むと難しそうな印象でしたが、FreeType公式の最新のドキュメントを見ながらやってみたら思ってたより簡単でした。ラスタライズは全部FreeTypeでやっていますが、フォントの読み込み…

「WinFont+」開発記録 Part 3

今回はWinFont+_alpha2の不都合をまとめてみました。

「WinFont+」開発記録 Part 2

前回のalpha1ではDirect2Dを使っていましたが、今回はDirect2Dを使わずに自分でGDIに描画するようにしました。DirectWriteにはラスタライズ機能とレンダリング機能があるのですが、ラスタライズ機能のみを使用することになります。 実はChromeと同じ手法だっ…

「WinFont+」開発記録 Part 1

Windowsのフォント描画を置き換えるソフトにはgdi++.dll、gdipp、ezgdi、MacTypeがあります。きちんと調べたわけではありませんが、最初に作られたのがgdi++.dll(本家)、gdi++.dll(本家)から派生したのがgdi++.dll(FreeType版)、gdi++(FreeType版)から派生し…

Float,Double型をバイナリに変換して精度を確認

小数 バイナリ Float → ← Double → ← ※バイナリから小数への変換は最後に0が続く場合は省略されます。※古いブラウザでは動かないことがあります。 //

Rust言語でDxLibを使う

DxLibはWindows用のゲームなんかを作れるライブラリです。DxLibはC++のライブラリですが、C#用のDLLバージョンも公開されており、C#以外でもFFI(Foreign function interface)が使える言語なら使えます。RustもFFIが使える言語なのでDLL版DxLibを使うことが出…

WindowsでRustプログラミング(環境構築)

WindowsでRustプログラミングをやるならEclipse + RustDTがオススメです。Eclipseは統合開発環境(IDE)の名前です。RustDTはEclipseのプラグインで、Rust Development Toolingの略です。この2つを使えば、関数名の自動補完や、ブレークポイントを使ったデバ…

「exit code -1073741515」=DLLが見つからない

Windowsプログラミングにおいて、開発環境では問題なく動くプログラムが本番環境で動かない時によくあるのが「exit code -1073741515」です。あるいは16進数の「exit code FFFFFFFFC0000135」だったり、16進数で16bitの「exit code C0000135」だったりします…

(2015年)最新のMinGW(GCC)のダウンロード

MinGWの公式サイト(のsourceforge)で配布されているGCCは、2013年に公開された4.8.1で更新が止まっています。 最新バージョンはMinGW-w64(のsourceforge)からダウンロードできます。(64bit版だけでなく、32bit版も配布しています。) 例えば4.8.5が欲し…

WindowsでRacerのビルド(コンパイル)

2015/07/13 18:25通常のビルドだと別途DLLが必要になることが発覚したためやり方を変えました。 RacerはRust言語の自動補完ツールです。(RACER = Rust Auto-Complete-er) 今のところRust言語の自動補完ツールはこのRacerしか無いようなので、エディタやIDE…

SyntaxHighlighterの高速化

技術系のブログなどでコードの色分けにSyntaxHighlighterを使っている人は多いと思います。しかしながらSyntaxHighlighterには問題があります。SyntaxHighlighterはページ内に出てくる画像など全ての読み込みが終わるまで色分けしないのです。これでは読める…

Atom EditorでDirectWriteを無効にする

2015年6月26日に1.0.0が公開されたAtom Editorですが、WindowsではDirectWriteがデフォルトで有効になっており、MacTypeなどのgdi++系ソフトとの相性が良くありません。 一応DirectWriteを無効にする方法があるのでここに書いておきます。 Atom Editorは終了…

shBrushRust.jsの配布

ブログにRust言語の記事を書こうとしたところ、SyntaxHighlighterがRust言語に対応していないことに気付きました。このままではRust言語のコードの色分けが出来ません。 しょうがないのでSyntaxHighlighterをRust言語に対応させるためのshBrushRust.jsを自分…

垂直同期とダブル/トリプルバッファリング

垂直同期とダブルバッファリングとトリプルバッファリングの解説スライドを作りました。 この3つはゲームプログラミングには欠かせない知識なのですが、何故か検索してもゲーマー向けの情報ばかりなので、プログラマ向けの情報として書きました。と言っても…

Visual Studio 2013 Language Pack でエラーが出た時の対処

Visual Studio Community 2013 をインストールした後の Visual Studio 2013 Language Pack のインストールでエラーが出るという報告が相次いで出ています。筆者の環境でも vs_langpack.exe の実行中にエラーが出て、インストーラが勝手に強制終了しました。 …

C++11のmemory_orderの使い分け (4)

前回まででアトミック変数とフェンスの memory_order の基本的な使い方を全て解説しました。今回はメモリバリアを減らして高速化する手法について解説します。ただし、consume を使った高速化に関しては扱いません。また、今回の内容はあくまでメモリバリア…

プログラミングテクニック「大で小を兼ねる」

大は小を兼ねるという“ことわざ”がありますが、プログラミングの世界でも大で小を兼ねるテクニックはよく使われます。 今回はゲームのアイテムを例に、大で小を兼ねる設計を解説します。(初心者でも読めるようにC言語で解説しました。)その後で業務用アプ…

C++11のmemory_orderの使い分け (3)

2014/10/29 20:40 誤解を招きそうな部分があったので修正しました。修正場所は脚注から辿れます。 前回はアトミック変数に memory_order を指定した場合について解説しました。今回はフェンスで指定した場合について解説します。

C++11のmemory_orderの使い分け (2)

2014/10/23 12:20 一部用語を修正しました。*1*2 前回はメモリバリアで保証できる範囲について説明しました。今回はメモリバリアの使い方を説明します。 *1:read-modify-write アルゴリズム → read-modify-write 命令 *2:読み込み → 読み取り

C++11のmemory_orderの使い分け (1)

C++11で高速な同期手法としてアトミック変数やメモリフェンス(普通はメモリバリアと呼ぶ)が追加されました。 これらの命令では memory_order を指定できるのですが、違いが分かりづらいのでまとめてみました。 なお、正確な名前はmemory_order_relaxed、me…

Error: Comparison method violates its general contract! の対処法

FlashDevelopでFlexを用いてFlashやAIRアプリを開発する場合、以下のエラーが出て再ビルド(差分コンパイル)が出来ない問題があります。 Error: Comparison method violates its general contract! Build halted with errors (fcsh). FlashDevelopの実際の画面…

Apache Flexで'adt'が見つからない時の対処法

FlashDevelopとApache Flexの組み合わせでAIRアプリを作るときに以下のエラーが出ます。 'adt' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 これはAdobe Flexの時には含まれていたadt.batフ…

Adobe Bracketsのコードヒントが遅いので無効化

今現在JavaScriptのコードをAdobe Bracketsで書いているのですが、JavaScriptのスコープが特殊なせいかコードヒントの表示が非常に重くなっています。それが1文字打つたびに更新されるのでコーディング速度に大きく影響しています。 せめてCtrl-Spaceを押し…

Android2.2(API8)以前で1MB以上のファイルを埋め込む

Android 2.2 (API 8)以前では一部のファイルを除いてresフォルダ、rawフォルダ、assetsフォルダ全てで1ファイルあたり1MBまでという制限があります。そのため、フォントの埋め込みなどで困ることがあります。 厳密には1MB以上のファイルを埋め込めないのでは…

(Android)minSdkVersionを9にする4つの理由

厳密には9以上にする理由です。minSdkVersionが9以上と8以下では大きな差がある、ということを説明しようと思います。 (補足: API 8 = Android 2.2, API 9 = Android 2.3)

Androidの文字サイズで使われるspの倍率

Androidアプリの開発者なら文字サイズを指定する際に単位にspを使うべきだという話は聞いたことがあると思います。spで指定しておくと、OSで設定された倍率が自動的に掛かるからです。 Android 4.0以降だとOSの文字サイズは「設定→ディスプレイ→フォントサイ…