0
我正在尝试按照这个在线教程创建一些波 http://nehe.gamedev.net/tutorial/flag_effect_(waving_texture)/16002/。opengl中的旗帜效果
我想让波形变得更大,但我不知道如果我正确地做了这件事,目前的四边形网格在教程中大小为45,所以我增加到了450,但是大小似乎并没有增加太多。
有人可以指出我正确的方向,需要修改什么使四边形更大。
我正在尝试按照这个在线教程创建一些波 http://nehe.gamedev.net/tutorial/flag_effect_(waving_texture)/16002/。opengl中的旗帜效果
我想让波形变得更大,但我不知道如果我正确地做了这件事,目前的四边形网格在教程中大小为45,所以我增加到了450,但是大小似乎并没有增加太多。
有人可以指出我正确的方向,需要修改什么使四边形更大。
如果您只是想让这些四边形更大,那么您需要修改顶点位置代码。在讷河教程张贴变化这一部分:
// 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)。
目前尚不清楚究竟应该做些什么更大。波的幅度或频率?四边形数量?它们的大小? –
四边形的尺寸,所以水面积更大 – user195257
只需在旋转后用'glScalef'对其进行缩放即可。 –