Windows8にWindowsDefenderをプロキシ経由で使っていると更新時にエラーが出て更新できません
どうやらIEのプロキシ設定を自動で読み込んでくれない模様
http://win.just4fun.biz/Windows設定関連/プロキシ経由のWindows%20Updateができない場合の対処.html
こちらを参考に
管理者権限でコマンドプロンプトを開き
netsh winhttp import proxy source=ie
これでオK
Windows8にWindowsDefenderをプロキシ経由で使っていると更新時にエラーが出て更新できません
どうやらIEのプロキシ設定を自動で読み込んでくれない模様
http://win.just4fun.biz/Windows設定関連/プロキシ経由のWindows%20Updateができない場合の対処.html
こちらを参考に
管理者権限でコマンドプロンプトを開き
netsh winhttp import proxy source=ie
これでオK
Windows8Ent版ではインストール時にライセンスキーを聞いてきません。
そのままインストールできるのですが、認証が切れると使えなくなります。
設定画面からライセンスキー認証を行ってもエラーになります
http://support.microsoft.com/kb/929826/ja
この方法で解決
OpenGLで文字列を描画したく、いろいろ探してみたのですが、みんな苦労しているみたいです。
とりあえずわかったことが2つ、日本語はちょっと難しい。
これの場合、日本語は描画できません。ただし簡単に書くことができます
http://d.hatena.ne.jp/osyo-manga/20110827/1314417606
こちらのサイトを参考に
-(void)paint{ glClearColor(0.5f, 0.5f, 0.5f, 1.0f); // default background color glClear(GL_COLOR_BUFFER_BIT); [self renderString:@"kana" x:0.5 y:0.5f]; glFlush(); } -(void)renderString:(NSString *)str_ x:(float)x_ y:(float)y_{ glRasterPos2d(x_, y_); const char* charStr=[str_ UTF8String]; int len=(int)[str_ length]; for(int i=0;i
- テクスチャを使うやり方
日本語を表示したい場合にはテクスチャを使うみたいです。結構重いとのことなので決まった文字列の場合には画像をそのまま貼付けた方が良さそうです
http://null-null.net/blog/2007/10/566.php
こちらのサイトを参考に
+ (void) draw:(NSString *)string_ x:(float)x_ y:(float)y_{ NSAttributedString *attrString; GLuint *texId; glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); glClearDepth( 1.0f ); glDisable(GL_CULL_FACE); glEnable( GL_BLEND ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); int i, strSize; NSFont *nsfont; NSDictionary *attrsDictionary; NSAttributedString *singleChar; NSImage **images; NSBitmapImageRep **imageReps; NSImage* img; NSPoint point; NSSize size; int texWidth_=10; int texHeight_=10; // alloc texture id and image buffer strSize = (int)[string_ length]; texId = (GLuint*)malloc( sizeof(GLuint)*strSize ); images = (NSImage**)malloc( sizeof(NSImage*)*strSize ); imageReps = (NSBitmapImageRep**)malloc( sizeof(NSBitmapImageRep*)*strSize ); for( i = 0; i < strSize; i++ ){ images[i] = [[NSImage alloc] initWithSize:NSMakeSize( texWidth_, texHeight_ )]; } // font settings NSSize screenResolution = [[[[NSScreen mainScreen] deviceDescription] objectForKey:NSDeviceResolution] sizeValue]; int fontSize_ = texWidth_ * 72.0/screenResolution.width; nsfont = [NSFont fontWithName:@"HiraKakuPro-W6" size:fontSize_]; attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys: nsfont, NSFontAttributeName, [NSColor whiteColor], NSForegroundColorAttributeName, [NSColor clearColor], NSBackgroundColorAttributeName, nil ]; // alloc attributed string attrString = [[NSAttributedString alloc] initWithString:string_ attributes:attrsDictionary]; // create texture id glEnable( GL_TEXTURE_2D ); glGenTextures( strSize, texId ); // build texture image for( i = 0; i < strSize; i++ ){ img = images[i]; singleChar = [attrString attributedSubstringFromRange:NSMakeRange(i,1)]; // setting background color [img setBackgroundColor:[NSColor clearColor]]; // calc center position size = [singleChar size]; point = NSMakePoint( (texWidth_-size.width)/2, (texHeight_-size.height)/2 ); // draw character to image [img lockFocus]; [singleChar drawAtPoint:point]; [img unlockFocus]; // alloc bitmap image from NSImage imageReps[i] = [[NSBitmapImageRep alloc] initWithData:[img TIFFRepresentation]]; // texture settings glBindTexture( GL_TEXTURE_2D, texId[i] ); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, texWidth_, texHeight_, 0, [imageReps[i] hasAlpha] ? GL_RGBA :GL_RGB, GL_UNSIGNED_BYTE, [imageReps[i] bitmapData] ); glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glBindTexture( GL_TEXTURE_2D, 0 ); } glDisable( GL_TEXTURE_2D ); // release for( i = 0; i < strSize; i++ ){ [imageReps[i] release]; [images[i] release]; } free( imageReps ); free( images ); strSize = (int)[string_ length]; glEnable( GL_TEXTURE_2D ); for( i = 0; i < strSize; i++ ){ glBindTexture( GL_TEXTURE_2D, texId[i] ); glBegin(GL_POLYGON); float wf_=0.1f; // TODO Viewのサイズからきちんと求める float hf_=0.1f; glColor4f(1.0f, 0.0f, 0.0f, 1.0f); glTexCoord2f( 0, 1 ); glVertex2f( x_+i*wf_, y_ ); glTexCoord2f( 1, 1 ); glVertex2f( x_+(i+1)*wf_, y_ ); glTexCoord2f( 1, 0 ); glVertex2f( x_+(i+1)*wf_, y_+hf_ ); glTexCoord2f( 0, 0 ); glVertex2f( x_+i*wf_, y_+hf_); glEnd(); } glDisable( GL_TEXTURE_2D ); glDeleteTextures((int) [string_ length], texId ); free( texId ); [attrString release]; }ちょっといい加減ですがこんな感じ
デフォルトではmouseMovedを継承してもイベントは拾えないみたいです
http://stackoverflow.com/questions/7543684/mousemoved-not-called
この辺り参照
- (id)initWithFrame:(NSRect)frameRect_ pixelFormat:(NSOpenGLPixelFormat*)format_ { if(self=[super initWithFrame:frameRect_ pixelFormat:format_]){ NSTrackingArea* trackingArea_ = [[NSTrackingArea alloc] initWithRect:[self bounds] options:(NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveInKeyWindow | NSTrackingEnabledDuringMouseDrag ) owner:self userInfo:nil]; [self addTrackingArea:trackingArea_]; [trackingArea_ release]; NSMutableArray* removeBeforePaintList_=[[NSMutableArray alloc]init]; removeBeforePaintList=removeBeforePaintList_; alreadySetUp=false; [self setupCanvas]; } return self; } -(void)updateTrackingAreas { if(trackingArea){ [self removeTrackingArea:trackingArea]; } NSTrackingArea* trackingArea_=[[NSTrackingArea alloc]initWithRect:[self frame] options:(NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveAlways ) owner:self userInfo:nil]; [self addTrackingArea:trackingArea_]; [trackingArea_ release]; }
こんな感じでいいのでしょうか?
どうもCocoaプログラミングでは通常のC言語のような数値配列を使うことはできなさそう。
NSNumberとNSMutableArrayを駆使して書くのが一般的みたいです。
ただ、NSNumberだと一回作ったオブジェクトの値がどうやら変更不可らしい。
これでは数値計算には使えません。
そこでNSNumberを拡張してみました
@interface MYNUmber:NSNumber{
}
@property(readwrite)float floatValue;
@property(readwrite)bool boolValue;
@property(readwrite)int intValue;
@property(readwrite)double doubleValue;
@end
これでとりあえずコンパイルは通りました
initialization method -initWithInt: cannot be sent to an abstract object
が、allocする際に何やらエラー。。
まだ道のりは遠い。。
最近Macプログラミングにはまっています。
ところでリソースからpngファイルをNSImageに取り込もうとしているのですがうまくいきません。
とりあえずpngを他の画像ファイルに変更するためにImageMagick を使おうとしたのですがデフォルトでは入っていない模様。。
http://distfiles.macports.org/MacPorts/
こちらからMacPortsなるものをインストール
/opt/local/binにインストールされるみたいです
自動で~/.profileも作成されるみたい。
プロキシ環境だと.profileに
export http_proxy=http://server:port
を付け加えておきます
これでいざ
$ sudo port search imagemagick Warning: Can't open index file for source: rsync://rsync.macports.org/release/tarballs/ports.tar Error: search for name imagemagick failed: No index(es) found! Have you synced your source indexes? No match for imagemagick found
ないんかい!
素直にこれを入れればいいことが判明。