Как получить текущее положение вершин треугольников - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть следующий фрагмент кода:

 glRotatef(triangle_info.struct_triangle.rot, 0, 0, 1.);

 glEnableClientState(GL_VERTEX_ARRAY);

 glVertexPointer(2, GL_FLOAT, 0, trian_data_values);

 glDrawArrays(GL_TRIANGLES, 0, 3);

Я хочу знать каждую позицию VERTEX после каждого преобразования.Как я это сделаю?

1 Ответ

3 голосов
/ 08 апреля 2011

Нет простого способа получить эти данные.OpenGL в основном занимается рисованием, и вам обычно не нужны эти данные, он все равно будет хорошо рисоваться.Приложения, которым нужны эти данные, обычно выполняют математику самостоятельно.

Вам придется либо выполнить преобразование вручную для каждой вершины.Для этого умножьте каждую вершину на матрицу вида модели.Если вы не знаете матрицу вида модели (программа, которая должна выполнять эти вычисления, обычно кэширует это значение), вы можете запросить ее с помощью glGetFloatv(GL_MODELVIEW_MATRIX).

В качестве альтернативы, вы можете использовать обратную связь преобразования, если либо ваш OpenGLверсия по крайней мере 3.0 или EXT_transform_feedback поддерживается.Это потребует от вас создания и связывания буфера, установки позиций вершин как изменений обратной связи и вызова обратной связи начала / конца преобразования.Наконец, вам нужно сопоставить буфер, чтобы получить ваши данные обратно.
Преобразование обратной связи - это больше настроек, но избавляет вас от необходимости выполнять математику самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...