Articles of 缩放

我怎样才能在游戏中支持多种分辨率和多种方向?

我正在编写一个移动的Android和iOS游戏。 这个游戏类似于涂鸦跳跃,但没有滚动。 在我的游戏中,我显示一个应该覆盖整个屏幕的背景图片。 最重要的是,我画了一些构成平台的32×32平铺图像。 我有三个控制button,显示在屏幕的底部。 分数显示在屏幕的顶部。 我试图确保这个游戏可以在任何分辨率下工作,并且可以从风景模式旋转到纵向模式,反之亦然。 玩家应该能够改变方向而不会丢失任何平台。 我已经find了几个方法来做到这一点,但是如果你locking方向或倾斜图像,他们似乎只能工作。 缩放内容 将无法正常工作,因为它会歪斜图像太多,看起来不专业。 通过信箱缩放内容并保持宽高比 这引入的黑条可能会变得压倒性的。 例如,如果我将960×640分辨率的设备旋转为纵向,则新的分辨率将为640×960。 当我试图执行这个,它给了我可怕的结果。 肖像: 景观: 用单独的值缩放x,y轴 scaling factor (on x-axis) = screen width in pixels / target width in pixels scaling factor (on y-axis) = screen height in pixels / target height in pixels 这个方法改变了我试图避免的坐标系的边界。 使用虚拟视口 我喜欢这个想法,但它似乎还不能适应方向的变化。 纵横比的变化似乎是很大,当你尝试这种方法的景观和肖像。 我在这个主题上find的一些很好的链接可以在这里find http://blog.gemserk.com/2013/01/22/our-solution-to-handle-multiple-screen-sizes-in-android-part-one/ http://v-play.net/doc/vplay-different-screen-sizes/#approaches-for-content-scaling 我也曾经想过,只有在背景图像拉伸的时候,在方向改变的时候重新计算一切(玩家和平台)的新位置。 但是,我不确定这将如何影响碰撞检测和实时跳跃。 […]

Android上的LibGdx Scalling精灵

我有一个精灵是几个button,但需要他们在所有的Android设备屏幕的中心。 我试图通过将正交相机除以2来将它的位置设置到屏幕的中心,但是它没有帮助。 任何简单的方法来解决这个?

在OpenGL中使用两个图像的非功率硬边

当在Java2D中缩放2D图像时,在保持硬边缘的同时缩小到2的非幂次方面做得非常好。 但是,在OpenGL中,我一直无法find解决scheme。 我曾尝试使用GL_NEAREST来获得硬边缘,但也创造了不可思议的边缘。 在这种情况下我也不能使用GL_LINEAR ,但是线性插值仍然看起来很乱。 示例(渲染30×30硬图像,渲染30×30像素)。 请注意 :我知道,这种情况发生在非二三十像素的图像上,但主要问题在于,如果我试图将图像放大或缩小为两倍(比如16×16)的图像,两个幂(20×20),我仍然得到这个效果。 这个缩放这个问题发生在Java2D中,但是它远不是那么明显。 我的问题是:当渲染两个图像的非功率时,我需要使用什么参数? 所以我可以得到类似于Java 2D的效果。 如果需要,我可以发布源代码。 编辑 原始图片(30 x 30 png) 事实certificate,我并没有缩小它们! 两者都在OpenGL和Java2D上以原始的30 x 30像素渲染。 示例代码:Java2D: g.drawImage(heart, 0, 0, 30, 30, null); 没有渲染提示正在应用,只是最低限度。 在OpenGL中 顶点着色器: #version 400 in vec2 position; out vec2 textureCoords; uniform float width; uniform float height; uniform float xOffset; uniform float yOffset; uniform mat4 transformationMatrix; […]

我应该在渲染时避免重新缩放模型吗?

我对游戏开发相当陌生,目前正在用MonoGame和Blender开发一个简单的3D游戏。 这个游戏基本上是Pong的3D版本。 起初,我开发了一个恒定大小的模型(例如一个半径为1的球体),然后加上一个比例尺,使其与世界上其他的物体成比例。 这样一来,我就可以轻松地find物体,并find合适的尺寸,而无需返回到Blender。 然而,当我开始研究碰撞检测的时候,我意识到现在要弄清楚这个物体有多大是很困难的,因为我不得不根据比例因子I重新计算游戏世界中物体的大小用过的。 我不能简单地看看模型,并从那里取出大小的值。 虽然简单的球体计算可能相当容易,但是当我在不同维度上缩放比例的模型时,它会变得更加棘手。 例如,我把一个立方体重新调整为高出10倍。 几乎与旋转相同的问题。 这通常是如何在项目中完成的? 在Blender的最终尺寸中创建模型是否更好?因此,您不必跟踪代码中的对象大小? 或者可以在代码中缩放模型吗? 如果是的话,你如何跟踪这些变化?

