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();
왜 아무것도 화면에 나타나지 않습니다 여기 아래에있는 내 코드의 조각은 무엇입니까?
특히 무엇이 문제입니까? 현재 구현에서 잘못된 점은 무엇입니까? –
탱크 루프에서'xi'와'yi' 값을 덮어 쓰고 장애물 루프 앞에서'glScalef()'에서 사용합니다. 이것은 의도 된 것입니까? – genpfault
@JonCage, 나도 몰라, 누군가가 나에게 말해주기를 바랬다. :(내 화면에는 아무 것도주지 않으므로 왜이 기능이 작동하지 않는지 조금 혼란 스럽습니다.) genpflaut 좋은 관찰은 지금 바로 고쳐서 어떻게 될지를 볼 것입니다. – Takarakaka