syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

2014-01-01から1年間の記事一覧

IronPython備忘録

(これは2012-04-21に書いた故OCNブログの記事を移植したものです)しばらく使わないと忘れるので、備忘録ついでにC#との比較を少し載せておきます。 Visual C#プロジェクトの参照設定に相当するコード: import clr clr.AddReferenceByPartialName("System.…

Visual Studio 2010 SP1とF#

(これは2011-06-10に書いた故OCNブログの記事を移植したものです)VS 2010 に SP1 を適用すると、適用前までは OK だった Microsoft.FSharp.Math.Matrix.init メソッドの呼び出し時に MissingMethodException 例外が発生するようになってしまった。ここで、…

ダウンキャストに潜む罠

(これは2012-05-18に書いた故OCNブログの記事を移植したものです)C++のダウンキャスト(特に多重継承した場合)にまつわるお話です。例えばこんな感じ。 #include <cstdio> #include <conio.h> class Base1 { protected: virtual ~Base1() { puts(__FUNCSIG__); } }; class </conio.h></cstdio>…

C関数のis*系ルーチンの注意点

(これは2012-06-03に書いた故OCNブログの記事を移植したものです)C言語の <ctype.h> もしくはC++の <cctype> におけるisdigit(), isalpha(), isalnum(), isupper(), islower(), isspace(), ...とかの話です。もともとこいつらは引数の型がcharではなくintになっているんです</cctype></ctype.h>…

WPFレイヤードウィンドウのヒットテストを無効化

(これは2012-08-24に書いた故OCNブログの記事を移植したものです)WPFでレイヤード ウィンドウを作る場合、 WindowStyle="None" Background="Transparent" AllowsTransparency="True" のように設定するだけで簡単に実現できます。ピクセル単位のアルファ透…

AFX_EXT_API/AFX_EXT_DATA/AFX_EXT_CLASSの罠

(これは2012-06-05に書いた故OCNブログの記事を移植したものです)Visual C++のMFC拡張DLLを使って名前空間レベルのグローバル関数・グローバル変数やクラスそのものをエクスポートするとき、以下のような感じでマクロを使って宣言部を修飾してやれば簡単に…

XAMLルート要素のプロパティのローカライズ

