GSI


CrashLanding 소스를 보면서 Texture2D 클래스를 보니까. 전체 텍스처에 대한 처리만 가능하도록 되어 있었습니다.
그래서 이걸 메소드를 하나더 만들어서 텍스처의 일부 영역을 화면에 뿌리고자 할려고 했습니다.

이때 Texture2D를 상속해서 Texture2DEx로 만들려고 했지만.. 
에러가 주루룩 떠드군요.. 

그래서 생각한 결과 Categories를 사용하게 되었습니다.
이 내용은 검색을 해보면 많이 나옵니다.

우선 구현한 내용을 아래에 기술합니다.

1. Texture2DEx.h, m 을 만듭니다.

2. 아래와 같이 코드를 헤더 파일에 작성합니다.


#import <Foundation/Foundation.h>

#import "Texture2D.h"


@interface Texture2D (SpriteAnimation)

- (void) drawAtPointTest:(CGPoint)point;

@end



3. 아래와 같이 코드를 소스 파일에 작성합니다.

#import "Texture2DEx.h"


@implementation Texture2D (SpriteAnimation)


- (void) drawAtPointTest:(CGPoint)point 

{

_maxS = 63.0 / 256.0// test

GLfloat coordinates[] = { 0, _maxT,

_maxS, _maxT,

0, 0,

_maxS, 0 };

GLfloat width = (GLfloat)_width * _maxS,

height = (GLfloat)_height * _maxT;

width = 63.0; // test

GLfloat vertices[] = { -width / 2 + point.x, -height / 2 + point.y, 0.0,

width / 2 + point.x, -height / 2 + point.y, 0.0,

-width / 2 + point.x, height / 2 + point.y, 0.0,

width / 2 + point.x, height / 2 + point.y, 0.0 };

glBindTexture(GL_TEXTURE_2D, _name);

glVertexPointer(3, GL_FLOAT, 0, vertices);

glTexCoordPointer(2, GL_FLOAT, 0, coordinates);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

}


@end


Posted by gsi
: