繁体   English   中英

带有alpha的android opengl es drawarray

[英]android opengl es drawarray with alpha

我喜欢用OpenGL ES 1.0函数“ drawArray”绘制一个矩形,在这个矩形上,我想绘制一个带有alpha的纹理。 (一个Hud元素和drawArray矩形显示该元素的“填充状态”)。

基本上可以,但是我在drawArray矩形上绘制的带有alpha的纹理受矩形颜色的影响。 drawArray绘制一个蓝色矩形,并且绘制后的纹理也呈蓝色。

这是我正在使用的功能:

已解决-请参阅“开始解决方案”

private void bagFillState(GL10 gl) {
    // fill state background
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glPushMatrix();
    gl.glScalef(0.25f, 0.25f, 0f);
    gl.glTranslatef(0.0f, 3.0f, 0f);

    gl.glDisable(GL10.GL_TEXTURE_2D);

    // Draw background
    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, _vertsGUIFillBuffer);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, _colorGUIFillBuffer);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);

    // START SOLUTION - Add the following Line
    gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
    // END SOLTUTION

    gl.glEnable(GL10.GL_TEXTURE_2D);

    gl.glPopMatrix();
    gl.glLoadIdentity();        
}

在其上绘制纹理的方法:

private void bagChoosing(GL10 gl) {
    // HUD
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glPushMatrix();
    gl.glScalef(0.25f, 1.0f, 1f);
    gl.glTranslatef(0.0f, 0.0f, 0f);

    gl.glMatrixMode(GL10.GL_TEXTURE);
    gl.glLoadIdentity();

    _gui.draw(gl);
    gl.glPopMatrix();
    gl.glLoadIdentity();
}

public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_STENCIL_BUFFER_BIT);

    background1(gl);

    movePlayer1(gl);
    bagFillState(gl);
    bagChoosing(gl);

    // All other game drawing will be called here
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}

使用“ drawArray”加载纹理或图形时,我需要做些特别的事情,以便drawArray矩形不会影响纹理颜色吗? 感谢您的任何提示或链接。

您在绘制纹理之前是否重置了颜色指针,或者禁用了GL_COLOR_ARRAY客户端状态?

听起来您的蓝色仍然处于启用状态,这正在调制采样的纹理。

如果无法回答您的问题,请提供纹理的完整绘图代码,并链接到问题的图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM