최근 포토로그


(openGL)고정기능을 사용한 HellowArrow

1. 3D 앱의 코드 구조
이 프로그램의 핵심은 C++로 작성되고 아이폰에 종속적인 부분만 Objective-C로 구현하는 앱 코드를 구성하는 두가지 방법을 아래 그림으로 표현하였다. 오른쪽 구조는 앱 엔진을 렌더링 엔진과 분리한 구조이다. 

이 구조를 응용하여 렌더링 엔진에대한 인터페이스를 정의하여, 어떤 플랫폼에도 사용할 수 있도록 한다. 여기서는 이 렌더링 엔진을 IRenderingEngine으로 정의하였다. 이 샘플에서는 다음과 같은 클래스를 구현한다.
 - RenderingEngine1 과 RenderingEngine2(표준 C++)
거의 모든 작업은 이 클래스에서 수행한다. 이 클래스가 실제로 OpenGL ES API를 호출하게 된다. RnederingEngine1은 ES 1.1을, RenderingEngine2는 ES 2.0을 호출한다.

 - HelloArrowAppDelegate(Objective-C)
   앱 델리게이트 객체는 NSObject로부터 상속받으며, UIApplicationDelegate 프로토콜을 따른다. 이 클래스는 OpenGL이나 EAGL을 사용하지 않는다. 이 클래스가 하는 일은 GLView 객체를 초기하하고 앱이 종료될 때 메모리를 해제하는 것이다.

 - GLView (Objective-C)
   UIView 클래스로부터 상속받으며, EAGL을 사용하여 OpenGL을 위한 렌더링 표면 객체 인스턴스를 생성한다.

2. 시작하기
   Xcode 에서 새로운 프로젝트를 선택한 후 Empty Application 으로 생성한다. 

3. OpenGL과 쿼츠 라이브러리 연결하기
   프로젝트의 Build Pharse 부분에서 Link binary With Libraries 에서 'OpenGLES.Framework' 와 'QuartzCore.Framework'를 추가한다.

4. UIView 클래스 상속하기
  아이폰에서 그리는 것은 결국은 뷰 안에 놓여져야 하기 때문에, HellowArrow 예제 코드에서도 UIView의 하위 클래스를 하나 만들어야 한다. Xcode에서 'Add->New File' 로 'Cocoa Touch Class' 의 'Objective-C Class' 를 생성하도록 하자. 'SubClass of' 메뉴에서 UIView 클래스를 선택하고 클래스 파일 이름을 'GLView.mm'으로 입력한다.



#import <UIKit/UIKit.h>

#import <OpenGLES/ES1/gl.h>

#import <OpenGLES/ES1/glext.h>

#import <OpenGLES/EAGL.h>

#import <QuartzCore/QuartzCore.h>


@interface GLView : UIView

{

    EAGLContext *m_context;

}


-(void)drawView;


m_context 필드는 OpenGL 컨텍스트를 관리하는 EAGL 객체에 대한 포인터이다. EAGL은 애플의 고유한 API로서 아이폰 OS 와 OpenGL을 연결시켜 준다.


----------------------- GLView 구현 파일 부터는 내일이어서 정리 하겠음. 이제 집에 가야함 ㅎㅎ ---------------

xcode 에서 C++ 사용할 때 에러 났음 ;;;

간단한 에러였는데 예상 못해서 원인을 찾는데 시간이 걸린 에러입니다;;혹시나 비슷한 현상 때문에 시간을 잡아먹고 계신 분이 있을까해서 올립니다.앱 개발하면서 C++ 코드를 넣을 일이 있었는데요.잘 돌아가던게 갑자기 "Unknown type name 'virtual' in / ~~~"이런 에러를 뱉더군요 ;; 분명 인식 하던 코드에서 알... » 내용보기

modal View 를 띄웠을 때 root Controller 로 돌아가는 방법

대부분 알고 계실텐데,간혹 modal viewController에서 navigation Controller의 root viewController로 돌아가는 방법을 질문하시는 분이 계셔서 올립니다 ^^제가 쓰는 방법은,modal viewController를 사용할 viewController에 다음과 같이 프로토콜을 정의합니다.@protocol&n... » 내용보기

Iphone sqlite DB error - attempt to write a readonly database

 이 에러는 writable 한 DB 파일이 없기 때문에 발생하는 에러이다. 이 에러가 발생할 경우 DB Path를 구하는 부분에서 아래와 같이 적용 시켜 주면 된다.-(void)createEditableCopyOfDatabaseIfNeeded  {     BOOL success; ... » 내용보기

Iphone, xml 처리 예제 링크

http://kiipos.delimount.net/1084 » 내용보기


메모장