インスタンシング


今日もインスタンシング

昨日に引き続き、今日はShaderInstancingをトライしていた。しかしHWインスタンシングに比べて動作は理解しやすい。単に形状データを繰り返し、頂点バッファを満たしておけばいい。あとはそれに対する変形パラメータを外部から叩き込めば終わり。必要回数、必要ポリゴン数になるまでdrawPrimitiveを繰り返す。

そんなわけで、さっくり実装できた。

HLSL

今は起動時で読み込んでコンパイルさせているけど、デフォルトのシェーダーくらいはlibに組み込んでしまいたいと思って色々調べてみた。どうやらバイナリのリソースとしてリソーススクリプトで記述すれば良さそうです。

GUIの操作としては、リソースのウィンドウで追加→ファイルから〜
その時の.rcの中身にはこんな風にして追記されることになります。

(グループ名を入れたかったのでそこだけは手作業)

<名前> <グループ名> DISCARDABLE “ファイル名.fx”

ここまでやって気付いたのだが、そのままバイナリファイルに組み込まれるみたい…。

さらに調べてみると .fxから .fxoを作ってしまうという方法もあるようだ。コンパイル済みシェーダーといったところか。

こちらを組み込みにすれば、先ほどよりはマシだろう。読まれたくないならば、
fxoをさらに暗号化してリソースにインポートすればいい話だし。

これには、プロジェクトに追加されている.fxファイルにコンパイルの記述を追加する。

こんな感じでコマンドライン行に追加。最初のはバージョンを決めるためのものだろう。
さらに、出力ファイルの箇所で “bin/$(InputName).fxo” と記述するのも忘れずに。

デバッグ版とリリース版で同じでも問題ないと思うけど、オプションを変更することも可能です。


あけましておめでとうございます。


あけおめ

新年あけましておめでとうございます。

今年は初日から日記記述です。がんばります。

foltia

アニメ専用録画システムのfoltiaをインストール&設定していました。

通常設定だとPSP/iPod用のトランスコンバートの処理が録画後に走るのですが、
オレはCMなどをカットして保存するクチなので、ちょこっとスクリプトに手を入れて環境を作っていました。

アニメはfoltia、TVドラマはmythtvと分けて使っていく方針です。

なお、この正月期間中にどうでもいいアニメの予約を入れてみて、実験予定


大晦日


今年も最後まで

今年終わる最後の今日、今もプログラミングしてます。
以前やっていたフレームレートの制御用クラスの続きです。

やねうらおさんのHPを参考に組ませていただきました。フレームスキップまできちんと実装されていてスバラシイです。

とりあえずこれである程度のスペックを持つPCならば秒間のFPSを固定することが出来ます。グラフィックスがちょっと低スペックでもなんとかがんばれるようになります。


プログラム的話題


UNICODE使用時におけるプリプロセッサについて

__FILE___や__DATE__などのプリプロセッサは ANSI文字として置き換わるので、そのままだとUNICODE文字配列には入ってくれません。

サフィックスLを付けるとUNICODE文字定数としてコンパイルされるので、

として、CONVERT2WIDE( __TIME__ ) とか。頭の中では L”12:00:00″ とか置き換わる算段です。

実際にはこれだけではダメで、

としなきゃダメみたいです。理由はよく分かりませんが、昔からの流れ?みたいです。


MySQLネタ


今日もmySQLと戦ってました

データ注入でうまくいかなくて結局1日消費。

昨日MSのSQLServer2000から取り出してきたデータを、
SQL文の形にしてインポートさせようとしたらShiftJISの問題で、
エスケープシーケンス埋め込んで対処。

また、ツールにはSQLyogのフリー版を使用。

文字コード

しかし問題が。ShiftJISとの問題でこれからも付き合っていくのか、と思うと大変に思ったので
全てのデータをUTF8に移行することに決定。

しかしながらこれまた大変な作業が待ってました。
ツール類はUTF8全滅で、表示できたのはMySQL Query Browserのみ。
SQLyogは使いやすかったので、UTF対応も是非行ってもらいたいです。

※最もツールが悪いのかデータがまずいのかで、数時間使っちゃってます

あと、PHPからのアクセス問題も発生したので検索して色々と。
データを取得する前に、以下のようにしておけば文字コード変換が働かなくなり、DBに格納してある生の文字コードで取得できるみたい。

リストアとか

