gpt4 book ai didi

Android OpenGL ES 纹理 - alphablending

转载 作者:行者123 更新时间:2023-11-29 18:22:23 24 4
gpt4 key购买 nike

我想“杀死”纹理的黑色。或者,我想显示没有背景的 png 文件(透明背景)

我该怎么做?有什么例子吗?

最佳答案

没那么难。这是主要部分:

public static Bitmap loadBitmapFromId(Context context, int bitmapId) {
InputStream is = context.getResources().openRawResource(bitmapId);
try {
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
return BitmapFactory.decodeStream(is, null, bitmapOptions);
} catch (Exception ex) {
Log.e("bitmap loading exeption", ex.getLocalizedMessage());
return null;
}
}

Bitmap.Config.RGB_565 在这里很重要。然后像往常一样添加位图并获取纹理 ID。

现在在渲染器的 onSurfaceCreated(GL10 gl, EGLConfig config) 中添加:

    // Transparancy
// important: transparent objects have to be drawn last!
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

以及绘图部分(您可能已经这样做了):

        // first disable color_array for save:
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);

// Enabled the vertices buffer for writing and to be used during
// rendering.
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
// Specifies the location and data format of an array of vertex
// coordinates to use when rendering.
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);

gl.glEnable(GL10.GL_TEXTURE_2D);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);

gl.glBindTexture(GL10.GL_TEXTURE_2D, myTextureId);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

gl.glDrawArrays(drawMode, 0, verticesCount);

gl.glDisable(GL10.GL_TEXTURE_2D);
// Disable the vertices buffer.
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

关于Android OpenGL ES 纹理 - alphablending,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701842/

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