【发布时间】:2012-05-09 14:02:09
【问题描述】:
我需要优化我的渲染代码,目前我正在使用 glPushMatrix() 与 glTranslatef() 和 glRotatef()。但这比在单个顶点数组调用中渲染所有对象的成本更高。
OpenGL 中是否有一些 fast 内置函数可以像 glRotatef() 那样旋转我的顶点数据?如果没有,您会推荐使用什么库或方法?我知道的唯一方法是使用 sin/cos 函数来旋转顶点,但我不确定这是否是最快的方法,或者它是否会产生相同的结果。
每个对象我只需要沿一个轴旋转一次(2D 渲染),因此它不需要非常复杂或支持 glPushMatrix() 系统的全部潜力。
编辑:我不想为此使用着色器。
Edit2: 我只渲染沿零点旋转的单个四边形(在 2D 模式下),因此每个顶点的值将从 -10 变为 10。我当前的代码:(quad.vert[i].x*cosval)-(quad.vert[i].y*sinval)(两次,也适用于 y)。
【问题讨论】:
-
OpenGL 甚至不支持 glRotate。使用 GLM。
-
您需要描述您正在渲染的内容。您还需要说明着色器是否是一个选项,以及您的硬件/OpenGL 版本的目标级别。
-
@NicolBolas,着色器不是这里的选项。
-
@Rookie:“这里没有着色器选项” 还有其他问题吗?您正在渲染什么,硬件的目标级别等?你知道,回答这个问题需要足够的信息。
-
@Pubby:“兼容性配置文件”。即使在 OpenGL 4.2 中,glRotatef 也可以在兼容性配置文件中使用。