public static int gluBuild1DMipmaps( GL gl, int target, int internalFormat, int width, int format, int type, ByteBuffer data) { int dataPos = data.position(); try { int[] widthPowerOf2 = new int[1]; int levels; int[] dummy = new int[1]; int rc = checkMipmapArgs(internalFormat, format, type); if (rc != 0) { return (rc); } if (width < 1) { return (GLU.GLU_INVALID_VALUE); } closestFit(gl, target, width, 1, internalFormat, format, type, widthPowerOf2, dummy); levels = computeLog(widthPowerOf2[0]); return (BuildMipmap.gluBuild1DMipmapLevelsCore( gl, target, internalFormat, width, widthPowerOf2[0], format, type, 0, 0, levels, data)); } finally { data.position(dataPos); } }
public static int gluBuild1DMipmapLevels( GL gl, int target, int internalFormat, int width, int format, int type, int userLevel, int baseLevel, int maxLevel, ByteBuffer data) { int dataPos = data.position(); try { int levels; int rc = checkMipmapArgs(internalFormat, format, type); if (rc != 0) { return (rc); } if (width < 1) { return (GLU.GLU_INVALID_VALUE); } levels = computeLog(width); levels += userLevel; if (!isLegalLevels(userLevel, baseLevel, maxLevel, levels)) { return (GLU.GLU_INVALID_VALUE); } return (BuildMipmap.gluBuild1DMipmapLevelsCore( gl, target, internalFormat, width, width, format, type, userLevel, baseLevel, maxLevel, data)); } finally { data.position(dataPos); } }
public static int gluBuild3DMipmaps( GL gl, int target, int internalFormat, int width, int height, int depth, int format, int type, ByteBuffer data) { int dataPos = data.position(); try { int[] widthPowerOf2 = new int[1]; int[] heightPowerOf2 = new int[1]; int[] depthPowerOf2 = new int[1]; int level, levels; int rc = checkMipmapArgs(internalFormat, format, type); if (rc != 0) { return (rc); } if (width < 1 || height < 1 || depth < 1) { return (GLU.GLU_INVALID_VALUE); } if (type == GL2.GL_BITMAP) { return (GLU.GLU_INVALID_ENUM); } closestFit3D( gl, target, width, height, depth, internalFormat, format, type, widthPowerOf2, heightPowerOf2, depthPowerOf2); levels = computeLog(widthPowerOf2[0]); level = computeLog(heightPowerOf2[0]); if (level > levels) { levels = level; } level = computeLog(depthPowerOf2[0]); if (level > levels) { levels = level; } return (BuildMipmap.gluBuild3DMipmapLevelsCore( gl, target, internalFormat, width, height, depth, widthPowerOf2[0], heightPowerOf2[0], depthPowerOf2[0], format, type, 0, 0, levels, data)); } finally { data.position(dataPos); } }
public static int gluBuild2DMipmaps( GL gl, int target, int internalFormat, int width, int height, int format, int type, Object data) { int dataPos = 0; int[] widthPowerOf2 = new int[1]; int[] heightPowerOf2 = new int[1]; int level, levels; int rc = checkMipmapArgs(internalFormat, format, type); if (rc != 0) { return (rc); } if (width < 1 || height < 1) { return (GLU.GLU_INVALID_VALUE); } closestFit( gl, target, width, height, internalFormat, format, type, widthPowerOf2, heightPowerOf2); levels = computeLog(widthPowerOf2[0]); level = computeLog(heightPowerOf2[0]); if (level > levels) { levels = level; } // PointerWrapper pointer = PointerWrapperFactory.getPointerWrapper( data ); ByteBuffer buffer = null; if (data instanceof ByteBuffer) { buffer = (ByteBuffer) data; dataPos = buffer.position(); } else if (data instanceof byte[]) { byte[] array = (byte[]) data; buffer = ByteBuffer.allocateDirect(array.length); buffer.put(array); } else if (data instanceof short[]) { short[] array = (short[]) data; buffer = ByteBuffer.allocateDirect(array.length * 2); ShortBuffer sb = buffer.asShortBuffer(); sb.put(array); } else if (data instanceof int[]) { int[] array = (int[]) data; buffer = ByteBuffer.allocateDirect(array.length * 4); IntBuffer ib = buffer.asIntBuffer(); ib.put(array); } else if (data instanceof float[]) { float[] array = (float[]) data; buffer = ByteBuffer.allocateDirect(array.length * 4); FloatBuffer fb = buffer.asFloatBuffer(); fb.put(array); } try { return (BuildMipmap.gluBuild2DMipmapLevelsCore( gl, target, internalFormat, width, height, widthPowerOf2[0], heightPowerOf2[0], format, type, 0, 0, levels, buffer)); } finally { buffer.position(dataPos); } }