でらうま倶楽部

バカってゆうか、ゲームを作る事しか能の無いプログラマの、面白おかしな日々を綴ってみる実験。

Emacs 25.2 が登場

photo

コード書いとる?

拙者がコードを書くのに欠かせないテキストエディタ Emacs の新しいバージョン 25.2 が公開されています。

気に入らない箇所は自分で使い勝手を変えられるところと、org-mode の2つがとても気に入って使い続けています。

とくに org-mode は代替が見当たらないので若干困っています。1つのソフトに依存するのはいくない・・・

今回はバグフィックス版らしく、ほとんど変化を感じませんが、GNU Emacs NEWS(C-h n)を見ると若干の機能変更も入っていますね。

いつも使っているビルド用のスクリプトを公開しておくので、
コマンド一発でemacsをビルドしたい人は使ってちょーだい。

また次回!

Cinder0.9.1を使う

18
コード書いとる?

WindowsとmacOSとiOSでいい感じにC++でアプリをかけるフレームワーク Cinder の新しいバージョンが公開されています。

まだ公式なアナウンスはありませんが、Githubからダウンロードできるソースコード一式にはAndroid対応も入ってるっぽい!

ソースコードからのビルド方法(macOS & iOS)

GithubからCinder0.9.1のソースをダウンロード

個別ビルドのためにxcprettyを導入(ビルド中の出力をいい感じに整形してくれるツール)
brew install ruby
gem install xcpretty

boost
最新版のヘッダファイルとライブラリファイルを適切な場所にコピー
glm 最新版をヘッダファイルを適切な場所にコピー

ターミナルで proj/xcode へ移動して osx-build-xcpretty.sh を実行

待つ

公式リファレンスをオフラインで見るには自分でドキュメントをビルドする必要があります。これは docs/readme.md に書いてあります。

OpenGL ES3.0 系のAPIを追加する場合は docs/doxygen/Doxyfile を修正する必要あり。
PREDEFINED             = "CINDER_COCOA" \
                         "CINDER_MSW" \
			 "CINDER_GL_HAS_UNIFORM_BLOCKS" \
			 "CINDER_GL_HAS_DRAW_INSTANCED" \
			 "CINDER_GL_HAS_FBO_MULTISAMPLING" \
			 "CINDER_GL_HAS_TRANSFORM_FEEDBACK" \
                         CINDER_DOXYGEN

以前のバージョンだと commandキーを押すとページトップに勝手に移動してしまう問題があったのだがこれが解決してて嬉しい!macOSで公式リファレンス読んでる時にAPIとかをコピペしようとして「グギギギ・・・」ってなってたんよ・・・

まだ不便なのが、GLMのリファレンスをTOPから直接リンクで辿れない・・・これどうしよう。

ではまた次回!

HTMLで数式を書くにはMathJaxがいいかもしんない

コード書いとる?

自分的に発見があったのでそのメモ書き!

専門学校講師として無事2016年度も終え、悠々自適な日々が始まる・・・と思いきや、なんか色々顔を出しております。ありがたや。
4月8日の『「道具として使う数学」勉強会 #2』も控えてるのでその資料作成もジワジワ進めとるのですが、数学とか物理っていろんな式が出てくるじゃないですかー。分数とか積分とか微分とか!

そんなんHTML書類とかでどうやって書けばいいんじゃぁ!って半ばキレながら資料をまとめてたんですが・・・あれ?ここのサイト、式が画像じゃないぞ??? ってのを見つけました。


41

CSSとか駆使して書いてるのかしらん?? と思いつつおもむろに「ページのソースを表示」

06

そしたら、当該箇所に「MathJax」なる識別子を発見!こ・・・これかも・・・?!

見つけました(笑)


HTMLのヘッダにちょろろっと追記してあとは専用書式に則って式を書くだけじゃないですかー!これは楽だ。

53

こんなんも引用元のサイトだとテキストなんだぜ・・・

テキストだと、拡大表示しても輪郭がギザギザにならないので良い。

書式はLaTeX + amsmathのスタイル・・・(よくわかってない)

ただ・・・テキストをコピペして保存しようとすると、変換前の状態でペーストされますね・・・まぁこれはしゃーない!

スッキリ!

ではまた次回。


GLFWとRetinaと私

