WordPressのテーマを入れ替えてみました。

元のCSSが白バックの黒文字だったのを黒バックの白文字にしたので、ところどころうまくいってないところがありますが、ご愛嬌ということで。

ついでなので、TwitterとかFacebookの連携も試してみたんですが、結構めんどくさいですね…。

 

Visual Studio 2005/2008 でメモリリークの検出方法に関して、

MSDNに以下のような記述があります。
http://msdn.microsoft.com/ja-jp/library/e5ewb1h3(VS.80).aspx

この方法を使って、

#define _CRTDBG_MAP_ALLOC
#include <stdlib .h>
#include <crtdbg .h>
#include <map>

static std::map<std ::string, std::string> sMap;

int main(int argc, char* argv[])
{
  _CrtDumpMemoryLeaks();
  return 0;
}

このようなプログラムを書くと、「メモリリークが検出された」と表示されます。どうやら、実際にはメモリリークは起こってはいないようなのです…。

一方で、

_CrtSetDbgFlag (
  _CRTDBG_ALLOC_MEM_DF |
  _CRTDBG_LEAK_CHECK_DF );

を使うと、メモリリークは検出されませんので。ただのバグなのでしょうか?

OpenGLのglNormal系は、currentの法線を設定する関数である。

これはかなり当り前の話。ところが、OpenGLはステートマシンなので、「currentの」というところが意外なところで効いてくる。
OpenGLではglNormal系の関数に初期値が設定してある。(0, 0, 1)、すなわちz軸の方向になっている。

つまり、glNormal系の関数を使っていない場合は、すべての面がz軸を向いているという設定が採用されるわけです。たとえば、glMaterial系の関数はこの法線情報を利用するので、明らかにおかしな描画になります。当たり前といえば当たり前なのですが、全部が黒く描画されるとかではないので意外と気づかなかったりするものです。

もっとたちが悪いことに、glutSolidTeapotやGLUQuadricなどを使うと、「currentの」法線が書き換えられて返ってくるので(0, 0, 1)ですらなくなってしまいます。

これは、VBOを使っていても同じ。normal有りのVBOを使わないときちんと描画されません。

で、なんでこんなことに躓いたかというと、COLLADAのデータを読み込んで描画した際にCOLLADAのデータに法線情報が入っていないのにmaterialが設定してあって、馬鹿正直にそのデータ通りレンダリングしたら、なんだかおかしい感じになっちゃったからですw

Visual Studio用のHLSLアドオンが存在します。InteliShadeです。IntelliSenseはlが2個。InteliShadeはlが1個。まぎらわしいw

http://intelishade.net/

HLSLだけですが、インテリセンスっぽく働きます。かなり、いい感じですね。

ただ、私はCgfx派なんで、.fxだけじゃなく、.cgfxでも働いてほしいわけです。そこでレジストリをいじります。

レジストリの変更は自己責任でお願いいたします。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Languages\File Extensionsには、.fxの拡張子に指定されている値a32b9340-09f7-4535-8f15-c79fc1845ddfがあります。.cgfxを新しくキーを作り、値として.fxにある値をコピーします。

これで、Cgfxでインテリセンス(もどき)が働きます。すげー。今のところ(v 3.1)ではGeometry Shaderには対応してないようです。

Visual Studioで、CUDA開発できる環境を構築する手順メモ。CUDA 2.2, Visual Studio 2008でのお話。

☆CUDA ToolKit, CUDA SDK

http://www.nvidia.com/object/cuda_get.htmlからCUDA ToolKitとCUDA SDKをダウンロードして、インストール。環境変数CUDA_BIN_PATH, CUDA_INC_PATH, CUDA_LIB_PATHにそれぞれ実行時パス、インクルードパス、ライブラリのパスが入っているので、Visual Studioのオプションからパスを通す。必要に応じて、CUDASDK_ROOT\common\incCUDASDK_ROOT\common\libにもパスを通す。

☆Syntax Highlighting

