コード例 #1
0
ファイル: Mipmap.java プロジェクト: rothwell/jogl
  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);
    }
  }
コード例 #2
0
ファイル: Mipmap.java プロジェクト: rothwell/jogl
  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);
    }
  }