コード書いとる?
花粉症でそれどころじゃない人もおるかもね・・・(涙)

OpenGL学習向けにとてもちょうど良い規模のフレームワークGLFW

さてMacBookProに買い替えてちょっと困ったことがありまして。
GLFWがRetina未対応のため、自分で色々実装する必要があったんですな。

WindowサイズやFramebufferサイズからViewportを計算して・・・・
でもこれフルスクリーンの場合どーすんだ? とか、色々悩んでました。

と思ってたらGLFW 3.2.1で暫定的ながら対応してくれてた!

CMakeのビルドオプションに GLFW_USE_RETINA があるじゃないですか!
このオプションを無効にしてビルドしたのでサンプルを動かしたら、思った挙動になってくれてひと段落。

とりあえずRetina対応は保留の方向で! 笑

Githubリポジトリのmasterではこの仕様が廃止されてWindow Hintに GLFW_COCOA_RETINA_FRAMEBUFFER が追加さててるので、次回正式バージョンの時にまた修正が必要ですね。

モヤっと。

ではまた次回!!

文字のラスタライズはfontstashがいいかもしんない

photo

コード書いとる?

macOSとiOSとWindowsで動作するアプリを作るのに重宝してるCinder0.9.0です。

ですが日本語表示が弱くて・・・というか、実行環境ごとにフォントのレンダリング処理を書く実装なので、描画結果が違っちゃうんだよね・・・悩ましい!

ちょっと前まではFreeTypeを使っていたのですがいかんせんライブラリの規模がでかい。と思ってGitHubをウロウロしてたら見つけちゃったよ fontstash

というわけでサンプルを GitHub に上げたので興味のある人は読んでみてください。 ラスタライズとレンダリング処理を分離する良い勉強になりました。

fontstash はC言語で書かれているので久々に見た malloc とか memset とかにドキッとしました。これって・・・恋?!

ではまた次回!

emacsのdiredモードと少し仲良くなる

photo

コード書いとる??

emacsのdiredモードについて少し時間を割いて調べてみたら、さりげなく便利な機能を見つけたのでそのメモ。
  • m     ファイルをマークする(dired-mark リージョン対応)
  • u     ファイルのマークを解除する(dired-unmark リージョン対応)
  • t     マーク状態を反転する(dired-toggle-marks)
  • M-DEL マークを全て解除(dired-unmark-all-files)
  • B     ファイルをバイトコンパイルする(dired-do-byte-compile マーク対応)
  • ^     ひとつ上の階層へ移動
ここ数年、ほとんど動作を確認しないで使っていたので恥ずかしい限り。過去に自作したelispマクロは幾つかお役御免となりました。

dired モードの時に C-h m で詳細なヘルプが出てくるので、それを読めばいいのですが・・・いいのですが・・・!!

すいません言い訳でした!


ではまた次回!

プログラマ向けフォント Ricty 4.1.0 を使う

コード書いとる??

macOSで Ricty 4.1.0 がうまく生成できなかった話の続きです。

こちらの記事を見ながらWindowsで生成しました。

ありがとうございます。バッチリです!!

ではまた次回!

プログラミング用フォント Ricty を更新し・・・失敗

コード書いとる?

ふとサイトに立ち寄ってみたら、プログラミングには欠かせない等幅フォント Ricty が更新されていました。

おー。 Inconsolata 2.0 に対応したのね! というか、Inconsolataの更新に伴った更新とな。

フォントの生成に必要な FontForge は Homebrew 経由でインストール済みなので、いそいそとスクリプトをダウンロードして変換。

で、プレビューしてみてびっくりした!

image


これはアカン・・・慌ててサイト下部の「既知の問題」を読んでみると

macOS で一部の FontForge ビルドを用いるとボールド体の i、j などが不自然に大きくなることがあります。FontForge Open Source Font Editor から最新ビルドをダウンロードし、FontForge.app/Contents/Resources/opt/local/bin/fontforge を用いると解決します。

FontForge公式で配布されている実行ファイルは XQuartz を要求するバージョンなのでそのままでは動きませぬ(T^T)

しばらく様子を見守りましょう。

どんまい!

また次回。

FBX SDK に触れて色々わかってきた事

FBX-Icon

コード書いとる?

