投稿

Squirrel

Squirrel。luaを触ってたんだけど、似たような組み込みスクリプトで ざっとソースを眺めてみたら、こちらはC++で実装されているので読みやすい。 かつ、luaに比べてコード量が少ない。 という事でこっちを調べてみるかな。 luaが中途半端で終わってしまったが、まぁしょうがない。

Lua メモ

6年ぶりくらいにLuaを触る。 ほぼすべてを忘れているのでメモ。 ・Luaを落とす。現在は5.2が最新  http://www.lua.org/download.html ・LuaをPコード(バイナリ)化  VS2010Expressでコンソール->空プロジェクトを作成して落としたLuaソースを入れてLuaをビルド.(ただし、lua.cをビルド対象から外す) luac.cがコンパイル用のメイン関数になっている.  ・Luaのビルド。これでPコードにする   luac -o test.luab test.lua   ちなみに-sを入れれば、デバッグ情報を取ることができる。 ・Luaの実行 ・Luaファイル(test.lua) function initialize() print("Hello World Lua!!") end ・組み込み先 int status, result; lua_State *L = luaL_newstate();  /* create state */ luaL_openlibs(L); luaL_dofile(L,"c:/test.lub"); lua_getglobal(L, "initialize"); if( lua_pcall(L, 0, 1, 0) != 0 ) { printf("関数呼び出し失敗\n"); } ・バインディング   ・tolua++   DL:http://www.codenix.com/~tolua/   5.2に対応してないので少々修正が必要。    ・関数置き換え     lua_setfenv → lua_setuservalue     lua_getfenv → lua_getuservalue     luaL_getn → lua_rawlen     LUA_GLOBALSINDEXも変えないといけないのか…。今日はここまで。

Xcode4

更新が滞っていましたが、作りたいアプリが出来たのでXCode4入れて触り始めました。 が!、XCode3.xと変わりすぎですw まだビルドして動作する所までしか出来てないのでデバッガの使い方などは解りませんが、InterfaceBuilderが統合されたのとxibにLocalizationの設定が入り各国の設定が容易になった反面、日本版の設定を正しく行わないと実機でASSERTに引っかかる罠がある事が解りました。 少しずつ慣れていきますか。

iPhoneSDK:「設定」にアプリ環境設定を置く。

方法が解らず探していたら、プログラミングガイドに詳細が載ってた。 そりゃネットを探しても無いわけだ。。

iPhone/PHPでAES暗号を使う

暗号関連は既に色々なページにも載ってますがメモとして残しておきます。 簡易版の為ECBモードになっていますがWEB上で公開するアプリを作る場合は必ずCBCやCTR で行うようにしてください。 クライアント側がiPhoneでサーバー側がPHP 準備 暗号サンプル CryptoExercise base64 iPhone クライアント側 char * key = "0123456789ABCDEF"; // 16文字 NSData * symmetricKey = [NSData dataWithBytes:key length:16]; NSString* text = @"AES暗号化テスト"; CCOptions padding = kCCOptionPKCS7Padding|kCCOptionECBMode; NSData* data = [[SecKeyWrapper sharedWrapper] doCipher: [text dataUsingEncoding:NSShiftJISStringEncoding] // エンコード文字列は適当に変更してください。 key:symmetricKey context:kCCEncrypt padding:&padding]; [Base64 initialize]; NSString* base64String = [Base64 encode:data]; PHP サーバー側 function pkcs7_unpad($data) { $pad = ord($data{strlen($data)-1}); if ($pad > strlen($data)) { return false; } if (strspn($data, chr($pad), strlen($data) - $pad)...

iPhoneSDK:OpenGL ES2.0で最初の一枚

イメージ
3GSからOpenGLES2.0に対応され、処理速度の問題はあるけれどシェーダーで行える事は ぐっと増えて初代xboxでやっているような処理は大抵実装できるようになりました。 私が最後にレンダリングの仕事をしたのは固定シェーダー全盛の時代だったので シェーダーに関する知識はあまりありません。 そこで勉強もかねてゼロから始めてみました。 と、いっても本は必要です。 「OpenGL ES 2.0 プログラミングガイド」 を買っておきましょう。基本から実用程度までは網羅してると思います。 本見ながらlambert光源で頂点シェーダー書いてみました。 今時はC言語で書けるのでとても簡単です。 むしろシェーダーとプログラムのリンクする為の情報 (glBindAttribLocation,glUniform,VeretxAttribPointer)の設定が面倒です。 attribute vec4 aPosition; attribute vec4 aColor; attribute vec3 aNormal; varying vec4 colorVarying; uniform float translate; uniform mat4 viewProjMatrix; // 透視変換行列 uniform mat4 modelViewMatrix; // モデルビュー行列 uniform mat3 viewMatrix; // ビュー行列 uniform vec3 light; // 光源。とりあえずひとつ const float c_one = 1.0; const float c_zero = 0.0; void main() { vec4 vPosition; vec3 vNormal; vec4 vColor; float ndotl; vPosition = modelViewMatrix * aPosition; // 頂点を(モデル行列xビュー行列) に変換 gl_Position = viewProjMatrix * vPosition; // クリップ空間にする // 光源計算 vNormal = viewMatrix * aNormal; ...

iPhoneSDK:iPodTouchとiPhone4解像度

UIKitが一段落してOpenGL-ES2を触り始めました。 iPhone4の特徴の一つであるiPhone3Gから解像度が縦と横が2倍(計4倍) になったものの画面の幅と高さを取得してもw=320,h=480を返す。 そういうもんなのか。そいやUIKitでもそうだったもんね。 透視変換行列で細工してるのかな。 GLint screenWidth; GLint screenHeight; glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &screenWidth ); glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &screenHeight );