繁体   English   中英

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

[英]Why doesn't my OpenGL Radar implementation render on screen?

我想使用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. 确保正确设置了渲染器-您要打什么电话才能设置场景? 看看有关nehe的一些课程,以获取一些提示。
  2. 制作一个与屏幕大小相同的简单正方形。 您正在沿着顶部(蓝色四边形吗?)中的这些行进行操作,但请确保其居中-好像您可能将其向上和向右推1000个单位。
  3. 检查您的绕线方法是否正确。 看来您来自我有些生锈的OGL回忆。
  4. 尝试以不同的方向进行翻译。 在我看来,您第一次translatef可能会翻译错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM