【问题标题】:OpenGL scaling vertex arraysOpenGL缩放顶点数组
【发布时间】:2011-10-26 02:11:02
【问题描述】:

我有一个顶点数组,我绘制如下(我正在努力将其转换为单个 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,但是这些点没有显示出来。我原以为缩放只是将线循环缩放到位,但事实并非如此。

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

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

【问题讨论】:

  • 规模是什么意思?缩放顶点位置?
  • Luca,例如,如果我有一个以 0,0 为中心,半径为 1 的圆,我尝试将其缩放 10,那么半径将为 10。

标签: opengl scaling vertex-array


【解决方案1】:

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

【讨论】:

  • Brett,我认为问题出在像素大小上。我回去看看,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多