我在圆柱体上遇到纹理问题。基本上它是一个带有纹理的硬币, 我之前做过这个演示但是丢失了代码。 现在我面临的问题是我不能让硬币的边缘变得透明了。 png的透明部分在圆柱体上显示为白色,甚至是我试过的盒子。
我启用了G20.GL_Blend, 具有alpha_src和one_minus_alpha_src的混合功能,启用了texture_2d之类的功能。 (对于错误的变量名称,仅在我的手机上输入,将改变@home)
我已经尝试过我可以在网上找到的所有内容,但它并没有改变。看起来混合功能根本不会影响纹理。
哦,我正在为这个项目每晚运行一次,之前的那个,当它工作时,它是一个较旧的项目......可能就是这样吗?
希望有人可以提供帮助,如果需要我会回家时发布代码和照片
编辑:
这是我得到的,一个框显示它更好。 Forgott添加定向灯, 灰色是白色,不是灰色!!
这是我在render()方法中使用的代码(我尝试了不同的组合,这就是为什么有这么多):
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl20.glEnable(GL20.GL_BLEND);
Gdx.gl20.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl20.glEnable(GL20.GL_TEXTURE_2D);
Gdx.gl20.glBlendEquation(GL20.GL_BLEND);
modelBatch.begin(cam);
texture.bind();
modelBatch.render(instance, environment);
modelBatch.end();
Gdx.gl20.glDisable(GL20.GL_TEXTURE_2D);
答案 0 :(得分:6)
答案 1 :(得分:2)
在您的ModelInstance上调用它:
modelInstance.materials.get(0).set(
new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)
)
或者,将其传递给您的ModelBuilder代码(您在其中创建可以创建ModelInstances的模型):
new Material(
TextureAttribute.createDiffuse(yourTransparentTexture),
new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA))
)
答案 2 :(得分:0)
ModelBatch.begin(...) 将通过调用 Gdx.gl.glDisable(GL20.GL_BLEND) 禁用混合。因此,请确保在调用 ModelBatch.begin() 后启用混合。
modelBatch.begin(camera); // resets Blending to false
// enable Blending
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
// draw mesh
mesh.render(shader, GL20.GL_TRIANGLES);
modelBatch.end();