gpt4 book ai didi

android - 使用全局顶点缓存并仍然利用 glRotate?

转载 作者:太空狗 更新时间:2023-10-29 15:24:07 26 4
gpt4 key购买 nike

我有一个简单的 Android OpenGL-ES 应用程序,并且由于所有模型都非常简单(<10 个顶点!)我已经实现了一个全局“世界”类来跟踪所有顶点,并执行一对 GL 命令在帧渲染上。

每个模型对象都将其顶点添加到全局缓冲区,这些顶点在一次操作中“发送”到 GL:

gl.glVertexBuffer(...);
gl.glDrawElements(...);

我的问题(也许是一个明显的答案,但我想确定)是,这是否意味着我必须手动完成所有自己的旋转?

我的基础对象只定义了一堆添加到缓存中的顶点,例如三角形、正方形、五角星等。然后我的世界对象获取大量顶点,并将它们转储到 GL。如果我想旋转所有这些,我是否正确地认为我必须执行我自己的顶点坐标操作(三角函数!)?

我想必须创建一些实用函数来旋转模型中的所有顶点并不是世界末日,但如果没有必要,我宁愿不这样做。

最佳答案

是的,不幸的是,这是为多个模型执行单个绘制调用所付出的代价。如果您使用标准的 Scale-Rotate-Translate 顺序,计算真的非常简单。对于每个顶点:

  • 确定到中心的距离:Xrel = X-XcenterYrel = Y-Ycenter
  • 将其乘以 x 和 y 的比例。 Xscaled = scalex*XrelYscaled = scalex*Yrel
  • 确定旋转后相对于中心的新位置:Xrot = Xscaled*cos(d)-Yscaled*sin(d) and Ynew = Xscaled*sin(d)+Yscaled *cos(d).
  • 使用平移移动顶点:Xnew = Xrot + translatexYnew = Yrot+translatey

简单!干杯,Aert。

关于android - 使用全局顶点缓存并仍然利用 glRotate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com