まだまだFBXと格闘中です。楽しい!
FBX SDKと格闘すること2週間。いくつかコツのようなものが溜まってきたのでメモがてら書いときます。


文字コード問題
FBX SDKでの文字列の文字コードはUTF-8。公式リファレンス内 "Supported String Formats" にて書かれてます。
これで困るのがWindows。ファイルパスの文字コードがCP932なのでうっかりするとファイルが読み込めない事態に遭遇します。
そこでFBX SDKには文字コード変換用のAPIが用意されているので、それを利用。ありがたい!

// 相対パス(CP932) → 絶対パス(UTF-8)
std::string getUTF8Path(const std::string& path)
{
	// 相対パス → 絶対パス
	char fullPath[_MAX_PATH];
	_fullpath(fullPath, path.c_str(), _MAX_PATH);

	// cp932 → UTF8
	char* path_utf8;
	FbxAnsiToUTF8(fullPath, path_utf8);

	// char* → std::string
	std::string coverted_path(path_utf8);
	// FBX SDK内部で確保されたメモリは専用の関数で解放
	FbxFree(path_utf8);

	return coverted_path;
}


テクスチャのパス
FBX SDKに用意されている FbxPathUtils の関数を使えば、OSごとの差異を吸収してくれて楽だったよ。

FbxFileTexture* texture;   // 初期化済みである事

// フルパスからファイル名を取り出す
//   FbxFileTexture::GetFileName はFBX内に記録されているパス(大抵フルパス)を返却する
FbxString path = FbxPathUtils::GetFileName(texture->GetFileName());


事前処理
シーン内のポリゴンを3角形に分割したり、ノードに含まれるメッシュをマテリアルごとに分割したり、結構事前処理が用意されていてありがたい!
フリー素材から拝借してきたモデルデータに対して「これ3角ポリゴン分割お願い!」ってできないからね〜

FbxScene* scene;     // 初期化済みである事

FbxGeometryConverter geometryConverter(manager);
// TIPS:あらかじめポリゴンを全て三角形化しておく
geometryConverter.Triangulate(scene, true);
geometryConverter.RemoveBadPolygonsFromMeshes(scene);

// TIPS:マテリアルごとにメッシュを分離
geometryConverter.SplitMeshesPerMaterial(scene, true);


メッシュ名
ユニティちゃんのFBXデータで遭遇したのですが、FbxMeshに名前がついていない場合があります。
そん時は親のFbxNodeの名前を拝借するといいかもです(描画時のデータ構造を変更した方が良さそうだ)

FbxScene* scene;     // 初期化済みである事

auto* mesh = scene->GetSrcObject<FbxMesh>(0);
std::string name = mesh->GetName();
if (!name.size())
{
  // FIXME:FbxMeshに名前がついていない場合は親のノードの名前を拝借
  //       1つのノードが複数のメッシュを含む場合に適していない
  name = mesh->GetNode()->GetName();
}


時間管理
アニメーションの時間管理はdouble型で単位は「秒」で扱うと手間が色々省けていいかもです。

FbxTime time;
time.SetSecondDouble(animation_time);

FbxNode* node;     // 初期化済みである事
node->EvaluateGlobalTransform(time);

// 時間を取り出す
double t = time.GetSecondDouble();

こんなところかな。

ではまた次回!!

FBX SDK でモデル描画(ポリゴン編)

FBX-Icon

コード書いとる?

先日から FBX SDK と格闘中。そのメモ書きです(⇒導入編)

このブログを書いとる段階でFBX SDKのバージョンは2017.1。SDK同梱のサンプルコードをモニタに穴が開くかっちゅーくらい、にらめっこしながらテストコードを書きました。

探して見たらオフラインのドキュメントも発見。これでネットに繋がらなくても思う存分格闘できるぜ!

GitHubで公開したので興味のある人は目を通して見でちょ。
 まだまだわからないことが多いですが、まぁ実務で使えるくらいには理解が進んだ感じです。

今回わかったことは、FBX以外の形式も扱えること!
  • Autodesk AutoCAD DXF (.dxf)
  • Collada DAE (.dae)
  • Alias OBJ ( .obj)
すごくね?

FbxSceneからメッシュとかマテリアルを取り出す場合は、FbxNodeを辿らなくても以下のように取り出せる。
 
FbxScene* scene;    // ←適切なデータが格納されている状態である事

