- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道如何告诉 libgdx 在透明贴花后面绘制绿色球体。
这是我的问题的示例图片:
贴花创建:前两个参数是宽度和高度,最后一个标志是透明与否。
Decal.newDecal(count * (GUTTER + BUTTONWIDTH) + GUTTER, 2 * GUTTER + BUTTONHEIGHT,
new TextureRegion(new Texture(Gdx.files.internal("icons/uibg.png"))), true);
球体创建:
builder.createSphere(
FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2,
6, 6,
new Material(ColorAttribute.createDiffuse(Color.GREEN)),
VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
以及渲染方法:
this.models = new ModelBatch();
this.decals = new DecalBatch(new CameraGroupStrategy(camera));
...
// adding decals and models to render queue
...
public void update(float deltaTime){
super.update(deltaTime);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
models.begin(camera);
for (Entity entity : queue) {
ModelInstance model = Mappers.Object.get(entity).instance;
models.render(model, environment);
}
decals.flush();
models.end();
queue.clear();
}
我很感激每一个建议。
//编辑
为球体添加了混合属性和 0.7 的不透明度。这有效。但我猜问题出在贴花和模型渲染之间,因为背景中的网格是贴花,可以通过黑色透明贴花看到它,但球体却看不到。
新 Material 代码:
Material mat = new Material();
mat.set(ColorAttribute.createDiffuse(Color.GREEN));
mat.set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, 0.7f));
fingerTip = builder.createSphere(
FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2,
6, 6,
mat,
VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
这是另一张图片:两个中间球体没有按照应有的方式渲染在透明贴花后面。
最佳答案
在decals.flush()
之前调用models.end()
。透明的东西必须在不透明的东西之后绘制。现在您首先绘制贴花,因此它在绘制球体之前将其深度写入缓冲区。
如果您的模型也是透明的,则情况会变得更加复杂。您需要以某种方式对贴花与模型进行排序,并在冲洗贴花之前冲洗后面的模型,最后冲洗附近的模型。
关于java - 模型实例贴花之间的 Libgdx 剔除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32287895/
如何在三个 js 中向 3d OBJ 模型添加贴花? var loader = new THREE.OBJMTLLoader(); loader.addEventListene
我正在使用 THREE.js 加载 collada 模型。该模型代表丘陵地带。现在模型有一个重复的纹理(草)。 我想要做的是为模型添加贴花(不确定这是否是正确的命名法)。基本上我有一 block 沙子
我尝试绘制 decals 和 background 两种纹理,但只有 decals 的 alpha 部分变成白色。 我只是尝试了以下方法。 绘制 2 个纹理(背景和贴花) 添加 glBlendFunc
我是一名优秀的程序员,十分优秀!