在运行时缩放图像会影响我的游戏速度吗?

我已阅读Android开发人员指南,以处理不同的屏幕尺寸。 我的问题是, 如果我只在可绘制文件中提供一个图像,并让android为我缩放,会不会影响我的应用程序的整体性能? 例如,我只是简单地显示一个红色的方块,没有任何细节的广场。 我是否应该提供替代资源,Android的缩放会在更大/更小的屏幕上影响我作为应用程序的性能?

在HTML5 Canvas游戏中将补间效应代码放在哪里?

我正在构建一个JavaScript HTML5帆布游戏,我需要缩放地图。 然而,每当我缩放我的地图时,屏幕十分明显。 如果没有玩家注意,可以顺利地进行缩放,我使用Greensock TweenMax添加Tween效果。 我把代码gsap.TweenMax.to(…)放在我的animation更新循环中,在requestAnimationFrame方法之后。 但是我意识到,TweenMax可能在animation中拥有自己的animation,并在内部处理animation。 但是代码工作得很好。 这个实现有没有副作用? 什么是正确的地方把我的补间代码? 我应该在更新循环中实现自己的代码吗?

GUI缩放:基于视口的缩放或单个逻辑

我想使用scene2d为libGDX游戏创建一个GUI。 在scene2d中,所有尺寸都以像素为单位(而不是百分比)提供。 所以我想知道处理不同屏幕分辨率的最佳方法是什么? 我想到了两个解决scheme,我想知道如何进行: 使用GUI的固定分辨率(例如1920×1080),优化所有小部件的尺寸,并让视口完成剩下的工作(所以会有超采样或二次采样) 或者为gui写一个resize的逻辑,以适当地调整widget的大小和位置到屏幕的分辨率 有没有什么已知的最佳做法如何处理这个问题?

Phaser中的Tilemap图层缩放和相机问题

我正在使用Phaser框架,当缩放tilemap图层以模拟我的项目中的缩放function时,我正在努力解决相机/渲染问题。 相机大小设置为1024×768像素(与舞台大小相同)然后创建一个3072x2304px的地图和地图图层。 // Create the tilemap and the tilelayer this.map = this.add.tilemap(); this.map.addTilesetImage('tiles'); this.layer1 = this.map.create('layer', 96, 72, 32, 32); this.layer1.resizeWorld(); 代码放大 this.layerScaleGroup = this.add.group(); this.layerScaleGroup.add(this.layer1); this.layerScaleGroup.add(this.marker); this.layerScale = 1; this.inputScale = 1; 在更新function if(this.input.keyboard.isDown(Phaser.Keyboard.Q)){ this.layerScale -= .2; this.inputScale += .2; } if(this.input.keyboard.isDown(Phaser.Keyboard.A)){ this.layerScale += .2; this.inputScale -= .2; } this.layerScale = Phaser.Math.clamp(this.layerScale, .33, 1); […]

XNA缩放和渲染目标

我正在制作一个自上而下的策略/角色扮演/塔防XNA游戏的Windows,我遇到了一个问题,同时缩放。 我的显示模式是1680 X 1050,这就是我设置的PreferredBackBuffer的宽度和高度。 我发现,当我使用我的相机对象放大和缩小(改变传递给SpriteBatch.Begin方法的matrix的比例,它改变了我的精灵的规模…但我仍然局限于BackBuffer(0,0,1680,1050)… 我可以使用类似RenderTarget的东西来扩展在“地图”上缩放/平移时可访问的实际区域吗? 我正在考虑使它像5000 X 3125 … 我应该如何处理这个问题的任何想法/例子? 我已经添加了我正在体验的video… http://www.youtube.com/watch?v=jIiAeXbAnec 为了logging,我也在Stack Exchange上发布了这个问题- Stack Overflow

xna模型缩放 – 模型比世界更大

我在使用C#在XNA中扩展我的模型时遇到了问题。 模型比世界本身还要大,我似乎无法缩小。 下面是我正在使用的代码和附加的截图。 我怎样才能缩小我的模型? private void DrawModel(Matrix currentViewMatrix) { Matrix[] bones = animationPlayer.GetSkinTransforms(); // Compute camera matrices. Matrix view = Matrix.CreateTranslation(0, -40, 0) * Matrix.CreateRotationY(MathHelper.ToRadians(cameraRotation_model)) * Matrix.CreateRotationX(MathHelper.ToRadians(cameraArc)) * Matrix.CreateLookAt(new Vector3(0, 0, -cameraDistance), new Vector3(0, 0, 0), Vector3.Up); float fieldOfView = MathHelper.ToRadians(4); Matrix projection = Matrix.CreatePerspectiveFieldOfView(fieldOfView, device.Viewport.AspectRatio, 1, 100000); // Render the skinned mesh. foreach (ModelMesh […]