// シーンに含まれるメッシュ数
int meshCount = scene->GetSrcObjectCount<FbxMesh>();

for (int i = 0; i < meshCount; ++i)
{
  FbxMesh* mesh = scene->GetSrcObject<FbxMesh>(i);
  // なにがしかの処理 
}

// シーンに含まれるマテリアル数
int materialCount = scene->GetMaterialCount();

for (int i = 0; i < materialCount; ++i)
{
  FbxSurfaceMaterial* material = scene->GetMaterial(i);  
  // なにがしかの処理 
}

楽!!!

FbxMeshから頂点座標以外のデータを取り出す方法もだいぶん簡略化できる!

FbxMesh* mesh;      // ←適切なデータが格納されている状態である事

FbxArray<FbxVector4> normals;
// normalsに、頂点ごとの法線を格納してくれる
mesh->GetPolygonVertexNormals(normals);

// 頂点に格納されている全UVセットを名前で取得
FbxStringList uvsetName;
mesh->GetUVSetNames(uvsetName);

FbxArray<FbxVector2> uvsets;
// uvsetsに、頂点ごとのUVを格納してくれる
mesh->GetPolygonVertexUVs(uvsetName.GetStringAt(0), uvsets);

めっちゃ簡単やん!

マテリアルから値を取得する場合は以下のように書くといいらしい・・・。

FbxSurfaceMaterial* material;    // ←適切なデータが格納されている状態である事

// 引数に欲しい情報を指定して検索する
FbxProperty prop = material->FindProperty(FbxSurfaceMaterial::sAmbient);
if (prop.IsValid())
{
  const auto& color = prop.Get<FbxDouble3>();
  // 何がしかの処理
}

みたいな感じでテストコードを書いたので、参考にするといいよ。

スケルタルアニメーション編に続く・・・(まだ格闘中)


ではまた次回!!!

東ゲ部で数学な勉強会を催してみて


IMG_3011

コード書いとる?

先日コワーキングスペース茅場町Co-Edoにて、勉強会を催しました。
内容は、中学〜高校あたりで習うであろう数学的な知識を抜粋して「こういう局面で使うと便利だよ!」というのを簡単なサンプルを交えてみんなに体感してもらうというものでした。

IMG_3009

勉強会の最後に各自簡単な作品を作ってもらったのですが、これが思った以上に出来が良くて「しまった、本日の進捗としてどこかにアップロードしてもらえたら・・・」というのが今回の反省点です。東ゲ部、もう少し酒と食べ物以外の進捗も増やしていきたいですからね。

IMG_3014

場所を提供していただいたCo-Edoさんは普段の設備使用料(1000円!!)だけで、気軽に勉強会を催せるのがとても魅力!勉強会の後の懇談会も一人2000円程度でいい感じにピザとか頼んでくれます!(ありがとうございました!)

また機会があれば催したいです。

ちょいちょいLive2D勉強会GLSLスクールも催されておりますので、そちらに興味のある方も是非!

年明けにはGlobal Game Jamも催されまっせ!

IMG_3015

さて私はひょんな事から(話せば長くなるので割愛)、今年の5月あたりに東ゲ部入りしたのですが、自主的な集まりなのに、こんな感じに毎月なにがしか催しがあって素敵です。自分も何かしなくちゃ!と背中を押されます。

一見さんお断りではなく一見さんいらっしゃい的な感じも良いですね。部長をはじめとする主要メンバーの配慮の賜物だと思います。ひとりで来てもこわくない!

もし 東ゲ部 に興味を持っている人は、是非もくもく会に参加してみてください。各自Co-Edoに集まってもくもくと作業を進めるだけなのですが、東ゲ部の雰囲気とか方向性とかを感じてもらえると思います。

知識の定着率は講義ではたったの5%なのが人に教えると90%に達するとの研究結果もありますので、東ゲ部で気軽な教え教えられの環境が育っていくのを楽しく見守っていこうと思います。

そろそろ茅場町近辺に引っ越したいのですが、何かいい物件は無いものでしょうか・・・(家賃6万円程度を希望)

ではまた次回!

FBX SDKに触れる

FBX-Icon

コード書いとる?

もういよいよFBXを避けて通れなくなってきたので、エイヤっと導入してみました。

