簡體   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