OpenGL масштабирование массивов вершин - PullRequest
0 голосов
/ 26 октября 2011

У меня есть массив вершин, который я рисую следующим образом (я работаю, чтобы преобразовать это в один вызов glDrawArrays, так что это не проблема здесь):

gl.glVertexPointer(3, GL.GL_FLOAT, 0, buff);
for ( int i = 0; i < numPoints; i++  ) {
    gl.glDrawArrays(GL.GL_LINE_LOOP, i*verticesPerPoint, verticesPerPoint);
}

Это работает, но я быхотел бы масштабировать линии петли, которые рисуютсяЯ пытался вызвать glScaled перед вызовом glDrawArrays, но затем точки не отображаются.Я бы подумал, что масштабирование просто масштабирует линейные петли на месте, но, похоже, это не так.

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

Может кто-нибудь объяснить, что я делаю неправильно или это вообще возможно?

1 Ответ

3 голосов
/ 26 октября 2011

Вы уверены, что glScale применяется с текущим матричным режимом, установленным в матричный режим GL_MODELVIEW ? Если да, вызывается ли он до или после какого-либо преобразования пространства объектов? Использование glScale [f / d] является разумным подходом - он будет применяться к данным вершин - но упоминание о «постоянном размере пикселя» предполагает, что это, возможно, проблема 2D. В этом случае, возможно, стоит взглянуть на механизм glViewport .

...