FBX怖くない!

というわけで、導入記メモ。

まずは公式サイトからSDKをダウンロード。ネットで「FBX SDK」とかで検索して出てくるサイトはなぜだか古いので注意。

最新版をゲットするなら公式サイトから! ユーザー登録の必要はありません。たぶん。

FBX SDKの最新版はブログを書いてる時点で2017.1。自分の開発環境に合わせたSDKをダウンロードしましょう。特にVisualStudio版!

そしたら、開発環境にインクルードファイルとライブラリのパスを通したりします。

VisualStudio
・追加のインクルードディレクトリ
C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\include

・追加のライブラリディレクトリ
C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\lib\vs2015\$(PlatformTarget)\$(Configuration)

・リンカー→追加の依存ファイル
libfbxsdk.lib

・ビルド後のイベント
DLL形式を使うので、実行ファイルと同じ場所にDLLファイルをコピーする
copy "C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\lib\vs2015\$(PlatformTarget)\$(Configuration)\libfbxsdk.dll" "$(OutDir)"
 

Xcode
・Header Search Pathsに追加
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/include

・Other Linker Flagsに追加
Degubビルド
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/lib/clang/debug/libfbxsdk.a
Releaseビルド
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/lib/clang/release/libfbxsdk.a

以上の設定が終わったらサンプルコードを追加してビルドが通るか試してみましょう。ビルドでっきるっかなー。

#ifdef _MSC_VER
// FBX SDKをDLL形式で使うと定義
// TIPS:fbxsdk.hをインクルードする前に定義する
#define FBXSDK_SHARED
#endif

#include <fbxsdk.h>                // FBX SDKのヘッダーファイル

// TODO:以下のコードを適切な場所に追加する

// FBX SDKを生成・初期化
FbxManager* manager = FbxManager::Create();
assert(manager);

// 読み込み機能を生成
FbxImporter* importer = FbxImporter::Create(manager, "");
assert(importer);

if (!importer->Initialize("hoge.fbx"))
{
  // 読み込み失敗
}

// 読み込み用のシーンを生成
FbxScene* scene = FbxScene::Create(manager, "");
assert(scene);

// ファイルからシーンへ読み込む
importer->Import(scene);

// FbxImporterはもう使わないのでここで破棄
importer->Destroy();

// 
// シーンから必要な情報を取り出す処理を書く
//

// シーンを破棄
scene->Destroy();

// FBS SDKを破棄
manager->Destroy();

続きます。

ではまた次回!

boost::optional が便利

30
コード書いとる??

今更ながら boost::optional が便利です。

コンテナの中から一番小さい値を探す時とか簡潔に書けるぜ!

std::vector<int> value = { 1, 2, -3, 4, 5 };
boost::optional<int> min_value;
for (auto v : value)
{
  if (!min_value || min_value > v) min_value = v;
}
std::cout() <<  *min_value << std::endl;

値を取り出す時にポインタっぽく書く以外は、普通の変数と同じ感じに書けて素敵。

ほんと今更感。でもいいじゃん!

ではまた次回。 

Emacs 25.1 と macOS と 私


photo

コード書いとる??

先日ついにリリースされた Emacs 25.1 ですが、まぁ快適快適!! (そんなに変化はないのだが)

みんなはどう?!

拙者は パッチを当てて macOS でビルドして使っておりますが、まぁ拍子抜けするくらい順調です。最近はHomebrewとかでビルド済みバイナリも配布されているようですな。ありがたや。

しばらく使ってみた結果、init.elにいくつか修正箇所があったのでそのメモ。

  1. mac-auto-ascii-mode に nil 以外が格納されていると、日本語入力モードの時にショートカットキーを操作してイラっとする状況が減ります(笑) カスタマイズ機能を使って設定設定。
  2. Infoのパス設定が微妙な感じになってしまっていたので修正。 色々調べた結果、こんな感じにお上品に書く手法を見つけました。ネットの集合知ありがたい。
またそのうち書きます。

ではまた次回!!

Emacsで「対応する括弧へカーソル移動」修正版

photo

コード書いとる??

Emacs 25.1が待ち遠しいですね。

さて今回は、ちょっと前にGistで公開した「対応する括弧へカーソル移動(Vz風)」というマクロを修正した話です。


