我正在用opengl在android上制作一个brickbreaker游戏,我决定使用9补丁可绘制的,例如,一块砖可以很容易地变宽或变高。这个是可能的吗?
此外,我制作了我的图像,然后使用安卓工具文件夹中的draw9patch.exe来制作图像。这是一个相当大的工作,现在它证明它增加了几个像素的每一边,所以图像不再是2的幂,他们必须是。
那么如何在openGL中使用九个可绘制补丁呢?
发布于 2012-01-21 04:55:51
看起来NinePatchDrawable对象不允许您访问底层位图,但我认为您可以将它们绘制到画布上,然后从中读取结果位图。这可能也会解决你的2次方问题。
然后可以使用getPadding()读取填充区域,并将这些位置转换为0..1范围以用作纹理坐标。
然后,在OpenGL中,你可以使用九个四边形的网格绘制一块有纹理的砖,就像一个'#‘符号。顶点的纹理坐标将是固定的,并与九个面片填充相对应。您的位置坐标将取决于您的块的缩放。您将保持您的角四边形相同的大小,并根据需要缩放中心四边形。(剩余的四边形将根据需要沿一个维度缩放,以保持所有内容的连接)。
就我个人而言,我倾向于忘记Android九补丁,转而采用砖块艺术品的惯例,即(比方说)中间50%的宽度和高度是可伸展的,而周边25%的部分是不可伸展的。不过,这取决于你放弃了多少工作。
发布于 2012-01-21 04:47:27
那么如何在openGL中使用九个可绘制的补丁程序呢?
你不需要。9-补丁和绘图是用于常规的Android View类,而不是用于OpenGL。如果你想拥有类似的行为,你必须实现你自己的OpenGL渲染逻辑,包括解析9补丁PNG。
发布于 2012-01-21 04:15:20
所以图像不再是2的幂,它们必须是2的幂。
如果你使用OpenGL-es2,这个限制就被解除了。纹理可以是任意大小的。
https://stackoverflow.com/questions/8947224
复制相似问题