Stworzenie pofalowanej powierzchni terenu z trójkątów

0

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.

0

Żeby narysować jeden kwadracik potrzebujesz czterech różnych wartości y.
Tymczasem robisz zawsze calcY(x, z).

0

Poczytaj jak działa triangle strip i narysuj sobie na kartce po kolei wszystkie punkty, które chcesz narysować. najprościej będzie Ci narysować kilka równoległych stripów, tylko pamiętaj, żeby każdy kolejny zaczynał się od punktów poprzedniego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1