Невозможно использовать оператор * во время умножения матриц.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно использовать оператор * во время умножения матриц.

Сообщение Anonymous »

В моем файле OpenGL "main.cpp" (Windows-MinG) я построил матрицы представления, модели и модели-представления (vMat, mMat и mvMat соответственно), которые имеют тип glm::mat4, используемый в этом код:

Код: Выделить всё

#include 
#include 
#include 

glm::mat4 vMat, mMat, mvMat;

Код: Выделить всё

void applyMatrices(GLFWwindow* window){

mvLoc = glGetUniformLocation(renderingProgram, "mv_matrix");
projLoc = glGetUniformLocation(renderingProgram, "proj_matrix");

glfwGetFramebufferSize(window, &width, &height);
aspect = (float)width / (float)height;
projMat = glm::perspective(1.0472f, aspect, 0.1f, 1000.0f);

// glm::mat4(1.0f) : an identity matrix
vMat = glm::translate(glm::mat4(1.0f), glm::vec3(-1.0f, -1.0f, -1.0f));
mMat = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f, 1.0f, 1.0f));

mvMat = vMat * mMat;

glUniformMatrix4fv(mvLoc, 1, GL_FALSE, glm::value_ptr(mvMat));
glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projMat));
}

void display(GLFWwindow* window, double currentTime) {
...

applyMatrices(window);

...
}

int main() {
...
while (!glfwWindowShouldClose(window)) {
display(window, glfwGetTime());
...
}

...
}
Проблема в очереди

Код: Выделить всё

mvMat = vMat * mMat;
где происходит умножение матриц, что, если я **удалю**, приведет к успешной компиляции программы, но в противном случае выдаст эту ошибку относительно типа mat4 библиотеки GLM:

Код: Выделить всё

In file included from C:.../Project/dependencies/glm/glm/glm.hpp:120,
from C:\Users\...\Project\src\main.cpp:5:

c:\users\...\project\dependencies\glm\glm\detail\type_mat4x4.inl:

In instantiation of 'constexpr glm::mat glm::operator*(const glm::mat&, const glm::mat&) [with T = float; glm::qualifier Q = (glm::qualifier)0u]':

C:\Users\...\Project\src\main.cpp:150:20:   required from here

c:\users\...\project\dependencies\glm\glm\detail\type_mat4x4.inl:642:19: error: uninitialized variable 'Result' in 'constexpr' function
mat Result;
^~~~~~
Для контекста я использую Windows и компилятор MinGW.
Я попробовал инициировать все три матрицы **заранее** следующим образом:

Код: Выделить всё

glm::mat4 vMat = glm::mat4(1.0f);
glm::mat4 mMat = glm::mat4(1.0f);
glm::mat4 mvMat = glm::mat4(1.0f);
но это ничего не изменило. Я проверил, несовместима ли моя версия C++ (C++ 20) с работой матрицы GLM, но даже переход на более старую версию C++ не помог. Я не уверен, что GLM пытается работать с моим компилятором (MinGW версии 6.3), но я не уверен.

Подробнее здесь: https://stackoverflow.com/questions/791 ... iplication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Работа с Rcpp::List матриц с плотными или разреженными типами матриц
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Оптимизированная для C библиотека умножения матриц с интерфейсом Java
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Внутреннее уточнение AVX, странности умножения матриц 4x4
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Действителен ли этот тест? tinygrad невероятно быстр по сравнению с torch или numpy для умножения матриц (ЦП) среднего р
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Перегрузка умножения матриц как композиция функций
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»