Tôi đang cố gắng thay thế hệ thống hiển thị dựa trên Canvas mà tôi đã có với bề mặt nhanh hơn, tuy nhiên, dường như tôi không có trình kết xuất đồ hoạ OpenGL để phù hợp với cách nó hoạt động như trường 2d, chứ không phải là chế độ xem phối cảnh.Sử dụng OpenGL để thay thế Canvas - Android
mã hiện tại của tôi cho các renderer trông như sau:
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, width, 0.0f, height, 0.0f, 1.0f);
gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
gl.glEnable(GL10.GL_TEXTURE_2D);
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
gl.glShadeModel(GL10.GL_FLAT);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glDisable(GL10.GL_DITHER);
gl.glDisable(GL10.GL_LIGHTING);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
}
Làm thế nào tôi thiết lập các renderer để việc chuyển dịch sẽ phù hợp với các điểm ảnh trên màn hình? (do đó dịch 5 sang bên phải sẽ di chuyển 5 pixel)
Tại sao không chỉ sử dụng vượt qua một cá thể GL cho hàm tạo Canvas. http://developer.android.com/reference/android/graphics/Canvas.html –
Điều đó có giữ lại lợi ích tốc độ của OpenGL so với Canvas cơ bản khi vẽ Bản đồ bitmap không? – GuyNoir
Không sử dụng Canvas cho nó. Nó không hoạt động ngay cả khi được ghi lại. Ngoài ra, theo các cuộc đàm phán tại IRC, Nhà phát triển Canvas đã xóa nó khỏi API cho các phiên bản sau này. – Moncader