我使用OpenGL(OpenTK)和C#开发2D游戏。 我喜欢随机背景由星星和雾组成。
在我投影的中间是一艘星舰。 星舰可以向任何方向移动。 背景也将在任何方向上动态生成。 我的问题是表现。我渲染了48000个顶点 (6000个带有.png纹理的矩形)用于小型 区域。由于我的星舰正在移动,该地区将会增长。 我的PC:CPU 4 Core x 2300mhz,GeForce 9800 GTX +及其静止 跑得慢。这是正常的吗?
我心中有一个解决方案。渲染区域并为backgroundtexture创建位图。
也许你有更好的解决方案。或者你可以告诉我缺点 动态创建背景纹理。
答案 0 :(得分:1)
让你提出4x4的观点。
所以你应该渲染一张由1x1的pices组成的5x5图片并将其放在屏幕上。
当你的星舰移动时,你应该产生一张1x5的图片(5个小尺寸1x1的pices)并将它放在你的船前,你应该从另一个方向删除一张图片。如果船向左移动,你应该在左边放一个新的空间,并从右边移除一个pice。等
答案 1 :(得分:1)
如果您只想要滚动纹理背景,则可以根据星舰的位置修改纹理坐标。为了使它看起来更独特,你可以使用一些透明纹理并将它们分层,这将给你一个视差效果。
至于星星,我会使用GL_POINTS
。一旦恒星“掉落”可视屏幕的边缘,使其出现在另一侧。再一次,你可以以不同的速度获得更多,因为据我们所知,星星的距离并不相同。
对不起,我不能更具体,但我在工作。