Witam, próbuję stworzyć pofalowany teren w OpenGL przy pomocy trójkątów. Niestety kod który udało mi się napisać efektem odbiega od tego czego bym oczekiwał.
GLfloat calcY(GLfloat x, GLfloat z)
{
GLfloat y = sinf(x) + sinf(z);
return y;
}
int size_x = 20;
int size_z = 20;
for (int j = 0; j < size_z; j++)
{
glBegin(GL_TRIANGLE_STRIP);
for (int i = 0; i < size_x; i++)
{
GLfloat x = i - size_x / 2; //przypisanie wartosci i wypośrodkowanie na scenie
GLfloat z = j - size_z / 2;
GLfloat y = 0;
int size = 3;
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(x * size, calcY(x, z), (z + 1) * size);
glVertex3f(x * size, calcY(x, z), z * size);
glVertex3f((x + 1) * size, calcY(x, z), (z + 1) * size);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(x * size, calcY(x, z), z * size);
glVertex3f((x + 1) * size, calcY(x, z), z * size);
glVertex3f((x + 1) * size, calcY(x, z), (z + 1) * size);
}
glEnd();
}
Po skompilowaniu otrzymuje coś takiego:
https://postimg.org/image/df9qs25wl/
https://postimg.org/image/6q2896e4l/
Krzywizna jest taka jaką mniej więcej chciałem osiągnąć, ale jak widać trójkąty nie łączą się ze sobą tak jak powinny.