Я хочу реализовать радар для своей 3D-игры, используя openGL. Я пытался сделать это по-разному, но никто из них не утверждал, что он прав. Ниже приведен фрагмент моего кода ниже:Почему моя реализация 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