2014年5月23日金曜日

Texture Designer ver 0.1

画像処理ソフトのver0.1を作ってみました.

CGソフトで使うためのテクスチャ作成に特化させるつもりです.

ダウンロードはこちら.
https://sites.google.com/site/cryphous/download



とりあえずの機能
  • bmp, png, jpeg などの画像ファイル入出力
  • グレースケール化
  • ブラー、水平ブラー、垂直ブラー
  • プレビュー

今後追加したい主な機能
  • アルファ編集
  • 各種フィルタリング
  • ドラッグドロップ
Q 機能すくなくね?
A うん.これから増やすよ!

2014年5月15日木曜日

wxWidgetsを Visual Studio 2012 でビルドする方法

https://www.wxwidgets.org/downloads/

からソースコードをダウンロードします.
ファイルを適当なディレクトリに展開し,

\wxWidgets-3.0.0\build\msw

にある

wx_vc10.sln

を Visual Studio 2012 で開きます.

変換ウィザードが出ますが,そのまま続行してOKです.

[ビルド] -> [ソリューションのリビルド]

でビルドすれば.libや.dllができあがりです.



ついてにサンプルファイルもビルドして動作確認しましょう.

\wxWidgets-3.0.0\samples

にある

samples.dsw

を Visual Studio 2012 で開きます.

同じく変換ウィザードが出ますが,そのまま続行してOKです.

一番上にある about を選んでビルドします.

こんなダイアログがでればOKです.

2014年5月14日水曜日

wxWidgets

http://www.wxwidgets.org/

C++のクロスプラットフォームGUIライブラリです.

Qtが圧倒的なシェアをもっていますが,隠れた(?)良ライブラリです.

Visual Studio 2012 でコンパイル,ビルドしてみたのですが,
ほとんどワーニングがありませんでした.

利点

  • サンプルコードが豊富
  • ソースがまとまっている(ほとんど警告がでない)
  • ライセンスが緩い(LGPL、商用利用可)
  • 豊富なGUI
  • ビルドしやすい


欠点

  • 日本語資料が少ない
  • 英語資料でもサンプルコード以外はイマイチ


というわけで、このブログでインストール方法とかサンプル解説とか沢山していくよ!

2014年5月12日月曜日

GLSL Editor for OpenGL (ver0.1)

しっくりくるのが無かったので,
GLSL用のシェーダエディタを作ってみました.

(Webアプリなら多いんですけどね)

OpenGL3.0対応のグラフィックカードが必要です.

OpenGL3.0は,ここ数年のならIntelのGPUでも対応していますが,
それ以前のだとNVIDIAやATIのGPUでないと対応していません.

コンパイル結果,リンク結果が確認できます.

個人的に,GLSLソースに文法上の問題が無いか確認するときに使っています.
ハードウェア毎にGLSLの処理系が異なるので,思ったより使えるかと.

現在のところ肝心の描画機能はありません.
近く追加していきます.

実行ファイルはこちら.
https://sites.google.com/site/cryphous/download/

そのうちソースも公開します.

Q ただツリーからエディタ表示して,OpenGLでコンパイルしてるだけじゃね?
A Yes, you are right!

今後追加したい機能
・ハードウェア対応確認
・描画機能
・構文解析機能
 ・予約語色付けとか

継続的にバージョンアップしていきます.

2014年5月9日金曜日

レガシーコード改善ガイド

レガシーコード改善ガイドを読みました.

http://www.amazon.co.jp/dp/4798116831/ref=pd_sxp_f_pt


著者の主張にほぼ全面的に賛成なのですが,一つだけ意見を.

この本には,

単体テストがないコードはすべて壊れていると疑え.

という主張があります.

これは崇高な理念でありますが,少々行き過ぎだと思います.

たとえばスパゲッティーコードを作るプログラマーが単体テストを書いても,
あまり良い結果にはなりそうにありません(というかテストコードもスパゲッティ化してしまう).

たとえばコンパイラ付属の標準ライブラリ(STLとか)は単体テストが通常ついていませんが,
どの関数も単体として非常に簡単にテストすることができます.

これを踏まえて,

テスタブルでない(単体テスト不可能な)コードは壊れていると疑え.

の方が現実的だと思います.

つまり依存関係を少なくする,事前のおまじないを最小限にする.といった基本的なコーディングをすることですね.

ともかく,とても良い本なのでお勧めです.

2014年5月8日木曜日

ブログはじめました

はじめまして.

黒い猫と申します.

C++で,とある新しいソフトウェアを作っています.

このブログでは,その過程で考えたこと,勉強したことをメモしていこうと思います.

プログラミングは日々勉強だと思いますので,

そこはちがくね?ってことがありましたらコメント歓迎です!

よろしくお願いします.

ヌルポインタ

これまでは NULL や 0 で ヌルポインタ をあらわしてきました.
しかし,
NULL : 処理系依存.(0とは限らないですよ!)
0 : 数値を代入しているのかヌルポインタを代入しているのかが一見してわからない.
という問題がそれぞれあります。

スマートポインタが強化されため、生のポインタを直接使う機会は少なくなりそうです.
それでもC API や C++99 の API ライブラリを使う際には必要となるかと.


たとえば、
[C++03]
Widget* w;

void destory()
{
delete w;
w = NULL; // あるいは w = 0;
}

void create()
{
if( w == NULL ) {
w = new DialogWindow();
}
}

[C++11]
Widget* w;

void destory()
{
delete w;
w = nullptr;
}

void create()
{
if( w == nullptr ) {
w = new DialogWindow();
}
}