gpt4 book ai didi

android - 我看不到带有 alpha channel 的纹理背后的纹理

转载 作者:行者123 更新时间:2023-11-29 00:25:58 25 4
gpt4 key购买 nike

我将 2D Sprite 纹理应用于具有透明或半透明区域的正方形,但如果后面有其他纹理,我无法透过它们看到任何东西(背景除外)。我可以看到背景图像,因为我使用了透明的 GLSurfaceView,背景应用在 GLSurfaceView 后面的 ImageView 中。

图像中的问题:

enter image description here

实际上我在onSurfaceCreated 方法中使用了这段代码:

        gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthFunc(GL10.GL_LEQUAL);
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);

onDrawFrame 方法中的这个:

        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
mObject1.draw(gl);
mObject2.draw(gl);

在 mObject1 和 mObject2 的 draw 方法中:

        gl.glPushMatrix();
gl.glEnable(GL10.GL_TEXTURE_2D);

gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

gl.glTranslatef((float) mPosition.getX(), (float) mPosition.getY(), 0f);

float scaleFactor = (float) (2 * mRadius);
gl.glScalef(scaleFactor, scaleFactor, 0);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

gl.glColor4f (1f, 1.0f, 1, 1f);

gl.glFrontFace(GL10.GL_CW);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

gl.glPopMatrix();

最佳答案

之后

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

关于android - 我看不到带有 alpha channel 的纹理背后的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436646/

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