问题描述
|
我正在使用本教程/示例在iPhone上进行一些基本的对象跟踪。一切正常,我什至对性能做了很多调整,但是我仍然遇到一个问题。
基本的问题是我对OpenGL的理解不够充分,我应该因羞耻地获取示例代码并将其转变为对我有用的东西而受到惩罚。事实上,我受到了惩罚。
该示例演示了如何使用着色器将iPhone的相机渲染为屏幕外的纹理,以便能够对其进行处理并将其显示在屏幕上。现在,我发现它使用一系列顶点属性来绘制纹理/层(尽管我在Google上进行搜索,但我几乎不了解该原理)。
顶点数组如下:
static const GLfloat squareVertices[] = {
-1.0f,-1.0f,1.0f,};
static const GLfloat textureVertices[] = {
1.0f,0.0f,};
我还发现这些顶点属性可以改变绘制纹理的方向。现在以纵向绘制纹理,这意味着,如果我将iPhone保持在横向(我想要),并且让视图沿旋转,则我在屏幕上看到的所有内容都是90度角的相机。
我认为我已将问题缩小到足以责怪这些顶点的程度,而且我一直在弄乱它们的值,但没有任何可接受的结果。
有没有人可以帮助我在景观中绘制纹理?
附言:如果我反转\'squareVerticles \'的值,我就能得到180度旋转的图片。但是我希望纹理旋转90度而不是180度。
解决方法
假设您的屏幕具有从coordinates1ѭ(左,底)到
1.0,1.0
的归一化坐标。第一个数组指定正方形的顶点的坐标(大概是三角形带,因为它们以“ Z”形给出)。
第二个数组指定纹理坐标。一样,只是它们在0.0,1.0
范围内。
因此,要顺时针旋转90度:
1.0f,0.0f
0.0f,0.0f
1.0f,1.0f
0.0f,1.0f
逆时针方向:
0.0f,1.0f
1.0f,0.0f
希望能成功!