2010-10-19 28 views
2

我对编程相当陌生,而且我正在这样做,只是为了教育自己并获得乐趣。使用OpenGL在iPhone上翘曲图像

尽管已经阅读了这篇伟大的文章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之间的数字吗?我想要一个类似于每个像素精度的类似的东西。

任何帮助都非常感谢,即使它只是更多的链接我在寻找资源的时候遇到了麻烦

回答

1

它并不像起初看起来那么复杂,每一对数字都与屏幕上的x,y位置有关,所以0.80f,0.80 f,可以说x和y都是可绘制区域的80%(从左到右,从下到上),而-0.80,-0.80则表示从右到左从可绘制区域的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

+0

Ermm ...对不起,我才意识到我的想法错了平台。 EAGLview默认为笛卡尔坐标系。 – Beaker 2010-10-26 07:59:46