使用DisplayList&amp ;;纹理高度图。 GL_TRIANGLE_STRIP?

时间:2014-07-15 21:32:27

标签: java opengl textures lwjgl terrain

glNewList(heightmapDisplayList, GL_COMPILE);

    // Iterate over the 'strips' of heightmap data.
    for (int z = 0; z < data.length - 1; z++) {
        // Render a triangle strip for each 'strip'.
        glBegin(GL_TRIANGLE_STRIP);
        for (int x = 0; x < data[z].length; x++) {
            // Take a vertex from the current strip
            if (((blue[z][x] / 255) < 0.4))
                glColor4f((red[z][x] / 255) / 2
                        + (float) (Math.random() / 10), (green[z][x] / 255)
                        / 2 + (float) (Math.random() / 10),
                        (blue[z][x] / 255) / 2
                                + (float) (Math.random() / 10), 1);
            else {
                glColor4f((red[z][x] / 255) / 2
                        + (float) (Math.random() / 10), (green[z][x] / 255)
                        / 2 + (float) (Math.random() / 10),
                        (blue[z][x] / 255) / 2
                                + (float) (Math.random() / 10), 1);
            }
            if (data[z][x] >= WATER_LEVEL -10){

            glVertex3f(x, data[z][x], z);

            // Take a vertex from the next strip
            glVertex3f(x, data[z + 1][x], z + 1);

            }

        }
        glEnd();
    }
    glEndList();

我想在上面的代码中添加一个纹理。

我希望纹理根据地形的高度而变化。这样,我就可以创建一个看起来很漂亮的地形,但不是100%相同。

如您所见,我正在使用DisplayList和GL_TRIANGLE_STRIP,我使用`glCallList(heightmapDisplayList)&#39;来调用它。

目前我只根据高度设置一种颜色,但是由于我glScalef(8, 1, 8)地图向上看起来不太好看,所以我可以得到一张顶点较少的大地图。

那么,如果不设置每个顶点的颜色或类似的东西,我怎么能这样做呢?

0 个答案:

没有答案