トップ 最新 追記

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|

2012-11-02 MOSA Software Meeting 2012

今年も開催されました。
私への宿題は、得られたモチベーションをどう形にして行くかです!

画像の説明

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-04 [iOS]画面キャプチャ

任意のビューコントローラの表示内容をキャプチャするメソッドを作成してみた。

- (UIImage *)imageScreenShot:(UIViewController *)viewController
{
    UIGraphicsBeginImageContextWithOptions(viewController.view.frame.size, 1.0, 0.0);
    [viewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-06 [OSX]Using GLUT and OpenGL on Mac OS X

先日のMSM2012の抽選会で『OpenGL+GLSLによる物理ベースCGアニメーション』をいただいてしまった。これは自分に対する宿題と考え、OpenGLについて取り組んでみることにする。

ただ、この書籍はサンプルコードで動きを確認しながら学習していく内容なのだが、Windows環境向けで、OS XのXcodeで動かすのは困難な為、一つずつ、進める事にした。

GLUTのアプリケーションをXcodeでビルドするには、以下のヘッダーファイルをインクルードする必要がある。

#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>

そして、以下の内容でMakefileを記述すればいい。

cc -framework GLUT -framework OpenGL -framework Cocoa glutapp.c -o glutapp

ただ、折角のOSXなので、Xcodeを利用したい。ということで、著者は以下の手順でプロジェクトを作成した。

  • プロジェクトの雛形は、OS XのCommand Line Tools。
    Cocoaの便利な機能を利用したい為、TypeはC++でなく、Foundationとした。
  • OpenGL.frameworkとGLUT.frameworkを追加する。
  • 雛形で生成されるmain.mをmain.mmに変更して、C++を利用できるようにする。

とりあえず、main.mmを以下の内容にして、GLUTウィンドウが開くことを確認する。

#import <iostream>
#import <Foundation/Foundation.h>
#import <OpenGL/gl.h>
#import <OpenGL/glu.h>
#import <GLUT/glut.h>
 
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    glutSwapBuffers();
}
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        glutInit(&argc, (char **)argv);
        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
        glutInitWindowSize(600, 500);
        glutInitWindowPosition(500, 100);
        glutCreateWindow("GL_Affine");
        glutDisplayFunc(display);
        glutMainLoop();
    }
    return 0;
}

_ 関連情報

Using GLUT and OpenGL on Mac OS X
OpenGL Progrmming Guide for Mac
OpenGL Programming on Mac OS X
OpenGL+GLSLによる物理ベースCGアニメーション

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-07 [OSX]Teapot

『OpenGL+GLSLによる物理ベースCGアニメーション』では、独自の動物の物体を描画していたが、これを動かすようにするのは大変と思うし、本質的でないのでGLUTで用意されているティーポットを使うことにした。

このティーポットはソリッドとワイヤーフレームの二種類が用意されているので、wキーが押下されるとトグルで切り替わるようにした。

int width = 600;
int height = 500;
BOOL    isWireframe = NO;
 
void resize(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    width = w;
    height = h;
}
 
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    if (! isWireframe)
        glutSolidTeapot(0.5);
    else
        glutWireTeapot(0.5);
    
    glutSwapBuffers();
}
 
void keyboard(unsigned char key, int x, int y)
{
    switch((unsigned char)key) {
        case 'w':
            isWireframe = !isWireframe;
            break;
    }
}
 
void idle(void)
{
    glutPostRedisplay();
}
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        glutInit(&argc, (char **)argv);
        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
        glutInitWindowSize(width, height);
        glutInitWindowPosition(500, 100);
        glutCreateWindow("IRIS GL");
        glutReshapeFunc(resize);
        glutDisplayFunc(display);
        glutKeyboardFunc(keyboard);
        glutSpecialFunc(special);
        glutMouseFunc(mouse);
        glutMotionFunc(motion);
        glutIdleFunc(idle);
        init();
        
        glutMainLoop();
    }
    return 0;
}

まだ、平面なのでワクワク感が足らないが。

Teapot

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/IRIS - GitHub

_ 関連情報

Using GLUT and OpenGL on Mac OS X
OpenGL Progrmming Guide for Mac
OpenGL Programming on Mac OS X
OpenGL+GLSLによる物理ベースCGアニメーション

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-08 [OSX]光源

立体に見せるには?ライトを当てれば!

以下のコードを初期化処理に追加する。

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
GLfloat position[4] = {0.0, 0.0, -1.0, 1.0};
glLightfv(GL_LIGHT0, GL_POSITION, position);

これだと、手前からライトを当てだけで面白みがないので、X軸方向に角度をつけてみる。

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
GLfloat position[4] = {0.5, 0.0, -1.0, 1.0};
glLightfv(GL_LIGHT0, GL_POSITION, position);
teapot

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/IRIS - GitHub

_ 関連情報

Using GLUT and OpenGL on Mac OS X
OpenGL Progrmming Guide for Mac
OpenGL Programming on Mac OS X
OpenGLの神髄
OpenGL+GLSLによる物理ベースCGアニメーション

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-23 第56回Cocoa勉強会

今回は松戸で開催。

内容を個人のWebサイト製作の環境構築についてと、子ネタ集、画面遷移と通信、リッチなディスクイメージの作り方。

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

2012-11-29 [OSX][UNIX]diff

Subversionでtrunkとbranchのdiffをとる方法が分からなかったので、二つのディレクトリ間のdiffをとるスクリプトを書いた。

#!/bin/sh
 
TRUNK=../trunk/proj
BRANCH=../branches/branch01/proj
 
#diff -r ${TRUNK} ${BRANCH}
 
files=`ls ${TRUNK}/*.[hm]`
for filepath in ${files}; do
	file=${filepath##*/}
	echo '####' $file '####'
	diff ${TRUNK}/${file} ${BRANCH}/${file}
	echo '###############'
done
 
# End Of File

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ 最新 追記