为什么我的OpenGL Radar实现不在屏幕上呈现?

时间:2012-06-19 19:44:20

标签: c++ opengl

我想使用openGL为我的3D游戏实现雷达。我一直试图以多种方式完成它,但没有一个被批准是正确的。以下是我的代码片段:

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();

为什么屏幕上没有显示任何内容?

1 个答案:

答案 0 :(得分:0)

有些事情要尝试:

  1. 确保您已正确设置渲染器 - 您正在进行哪些调用以设置场景?请查看some of the lessons on nehe以获取一些提示。
  2. 制作一个与屏幕大小相同的方形。你在顶部的那些线上做了一些事情(蓝色四边形对吗?),但要确保它居中 - 看起来你可能会向上推动1000个单位。
  3. 检查你是否正确缠绕。看起来你是来自我有点生锈的OGL记忆。
  4. 尝试翻译不同的方向。在我看来,您可能会使用第一个translatef
  5. 翻译错误的方式