(これは2012-06-19に書いた故OCNブログの記事を移植したものです)コレ、結構悩んだんですが、WPFにおいてWindowとかUserControlとかPageとかのルート要素のフォントなどをローカライズするためにリソース文字列を指定するには、(Attribute Syntaxは使わず…

不定値IND・非数NaNと浮動小数点演算速度

コードの単体パフォーマンステストをやっていて興味深い現象に遭遇しました。 演算途中で発生した不定値 IND (indeterminate value, -1.#IND) や、非数 NaN (not a number, 1.#QNAN) をそのまま計算に使い続けると、環境によっては正常値で演算する場合と比…

七色ヶ丘のれいなお

スマイルプリキュア! - 「七色ヶ丘のれいなお」/「sygh[sai]」のイラスト [pixiv]スマプリひさびさに描いてみました。自分は全プリキュアの中でもキュアビューティが一番好きです。

2次元の同次変換行列

(これは2012-08-04に書いた故OCNブログの記事を移植したものです)MSDNにあるDirect2Dの付録ページ(英語版はこちら)に書いてある、2次元の回転の3x3同次変換行列の数式が2012年8月現時点で間違っているので、とりあえず正しいものをC言語構造体っぽい形式…

C++コンストラクタの初期化子リスト

(これは2010-09-24に書いた故OCNブログの記事を移植したものです)ちょっとしたマイナーテクですが、C++においてクラスのメンバー変数をコンストラクタでゼロクリアする際、下記のように書けます。 class SomeClass { struct Vector3 { float x, y, z; }; i…

メンバー変数命名規則

(これは2010-10-20に書いた故OCNブログの記事を移植したものです)自分はC++の場合、classメンバー変数の命名規則として、ずっと m_ プレフィックスを付けるようにしています。 ただし、すべてのメンバーを外部公開するstructメンバー変数(ここでいうstruc…

LightWaveのノーマルマップ

(これは2012-04-30に書いた故OCNブログの記事を移植したものです)このあたりを参考にして、Photoshop CS5 + NVIDIAプラグインを使って作ったノーマルマップ(法線マップ)を、LightWave v9で使おうとしてるんだけど、レンダリングするとどうもノイズが乗っ…

Happiness bringer girl

ハピネスチャージプリキュア! - 「Happiness bringer girl」/「sygh[sai]」のイラスト [pixiv]普段あまり描かない、ちょっと横長の絵を描いてみました。相変わらず画力が足りなくてめぐみちゃんの魅力を表現しきれてません……

MIFES 9の拡張子関連付けとアイコン

(これは2013-05-01に書いた故OCNブログの記事を移植したものです) 自分が愛用してるテキストエディタはMIFESです。学生時代にバージョン7を購入して以来、ずっとバージョンアップを続けながら仕事でも趣味でも使ってます。やや高価ですが、すぐにモトは取…

Android SDKエミュレータでOpenGL ES 2.0

(これは2013-06-01に書いた故OCNブログの記事を移植したものです)仕事で少しだけ Android(主に OpenGL まわり)に携わることになったんですが、OpenGL ES 2.0 開発環境を構築するのに少々手間取ったのでメモを残しておきます。最終的には PC 上で OpenGL …

Windows言語設定の取得API

(これは2013-05-17に書いた故OCNブログの記事を移植したものです) Windowsで各種言語設定を取得するとき、いくつかのよく似たWin32 APIがあるんですが、それぞれ微妙に結果が異なるので注意が必要です。代表的なのは下記の6つ。 LANGID GetSystemDefaultLa…

OCN(ブログ)終了のお知らせ

最低ですね……今年の11月にはブログサービスを終了するらしいです。 もともとOCNブログには機能的な不満があったので去年の末あたりからはてなブログに移行を試みていたんですが、サンプルソースコード一式のZIPファイルなど、画像以外のデータファイルをアッ…

そろそろX線技術関係者としてひとこと言っておくか

X線関係部署への転属が決まって1年経ちました。自分はほぼ完全なソフトウェア、しかもアプリケーション屋なので、線量測定バッジを付けて作業するようなことはハードウェア屋の人に比べると少ないのですが、漠然とした不安はあります。どうしてこうなった………

コンピュートシェーダーでGPUパーティクル

DirectX (Direct3D) のコンピュートシェーダー (Compute Shader, DirectCompute) には4バイト (uint) 単位で要素アクセスが可能なByteAddressBuffer/RWByteAddressBuffer (BAB) というデータ型があるんですが、DirectXにおいてGPUで頂点バッファの内容を直接…

The Lovely Knight of the Princess

ハピネスチャージプリキュア! - 「Lovely Knight of the Princess」/「sygh[sai]」のイラスト [pixiv]このふたりがもうすごく可愛すぎて生きているのがつらいです。 第1話観た時点では「ダメだこの子……はやくなんとかしないと」と思ってたんですが第6話→第7…

DirectX 12

ついにDirectX 12来ました。このときをどれだけ待ち望んだことか。マイナビとかの速報ははっきりいって役に立たないゴミ記事ですが、doope!はわりとまとまってます。 個人的にはOptiXやOpenRLのようなレイトレーシング関連の機能が標準化されると予想してた…

HLSLの行列乗算がmul()関数な理由

GLSLでは行列の乗算に*演算子を使います。 // GLSL mat4 mTransformA; mat4 mTransformB; vec4 vIn; vec4 vOut = mTransformB * mTransformA * vIn; 一方HLSLではmul()関数を使います。 // HLSL float4x4 mTransformA; float4x4 mTransformB; float4 vIn; fl…

末尾空白を取り除く正規表現

自分は他人の書いたソースコードを読んでいていつも気になるんですが、空白文字(ホワイトスペースやタブ)だけがずらーっと並んだ空行とか、行末尾に余計な空白文字がだらだら並んでるコードがありませんか? Visual Studioみたいにデフォルトで空白文字や…

Thank you for a lovely time!

ドキドキ!プリキュア - 「Thank you for a lovely time!」/「sygh[sai]」のイラスト [pixiv]1年間ありがとうございました。「ラブリンク」はとても良い歌なのでみんなCD買ってねドキドキ!プリキュア 後期エンディングテーマ(DVD付)アーティスト: TVサントラ…

Visual C++とUTF-8マルチバイト

Visual C++ (MSVC) には #pragma execution_character_set("utf-8") というプラグマがあって、これを使うとコンパイル時にマルチバイト文字列リテラル(プレフィックスなしの"XXX")をOSのANSIコードページ文字列リテラル(Shift_JIS:CP932とか)ではなくUTF…

map/unordered_mapのキーにカスタムデータ型を使う

C++の標準ライブラリではテーブル(連想配列)系のコンテナとして、ツリー実装のset/map/multiset/multimapが使えます。またC++11規格では、新たにハッシュテーブル実装のunordered_set/unordered_map/unordered_multiset/unordered_multimapが使えるように…

BGRA/RGBAに関してそろそろ一言いっておくか

世には4つのカラーチャンネル(Red, Green, Blue, Alpha)をサポートする画像フォーマットは数多あるのですが、整理も兼ねて Direct3D や OpenGL のテクスチャ フォーマットとの関連に言及しながらまとめてみようと思います。早速ですがいきなりサンプルコー…

LightWaveで色付き半透明マテリアル

LightWaveの基本マテリアルエディタではカラー設定ができるのはMetasequoia同様1か所だけで、Shadeのように半透明色を指定することはできません。色付きのガラスや液体を作るためには、ノードエディタを使います。 v9.2以降のLightWaveでは[Materials]→[Diel…

CUDAでテクスチャ

前回の記事では CUDA の線形メモリ(Linear Memory, cudaMalloc() で生成)を使って FP16 浮動小数点数値を格納しました。 今回は CUDA の Array と Texture を使って、0x0000 ~ 0xFFFF の範囲の 16bit 整数値(ushort)を正規化して 0.0 ~ 1.0 の範囲の 32b…