@IliaNeverov

Как передать значение(матрицу) из одной функции в другую?

Почему значение (матрица) не передается и как это исправить?
Пытаюсь исправить это уже 2ой день, по форумам и так далее лазил ничего что мне нужно не нашел, помогите пожалуйста
Если что я новичок
этот цикл в функции находиться (не в moveCamera)
while (!glfwWindowShouldClose(mWindow))
	{
		//first.setMatrix("ModelMatrix", ModelMatrix);
		glClearColor(0, 0, 0, 1);
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glEnable(GL_DEPTH_TEST);
		glfwGetWindowSize(mWindow, &windowWidth, &windowHeight);//узнаем высоту и ширину окна каждый кадр

		//ModelMatrix = glm::rotate(ModelMatrix, glm::radians(1.0f), glm::vec3(0.0f, 0.0f, 1.0f));//Z
		//ModelMatrix = glm::translate(ModelMatrix, glm::vec3(0.00f, 0.0f, 0.0f));
		Camera cam;
		cam.moveCamera();
	    glUniformMatrix4fv(glGetUniformLocation(first.mProgram, "ModelMatrix"), 1 , GL_FALSE, glm::value_ptr(ModelMatrix));
		glUniformMatrix4fv(glGetUniformLocation(first.mProgram, "ViewMatrix"), 1, GL_FALSE, glm::value_ptr( view));
		glUniformMatrix4fv(glGetUniformLocation(first.mProgram, "projectionMatrix"), 1, GL_FALSE, glm::value_ptr(projectionMatrix));

		vao.draw(GL_TRIANGLES);
		glfwSwapBuffers(mWindow);
		glfwPollEvents();
	}

Вот эта функция которая должна вызываться затем обрабатывать саму матрицу и передавать ее в другую функцию которая описана выше (что она не делает)
glm::mat4 Camera::moveCamera()
{

	GLfloat radius = 10.0f;
	GLfloat camX = sin(glfwGetTime()) * radius;
	GLfloat camZ = cos(glfwGetTime()) * radius;
	view = glm::lookAt(glm::vec3(camX, 0.0, camZ), glm::vec3(0.0, 0.0, 0.0), glm::vec3(0.0, 1.0, 0.0));
	return view;
	
}

Также если код это функции(moveCamera) переместить перед другой(которая передает матрицы в шейдер) то все работает
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Edgar2005
Можешь использовать указатели
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы