在glsurfaceview中设置透明度



我创建了一个扩展glsurfaceview的cubeview,我想制作透明的背景,但不能这样做。

我已经在MainActivity&glsurfaceview视图类中的glclearcolor(),也遵循许多链接,但没有工作。

public class RubikActivity extends Activity {
cubeView cv;
GLSurfaceView gv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
    cv = (cubeView) findViewById(R.id.cubeView);
    cv.initialize(PreferenceManager.getDefaultSharedPreferences(this));
    cv.requestFocus();
    cv.setFocusableInTouchMode(true);
    cv.setEGLConfigChooser(8, 8, 8, 8, 8,0); 
  //  cv.setRenderer( new CubeRenderer(getApplicationContext(), font, mWorld, rCube, mMenu, prefs);
    cv.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    cv.setZOrderOnTop(true);
}

cuceview.java

public cubeView(Context context, AttributeSet attrs) {
    super(context, attrs);
    font = new TextureFont(getContext(), R.drawable.roboto_regular, "roboto_regular_dims.txt");
    mWorld = new GLWorld();
 }
 public void initialize(SharedPreferences prefs) {
     rCube = new Rubec(mWorld, prefs.getInt("dim", 3));
     mMenu = new CubeMenu(rCube, font);
     _renderer = new CubeRenderer(getContext(), font, mWorld, rCube, mMenu, prefs);
     rCube.setRenderer(_renderer);
     mWorld.setRubeCube(rCube);
     setRenderer(_renderer);
     getHolder().setFormat(PixelFormat.TRANSLUCENT);
     setZOrderOnTop(true);
 }

cuberenderer.java

public void onDrawFrame(GL10 g) {
    GL11 gl = (GL11)g;
    surfaceSetup(gl);
    gl.glClearColor(0,0,0,1);
    gl.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
}

我想透明的cubeview

您将屏幕清除为不透明的黑色。如果您想要透明的黑色,将gl.glClearColor(0,0,0,1)更改为gl.glClearColor(0,0,0,0)

最新更新