0

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

画面に何も表示されないのはなぜですか?

4

1 に答える 1

0

試してみるいくつかのこと:

  1. レンダラーが正しく設定されていることを確認してください - シーンを設定するためにどのような呼び出しを行っていますか? いくつかのヒントについては、 neheに関するいくつかのレッスンをご覧ください
  2. 画面サイズのシンプルな正方形を作ります。上部のセクション (青いクワッドですよね?) でこれらの線に沿って何かを行っていますが、それが中央にあることを確認してください。
  3. 正しい巻き方を確認してください。あなたは私のやや錆びたOGLの記憶から来ているようです。
  4. さまざまな方向に翻訳してみてください。最初の で間違った方法で翻訳しているように見えますtranslatef
于 2012-06-19T20:30:33.460 に答える