2

我对编程还很陌生,在这一点上,我正在这样做,只是为了自学和玩得开心。

尽管在这里阅读了这篇很棒的文章,但我在理解一些 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 之间的数字吗?我想要类似于每像素精度的东西。

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

4

1 回答 1

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

于 2010-10-21T02:18:49.710 回答