対応する括弧へカーソル移動(Vz風)は、読んで字のごとく、対応する括弧へカーソルを移動するマクロです。

C++でコードを書いてて、ブロックのネストが深くなってきた時とか、ブロックの規模が大きくなってきた時に威力を発揮してくれるのですが、これがいかんせん汎用性がない。括弧の文字コードがハードコーディングされてるので、他のプログラミング言語やHTMLに対応させようと思ったらその都度マクロに手を入れる必要がありました。

これを解決するため「カーソル位置の文字が括弧かどうかを判別できないかしらん」と考えていた矢先、本当にお世話になっているブログ「日刊Emacs」で先日こんな記事を見かけました。


ウヒョ!! これだ!!!!

というわけで早速修正。



すっきり!! なんでもこーい!!!!


ではまた次回。

レイトレ合宿4!? 無事完了

photo1

コード書いとる??

レイトレ合宿4!? も無事完了!! 今回もめちゃめちゃレベルが高くとても有意義な時間を過ごせました。

とにかく景色が最高!! 道端にごくフツーにハイビスカスが咲いとるとか、ヤシの木が生えとるとか、露天温泉から海が見えるとか、肉眼で天の川が見られるとか、人生初の八丈島は発見の連続でした。

photo2

「海面のスペキュラの感じがたまらん」「さすが南国は彩度が高い!!」「すっげぇ・・ハイビスカスの赤が飽和しとる!!」とか秀逸なコメントの連続でみなさん勉強熱心ですよね。

photo5

拙作は惜しくも入選を逃しまして、次回こそはと雪辱を誓うのであった・・・。

photo3

さて詳細は公式サイトを見ていただくとして今回拙作はレイマーチングによるレンダリングを自作しました。

photo4

また、新たな試みとしてマルチスレッド化をOpenMPにお任せしてみたのですが、Widnows版はMSYS2+MinGw64のgccが対応していたのでよし、OSX版はXcode付属のclangが対応・・・していない!!

ので、Homebrew経由でgcc6.0.2をインストールしました。ただ標準だとOpenMPに対応していない(標準ライブラリのマルチスレッド対応と喧嘩する)ので
 
brew install gcc --without-multilib

として、もちろんフルビルド!! あはははは!!!!

これで事なきを得ました。


ではまた次回!!

MSYS2とMinGW-w64で快適gcc環境

コード書いとる??

レイトレ合宿4!?もいよいよ明日からです。
拙者の作品もなんとか間に合いまして、2日間の合宿を楽しく過ごせそうな予感!!

今作品はOSX上で開発して、最後にWindows向けにビルドしたのですが、その時の顛末をメモ書き。


提出期限が迫ってきた時の話です。

「あれ?? OSXで開発を進めてたけど実行環境はWindowsじゃん!!」

拙者が使っているMacBookには仮想マシン上で動作するWidnows8が入っています。業務でエクセルを使うための措置なのですが、VisualStudioが入っていない!!

今からVisualStudioを導入すると確実に1日ロストします。締め切り直前でそれは痛い!!

そこでふと思い出したのがMSYS2+MinGW-w64。ずっと以前、emacsをWindows上でビルドするのに使ってたっけ...確かgccだったよな...そうかその手があったか!!


MSYS2はざっくり言うとWindowsで動作するUnixシェルとかアーカイブツールとかをまとめたものです。んで、MinGW-w64の方はGCCとかmakeとかの様々なGNUのツール群をWindowsに移植したもの。

という訳で公式からMSYS2のインストーラーをダウンロードしてインストール。迷わずx86_64版を選択。この記事を書いてる時点でインストーラーのファイル名は msys2-x86_64-20160205.exe でした。

標準設定のインストール先は C:\msys64 です。ここは変えずにインストール。インストールが完了すると MSYS2 Shell が起動します。ようこそ!!!!
 
test

今回はGCCの導入が目的なので特に設定などは触りません。

インストールが完了してMSYS2 Shellが起動したらまず最初に行うこと。それはMSYS2の内容を最新版に更新することです。公式にその手順が書いてある...のが若干微妙で、ここにかいてある手順でうまくいった。
pacman -Syuu
この後MSYS2シェルを終了してもっかい起動しようとすると...なぜか起動しない。msys2_shell.batが削除されているのが原因なのですがなぜ?? (どうやら最近仕様変更があった模様)

