=================================
=================================
=================================
출처: http://papilion.tistory.com/entry/OpenGL-C-iOS
(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을 연결시켜 준다.
-- http://hanjw8410.egloos.com/ 에서 퍼왔습니다. 문제되면 삭제하겠습니다.
=================================
=================================
=================================
'스마트기기개발관련 > OpenGL (그래픽, 게임)' 카테고리의 다른 글
android 오픈지엘 OpenGL 을 2D 처럼 사용 관련 (0) | 2020.09.18 |
---|---|
android 안드로이드 NDK 설치해서 JNI 개발해보기 관련 (0) | 2020.09.18 |
android 안드로이드 ndk jni 오픈지엘 OpenGL ES 관련 EGL_DEFAULT_DISPLAY, eglCreateWindowSurface,glDrawTexfOES 등 에러 관련 (0) | 2020.09.18 |
android 안드로이드 NDK에서 C++ STL 사용 과련 (0) | 2020.09.18 |
안드로이드 android NDK jni 폴더안에 폴더를 만들어 빌드해보기 관련 (0) | 2020.09.18 |