2011-11-04 54 views
0

我正在尝试按照这个在线教程创建一些波 http://nehe.gamedev.net/tutorial/flag_effect_(waving_texture)/16002/opengl中的旗帜效果

我想让波形变得更大,但我不知道如果我正确地做了这件事,目前的四边形网格在教程中大小为45,所以我增加到了450,但是大小似乎并没有增加太多。

有人可以指出我正确的方向,需要修改什么使四边形更大。

+5

目前尚不清楚究竟应该做些什么更大。波的幅度或频率?四边形数量?它们的大小? –

+0

四边形的尺寸,所以水面积更大 – user195257

+2

只需在旋转后用'glScalef'对其进行缩放即可。 –

回答

0

如果您只是想让这些四边形更大,那么您需要修改顶点位置代码。在讷河教程张贴变化这一部分:

// 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)。