// synchronized public static void changeVideo(int newWidth, int newHeight) { // Log.d("Thread Video", "changeVideo"); synchronized (lock1) { for (int i = 0; i < 4; i++) Emulator.setPadData(i, 0); // if(emu_width!=newWidth || emu_height!=newHeight) // { emu_width = newWidth; emu_height = newHeight; emuBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.RGB_565); mtx.setScale( (float) (window_width / (float) emu_width), (float) (window_height / (float) emu_height)); if (videoRenderMode == PrefsHelper.PREF_RENDER_GL) { GLRenderer r = (GLRenderer) ((EmulatorViewGL) mm.getEmuView()).getRender(); if (r != null) r.changedEmulatedSize(); } mm.runOnUiThread( new Runnable() { public void run() { mm.getMainHelper().updateMAME4all(); } }); // } } }
@Override public void onResume() { super.onResume(); if (hasRenderer) { mRenderer.onResume(); } }
@Override public void onPause() { super.onPause(); if (hasRenderer) { mRenderer.onPause(); } }
private void init() { renderer = new GLRenderer(this); renderer.setFpsCount(true); this.setRenderer(renderer); TextureFactory.getInstance().setContext(this.getContext()); }
public void setValue(int switchCode, float value) { switch (switchCode) { case Z_DIST: renderer.zDistance += value; break; case X_ANGLE: renderer.xAngle += value; break; case Y_ANGLE: renderer.yAngle += value; break; case Z_ANGLE: renderer.zAngle += value; break; case X_EYE: renderer.eyeX += value; break; case Y_EYE: renderer.eyeY += value; break; case Z_EYE: renderer.eyeZ += value; break; } }
/** * Binds the BufferedImage byte-stream into video memory. BufferedImage must be in 4BYTE_ABGR. * 4BYTE_ABGR removes endinese problems. */ public Texture bind(final BufferedImage _image, final InternalFormat _format) { final GL3 gl = GLRenderer.getCanvas().getContext().getCurrentGL().getGL3(); if (gl == null) { System.out.println("GL context doesn't exist"); return null; } gl.glEnable(GL.GL_TEXTURE_2D); final int textureID = glGenTextures(gl); gl.glBindTexture(GL3.GL_TEXTURE_2D, textureID); gl.glTexParameteri(GL3.GL_TEXTURE_2D, GL3.GL_TEXTURE_WRAP_S, GL3.GL_REPEAT); gl.glTexParameteri(GL3.GL_TEXTURE_2D, GL3.GL_TEXTURE_WRAP_T, GL3.GL_REPEAT); gl.glTexParameteri(GL3.GL_TEXTURE_2D, GL3.GL_TEXTURE_MAG_FILTER, GL3.GL_LINEAR); gl.glTexParameteri(GL3.GL_TEXTURE_2D, GL3.GL_TEXTURE_MIN_FILTER, GL3.GL_LINEAR_MIPMAP_LINEAR); final int width = _image.getWidth(); final int height = _image.getHeight(); final int channels = _image.getSampleModel().getNumBands(); int internalFormat = GL3.GL_RGB; if (gl.isExtensionAvailable("GL_EXT_abgr") == true) { switch (channels) { case 4: imageFormat = GL2.GL_ABGR_EXT; break; case 3: imageFormat = GL3.GL_BGR; break; case 1: imageFormat = GL3.GL_RED; break; } } else { switch (channels) { case 4: imageFormat = GL3.GL_RGBA; break; case 3: imageFormat = GL3.GL_RGB; break; case 1: imageFormat = GL3.GL_RED; break; } } gl.glPixelStorei(GL3.GL_UNPACK_ALIGNMENT, 1); gl.glTexImage2D( GL3.GL_TEXTURE_2D, 0, getGLInternalFormat(channels, _format), width, height, 0, imageFormat, GL3.GL_UNSIGNED_BYTE, getByteBuffer(_image)); gl.glGenerateMipmap(GL3.GL_TEXTURE_2D); gl.glBindTexture(GL.GL_TEXTURE_2D, 0); // Reset to default texture return new Texture(new GLImage(textureID, width, height)); }
public int getFps() { if (renderer != null) return renderer.getFPS(); else return -1; }
public void setFps(int fps) { if (renderer != null) renderer.setFPS(fps); }
@Override public void onResume() { // TODO Auto-generated method stub super.onResume(); mRenderer.onResume(); }