代わりにmsys2.exeができてるので、これを使えば良さそうだね。

pacmanはMSYS2のパッケージ管理システムです。システムを最新の状態にしたり、新しくアプリを追加したりする時に使います。

・簡単なテキスト編集用にvimを導入
pacman -S vim

・/etc/pacman.conf 内のMinGW32の設定はいらんのでコメントアウト
#[mingw32]
#Include = /etc/pacman.d/mirrorlist.mingw32

・GCCの導入
pacman -S mingw-w64-x86_64-toolchain

はいオッケィ!! OSXで書いてたコードがWindowsでビルドして実行できるようになりました!!

test

gccを使う場合はmingw64.exeで起動するシェルだと諸々パスが通っているので楽。

出来上がった実行ファイルをMSYS2の入っていないWidnowsで動かすには、いくつかDLLが必要になることもあるので注意。(MSYS2をインストールした先にあります)


ではまた次回!!

レイトレ合宿4!? アドベントカレンダー

ph01

レイ飛ばしとる??

いよいよレイトレ合宿4!?が近づいてきてますな。

参加者の皆さんはきっと、すでに思い思いのレンダラを完成させ、その先の高度な心理戦が始まっていることと存じ上げます。

そこで今回は初離島ということで、開催地の八丈島について少し調べてみました。

レイを飛ばすにはまず味方から!!

八丈島の行政区分は東京都。東京都下ってことか。東京都知事選挙の投票も行われます。遠い。隣にある八丈小島と区別するため八丈本島もしくは八丈大島と呼ばれることもあるそうな。

Landsat_Hachijojima_Island

八丈島が2つの火山が接合した島だったというのには驚きました。ちゅーても最後の噴火は1605(慶長10)年らしいのですが。その火山のおかげか温泉がいたるところにあるらしい。思いっきりレイを飛ばした後の温泉..!! 気持ち良さそうですな。

青い空の下に広がる真っ白な砂浜...というのはほとんどなく、代わりに荒々しい岩場の海岸が多いんだそうで。深夜小型ボートで上陸する場合には注意が必要ですな。

49

年間平均気温は17.8度。高温多湿、風が強く雨が多いんだそうな。っても8月は降水量が最も少ない月なので、念のために傘持参くらいの気持ちで行ったら良さそうです。

空路はANAが1日3便運航。出かける場合は早めに航空券を手配した方が良さそうですな。先月拙者が手配中にどんどん席が埋まっていき戦慄を思えたのが記憶に新しいです。

特産品は「くさや」「明日葉」「焼酎」「黄八丈」「シンノウヤシ」「パッションフルーツ」「ぶど」「島寿司」

Shimazushi_in_Bonin_Islands

レイを飛ばす前にまず島寿司で腹ごしらえをしたいところです。
 
Niijima_kusaya

激辛好きなので、こちらのくさやの瓶詰めも気になりますね。

レイを飛ばすのに夢中になる気持ちはわかりますが、初めての離島も大いに楽しみましょう!!

では良いレイを。

emacs25.1 RC1 を試す

35

コード書いとる??

いよいよemacs25.1のリリースが近づいてきてますな!!

そこで先日リリースされたemacs25.1 RC1のビルドと変更点についてのメモ書き。

ビルドは、いつものようにこちらで紹介されているCarbon版のパッチを当ててから。
(いつもありがとうございます!!)
  1. 本家からemacs 25.1 RC1をダウンロードして解凍
  2. autogen.shを動かす(configureその他が生成される)
  3. 前述のパッチを当てる
  4. ./configure --with-mac --without-x
  5. make
  6. make install
だいたいこんな感じの手順。詳しくはリンク先の手順を参考にしてちょ。
日本語入力の文字のちらつきが解消されていたり、その他OSX専用処理が追加されていたりします。

変更点などはNEWSを参照英語という名の日本語で詳しく書いてあるよ!!

