当我这样做时:
SpriteBatch spriteBatch = new SpriteBatch();
spriteBatch.setProjectionMatrix(new Matrix4().setToOrtho(0, 320, 0, 240, -1, 1));
spriteBatch.begin();
spriteBatch.draw(textureRegion, 0, 0);
spriteBatch.end();
SpriteBatch
会将textureRegion
绘制到我已指定给整个屏幕的坐标系320-240上。假设我想使用相同的坐标系320 240进行绘制,但仅在屏幕的左半部分 >(这意味着所有内容都将在左侧水平缩小,使屏幕的右半部分变黑),我该怎么办?
答案 0 :(得分:6)
您将要使用ScissorStack。实际上,您可以定义要绘制的矩形。所有绘图都将位于您定义的矩形中。
Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(x,y,w,h);
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
spriteBatch.draw(...);
spriteBatch.flush();
ScissorStack.popScissors();
这会将渲染限制在矩形“clipBounds”的范围内。 也可以推多个矩形。仅渲染所有矩形内的精灵的像素。
答案 1 :(得分:0)
也许我误解了这个问题,但是你能不能将视口宽度加倍,将其设置为640而不是320?
SpriteBatch spriteBatch = new SpriteBatch;
spriteBatch.setProjectionMatrix(new Matrix4().setToOrtho(0, 640, 0, 240, -1, 1));
spriteBatch.begin();
spriteBatch.draw(textureRegion, 0, 0);
spriteBatch.end();
答案 2 :(得分:0)
你可以
SpriteBatch
Sprite
并将其宽度比例设置为 0.5f (注意原点)并使用其draw(SpriteBatch)
方法绘制它。答案 3 :(得分:0)
在渲染批处理之前,您可以将视口设置为在特定屏幕区域上绘制。重要的一点是:
Gdx.gl.glViewport(x, y, w, h);
视口通常从x = 0和y = 0开始,并延伸到屏幕的整个宽度和高度。如果我们只想看到原始视口的一部分,我们需要更改大小和起始位置。要仅在屏幕的左半部分绘制,请使用:
x = 0;
y = 0;
w = Gdx.graphics.getWidth()/2;
h = Gdx.graphics.getWidth();
我找到了解决方案here并最初回答了this question一个稍微复杂的问题,但技术是相同的。
要专注于视口的任何不同部分,只需相应地选择x,y,w和h。如果您要以正常方式再进行渲染,请确保使用原始x,y,w和h值重置视口。