public static int gluBuild3DMipmapLevels( GL gl, int target, int internalFormat, int width, int height, int depth, int format, int type, int userLevel, int baseLevel, int maxLevel, ByteBuffer data) { int dataPos = data.position(); try { 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); } levels = computeLog(width); level = computeLog(height); if (level > levels) { levels = level; } level = computeLog(depth); if (level > levels) { levels = level; } levels += userLevel; if (!isLegalLevels(userLevel, baseLevel, maxLevel, levels)) { return (GLU.GLU_INVALID_VALUE); } return (BuildMipmap.gluBuild3DMipmapLevelsCore( gl, target, internalFormat, width, height, depth, width, height, depth, 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); } }