簡體   English   中英

如何在OpenGL中的地形上添加單個紋理?

[英]How to add a single texture on a terrain in OpenGL?

是OpenGL的新手。 是否可以在地形上包裝單個圖像?

以下代碼將生成圖像圖塊,但我想在整個地形上添加單個圖塊。

glBindTexture(GL_TEXTURE_2D, land);
for (int z = 0; z < MAP_Z-1; z++)
{

    glBegin(GL_TRIANGLE_STRIP);

    for (int x = 0; x < MAP_X-1; x++)
    {

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(terrain[x][z][0], terrain[x][z][1], terrain[x][z][2]);

    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(terrain[x+1][z][0], terrain[x+1][z][1], terrain[x+1][z][2]);

        glTexCoord2f(0.0f, 1.0f);
    glVertex3f(terrain[x][z+1][0], terrain[x][z+1][1], terrain[x][z+1][2]);

        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(terrain[x+1][z+1][0], terrain[x+1][z+1][1], terrain[x+1][z+1][2]);

    }
    glEnd();
}

問題是您當前正在將紋理映射到每個正方形。 當您越過地形時,需要更改glTexCoord2f。 只需在for循環中將x和z坐標除以地形的寬度和高度即可。

for (int z = 0; z < MAP_Z-1; z++)
{

    glBegin(GL_TRIANGLE_STRIP);

    for (int x = 0; x < MAP_X-1; x++)
    {

        glTexCoord2f((float)x/(float)MAP_X, (float)z/(float)MAP_Z);
        ...
        ... // Other code with (x+1) and (z+1) in the glTexCoord2f
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM