Почему Qt рассматривает методы glVertexAttrib как устаревшие / профиль совместимости?

#qt #opengl

#qt #opengl

Вопрос:

Большинство методов glVertexAttrib (например glVertexAttrib4fv() ) являются только частью профиля совместимости в Qt. Единственными методами в основных классах (например. QOpenGLFunctions_4_3_Core ) являются методы для GLdouble и GLuint, более старые версии, такие как QOpenGLFunctions_3_3_Core , включают только методы GLuint. В чем причина этого? Согласно официальной ссылке на OpenGL (https://www.opengl.org/sdk/docs/man4 /) все они являются частью основного профиля даже в последней версии.

РЕДАКТИРОВАТЬ: Это ошибка в Qt и должна быть исправлена в Qt 5.4.0

Ответ №1:

Звучит как ошибка, поэтому пожалуйста, сообщите об этом. Версионные преобразователи функций GL (т. е. QOpenGLFunctions_X_Y_Profile , не QOpenGLFunctions) автоматически генерируются из файлов спецификаций, опубликованных Khronos, которые, в свою очередь, как известно, содержат ошибки.

(И, пока мы разговариваем, генератор обновляется, чтобы использовать новые XML-файлы и иметь функции 4.4).

В любом случае необходимо проверить, является ли это ошибкой генератора или спецификации, и исправить.

Комментарии:

1. Полезно знать. Я сделаю это, если об этом еще не сообщалось. (Хотя я думаю, что вполне вероятно, что кто-то другой уже сделал это)

2. Если вы обнаружите завершающий отчет об ошибке или отправите новый, пожалуйста, оставьте здесь ссылку на него!

3. Кстати: я обнаружил еще одну ошибку в реализации Qt OpenGL и сообщил об этом здесь: bugreports.qt-project.org/browse/QTBUG-40150 (Пока не получил ответа)