シンタックスハイライトは、CUDA SDKのインストールフォルダ以下の、NVIDIA Corporation\NVIDIA CUDA SDK\doc\syntax_highlighting\visual_studio_8あたりにあるusertype.datを使います。このファイルを\Program Files\Microsoft Visual Studio 9.0\Common7\IDEに放り込みます。んで、Visual Studioでオプション -> テキストエディタ -> ファイル拡張子で、拡張子にcuを入れてMicrosoft Visual C++のエディタとしてセット。

☆カスタムビルド規則

CUDAのプロジェクトを作るのはめんどくさい。手っ取り早いのは、CUDA VS Wizardを使う方法。SourceForgeからダウンロードしてインストールすると、Visual Studioでプロジェクト作成のときにCUDA Projectが選べるので、それを利用する。

カスタムビルド規則のルールファイルは\Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaultsにあるCuda.rules。違うパソコンでソリューションを開くときにはこれがなかったり違ったりすると怒られます。

☆InteliSense

レジストリの変更は自己責任でお願いいたします。

公式にアナウンスされている方法ではありませんが、かろうじてインテリセンスを働かせる方法があります。レジストリのHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++にあるNCB Default C/C++ Extensionsのキーに;.cu;.cuhを加えてください。

参考リンク:
http://www.bv2.co.uk/?p=730

PS:

研究室ではGeforce GTX 280使ってるんですが、家でも開発できたらいいなぁ…ということで、買っちゃいました。GTS 250。さすがにGTX 280には劣りますが、かなり快調に動いております。

goo モバイルの携帯サイトビューワ
http://emu.mobile.goo.ne.jp/emu/emu.php

携帯端末以外のIPを制限する.htaccess作成
http://www.dspt.net/tools/mobile_ip/generator.php

各社の絵文字対応表
http://chankaz.net/memo/emoji

OpenGLでテクスチャを張るとき、テクスチャの初期化時に

glTexGeni(
	GL_S, GL_TEXTURE_GEN_MODE,
	GL_SPHERE_MAP);
glTexGeni(
	GL_T, GL_TEXTURE_GEN_MODE,
	GL_SPHERE_MAP);

と書いて、描画時に

glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);

と書くと、基本的にテクスチャを自動生成してくれるわけですが(参考サイト:
床井研究室「第5回」, 床井研究室「第10回」)、

これだと、テクスチャがオブジェクトにはりついてくれていないので、球を回転させてもテクスチャが動いてくれないわけです。

このやり方はそもそも、glutSolidSphereがテクスチャ座標を生成してくれていないので、「自動生成」に頼るということなのですが、

gluSphereにはテクスチャ座標の生成がちゃんとあるので、それを使えばちゃんとテクスチャが晴れるわけです。

GLUquadricObj*の宣言

 GLUquadricObj* _sphere;
 

に対し、

_sphere = gluNewQuadric();
gluQuadricDrawStyle(_sphere, GLU_FILL);
gluQuadricNormals(_sphere, GLU_SMOOTH);
gluQuadricTexture(_sphere, GL_TRUE);

と、パラメータを設定。重要なのはgluQuadricTexture。ここで、GL_TRUEを設定することで、テクスチャ座標がちゃんと生成されます。

描画時には

glEnable(GL_TEXTURE_2D);
gluSphere(_sphere, 1.0, 32, 32);

とすればいいわけです。このとき、gluSphereが作ってくれるテクスチャ座標をさっきのテクスチャ自動生成が上書きしちゃわないように、glTexGeniやglEnable(GL_TEXTURE_GEN_S/T)はコメントアウト(というか削除)しておく必要があります。

テクスチャの生成やバインドはglGenTexturesやglBindTextureでふつうにやればOKです。

このときのテクスチャは作ったテクスチャに対して、photoshopなんかで「フィルタ」>「極座標変換」を選んで、極座標から直交座標へ変換を行って作りましょう。

で、個人的にはマルチテクスチャを球に張りたいのですが、さすがにマルチテクスチャ座標をgluQuadricが生成してくれそうにないんで、困ってます(笑)

さすがに自分で作りますかねぇw

Caskの大学院でメディアアートの展覧会やります。

=======================
このたび、東京大学において、学生によるメディアアートの制作展【iii Exhibition 9】が開催されます。
今回のコンセプトは「アートが魅せる技術、技術が魅せるアート」です。
文系、理系、専門分野を問わず多様なバックグラウンドを持つ学生が
企画・運営や作品制作に関わっております。
今回は過去最多の22 作品となりました。この春施工された
安藤忠雄氏設計の福武ホールも新たな展示会場として加わって4 会場となり、
ますます進化する制作展【iii Exhibition 9】に是非、ご来場ください。
=======================

■会期:
2008 年6 月19 日(木)~6 月24 日(火) 11:00~19:00
■会場:
東京大学本郷キャンパス
■入場料:無料
■主催:
・東京大学大学院学際情報学府
・東京大学大学院情報学環コンテンツ創造科学産学連携教育プログラム

詳細は携帯サイト/ホームページにアクセス!!
http://i3e.iii.u-tokyo.ac.jp/

お暇な方はぜひお越しください。

XHTMLでdocomoのiモードサイト作成で気づいたんですが

画像の下にdivを置いたとき

つまり、

</pre>
<img src="..." alt="" />
<pre></pre>
<div style="background-color: #0099ff;"></div>
<pre>

みたいなことをすると、

FOMA端末のうち、902系とP90X系を中心に画像とdivの間に隙間ができます。隙間ができない機種もあるのがおもしろいんですが、どうやらCSSの関係でおこるみたいです。

画像のバックとdivのbackground-colorを同じ色に合わせてデザインしたいときとかには白い隙間ができるのは困りものです。

ただ、対処法はかなり簡単でした。

</pre>
<img style="vertical-align: bottom;" src="..." alt="" />
<pre></pre>
<div style="background-color: #0099ff;"></div>
<pre>

のように、style=”vertical-align:bottom;”をimgタグにつけるだけ。

特に難しいことはなかったんですねw

参考

ちょっとばかし、Rubyとやらを使ってみたくなったんですが、IDEがないと…な私は

NetBeans

というJava用のIDEをRubyの開発に使おうかと考え導入してみました。

環境はWindows Vista

1. JDKの導入
NetBeansはそのままインストールすると、JDKのパスを入れろ!と怒られるので、とりあえずJDK(Java Development Kit)を突っ込みます。

JDKの最新版はこちらから。

2008/4/29現在の最新バージョンは1.6。はじめ1.5を入れてたのですが、NetBeansのメニューバーのフォントが超汚かったんで、1.6にバージョンアップ&1.5のアンインストールで治りました。

VistaでJavaを使うならJREも1.6の方が相性がいいみたいですね。

ちなみに、Javaのデフォルトフォントをメイリオにしたい方は、

http://d.hatena.ne.jp/torutk/20080109/p1

を参照してくださいな。

2. Rubyの導入
たぶん、JRubyでもActiveScriptRubyでもなんでもよくって、とりあえず私はActiveScriptRubyを入れてみました。

ダウンロードはここらへんですかね。

3. NetBeansの導入
なんか知らんがNetBeansの日本語サイトが糞重い。2008/4/29現在の最新バージョンは6.01で、Ruby Packなんてのもあるんで、ダウンロード&インストール。

先にNetBeansを入れちゃった人も「ツール」>「プラグイン」で「RubyおよびRails」とかを選べばいいのかな。

しかし、プロジェクトを作って、左のツリーでプロジェクトで右クリック>プロパティ>ソースでエンコーディングがUTF-8になってると、出力コンソールで日本語が華麗に文字化けしますw

これをShift_JISに直すか、NetBeansインストールフォルダ\etc\netbeans.confをテキストエディタで開いて、

netbeans_default_options=”….

のところの最後(もちろんクオテーションの前)にスペースを空けて、

-J-Dfile.encoding=UTF-8

と追加すればOK。

これでUTF-8でも出力コンソールが文字化けしません!