gpt4 book ai didi

java - OPENGL ES glRotatef

转载 作者:行者123 更新时间:2023-11-29 03:44:02 24 4
gpt4 key购买 nike

我只想说清楚。我对 Open GL 还是个新手,主要是通过反复试验来学习。

当我使用 glRotatef(angle, x, y, z) 时

我从那个点开始画的任何东西都会在指定的轴上旋转指定的量?

那么我该如何撤销这样的旋转呢?

    glRotatef(45, 0, 0, 1);
// draw object
glRotatef(0, 0, 0, 0);

那行得通吗?

为了清楚我的需要,当用户在屏幕上拖动手指时,它会以给定的角度绘制一条线,我将采用该角度并将其应用于带纹理的正方形。

我在这个正方形之前和之后绘制了很多我不想旋转的对象。

到目前为止,我认为可以肯定地说,当您应用变换/旋转/平移/纹理时,除非您指定其他方式,否则它将保持这种状态?

最佳答案

OpenGL 转换常见问题解答包括以下内容:http://www.opengl.org/archives/resources/faq/technical/transformations.htm

您可以计算每个变换操作的逆运算,我很确定在这种情况下正确的方法是 glRotatef(-45, 0, 0, 1)。当您开始添加音阶并转化为混音时,这很快就会变得复杂。一个简单得多的解决方案是使用 glPushMatrixglPopMatrix

包装转换

例如:

// save the current matrix state
glPushMatrix()

// Transform
glTranslate(...)
glRotate(...)

// Issue a draw call
glDrawArrays(...)

// Restore the transformation matrix to when it was saved.
glPopMatrix()

弹出矩阵后,您可以像从未发生过转换一样继续您的业务。这对于层次转换也非常有用,因为您可以在彼此内部有多个 push-pop 序列。

关于java - OPENGL ES glRotatef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812493/

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