2011-11-01 2 views
1

저는 현재 첫 번째 iPhone 게임 인 openGLES로 작업하고 있습니다. 그것을 매분마다 사랑합니다. 그러나 몇 가지 질문이 있습니다.OpenGL ES/iPhone 개발 질문 - 첫 번째 게임

  1. 입자 시스템을 만들고 싶습니다. 가장 빠른 방법은 무엇입니까? 나는 단지 입자 개체의 배열을 변경할 수 있다고 생각 하겠지만 각 입자는 NSObject에서 파생되어야합니다. 맞습니까? 이것은 꽤 많은 오버 헤드가있는 것처럼 보입니다. 더 좋은 방법이 있습니까? 과거에는 C++를 사용하여 매우 단순한 입자 개체의 벡터를 사용하고 죽은 입자를 마지막으로 바꾸고 새로운 입자가 필요할 때 재사용했습니다. 여기에서도 같은 작업을 수행 할 것입니다. 효율성에 대해 (아마도 부당하게) 걱정했습니다.

  2. OpenGL의 좌표계를 변경하여 기본 -1 대 1 대신 0- 스크린 크기를 단위로 사용할 수있게하려면 어떻게해야합니까? (예를 들어 점 {-1,0,0, 1,0,0, 0,1,0}을 사용하는 단순한 정점 목록은 빗변이 중심 수평 축 전체를 따라 늘어나는 삼각형을 만듭니다)

  3. 마치 1.1에서 쉐이더를 사용할 수없는 것처럼 보입니다. 그러나 2.0은 에 대한 모든 것을 사용합니다.은 제가 1.1을 고수해야 할 이유가 있습니까?

  4. OpenGL에서 내 GUI를 완전히 만들 수있는 좋은 이유가 있습니까? 아니면 표준 시스템을 사용할 수 있을까요? (예 : GUI 요소로 xib 파일 만들기)

  5. OpenGL ES에 일반적으로 나타나는 흔한 함정이 있습니까? 나는 이것이 개방형이되도록 의도하지는 않는다. 스펙의 새로운 많은 사용자들을 끌어들이는 구체적인 것을 뿌리 뽑기 위해 노력하고있다.

+0

:-) 재미있는 게임 만들기? – Lukman

+0

물론 - 저는 프레임 워크에 대해 아무것도 없습니다. 나는 보통 꽤 두꺼워하고 내 자신을 굴리는 것을 좋아하지만 ... 그 순간에는 사양을 잘 모르기 때문에 cocos2d와 같은 것이 좋은 아이디어 일 것입니다. – ultifinitus

+0

나는이 질문을 여러개로 나누어야한다고 생각하니? – ultifinitus

답변

2
  1. 내가 내 정기적 C 구조체를 사용 NSObjects은 돼지는 3G에 나는 2000 개 C 구조체와 입자 아무 문제, 객체 미만 (200)를 얻을 수 있습니다, 이러한 맥락에 있습니다. 이 같은
  2. 뭔가 당신은 480x320을 좌표계를 얻을 것이다 :

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    CGRect rect = self.view.bounds; 
    if (highRes && (retina == 1)) { 
        glOrthof(0.0, rect.size.width/2, 0.0 , rect.size.height/2, -1, 1000.0); 
    } else { 
        glOrthof(0.0, rect.size.width, 0.0 , rect.size.height, -1, 1000.0);  
    } 
    
  3. 만 오래된 장치 < 3GS를 지원합니다.
  4. 원하는 모양과 작업에 따라 다릅니다. 텍스트 입력이 필요하다면 OpenGL에서 처음부터 다시해야하고 글꼴 렌더링 등을해야한다는 것을 기억하십시오. 때로는 둘 다 섞어서 사용할 수 있습니다 (예 : 서랍을 텍스트 상자 등으로 열 수 있음).하지만 OpenGL에서 무슨 일이 일어나는지 믹싱해야합니다. 아주 간단합니다.
  5. 함정이 많으면 좋은 튜토리얼을 얻는 것이 좋습니다. 기초를 다뤄야합니다.보기를 설정하고 모형을 입히는 것으로 넘어 가고, 뭔가 잘못되면 다시 참조 할 수 있습니다.

행운을 빌어 요, 그것은 당신적인 Cocos2D 같은 프레임 워크를 사용하여 생각 해 봤나

+0

하하, 답장을 보내 주셔서 감사합니다. 나는 입자로하고 싶었던 것을 제외하고는 모든 것을 알아 냈습니다. 감사합니다! (오, 그것은 이미 중독성이 있습니다. 나는 그것을 만드는 것보다 더 바보 같은 게임을하는 데 더 많은 시간을 보내고 있습니다!) – ultifinitus