2012-06-19 4 views
0

OpenGL을 사용하여 내 3D 게임에 대한 레이더를 구현하고 싶습니다. 나는 그것을 여러 가지 방법으로 성취하려고 노력해 왔지만, 누구도 옳다고 인정하지 않았습니다.왜 내 OpenGL Radar 구현이 화면에 렌더링되지 않습니까?

int xi, yi; 
GLfloat x,z; 
glPushMatrix(); 
{ 
    glTranslatef(-0.8f, 0.2f, -3.0f); 

    glColor3f(0.0f, 0.0f, 1.0f); 
    x = playerTank->givePosX(); 
    z = playerTank->givePosZ(); 
    xi = (int)((x + 1000)/20) + 5; 
    yi = (int)(((z + 1000)/20) + screenHeight - 105); 
    glPushMatrix(); 
    { 
     glScalef(xi,yi,1.0f); 
     glBegin(GL_QUADS); 
     glVertex2i(xi-5, yi-5); 
     glVertex2i(xi+5, yi-5); 
     glVertex2i(xi+5, yi+5); 
     glVertex2i(xi-5, yi+5); 
     glEnd(); 
    } 
    glPopMatrix(); 

    glColor3f(1.0f, 0.0f, 0.0f); 
    glPushMatrix(); 
    { 
     glScalef(xi,yi,1.0f); 
     for (int i = 0; i < tanks.size(); i++) 
     { 
      x = tanks[i]->givePosX(); 
      z = tanks[i]->givePosZ(); 
      xi = (int)((x + 1000)/20) + 5; 
      yi = (int)(((z + 1000)/20) + screenHeight - 105); 
      if (xi > 0 && xi < 110 && yi > (screenHeight - 110) && yi < screenHeight) 
      { 
       if (tanks[i] != playerTank) 
       { 
        glBegin(GL_TRIANGLES); 
        glVertex2i(xi, yi-5); 
        glVertex2i(xi+5, yi+5); 
        glVertex2i(xi-5, yi+5); 
        glEnd(); 
       } 
      } 
     } 
    } 
    glPopMatrix(); 

    glColor3f(0.0f, 1.0f, 0.0f); 
    glPushMatrix(); 
    { 
     glScalef(xi,yi,1.0f); 
     for (int i = 0; i < obstacles.size(); i++) 
     { 
      x = obstacles[i]->givePosX(); 
      z = obstacles[i]->givePosZ(); 
      xi = (int)((x + 1000)/20) + 5; 
      yi = (int)(((z + 1000)/20) + screenHeight - 105); 

      glBegin(GL_LINE_LOOP); 
      glVertex2i(xi-3, yi-3); 
      glVertex2i(xi+3, yi-3); 
      glVertex2i(xi+3, yi+3); 
      glVertex2i(xi-3, yi+3); 
      glEnd(); 
     } 
    } 
    glPopMatrix(); 
} 
glPopMatrix(); 

왜 아무것도 화면에 나타나지 않습니다 여기 아래에있는 내 코드의 조각은 무엇입니까?

+4

특히 무엇이 문제입니까? 현재 구현에서 잘못된 점은 무엇입니까? –

+0

탱크 루프에서'xi'와'yi' 값을 덮어 쓰고 장애물 루프 앞에서'glScalef()'에서 사용합니다. 이것은 의도 된 것입니까? – genpfault

+0

@JonCage, 나도 몰라, 누군가가 나에게 말해주기를 바랬다. :(내 화면에는 아무 것도주지 않으므로 왜이 기능이 작동하지 않는지 조금 혼란 스럽습니다.) genpflaut 좋은 관찰은 지금 바로 고쳐서 어떻게 될지를 볼 것입니다. – Takarakaka

답변

0

몇 가지 시도 :

  1. 을 올바르게 렌더러를 설정했는지 확인 - 당신이 장면을 설정하고있는 무슨 전화? 몇 가지 힌트를 보려면 some of the lessons on nehe을보십시오.
  2. 화면의 크기를 단순하게 정사각형으로 만듭니다. 상단 섹션 (파란색 사각형이 맞습니까?)의 라인을 따라 뭔가를하고 있지만 중심에 있는지 확인하십시오. 사용자가 1000 단위 씩 위로 밀었을 것처럼 보입니다.
  3. 올바른 방향으로 회전하고 있는지 확인하십시오. 네가 내 녹슨 OGL 추억에서 온 것 같아.
  4. 다른 방향으로 번역 해보십시오. 처음으로 translatef으로 잘못된 길을 번역하는 것처럼 보입니다.
+0

위대한! 그들을 모두 시도하고 무슨 일이 일어나는가를 볼 것입니다 – Takarakaka

+0

그러나 장면에 객체를 설정했습니다. 그것은 너무 커서 glOrtho를 사용할지 아니면 glTranslate 매개 변수를 바꿀 지 딜레마에 처하게 되나요? Btw. 도움에 감사드립니다. :) – Takarakaka

+0

문제 없음 - 처음 시작했을 때 똑같은 종류의 문제가 발생했습니다. OpenGL. 나는 그 당시에 stackoverflow했다면 좋겠다! 화면에 너무 큰 경우 사용중인 숫자를 늘려도됩니다. –

관련 문제