android – 如何在Open GL中创建连续重复滚动的背景图像?

android – 如何在Open GL中创建连续重复滚动的背景图像?,第1张

概述我有一张图片:background.png.如何使用 Android OpenGL ES或AndEngine库或您知道的其他技术创建连续重复滚动背景图像? 例: 目前,我使用两个相邻图像技术.我加载了两次image(background.png)并将它们相邻放置,然后移动它们.所以它看起来只是一个图像连续滚动. 但是,不知何故,我认为只使用一个图像实例可能会有更好的解决方案.有谁可以分享? 更新: 我有一张图片:background.png.如何使用 Android OpenGL ES或AndEngine库或您知道的其他技术创建连续重复滚动背景图像?

例:

目前,我使用两个相邻图像技术.我加载了两次image(background.png)并将它们相邻放置,然后移动它们.所以它看起来只是一个图像连续滚动.

但是,不知何故,我认为只使用一个图像实例可能会有更好的解决方案.有谁可以分享?

更新:
对于好奇的人,这是两个相邻的图像代码(使用AndEngine库):

movingBackgroundSprite.registerEntityModifIEr(new LoopEntityModifIEr(    new MoveYModifIEr(10,-CAMERA_HEIGHT,0)));     movingBackgroundSprite2.registerEntityModifIEr(new LoopEntityModifIEr(    new MoveYModifIEr(10,CAMERA_HEIGHT)));

上面的代码是关于重复制作背景图像&从上到下垂直滚动.

注意:
* movingBackgroundSprite是一个加载background.png图像的Sprite类.您可以看到有两个背景Sprite实例.
* registerEntityModifIEr – >为Sprite应用修饰符/行为
* LoopEntityModifIEr – >循环行为
* MoveYModifIEr – >通过y位置移动行为.第一个参数是持续时间(你可以忽略它,因为它与问题无关),第二个参数是Source-Y位置,第三个参数是Destination-Y位置.
* CAMERA_HEIGHT – >定义背景图像高度的常量.

解决方法 如果您设置了glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT)(我认为这是默认设置),您只需绘制一个全屏四边形并以小步长递增s纹理坐标(如果您需要,它也可以垂直工作).

大于1.0的值将包裹在纹理的左侧,不需要额外的任何内容.并且,不需要两个绘制调用.

你没有说你是否有ES 1.0或2.0,但如果它是2.0,你可以将偏移作为一个整体传递,并将其添加到着色器中的纹理坐标,这比每次更改顶点数据(texcoord)更有效帧.虽然它是一个每帧一次的东西,但它可能无关紧要,它可能只是一样.

编辑:
我不知道AndEngine,可能有更简单,更方便的命令来绘制纹理全屏四边形…但是给定“OpenGL ES 1.0”,使用立即模式并假设默认的MVP矩阵,这可能看起来像这样非常粗略的例子:

glBindTexture(GL_TEXTURE_2D,cloudy_sky_texture);glTexImage(...);glTexParameteri(GL_TEXTURE_2D,GL_REPEAT);...float offset = 0.0f;while(!quit){    offset += 1.0f/texture_size;    glBindTexture(GL_TEXTURE_2D,cloudy_sky_texture);    glBegin(GL_QUADS);        glVertex2f(-1.0f,-1.0f);        glTexCoord2f(0.0f + offset,0.0f);        ...        glVertex2f(1.0f,1.0);        glTexCoord2f(1.0f + offset,1.0f);    glEnd();    DrawForegroundStuff();}

为简洁起见,省略了一些行,立即模式并不好,并且有足够的优化空间,但原则应该是清楚的.你真的只是绘制一个四边形并增加纹理坐标的s分量.

总结

以上是内存溢出为你收集整理的android – 如何在Open GL中创建连续重复滚动的背景图像?全部内容,希望文章能够帮你解决android – 如何在Open GL中创建连续重复滚动的背景图像?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1128999.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存