Название: [РЕШЕНО] qreal как float Отправлено: Torvald от Май 15, 2014, 15:48 Пишу приложение с использованием OpenGL, соответственно все координаты, данные матриц и т. п. должны иметь тип float. Конечно, можно использовать double, но это медленнее и памяти требует в два раза больше.
В Qt есть очень удобные QVector[2|3]D и QMatrix4x4, там уже куча готовых методов по вычислению дистанции, всяких dot product, установке проекционных матриц, поворотов, смещений и т. д. Но все они оперируют значениями типа qreal, который на х86 является типом double. Короче нужен float и я не знаю что делать без перекомпиляции Qt-библиотек с последующим тасканием их вместе с проектом :( Как вариант писать свой велосипед, но опять же, используя Qt, хочется выжать из него максимум. Название: Re: qreal как float Отправлено: m_ax от Май 15, 2014, 16:00 Цитировать Но все они оперируют значениями типа qreal, Неа.. Note: By design values in the QVector3D instance are stored as float. This means that on platforms where the qreal arguments to QVector3D functions are represented by double values, it is possible to lose precision. Название: Re: qreal как float Отправлено: Torvald от Май 16, 2014, 08:01 Ой, действительно, какой я невнимательный :D
Код Спасибо! Название: Re: qreal как float Отправлено: vulko от Май 20, 2014, 10:37 Ой, действительно, какой я невнимательный :D Код Спасибо! static_assert(sizeof(QVector3D)==sizeof(float)*3, "QVector3D not equal float*3"); //no error это выражение всегда false. размер объекта класса явно больше 3-х float. Название: Re: qreal как float Отправлено: Torvald от Май 22, 2014, 15:19 static_assert(sizeof(QVector3D)==sizeof(float)*3, "QVector3D not equal float*3"); //no error это выражение всегда false. размер объекта класса явно больше 3-х float. Ничего подобного, этот объект как раз и состоит из 3-х float. Выше ведь ответили |