gpt4 book ai didi

android - Libgdx 模板和形状渲染器

转载 作者:行者123 更新时间:2023-12-02 16:17:05 24 4
gpt4 key购买 nike

我正在尝试完成这样的事情:

sample image

整个屏幕将是黑色的,然后三角形的内部是只会出现的部分。

我尝试使用剪刀,但它的形状是矩形。

*原始图片来源:https://www.html5rocks.com/static/images/screenshots/casestudies/onslaught/controls_tutorial.png

最佳答案

有几种不同的方法可以渲染蒙版图像。一种可能的方法是使用深度缓冲区。我编写了一个小方法,它展示了使用 ShapeRenderer 设置缓冲区的过程,以定义图像的三角形区域来渲染并屏蔽其余部分。三角形 mask 可以替换为 ShapeRenderer 能够渲染的任何其他形状。

// For a 2D image use an OrthographicCamera
OrthographicCamera cam = new OrthographicCamera();
ShapeRenderer shapes = new ShapeRenderer();
cam.setToOrtho(true, screenWidth, screenHeight);
shapes.setProjectionMatrix(cam.combined);

private void renderStencilImage(float runTime){
// Clear the buffer
Gdx.gl.glClearDepthf(1.0f);
Gdx.gl.glClear(GL30.GL_DEPTH_BUFFER_BIT);
// Disable writing to frame buffer and
// Set up the depth test
Gdx.gl.glColorMask(false, false, false, false);
Gdx.gl.glDepthFunc(GL20.GL_LESS);
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
Gdx.gl.glDepthMask(true);
//Here add your mask shape rendering code i.e. rectangle
//triangle, or other polygonal shape mask
shapes.begin(ShapeRenderer.ShapeType.Filled);
shapes.setColor(1f, 1f, 1f, 0.5f);
shapes.triangle(x1,y1,x2,y2,x3,y3);
shapes.end();
// Enable writing to the FrameBuffer
// and set up the texture to render with the mask
// applied
Gdx.gl.glColorMask(true, true, true, true);
Gdx.gl.glDepthMask(true);
Gdx.gl.glDepthFunc(GL20.GL_EQUAL);
// Here add your texture rendering code
batcher.begin();
renderFrame(runTime);
batcher.end();
// Ensure depth test is disabled so that depth
// testing is not run on other rendering code.
Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);
}

在调用该方法之前,必须首先创建ShapeRenderer并设置投影矩阵。您还必须在 onCreate 方法的 android 配置中设置深度缓冲区选项,如下所示:

protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.depth = 15;
initialize(new game(), config);
}

glDepthFunc 的选项定义如何将 mask 应用于纹理。查看OpenGL wiki查看可以传递给函数的参数。

关于android - Libgdx 模板和形状渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40085980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com