17da54d7e41e04ea5122009b40de19be0724e1ca4George Mount/* 27da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Copyright (C) 2012 The Android Open Source Project 37da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * 47da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 57da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * you may not use this file except in compliance with the License. 67da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * You may obtain a copy of the License at 77da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * 87da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * http://www.apache.org/licenses/LICENSE-2.0 97da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * 107da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Unless required by applicable law or agreed to in writing, software 117da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * distributed under the License is distributed on an "AS IS" BASIS, 127da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * See the License for the specific language governing permissions and 147da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * limitations under the License. 157da54d7e41e04ea5122009b40de19be0724e1ca4George Mount */ 16a4eae1abb4f2547dfbda84301ee764ce35464881John Reckpackage com.android.gallery3d.glrenderer; 177da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 187da54d7e41e04ea5122009b40de19be0724e1ca4George Mountimport javax.microedition.khronos.opengles.GL11; 197da54d7e41e04ea5122009b40de19be0724e1ca4George Mountimport javax.microedition.khronos.opengles.GL11ExtensionPack; 207da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 217da54d7e41e04ea5122009b40de19be0724e1ca4George Mount/** 227da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Open GL ES 1.1 implementation for generating and destroying texture IDs and 237da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * buffer IDs 247da54d7e41e04ea5122009b40de19be0724e1ca4George Mount */ 2550b33abe053ccab7be3d1bca2328e792507963d4George Mountpublic class GLES11IdImpl implements GLId { 267da54d7e41e04ea5122009b40de19be0724e1ca4George Mount private static int sNextId = 1; 277da54d7e41e04ea5122009b40de19be0724e1ca4George Mount // Mutex for sNextId 287da54d7e41e04ea5122009b40de19be0724e1ca4George Mount private static Object sLock = new Object(); 297da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 307da54d7e41e04ea5122009b40de19be0724e1ca4George Mount @Override 317da54d7e41e04ea5122009b40de19be0724e1ca4George Mount public int generateTexture() { 327da54d7e41e04ea5122009b40de19be0724e1ca4George Mount synchronized (sLock) { 337da54d7e41e04ea5122009b40de19be0724e1ca4George Mount return sNextId++; 347da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 357da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 367da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 377da54d7e41e04ea5122009b40de19be0724e1ca4George Mount @Override 387da54d7e41e04ea5122009b40de19be0724e1ca4George Mount public void glGenBuffers(int n, int[] buffers, int offset) { 397da54d7e41e04ea5122009b40de19be0724e1ca4George Mount synchronized (sLock) { 407da54d7e41e04ea5122009b40de19be0724e1ca4George Mount while (n-- > 0) { 417da54d7e41e04ea5122009b40de19be0724e1ca4George Mount buffers[offset + n] = sNextId++; 427da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 437da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 447da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 457da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 467da54d7e41e04ea5122009b40de19be0724e1ca4George Mount @Override 477da54d7e41e04ea5122009b40de19be0724e1ca4George Mount public void glDeleteTextures(GL11 gl, int n, int[] textures, int offset) { 487da54d7e41e04ea5122009b40de19be0724e1ca4George Mount synchronized (sLock) { 497da54d7e41e04ea5122009b40de19be0724e1ca4George Mount gl.glDeleteTextures(n, textures, offset); 507da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 517da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 527da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 537da54d7e41e04ea5122009b40de19be0724e1ca4George Mount @Override 547da54d7e41e04ea5122009b40de19be0724e1ca4George Mount public void glDeleteBuffers(GL11 gl, int n, int[] buffers, int offset) { 557da54d7e41e04ea5122009b40de19be0724e1ca4George Mount synchronized (sLock) { 567da54d7e41e04ea5122009b40de19be0724e1ca4George Mount gl.glDeleteBuffers(n, buffers, offset); 577da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 587da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 597da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 607da54d7e41e04ea5122009b40de19be0724e1ca4George Mount @Override 617da54d7e41e04ea5122009b40de19be0724e1ca4George Mount public void glDeleteFramebuffers(GL11ExtensionPack gl11ep, int n, int[] buffers, int offset) { 627da54d7e41e04ea5122009b40de19be0724e1ca4George Mount synchronized (sLock) { 637da54d7e41e04ea5122009b40de19be0724e1ca4George Mount gl11ep.glDeleteFramebuffersOES(n, buffers, offset); 647da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 657da54d7e41e04ea5122009b40de19be0724e1ca4George Mount } 667da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 677da54d7e41e04ea5122009b40de19be0724e1ca4George Mount 687da54d7e41e04ea5122009b40de19be0724e1ca4George Mount} 69