Maybe I spoke too soon. It’s still doing it. The hallway on the right should be hidden by the wall. Its not being clipped either. It’s the depth.
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_CLAMP);
glEnable(GL_TEXTURE_2D);
...
createScreen("PARAGON 3D", false, 1366, 768, 1.0f, 1000.0f);
...
zNear = 1.0f;
zFar = 1000.0f;
...
Matrix4f Matrix4f::initProjection(float left, float right, float bottom, float top, float zNear, float zFar)
{
float width = right - left;
float height = top - bottom;
float depth = zNear - zFar;
m[0][0] = (2 * zNear) / width; m[0][1] = 0; m[0][2] = (right + left) / width; m[0][3] = 0;
m[1][0] = 0; m[1][1] = (2 * zNear) / height; m[1][2] = (top + bottom) / height; m[1][3] = 0;
m[2][0] = 0; m[2][1] = 0; m[2][2] = (-1.0f * zFar + zNear) / depth; m[2][3] = (-2.0f * zFar * zNear) / depth;
m[3][0] = 0; m[3][1] = 0; m[3][2] = -1.0f; m[3][3] = 0;
return *this;
}
...
void Level::generateLeft(int i, int j)
{
int size = mesh->getNumOfVertices();
mesh->addElement(size + 0); mesh->addElement(size + 1); mesh->addElement(size + 2);
mesh->addElement(size + 0); mesh->addElement(size + 2); mesh->addElement(size + 3);
int halfWidth = level->getWidth() / 2;
int halfHeight = level->getHeight() / 2;
//Left Plane
mesh->addVertex(Vertex(Vector3f((i - halfWidth - 0.5) * SPOT_W, SPOT_H, (j - halfHeight + 0.5) * SPOT_L), Vector3f(1, 1, 1), Vector3f(1, 0, 0), Vector2f(0, 0)));
mesh->addVertex(Vertex(Vector3f((i - halfWidth - 0.5) * SPOT_W, 0.0f, (j - halfHeight + 0.5) * SPOT_L), Vector3f(1, 1, 1), Vector3f(1, 0, 0), Vector2f(1, 0)));
mesh->addVertex(Vertex(Vector3f((i - halfWidth - 0.5) * SPOT_W, 0.0f, (j - halfHeight - 0.5) * SPOT_L), Vector3f(1, 1, 1), Vector3f(1, 0, 0), Vector2f(1, 1)));
mesh->addVertex(Vertex(Vector3f((i - halfWidth - 0.5) * SPOT_W, SPOT_H, (j - halfHeight - 0.5) * SPOT_L), Vector3f(1, 1, 1), Vector3f(1, 0, 0), Vector2f(0, 1)));
}
[ATTACH=CONFIG]820[/ATTACH]