Ios 使用openGL ES更改相机位置
我有一个iOS简单的项目,我在其中显示一个形状。到现在为止,一直都还不错。现在我正在尝试更改相机位置,以便在等轴测透视图中查看我的对象。我不知道如何使用OpenGL ES 2.x移动/旋转相机 当然,我可以旋转对象本身,使其从等距角度看,但这似乎不是正确的设计 有没有人可以分享一段Objective-C代码来帮助我正确定位这台相机 使用响应中的提示进行更新: 我使用Cocos3D帮助进行矩阵计算Ios 使用openGL ES更改相机位置,ios,opengl-es-2.0,glkit,Ios,Opengl Es 2.0,Glkit,我有一个iOS简单的项目,我在其中显示一个形状。到现在为止,一直都还不错。现在我正在尝试更改相机位置,以便在等轴测透视图中查看我的对象。我不知道如何使用OpenGL ES 2.x移动/旋转相机 当然,我可以旋转对象本身,使其从等距角度看,但这似乎不是正确的设计 有没有人可以分享一段Objective-C代码来帮助我正确定位这台相机 使用响应中的提示进行更新: 我使用Cocos3D帮助进行矩阵计算 CC3GLMatrix *camera = [CC3GLMatrix matrix]; [camer
CC3GLMatrix *camera = [CC3GLMatrix matrix];
[camera populateFromTranslation:CC3VectorMake(0, 0, 0)];
[camera rotateBy:CC3VectorMake(30, 0, 0)];
[camera rotateBy:CC3VectorMake(0, 45, 0)];
glUniformMatrix4fv(_cameraUniform, 1, 0, camera.glMatrix);
然后在顶点中添加摄影机
gl_Position = Projection * Modelview * Camera * Position;
就我在OpenGL ES中的有限知识而言,没有“摄影机对象”。必须相对于原点移动其他所有对象才能移动或旋转场景。正如Taum提到的,您可以使用着色器来完成此操作。就我在OpenGL ES中的有限知识而言,没有“摄影机对象”。必须相对于原点移动其他所有对象才能移动或旋转场景。正如Taum所提到的,您可以使用着色器来实现这一点。OpenGL ES,甚至在2.x中,没有任何对象与世界、摄影机与任何东西的概念。广义上讲,它有一个输入顶点流,以某种方式排列以生成几何体,这些顶点根据某种统一状态进行单独处理,然后计算出哪些碎片需要绘制,并单独执行计算以确定每个碎片的输出颜色 您提供:
- 顶点
- 制服
- 顶点着色器
- 片段着色器
因此,在本例中,您可以为对象指定不同的变换,使其看起来是等轴测的。作为第二段查询,设计不错的原因是,在将状态发送到OpenGL的最后一步中,考虑到两个单独的输入,您将计算该转换。因此,您将这两件事分别保存在程序中,然后仅为OpenGL将它们合并为一件事。OpenGL ES,甚至在2.x中,没有任何对象与世界、相机与任何东西的概念。广义上讲,它有一个输入顶点流,以某种方式排列以生成几何体,这些顶点根据某种统一状态进行单独处理,然后计算出哪些碎片需要绘制,并单独执行计算以确定每个碎片的输出颜色 您提供:
- 顶点
- 制服
- 顶点着色器
- 片段着色器
因此,在本例中,您可以为对象指定不同的变换,使其看起来是等轴测的。作为第二段查询,设计不错的原因是,在将状态发送到OpenGL的最后一步中,考虑到两个单独的输入,您将计算该转换。因此,您在程序中将这两件事分开保存,然后仅针对OpenGL将它们合并为一件事。是的,这是正确的,但通常在着色器中添加一个表示摄影机变换的矩阵(统一参数),然后将每个顶点乘以该矩阵。您的回答让人觉得通常的做法是逐个更改顶点的值;)@谢谢你。我已经有一段时间没有使用OpenGL ES了。这就是我的意思。谢谢你,我想我明白了。是的,这是真的,但通常你在着色器中添加一个表示摄影机变换的矩阵(一个统一参数),然后将每个顶点乘以该矩阵。您的回答让人觉得通常的做法是逐个更改顶点的值;)@谢谢你。我已经有一段时间没有使用OpenGL ES了。这就是我的意思。谢谢你,我想我明白了。谢谢你的解释。现在有道理了。谢谢你的解释。现在有道理了。