Mam taki problem że nie mogę wykonać obrotu ani żadnej operacji na macierzy w shaderze
Jeśli przekażę zmienna zmiana to wszystko działa popawnie.
Namtomiast przy próbie wykonania poniższego kodu, czyli przekazania macierzy, wyświetla się czarny ekran.
Co zrobiłem żle?

glm::vec3 wierzcholek1 = glm::vec3(-0.5f, -0.5f, 0.0f);
glm::vec3 wierzcholek2 = glm::vec3(0.5f, -0.5f, 0.0f);
glm::vec3 wierzcholek3 = glm::vec3(0.0f, 0.5f, 0.0f);

void  ZmienneUniform::wyswietl()
{
	glClear(GL_COLOR_BUFFER_BIT);


	mat4 obrot;
	obrot = rotate(obrot, 90.0f, vec3(1.0, 0.0, 0.0));
    static GLfloat zmiana = 0.0f;
	//glUniform1f(zmianaShader, zmiana);
	glUniformMatrix4fv(zmiennaObrotu, 1, GL_FALSE, glm::value_ptr(obrot));

	glEnableVertexAttribArray(0);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);

	glDrawArrays(GL_TRIANGLES, 0, 3);

	glDisableVertexAttribArray(0);

	glutSwapBuffers();
}
zmiennaObrotu = glGetUniformLocation(programZShaderami, "obrot90");
	if (zmianaShader == -1)
	{
		std::cerr << "Nie znalezion zmiennej uniform." << std::endl;
		system("pause");
		exit(1);
	}

	char * vertexShader =
		"	#version 120 \n \
			attribute vec3 polozenie; \
                        uniform float zmiana; \
	uniform mat4 obrot90; \
			void main()	\
				{ \
					gl_Position = obrot90 * vec4(polozenie.x, polozenie.y, polozenie.z, 1.0f); \
				}";