Я только начал изучать LWJGL (Java OpenGL), и я сталкиваюсь с огромным лагом в моей программе.
По сути, я пытаюсь сделать клон 2.5D Minecraft, поэтомуто, что я сделал для кода мира, - это создание многомерного массива класса «Блок», который я сделал «150 на 50».Вот код для моего мирового класса:
А вот мой цикл рендеринга:
Некоторая дополнительная информациявсе методы рисования для класса «Блок» - это рисование всех сторон куба, кроме задней.
Итак, происходит то, что он рендерит большую стену кубов (хотел), за исключением того, что FPS ОЧЕНЬ плохо.
Я не совсем уверен, что я делаю не так.И помните, что мне нужен массив кубов, потому что, поскольку он будет похож на Minecraft, мне нужно будет иметь возможность легко организовывать блоки и иметь возможность уничтожать / размещать блоки в зависимости от того, что делает пользователь.
Спасибо!
Редактировать: метод Draw для класса блока:
Texture stone = Util.createTexture("Tiles/Stone.png");
stone.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glBegin(GL_QUADS);
//FRONT FACE
glTexCoord3f(0,1,z);
glVertex3f(x,y,z);
glTexCoord3f(1,1,z);
glVertex3f(x + width,y,z);
glTexCoord3f(1,0,z);
glVertex3f(x + width,y + height,z);
glTexCoord3f(0,0,z);
glVertex3f(x,y + height, z);
//RIGHT FACE
glTexCoord3f(0,1,z);
glVertex3f(x + width,y,z);
glTexCoord3f(1,1,z - length);
glVertex3f(x + width,y,z - length);
glTexCoord3f(1,0,z - length);
glVertex3f(x + width,y + height,z - length);
glTexCoord3f(0,0,z);
glVertex3f(x + width,y + height,z);
//LEFT FACE
glTexCoord3f(0,1,z);
glVertex3f(x,y,z);
glTexCoord3f(1,1,z - length);
glVertex3f(x,y,z - length);
glTexCoord3f(1,0,z - length);
glVertex3f(x,y + height,z - length);
glTexCoord3f(0,0,z);
glVertex3f(x,y + height,z);
//TOP FACE
glTexCoord3f(0,1,z - length);
glVertex3f(x,y + height,z - length);
glTexCoord3f(1,1,z - length);
glVertex3f(x + width,y + height,z - length);
glTexCoord3f(1,0,z);
glVertex3f(x + width,y + height,z);
glTexCoord3f(0,0,z);
glVertex3f(x,y + height,z);
//BOTTOM FACE
glTexCoord3f(0,1,z - length);
glVertex3f(x,y,z - length);
glTexCoord3f(1,1,z - length);
glVertex3f(x + width,y,z - length);
glTexCoord3f(1,0,z);
glVertex3f(x + width,y,z);
glTexCoord3f(0,0,z);
glVertex3f(x,y,z);
glEnd();