2012-12-03 2 views
0

GLUT을 사용하여 큐브를 그려야하는 간단한 응용 프로그램을 만들고 있습니다.
일반 C로 OpenGL을 연구 했으므로 glutInit과 같은 함수를 더 이상 호출 할 필요가 없기 때문에 어떤 함수를 호출하여 컨텍스트를 초기화해야하는지 이해하기가 어렵습니다.
그래서 나는 윈도우 NSOpenGLView, 장애인 한방 메모리를 서브 클래 싱이 코드를 썼다 :코코아와 OpenGL : 큐브 그리기에 실패했습니다

@implementation MyView 

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) 
    { 
     NSOpenGLContext* context=[self openGLContext]; 
     [context makeCurrentContext]; 
     glMatrixMode(GL_MODELVIEW); 
     glLoadIdentity(); 
     gluLookAt(0, 0, -100, 0, 0, 0, 0, 1, 0); 
     glMatrixMode(GL_PROJECTION); 
     glLoadIdentity(); 
     gluPerspective(45, 1, 1, 1000); 
     glShadeModel(GL_SMOOTH); 
     glMatrixMode(GL_MODELVIEW); 
     glEnable(GL_DEPTH_TEST); 
    } 
    return self; 
} 

- (void)drawRect:(NSRect)dirtyRect 
{ 
    glClearColor(0, 0, 0, 0); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    glColor4f(1, 0, 0, 0); 
    glutSolidCube(10); 

    glFlush(); 
} 

을하지만 블랙 뷰가 아닌 큐브를 볼 수 있기 때문에 내가 뭔가를 놓친 것 같은 것 같습니다.

답변

2

initWithFrame의 코드를 준비하여 GL을 준비해야합니다. 예 :

- (void)prepareOpenGL { 
    NSOpenGLContext *context = [self openGLContext]; 
    [context makeCurrentContext]; 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    gluLookAt(0, 0, -100, 0, 0, 0, 0, 1, 0); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(45, 1, 1, 1000); 
    glShadeModel(GL_SMOOTH); 
    glMatrixMode(GL_MODELVIEW); 
    glEnable(GL_DEPTH_TEST); 
} 
+0

죄송합니다. 저는 이미 initWithFrame 메소드에 있습니다. –

+1

나는 무엇을 의미하는지 모르겠다. prepareOpenGL이라는 메서드에 있어야한다. – combinatorial

+0

오, 그래, 미안해. 좋은 대답, 그게 문제를 해결. –

관련 문제