使用OpenGL在iphone上扭曲图像

时间:2010-10-19 20:47:37

标签: iphone objective-c image opengl-es distortion

我对编程很新,我现在正在做这件事,只是为了教育自己,玩得开心。

尽管已经阅读了这篇精彩的文章here,但我在理解一些OpenGL内容方面遇到了很多麻烦。我还下载并玩了一个苹果开发者网站的例子,该网站使用.png图像作为精灵。我最终想要使用图像。

我想要做的就是拍摄一张图像并对其进行扭曲,以便它的四个角落在我提供的四个不同的x,y坐标处。这将是各种计时器(CADisplayLink?),其中一个或多个点在每个时刻都在变化。我只是想在这些动态点之间拉伸它。

我只是无法确切了解其工作原理。正如我在开发人员中心了解了一些示例代码,我可以使用:

glVertexPointer(2, GL_FLOAT, 0, spriteVertices);

其中spriteVertices类似于:

const GLfloat spriteVertices[] = {
-0.90f, -.85f,  
0.95f, -0.83f,  
-0.85f,  0.85f, 
0.80f,  0.80f,    
};

问题在于,我不明白这些数字究竟是什么意思,为什么有些人在他们面前有负面影响,以及他们从哪里得到四角。我怎么需要改变我得到的正常x,y坐标才能将它们插入? (我对x,y的数字看起来不像1到0之间的数字吗?我想要像每像素精度一样。

任何帮助都非常受欢迎,即使它只是更多阅读的链接。我无法为newb寻找资源。

1 个答案:

答案 0 :(得分:1)

它并不像最初看起来那么复杂。每对数字与屏幕上的x,y位置相关。因此,0.80f,0.80f,可以说是x和y的可绘制区域的80%(从左到右,从下到上)。虽然-0.80,-0.80会说从右到左,从上到下都是80%的可绘制区域。否定只会改变方向。值得注意的是,openGL向上拉(就像你从地面抬起一座建筑物),而iPhone则向下拉(就好像你正在读书)。

要获取像素,请将浮点值乘以可绘制区域1024 X 0.8 = 819.2。

本教程适用于纹理,但它非常棒,可以帮助您学习坐标系: http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html