Эффект флага в opengl - PullRequest
       7

Эффект флага в opengl

0 голосов
/ 04 ноября 2011

Я пытаюсь следовать этому онлайн-уроку, чтобы создать несколько волн http://nehe.gamedev.net/tutorial/flag_effect_(waving_texture)/16002/.

Я хочу сделать волну намного больше, но я не уверен, правильно ли я это делаю, текущая сетка четырехугольников в этом уроке имеет размер 45, поэтому я увеличил ее до 450, однако кажется, размер не так сильно увеличивается.

Может ли кто-нибудь указать мне правильное направление относительно того, что нужно изменить, чтобы увеличить квады.

1 Ответ

0 голосов
/ 05 ноября 2011

Если вы просто хотите увеличить квады, вам нужно изменить код положения вершины.В уроке NeHe, который вы опубликовали, измените эту часть:

// Loop Through The X Plane
for(int x=0; x<45; x++)
{
    // Loop Through The Y Plane
    for(int y=0; y<45; y++)
    {
        // Apply The Wave To Our Mesh
        points[x][y][0]=float((x/5.0f)-4.5f);
        points[x][y][1]=float((y/5.0f)-4.5f);
        points[x][y][2]=float(sin((((x/5.0f)*40.0f)/360.0f)*3.141592654*2.0f));
    }
}

На это:

// Loop Through The X Plane
float spacing = 0.5f;
float spacingInv = 1.0f/spacing;
float offset = (45 / spacingInv) / 2.0f;    // The 45 comes from the number of points (if you change this, change the for loop and the variable creation)
for(int x=0; x<45; x++)
{
    // Loop Through The Y Plane
    for(int y=0; y<45; y++)
    {
        // Apply The Wave To Our Mesh
        // We change the x/5.0f-4.5f to change the size of the quads
        // See text after for more details
        points[x][y][0]=float((x/spacingInv)-offset);
        points[x][y][1]=float((y/spacingInv)-offset);
        points[x][y][2]=float(sin((((x/spacingInv)*40.0f)/360.0f)*3.141592654*2.0f));
    }
}

Объяснение: x / 5.0f дает значения 0, 0.2, 0.4, 0.6, 0.8,1.0, ......, 9.0.

Если бы вы взяли только эти значения, у вас теперь была бы смещенная от центра сетка четырехугольников.Теперь, взяв x / 5.0f - 4.5f, вы получите значения -4.5 -4.3, -4.1, ...... 4.1, 4.3, 4.5

Если вы хотите увеличить квады, вам нужно увеличитьрасстояние между точками (то есть измените x / 5.0f на что-то вроде x / 2.0f (что и происходит в приведенном мной примере)).А затем вы хотите перецентрировать (т.е. изменить -4,5f).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...