Я использую OpenGL для рендеринга перспективы камеры, и одна точка в моем коде, я пытаюсь взять направление света (показано здесь как тип "Vector4") и умножить его на матрицу типа "Matrix4x4«Это представляет преобразование Modelview (извините, если это не имеет никакого смысла, это для школьного проекта, поэтому я все еще изучаю этот материал) В любом случае, мой код выглядит следующим образом ...
Vector4 lightDirection = data->dir * follow->getModelviewMatrix().getInverse().getTranspose();
data->dir = lightDirection;
setLight(*data);
это дает мне следующую ошибку:
passing 'const vec4<double>' as 'this' argument of 'vec4<T>& vec4<T>::operator=(const vec4<T>&)[with T = double]' discards qualifiers
Опять же, большая часть этого кода уже написана для класса (а именно, векторные и матричные типы), но если кто-то может просто помочь мне расшифровать, что означает ошибкаЭто будет высоко ценится!Я могу дать больше информации по мере необходимости.
Я полагал, что «data» или «data-> dir» были постоянными, однако я не могу найти упоминания ни об одном из них.'dir' имеет тип SceneLightData, и когда он добавлен, я делаю это:
void Scene::addLight(const SceneLightData &sceneLight)
{
SceneLightData light = sceneLight;
m_lights.push_back(&light);
}
В этой строке возникает ошибка:
data->dir = lightDirection;
РЕДАКТИРОВАТЬ
проблема решена.Спасибо всем!решение:
void Scene::addLight(const SceneLightData &sceneLight)
{
SceneLightData* light = new SceneLightData;
*light = sceneLight;
m_lights.push_back(light);
}
и
SceneLightData* data = m_lights[i];
data->dir = data->dir * follow->getModelviewMatrix().getInverse().getTranspose();
setLight(*data);