結局データはリストアのデータと同じ形式に吐き出すように、プログラムを変更してデータ生成
その後リストアの処理するコマンドを一つずつ手打ちしてデータを注入しました。

UTF8にしたかった理由

思い出してみるとADO.NETでアクセスしてデータを表示させたかったから、でした。
データセットに取得してDataGridに表示させようとすると、どうしてもUTF8にってことで。


MySQLネタ


MySQLメモ

ユーザーとパスワード指定して、かつホストのペアで管理されるMySQLは、
任意のPCからのアクセスで拒否されるので、どうしたらいいんだろーと検索したメモ。

以下の権限&変更で、ホストは任意に変更できます

で、SQLServer2000からのデータ移行にチャレンジ中。
MS付属のDTSつかっていけるかと思ったけど、どうしても出来なく。
やっぱりレプリケーションとか設定の跡があるからまずいのかな。

コンバートできないデータ要素があるみたい。

色々探してみたら、MySQLにマイグレーションのツールがあったのでそちらで実行中。
うまく動作してるっぽい。オートインデックスに関係してる部分は、
途中でエラーが報告されるので、SQL文を削除して、オブジェクト作り直しでうまくいった。

SQLServerからのデータ取得. ADO.NETにて

データリーダーでテーブルを取ってきて、そのスキーマを知りたい場合について。
大体次のようにすれば、列名や列の型などを取得できるのでは。

コメントにした部分を知りたい項目にすれば、それに関しての情報が出ることを確認した。
わかりやすいサンプルがないので、ここに書いてみました。


OpenVPNクライアント編


クライアントの設定編

ずいぶんとうまくいくようになったので、設定メモです。

クライアントのダウンロード

ここ(http://openvpn.se/ )から、インストーラー付きのファイルをダウンロードします。
ここでは、Stable版の openvpn-***-gui-*-install.exeってやつを使います。
デフォルトで問題がないので、Nextを連打〜

設定ファイル

とりあえずサーバー側から暗号化キーを持ってきて、設定ファイル置き場に配置します。
置く場所は、スタートメニューから、OpenVPN->openvpn configuration file directoryを選択すると、その場所が開きます。

確認

展開した場所に出来た、client.ovpnファイルを右クリックして、
Start OpenVPN on this config fileを選ぶと、DOS窓が出て接続状況がでます。
おわり周辺のところで、Succeededとか表示されていたら成功。そうでなければ問題があります。

なお、ログファイルはスタートメニューから辿って、OpenVPN->log file directoryってやればフォルダが開きます。

今後の接続方法

前述のステップで開いたDOS窓を閉じると接続も切れます。

以降は、タスクトレイにOpenVPNのアイコンから接続指示を行います。
(なければスタートメニューからOpenVPN GUIを選択して起動させる)

右クリックしてconnectを選択すれば、接続しに行きます。
設定ファイルが複数ある場合はどれを使うかの選択項目が増えてます。

ここでエラーがなければ自分が取得したIPなど通知されます。

 

FFFTP設定とか

サーバーのアドレスは、192.168.1.1に。文字コードはEUCを使用しています。
特にPASVで無くてもいいと思われるので、PASVのチェックを外す。

こんなところでしょうか。


OpenVPN その2


外部からのアクセス

前回の設定でとなりのPCから接続要求を出して接続は確認できました。
しかし、外からは〜ってことで調べてみると、NAT環境下にあるマシンからの接続要求ではUDPはまずい模様。

そこで、プロトコルにTCPを使うようにしました。
設定ファイルに proto tcpって書いたら怒られました
どうやら、proto tcp-serverとか proto tcp-clientと記述しないといけないようです。

とりあえず、これでTCPによるNAT環境下からの要求であっても正常処理することが出来ました。

現状の問題点

複数のクライアントから接続しようとすると出来ないみたい。
どうしたらいいのか考え中。
ポートを分けて複数待機させるようにしたら可能だという記述は発見したが…。


OpenVPN


OpenVPN設定

とりあえずPPTPが繋がらないパターンがあるのでOpenVPNの導入を考えてました。
そういう状況なので、LinuxサーバーにインストールしてWindowsから使ってみようと実験中です。

まぁうまくいってないけど。

openvpn.tar.gzをダウンロードしてきて、rpmパッケージを作成。
ソースを取得して作らないと、モジュールとかうまく生成されませんでした。