6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOSのGLKitで2Dウィンドウ座標系の行列を作る

Posted at

XCode4.3.2で確認
OpenGL ESプロジェクトのひな形を流用します。
下記のコードは最低限の手順しか書いていません。描画やモデルの準備は各々でお願いします。

AppViewController.m
// ビューポートの値を入れる
float viewport[4];

// 2D座標系矩形(512x512pxのテクスチャを
// 等倍で表示する前提
// こいつをTRIANGLE_STRIPで描画する
const GLfloat squareVertices2D[] = {
    // 座標X, Y, Z, U, V
    // 左回り
    0.0f, 512.0f, 0.0f, 1.0f,     // 左下
    512.0f, 512.0f, 1.0f, 1.0f,     // 右下
    0.0f, 0.0f, 0.0f, 0.0f,     // 左上
    512.0f, 0.0f, 1.0f, 0.0f,     // 右上
};

// 
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2] autorelease];
//					:
    // viewport設定
    viewport[0]=self.view.bounds.origin.x;
    viewport[1]=self.view.bounds.origin.y;
    viewport[2]=self.view.bounds.size.width;
    viewport[3]=self.view.bounds.size.height;

    [self setupGL];
}

// OpenGL ESのセットアップ
- (void)setupGL
{
//					:
//					:
    [EAGLContext setCurrentContext:self.context];
//					:
//					:
    glFrontFace(GL_CCW); // 左回りを表(これがOpenGLのデフォルト)
//					:
//					:
}

// 更新
- (void)update
{
//					:
//					:

// 2Dウィンドウ座標系(原点が左上 0,0 )の行列を作る
	GLKMatrix4 tmpMatrix = GLKMatrix4MakeOrtho(viewport[0], viewport[2], viewport[1], viewport[3], -1024, 1024);

	tmpMatrix = GLKMatrix4RotateX(tmpMatrix, GLKMathDegreesToRadians(180));
	tmpMatrix = GLKMatrix4Translate (tmpMatrix, 0, -viewport[3], 0);

	_modelViewProjectionMatrix = tmpMatrix;	// これが2Dウィンドウ座標系の行列になります
//					:
//					:
}

// 描画
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
    glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//					:
	// 2Dウィンドウ座標で描画
	// カリングをOFF(裏面も描く・重要)
	glDisable(GL_CULL_FACE);
//					:
// 頂点バッファの準備などをして下さい
//					:
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
//					:
}
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?