emacs25.1 RC1を触ってみて気づいたのは以下のようなところ。
  1. shell 画面半分
    これまでの挙動に戻すにはこうする
        (add-to-list 'display-buffer-alist
    	    '("^\\*shell\\*$" . (display-buffer-same-window))) 
  2. スクラッチパッド箇条書きが赤くなった
    1) こんな感じになる...
    若干微妙なので解除したい... 
  3. set-buffer-file-coding-system の指定で utf-8-s TAB でinternal error
    いい加減バグレポしますw 
  4. 対応するカッコのfont-lock
    (show-paren-mode 0) はグローバルな設定になったので代わりに 変数show-paren-modeをバッファローカルにして対応 
  5. C++11対応
    さいこうです!!!! 
  6. comment-line
    コメントのON/OFFが簡単になった 
  7. fast-but-imprecise-scrolling
    爆速スクロールを有効にする変数ができた 
  8. isearch
    変数search-default-modeで検索時のモードを指定できる!! 
  9. dired
    Zでファイル単体、cでマークしたファイルを圧縮(でもファイルが削除される) 
  10. elisp関数や変数の上にカーソルを置くとモードラインにHELPが表示される
    これめっちゃ便利!! 
  11. 日本語入力が点滅する
    Carbonパッチなら問題無し 
  12. Helpのクオートが見やすくなってる
    text-quoting-styleで変更できる。見やすい。 
こちらにも詳しく書いてありますな。多謝。
はぁぁぁ!!正式版が待ち遠しい!!!

ではまた次回!!

El CapitanにRictyを導入してみたメモ

コード書いとる??

MacBook Pro Retina 13inchを買って一ヶ月くらいです。RetinaかわいいよRetina。
拙作フレームワークはちゃんと動きませんが。

これまでemacsの文字フォント設定はMenlo+Rictyでした。

22
 
それで問題なかったのですが...よっくみると行間のスペースが若干違っててズレる!!

40

画像で見ても全くわからんw でも、2ピクセルくらい、行の高さが違うんよ。

気にするレベルではないのですが、モードラインが微妙にガタつくのが気になって気になって仕方がない...!! もう無理!!

以下「Rictyも新しくなってるし、もっかい生成してみるかね...」というメモ。

Rictyの配布サイトはGitHubからこちらへ移動してました。
ここの説明を読んで手順通り進めればまずRictyが手に入ります。OSXならね!!
  1. 所定のフォントをインストール
  2. homebrew経由でコマンドライン版Fontforgeを導入
  3. Ricty生成スクリプトを走らせる
作業時間15分くらい。楽!!

emacsでのフォント設定は以下のようにした。楽!!
 
(set-face-attribute 'default nil
                    :family "Ricty"
                    :height 180)

org-modeとかで表示がズレないし、本当にいい時代になったものですなぁ。
 
16

さっそくXcodeとかターミナルのフォント設定も変更してみた。
31
溢れる統一感。

ではまた次回!!

記事検索
このブログを書いとる人
電子書籍発売中

「チュートリアル形式で始めるOpenAL」
サウンド怖くない。C++による8つのチュートリアルで始めるOpenALプログラミング。さああなたも、自作アプリに魅力的な音効を添えてみませんか??
⇒Kindle版 ⇒iBooks版


「iPhoneアプリ『ういろう』のレシピ」
ゲームってどうやって作ってるの?? 拙アプリ『ういろう』の製作過程を本にまとめました。もちろんソースコードつき
⇒Kindle版 ⇒iBooks版


『チュートリアル形式で始めるOpenGL[2D編]』
OpenGL怖くない。C++による16のチュートリアルで始めるOpenGLプログラミング[2D編]。さああなたも、ゲーム作りを始めてみませんか?
⇒Kindle版 ⇒iBooks版
自作ゲーム配信中

『BRICK & TRIP』
咄嗟の判断に、あなたの指先はついてこれるか?! 爽快フリックアクション!! 様々な難関をくぐり抜けて旅の終着点を目指そう!!
⇒AppStore


『ういろう』
名古屋土産ういろうがiPhoneで大活躍?! 白ういろうを守れるのはあなただけ。ひゅーん、ぼよよーん!!
⇒AppStore ⇒LITE版


『こなへん』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒AppStore ⇒LITE版


『GEOSPOT』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒Windows ⇒Mac


『TieGunner』
マウス片手に大宇宙へ飛び立とう!『しっぽシューティング』というジャンルを作って頂きました^^; WinでもMacでも動きます。ソースもあるでよw
⇒Windows ⇒Mac
監修を担当しました

QRコード
QRコード
  • ライブドアブログ