0

我有一个顶点数组,我绘制如下(我正在努力将其转换为单个 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);
}

这可行,但我想缩放正在绘制的线循环。我在调用 glDrawArrays 之前尝试调用glScaled,但是这些点没有显示出来。我会认为缩放只是将线循环缩放到位,但事实并非如此。

请注意缓冲区中的顶点何时未缩放,因为我希望能够以不同的比例重用相同的缓冲区。这个想法是我可以在不重新创建每个通道的数组的情况下以恒定的像素大小重新绘制形状。

谁能解释我做错了什么,或者这是否可能?

4

1 回答 1

3

您确定在当前矩阵模式设置为GL_MODELVIEW矩阵模式的情况下应用glScale吗?如果是这样,它是在任何对象空间转换之前还是之后被调用的?使用glScale[f/d]是一种合理的方法——它将应用于顶点数据——但提到“恒定像素大小”表明这可能是一个 2D 问题。在这种情况下,可能值得研究glViewport的机制。

于 2011-10-26T04:54:18.583 回答