private void load(Mesh mesh) {
		int list = glGenLists(1);
		glNewList(list, GL_COMPILE);
		int type;
		if (mesh.getType() == Mesh.TRIAGLES)
			type = GL_TRIANGLES;
		else if (mesh.getType() == Mesh.QUADS)
			type = GL_QUADS;
		else
			throw new RuntimeException(
					"critical error, no typ given -> someone hacked some shit in");
		
		glBegin(type);
		
		for (Face f : mesh.getIndices()) {
			for (int i = 0; i < 3; i++) {
//				System.out.println(mesh.getNormals().size()+" "+mesh.getVertices().size()+" ["+(f.getVertexIndices()[i]-1)+"] "+mesh.getIndices().size());
				Vector3f v = mesh.getVertices()
						.get(f.getVertexIndices()[i] - 1);
				if (f.getNormalIndices()[i] != 0) {
					Vector3f n = mesh.getNormals().get(
							f.getNormalIndices()[i] - 1);
					glNormal3f(n.x, n.y, n.z);
				} else {
					// TODO: calculate normals
				}

				if (f.getTextureCoords()[i] != 0) {
					Vector2f t = mesh.getTexCoords().get(
							f.getTextureCoords()[i] - 1);
					glTexCoord2f(t.x, t.y);
				}

				// System.out.println("["+k+++"] vx "+v.x+" vy "+v.y+" vz "+v.z+" nx "+n.x+" ny "+n.y+" nz "+n.z+" tx "+t.x+" ty "+t.y);
//				
//				glColor3d(Math.abs(v.x/10f),Math.abs(v.y/10f),Math.abs(v.z/10f));
				glColor3f(1f, 1f, 1f);
				glVertex3f(v.x, v.y, v.z);
			}
		}
		glEnd();
		glEndList();
		mesh.setId(list);
		
		Shader shader;
		if(mesh.hasShader()) {
			shader = mesh.getShader();
			loadShader(shader);
		}
	}