From f6f00c25211e7765fc3bcf1b68e54963aca7fe3e Mon Sep 17 00:00:00 2001 From: Gustl22 Date: Sat, 26 Jan 2019 21:46:07 +0100 Subject: [PATCH] GL30 from libGDX (#643) --- .../src/org/oscim/gdx/AndroidGL30.java | 878 ++++++++++ .../src/org/oscim/android/gl/AndroidGL30.java | 878 ++++++++++ vtm-desktop/src/org/oscim/gdx/LwjglGL30.java | 657 ++++++++ .../src/org/oscim/ios/backend/IosGL30.java | 506 ++++++ vtm/src/org/oscim/backend/GL30.java | 1427 +++++++++++++++++ 5 files changed, 4346 insertions(+) create mode 100644 vtm-android-gdx/src/org/oscim/gdx/AndroidGL30.java create mode 100644 vtm-android/src/org/oscim/android/gl/AndroidGL30.java create mode 100644 vtm-desktop/src/org/oscim/gdx/LwjglGL30.java create mode 100644 vtm-ios/src/org/oscim/ios/backend/IosGL30.java create mode 100644 vtm/src/org/oscim/backend/GL30.java diff --git a/vtm-android-gdx/src/org/oscim/gdx/AndroidGL30.java b/vtm-android-gdx/src/org/oscim/gdx/AndroidGL30.java new file mode 100644 index 00000000..337ffa62 --- /dev/null +++ b/vtm-android-gdx/src/org/oscim/gdx/AndroidGL30.java @@ -0,0 +1,878 @@ +/* + * Copyright 2019 Gustl22 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ + +/******************************************************************************* + * Copyright 2014 See AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.gdx; + +import android.annotation.SuppressLint; +import android.opengl.GLES30; + +import org.oscim.backend.GL30; + +/** + * See https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGL30.java + */ +@SuppressLint("NewApi") +public class AndroidGL30 extends AndroidGL implements GL30 { + @Override + public void readBuffer(int mode) { + GLES30.glReadBuffer(mode); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, java.nio.Buffer indices) { + GLES30.glDrawRangeElements(mode, start, end, count, type, indices); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) { + GLES30.glDrawRangeElements(mode, start, end, count, type, offset); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, java.nio.Buffer pixels) { + if (pixels == null) + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, 0); + else + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, int offset) { + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, java.nio.Buffer pixels) { + GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, int offset) { + GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset); + } + + @Override + public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, + int height) { + GLES30.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + +// +// @Override +// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int +// imageSize, java.nio.Buffer data) { +// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +// } +// +// @Override +// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int +// imageSize, int offset) { +// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, offset); +// } +// +// @Override +// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int +// depth, int format, int imageSize, java.nio.Buffer data) { +// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +// } +// +// @Override +// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int +// depth, int format, int imageSize, int offset) { +// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset); +// } + + @Override + public void genQueries(int n, int[] ids, int offset) { + GLES30.glGenQueries(n, ids, offset); + } + + @Override + public void genQueries(int n, java.nio.IntBuffer ids) { + GLES30.glGenQueries(n, ids); + } + + @Override + public void deleteQueries(int n, int[] ids, int offset) { + GLES30.glDeleteQueries(n, ids, offset); + } + + @Override + public void deleteQueries(int n, java.nio.IntBuffer ids) { + GLES30.glDeleteQueries(n, ids); + } + + @Override + public boolean isQuery(int id) { + return GLES30.glIsQuery(id); + } + + @Override + public void beginQuery(int target, int id) { + GLES30.glBeginQuery(target, id); + } + + @Override + public void endQuery(int target) { + GLES30.glEndQuery(target); + } + +// @Override +// public void getQueryiv(int target, int pname, int[] params, int offset) { +// GLES30.glGetQueryiv(target, pname, params, offset); +// } + + @Override + public void getQueryiv(int target, int pname, java.nio.IntBuffer params) { + GLES30.glGetQueryiv(target, pname, params); + } + +// @Override +// public void getQueryObjectuiv(int id, int pname, int[] params, int offset) { +// GLES30.glGetQueryObjectuiv(id, pname, params, offset); +// } + + @Override + public void getQueryObjectuiv(int id, int pname, java.nio.IntBuffer params) { + GLES30.glGetQueryObjectuiv(id, pname, params); + } + + @Override + public boolean unmapBuffer(int target) { + return GLES30.glUnmapBuffer(target); + } + + @Override + public java.nio.Buffer getBufferPointerv(int target, int pname) { + return GLES30.glGetBufferPointerv(target, pname); + } + +// @Override +// public void drawBuffers(int n, int[] bufs, int offset) { +// GLES30.glDrawBuffers(n, bufs, offset); +// } + + @Override + public void drawBuffers(int n, java.nio.IntBuffer bufs) { + GLES30.glDrawBuffers(n, bufs); + } + +// @Override +// public void uniformMatrix2x3fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix2x3fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix2x3fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix3x2fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix3x2fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix3x2fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix2x4fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix2x4fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix2x4fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix4x2fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix4x2fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix4x2fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix3x4fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix3x4fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix3x4fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix4x3fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix4x3fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix4x3fv(location, count, transpose, value); + } + + @Override + public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, + int mask, int filter) { + GLES30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + @Override + public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) { + GLES30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + @Override + public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) { + GLES30.glFramebufferTextureLayer(target, attachment, texture, level, layer); + } + +// @Override +// public java.nio.Buffer mapBufferRange(int target, int offset, int length, int access) { +// return GLES30.glMapBufferRange(target, offset, length, access); +// } + + @Override + public void flushMappedBufferRange(int target, int offset, int length) { + GLES30.glFlushMappedBufferRange(target, offset, length); + } + + @Override + public void bindVertexArray(int array) { + GLES30.glBindVertexArray(array); + } + + @Override + public void deleteVertexArrays(int n, int[] arrays, int offset) { + GLES30.glDeleteVertexArrays(n, arrays, offset); + } + + @Override + public void deleteVertexArrays(int n, java.nio.IntBuffer arrays) { + GLES30.glDeleteVertexArrays(n, arrays); + } + + @Override + public void genVertexArrays(int n, int[] arrays, int offset) { + GLES30.glGenVertexArrays(n, arrays, offset); + } + + @Override + public void genVertexArrays(int n, java.nio.IntBuffer arrays) { + GLES30.glGenVertexArrays(n, arrays); + } + + @Override + public boolean isVertexArray(int array) { + return GLES30.glIsVertexArray(array); + } + +// @Override +// public void getIntegeri_v(int target, int index, int[] data, int offset) { +// GLES30.glGetIntegeri_v(target, index, data, offset); +// } + +// @Override +// public void getIntegeri_v(int target, int index, java.nio.IntBuffer data) { +// GLES30.glGetIntegeri_v(target, index, data); +// } + + @Override + public void beginTransformFeedback(int primitiveMode) { + GLES30.glBeginTransformFeedback(primitiveMode); + } + + @Override + public void endTransformFeedback() { + GLES30.glEndTransformFeedback(); + } + + @Override + public void bindBufferRange(int target, int index, int buffer, int offset, int size) { + GLES30.glBindBufferRange(target, index, buffer, offset, size); + } + + @Override + public void bindBufferBase(int target, int index, int buffer) { + GLES30.glBindBufferBase(target, index, buffer); + } + + @Override + public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) { + GLES30.glTransformFeedbackVaryings(program, varyings, bufferMode); + } + +// @Override +// public void getTransformFeedbackVarying(int program, int index, int bufsize, int[] length, int lengthOffset, int[] size, int +// sizeOffset, int[] type, int typeOffset, byte[] name, int nameOffset) { +// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, lengthOffset, size, sizeOffset, type, typeOffset, name, +// nameOffset); +// } + +// @Override +// public void getTransformFeedbackVarying(int program, int index, int bufsize, java.nio.IntBuffer length, java.nio.IntBuffer +// size, java.nio.IntBuffer type, byte name) { +// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, size, type, name); +// } +// +// @Override +// public String getTransformFeedbackVarying(int program, int index, int[] size, int sizeOffset, int[] type, int typeOffset) { +// return GLES30.glGetTransformFeedbackVarying(program, index, size, sizeOffset, type, typeOffset); +// } +// +// @Override +// public String getTransformFeedbackVarying(int program, int index, java.nio.IntBuffer size, java.nio.IntBuffer type) { +// return GLES30.glGetTransformFeedbackVarying(program, index, size, type); +// } + + @Override + public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) { + GLES30.glVertexAttribIPointer(index, size, type, stride, offset); + } + +// @Override +// public void getVertexAttribIiv(int index, int pname, int[] params, int offset) { +// GLES30.glGetVertexAttribIiv(index, pname, params, offset); +// } + + @Override + public void getVertexAttribIiv(int index, int pname, java.nio.IntBuffer params) { + GLES30.glGetVertexAttribIiv(index, pname, params); + } + +// @Override +// public void getVertexAttribIuiv(int index, int pname, int[] params, int offset) { +// GLES30.glGetVertexAttribIuiv(index, pname, params, offset); +// } + + @Override + public void getVertexAttribIuiv(int index, int pname, java.nio.IntBuffer params) { + GLES30.glGetVertexAttribIuiv(index, pname, params); + } + + @Override + public void vertexAttribI4i(int index, int x, int y, int z, int w) { + GLES30.glVertexAttribI4i(index, x, y, z, w); + } + + @Override + public void vertexAttribI4ui(int index, int x, int y, int z, int w) { + GLES30.glVertexAttribI4ui(index, x, y, z, w); + } + +// @Override +// public void vertexAttribI4iv(int index, int[] v, int offset) { +// GLES30.glVertexAttribI4iv(index, v, offset); +// } +// +// @Override +// public void vertexAttribI4iv(int index, java.nio.IntBuffer v) { +// GLES30.glVertexAttribI4iv(index, v); +// } +// +// @Override +// public void vertexAttribI4uiv(int index, int[] v, int offset) { +// GLES30.glVertexAttribI4uiv(index, v, offset); +// } +// +// @Override +// public void vertexAttribI4uiv(int index, java.nio.IntBuffer v) { +// GLES30.glVertexAttribI4uiv(index, v); +// } +// +// @Override +// public void getUniformuiv(int program, int location, int[] params, int offset) { +// GLES30.glGetUniformuiv(program, location, params, offset); +// } + + @Override + public void getUniformuiv(int program, int location, java.nio.IntBuffer params) { + GLES30.glGetUniformuiv(program, location, params); + } + + @Override + public int getFragDataLocation(int program, String name) { + return GLES30.glGetFragDataLocation(program, name); + } + +// @Override +// public void uniform1ui(int location, int v0) { +// GLES30.glUniform1ui(location, v0); +// } +// +// @Override +// public void uniform2ui(int location, int v0, int v1) { +// GLES30.glUniform2ui(location, v0, v1); +// } +// +// @Override +// public void uniform3ui(int location, int v0, int v1, int v2) { +// GLES30.glUniform3ui(location, v0, v1, v2); +// } + +// @Override +// public void uniform4ui(int location, int v0, int v1, int v2, int v3) { +// GLES30.glUniform4ui(location, v0, v1, v2, v3); +// } +// +// @Override +// public void uniform1uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform1uiv(location, count, value, offset); +// } + + @Override + public void uniform1uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform1uiv(location, count, value); + } + +// @Override +// public void uniform2uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform2uiv(location, count, value, offset); +// } +// +// @Override +// public void uniform2uiv(int location, int count, java.nio.IntBuffer value) { +// GLES30.glUniform2uiv(location, count, value); +// } +// +// @Override +// public void uniform3uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform3uiv(location, count, value, offset); +// } + + @Override + public void uniform3uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform3uiv(location, count, value); + } + +// @Override +// public void uniform4uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform4uiv(location, count, value, offset); +// } + + @Override + public void uniform4uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform4uiv(location, count, value); + } + +// @Override +// public void clearBufferiv(int buffer, int drawbuffer, int[] value, int offset) { +// GLES30.glClearBufferiv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferiv(int buffer, int drawbuffer, java.nio.IntBuffer value) { + GLES30.glClearBufferiv(buffer, drawbuffer, value); + } + +// @Override +// public void clearBufferuiv(int buffer, int drawbuffer, int[] value, int offset) { +// GLES30.glClearBufferuiv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferuiv(int buffer, int drawbuffer, java.nio.IntBuffer value) { + GLES30.glClearBufferuiv(buffer, drawbuffer, value); + } + +// +// @Override +// public void clearBufferfv(int buffer, int drawbuffer, float[] value, int offset) { +// GLES30.glClearBufferfv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferfv(int buffer, int drawbuffer, java.nio.FloatBuffer value) { + GLES30.glClearBufferfv(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) { + GLES30.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + @Override + public String getStringi(int name, int index) { + return GLES30.glGetStringi(name, index); + } + + @Override + public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) { + GLES30.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + +// +// @Override +// public void getUniformIndices(int program, String[] uniformNames, int[] uniformIndices, int uniformIndicesOffset) { +// GLES30.glGetUniformIndices(program, uniformNames, uniformIndices, uniformIndicesOffset); +// } + + @Override + public void getUniformIndices(int program, String[] uniformNames, java.nio.IntBuffer uniformIndices) { + GLES30.glGetUniformIndices(program, uniformNames, uniformIndices); + } + +// @Override +// public void getActiveUniformsiv(int program, int uniformCount, int[] uniformIndices, int uniformIndicesOffset, int pname, +// int[] params, int paramsOffset) { +// GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, uniformIndicesOffset, pname, params, paramsOffset); +// } + + @Override + public void getActiveUniformsiv(int program, int uniformCount, java.nio.IntBuffer uniformIndices, int pname, + java.nio.IntBuffer params) { + GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); + } + + @Override + public int getUniformBlockIndex(int program, String uniformBlockName) { + return GLES30.glGetUniformBlockIndex(program, uniformBlockName); + } + +// +// @Override +// public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params, int offset) { +// GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params, offset); +// } + + @Override + public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, java.nio.IntBuffer params) { + GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); + } + +// +// @Override +// public void getActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize, int[] length, int lengthOffset, byte[] +// uniformBlockName, int uniformBlockNameOffset) { +// GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, lengthOffset, uniformBlockName, +// uniformBlockNameOffset); +// } + + @Override + public void getActiveUniformBlockName(int program, int uniformBlockIndex, java.nio.Buffer length, + java.nio.Buffer uniformBlockName) { + GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, length, uniformBlockName); + } + + @Override + public String getActiveUniformBlockName(int program, int uniformBlockIndex) { + return GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex); + } + + @Override + public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) { + GLES30.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + } + + @Override + public void drawArraysInstanced(int mode, int first, int count, int instanceCount) { + GLES30.glDrawArraysInstanced(mode, first, count, instanceCount); + } + +// @Override +// public void drawElementsInstanced(int mode, int count, int type, java.nio.Buffer indices, int instanceCount) { +// GLES30.glDrawElementsInstanced(mode, count, type, indices, instanceCount); +// } + + @Override + public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) { + GLES30.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount); + } + +// @Override +// public long fenceSync(int condition, int flags) { +// return GLES30.glFenceSync(condition, flags); +// } +// +// @Override +// public boolean isSync(long sync) { +// return GLES30.glIsSync(sync); +// } +// +// @Override +// public void deleteSync(long sync) { +// GLES30.glDeleteSync(sync); +// } +// +// @Override +// public int clientWaitSync(long sync, int flags, long timeout) { +// return GLES30.glClientWaitSync(sync, flags, timeout); +// } + +// @Override +// public void waitSync(long sync, int flags, long timeout) { +// GLES30.glWaitSync(sync, flags, timeout); +// } +// +// @Override +// public void getInteger64v(int pname, long[] params, int offset) { +// GLES30.glGetInteger64v(pname, params, offset); +// } + + @Override + public void getInteger64v(int pname, java.nio.LongBuffer params) { + GLES30.glGetInteger64v(pname, params); + } + +// @Override +// public void getSynciv(long sync, int pname, int bufSize, int[] length, int lengthOffset, int[] values, int valuesOffset) { +// GLES30.glGetSynciv(sync, pname, bufSize, length, lengthOffset, values, valuesOffset); +// } +// +// @Override +// public void getSynciv(long sync, int pname, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer values) { +// GLES30.glGetSynciv(sync, pname, bufSize, length, values); +// } +// +// @Override +// public void getInteger64i_v(int target, int index, long[] data, int offset) { +// GLES30.glGetInteger64i_v(target, index, data, offset); +// } +// +// @Override +// public void getInteger64i_v(int target, int index, java.nio.LongBuffer data) { +// GLES30.glGetInteger64i_v(target, index, data); +// } +// +// @Override +// public void getBufferParameteri64v(int target, int pname, long[] params, int offset) { +// GLES30.glGetBufferParameteri64v(target, pname, params, offset); +// } + + @Override + public void getBufferParameteri64v(int target, int pname, java.nio.LongBuffer params) { + GLES30.glGetBufferParameteri64v(target, pname, params); + } + + @Override + public void genSamplers(int count, int[] samplers, int offset) { + GLES30.glGenSamplers(count, samplers, offset); + } + + @Override + public void genSamplers(int count, java.nio.IntBuffer samplers) { + GLES30.glGenSamplers(count, samplers); + } + + @Override + public void deleteSamplers(int count, int[] samplers, int offset) { + GLES30.glDeleteSamplers(count, samplers, offset); + } + + @Override + public void deleteSamplers(int count, java.nio.IntBuffer samplers) { + GLES30.glDeleteSamplers(count, samplers); + } + + @Override + public boolean isSampler(int sampler) { + return GLES30.glIsSampler(sampler); + } + + @Override + public void bindSampler(int unit, int sampler) { + GLES30.glBindSampler(unit, sampler); + } + + @Override + public void samplerParameteri(int sampler, int pname, int param) { + GLES30.glSamplerParameteri(sampler, pname, param); + } + +// +// @Override +// public void samplerParameteriv(int sampler, int pname, int[] param, int offset) { +// GLES30.glSamplerParameteriv(sampler, pname, param, offset); +// } + + @Override + public void samplerParameteriv(int sampler, int pname, java.nio.IntBuffer param) { + GLES30.glSamplerParameteriv(sampler, pname, param); + } + + @Override + public void samplerParameterf(int sampler, int pname, float param) { + GLES30.glSamplerParameterf(sampler, pname, param); + } + +// @Override +// public void samplerParameterfv(int sampler, int pname, float[] param, int offset) { +// GLES30.glSamplerParameterfv(sampler, pname, param, offset); +// } + + @Override + public void samplerParameterfv(int sampler, int pname, java.nio.FloatBuffer param) { + GLES30.glSamplerParameterfv(sampler, pname, param); + } + +// +// @Override +// public void getSamplerParameteriv(int sampler, int pname, int[] params, int offset) { +// GLES30.glGetSamplerParameteriv(sampler, pname, params, offset); +// } + + @Override + public void getSamplerParameteriv(int sampler, int pname, java.nio.IntBuffer params) { + GLES30.glGetSamplerParameteriv(sampler, pname, params); + } + +// @Override +// public void getSamplerParameterfv(int sampler, int pname, float[] params, int offset) { +// GLES30.glGetSamplerParameterfv(sampler, pname, params, offset); +// } + + @Override + public void getSamplerParameterfv(int sampler, int pname, java.nio.FloatBuffer params) { + GLES30.glGetSamplerParameterfv(sampler, pname, params); + } + + @Override + public void vertexAttribDivisor(int index, int divisor) { + GLES30.glVertexAttribDivisor(index, divisor); + } + + @Override + public void bindTransformFeedback(int target, int id) { + GLES30.glBindTransformFeedback(target, id); + } + + @Override + public void deleteTransformFeedbacks(int n, int[] ids, int offset) { + GLES30.glDeleteTransformFeedbacks(n, ids, offset); + } + + @Override + public void deleteTransformFeedbacks(int n, java.nio.IntBuffer ids) { + GLES30.glDeleteTransformFeedbacks(n, ids); + } + + @Override + public void genTransformFeedbacks(int n, int[] ids, int offset) { + GLES30.glGenTransformFeedbacks(n, ids, offset); + } + + @Override + public void genTransformFeedbacks(int n, java.nio.IntBuffer ids) { + GLES30.glGenTransformFeedbacks(n, ids); + } + + @Override + public boolean isTransformFeedback(int id) { + return GLES30.glIsTransformFeedback(id); + } + + @Override + public void pauseTransformFeedback() { + GLES30.glPauseTransformFeedback(); + } + + @Override + public void resumeTransformFeedback() { + GLES30.glResumeTransformFeedback(); + } + +// @Override +// public void getProgramBinary(int program, int bufSize, int[] length, int lengthOffset, int[] binaryFormat, int +// binaryFormatOffset, java.nio.Buffer binary) { +// GLES30.glGetProgramBinary(program, bufSize, length, lengthOffset, binaryFormat, binaryFormatOffset, binary); +// } +// +// @Override +// public void getProgramBinary(int program, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer binaryFormat, +// java.nio.Buffer binary) { +// GLES30.glGetProgramBinary(program, bufSize, length, binaryFormat, binary); +// } + +// @Override +// public void programBinary(int program, int binaryFormat, java.nio.Buffer binary, int length) { +// GLES30.glProgramBinary(program, binaryFormat, binary, length); +// } + + @Override + public void programParameteri(int program, int pname, int value) { + GLES30.glProgramParameteri(program, pname, value); + } + +// @Override +// public void invalidateFramebuffer(int target, int numAttachments, int[] attachments, int offset) { +// GLES30.glInvalidateFramebuffer(target, numAttachments, attachments, offset); +// } + + @Override + public void invalidateFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments) { + GLES30.glInvalidateFramebuffer(target, numAttachments, attachments); + } + +// +// @Override +// public void invalidateSubFramebuffer(int target, int numAttachments, int[] attachments, int offset, int x, int y, int width, +// int height) { +// GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, offset, x, y, width, height); +// } + + @Override + public void invalidateSubFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments, int x, int y, + int width, int height) { + GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); + } + +// @Override +// public void texStorage2D(int target, int levels, int internalformat, int width, int height) { +// GLES30.glTexStorage2D(target, levels, internalformat, width, height); +// } + +// @Override +// public void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) { +// GLES30.glTexStorage3D(target, levels, internalformat, width, height, depth); +// } +// +// @Override +// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, int[] params, int offset) { +// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params, offset); +// } +// +// @Override +// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, java.nio.IntBuffer params) { +// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params); +// } +} diff --git a/vtm-android/src/org/oscim/android/gl/AndroidGL30.java b/vtm-android/src/org/oscim/android/gl/AndroidGL30.java new file mode 100644 index 00000000..816cae55 --- /dev/null +++ b/vtm-android/src/org/oscim/android/gl/AndroidGL30.java @@ -0,0 +1,878 @@ +/* + * Copyright 2019 Gustl22 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ + +/******************************************************************************* + * Copyright 2014 See AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.android.gl; + +import android.annotation.SuppressLint; +import android.opengl.GLES30; + +import org.oscim.backend.GL30; + +/** + * See https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGL30.java + */ +@SuppressLint("NewApi") +public class AndroidGL30 extends AndroidGL implements GL30 { + @Override + public void readBuffer(int mode) { + GLES30.glReadBuffer(mode); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, java.nio.Buffer indices) { + GLES30.glDrawRangeElements(mode, start, end, count, type, indices); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) { + GLES30.glDrawRangeElements(mode, start, end, count, type, offset); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, java.nio.Buffer pixels) { + if (pixels == null) + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, 0); + else + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, int offset) { + GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, java.nio.Buffer pixels) { + GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, int offset) { + GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset); + } + + @Override + public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, + int height) { + GLES30.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + +// +// @Override +// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int +// imageSize, java.nio.Buffer data) { +// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +// } +// +// @Override +// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int +// imageSize, int offset) { +// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, offset); +// } +// +// @Override +// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int +// depth, int format, int imageSize, java.nio.Buffer data) { +// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +// } +// +// @Override +// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int +// depth, int format, int imageSize, int offset) { +// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset); +// } + + @Override + public void genQueries(int n, int[] ids, int offset) { + GLES30.glGenQueries(n, ids, offset); + } + + @Override + public void genQueries(int n, java.nio.IntBuffer ids) { + GLES30.glGenQueries(n, ids); + } + + @Override + public void deleteQueries(int n, int[] ids, int offset) { + GLES30.glDeleteQueries(n, ids, offset); + } + + @Override + public void deleteQueries(int n, java.nio.IntBuffer ids) { + GLES30.glDeleteQueries(n, ids); + } + + @Override + public boolean isQuery(int id) { + return GLES30.glIsQuery(id); + } + + @Override + public void beginQuery(int target, int id) { + GLES30.glBeginQuery(target, id); + } + + @Override + public void endQuery(int target) { + GLES30.glEndQuery(target); + } + +// @Override +// public void getQueryiv(int target, int pname, int[] params, int offset) { +// GLES30.glGetQueryiv(target, pname, params, offset); +// } + + @Override + public void getQueryiv(int target, int pname, java.nio.IntBuffer params) { + GLES30.glGetQueryiv(target, pname, params); + } + +// @Override +// public void getQueryObjectuiv(int id, int pname, int[] params, int offset) { +// GLES30.glGetQueryObjectuiv(id, pname, params, offset); +// } + + @Override + public void getQueryObjectuiv(int id, int pname, java.nio.IntBuffer params) { + GLES30.glGetQueryObjectuiv(id, pname, params); + } + + @Override + public boolean unmapBuffer(int target) { + return GLES30.glUnmapBuffer(target); + } + + @Override + public java.nio.Buffer getBufferPointerv(int target, int pname) { + return GLES30.glGetBufferPointerv(target, pname); + } + +// @Override +// public void drawBuffers(int n, int[] bufs, int offset) { +// GLES30.glDrawBuffers(n, bufs, offset); +// } + + @Override + public void drawBuffers(int n, java.nio.IntBuffer bufs) { + GLES30.glDrawBuffers(n, bufs); + } + +// @Override +// public void uniformMatrix2x3fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix2x3fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix2x3fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix3x2fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix3x2fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix3x2fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix2x4fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix2x4fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix2x4fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix4x2fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix4x2fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix4x2fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix3x4fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix3x4fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix3x4fv(location, count, transpose, value); + } + +// @Override +// public void uniformMatrix4x3fv(int location, int count, boolean transpose, float[] value, int offset) { +// GLES30.glUniformMatrix4x3fv(location, count, transpose, value, offset); +// } + + @Override + public void uniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) { + GLES30.glUniformMatrix4x3fv(location, count, transpose, value); + } + + @Override + public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, + int mask, int filter) { + GLES30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + @Override + public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) { + GLES30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + @Override + public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) { + GLES30.glFramebufferTextureLayer(target, attachment, texture, level, layer); + } + +// @Override +// public java.nio.Buffer mapBufferRange(int target, int offset, int length, int access) { +// return GLES30.glMapBufferRange(target, offset, length, access); +// } + + @Override + public void flushMappedBufferRange(int target, int offset, int length) { + GLES30.glFlushMappedBufferRange(target, offset, length); + } + + @Override + public void bindVertexArray(int array) { + GLES30.glBindVertexArray(array); + } + + @Override + public void deleteVertexArrays(int n, int[] arrays, int offset) { + GLES30.glDeleteVertexArrays(n, arrays, offset); + } + + @Override + public void deleteVertexArrays(int n, java.nio.IntBuffer arrays) { + GLES30.glDeleteVertexArrays(n, arrays); + } + + @Override + public void genVertexArrays(int n, int[] arrays, int offset) { + GLES30.glGenVertexArrays(n, arrays, offset); + } + + @Override + public void genVertexArrays(int n, java.nio.IntBuffer arrays) { + GLES30.glGenVertexArrays(n, arrays); + } + + @Override + public boolean isVertexArray(int array) { + return GLES30.glIsVertexArray(array); + } + +// @Override +// public void getIntegeri_v(int target, int index, int[] data, int offset) { +// GLES30.glGetIntegeri_v(target, index, data, offset); +// } + +// @Override +// public void getIntegeri_v(int target, int index, java.nio.IntBuffer data) { +// GLES30.glGetIntegeri_v(target, index, data); +// } + + @Override + public void beginTransformFeedback(int primitiveMode) { + GLES30.glBeginTransformFeedback(primitiveMode); + } + + @Override + public void endTransformFeedback() { + GLES30.glEndTransformFeedback(); + } + + @Override + public void bindBufferRange(int target, int index, int buffer, int offset, int size) { + GLES30.glBindBufferRange(target, index, buffer, offset, size); + } + + @Override + public void bindBufferBase(int target, int index, int buffer) { + GLES30.glBindBufferBase(target, index, buffer); + } + + @Override + public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) { + GLES30.glTransformFeedbackVaryings(program, varyings, bufferMode); + } + +// @Override +// public void getTransformFeedbackVarying(int program, int index, int bufsize, int[] length, int lengthOffset, int[] size, int +// sizeOffset, int[] type, int typeOffset, byte[] name, int nameOffset) { +// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, lengthOffset, size, sizeOffset, type, typeOffset, name, +// nameOffset); +// } + +// @Override +// public void getTransformFeedbackVarying(int program, int index, int bufsize, java.nio.IntBuffer length, java.nio.IntBuffer +// size, java.nio.IntBuffer type, byte name) { +// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, size, type, name); +// } +// +// @Override +// public String getTransformFeedbackVarying(int program, int index, int[] size, int sizeOffset, int[] type, int typeOffset) { +// return GLES30.glGetTransformFeedbackVarying(program, index, size, sizeOffset, type, typeOffset); +// } +// +// @Override +// public String getTransformFeedbackVarying(int program, int index, java.nio.IntBuffer size, java.nio.IntBuffer type) { +// return GLES30.glGetTransformFeedbackVarying(program, index, size, type); +// } + + @Override + public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) { + GLES30.glVertexAttribIPointer(index, size, type, stride, offset); + } + +// @Override +// public void getVertexAttribIiv(int index, int pname, int[] params, int offset) { +// GLES30.glGetVertexAttribIiv(index, pname, params, offset); +// } + + @Override + public void getVertexAttribIiv(int index, int pname, java.nio.IntBuffer params) { + GLES30.glGetVertexAttribIiv(index, pname, params); + } + +// @Override +// public void getVertexAttribIuiv(int index, int pname, int[] params, int offset) { +// GLES30.glGetVertexAttribIuiv(index, pname, params, offset); +// } + + @Override + public void getVertexAttribIuiv(int index, int pname, java.nio.IntBuffer params) { + GLES30.glGetVertexAttribIuiv(index, pname, params); + } + + @Override + public void vertexAttribI4i(int index, int x, int y, int z, int w) { + GLES30.glVertexAttribI4i(index, x, y, z, w); + } + + @Override + public void vertexAttribI4ui(int index, int x, int y, int z, int w) { + GLES30.glVertexAttribI4ui(index, x, y, z, w); + } + +// @Override +// public void vertexAttribI4iv(int index, int[] v, int offset) { +// GLES30.glVertexAttribI4iv(index, v, offset); +// } +// +// @Override +// public void vertexAttribI4iv(int index, java.nio.IntBuffer v) { +// GLES30.glVertexAttribI4iv(index, v); +// } +// +// @Override +// public void vertexAttribI4uiv(int index, int[] v, int offset) { +// GLES30.glVertexAttribI4uiv(index, v, offset); +// } +// +// @Override +// public void vertexAttribI4uiv(int index, java.nio.IntBuffer v) { +// GLES30.glVertexAttribI4uiv(index, v); +// } +// +// @Override +// public void getUniformuiv(int program, int location, int[] params, int offset) { +// GLES30.glGetUniformuiv(program, location, params, offset); +// } + + @Override + public void getUniformuiv(int program, int location, java.nio.IntBuffer params) { + GLES30.glGetUniformuiv(program, location, params); + } + + @Override + public int getFragDataLocation(int program, String name) { + return GLES30.glGetFragDataLocation(program, name); + } + +// @Override +// public void uniform1ui(int location, int v0) { +// GLES30.glUniform1ui(location, v0); +// } +// +// @Override +// public void uniform2ui(int location, int v0, int v1) { +// GLES30.glUniform2ui(location, v0, v1); +// } +// +// @Override +// public void uniform3ui(int location, int v0, int v1, int v2) { +// GLES30.glUniform3ui(location, v0, v1, v2); +// } + +// @Override +// public void uniform4ui(int location, int v0, int v1, int v2, int v3) { +// GLES30.glUniform4ui(location, v0, v1, v2, v3); +// } +// +// @Override +// public void uniform1uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform1uiv(location, count, value, offset); +// } + + @Override + public void uniform1uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform1uiv(location, count, value); + } + +// @Override +// public void uniform2uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform2uiv(location, count, value, offset); +// } +// +// @Override +// public void uniform2uiv(int location, int count, java.nio.IntBuffer value) { +// GLES30.glUniform2uiv(location, count, value); +// } +// +// @Override +// public void uniform3uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform3uiv(location, count, value, offset); +// } + + @Override + public void uniform3uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform3uiv(location, count, value); + } + +// @Override +// public void uniform4uiv(int location, int count, int[] value, int offset) { +// GLES30.glUniform4uiv(location, count, value, offset); +// } + + @Override + public void uniform4uiv(int location, int count, java.nio.IntBuffer value) { + GLES30.glUniform4uiv(location, count, value); + } + +// @Override +// public void clearBufferiv(int buffer, int drawbuffer, int[] value, int offset) { +// GLES30.glClearBufferiv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferiv(int buffer, int drawbuffer, java.nio.IntBuffer value) { + GLES30.glClearBufferiv(buffer, drawbuffer, value); + } + +// @Override +// public void clearBufferuiv(int buffer, int drawbuffer, int[] value, int offset) { +// GLES30.glClearBufferuiv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferuiv(int buffer, int drawbuffer, java.nio.IntBuffer value) { + GLES30.glClearBufferuiv(buffer, drawbuffer, value); + } + +// +// @Override +// public void clearBufferfv(int buffer, int drawbuffer, float[] value, int offset) { +// GLES30.glClearBufferfv(buffer, drawbuffer, value, offset); +// } + + @Override + public void clearBufferfv(int buffer, int drawbuffer, java.nio.FloatBuffer value) { + GLES30.glClearBufferfv(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) { + GLES30.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + @Override + public String getStringi(int name, int index) { + return GLES30.glGetStringi(name, index); + } + + @Override + public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) { + GLES30.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + +// +// @Override +// public void getUniformIndices(int program, String[] uniformNames, int[] uniformIndices, int uniformIndicesOffset) { +// GLES30.glGetUniformIndices(program, uniformNames, uniformIndices, uniformIndicesOffset); +// } + + @Override + public void getUniformIndices(int program, String[] uniformNames, java.nio.IntBuffer uniformIndices) { + GLES30.glGetUniformIndices(program, uniformNames, uniformIndices); + } + +// @Override +// public void getActiveUniformsiv(int program, int uniformCount, int[] uniformIndices, int uniformIndicesOffset, int pname, +// int[] params, int paramsOffset) { +// GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, uniformIndicesOffset, pname, params, paramsOffset); +// } + + @Override + public void getActiveUniformsiv(int program, int uniformCount, java.nio.IntBuffer uniformIndices, int pname, + java.nio.IntBuffer params) { + GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); + } + + @Override + public int getUniformBlockIndex(int program, String uniformBlockName) { + return GLES30.glGetUniformBlockIndex(program, uniformBlockName); + } + +// +// @Override +// public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params, int offset) { +// GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params, offset); +// } + + @Override + public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, java.nio.IntBuffer params) { + GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); + } + +// +// @Override +// public void getActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize, int[] length, int lengthOffset, byte[] +// uniformBlockName, int uniformBlockNameOffset) { +// GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, lengthOffset, uniformBlockName, +// uniformBlockNameOffset); +// } + + @Override + public void getActiveUniformBlockName(int program, int uniformBlockIndex, java.nio.Buffer length, + java.nio.Buffer uniformBlockName) { + GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, length, uniformBlockName); + } + + @Override + public String getActiveUniformBlockName(int program, int uniformBlockIndex) { + return GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex); + } + + @Override + public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) { + GLES30.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + } + + @Override + public void drawArraysInstanced(int mode, int first, int count, int instanceCount) { + GLES30.glDrawArraysInstanced(mode, first, count, instanceCount); + } + +// @Override +// public void drawElementsInstanced(int mode, int count, int type, java.nio.Buffer indices, int instanceCount) { +// GLES30.glDrawElementsInstanced(mode, count, type, indices, instanceCount); +// } + + @Override + public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) { + GLES30.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount); + } + +// @Override +// public long fenceSync(int condition, int flags) { +// return GLES30.glFenceSync(condition, flags); +// } +// +// @Override +// public boolean isSync(long sync) { +// return GLES30.glIsSync(sync); +// } +// +// @Override +// public void deleteSync(long sync) { +// GLES30.glDeleteSync(sync); +// } +// +// @Override +// public int clientWaitSync(long sync, int flags, long timeout) { +// return GLES30.glClientWaitSync(sync, flags, timeout); +// } + +// @Override +// public void waitSync(long sync, int flags, long timeout) { +// GLES30.glWaitSync(sync, flags, timeout); +// } +// +// @Override +// public void getInteger64v(int pname, long[] params, int offset) { +// GLES30.glGetInteger64v(pname, params, offset); +// } + + @Override + public void getInteger64v(int pname, java.nio.LongBuffer params) { + GLES30.glGetInteger64v(pname, params); + } + +// @Override +// public void getSynciv(long sync, int pname, int bufSize, int[] length, int lengthOffset, int[] values, int valuesOffset) { +// GLES30.glGetSynciv(sync, pname, bufSize, length, lengthOffset, values, valuesOffset); +// } +// +// @Override +// public void getSynciv(long sync, int pname, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer values) { +// GLES30.glGetSynciv(sync, pname, bufSize, length, values); +// } +// +// @Override +// public void getInteger64i_v(int target, int index, long[] data, int offset) { +// GLES30.glGetInteger64i_v(target, index, data, offset); +// } +// +// @Override +// public void getInteger64i_v(int target, int index, java.nio.LongBuffer data) { +// GLES30.glGetInteger64i_v(target, index, data); +// } +// +// @Override +// public void getBufferParameteri64v(int target, int pname, long[] params, int offset) { +// GLES30.glGetBufferParameteri64v(target, pname, params, offset); +// } + + @Override + public void getBufferParameteri64v(int target, int pname, java.nio.LongBuffer params) { + GLES30.glGetBufferParameteri64v(target, pname, params); + } + + @Override + public void genSamplers(int count, int[] samplers, int offset) { + GLES30.glGenSamplers(count, samplers, offset); + } + + @Override + public void genSamplers(int count, java.nio.IntBuffer samplers) { + GLES30.glGenSamplers(count, samplers); + } + + @Override + public void deleteSamplers(int count, int[] samplers, int offset) { + GLES30.glDeleteSamplers(count, samplers, offset); + } + + @Override + public void deleteSamplers(int count, java.nio.IntBuffer samplers) { + GLES30.glDeleteSamplers(count, samplers); + } + + @Override + public boolean isSampler(int sampler) { + return GLES30.glIsSampler(sampler); + } + + @Override + public void bindSampler(int unit, int sampler) { + GLES30.glBindSampler(unit, sampler); + } + + @Override + public void samplerParameteri(int sampler, int pname, int param) { + GLES30.glSamplerParameteri(sampler, pname, param); + } + +// +// @Override +// public void samplerParameteriv(int sampler, int pname, int[] param, int offset) { +// GLES30.glSamplerParameteriv(sampler, pname, param, offset); +// } + + @Override + public void samplerParameteriv(int sampler, int pname, java.nio.IntBuffer param) { + GLES30.glSamplerParameteriv(sampler, pname, param); + } + + @Override + public void samplerParameterf(int sampler, int pname, float param) { + GLES30.glSamplerParameterf(sampler, pname, param); + } + +// @Override +// public void samplerParameterfv(int sampler, int pname, float[] param, int offset) { +// GLES30.glSamplerParameterfv(sampler, pname, param, offset); +// } + + @Override + public void samplerParameterfv(int sampler, int pname, java.nio.FloatBuffer param) { + GLES30.glSamplerParameterfv(sampler, pname, param); + } + +// +// @Override +// public void getSamplerParameteriv(int sampler, int pname, int[] params, int offset) { +// GLES30.glGetSamplerParameteriv(sampler, pname, params, offset); +// } + + @Override + public void getSamplerParameteriv(int sampler, int pname, java.nio.IntBuffer params) { + GLES30.glGetSamplerParameteriv(sampler, pname, params); + } + +// @Override +// public void getSamplerParameterfv(int sampler, int pname, float[] params, int offset) { +// GLES30.glGetSamplerParameterfv(sampler, pname, params, offset); +// } + + @Override + public void getSamplerParameterfv(int sampler, int pname, java.nio.FloatBuffer params) { + GLES30.glGetSamplerParameterfv(sampler, pname, params); + } + + @Override + public void vertexAttribDivisor(int index, int divisor) { + GLES30.glVertexAttribDivisor(index, divisor); + } + + @Override + public void bindTransformFeedback(int target, int id) { + GLES30.glBindTransformFeedback(target, id); + } + + @Override + public void deleteTransformFeedbacks(int n, int[] ids, int offset) { + GLES30.glDeleteTransformFeedbacks(n, ids, offset); + } + + @Override + public void deleteTransformFeedbacks(int n, java.nio.IntBuffer ids) { + GLES30.glDeleteTransformFeedbacks(n, ids); + } + + @Override + public void genTransformFeedbacks(int n, int[] ids, int offset) { + GLES30.glGenTransformFeedbacks(n, ids, offset); + } + + @Override + public void genTransformFeedbacks(int n, java.nio.IntBuffer ids) { + GLES30.glGenTransformFeedbacks(n, ids); + } + + @Override + public boolean isTransformFeedback(int id) { + return GLES30.glIsTransformFeedback(id); + } + + @Override + public void pauseTransformFeedback() { + GLES30.glPauseTransformFeedback(); + } + + @Override + public void resumeTransformFeedback() { + GLES30.glResumeTransformFeedback(); + } + +// @Override +// public void getProgramBinary(int program, int bufSize, int[] length, int lengthOffset, int[] binaryFormat, int +// binaryFormatOffset, java.nio.Buffer binary) { +// GLES30.glGetProgramBinary(program, bufSize, length, lengthOffset, binaryFormat, binaryFormatOffset, binary); +// } +// +// @Override +// public void getProgramBinary(int program, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer binaryFormat, +// java.nio.Buffer binary) { +// GLES30.glGetProgramBinary(program, bufSize, length, binaryFormat, binary); +// } + +// @Override +// public void programBinary(int program, int binaryFormat, java.nio.Buffer binary, int length) { +// GLES30.glProgramBinary(program, binaryFormat, binary, length); +// } + + @Override + public void programParameteri(int program, int pname, int value) { + GLES30.glProgramParameteri(program, pname, value); + } + +// @Override +// public void invalidateFramebuffer(int target, int numAttachments, int[] attachments, int offset) { +// GLES30.glInvalidateFramebuffer(target, numAttachments, attachments, offset); +// } + + @Override + public void invalidateFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments) { + GLES30.glInvalidateFramebuffer(target, numAttachments, attachments); + } + +// +// @Override +// public void invalidateSubFramebuffer(int target, int numAttachments, int[] attachments, int offset, int x, int y, int width, +// int height) { +// GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, offset, x, y, width, height); +// } + + @Override + public void invalidateSubFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments, int x, int y, + int width, int height) { + GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); + } + +// @Override +// public void texStorage2D(int target, int levels, int internalformat, int width, int height) { +// GLES30.glTexStorage2D(target, levels, internalformat, width, height); +// } + +// @Override +// public void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) { +// GLES30.glTexStorage3D(target, levels, internalformat, width, height, depth); +// } +// +// @Override +// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, int[] params, int offset) { +// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params, offset); +// } +// +// @Override +// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, java.nio.IntBuffer params) { +// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params); +// } +} diff --git a/vtm-desktop/src/org/oscim/gdx/LwjglGL30.java b/vtm-desktop/src/org/oscim/gdx/LwjglGL30.java new file mode 100644 index 00000000..2c8df349 --- /dev/null +++ b/vtm-desktop/src/org/oscim/gdx/LwjglGL30.java @@ -0,0 +1,657 @@ +/******************************************************************************* + * Copyright 2011 See AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.gdx; + +import com.badlogic.gdx.utils.GdxRuntimeException; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import org.lwjgl.opengl.GL15; +import org.lwjgl.opengl.GL20; +import org.lwjgl.opengl.GL21; +import org.lwjgl.opengl.GL31; +import org.lwjgl.opengl.GL32; +import org.lwjgl.opengl.GL33; +import org.lwjgl.opengl.GL40; +import org.lwjgl.opengl.GL41; +import org.lwjgl.opengl.GL43; +import org.oscim.backend.GL30; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.DoubleBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; +import java.nio.ShortBuffer; + +/** + * See https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3GL30.java + */ +public class LwjglGL30 extends LwjglGL20 implements GL30 { + @Override + public void readBuffer(int mode) { + GL11.glReadBuffer(mode); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, Buffer indices) { + if (indices instanceof ByteBuffer) + GL12.glDrawRangeElements(mode, start, end, (ByteBuffer) indices); + else if (indices instanceof ShortBuffer) + GL12.glDrawRangeElements(mode, start, end, (ShortBuffer) indices); + else if (indices instanceof IntBuffer) + GL12.glDrawRangeElements(mode, start, end, (IntBuffer) indices); + else throw new GdxRuntimeException("indices must be byte, short or int buffer"); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) { + GL12.glDrawRangeElements(mode, start, end, count, type, offset); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, Buffer pixels) { + if (pixels == null) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ByteBuffer) null); + else if (pixels instanceof ByteBuffer) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ByteBuffer) pixels); + else if (pixels instanceof ShortBuffer) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ShortBuffer) pixels); + else if (pixels instanceof IntBuffer) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (IntBuffer) pixels); + else if (pixels instanceof FloatBuffer) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (FloatBuffer) pixels); + else if (pixels instanceof DoubleBuffer) + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (DoubleBuffer) pixels); + else + throw new GdxRuntimeException("Can't use " + pixels.getClass().getName() + + " with this method. Use ByteBuffer, ShortBuffer, IntBuffer, FloatBuffer or DoubleBuffer instead. Blame LWJGL"); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, int offset) { + GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, Buffer pixels) { + if (pixels instanceof ByteBuffer) + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (ByteBuffer) pixels); + else if (pixels instanceof ShortBuffer) + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (ShortBuffer) pixels); + else if (pixels instanceof IntBuffer) + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (IntBuffer) pixels); + else if (pixels instanceof FloatBuffer) + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (FloatBuffer) pixels); + else if (pixels instanceof DoubleBuffer) + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (DoubleBuffer) pixels); + else + throw new GdxRuntimeException("Can't use " + pixels.getClass().getName() + + " with this method. Use ByteBuffer, ShortBuffer, IntBuffer, FloatBuffer or DoubleBuffer instead. Blame LWJGL"); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, int offset) { + GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset); + } + + @Override + public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, + int height) { + GL12.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + @Override + public void genQueries(int n, int[] ids, int offset) { + for (int i = offset; i < offset + n; i++) { + ids[i] = GL15.glGenQueries(); + } + } + + @Override + public void genQueries(int n, IntBuffer ids) { + for (int i = 0; i < n; i++) { + ids.put(GL15.glGenQueries()); + } + } + + @Override + public void deleteQueries(int n, int[] ids, int offset) { + for (int i = offset; i < offset + n; i++) { + GL15.glDeleteQueries(ids[i]); + } + } + + @Override + public void deleteQueries(int n, IntBuffer ids) { + for (int i = 0; i < n; i++) { + GL15.glDeleteQueries(ids.get()); + } + } + + @Override + public boolean isQuery(int id) { + return GL15.glIsQuery(id); + } + + @Override + public void beginQuery(int target, int id) { + GL15.glBeginQuery(target, id); + } + + @Override + public void endQuery(int target) { + GL15.glEndQuery(target); + } + + @Override + public void getQueryiv(int target, int pname, IntBuffer params) { + GL15.glGetQuery(target, pname, params); + } + + @Override + public void getQueryObjectuiv(int id, int pname, IntBuffer params) { + GL15.glGetQueryObjectu(id, pname, params); + } + + @Override + public boolean unmapBuffer(int target) { + return GL15.glUnmapBuffer(target); + } + + @Override + public Buffer getBufferPointerv(int target, int pname) { + return GL15.glGetBufferPointer(target, pname); + } + + @Override + public void drawBuffers(int n, IntBuffer bufs) { + GL20.glDrawBuffers(bufs); + } + + @Override + public void uniformMatrix2x3fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix2x3(location, transpose, value); + } + + @Override + public void uniformMatrix3x2fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix3x2(location, transpose, value); + } + + @Override + public void uniformMatrix2x4fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix2x4(location, transpose, value); + } + + @Override + public void uniformMatrix4x2fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix4x2(location, transpose, value); + } + + @Override + public void uniformMatrix3x4fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix3x4(location, transpose, value); + } + + + @Override + public void uniformMatrix4x3fv(int location, int count, boolean transpose, FloatBuffer value) { + GL21.glUniformMatrix4x3(location, transpose, value); + } + + @Override + public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, + int mask, int filter) { + org.lwjgl.opengl.GL30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + @Override + public void bindFramebuffer(int target, int framebuffer) { + org.lwjgl.opengl.GL30.glBindFramebuffer(target, framebuffer); + } + + @Override + public void bindRenderbuffer(int target, int renderbuffer) { + org.lwjgl.opengl.GL30.glBindRenderbuffer(target, renderbuffer); + } + + @Override + public int checkFramebufferStatus(int target) { + return org.lwjgl.opengl.GL30.glCheckFramebufferStatus(target); + } + + @Override + public void deleteFramebuffers(int n, IntBuffer framebuffers) { + org.lwjgl.opengl.GL30.glDeleteFramebuffers(framebuffers); + } + + @Override + public void deleteFramebuffer(int framebuffer) { + org.lwjgl.opengl.GL30.glDeleteFramebuffers(framebuffer); + } + + @Override + public void deleteRenderbuffers(int n, IntBuffer renderbuffers) { + org.lwjgl.opengl.GL30.glDeleteRenderbuffers(renderbuffers); + } + + @Override + public void deleteRenderbuffer(int renderbuffer) { + org.lwjgl.opengl.GL30.glDeleteRenderbuffers(renderbuffer); + } + + @Override + public void generateMipmap(int target) { + org.lwjgl.opengl.GL30.glGenerateMipmap(target); + } + + @Override + public void genFramebuffers(int n, IntBuffer framebuffers) { + org.lwjgl.opengl.GL30.glGenFramebuffers(framebuffers); + } + + @Override + public int genFramebuffer() { + return org.lwjgl.opengl.GL30.glGenFramebuffers(); + } + + @Override + public void genRenderbuffers(int n, IntBuffer renderbuffers) { + org.lwjgl.opengl.GL30.glGenRenderbuffers(renderbuffers); + } + + @Override + public int genRenderbuffer() { + return org.lwjgl.opengl.GL30.glGenRenderbuffers(); + } + + @Override + public void getRenderbufferParameteriv(int target, int pname, IntBuffer params) { + org.lwjgl.opengl.GL30.glGetRenderbufferParameter(target, pname, params); + } + + @Override + public boolean isFramebuffer(int framebuffer) { + return org.lwjgl.opengl.GL30.glIsFramebuffer(framebuffer); + } + + @Override + public boolean isRenderbuffer(int renderbuffer) { + return org.lwjgl.opengl.GL30.glIsRenderbuffer(renderbuffer); + } + + @Override + public void renderbufferStorage(int target, int internalformat, int width, int height) { + org.lwjgl.opengl.GL30.glRenderbufferStorage(target, internalformat, width, height); + } + + @Override + public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) { + org.lwjgl.opengl.GL30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + @Override + public void framebufferTexture2D(int target, int attachment, int textarget, int texture, int level) { + org.lwjgl.opengl.GL30.glFramebufferTexture2D(target, attachment, textarget, texture, level); + } + + @Override + public void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, int renderbuffer) { + org.lwjgl.opengl.GL30.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); + } + + @Override + public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) { + org.lwjgl.opengl.GL30.glFramebufferTextureLayer(target, attachment, texture, level, layer); + } + + @Override + public void flushMappedBufferRange(int target, int offset, int length) { + org.lwjgl.opengl.GL30.glFlushMappedBufferRange(target, offset, length); + } + + @Override + public void bindVertexArray(int array) { + org.lwjgl.opengl.GL30.glBindVertexArray(array); + } + + @Override + public void deleteVertexArrays(int n, int[] arrays, int offset) { + for (int i = offset; i < offset + n; i++) { + org.lwjgl.opengl.GL30.glDeleteVertexArrays(arrays[i]); + } + } + + @Override + public void deleteVertexArrays(int n, IntBuffer arrays) { + org.lwjgl.opengl.GL30.glDeleteVertexArrays(arrays); + } + + @Override + public void genVertexArrays(int n, int[] arrays, int offset) { + for (int i = offset; i < offset + n; i++) { + arrays[i] = org.lwjgl.opengl.GL30.glGenVertexArrays(); + } + } + + @Override + public void genVertexArrays(int n, IntBuffer arrays) { + org.lwjgl.opengl.GL30.glGenVertexArrays(arrays); + } + + @Override + public boolean isVertexArray(int array) { + return org.lwjgl.opengl.GL30.glIsVertexArray(array); + } + + @Override + public void beginTransformFeedback(int primitiveMode) { + org.lwjgl.opengl.GL30.glBeginTransformFeedback(primitiveMode); + } + + @Override + public void endTransformFeedback() { + org.lwjgl.opengl.GL30.glEndTransformFeedback(); + } + + @Override + public void bindBufferRange(int target, int index, int buffer, int offset, int size) { + org.lwjgl.opengl.GL30.glBindBufferRange(target, index, buffer, offset, size); + } + + @Override + public void bindBufferBase(int target, int index, int buffer) { + org.lwjgl.opengl.GL30.glBindBufferBase(target, index, buffer); + } + + @Override + public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) { + org.lwjgl.opengl.GL30.glTransformFeedbackVaryings(program, varyings, bufferMode); + } + + @Override + public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) { + org.lwjgl.opengl.GL30.glVertexAttribIPointer(index, size, type, stride, offset); + } + + @Override + public void getVertexAttribIiv(int index, int pname, IntBuffer params) { + org.lwjgl.opengl.GL30.glGetVertexAttribI(index, pname, params); + } + + @Override + public void getVertexAttribIuiv(int index, int pname, IntBuffer params) { + org.lwjgl.opengl.GL30.glGetVertexAttribIu(index, pname, params); + } + + @Override + public void vertexAttribI4i(int index, int x, int y, int z, int w) { + org.lwjgl.opengl.GL30.glVertexAttribI4i(index, x, y, z, w); + } + + @Override + public void vertexAttribI4ui(int index, int x, int y, int z, int w) { + org.lwjgl.opengl.GL30.glVertexAttribI4ui(index, x, y, z, w); + } + + @Override + public void getUniformuiv(int program, int location, IntBuffer params) { + org.lwjgl.opengl.GL30.glGetUniformu(program, location, params); + } + + @Override + public int getFragDataLocation(int program, String name) { + return org.lwjgl.opengl.GL30.glGetFragDataLocation(program, name); + } + + @Override + public void uniform1uiv(int location, int count, IntBuffer value) { + org.lwjgl.opengl.GL30.glUniform1u(location, value); + } + + @Override + public void uniform3uiv(int location, int count, IntBuffer value) { + org.lwjgl.opengl.GL30.glUniform3u(location, value); + } + + @Override + public void uniform4uiv(int location, int count, IntBuffer value) { + org.lwjgl.opengl.GL30.glUniform4u(location, value); + } + + @Override + public void clearBufferiv(int buffer, int drawbuffer, IntBuffer value) { + org.lwjgl.opengl.GL30.glClearBuffer(buffer, drawbuffer, value); + } + + @Override + public void clearBufferuiv(int buffer, int drawbuffer, IntBuffer value) { + org.lwjgl.opengl.GL30.glClearBufferu(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfv(int buffer, int drawbuffer, FloatBuffer value) { + org.lwjgl.opengl.GL30.glClearBuffer(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) { + org.lwjgl.opengl.GL30.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + @Override + public String getStringi(int name, int index) { + return org.lwjgl.opengl.GL30.glGetStringi(name, index); + } + + @Override + public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) { + GL31.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + + @Override + public void getUniformIndices(int program, String[] uniformNames, IntBuffer uniformIndices) { + GL31.glGetUniformIndices(program, uniformNames, uniformIndices); + } + + @Override + public void getActiveUniformsiv(int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params) { + GL31.glGetActiveUniforms(program, uniformIndices, pname, params); + } + + @Override + public int getUniformBlockIndex(int program, String uniformBlockName) { + return GL31.glGetUniformBlockIndex(program, uniformBlockName); + } + + @Override + public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, IntBuffer params) { + params.put(GL31.glGetActiveUniformBlocki(program, uniformBlockIndex, pname)); + } + + @Override + public void getActiveUniformBlockName(int program, int uniformBlockIndex, Buffer length, Buffer uniformBlockName) { + GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, (IntBuffer) length, (ByteBuffer) uniformBlockName); + } + + @Override + public String getActiveUniformBlockName(int program, int uniformBlockIndex) { + return GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, 1024); + } + + @Override + public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) { + GL31.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + } + + @Override + public void drawArraysInstanced(int mode, int first, int count, int instanceCount) { + GL31.glDrawArraysInstanced(mode, first, count, instanceCount); + } + + @Override + public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) { + GL31.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount); + + } + + @Override + public void getInteger64v(int pname, LongBuffer params) { + GL32.glGetInteger64(pname, params); + } + + @Override + public void getBufferParameteri64v(int target, int pname, LongBuffer params) { + params.put(GL32.glGetBufferParameteri64(target, pname)); + } + + @Override + public void genSamplers(int count, int[] samplers, int offset) { + for (int i = offset; i < offset + count; i++) { + samplers[i] = GL33.glGenSamplers(); + } + } + + @Override + public void genSamplers(int count, IntBuffer samplers) { + GL33.glGenSamplers(samplers); + } + + @Override + public void deleteSamplers(int count, int[] samplers, int offset) { + for (int i = offset; i < offset + count; i++) { + GL33.glDeleteSamplers(samplers[i]); + } + } + + @Override + public void deleteSamplers(int count, IntBuffer samplers) { + GL33.glDeleteSamplers(samplers); + } + + @Override + public boolean isSampler(int sampler) { + return GL33.glIsSampler(sampler); + } + + @Override + public void bindSampler(int unit, int sampler) { + GL33.glBindSampler(unit, sampler); + } + + @Override + public void samplerParameteri(int sampler, int pname, int param) { + GL33.glSamplerParameteri(sampler, pname, param); + } + + @Override + public void samplerParameteriv(int sampler, int pname, IntBuffer param) { + GL33.glSamplerParameter(sampler, pname, param); + } + + @Override + public void samplerParameterf(int sampler, int pname, float param) { + GL33.glSamplerParameterf(sampler, pname, param); + } + + @Override + public void samplerParameterfv(int sampler, int pname, FloatBuffer param) { + GL33.glSamplerParameter(sampler, pname, param); + } + + @Override + public void getSamplerParameteriv(int sampler, int pname, IntBuffer params) { + GL33.glGetSamplerParameterI(sampler, pname, params); + } + + @Override + public void getSamplerParameterfv(int sampler, int pname, FloatBuffer params) { + GL33.glGetSamplerParameter(sampler, pname, params); + + } + + @Override + public void vertexAttribDivisor(int index, int divisor) { + GL33.glVertexAttribDivisor(index, divisor); + } + + @Override + public void bindTransformFeedback(int target, int id) { + GL40.glBindTransformFeedback(target, id); + } + + @Override + public void deleteTransformFeedbacks(int n, int[] ids, int offset) { + for (int i = offset; i < offset + n; i++) { + GL40.glDeleteTransformFeedbacks(ids[i]); + } + } + + @Override + public void deleteTransformFeedbacks(int n, IntBuffer ids) { + GL40.glDeleteTransformFeedbacks(ids); + } + + @Override + public void genTransformFeedbacks(int n, int[] ids, int offset) { + for (int i = offset; i < offset + n; i++) { + ids[i] = GL40.glGenTransformFeedbacks(); + } + } + + @Override + public void genTransformFeedbacks(int n, IntBuffer ids) { + GL40.glGenTransformFeedbacks(ids); + } + + @Override + public boolean isTransformFeedback(int id) { + return GL40.glIsTransformFeedback(id); + } + + @Override + public void pauseTransformFeedback() { + GL40.glPauseTransformFeedback(); + } + + @Override + public void resumeTransformFeedback() { + GL40.glResumeTransformFeedback(); + } + + @Override + public void programParameteri(int program, int pname, int value) { + GL41.glProgramParameteri(program, pname, value); + } + + @Override + public void invalidateFramebuffer(int target, int numAttachments, IntBuffer attachments) { + GL43.glInvalidateFramebuffer(target, attachments); + } + + @Override + public void invalidateSubFramebuffer(int target, int numAttachments, IntBuffer attachments, int x, int y, int width, + int height) { + GL43.glInvalidateSubFramebuffer(target, attachments, x, y, width, height); + } +} diff --git a/vtm-ios/src/org/oscim/ios/backend/IosGL30.java b/vtm-ios/src/org/oscim/ios/backend/IosGL30.java new file mode 100644 index 00000000..59551872 --- /dev/null +++ b/vtm-ios/src/org/oscim/ios/backend/IosGL30.java @@ -0,0 +1,506 @@ +/* + * Copyright 2019 Gustl22 + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.ios.backend; + +import com.badlogic.gdx.backends.iosrobovm.IOSGLES30; + +import org.oscim.backend.GL30; + +import java.nio.Buffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; + +/** + * iOS specific implementation of {@link GL30}. + */ +public class IosGL30 extends IosGL implements GL30 { + + private static final IOSGLES30 iOSGL = new IOSGLES30(); + + @Override + public void readBuffer(int mode) { + iOSGL.glReadBuffer(mode); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, Buffer indices) { + iOSGL.glDrawRangeElements(mode, start, end, count, type, indices); + } + + @Override + public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) { + iOSGL.glDrawRangeElements(mode, start, end, count, type, offset); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, Buffer pixels) { + iOSGL.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + } + + @Override + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, int offset) { + iOSGL.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, Buffer pixels) { + iOSGL.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + @Override + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, int offset) { + iOSGL.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset); + } + + @Override + public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) { + iOSGL.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + @Override + public void genQueries(int n, int[] ids, int offset) { + iOSGL.glGenQueries(n, ids, offset); + } + + @Override + public void genQueries(int n, IntBuffer ids) { + iOSGL.glGenQueries(n, ids); + } + + @Override + public void deleteQueries(int n, int[] ids, int offset) { + iOSGL.glDeleteQueries(n, ids, offset); + } + + @Override + public void deleteQueries(int n, IntBuffer ids) { + iOSGL.glDeleteQueries(n, ids); + } + + @Override + public boolean isQuery(int id) { + iOSGL.glIsQuery(id); + return false; + } + + @Override + public void beginQuery(int target, int id) { + iOSGL.glBeginQuery(target, id); + } + + @Override + public void endQuery(int target) { + iOSGL.glEndQuery(target); + } + + @Override + public void getQueryiv(int target, int pname, IntBuffer params) { + iOSGL.glGetQueryiv(target, pname, params); + } + + @Override + public void getQueryObjectuiv(int id, int pname, IntBuffer params) { + iOSGL.glGetQueryObjectuiv(id, pname, params); + } + + @Override + public boolean unmapBuffer(int target) { + iOSGL.glUnmapBuffer(target); + return false; + } + + @Override + public Buffer getBufferPointerv(int target, int pname) { + iOSGL.glGetBufferPointerv(target, pname); + return null; + } + + @Override + public void drawBuffers(int n, IntBuffer bufs) { + iOSGL.glDrawBuffers(n, bufs); + } + + @Override + public void uniformMatrix2x3fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix2x3fv(location, count, transpose, value); + } + + @Override + public void uniformMatrix3x2fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix3x2fv(location, count, transpose, value); + } + + @Override + public void uniformMatrix2x4fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix2x4fv(location, count, transpose, value); + } + + @Override + public void uniformMatrix4x2fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix4x2fv(location, count, transpose, value); + } + + @Override + public void uniformMatrix3x4fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix3x4fv(location, count, transpose, value); + } + + @Override + public void uniformMatrix4x3fv(int location, int count, boolean transpose, FloatBuffer value) { + iOSGL.glUniformMatrix4x3fv(location, count, transpose, value); + } + + @Override + public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter) { + iOSGL.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + @Override + public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) { + iOSGL.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + @Override + public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) { + iOSGL.glFramebufferTextureLayer(target, attachment, texture, level, layer); + } + + @Override + public void flushMappedBufferRange(int target, int offset, int length) { + iOSGL.glFlushMappedBufferRange(target, offset, length); + } + + @Override + public void bindVertexArray(int array) { + iOSGL.glBindVertexArray(array); + } + + @Override + public void deleteVertexArrays(int n, int[] arrays, int offset) { + iOSGL.glDeleteVertexArrays(n, arrays, offset); + } + + @Override + public void deleteVertexArrays(int n, IntBuffer arrays) { + iOSGL.glDeleteVertexArrays(n, arrays); + } + + @Override + public void genVertexArrays(int n, int[] arrays, int offset) { + iOSGL.glGenVertexArrays(n, arrays, offset); + } + + @Override + public void genVertexArrays(int n, IntBuffer arrays) { + iOSGL.glGenVertexArrays(n, arrays); + } + + @Override + public boolean isVertexArray(int array) { + iOSGL.glIsVertexArray(array); + return false; + } + + @Override + public void beginTransformFeedback(int primitiveMode) { + iOSGL.glBeginTransformFeedback(primitiveMode); + } + + @Override + public void endTransformFeedback() { + iOSGL.glEndTransformFeedback(); + } + + @Override + public void bindBufferRange(int target, int index, int buffer, int offset, int size) { + iOSGL.glBindBufferRange(target, index, buffer, offset, size); + } + + @Override + public void bindBufferBase(int target, int index, int buffer) { + iOSGL.glBindBufferBase(target, index, buffer); + } + + @Override + public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) { + iOSGL.glTransformFeedbackVaryings(program, varyings, bufferMode); + } + + @Override + public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) { + iOSGL.glVertexAttribIPointer(index, size, type, stride, offset); + } + + @Override + public void getVertexAttribIiv(int index, int pname, IntBuffer params) { + iOSGL.glGetVertexAttribIiv(index, pname, params); + } + + @Override + public void getVertexAttribIuiv(int index, int pname, IntBuffer params) { + iOSGL.glGetVertexAttribIuiv(index, pname, params); + } + + @Override + public void vertexAttribI4i(int index, int x, int y, int z, int w) { + iOSGL.glVertexAttribI4i(index, x, y, z, w); + } + + @Override + public void vertexAttribI4ui(int index, int x, int y, int z, int w) { + iOSGL.glVertexAttribI4ui(index, x, y, z, w); + } + + @Override + public void getUniformuiv(int program, int location, IntBuffer params) { + iOSGL.glGetUniformuiv(program, location, params); + } + + @Override + public int getFragDataLocation(int program, String name) { + iOSGL.glGetFragDataLocation(program, name); + return 0; + } + + @Override + public void uniform1uiv(int location, int count, IntBuffer value) { + iOSGL.glUniform1uiv(location, count, value); + } + + @Override + public void uniform3uiv(int location, int count, IntBuffer value) { + iOSGL.glUniform3uiv(location, count, value); + } + + @Override + public void uniform4uiv(int location, int count, IntBuffer value) { + iOSGL.glUniform4uiv(location, count, value); + } + + @Override + public void clearBufferiv(int buffer, int drawbuffer, IntBuffer value) { + iOSGL.glClearBufferiv(buffer, drawbuffer, value); + } + + @Override + public void clearBufferuiv(int buffer, int drawbuffer, IntBuffer value) { + iOSGL.glClearBufferuiv(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfv(int buffer, int drawbuffer, FloatBuffer value) { + iOSGL.glClearBufferfv(buffer, drawbuffer, value); + } + + @Override + public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) { + iOSGL.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + @Override + public String getStringi(int name, int index) { + iOSGL.glGetStringi(name, index); + return null; + } + + @Override + public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) { + iOSGL.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + + @Override + public void getUniformIndices(int program, String[] uniformNames, IntBuffer uniformIndices) { + iOSGL.glGetUniformIndices(program, uniformNames, uniformIndices); + } + + @Override + public void getActiveUniformsiv(int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params) { + iOSGL.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); + } + + @Override + public int getUniformBlockIndex(int program, String uniformBlockName) { + return + iOSGL.glGetUniformBlockIndex(program, uniformBlockName); + } + + @Override + public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, IntBuffer params) { + iOSGL.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, + params); + } + + @Override + public void getActiveUniformBlockName(int program, int uniformBlockIndex, Buffer length, Buffer uniformBlockName) { + iOSGL.glGetActiveUniformBlockName(program, uniformBlockIndex, length, + uniformBlockName); + } + + @Override + public String getActiveUniformBlockName(int program, int uniformBlockIndex) { + iOSGL.glGetActiveUniformBlockName(program, uniformBlockIndex); + return null; + } + + @Override + public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) { + iOSGL.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + } + + @Override + public void drawArraysInstanced(int mode, int first, int count, int instanceCount) { + iOSGL.glDrawArraysInstanced(mode, first, count, instanceCount); + } + + @Override + public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) { + iOSGL.glDrawElementsInstanced(mode, count, type, indicesOffset, + instanceCount); + } + + @Override + public void getInteger64v(int pname, LongBuffer params) { + iOSGL.glGetInteger64v(pname, params); + } + + @Override + public void getBufferParameteri64v(int target, int pname, LongBuffer params) { + iOSGL.glGetBufferParameteri64v(target, pname, params); + } + + @Override + public void genSamplers(int count, int[] samplers, int offset) { + iOSGL.glGenSamplers(count, samplers, offset); + } + + @Override + public void genSamplers(int count, IntBuffer samplers) { + iOSGL.glGenSamplers(count, samplers); + } + + @Override + public void deleteSamplers(int count, int[] samplers, int offset) { + iOSGL.glDeleteSamplers(count, samplers, offset); + } + + @Override + public void deleteSamplers(int count, IntBuffer samplers) { + iOSGL.glDeleteSamplers(count, samplers); + } + + @Override + public boolean isSampler(int sampler) { + iOSGL.glIsSampler(sampler); + return false; + } + + @Override + public void bindSampler(int unit, int sampler) { + iOSGL.glBindSampler(unit, sampler); + } + + @Override + public void samplerParameteri(int sampler, int pname, int param) { + iOSGL.glSamplerParameteri(sampler, pname, param); + } + + @Override + public void samplerParameteriv(int sampler, int pname, IntBuffer param) { + iOSGL.glSamplerParameteriv(sampler, pname, param); + } + + @Override + public void samplerParameterf(int sampler, int pname, float param) { + iOSGL.glSamplerParameterf(sampler, pname, param); + } + + @Override + public void samplerParameterfv(int sampler, int pname, FloatBuffer param) { + iOSGL.glSamplerParameterfv(sampler, pname, param); + } + + @Override + public void getSamplerParameteriv(int sampler, int pname, IntBuffer params) { + iOSGL.glGetSamplerParameteriv(sampler, pname, params); + } + + @Override + public void getSamplerParameterfv(int sampler, int pname, FloatBuffer params) { + iOSGL.glGetSamplerParameterfv(sampler, pname, params); + } + + @Override + public void vertexAttribDivisor(int index, int divisor) { + iOSGL.glVertexAttribDivisor(index, divisor); + } + + @Override + public void bindTransformFeedback(int target, int id) { + iOSGL.glBindTransformFeedback(target, id); + } + + @Override + public void deleteTransformFeedbacks(int n, int[] ids, int offset) { + iOSGL.glDeleteTransformFeedbacks(n, ids, offset); + } + + @Override + public void deleteTransformFeedbacks(int n, IntBuffer ids) { + iOSGL.glDeleteTransformFeedbacks(n, ids); + } + + @Override + public void genTransformFeedbacks(int n, int[] ids, int offset) { + iOSGL.glGenTransformFeedbacks(n, ids, offset); + } + + @Override + public void genTransformFeedbacks(int n, IntBuffer ids) { + iOSGL.glGenTransformFeedbacks(n, ids); + } + + @Override + public boolean isTransformFeedback(int id) { + iOSGL.glIsTransformFeedback(id); + return false; + } + + @Override + public void pauseTransformFeedback() { + iOSGL.glPauseTransformFeedback(); + } + + @Override + public void resumeTransformFeedback() { + iOSGL.glResumeTransformFeedback(); + } + + @Override + public void programParameteri(int program, int pname, int value) { + iOSGL.glProgramParameteri(program, pname, value); + } + + @Override + public void invalidateFramebuffer(int target, int numAttachments, IntBuffer attachments) { + iOSGL.glInvalidateFramebuffer(target, numAttachments, attachments); + } + + @Override + public void invalidateSubFramebuffer(int target, int numAttachments, IntBuffer attachments, int x, int y, int width, int height) { + iOSGL.glInvalidateSubFramebuffer(target, numAttachments, attachments, + x, y, width, height); + } +} diff --git a/vtm/src/org/oscim/backend/GL30.java b/vtm/src/org/oscim/backend/GL30.java new file mode 100644 index 00000000..a9902a48 --- /dev/null +++ b/vtm/src/org/oscim/backend/GL30.java @@ -0,0 +1,1427 @@ +/* + * Copyright 2019 Gustl22 + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ + +/* + ** + ** Copyright 2013, The Android Open Source Project + ** + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** + ** http://www.apache.org/licenses/LICENSE-2.0 + ** + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + */ + +// This source file is automatically generated + +package org.oscim.backend; + +import java.nio.Buffer; + +/** + * OpenGL ES 3.0 + *

+ * See https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/GL30.java + */ +public interface GL30 extends GL { + public final int READ_BUFFER = 0x0C02; + public final int UNPACK_ROW_LENGTH = 0x0CF2; + public final int UNPACK_SKIP_ROWS = 0x0CF3; + public final int UNPACK_SKIP_PIXELS = 0x0CF4; + public final int PACK_ROW_LENGTH = 0x0D02; + public final int PACK_SKIP_ROWS = 0x0D03; + public final int PACK_SKIP_PIXELS = 0x0D04; + public final int COLOR = 0x1800; + public final int DEPTH = 0x1801; + public final int STENCIL = 0x1802; + public final int RED = 0x1903; + public final int RGB8 = 0x8051; + public final int RGBA8 = 0x8058; + public final int RGB10_A2 = 0x8059; + public final int TEXTURE_BINDING_3D = 0x806A; + public final int UNPACK_SKIP_IMAGES = 0x806D; + public final int UNPACK_IMAGE_HEIGHT = 0x806E; + public final int TEXTURE_3D = 0x806F; + public final int TEXTURE_WRAP_R = 0x8072; + public final int MAX_3D_TEXTURE_SIZE = 0x8073; + public final int UNSIGNED_INT_2_10_10_10_REV = 0x8368; + public final int MAX_ELEMENTS_VERTICES = 0x80E8; + public final int MAX_ELEMENTS_INDICES = 0x80E9; + public final int TEXTURE_MIN_LOD = 0x813A; + public final int TEXTURE_MAX_LOD = 0x813B; + public final int TEXTURE_BASE_LEVEL = 0x813C; + public final int TEXTURE_MAX_LEVEL = 0x813D; + public final int MIN = 0x8007; + public final int MAX = 0x8008; + public final int DEPTH_COMPONENT24 = 0x81A6; + public final int MAX_TEXTURE_LOD_BIAS = 0x84FD; + public final int TEXTURE_COMPARE_MODE = 0x884C; + public final int TEXTURE_COMPARE_FUNC = 0x884D; + public final int CURRENT_QUERY = 0x8865; + public final int QUERY_RESULT = 0x8866; + public final int QUERY_RESULT_AVAILABLE = 0x8867; + public final int BUFFER_MAPPED = 0x88BC; + public final int BUFFER_MAP_POINTER = 0x88BD; + public final int STREAM_READ = 0x88E1; + public final int STREAM_COPY = 0x88E2; + public final int STATIC_READ = 0x88E5; + public final int STATIC_COPY = 0x88E6; + public final int DYNAMIC_READ = 0x88E9; + public final int DYNAMIC_COPY = 0x88EA; + public final int MAX_DRAW_BUFFERS = 0x8824; + public final int DRAW_BUFFER0 = 0x8825; + public final int DRAW_BUFFER1 = 0x8826; + public final int DRAW_BUFFER2 = 0x8827; + public final int DRAW_BUFFER3 = 0x8828; + public final int DRAW_BUFFER4 = 0x8829; + public final int DRAW_BUFFER5 = 0x882A; + public final int DRAW_BUFFER6 = 0x882B; + public final int DRAW_BUFFER7 = 0x882C; + public final int DRAW_BUFFER8 = 0x882D; + public final int DRAW_BUFFER9 = 0x882E; + public final int DRAW_BUFFER10 = 0x882F; + public final int DRAW_BUFFER11 = 0x8830; + public final int DRAW_BUFFER12 = 0x8831; + public final int DRAW_BUFFER13 = 0x8832; + public final int DRAW_BUFFER14 = 0x8833; + public final int DRAW_BUFFER15 = 0x8834; + public final int MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + public final int MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + public final int SAMPLER_3D = 0x8B5F; + public final int SAMPLER_2D_SHADOW = 0x8B62; + public final int FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + public final int PIXEL_PACK_BUFFER = 0x88EB; + public final int PIXEL_UNPACK_BUFFER = 0x88EC; + public final int PIXEL_PACK_BUFFER_BINDING = 0x88ED; + public final int PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + public final int FLOAT_MAT2x3 = 0x8B65; + public final int FLOAT_MAT2x4 = 0x8B66; + public final int FLOAT_MAT3x2 = 0x8B67; + public final int FLOAT_MAT3x4 = 0x8B68; + public final int FLOAT_MAT4x2 = 0x8B69; + public final int FLOAT_MAT4x3 = 0x8B6A; + public final int SRGB = 0x8C40; + public final int SRGB8 = 0x8C41; + public final int SRGB8_ALPHA8 = 0x8C43; + public final int COMPARE_REF_TO_TEXTURE = 0x884E; + public final int MAJOR_VERSION = 0x821B; + public final int MINOR_VERSION = 0x821C; + public final int NUM_EXTENSIONS = 0x821D; + public final int RGBA32F = 0x8814; + public final int RGB32F = 0x8815; + public final int RGBA16F = 0x881A; + public final int RGB16F = 0x881B; + public final int VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + public final int MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + public final int MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + public final int MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + public final int MAX_VARYING_COMPONENTS = 0x8B4B; + public final int TEXTURE_2D_ARRAY = 0x8C1A; + public final int TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + public final int R11F_G11F_B10F = 0x8C3A; + public final int UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + public final int RGB9_E5 = 0x8C3D; + public final int UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + public final int TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; + public final int TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + public final int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + public final int TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + public final int TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + public final int TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + public final int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + public final int RASTERIZER_DISCARD = 0x8C89; + public final int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + public final int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + public final int INTERLEAVED_ATTRIBS = 0x8C8C; + public final int SEPARATE_ATTRIBS = 0x8C8D; + public final int TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + public final int TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + public final int RGBA32UI = 0x8D70; + public final int RGB32UI = 0x8D71; + public final int RGBA16UI = 0x8D76; + public final int RGB16UI = 0x8D77; + public final int RGBA8UI = 0x8D7C; + public final int RGB8UI = 0x8D7D; + public final int RGBA32I = 0x8D82; + public final int RGB32I = 0x8D83; + public final int RGBA16I = 0x8D88; + public final int RGB16I = 0x8D89; + public final int RGBA8I = 0x8D8E; + public final int RGB8I = 0x8D8F; + public final int RED_INTEGER = 0x8D94; + public final int RGB_INTEGER = 0x8D98; + public final int RGBA_INTEGER = 0x8D99; + public final int SAMPLER_2D_ARRAY = 0x8DC1; + public final int SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + public final int SAMPLER_CUBE_SHADOW = 0x8DC5; + public final int UNSIGNED_INT_VEC2 = 0x8DC6; + public final int UNSIGNED_INT_VEC3 = 0x8DC7; + public final int UNSIGNED_INT_VEC4 = 0x8DC8; + public final int INT_SAMPLER_2D = 0x8DCA; + public final int INT_SAMPLER_3D = 0x8DCB; + public final int INT_SAMPLER_CUBE = 0x8DCC; + public final int INT_SAMPLER_2D_ARRAY = 0x8DCF; + public final int UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + public final int UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + public final int UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + public final int UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + public final int BUFFER_ACCESS_FLAGS = 0x911F; + public final int BUFFER_MAP_LENGTH = 0x9120; + public final int BUFFER_MAP_OFFSET = 0x9121; + public final int DEPTH_COMPONENT32F = 0x8CAC; + public final int DEPTH32F_STENCIL8 = 0x8CAD; + public final int FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + public final int FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + public final int FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + public final int FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + public final int FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + public final int FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + public final int FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + public final int FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + public final int FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + public final int FRAMEBUFFER_DEFAULT = 0x8218; + public final int FRAMEBUFFER_UNDEFINED = 0x8219; + public final int DEPTH_STENCIL_ATTACHMENT = 0x821A; + public final int DEPTH_STENCIL = 0x84F9; + public final int UNSIGNED_INT_24_8 = 0x84FA; + public final int DEPTH24_STENCIL8 = 0x88F0; + public final int UNSIGNED_NORMALIZED = 0x8C17; + public final int DRAW_FRAMEBUFFER_BINDING = FRAMEBUFFER_BINDING; + public final int READ_FRAMEBUFFER = 0x8CA8; + public final int DRAW_FRAMEBUFFER = 0x8CA9; + public final int READ_FRAMEBUFFER_BINDING = 0x8CAA; + public final int RENDERBUFFER_SAMPLES = 0x8CAB; + public final int FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + public final int MAX_COLOR_ATTACHMENTS = 0x8CDF; + public final int COLOR_ATTACHMENT1 = 0x8CE1; + public final int COLOR_ATTACHMENT2 = 0x8CE2; + public final int COLOR_ATTACHMENT3 = 0x8CE3; + public final int COLOR_ATTACHMENT4 = 0x8CE4; + public final int COLOR_ATTACHMENT5 = 0x8CE5; + public final int COLOR_ATTACHMENT6 = 0x8CE6; + public final int COLOR_ATTACHMENT7 = 0x8CE7; + public final int COLOR_ATTACHMENT8 = 0x8CE8; + public final int COLOR_ATTACHMENT9 = 0x8CE9; + public final int COLOR_ATTACHMENT10 = 0x8CEA; + public final int COLOR_ATTACHMENT11 = 0x8CEB; + public final int COLOR_ATTACHMENT12 = 0x8CEC; + public final int COLOR_ATTACHMENT13 = 0x8CED; + public final int COLOR_ATTACHMENT14 = 0x8CEE; + public final int COLOR_ATTACHMENT15 = 0x8CEF; + public final int FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + public final int MAX_SAMPLES = 0x8D57; + public final int HALF_FLOAT = 0x140B; + public final int MAP_READ_BIT = 0x0001; + public final int MAP_WRITE_BIT = 0x0002; + public final int MAP_INVALIDATE_RANGE_BIT = 0x0004; + public final int MAP_INVALIDATE_BUFFER_BIT = 0x0008; + public final int MAP_FLUSH_EXPLICIT_BIT = 0x0010; + public final int MAP_UNSYNCHRONIZED_BIT = 0x0020; + public final int RG = 0x8227; + public final int RG_INTEGER = 0x8228; + public final int R8 = 0x8229; + public final int RG8 = 0x822B; + public final int R16F = 0x822D; + public final int R32F = 0x822E; + public final int RG16F = 0x822F; + public final int RG32F = 0x8230; + public final int R8I = 0x8231; + public final int R8UI = 0x8232; + public final int R16I = 0x8233; + public final int R16UI = 0x8234; + public final int R32I = 0x8235; + public final int R32UI = 0x8236; + public final int RG8I = 0x8237; + public final int RG8UI = 0x8238; + public final int RG16I = 0x8239; + public final int RG16UI = 0x823A; + public final int RG32I = 0x823B; + public final int RG32UI = 0x823C; + public final int VERTEX_ARRAY_BINDING = 0x85B5; + public final int R8_SNORM = 0x8F94; + public final int RG8_SNORM = 0x8F95; + public final int RGB8_SNORM = 0x8F96; + public final int RGBA8_SNORM = 0x8F97; + public final int SIGNED_NORMALIZED = 0x8F9C; + public final int PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69; + public final int COPY_READ_BUFFER = 0x8F36; + public final int COPY_WRITE_BUFFER = 0x8F37; + public final int COPY_READ_BUFFER_BINDING = COPY_READ_BUFFER; + public final int COPY_WRITE_BUFFER_BINDING = COPY_WRITE_BUFFER; + public final int UNIFORM_BUFFER = 0x8A11; + public final int UNIFORM_BUFFER_BINDING = 0x8A28; + public final int UNIFORM_BUFFER_START = 0x8A29; + public final int UNIFORM_BUFFER_SIZE = 0x8A2A; + public final int MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + public final int MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + public final int MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + public final int MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + public final int MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + public final int MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + public final int MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + public final int UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + public final int ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; + public final int ACTIVE_UNIFORM_BLOCKS = 0x8A36; + public final int UNIFORM_TYPE = 0x8A37; + public final int UNIFORM_SIZE = 0x8A38; + public final int UNIFORM_NAME_LENGTH = 0x8A39; + public final int UNIFORM_BLOCK_INDEX = 0x8A3A; + public final int UNIFORM_OFFSET = 0x8A3B; + public final int UNIFORM_ARRAY_STRIDE = 0x8A3C; + public final int UNIFORM_MATRIX_STRIDE = 0x8A3D; + public final int UNIFORM_IS_ROW_MAJOR = 0x8A3E; + public final int UNIFORM_BLOCK_BINDING = 0x8A3F; + public final int UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + public final int UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; + public final int UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + public final int UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + public final int UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + public final int UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + // INVALID_INDEX is defined as 0xFFFFFFFFu in C. + public final int INVALID_INDEX = -1; + public final int MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + public final int MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + public final int MAX_SERVER_WAIT_TIMEOUT = 0x9111; + public final int OBJECT_TYPE = 0x9112; + public final int SYNC_CONDITION = 0x9113; + public final int SYNC_STATUS = 0x9114; + public final int SYNC_FLAGS = 0x9115; + public final int SYNC_FENCE = 0x9116; + public final int SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + public final int UNSIGNALED = 0x9118; + public final int SIGNALED = 0x9119; + public final int ALREADY_SIGNALED = 0x911A; + public final int TIMEOUT_EXPIRED = 0x911B; + public final int CONDITION_SATISFIED = 0x911C; + public final int WAIT_FAILED = 0x911D; + public final int SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + // TIMEOUT_IGNORED is defined as 0xFFFFFFFFFFFFFFFFull in C. + public final long TIMEOUT_IGNORED = -1; + public final int VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + public final int ANY_SAMPLES_PASSED = 0x8C2F; + public final int ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + public final int SAMPLER_BINDING = 0x8919; + public final int RGB10_A2UI = 0x906F; + public final int TEXTURE_SWIZZLE_R = 0x8E42; + public final int TEXTURE_SWIZZLE_G = 0x8E43; + public final int TEXTURE_SWIZZLE_B = 0x8E44; + public final int TEXTURE_SWIZZLE_A = 0x8E45; + public final int GREEN = 0x1904; + public final int BLUE = 0x1905; + public final int INT_2_10_10_10_REV = 0x8D9F; + public final int TRANSFORM_FEEDBACK = 0x8E22; + public final int TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + public final int TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + public final int TRANSFORM_FEEDBACK_BINDING = 0x8E25; + public final int PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; + public final int PROGRAM_BINARY_LENGTH = 0x8741; + public final int NUM_PROGRAM_BINARY_FORMATS = 0x87FE; + public final int PROGRAM_BINARY_FORMATS = 0x87FF; + public final int COMPRESSED_R11_EAC = 0x9270; + public final int COMPRESSED_SIGNED_R11_EAC = 0x9271; + public final int COMPRESSED_RG11_EAC = 0x9272; + public final int COMPRESSED_SIGNED_RG11_EAC = 0x9273; + public final int COMPRESSED_RGB8_ETC2 = 0x9274; + public final int COMPRESSED_SRGB8_ETC2 = 0x9275; + public final int COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + public final int COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + public final int COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + public final int COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; + public final int TEXTURE_IMMUTABLE_FORMAT = 0x912F; + public final int MAX_ELEMENT_INDEX = 0x8D6B; + public final int NUM_SAMPLE_COUNTS = 0x9380; + public final int TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + + // C function void readBuffer ( GLenum mode ) + + public void readBuffer(int mode); + + // C function void drawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid +// *indices ) + + public void drawRangeElements(int mode, int start, int end, int count, int type, java.nio.Buffer indices); + + // C function void drawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) + + public void drawRangeElements(int mode, int start, int end, int count, int type, int offset); + + // C function void texImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei +// depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) + + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, java.nio.Buffer pixels); + + // C function void texImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei +// depth, GLint border, GLenum format, GLenum type, GLsizei offset ) + + public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, + int type, int offset); + + // C function void texSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, +// GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels ) + + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, java.nio.Buffer pixels); + + // C function void texSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, +// GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei offset ) + + public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, + int format, int type, int offset); + + // C function void copyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, +// GLint y, GLsizei width, GLsizei height ) + + public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, + int height); + +// // C function void compressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, +// GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) +// +// public void compressedTexImage3D ( +// int target, +// int level, +// int internalformat, +// int width, +// int height, +// int depth, +// int border, +// int imageSize, +// java.nio.Buffer data +// ); +// +// // C function void compressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, +// GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) +// +// public void compressedTexImage3D ( +// int target, +// int level, +// int internalformat, +// int width, +// int height, +// int depth, +// int border, +// int imageSize, +// int offset +// ); +// +// // C function void compressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei +// width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) +// +// public void compressedTexSubImage3D ( +// int target, +// int level, +// int xoffset, +// int yoffset, +// int zoffset, +// int width, +// int height, +// int depth, +// int format, +// int imageSize, +// java.nio.Buffer data +// ); +// +// // C function void compressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei +// width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLsizei offset ) +// +// public void compressedTexSubImage3D ( +// int target, +// int level, +// int xoffset, +// int yoffset, +// int zoffset, +// int width, +// int height, +// int depth, +// int format, +// int imageSize, +// int offset +// ); + + // C function void genQueries ( GLsizei n, GLuint *ids ) + + public void genQueries(int n, int[] ids, int offset); + + // C function void genQueries ( GLsizei n, GLuint *ids ) + + public void genQueries(int n, java.nio.IntBuffer ids); + + // C function void deleteQueries ( GLsizei n, const GLuint *ids ) + + public void deleteQueries(int n, int[] ids, int offset); + + // C function void deleteQueries ( GLsizei n, const GLuint *ids ) + + public void deleteQueries(int n, java.nio.IntBuffer ids); + + // C function boolean glIsQuery ( GLuint id ) + + public boolean isQuery(int id); + + // C function void beginQuery ( GLenum target, GLuint id ) + + public void beginQuery(int target, int id); + + // C function void endQuery ( GLenum target ) + + public void endQuery(int target); + +// // C function void getQueryiv ( GLenum target, GLenum pname, GLint *params ) +// +// public void getQueryiv ( +// int target, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getQueryiv ( GLenum target, GLenum pname, GLint *params ) + + public void getQueryiv(int target, int pname, java.nio.IntBuffer params); + +// // C function void getQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) +// +// public void getQueryObjectuiv ( +// int id, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) + + public void getQueryObjectuiv(int id, int pname, java.nio.IntBuffer params); + + // C function boolean glUnmapBuffer ( GLenum target ) + + public boolean unmapBuffer(int target); + + // C function void getBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) + + public java.nio.Buffer getBufferPointerv(int target, int pname); + +// // C function void drawBuffers ( GLsizei n, const GLenum *bufs ) +// +// public void drawBuffers ( +// int n, +// int[] bufs, +// int offset +// ); + + // C function void drawBuffers ( GLsizei n, const GLenum *bufs ) + + public void drawBuffers(int n, java.nio.IntBuffer bufs); + +// // C function void uniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix2x3fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + +// // C function void uniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix3x2fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + +// // C function void uniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix2x4fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + +// // C function void uniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix4x2fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + +// // C function void uniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix3x4fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + +// // C function void uniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) +// +// public void uniformMatrix4x3fv ( +// int location, +// int count, +// boolean transpose, +// float[] value, +// int offset +// ); + + // C function void uniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) + + public void uniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); + + // C function void blitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint +// dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) + + public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, + int mask, int filter); + + // C function void renderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, +// GLsizei height ) + + public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height); + + // C function void framebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) + + public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer); + +// // C function void * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) +// +// public java.nio.Buffer mapBufferRange ( +// int target, +// int offset, +// int length, +// int access +// ); + + // C function void flushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) + + public void flushMappedBufferRange(int target, int offset, int length); + + // C function void bindVertexArray ( GLuint array ) + + public void bindVertexArray(int array); + + // C function void deleteVertexArrays ( GLsizei n, const GLuint *arrays ) + + public void deleteVertexArrays(int n, int[] arrays, int offset); + + // C function void deleteVertexArrays ( GLsizei n, const GLuint *arrays ) + + public void deleteVertexArrays(int n, java.nio.IntBuffer arrays); + + // C function void genVertexArrays ( GLsizei n, GLuint *arrays ) + + public void genVertexArrays(int n, int[] arrays, int offset); + + // C function void genVertexArrays ( GLsizei n, GLuint *arrays ) + + public void genVertexArrays(int n, java.nio.IntBuffer arrays); + + // C function boolean glIsVertexArray ( GLuint array ) + + public boolean isVertexArray(int array); + +// +// // C function void getIntegeri_v ( GLenum target, GLuint index, GLint *data ) +// +// public void getIntegeri_v ( +// int target, +// int index, +// int[] data, +// int offset +// ); +// +// // C function void getIntegeri_v ( GLenum target, GLuint index, GLint *data ) +// +// public void getIntegeri_v ( +// int target, +// int index, +// java.nio.IntBuffer data +// ); + + // C function void beginTransformFeedback ( GLenum primitiveMode ) + + public void beginTransformFeedback(int primitiveMode); + + // C function void endTransformFeedback ( void ) + + public void endTransformFeedback(); + + // C function void bindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) + + public void bindBufferRange(int target, int index, int buffer, int offset, int size); + + // C function void bindBufferBase ( GLenum target, GLuint index, GLuint buffer ) + + public void bindBufferBase(int target, int index, int buffer); + + // C function void transformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) + + public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode); + +// // C function void getTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, +// GLenum *type, GLchar *name ) +// +// public void getTransformFeedbackVarying ( +// int program, +// int index, +// int bufsize, +// int[] length, +// int lengthOffset, +// int[] size, +// int sizeOffset, +// int[] type, +// int typeOffset, +// byte[] name, +// int nameOffset +// ); +// +// // C function void getTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, +// GLenum *type, GLchar *name ) +// +// public void getTransformFeedbackVarying ( +// int program, +// int index, +// int bufsize, +// java.nio.IntBuffer length, +// java.nio.IntBuffer size, +// java.nio.IntBuffer type, +// byte name +// ); +// +// // C function void getTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, +// GLenum *type, GLchar *name ) +// +// public String getTransformFeedbackVarying ( +// int program, +// int index, +// int[] size, +// int sizeOffset, +// int[] type, +// int typeOffset +// ); +// +// // C function void getTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, +// GLenum *type, GLchar *name ) +// +// public String getTransformFeedbackVarying ( +// int program, +// int index, +// java.nio.IntBuffer size, +// java.nio.IntBuffer type +// ); + + // C function void vertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) + + public void vertexAttribIPointer(int index, int size, int type, int stride, int offset); + +// // C function void getVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) +// +// public void getVertexAttribIiv ( +// int index, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) + + public void getVertexAttribIiv(int index, int pname, java.nio.IntBuffer params); + +// // C function void getVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) +// +// public void getVertexAttribIuiv ( +// int index, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) + + public void getVertexAttribIuiv(int index, int pname, java.nio.IntBuffer params); + + // C function void vertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) + + public void vertexAttribI4i(int index, int x, int y, int z, int w); + + // C function void vertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) + + public void vertexAttribI4ui(int index, int x, int y, int z, int w); + +// // C function void vertexAttribI4iv ( GLuint index, const GLint *v ) +// +// public void vertexAttribI4iv ( +// int index, +// int[] v, +// int offset +// ); +// +// // C function void vertexAttribI4iv ( GLuint index, const GLint *v ) +// +// public void vertexAttribI4iv ( +// int index, +// java.nio.IntBuffer v +// ); +// +// // C function void vertexAttribI4uiv ( GLuint index, const GLuint *v ) +// +// public void vertexAttribI4uiv ( +// int index, +// int[] v, +// int offset +// ); +// +// // C function void vertexAttribI4uiv ( GLuint index, const GLuint *v ) +// +// public void vertexAttribI4uiv ( +// int index, +// java.nio.IntBuffer v +// ); +// +// // C function void getUniformuiv ( GLuint program, GLint location, GLuint *params ) +// +// public void getUniformuiv ( +// int program, +// int location, +// int[] params, +// int offset +// ); + + // C function void getUniformuiv ( GLuint program, GLint location, GLuint *params ) + + public void getUniformuiv(int program, int location, java.nio.IntBuffer params); + + // C function int glGetFragDataLocation ( GLuint program, const GLchar *name ) + + public int getFragDataLocation(int program, String name); + +// // C function void uniform1ui ( GLint location, GLuint v0 ) +// +// public void uniform1ui ( +// int location, +// int v0 +// ); +// +// // C function void uniform2ui ( GLint location, GLuint v0, GLuint v1 ) +// +// public void uniform2ui ( +// int location, +// int v0, +// int v1 +// ); +// +// // C function void uniform3ui ( GLint location, GLuint v0, GLuint v1, GLuint v2 ) +// +// public void uniform3ui ( +// int location, +// int v0, +// int v1, +// int v2 +// ); +// +// // C function void uniform4ui ( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) +// +// public void uniform4ui ( +// int location, +// int v0, +// int v1, +// int v2, +// int v3 +// ); +// +// // C function void uniform1uiv ( GLint location, GLsizei count, const GLuint *value ) +// +// public void uniform1uiv ( +// int location, +// int count, +// int[] value, +// int offset +// ); + + // C function void uniform1uiv ( GLint location, GLsizei count, const GLuint *value ) + + public void uniform1uiv(int location, int count, java.nio.IntBuffer value); + +// // C function void uniform2uiv ( GLint location, GLsizei count, const GLuint *value ) +// +// public void uniform2uiv ( +// int location, +// int count, +// int[] value, +// int offset +// ); +// +// // C function void uniform2uiv ( GLint location, GLsizei count, const GLuint *value ) +// +// public void uniform2uiv ( +// int location, +// int count, +// java.nio.IntBuffer value +// ); +// +// // C function void uniform3uiv ( GLint location, GLsizei count, const GLuint *value ) +// +// public void uniform3uiv ( +// int location, +// int count, +// int[] value, +// int offset +// ); + + // C function void uniform3uiv ( GLint location, GLsizei count, const GLuint *value ) + + public void uniform3uiv(int location, int count, java.nio.IntBuffer value); + +// // C function void uniform4uiv ( GLint location, GLsizei count, const GLuint *value ) +// +// public void uniform4uiv ( +// int location, +// int count, +// int[] value, +// int offset +// ); + + // C function void uniform4uiv ( GLint location, GLsizei count, const GLuint *value ) + + public void uniform4uiv(int location, int count, java.nio.IntBuffer value); + +// // C function void clearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) +// +// public void clearBufferiv ( +// int buffer, +// int drawbuffer, +// int[] value, +// int offset +// ); + + // C function void clearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) + + public void clearBufferiv(int buffer, int drawbuffer, java.nio.IntBuffer value); + +// // C function void clearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) +// +// public void clearBufferuiv ( +// int buffer, +// int drawbuffer, +// int[] value, +// int offset +// ); + + // C function void clearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) + + public void clearBufferuiv(int buffer, int drawbuffer, java.nio.IntBuffer value); + +// // C function void clearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) +// +// public void clearBufferfv ( +// int buffer, +// int drawbuffer, +// float[] value, +// int offset +// ); + + // C function void clearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) + + public void clearBufferfv(int buffer, int drawbuffer, java.nio.FloatBuffer value); + + // C function void clearBufferfi ( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) + + public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil); + + // C function const ubyte * glGetStringi ( GLenum name, GLuint index ) + + public String getStringi(int name, int index); + + // C function void copyBufferSubData ( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, +// GLsizeiptr size ) + + public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size); + +// // C function void getUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint +// *uniformIndices ) +// +// public void getUniformIndices ( +// int program, +// String[] uniformNames, +// int[] uniformIndices, +// int uniformIndicesOffset +// ); + + // C function void getUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint +// *uniformIndices ) + + public void getUniformIndices(int program, String[] uniformNames, java.nio.IntBuffer uniformIndices); + +// // C function void getActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, +// GLint *params ) +// +// public void getActiveUniformsiv ( +// int program, +// int uniformCount, +// int[] uniformIndices, +// int uniformIndicesOffset, +// int pname, +// int[] params, +// int paramsOffset +// ); + + // C function void getActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, +// GLint *params ) + + public void getActiveUniformsiv(int program, int uniformCount, java.nio.IntBuffer uniformIndices, int pname, + java.nio.IntBuffer params); + + // C function uint glGetUniformBlockIndex ( GLuint program, const GLchar *uniformBlockName ) + + public int getUniformBlockIndex(int program, String uniformBlockName); + +// // C function void getActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) +// +// public void getActiveUniformBlockiv ( +// int program, +// int uniformBlockIndex, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) + + public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, java.nio.IntBuffer params); + +// // C function void getActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, +// GLchar *uniformBlockName ) +// +// public void getActiveUniformBlockName ( +// int program, +// int uniformBlockIndex, +// int bufSize, +// int[] length, +// int lengthOffset, +// byte[] uniformBlockName, +// int uniformBlockNameOffset +// ); + + // C function void getActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, +// GLchar *uniformBlockName ) + + public void getActiveUniformBlockName(int program, int uniformBlockIndex, java.nio.Buffer length, + java.nio.Buffer uniformBlockName); + + // C function void getActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, +// GLchar *uniformBlockName ) + + public String getActiveUniformBlockName(int program, int uniformBlockIndex); + + // C function void uniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) + + public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding); + + // C function void drawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) + + public void drawArraysInstanced(int mode, int first, int count, int instanceCount); + +// // C function void drawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei +// instanceCount ) +// +// public void drawElementsInstanced ( +// int mode, +// int count, +// int type, +// java.nio.Buffer indices, +// int instanceCount +// ); + + // C function void drawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei +// instanceCount ) + + public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount); + +// // C function sync glFenceSync ( GLenum condition, GLbitfield flags ) +// +// public long fenceSync ( +// int condition, +// int flags +// ); +// +// // C function boolean glIsSync ( GLsync sync ) +// +// public boolean isSync ( +// long sync +// ); +// +// // C function void deleteSync ( GLsync sync ) +// +// public void deleteSync ( +// long sync +// ); +// +// // C function enum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) +// +// public int clientWaitSync ( +// long sync, +// int flags, +// long timeout +// ); +// +// // C function void waitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) +// +// public void waitSync ( +// long sync, +// int flags, +// long timeout +// ); + +// // C function void getInteger64v ( GLenum pname, GLint64 *params ) +// +// public void getInteger64v ( +// int pname, +// long[] params, +// int offset +// ); + + // C function void getInteger64v ( GLenum pname, GLint64 *params ) + + public void getInteger64v(int pname, java.nio.LongBuffer params); + +// // C function void getSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) +// +// public void getSynciv ( +// long sync, +// int pname, +// int bufSize, +// int[] length, +// int lengthOffset, +// int[] values, +// int valuesOffset +// ); +// +// // C function void getSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) +// +// public void getSynciv ( +// long sync, +// int pname, +// int bufSize, +// java.nio.IntBuffer length, +// java.nio.IntBuffer values +// ); +// +// // C function void getInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) +// +// public void getInteger64i_v ( +// int target, +// int index, +// long[] data, +// int offset +// ); +// +// // C function void getInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) +// +// public void getInteger64i_v ( +// int target, +// int index, +// java.nio.LongBuffer data +// ); +// +// // C function void getBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) +// +// public void getBufferParameteri64v ( +// int target, +// int pname, +// long[] params, +// int offset +// ); + + // C function void getBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) + + public void getBufferParameteri64v(int target, int pname, java.nio.LongBuffer params); + + // C function void genSamplers ( GLsizei count, GLuint *samplers ) + + public void genSamplers(int count, int[] samplers, int offset); + + // C function void genSamplers ( GLsizei count, GLuint *samplers ) + + public void genSamplers(int count, java.nio.IntBuffer samplers); + + // C function void deleteSamplers ( GLsizei count, const GLuint *samplers ) + + public void deleteSamplers(int count, int[] samplers, int offset); + + // C function void deleteSamplers ( GLsizei count, const GLuint *samplers ) + + public void deleteSamplers(int count, java.nio.IntBuffer samplers); + + // C function boolean glIsSampler ( GLuint sampler ) + + public boolean isSampler(int sampler); + + // C function void bindSampler ( GLuint unit, GLuint sampler ) + + public void bindSampler(int unit, int sampler); + + // C function void samplerParameteri ( GLuint sampler, GLenum pname, GLint param ) + + public void samplerParameteri(int sampler, int pname, int param); + +// // C function void samplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) +// +// public void samplerParameteriv ( +// int sampler, +// int pname, +// int[] param, +// int offset +// ); + + // C function void samplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) + + public void samplerParameteriv(int sampler, int pname, java.nio.IntBuffer param); + + // C function void samplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) + + public void samplerParameterf(int sampler, int pname, float param); + +// // C function void samplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) +// +// public void samplerParameterfv ( +// int sampler, +// int pname, +// float[] param, +// int offset +// ); + + // C function void samplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) + + public void samplerParameterfv(int sampler, int pname, java.nio.FloatBuffer param); + +// // C function void getSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) +// +// public void getSamplerParameteriv ( +// int sampler, +// int pname, +// int[] params, +// int offset +// ); + + // C function void getSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) + + public void getSamplerParameteriv(int sampler, int pname, java.nio.IntBuffer params); + +// // C function void getSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) +// +// public void getSamplerParameterfv ( +// int sampler, +// int pname, +// float[] params, +// int offset +// ); + + // C function void getSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) + + public void getSamplerParameterfv(int sampler, int pname, java.nio.FloatBuffer params); + + // C function void vertexAttribDivisor ( GLuint index, GLuint divisor ) + + public void vertexAttribDivisor(int index, int divisor); + + // C function void bindTransformFeedback ( GLenum target, GLuint id ) + + public void bindTransformFeedback(int target, int id); + + // C function void deleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) + + public void deleteTransformFeedbacks(int n, int[] ids, int offset); + + // C function void deleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) + + public void deleteTransformFeedbacks(int n, java.nio.IntBuffer ids); + + // C function void genTransformFeedbacks ( GLsizei n, GLuint *ids ) + + public void genTransformFeedbacks(int n, int[] ids, int offset); + + // C function void genTransformFeedbacks ( GLsizei n, GLuint *ids ) + + public void genTransformFeedbacks(int n, java.nio.IntBuffer ids); + + // C function boolean glIsTransformFeedback ( GLuint id ) + + public boolean isTransformFeedback(int id); + + // C function void pauseTransformFeedback ( void ) + + public void pauseTransformFeedback(); + + // C function void resumeTransformFeedback ( void ) + + public void resumeTransformFeedback(); + +// // C function void getProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary +// ) +// +// public void getProgramBinary ( +// int program, +// int bufSize, +// int[] length, +// int lengthOffset, +// int[] binaryFormat, +// int binaryFormatOffset, +// java.nio.Buffer binary +// ); +// +// // C function void getProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary +// ) +// +// public void getProgramBinary ( +// int program, +// int bufSize, +// java.nio.IntBuffer length, +// java.nio.IntBuffer binaryFormat, +// java.nio.Buffer binary +// ); +// +// // C function void programBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) +// +// public void programBinary ( +// int program, +// int binaryFormat, +// java.nio.Buffer binary, +// int length +// ); + + // C function void programParameteri ( GLuint program, GLenum pname, GLint value ) + + public void programParameteri(int program, int pname, int value); + +// // C function void invalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) +// +// public void invalidateFramebuffer ( +// int target, +// int numAttachments, +// int[] attachments, +// int offset +// ); + + // C function void invalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) + + public void invalidateFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments); + +// // C function void invalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, +// GLint y, GLsizei width, GLsizei height ) +// +// public void invalidateSubFramebuffer ( +// int target, +// int numAttachments, +// int[] attachments, +// int offset, +// int x, +// int y, +// int width, +// int height +// ); + + // C function void invalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, +// GLint y, GLsizei width, GLsizei height ) + + public void invalidateSubFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments, int x, int y, + int width, int height); + +// // C function void texStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) +// +// public void texStorage2D ( +// int target, +// int levels, +// int internalformat, +// int width, +// int height +// ); +// +// // C function void texStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, +// GLsizei depth ) +// +// public void texStorage3D ( +// int target, +// int levels, +// int internalformat, +// int width, +// int height, +// int depth +// ); +// +// // C function void getInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) +// +// public void getInternalformativ ( +// int target, +// int internalformat, +// int pname, +// int bufSize, +// int[] params, +// int offset +// ); +// +// // C function void getInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) +// +// public void getInternalformativ ( +// int target, +// int internalformat, +// int pname, +// int bufSize, +// java.nio.IntBuffer params +// ); + + @Override + @Deprecated + /** + * In Open core profiles (3.1+), passing a pointer to client memory is not valid. + * Use the other version of this function instead, pass a zero-based offset which references + * the buffer currently bound to ARRAY_BUFFER. + */ + void vertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, Buffer ptr); +}