Creating Games with Unity and Maya
AndroidのPhoneGap記事
http://www.atmarkit.co.jp/fsmart/articles/phonegap01/02.htmlObjctive-C size_t用フォーマット文字
size_t型をprintfやsprintfで表示するときの「変換指定文字」は、"%zd"のように、"z"を使用するCGImageRef image = [UIImage imageNamed:@"moji_tex.png"].CGImage; NSLog(@"%zdと%zdの大きさ", CGImageGetWidth(image),CGImageGetHeight(image));
NSLogでもつかえる!「d」を忘れずに。
「Objctive-C OpenGL ES」 CGImageRefを行えば必ずCGImageReleaseを行え
http://d.hatena.ne.jp/masatoshisw20/20081220/1229727292CGImageRef hogeImg = HogeShori;
// 略
CGImageRelease(hogeImg);
CGImageRefをやったら、CGImageReleaseをしないといけないみたい?
The resulting image retains a reference to the original image, so you may release the original image after calling this function.
ドキュメントに↑が記載されているらしい。
書籍「OpenGLで作る Android SDKゲームプログラミング」のloadImageでは抜けてるのでメモリリークしそう。
Objctive-C OpenGL ES上で日本語などの文字を書く(修正版)
まだ修正が必要と思いますが、コメントください。// 文字を書く GLuint createCharTexture(NSString* str); GLuint createCharTexture(NSString* str, int size); GLuint createCharTexture(NSString* str, int size, int r, int g, int b, int a);
↑書籍「OpenGLで作る Android SDKゲームプログラミング」の「graphicUtil.h」とかに追加する。
// 文字を描画するテクスチャ GLuint createCharTexture(NSString* str){ return createCharTexture(str, 2); // デフォは2(中) } GLuint createCharTexture(NSString* str, int size) { return createCharTexture(str, 2, 255, 255, 255, 255); // デフォルトの文字色白、大きさは2(中) } // sizeは1・2・3(小・中・大)※4以上もできるが大きすぎると変になるかも? GLuint createCharTexture(NSString* str, int size, int r, int g, int b, int a) { GLuint texture; //画像の大きさをを決める(縦横は2の倍数で同じ数字に揃える) size_t width = 512, height = 512; GLubyte* imageData = (GLubyte *) malloc(width * height * 4); // RGBの描画領域作成。 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef imageContext = CGBitmapContextCreate(imageData, width, height, 8, width * 4, colorSpace, kCGImageAlphaPremultipliedLast); CGColorSpaceRelease(colorSpace); CGImageRef reflectRGBCGImageRef = CGBitmapContextCreateImage(imageContext); CGContextDrawImage(imageContext, CGRectMake(0, 0, (CGFloat)width, (CGFloat)height), reflectRGBCGImageRef); // 文字列を描画 UIFont *tFont = [UIFont systemFontOfSize:25 * size]; UIGraphicsPushContext(imageContext); UIColor *color = [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a/255.0f]; [color set]; // テクスチャへ文字を記載(UIKitとCoreGraphics間の問題?座標系のY軸の上下反転される対策) CGContextScaleCTM(imageContext, 1, -1); CGContextTranslateCTM(imageContext, 0.0f, -(double)480); // NSUInteger型なので、負の値が0にならないようにdouble CGPoint point = CGPointMake(0.0f, 0.0f); [str drawAtPoint:point withFont:tFont]; UIGraphicsPopContext(); CGContextRelease(imageContext); // OpenGL用のテクスチャ生成 glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData); // 開放 CGImageRelease(reflectRGBCGImageRef); free(imageData); return texture; }
「CGContextTranslateCTM(imageContext, 0.0f, -480.0f);」ではマジックナンバー(決め打ちの数字)を使用しているので縦横のサイズによって変更すべきです。
今回、縦×横を360×480にやってます。
使用方法
@interface Hoge : GameBase {
GLuint mojiID;
}
Hoge.h
// initの準備 // 大きさ「1」で、RGBAを(255, 0, 0 ,255)の赤でアルファなし mojiID = createCharTexture(@"書きたい文字", 1, 255, 0, 0 ,255); or // デフォルトの大きさ「2」になる mojiID = createCharTexture(@"書きたい文字"); or // 大きさ「3」になる mojiID = createCharTexture(@"書きたい文字", 3); // draw(描画)のところ 文字の位置はどうやるべきか・・・ float bg_width = 480.0f; float bg_height = 320.0f; drawTexture(bg_width/2, bg_height/2, bg_width, bg_height, serifu, 255, 255, 255, 255);
Hoge.m
今回、自動生成したのでmoji_tex.pngの画像を「Resources」に入れなくて良いです。
Hatena H3タグ用スタイルシート
デザイン変更してスタイルシートがリセットされたので今後のためのメモh3 { border: 1px solid #666; text-align: center; background-color: #fff; font-size: 18px; color: #000; margin: 0px; padding: 5px; }
Penelopeの覚書 Unityのチュートリアル用のため
iPhoneでの最初のタイトル画面での左から順で◯TAP TO MOVE
左側に「ジャンプボタン」が1つあるつ
画面をタップした方向へ移動する
右側にボタンなし、カメラズームなし
◯CAMERA RELATIVE
左側に移動と方向転換を同時に行う「ジョイスティック」
右側にカメラの角度を切りかえ、垂直に押せばジャンプする「ジョイスティック」
「カメラ」は常にPenelopeを追尾し、ズームする
◯PLAYER RELATIVE
左側に移動のみ(↓キーは後ろ向いて背後で移動)して方向転換しない「ジョイスティック」
右側に方向転換だけするジョイスティック
左右の「ジョイスティック」を同時垂直押しでジャンプ
「カメラ」は常にPenelopeを追尾し、ズームする