@Alternate("glMultiDrawElementsIndirectCountARB") void glMultiDrawElementsIndirectCountARB(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 : stride >> 2) * maxdrawcount") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect, @GLintptr long drawcount, @GLsizei int maxdrawcount, @GLsizei int stride);
@Reuse("GL43") @Alternate("glMultiDrawElementsIndirect") void glMultiDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 : stride >> 2) * primcount") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect, @GLsizei int primcount, @GLsizei int stride);
private static Collection<TypeInfo> getTypeInfos(TypeMap type_map, Declaration param, TypeMirror decl_type) { Collection<AnnotationMirror> annotations = Utils.getSortedAnnotations(param.getAnnotationMirrors()); Map<Class, TypeInfo> types = new HashMap<Class, TypeInfo>(); Collection<TypeInfo> multityped_result = new ArrayList<TypeInfo>(); boolean add_default_type = true; for (AnnotationMirror annotation : annotations) { NativeType native_type_annotation = NativeTypeTranslator.getAnnotation(annotation, NativeType.class); if (native_type_annotation != null) { Class<? extends Annotation> annotation_type = NativeTypeTranslator.getClassFromType(annotation.getAnnotationType()); Signedness signedness = type_map.getSignednessFromType(annotation_type); Class inverse_type = type_map.getInverseType(annotation_type); String auto_type = type_map.getAutoTypeFromAnnotation(annotation); if (inverse_type != null) { if (types.containsKey(inverse_type)) { TypeInfo inverse_type_info = types.get(inverse_type); String inverse_auto_type = inverse_type_info.getAutoType(); auto_type = signedness == Signedness.UNSIGNED ? auto_type + " : " + inverse_auto_type : inverse_auto_type + " : " + auto_type; auto_type = UNSIGNED_PARAMETER_NAME + " ? " + auto_type; signedness = Signedness.BOTH; types.remove(inverse_type); multityped_result.remove(inverse_type_info); } } Class type; PrimitiveType.Kind kind; GLvoid void_annotation = param.getAnnotation(GLvoid.class); kind = void_annotation == null ? type_map.getPrimitiveTypeFromNativeType(annotation_type) : void_annotation.value(); if (Utils.getNIOBufferType(decl_type) != null) type = getBufferTypeFromPrimitiveKind(kind); else type = getTypeFromPrimitiveKind(kind); TypeInfo type_info = new TypeInfo(type, signedness, auto_type); types.put(annotation_type, type_info); multityped_result.add(type_info); add_default_type = false; } } if (add_default_type) { TypeInfo default_type_info = getDefaultTypeInfo(decl_type); Collection<TypeInfo> result = new ArrayList<TypeInfo>(); result.add(default_type_info); return result; } else return multityped_result; }
@Reuse("GL40") void glDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("4 * 4") @Const @GLvoid ByteBuffer indirect);
@Reuse("GL40") @Alternate("glDrawArraysIndirect") void glDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("4") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect);
@Reuse("GL40") void glDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("5 * 4") @Const @GLvoid ByteBuffer indirect);
@Reuse("GL40") @Alternate("glDrawElementsIndirect") void glDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("5") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect);
@Reuse("GL41") void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize, @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length, @Check("1") @GLenum IntBuffer binaryFormat, @OutParameter @GLvoid ByteBuffer binary);
@Reuse("GL41") void glProgramBinary(@GLuint int program, @GLenum int binaryFormat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length);
void glCompressedTexImage1DARB(@GLenum int target, int level, @GLenum int internalformat, @GLsizei int width, int border, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glCompressedTexImage2DARB(@GLenum int target, int level, @GLenum int internalformat, @GLsizei int width, @GLsizei int height, int border, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glCompressedTexImage3DARB(@GLenum int target, int level, @GLenum int internalformat, @GLsizei int width, @GLsizei int height, @GLsizei int depth, int border, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glCompressedTexSubImage1DARB(@GLenum int target, int level, int xoffset, @GLsizei int width, @GLenum int format, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glCompressedTexSubImage2DARB(@GLenum int target, int level, int xoffset, int yoffset, @GLsizei int width, @GLsizei int height, @GLenum int format, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glCompressedTexSubImage3DARB(@GLenum int target, int level, int xoffset, int yoffset, int zoffset, @GLsizei int width, @GLsizei int height, @GLsizei int depth, @GLenum int format, @AutoSize("pData") @GLsizei int imageSize, @BufferObject(BufferKind.UnpackPBO) @Check @Const @GLvoid ByteBuffer pData);
void glGetCompressedTexImageARB(@GLenum int target, int lod, @OutParameter @BufferObject(BufferKind.PackPBO) @Check @GLvoid ByteBuffer pImg);
private static Collection<TypeInfo> getTypeInfos(TypeMap type_map, Declaration param, TypeMirror decl_type) { Collection<AnnotationMirror> annotations = Utils.getSortedAnnotations(param.getAnnotationMirrors()); Map<Class, TypeInfo> types = new HashMap<Class, TypeInfo>(); Collection<TypeInfo> multityped_result = new ArrayList<TypeInfo>(); boolean add_default_type = true; for (AnnotationMirror annotation : annotations) { NativeType native_type_annotation = NativeTypeTranslator.getAnnotation(annotation, NativeType.class); if (native_type_annotation != null) { Class<? extends Annotation> annotation_type = NativeTypeTranslator.getClassFromType(annotation.getAnnotationType()); Signedness signedness = type_map.getSignednessFromType(annotation_type); Class inverse_type = type_map.getInverseType(annotation_type); String auto_type = type_map.getAutoTypeFromAnnotation(annotation); if (inverse_type != null) { if (types.containsKey(inverse_type)) { TypeInfo inverse_type_info = types.get(inverse_type); String inverse_auto_type = inverse_type_info.getAutoType(); auto_type = signedness == Signedness.UNSIGNED ? auto_type + " : " + inverse_auto_type : inverse_auto_type + " : " + auto_type; auto_type = UNSIGNED_PARAMETER_NAME + " ? " + auto_type; signedness = Signedness.BOTH; types.remove(inverse_type); multityped_result.remove(inverse_type_info); } } Class type; PrimitiveType.Kind kind; GLvoid void_annotation = param.getAnnotation(GLvoid.class); kind = void_annotation == null ? type_map.getPrimitiveTypeFromNativeType(annotation_type) : void_annotation.value(); if (Utils.getNIOBufferType(decl_type) != null) type = getBufferTypeFromPrimitiveKind(kind, annotation); else type = getTypeFromPrimitiveKind(kind); TypeInfo type_info = new TypeInfo(type, signedness, auto_type); types.put(annotation_type, type_info); multityped_result.add(type_info); add_default_type = false; } } if (add_default_type) { TypeInfo default_type_info = getDefaultTypeInfo(decl_type); Collection<TypeInfo> result = new ArrayList<TypeInfo>(); result.add(default_type_info); return result; } else return multityped_result; }
void glGetProgramBinaryOES(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize, @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length, @OutParameter @Check("1") @GLenum IntBuffer binaryFormat, @OutParameter @GLvoid ByteBuffer binary);
void glMultiDrawArraysIndirectCountARB(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 * 4 : stride) * maxdrawcount") @Const @GLvoid ByteBuffer indirect, @GLintptr long drawcount, @GLsizei int maxdrawcount, @GLsizei int stride);
@Alternate("glMultiDrawArraysIndirectCountARB") void glMultiDrawArraysIndirectCountARB(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 : stride >> 2) * maxdrawcount") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect, @GLintptr long drawcount, @GLsizei int maxdrawcount, @GLsizei int stride);
void glMultiDrawElementsIndirectCountARB(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 * 4 : stride) * maxdrawcount") @Const @GLvoid ByteBuffer indirect, @GLintptr long drawcount, @GLsizei int maxdrawcount, @GLsizei int stride);
@Reuse("GL43") void glMultiDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 * 4 : stride) * primcount") @Const @GLvoid ByteBuffer indirect, @GLsizei int primcount, @GLsizei int stride);
@Reuse("GL43") @Alternate("glMultiDrawArraysIndirect") void glMultiDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 : stride >> 2) * primcount") @Const @GLvoid(PrimitiveType.Kind.INT) IntBuffer indirect, @GLsizei int primcount, @GLsizei int stride);
@Reuse("GL43") void glMultiDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 * 4 : stride) * primcount") @Const @GLvoid ByteBuffer indirect, @GLsizei int primcount, @GLsizei int stride);