mJoystickDataList) {
this.mControlDataList = mControlDataList;
this.mDrawerDataList = mDrawerDataList;
- this.scaledAt = 100f;
+ this.mJoystickDataList = mJoystickDataList;
+ this.scaledAt = 100f;
}
// Generate default control
@@ -51,14 +53,14 @@ public class CustomControls {
this.mControlDataList.add(shiftData);
this.mControlDataList.add(new ControlData(ctx, R.string.control_jump, new int[]{LwjglGlfwKeycode.GLFW_KEY_SPACE}, "${right} - ${margin} * 2 - ${width}", "${bottom} - ${margin} * 2 - ${height}", true));
- //The default controls are conform to the V2
- version = 4;
+ //The default controls are conform to the V3
+ version = 6;
}
public void save(String path) throws IOException {
- //Current version is the V2.5 so the version as to be marked as 4 !
- version = 4;
+ //Current version is the V3.0 so the version as to be marked as 6 !
+ version = 6;
Tools.write(path, Tools.GLOBAL_GSON.toJson(this));
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/LayoutConverter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/LayoutConverter.java
index d8e20a907..89786b011 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/LayoutConverter.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/LayoutConverter.java
@@ -20,105 +20,159 @@ public class LayoutConverter {
try {
JSONObject layoutJobj = new JSONObject(jsonLayoutData);
- if(!layoutJobj.has("version")) { //v1 layout
+ if (!layoutJobj.has("version")) { //v1 layout
CustomControls layout = LayoutConverter.convertV1Layout(layoutJobj);
layout.save(jsonPath);
return layout;
- }else if (layoutJobj.getInt("version") == 2) {
+ } else if (layoutJobj.getInt("version") == 2) {
CustomControls layout = LayoutConverter.convertV2Layout(layoutJobj);
layout.save(jsonPath);
return layout;
- }else if (layoutJobj.getInt("version") == 3 || layoutJobj.getInt("version") == 4) {
+ }else if (layoutJobj.getInt("version") >= 3 && layoutJobj.getInt("version") <= 5) {
+ return LayoutConverter.convertV3_4Layout(layoutJobj);
+ } else if (layoutJobj.getInt("version") == 6) {
return Tools.GLOBAL_GSON.fromJson(jsonLayoutData, CustomControls.class);
- }else{
+ } else {
return null;
}
- }catch (JSONException e) {
- throw new JsonSyntaxException("Failed to load",e);
+ } catch (JSONException e) {
+ throw new JsonSyntaxException("Failed to load", e);
}
}
+
+
+ /**
+ * Normalize the layout to v6 from v3/4: The stroke width is no longer dependant on the button size
+ */
+ public static CustomControls convertV3_4Layout(JSONObject oldLayoutJson) {
+ CustomControls layout = Tools.GLOBAL_GSON.fromJson(oldLayoutJson.toString(), CustomControls.class);
+ convertStrokeWidth(layout);
+ layout.version = 6;
+ return layout;
+ }
+
+
public static CustomControls convertV2Layout(JSONObject oldLayoutJson) throws JSONException {
CustomControls layout = Tools.GLOBAL_GSON.fromJson(oldLayoutJson.toString(), CustomControls.class);
JSONArray layoutMainArray = oldLayoutJson.getJSONArray("mControlDataList");
layout.mControlDataList = new ArrayList<>(layoutMainArray.length());
- for(int i = 0; i < layoutMainArray.length(); i++) {
+ for (int i = 0; i < layoutMainArray.length(); i++) {
JSONObject button = layoutMainArray.getJSONObject(i);
ControlData n_button = Tools.GLOBAL_GSON.fromJson(button.toString(), ControlData.class);
- if(!Tools.isValidString(n_button.dynamicX) && button.has("x")) {
+ if (!Tools.isValidString(n_button.dynamicX) && button.has("x")) {
double buttonC = button.getDouble("x");
- double ratio = buttonC/CallbackBridge.physicalWidth;
+ double ratio = buttonC / CallbackBridge.physicalWidth;
n_button.dynamicX = ratio + " * ${screen_width}";
}
- if(!Tools.isValidString(n_button.dynamicY) && button.has("y")) {
+ if (!Tools.isValidString(n_button.dynamicY) && button.has("y")) {
double buttonC = button.getDouble("y");
- double ratio = buttonC/CallbackBridge.physicalHeight;
+ double ratio = buttonC / CallbackBridge.physicalHeight;
n_button.dynamicY = ratio + " * ${screen_height}";
}
layout.mControlDataList.add(n_button);
}
JSONArray layoutDrawerArray = oldLayoutJson.getJSONArray("mDrawerDataList");
layout.mDrawerDataList = new ArrayList<>();
- for(int i = 0; i < layoutDrawerArray.length(); i++) {
+ for (int i = 0; i < layoutDrawerArray.length(); i++) {
JSONObject button = layoutDrawerArray.getJSONObject(i);
JSONObject buttonProperties = button.getJSONObject("properties");
ControlDrawerData n_button = Tools.GLOBAL_GSON.fromJson(button.toString(), ControlDrawerData.class);
- if(!Tools.isValidString(n_button.properties.dynamicX) && buttonProperties.has("x")) {
+ if (!Tools.isValidString(n_button.properties.dynamicX) && buttonProperties.has("x")) {
double buttonC = buttonProperties.getDouble("x");
- double ratio = buttonC/CallbackBridge.physicalWidth;
+ double ratio = buttonC / CallbackBridge.physicalWidth;
n_button.properties.dynamicX = ratio + " * ${screen_width}";
}
- if(!Tools.isValidString(n_button.properties.dynamicY) && buttonProperties.has("y")) {
+ if (!Tools.isValidString(n_button.properties.dynamicY) && buttonProperties.has("y")) {
double buttonC = buttonProperties.getDouble("y");
- double ratio = buttonC/CallbackBridge.physicalHeight;
+ double ratio = buttonC / CallbackBridge.physicalHeight;
n_button.properties.dynamicY = ratio + " * ${screen_height}";
}
layout.mDrawerDataList.add(n_button);
}
+ convertStrokeWidth(layout);
+
layout.version = 3;
return layout;
}
+
public static CustomControls convertV1Layout(JSONObject oldLayoutJson) throws JSONException {
CustomControls empty = new CustomControls();
JSONArray layoutMainArray = oldLayoutJson.getJSONArray("mControlDataList");
- for(int i = 0; i < layoutMainArray.length(); i++) {
+ for (int i = 0; i < layoutMainArray.length(); i++) {
JSONObject button = layoutMainArray.getJSONObject(i);
ControlData n_button = new ControlData();
- int[] keycodes = new int[] {LwjglGlfwKeycode.GLFW_KEY_UNKNOWN,
+ int[] keycodes = new int[]{LwjglGlfwKeycode.GLFW_KEY_UNKNOWN,
LwjglGlfwKeycode.GLFW_KEY_UNKNOWN,
LwjglGlfwKeycode.GLFW_KEY_UNKNOWN,
LwjglGlfwKeycode.GLFW_KEY_UNKNOWN};
n_button.isDynamicBtn = button.getBoolean("isDynamicBtn");
n_button.dynamicX = button.getString("dynamicX");
n_button.dynamicY = button.getString("dynamicY");
- if(!Tools.isValidString(n_button.dynamicX) && button.has("x")) {
+ if (!Tools.isValidString(n_button.dynamicX) && button.has("x")) {
double buttonC = button.getDouble("x");
- double ratio = buttonC/CallbackBridge.physicalWidth;
+ double ratio = buttonC / CallbackBridge.physicalWidth;
n_button.dynamicX = ratio + " * ${screen_width}";
}
- if(!Tools.isValidString(n_button.dynamicY) && button.has("y")) {
+ if (!Tools.isValidString(n_button.dynamicY) && button.has("y")) {
double buttonC = button.getDouble("y");
- double ratio = buttonC/CallbackBridge.physicalHeight;
+ double ratio = buttonC / CallbackBridge.physicalHeight;
n_button.dynamicY = ratio + " * ${screen_height}";
}
n_button.name = button.getString("name");
- n_button.opacity = ((float)((button.getInt("transparency")-100)*-1))/100f;
+ n_button.opacity = ((float) ((button.getInt("transparency") - 100) * -1)) / 100f;
n_button.passThruEnabled = button.getBoolean("passThruEnabled");
n_button.isToggle = button.getBoolean("isToggle");
n_button.setHeight(button.getInt("height"));
n_button.setWidth(button.getInt("width"));
n_button.bgColor = 0x4d000000;
n_button.strokeWidth = 0;
- if(button.getBoolean("isRound")) { n_button.cornerRadius = 35f; }
+ if (button.getBoolean("isRound")) {
+ n_button.cornerRadius = 35f;
+ }
int next_idx = 0;
- if(button.getBoolean("holdShift")) { keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_SHIFT; next_idx++; }
- if(button.getBoolean("holdCtrl")) { keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_CONTROL; next_idx++; }
- if(button.getBoolean("holdAlt")) { keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_ALT; next_idx++; }
+ if (button.getBoolean("holdShift")) {
+ keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_SHIFT;
+ next_idx++;
+ }
+ if (button.getBoolean("holdCtrl")) {
+ keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_CONTROL;
+ next_idx++;
+ }
+ if (button.getBoolean("holdAlt")) {
+ keycodes[next_idx] = LwjglGlfwKeycode.GLFW_KEY_LEFT_ALT;
+ next_idx++;
+ }
keycodes[next_idx] = button.getInt("keycode");
n_button.keycodes = keycodes;
empty.mControlDataList.add(n_button);
}
- empty.scaledAt = (float)oldLayoutJson.getDouble("scaledAt");
+ empty.scaledAt = (float) oldLayoutJson.getDouble("scaledAt");
empty.version = 3;
return empty;
}
+
+
+ /**
+ * Convert the layout stroke width to the V5 form
+ */
+ private static void convertStrokeWidth(CustomControls layout) {
+ for (ControlData data : layout.mControlDataList) {
+ data.strokeWidth = Tools.pxToDp(computeStrokeWidth(data.strokeWidth, data.getWidth(), data.getHeight()));
+ }
+
+ for (ControlDrawerData data : layout.mDrawerDataList) {
+ data.properties.strokeWidth = Tools.pxToDp(computeStrokeWidth(data.properties.strokeWidth, data.properties.getWidth(), data.properties.getHeight()));
+ for (ControlData subButtonData : data.buttonProperties) {
+ subButtonData.strokeWidth = Tools.pxToDp(computeStrokeWidth(subButtonData.strokeWidth, data.properties.getWidth(), data.properties.getWidth()));
+ }
+ }
+ }
+
+ /**
+ * Convert a size percentage into a px size, used by older layout versions
+ */
+ static int computeStrokeWidth(float widthInPercent, float width, float height) {
+ float maxSize = Math.max(width, height);
+ return (int) ((maxSize / 2) * (widthInPercent / 100));
+ }
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java
index abfd6cb7d..888c85e5d 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java
@@ -31,6 +31,9 @@ public class ControlButton extends TextView implements ControlInterface {
protected ControlData mProperties;
private final ControlLayout mControlLayout;
+ /* Cache value from the ControlData radius for drawing purposes */
+ private float mComputedRadius;
+
protected boolean mIsToggled = false;
protected boolean mIsPointerOutOfBounds = false;
@@ -42,6 +45,7 @@ public class ControlButton extends TextView implements ControlInterface {
setTextColor(Color.WHITE);
setPadding(4, 4, 4, 4);
setTextSize(14); // Nullify the default size setting
+ setOutlineProvider(null); // Disable shadow casting, removing one drawing pass
//setOnLongClickListener(this);
@@ -61,6 +65,7 @@ public class ControlButton extends TextView implements ControlInterface {
public void setProperties(ControlData properties, boolean changePos) {
mProperties = properties;
ControlInterface.super.setProperties(properties, changePos);
+ mComputedRadius = ControlInterface.super.computeCornerRadius(mProperties.cornerRadius);
if (mProperties.isToggle) {
//For the toggle layer
@@ -76,16 +81,11 @@ public class ControlButton extends TextView implements ControlInterface {
setText(properties.name);
}
- public void setVisible(boolean isVisible){
- if(mProperties.isHideable)
- setVisibility(isVisible ? VISIBLE : GONE);
- }
-
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mIsToggled || (!mProperties.isToggle && isActivated()))
- canvas.drawRoundRect(0, 0, getWidth(), getHeight(), mProperties.cornerRadius, mProperties.cornerRadius, mRectPaint);
+ canvas.drawRoundRect(0, 0, getWidth(), getHeight(), mComputedRadius, mComputedRadius, mRectPaint);
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java
index ccacc8323..cc022ea47 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java
@@ -2,7 +2,9 @@ package net.kdt.pojavlaunch.customcontrols.buttons;
import android.annotation.SuppressLint;
import android.view.MotionEvent;
+import android.view.View;
import android.view.ViewGroup;
+import android.widget.Toast;
import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.customcontrols.ControlData;
@@ -40,18 +42,19 @@ public class ControlDrawer extends ControlButton {
public void addButton(ControlSubButton button){
buttons.add(button);
- setControlButtonVisibility(button, areButtonsVisible);
syncButtons();
+ setControlButtonVisibility(button, areButtonsVisible);
}
private void setControlButtonVisibility(ControlButton button, boolean isVisible){
- button.setVisible(isVisible);
+ button.getControlView().setVisibility(isVisible ? VISIBLE : GONE);
}
private void switchButtonVisibility(){
areButtonsVisible = !areButtonsVisible;
+ int visibility = areButtonsVisible ? VISIBLE : GONE;
for(ControlButton button : buttons){
- button.setVisible(areButtonsVisible);
+ button.getControlView().setVisibility(visibility);
}
}
@@ -88,7 +91,7 @@ public class ControlDrawer extends ControlButton {
private void resizeButtons(){
- if (buttons == null) return;
+ if (buttons == null || drawerData.orientation == ControlDrawerData.Orientation.FREE) return;
for(ControlSubButton subButton : buttons){
subButton.mProperties.setWidth(mProperties.getWidth());
subButton.mProperties.setHeight(mProperties.getHeight());
@@ -124,8 +127,13 @@ public class ControlDrawer extends ControlButton {
@Override
public void setVisible(boolean isVisible) {
- //TODO replicate changes to his children ?
- setVisibility(isVisible ? VISIBLE : GONE);
+ int visibility = isVisible ? VISIBLE : GONE;
+ setVisibility(visibility);
+ if(visibility == GONE || areButtonsVisible) {
+ for(ControlSubButton button : buttons){
+ button.getControlView().setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && getVisibility() == GONE) ? VISIBLE : View.GONE);
+ }
+ }
}
@SuppressLint("ClickableViewAccessibility")
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java
index 3f3e6fae9..7f508822e 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java
@@ -1,17 +1,22 @@
package net.kdt.pojavlaunch.customcontrols.buttons;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_BUTTONSIZE;
import android.annotation.SuppressLint;
import android.graphics.drawable.GradientDrawable;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
import androidx.core.math.MathUtils;
+import net.kdt.pojavlaunch.GrabListener;
import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.customcontrols.ControlData;
import net.kdt.pojavlaunch.customcontrols.ControlLayout;
@@ -24,34 +29,54 @@ import org.lwjgl.glfw.CallbackBridge;
* Most of the injected behavior is editing behavior,
* sending keys has to be implemented by sub classes.
*/
-public interface ControlInterface extends View.OnLongClickListener {
+public interface ControlInterface extends View.OnLongClickListener, GrabListener {
View getControlView();
+
ControlData getProperties();
- /** Remove the button presence from the CustomControl object
+ default void setProperties(ControlData properties) {
+ setProperties(properties, true);
+ }
+
+ /**
+ * Remove the button presence from the CustomControl object
* You need to use {getControlParent()} for this.
*/
void removeButton();
- /** Duplicate the data of the button and add a view with the duplicated data
+ /**
+ * Duplicate the data of the button and add a view with the duplicated data
* Relies on the ControlLayout for the implementation.
*/
void cloneButton();
- void setVisible(boolean isVisible);
+ default void setVisible(boolean isVisible) {
+ if(getProperties().isHideable)
+ getControlView().setVisibility(isVisible ? VISIBLE : GONE);
+ }
+
void sendKeyPresses(boolean isDown);
- /** Load the values and hide non useful forms */
+ /**
+ * Load the values and hide non useful forms
+ */
void loadEditValues(EditControlPopup editControlPopup);
+ @Override
+ default void onGrabState(boolean isGrabbing) {
+ if (getControlLayoutParent() != null && getControlLayoutParent().getModifiable()) return; // Disable when edited
+ setVisible(((getProperties().displayInGame && isGrabbing) || (getProperties().displayInMenu && !isGrabbing)) && getControlLayoutParent().areControlVisible());
+ }
- default ControlLayout getControlLayoutParent(){
+ default ControlLayout getControlLayoutParent() {
return (ControlLayout) getControlView().getParent();
}
- /** Apply conversion steps for when the view is created */
- default ControlData preProcessProperties(ControlData properties, ControlLayout layout){
+ /**
+ * Apply conversion steps for when the view is created
+ */
+ default ControlData preProcessProperties(ControlData properties, ControlLayout layout) {
//Size
properties.setWidth(properties.getWidth() / layout.getLayoutScale() * PREF_BUTTONSIZE);
properties.setHeight(properties.getHeight() / layout.getLayoutScale() * PREF_BUTTONSIZE);
@@ -66,10 +91,6 @@ public interface ControlInterface extends View.OnLongClickListener {
setProperties(getProperties());
}
- default void setProperties(ControlData properties) {
- setProperties(properties, true);
- }
-
/* This function should be overridden to store the properties */
@CallSuper
default void setProperties(ControlData properties, boolean changePos) {
@@ -80,19 +101,22 @@ public interface ControlInterface extends View.OnLongClickListener {
// Recycle layout params
ViewGroup.LayoutParams params = getControlView().getLayoutParams();
- if(params == null) params = new FrameLayout.LayoutParams((int) properties.getWidth(), (int) properties.getHeight());
+ if (params == null)
+ params = new FrameLayout.LayoutParams((int) properties.getWidth(), (int) properties.getHeight());
params.width = (int) properties.getWidth();
params.height = (int) properties.getHeight();
getControlView().setLayoutParams(params);
}
- /** Apply the background according to properties */
- default void setBackground(){
- GradientDrawable gd = getControlView().getBackground() instanceof GradientDrawable
+ /**
+ * Apply the background according to properties
+ */
+ default void setBackground() {
+ GradientDrawable gd = getControlView().getBackground() instanceof GradientDrawable
? (GradientDrawable) getControlView().getBackground()
: new GradientDrawable();
gd.setColor(getProperties().bgColor);
- gd.setStroke(computeStrokeWidth(getProperties().strokeWidth), getProperties().strokeColor);
+ gd.setStroke((int) Tools.dpToPx(getProperties().strokeWidth), getProperties().strokeColor);
gd.setCornerRadius(computeCornerRadius(getProperties().cornerRadius));
getControlView().setBackground(gd);
@@ -100,50 +124,56 @@ public interface ControlInterface extends View.OnLongClickListener {
/**
* Apply the dynamic equation on the x axis.
+ *
* @param dynamicX The equation to compute the position from
*/
- default void setDynamicX(String dynamicX){
+ default void setDynamicX(String dynamicX) {
getProperties().dynamicX = dynamicX;
getControlView().setX(getProperties().insertDynamicPos(dynamicX));
}
/**
* Apply the dynamic equation on the y axis.
+ *
* @param dynamicY The equation to compute the position from
*/
- default void setDynamicY(String dynamicY){
+ default void setDynamicY(String dynamicY) {
getProperties().dynamicY = dynamicY;
getControlView().setY(getProperties().insertDynamicPos(dynamicY));
}
/**
* Generate a dynamic equation from an absolute position, used to scale properly across devices
+ *
* @param x The absolute position on the horizontal axis
* @return The equation as a String
*/
- default String generateDynamicX(float x){
- if(x + (getProperties().getWidth()/2f) > CallbackBridge.physicalWidth/2f){
+ default String generateDynamicX(float x) {
+ if (x + (getProperties().getWidth() / 2f) > CallbackBridge.physicalWidth / 2f) {
return (x + getProperties().getWidth()) / CallbackBridge.physicalWidth + " * ${screen_width} - ${width}";
- }else{
+ } else {
return x / CallbackBridge.physicalWidth + " * ${screen_width}";
}
}
/**
* Generate a dynamic equation from an absolute position, used to scale properly across devices
+ *
* @param y The absolute position on the vertical axis
* @return The equation as a String
*/
- default String generateDynamicY(float y){
- if(y + (getProperties().getHeight()/2f) > CallbackBridge.physicalHeight/2f){
- return (y + getProperties().getHeight()) / CallbackBridge.physicalHeight + " * ${screen_height} - ${height}";
- }else{
+ default String generateDynamicY(float y) {
+ if (y + (getProperties().getHeight() / 2f) > CallbackBridge.physicalHeight / 2f) {
+ return (y + getProperties().getHeight()) / CallbackBridge.physicalHeight + " * ${screen_height} - ${height}";
+ } else {
return y / CallbackBridge.physicalHeight + " * ${screen_height}";
}
}
- /** Regenerate and apply coordinates with supposedly modified properties */
- default void regenerateDynamicCoordinates(){
+ /**
+ * Regenerate and apply coordinates with supposedly modified properties
+ */
+ default void regenerateDynamicCoordinates() {
getProperties().dynamicX = generateDynamicX(getControlView().getX());
getProperties().dynamicY = generateDynamicY(getControlView().getY());
updateProperties();
@@ -152,30 +182,28 @@ public interface ControlInterface extends View.OnLongClickListener {
/**
* Do a pre-conversion of an equation using values from a button,
* so the variables can be used for another button
- *
+ *
* Internal use only.
+ *
* @param equation The dynamic position as a String
- * @param button The button to get the values from.
+ * @param button The button to get the values from.
* @return The pre-processed equation as a String.
*/
- default String applySize(String equation, ControlInterface button){
+ default String applySize(String equation, ControlInterface button) {
return equation
.replace("${right}", "(${screen_width} - ${width})")
- .replace("${bottom}","(${screen_height} - ${height})")
+ .replace("${bottom}", "(${screen_height} - ${height})")
.replace("${height}", "(px(" + Tools.pxToDp(button.getProperties().getHeight()) + ") /" + PREF_BUTTONSIZE + " * ${preferred_scale})")
.replace("${width}", "(px(" + Tools.pxToDp(button.getProperties().getWidth()) + ") / " + PREF_BUTTONSIZE + " * ${preferred_scale})");
}
- /** Convert a size percentage into a px size */
- default int computeStrokeWidth(float widthInPercent){
- float maxSize = Math.max(getProperties().getWidth(), getProperties().getHeight());
- return (int)((maxSize/2) * (widthInPercent/100));
- }
- /** Convert a corner radius percentage into a px corner radius */
- default float computeCornerRadius(float radiusInPercent){
+ /**
+ * Convert a corner radius percentage into a px corner radius
+ */
+ default float computeCornerRadius(float radiusInPercent) {
float minSize = Math.min(getProperties().getWidth(), getProperties().getHeight());
- return (minSize/2) * (radiusInPercent/100);
+ return (minSize / 2) * (radiusInPercent / 100);
}
/**
@@ -185,10 +213,10 @@ public interface ControlInterface extends View.OnLongClickListener {
* @return whether or not the button
*/
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
- default boolean canSnap(ControlInterface button){
+ default boolean canSnap(ControlInterface button) {
float MIN_DISTANCE = Tools.dpToPx(8);
- if(button == this) return false;
+ if (button == this) return false;
return !(net.kdt.pojavlaunch.utils.MathUtils.dist(
button.getControlView().getX() + button.getControlView().getWidth() / 2f,
button.getControlView().getY() + button.getControlView().getHeight() / 2f,
@@ -202,13 +230,13 @@ public interface ControlInterface extends View.OnLongClickListener {
* Try to snap, then align to neighboring buttons, given the provided coordinates.
* The new position is automatically applied to the View,
* regardless of if the View snapped or not.
- *
+ *
* The new position is always dynamic, thus replacing previous dynamic positions
*
* @param x Coordinate on the x axis
* @param y Coordinate on the y axis
*/
- default void snapAndAlign(float x, float y){
+ default void snapAndAlign(float x, float y) {
float MIN_DISTANCE = Tools.dpToPx(8);
String dynamicX = generateDynamicX(x);
String dynamicY = generateDynamicY(y);
@@ -216,9 +244,9 @@ public interface ControlInterface extends View.OnLongClickListener {
getControlView().setX(x);
getControlView().setY(y);
- for(ControlInterface button : ((ControlLayout) getControlView().getParent()).getButtonChildren()){
+ for (ControlInterface button : ((ControlLayout) getControlView().getParent()).getButtonChildren()) {
//Step 1: Filter unwanted buttons
- if(!canSnap(button)) continue;
+ if (!canSnap(button)) continue;
//Step 2: Get Coordinates
float button_top = button.getControlView().getY();
@@ -232,28 +260,28 @@ public interface ControlInterface extends View.OnLongClickListener {
float right = getControlView().getX() + getControlView().getWidth();
//Step 3: For each axis, we try to snap to the nearest
- if(Math.abs(top - button_bottom) < MIN_DISTANCE){ // Bottom snap
- dynamicY = applySize(button.getProperties().dynamicY, button) + applySize(" + ${height}", button) + " + ${margin}" ;
- }else if(Math.abs(button_top - bottom) < MIN_DISTANCE){ //Top snap
+ if (Math.abs(top - button_bottom) < MIN_DISTANCE) { // Bottom snap
+ dynamicY = applySize(button.getProperties().dynamicY, button) + applySize(" + ${height}", button) + " + ${margin}";
+ } else if (Math.abs(button_top - bottom) < MIN_DISTANCE) { //Top snap
dynamicY = applySize(button.getProperties().dynamicY, button) + " - ${height} - ${margin}";
}
- if(!dynamicY.equals(generateDynamicY(getControlView().getY()))){ //If we snapped
- if(Math.abs(button_left - left) < MIN_DISTANCE){ //Left align snap
+ if (!dynamicY.equals(generateDynamicY(getControlView().getY()))) { //If we snapped
+ if (Math.abs(button_left - left) < MIN_DISTANCE) { //Left align snap
dynamicX = applySize(button.getProperties().dynamicX, button);
- }else if(Math.abs(button_right - right) < MIN_DISTANCE){ //Right align snap
+ } else if (Math.abs(button_right - right) < MIN_DISTANCE) { //Right align snap
dynamicX = applySize(button.getProperties().dynamicX, button) + applySize(" + ${width}", button) + " - ${width}";
}
}
- if(Math.abs(button_left - right) < MIN_DISTANCE){ //Left snap
+ if (Math.abs(button_left - right) < MIN_DISTANCE) { //Left snap
dynamicX = applySize(button.getProperties().dynamicX, button) + " - ${width} - ${margin}";
- }else if(Math.abs(left - button_right) < MIN_DISTANCE){ //Right snap
+ } else if (Math.abs(left - button_right) < MIN_DISTANCE) { //Right snap
dynamicX = applySize(button.getProperties().dynamicX, button) + applySize(" + ${width}", button) + " + ${margin}";
}
- if(!dynamicX.equals(generateDynamicX(getControlView().getX()))){ //If we snapped
- if(Math.abs(button_top - top) < MIN_DISTANCE){ //Top align snap
+ if (!dynamicX.equals(generateDynamicX(getControlView().getX()))) { //If we snapped
+ if (Math.abs(button_top - top) < MIN_DISTANCE) { //Top align snap
dynamicY = applySize(button.getProperties().dynamicY, button);
- }else if(Math.abs(button_bottom - bottom) < MIN_DISTANCE){ //Bottom align snap
+ } else if (Math.abs(button_bottom - bottom) < MIN_DISTANCE) { //Bottom align snap
dynamicY = applySize(button.getProperties().dynamicY, button) + applySize(" + ${height}", button) + " - ${height}";
}
}
@@ -264,19 +292,50 @@ public interface ControlInterface extends View.OnLongClickListener {
setDynamicY(dynamicY);
}
- /** Wrapper for multiple injections at once */
- default void injectBehaviors(){
+ /**
+ * Wrapper for multiple injections at once
+ */
+ default void injectBehaviors() {
injectProperties();
injectTouchEventBehavior();
injectLayoutParamBehavior();
+ injectGrabListenerBehavior();
}
- default void injectProperties(){
+ /**
+ * Inject the grab listener, remove it when the view is gone
+ */
+ default void injectGrabListenerBehavior() {
+ if (getControlView() == null) {
+ Log.e(ControlInterface.class.toString(), "Failed to inject grab listener behavior !");
+ return;
+ }
+
+
+ getControlView().addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(@NonNull View v) {
+ CallbackBridge.addGrabListener(ControlInterface.this);
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(@NonNull View v) {
+ getControlView().removeOnAttachStateChangeListener(this);
+ CallbackBridge.removeGrabListener(ControlInterface.this);
+ }
+ });
+
+
+ }
+
+ default void injectProperties() {
getControlView().post(() -> getControlView().setTranslationZ(10));
}
- /** Inject a touch listener on the view to make editing controls straight forward */
- default void injectTouchEventBehavior(){
+ /**
+ * Inject a touch listener on the view to make editing controls straight forward
+ */
+ default void injectTouchEventBehavior() {
getControlView().setOnTouchListener(new View.OnTouchListener() {
private boolean mCanTriggerLongClick = true;
private float downX, downY;
@@ -285,7 +344,7 @@ public interface ControlInterface extends View.OnLongClickListener {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent event) {
- if(!getControlLayoutParent().getModifiable()){
+ if (!getControlLayoutParent().getModifiable()) {
// Basically, editing behavior is forced while in game behavior is specific
view.onTouchEvent(event);
return true;
@@ -309,7 +368,7 @@ public interface ControlInterface extends View.OnLongClickListener {
break;
case MotionEvent.ACTION_MOVE:
- if(Math.abs(event.getRawX() - downRawX) > 8 || Math.abs(event.getRawY() - downRawY) > 8)
+ if (Math.abs(event.getRawX() - downRawX) > 8 || Math.abs(event.getRawY() - downRawY) > 8)
mCanTriggerLongClick = false;
getControlLayoutParent().adaptPanelPosition();
@@ -327,17 +386,17 @@ public interface ControlInterface extends View.OnLongClickListener {
});
}
- default void injectLayoutParamBehavior(){
+ default void injectLayoutParamBehavior() {
getControlView().addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
- getProperties().setWidth(right-left);
- getProperties().setHeight(bottom-top);
+ getProperties().setWidth(right - left);
+ getProperties().setHeight(bottom - top);
setBackground();
// Re-calculate position
- if(!getProperties().isDynamicBtn){
+ if (!getProperties().isDynamicBtn) {
getControlView().setX(getControlView().getX());
getControlView().setY(getControlView().getY());
- }else {
+ } else {
getControlView().setX(getProperties().insertDynamicPos(getProperties().dynamicX));
getControlView().setY(getProperties().insertDynamicPos(getProperties().dynamicY));
}
@@ -345,7 +404,7 @@ public interface ControlInterface extends View.OnLongClickListener {
}
@Override
- default boolean onLongClick(View v){
+ default boolean onLongClick(View v) {
if (getControlLayoutParent().getModifiable()) {
getControlLayoutParent().editControlButton(this);
getControlLayoutParent().mActionRow.setFollowedButton(this);
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java
new file mode 100644
index 000000000..34c21c424
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java
@@ -0,0 +1,166 @@
+package net.kdt.pojavlaunch.customcontrols.buttons;
+
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_EAST;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_NONE;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_NORTH;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_NORTH_EAST;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_NORTH_WEST;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_SOUTH;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_SOUTH_EAST;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_SOUTH_WEST;
+import static net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick.DIRECTION_WEST;
+
+import android.annotation.SuppressLint;
+import android.view.View;
+
+import net.kdt.pojavlaunch.LwjglGlfwKeycode;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.customcontrols.ControlData;
+import net.kdt.pojavlaunch.customcontrols.ControlJoystickData;
+import net.kdt.pojavlaunch.customcontrols.ControlLayout;
+import net.kdt.pojavlaunch.customcontrols.gamepad.GamepadJoystick;
+import net.kdt.pojavlaunch.customcontrols.handleview.EditControlPopup;
+
+import org.lwjgl.glfw.CallbackBridge;
+
+import io.github.controlwear.virtual.joystick.android.JoystickView;
+
+@SuppressLint("ViewConstructor")
+public class ControlJoystick extends JoystickView implements ControlInterface {
+ public final static int DIRECTION_FORWARD_LOCK = 8;
+ // Directions keycode
+ private final int[] mDirectionForwardLock = new int[]{LwjglGlfwKeycode.GLFW_KEY_LEFT_CONTROL};
+ private final int[] mDirectionForward = new int[]{LwjglGlfwKeycode.GLFW_KEY_W};
+ private final int[] mDirectionRight = new int[]{LwjglGlfwKeycode.GLFW_KEY_D};
+ private final int[] mDirectionBackward = new int[]{LwjglGlfwKeycode.GLFW_KEY_S};
+ private final int[] mDirectionLeft = new int[]{LwjglGlfwKeycode.GLFW_KEY_A};
+ private ControlJoystickData mControlData;
+ private int mLastDirectionInt = GamepadJoystick.DIRECTION_NONE;
+ private int mCurrentDirectionInt = GamepadJoystick.DIRECTION_NONE;
+ public ControlJoystick(ControlLayout parent, ControlJoystickData data) {
+ super(parent.getContext());
+ init(data, parent);
+ }
+
+ private static void sendInput(int[] keys, boolean isDown) {
+ for (int key : keys) {
+ CallbackBridge.sendKeyPress(key, CallbackBridge.getCurrentMods(), isDown);
+ }
+ }
+
+ private void init(ControlJoystickData data, ControlLayout layout) {
+ mControlData = data;
+ setProperties(preProcessProperties(data, layout));
+ setDeadzone(35);
+ setFixedCenter(false);
+ setAutoReCenterButton(true);
+
+ injectBehaviors();
+
+ setOnMoveListener(new OnMoveListener() {
+ @Override
+ public void onMove(int angle, int strength) {
+ mLastDirectionInt = mCurrentDirectionInt;
+ mCurrentDirectionInt = getDirectionInt(angle, strength);
+
+ if (mLastDirectionInt != mCurrentDirectionInt) {
+ sendDirectionalKeycode(mLastDirectionInt, false);
+ sendDirectionalKeycode(mCurrentDirectionInt, true);
+ }
+ }
+
+ @Override
+ public void onForwardLock(boolean isLocked) {
+ sendInput(mDirectionForwardLock, isLocked);
+ }
+ });
+ }
+
+ @Override
+ public View getControlView() {
+ return this;
+ }
+
+ @Override
+ public ControlData getProperties() {
+ return mControlData;
+ }
+
+ @Override
+ public void setProperties(ControlData properties, boolean changePos) {
+ mControlData = (ControlJoystickData) properties;
+ mControlData.isHideable = true;
+ ControlInterface.super.setProperties(properties, changePos);
+ postDelayed(() -> setForwardLockDistance(mControlData.forwardLock ? (int) Tools.dpToPx(60) : 0), 10);
+ }
+
+ @Override
+ public void removeButton() {
+ getControlLayoutParent().getLayout().mJoystickDataList.remove(getProperties());
+ getControlLayoutParent().removeView(this);
+ }
+
+ @Override
+ public void cloneButton() {
+ ControlData data = new ControlJoystickData(getProperties());
+ getControlLayoutParent().addJoystickButton((ControlJoystickData) data);
+ }
+
+
+ @Override
+ public void setBackground() {
+ setBorderWidth((int) Tools.dpToPx(getProperties().strokeWidth));
+ setBorderColor(getProperties().strokeColor);
+ setBackgroundColor(getProperties().bgColor);
+ }
+
+ @Override
+ public void sendKeyPresses(boolean isDown) {/*STUB since non swipeable*/ }
+
+ @Override
+ public void loadEditValues(EditControlPopup editControlPopup) {
+ editControlPopup.loadJoystickValues(mControlData);
+ }
+
+ private int getDirectionInt(int angle, int intensity) {
+ if (intensity == 0) return DIRECTION_NONE;
+ return (int) (((angle + 22.5) / 45) % 8);
+ }
+
+ private void sendDirectionalKeycode(int direction, boolean isDown) {
+ switch (direction) {
+ case DIRECTION_NORTH:
+ sendInput(mDirectionForward, isDown);
+ break;
+ case DIRECTION_NORTH_EAST:
+ sendInput(mDirectionForward, isDown);
+ sendInput(mDirectionRight, isDown);
+ break;
+ case DIRECTION_EAST:
+ sendInput(mDirectionRight, isDown);
+ break;
+ case DIRECTION_SOUTH_EAST:
+ sendInput(mDirectionRight, isDown);
+ sendInput(mDirectionBackward, isDown);
+ break;
+ case DIRECTION_SOUTH:
+ sendInput(mDirectionBackward, isDown);
+ break;
+ case DIRECTION_SOUTH_WEST:
+ sendInput(mDirectionBackward, isDown);
+ sendInput(mDirectionLeft, isDown);
+ break;
+ case DIRECTION_WEST:
+ sendInput(mDirectionLeft, isDown);
+ break;
+ case DIRECTION_NORTH_WEST:
+ sendInput(mDirectionForward, isDown);
+ sendInput(mDirectionLeft, isDown);
+ break;
+ case DIRECTION_FORWARD_LOCK:
+ sendInput(mDirectionForwardLock, isDown);
+ break;
+ }
+ }
+
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java
index cd24b8dc9..fdb5cfc03 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java
@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import net.kdt.pojavlaunch.customcontrols.ControlData;
import net.kdt.pojavlaunch.customcontrols.ControlDrawerData;
import net.kdt.pojavlaunch.customcontrols.ControlLayout;
+import net.kdt.pojavlaunch.customcontrols.handleview.EditControlPopup;
@SuppressLint("ViewConstructor")
public class ControlSubButton extends ControlButton {
@@ -21,8 +22,10 @@ public class ControlSubButton extends ControlButton {
}
private void filterProperties(){
- mProperties.setHeight(parentDrawer.getProperties().getHeight());
- mProperties.setWidth(parentDrawer.getProperties().getWidth());
+ if (parentDrawer != null && parentDrawer.drawerData.orientation != ControlDrawerData.Orientation.FREE) {
+ mProperties.setHeight(parentDrawer.getProperties().getHeight());
+ mProperties.setWidth(parentDrawer.getProperties().getWidth());
+ }
mProperties.isDynamicBtn = false;
setProperties(mProperties, false);
@@ -30,12 +33,18 @@ public class ControlSubButton extends ControlButton {
@Override
public void setVisible(boolean isVisible) {
- setVisibility(isVisible ? (parentDrawer.areButtonsVisible ? VISIBLE : GONE) : (!mProperties.isHideable && parentDrawer.getVisibility() == GONE) ? VISIBLE : View.GONE);
+ // STUB, visibility handled by the ControlDrawer
+ //setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && parentDrawer.getVisibility() == GONE) ? VISIBLE : View.GONE);
+ }
+
+ @Override
+ public void onGrabState(boolean isGrabbing) {
+ // STUB, visibility lifecycle handled by the ControlDrawer
}
@Override
public void setLayoutParams(ViewGroup.LayoutParams params) {
- if(parentDrawer != null){
+ if(parentDrawer != null && parentDrawer.drawerData.orientation != ControlDrawerData.Orientation.FREE){
params.width = (int)parentDrawer.mProperties.getWidth();
params.height = (int)parentDrawer.mProperties.getHeight();
}
@@ -81,4 +90,9 @@ public class ControlSubButton extends ControlButton {
super.snapAndAlign(x, y);
// Else the button is forced into place
}
+
+ @Override
+ public void loadEditValues(EditControlPopup editControlPopup) {
+ editControlPopup.loadSubButtonValues(getProperties(), parentDrawer.drawerData.orientation);
+ }
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/EditControlPopup.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/EditControlPopup.java
index 738e915c8..3d799ecbc 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/EditControlPopup.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/EditControlPopup.java
@@ -19,6 +19,8 @@ import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.Spinner;
@@ -34,6 +36,7 @@ import net.kdt.pojavlaunch.R;
import net.kdt.pojavlaunch.colorselector.ColorSelector;
import net.kdt.pojavlaunch.customcontrols.ControlData;
import net.kdt.pojavlaunch.customcontrols.ControlDrawerData;
+import net.kdt.pojavlaunch.customcontrols.ControlJoystickData;
import net.kdt.pojavlaunch.customcontrols.buttons.ControlDrawer;
import net.kdt.pojavlaunch.customcontrols.buttons.ControlInterface;
@@ -43,54 +46,54 @@ import java.util.List;
* Class providing a sort of popup on top of a Layout, allowing to edit a given ControlButton
*/
public class EditControlPopup {
+ protected final Spinner[] mKeycodeSpinners = new Spinner[4];
private final DefocusableScrollView mScrollView;
- private ConstraintLayout mRootView;
private final ColorSelector mColorSelector;
private final ObjectAnimator mEditPopupAnimator;
private final ObjectAnimator mColorEditorAnimator;
- private boolean mDisplaying = false;
- private boolean mDisplayingColor = false;
- public boolean internalChanges = false; // True when we programmatically change stuff.
- private ControlInterface mCurrentlyEditedButton;
private final int mMargin;
+ public boolean internalChanges = false; // True when we programmatically change stuff.
private final View.OnLayoutChangeListener mLayoutChangedListener = new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
- if(internalChanges) return;
+ if (internalChanges) return;
internalChanges = true;
- int width = (int)(safeParseFloat(mWidthEditText.getText().toString()));
+ int width = (int) (safeParseFloat(mWidthEditText.getText().toString()));
- if(width >= 0 && Math.abs(right - width) > 1){
+ if (width >= 0 && Math.abs(right - width) > 1) {
mWidthEditText.setText(String.valueOf(right - left));
}
- int height = (int)(safeParseFloat(mHeightEditText.getText().toString()));
- if(height >= 0 && Math.abs(bottom - height) > 1){
+ int height = (int) (safeParseFloat(mHeightEditText.getText().toString()));
+ if (height >= 0 && Math.abs(bottom - height) > 1) {
mHeightEditText.setText(String.valueOf(bottom - top));
}
internalChanges = false;
}
};
-
protected EditText mNameEditText, mWidthEditText, mHeightEditText;
@SuppressLint("UseSwitchCompatOrMaterialCode")
- protected Switch mToggleSwitch, mPassthroughSwitch, mSwipeableSwitch;
+ protected Switch mToggleSwitch, mPassthroughSwitch, mSwipeableSwitch, mForwardLockSwitch;
protected Spinner mOrientationSpinner;
- protected final Spinner[] mKeycodeSpinners = new Spinner[4];
+ protected TextView[] mKeycodeTextviews = new TextView[4];
protected SeekBar mStrokeWidthSeekbar, mCornerRadiusSeekbar, mAlphaSeekbar;
protected TextView mStrokePercentTextView, mCornerRadiusPercentTextView, mAlphaPercentTextView;
protected TextView mSelectBackgroundColor, mSelectStrokeColor;
protected ArrayAdapter mAdapter;
protected List mSpecialArray;
-
+ protected CheckBox mDisplayInGameCheckbox, mDisplayInMenuCheckbox;
+ private ConstraintLayout mRootView;
+ private boolean mDisplaying = false;
+ private boolean mDisplayingColor = false;
+ private ControlInterface mCurrentlyEditedButton;
// Decorative textviews
- private TextView mOrientationTextView, mMappingTextView, mNameTextView, mCornerRadiusTextView;
+ private TextView mOrientationTextView, mMappingTextView, mNameTextView,
+ mCornerRadiusTextView, mVisibilityTextView, mSizeTextview, mSizeXTextView;
-
- public EditControlPopup(Context context, ViewGroup parent){
+ public EditControlPopup(Context context, ViewGroup parent) {
mScrollView = (DefocusableScrollView) LayoutInflater.from(context).inflate(R.layout.dialog_control_button_setting, parent, false);
parent.addView(mScrollView);
@@ -101,8 +104,8 @@ public class EditControlPopup {
mColorSelector.getRootView().setTranslationZ(11);
mColorSelector.getRootView().setX(-context.getResources().getDimensionPixelOffset(R.dimen._280sdp));
- mEditPopupAnimator = ObjectAnimator.ofFloat(mScrollView, "x", 0).setDuration(1000);
- mColorEditorAnimator = ObjectAnimator.ofFloat(mColorSelector.getRootView(), "x", 0).setDuration(1000);
+ mEditPopupAnimator = ObjectAnimator.ofFloat(mScrollView, "x", 0).setDuration(600);
+ mColorEditorAnimator = ObjectAnimator.ofFloat(mColorSelector.getRootView(), "x", 0).setDuration(600);
Interpolator decelerate = new AccelerateDecelerateInterpolator();
mEditPopupAnimator.setInterpolator(decelerate);
mColorEditorAnimator.setInterpolator(decelerate);
@@ -117,18 +120,23 @@ public class EditControlPopup {
setupRealTimeListeners();
}
+ public static void setPercentageText(TextView textView, int progress) {
+ textView.setText(textView.getContext().getString(R.string.percent_format, progress));
+ }
- /** Slide the layout into the visible screen area */
- public void appear(boolean fromRight){
+ /**
+ * Slide the layout into the visible screen area
+ */
+ public void appear(boolean fromRight) {
disappearColor(); // When someone jumps from a button to another
- if(fromRight){
- if(!mDisplaying || !isAtRight()){
+ if (fromRight) {
+ if (!mDisplaying || !isAtRight()) {
mEditPopupAnimator.setFloatValues(currentDisplayMetrics.widthPixels, currentDisplayMetrics.widthPixels - mScrollView.getWidth() - mMargin);
mEditPopupAnimator.start();
}
- }else{
- if (!mDisplaying || isAtRight()){
+ } else {
+ if (!mDisplaying || isAtRight()) {
mEditPopupAnimator.setFloatValues(-mScrollView.getWidth(), mMargin);
mEditPopupAnimator.start();
}
@@ -137,12 +145,14 @@ public class EditControlPopup {
mDisplaying = true;
}
- /** Slide out the layout */
- public void disappear(){
- if(!mDisplaying) return;
+ /**
+ * Slide out the layout
+ */
+ public void disappear() {
+ if (!mDisplaying) return;
mDisplaying = false;
- if(isAtRight())
+ if (isAtRight())
mEditPopupAnimator.setFloatValues(currentDisplayMetrics.widthPixels - mScrollView.getWidth() - mMargin, currentDisplayMetrics.widthPixels);
else
mEditPopupAnimator.setFloatValues(mMargin, -mScrollView.getWidth());
@@ -150,30 +160,39 @@ public class EditControlPopup {
mEditPopupAnimator.start();
}
- /** Slide the layout into the visible screen area */
- public void appearColor(boolean fromRight, int color){
- if(fromRight){
- if(!mDisplayingColor || !isAtRight()){
+ /**
+ * Slide the layout into the visible screen area
+ */
+ public void appearColor(boolean fromRight, int color) {
+ if (fromRight) {
+ if (!mDisplayingColor || !isAtRight()) {
mColorEditorAnimator.setFloatValues(currentDisplayMetrics.widthPixels, currentDisplayMetrics.widthPixels - mScrollView.getWidth() - mMargin);
mColorEditorAnimator.start();
}
- }else{
- if (!mDisplayingColor || isAtRight()){
+ } else {
+ if (!mDisplayingColor || isAtRight()) {
mColorEditorAnimator.setFloatValues(-mScrollView.getWidth(), mMargin);
mColorEditorAnimator.start();
}
}
+ // Adjust the color selector to have the same size as the control settings
+ ViewGroup.LayoutParams params = mColorSelector.getRootView().getLayoutParams();
+ params.height = mScrollView.getHeight();
+ mColorSelector.getRootView().setLayoutParams(params);
+
mDisplayingColor = true;
mColorSelector.show(color == -1 ? Color.WHITE : color);
}
- /** Slide out the layout */
- public void disappearColor(){
- if(!mDisplayingColor) return;
+ /**
+ * Slide out the layout
+ */
+ public void disappearColor() {
+ if (!mDisplayingColor) return;
mDisplayingColor = false;
- if(isAtRight())
+ if (isAtRight())
mColorEditorAnimator.setFloatValues(currentDisplayMetrics.widthPixels - mScrollView.getWidth() - mMargin, currentDisplayMetrics.widthPixels);
else
mColorEditorAnimator.setFloatValues(mMargin, -mScrollView.getWidth());
@@ -181,33 +200,37 @@ public class EditControlPopup {
mColorEditorAnimator.start();
}
- /** Slide out the first visible layer.
- * @return True if the last layer is disappearing */
- public boolean disappearLayer(){
- if(mDisplayingColor){
+ /**
+ * Slide out the first visible layer.
+ *
+ * @return True if the last layer is disappearing
+ */
+ public boolean disappearLayer() {
+ if (mDisplayingColor) {
disappearColor();
return false;
- }else{
+ } else {
disappear();
return true;
}
}
- /** Switch the panels position if needed */
- public void adaptPanelPosition(){
- if(mDisplaying){
- boolean isAtRight = mCurrentlyEditedButton.getControlView().getX() + mCurrentlyEditedButton.getControlView().getWidth()/2f < currentDisplayMetrics.widthPixels/2f;
+ /**
+ * Switch the panels position if needed
+ */
+ public void adaptPanelPosition() {
+ if (mDisplaying) {
+ boolean isAtRight = mCurrentlyEditedButton.getControlView().getX() + mCurrentlyEditedButton.getControlView().getWidth() / 2f < currentDisplayMetrics.widthPixels / 2f;
appear(isAtRight);
}
}
-
- public void destroy(){
+ public void destroy() {
((ViewGroup) mScrollView.getParent()).removeView(mColorSelector.getRootView());
((ViewGroup) mScrollView.getParent()).removeView(mScrollView);
}
- private void loadAdapter(){
+ private void loadAdapter() {
//Initialize adapter for keycodes
mAdapter = new ArrayAdapter<>(mRootView.getContext(), R.layout.item_centered_textview);
mSpecialArray = ControlData.buildSpecialButtonArray();
@@ -228,48 +251,50 @@ public class EditControlPopup {
mOrientationSpinner.setAdapter(adapter);
}
-
-
- private void setDefaultVisibilitySetting(){
- for(int i=0; i currentDisplayMetrics.widthPixels/2f;
- }
-
-
- public static void setPercentageText(TextView textView, int progress){
- textView.setText(textView.getContext().getString(R.string.percent_format, progress));
+ private boolean isAtRight() {
+ return mScrollView.getX() > currentDisplayMetrics.widthPixels / 2f;
}
/* LOADING VALUES */
- /** Load values for basic control data */
- public void loadValues(ControlData data){
+ /**
+ * Load values for basic control data
+ */
+ public void loadValues(ControlData data) {
setDefaultVisibilitySetting();
mOrientationTextView.setVisibility(GONE);
mOrientationSpinner.setVisibility(GONE);
+ mForwardLockSwitch.setVisibility(GONE);
mNameEditText.setText(data.name);
mWidthEditText.setText(String.valueOf(data.getWidth()));
mHeightEditText.setText(String.valueOf(data.getHeight()));
- mAlphaSeekbar.setProgress((int) (data.opacity*100));
- mStrokeWidthSeekbar.setProgress(data.strokeWidth);
+ mAlphaSeekbar.setProgress((int) (data.opacity * 100));
+ mStrokeWidthSeekbar.setProgress((int) data.strokeWidth * 10);
mCornerRadiusSeekbar.setProgress((int) data.cornerRadius);
- setPercentageText(mAlphaPercentTextView, (int) (data.opacity*100));
- setPercentageText(mStrokePercentTextView, data.strokeWidth);
+ setPercentageText(mAlphaPercentTextView, (int) (data.opacity * 100));
+ setPercentageText(mStrokePercentTextView, (int) data.strokeWidth * 10);
setPercentageText(mCornerRadiusPercentTextView, (int) data.cornerRadius);
mToggleSwitch.setChecked(data.isToggle);
mPassthroughSwitch.setChecked(data.passThruEnabled);
mSwipeableSwitch.setChecked(data.isSwipeable);
- for(int i = 0; i< data.keycodes.length; i++){
+ mDisplayInGameCheckbox.setChecked(data.displayInGame);
+ mDisplayInMenuCheckbox.setChecked(data.displayInMenu);
+
+ for (int i = 0; i < data.keycodes.length; i++) {
if (data.keycodes[i] < 0) {
mKeycodeSpinners[i].setSelection(data.keycodes[i] + mSpecialArray.size());
} else {
@@ -278,18 +303,20 @@ public class EditControlPopup {
}
}
- /** Load values for extended control data */
- public void loadValues(ControlDrawerData data){
+ /**
+ * Load values for extended control data
+ */
+ public void loadValues(ControlDrawerData data) {
loadValues(data.properties);
mOrientationSpinner.setSelection(
ControlDrawerData.orientationToInt(data.orientation));
mMappingTextView.setVisibility(GONE);
- mKeycodeSpinners[0].setVisibility(GONE);
- mKeycodeSpinners[1].setVisibility(GONE);
- mKeycodeSpinners[2].setVisibility(GONE);
- mKeycodeSpinners[3].setVisibility(GONE);
+ for (int i = 0; i < mKeycodeSpinners.length; i++) {
+ mKeycodeSpinners[i].setVisibility(GONE);
+ mKeycodeTextviews[i].setVisibility(GONE);
+ }
mOrientationTextView.setVisibility(VISIBLE);
mOrientationSpinner.setVisibility(VISIBLE);
@@ -299,15 +326,17 @@ public class EditControlPopup {
mToggleSwitch.setVisibility(View.GONE);
}
- /** Load values for the joystick */
- @SuppressWarnings("unused") public void loadJoystickValues(ControlData data){
+ /**
+ * Load values for the joystick
+ */
+ public void loadJoystickValues(ControlJoystickData data) {
loadValues(data);
mMappingTextView.setVisibility(GONE);
- mKeycodeSpinners[0].setVisibility(GONE);
- mKeycodeSpinners[1].setVisibility(GONE);
- mKeycodeSpinners[2].setVisibility(GONE);
- mKeycodeSpinners[3].setVisibility(GONE);
+ for (int i = 0; i < mKeycodeSpinners.length; i++) {
+ mKeycodeSpinners[i].setVisibility(GONE);
+ mKeycodeTextviews[i].setVisibility(GONE);
+ }
mNameTextView.setVisibility(GONE);
mNameEditText.setVisibility(GONE);
@@ -319,10 +348,33 @@ public class EditControlPopup {
mSwipeableSwitch.setVisibility(View.GONE);
mPassthroughSwitch.setVisibility(View.GONE);
mToggleSwitch.setVisibility(View.GONE);
+
+ mForwardLockSwitch.setVisibility(VISIBLE);
+ mForwardLockSwitch.setChecked(data.forwardLock);
+ }
+
+ /**
+ * Load values for sub buttons
+ */
+ public void loadSubButtonValues(ControlData data, ControlDrawerData.Orientation drawerOrientation) {
+ loadValues(data);
+
+ // Size linked to the parent drawer depending on the drawer settings
+ if(drawerOrientation != ControlDrawerData.Orientation.FREE){
+ mSizeTextview.setVisibility(GONE);
+ mSizeXTextView.setVisibility(GONE);
+ mWidthEditText.setVisibility(GONE);
+ mHeightEditText.setVisibility(GONE);
+ }
+
+ // No conditional, already depends on the parent drawer visibility
+ mVisibilityTextView.setVisibility(GONE);
+ mDisplayInMenuCheckbox.setVisibility(GONE);
+ mDisplayInGameCheckbox.setVisibility(GONE);
}
- private void bindLayout(){
+ private void bindLayout() {
mRootView = mScrollView.findViewById(R.id.edit_layout);
mNameEditText = mScrollView.findViewById(R.id.editName_editText);
mWidthEditText = mScrollView.findViewById(R.id.editSize_editTextX);
@@ -330,10 +382,15 @@ public class EditControlPopup {
mToggleSwitch = mScrollView.findViewById(R.id.checkboxToggle);
mPassthroughSwitch = mScrollView.findViewById(R.id.checkboxPassThrough);
mSwipeableSwitch = mScrollView.findViewById(R.id.checkboxSwipeable);
+ mForwardLockSwitch = mScrollView.findViewById(R.id.checkboxForwardLock);
mKeycodeSpinners[0] = mScrollView.findViewById(R.id.editMapping_spinner_1);
mKeycodeSpinners[1] = mScrollView.findViewById(R.id.editMapping_spinner_2);
mKeycodeSpinners[2] = mScrollView.findViewById(R.id.editMapping_spinner_3);
mKeycodeSpinners[3] = mScrollView.findViewById(R.id.editMapping_spinner_4);
+ mKeycodeTextviews[0] = mScrollView.findViewById(R.id.mapping_1_textview);
+ mKeycodeTextviews[1] = mScrollView.findViewById(R.id.mapping_2_textview);
+ mKeycodeTextviews[2] = mScrollView.findViewById(R.id.mapping_3_textview);
+ mKeycodeTextviews[3] = mScrollView.findViewById(R.id.mapping_4_textview);
mOrientationSpinner = mScrollView.findViewById(R.id.editOrientation_spinner);
mStrokeWidthSeekbar = mScrollView.findViewById(R.id.editStrokeWidth_seekbar);
mCornerRadiusSeekbar = mScrollView.findViewById(R.id.editCornerRadius_seekbar);
@@ -343,28 +400,36 @@ public class EditControlPopup {
mStrokePercentTextView = mScrollView.findViewById(R.id.editStrokeWidth_textView_percent);
mAlphaPercentTextView = mScrollView.findViewById(R.id.editButtonOpacity_textView_percent);
mCornerRadiusPercentTextView = mScrollView.findViewById(R.id.editCornerRadius_textView_percent);
+ mDisplayInGameCheckbox = mScrollView.findViewById(R.id.visibility_game_checkbox);
+ mDisplayInMenuCheckbox = mScrollView.findViewById(R.id.visibility_menu_checkbox);
//Decorative stuff
mMappingTextView = mScrollView.findViewById(R.id.editMapping_textView);
mOrientationTextView = mScrollView.findViewById(R.id.editOrientation_textView);
mNameTextView = mScrollView.findViewById(R.id.editName_textView);
mCornerRadiusTextView = mScrollView.findViewById(R.id.editCornerRadius_textView);
+ mVisibilityTextView = mScrollView.findViewById(R.id.visibility_textview);
+ mSizeTextview = mScrollView.findViewById(R.id.editSize_textView);
+ mSizeXTextView = mScrollView.findViewById(R.id.editSize_x_textView);
}
/**
* A long function linking all the displayed data on the popup and,
* the currently edited mCurrentlyEditedButton
*/
- public void setupRealTimeListeners(){
+ public void setupRealTimeListeners() {
mNameEditText.addTextChangedListener(new TextWatcher() {
@Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
@Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {}
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
@Override
public void afterTextChanged(Editable s) {
- if(internalChanges) return;
+ if (internalChanges) return;
mCurrentlyEditedButton.getProperties().name = s.toString();
@@ -375,16 +440,19 @@ public class EditControlPopup {
mWidthEditText.addTextChangedListener(new TextWatcher() {
@Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
@Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {}
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
@Override
public void afterTextChanged(Editable s) {
- if(internalChanges) return;
+ if (internalChanges) return;
float width = safeParseFloat(s.toString());
- if(width >= 0){
+ if (width >= 0) {
mCurrentlyEditedButton.getProperties().setWidth(width);
mCurrentlyEditedButton.updateProperties();
}
@@ -393,16 +461,19 @@ public class EditControlPopup {
mHeightEditText.addTextChangedListener(new TextWatcher() {
@Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
@Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {}
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
@Override
public void afterTextChanged(Editable s) {
- if(internalChanges) return;
+ if (internalChanges) return;
float height = safeParseFloat(s.toString());
- if(height >= 0){
+ if (height >= 0) {
mCurrentlyEditedButton.getProperties().setHeight(height);
mCurrentlyEditedButton.updateProperties();
}
@@ -410,66 +481,83 @@ public class EditControlPopup {
});
mSwipeableSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if(internalChanges) return;
+ if (internalChanges) return;
mCurrentlyEditedButton.getProperties().isSwipeable = isChecked;
});
mToggleSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if(internalChanges) return;
+ if (internalChanges) return;
mCurrentlyEditedButton.getProperties().isToggle = isChecked;
});
mPassthroughSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if(internalChanges) return;
+ if (internalChanges) return;
mCurrentlyEditedButton.getProperties().passThruEnabled = isChecked;
});
+ mForwardLockSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ if (internalChanges) return;
+ if(mCurrentlyEditedButton.getProperties() instanceof ControlJoystickData){
+ ((ControlJoystickData) mCurrentlyEditedButton.getProperties()).forwardLock = isChecked;
+ }
+ });
mAlphaSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if(internalChanges) return;
- mCurrentlyEditedButton.getProperties().opacity = mAlphaSeekbar.getProgress()/100f;
- mCurrentlyEditedButton.getControlView().setAlpha(mAlphaSeekbar.getProgress()/100f);
+ if (internalChanges) return;
+ mCurrentlyEditedButton.getProperties().opacity = mAlphaSeekbar.getProgress() / 100f;
+ mCurrentlyEditedButton.getControlView().setAlpha(mAlphaSeekbar.getProgress() / 100f);
setPercentageText(mAlphaPercentTextView, progress);
}
@Override
- public void onStartTrackingTouch(SeekBar seekBar) {}
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
@Override
- public void onStopTrackingTouch(SeekBar seekBar) {}
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ }
});
mStrokeWidthSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if(internalChanges) return;
- mCurrentlyEditedButton.getProperties().strokeWidth = mStrokeWidthSeekbar.getProgress();
+ if (internalChanges) return;
+ mCurrentlyEditedButton.getProperties().strokeWidth = mStrokeWidthSeekbar.getProgress() / 10F;
mCurrentlyEditedButton.setBackground();
setPercentageText(mStrokePercentTextView, progress);
}
@Override
- public void onStartTrackingTouch(SeekBar seekBar) {}
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
@Override
- public void onStopTrackingTouch(SeekBar seekBar) {}
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ }
});
mCornerRadiusSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if(internalChanges) return;
+ if (internalChanges) return;
mCurrentlyEditedButton.getProperties().cornerRadius = mCornerRadiusSeekbar.getProgress();
mCurrentlyEditedButton.setBackground();
setPercentageText(mCornerRadiusPercentTextView, progress);
}
@Override
- public void onStartTrackingTouch(SeekBar seekBar) {}
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
@Override
- public void onStopTrackingTouch(SeekBar seekBar) {}
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ }
});
- for(int i = 0; i< mKeycodeSpinners.length; ++i){
+ for (int i = 0; i < mKeycodeSpinners.length; ++i) {
int finalI = i;
+ mKeycodeTextviews[i].setOnClickListener(v -> mKeycodeSpinners[finalI].performClick());
+
mKeycodeSpinners[i].setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
@@ -480,10 +568,12 @@ public class EditControlPopup {
} else {
mCurrentlyEditedButton.getProperties().keycodes[finalI] = EfficientAndroidLWJGLKeycode.getValueByIndex(mKeycodeSpinners[finalI].getSelectedItemPosition() - mSpecialArray.size());
}
+ mKeycodeTextviews[finalI].setText((String) mKeycodeSpinners[finalI].getSelectedItem());
}
@Override
- public void onNothingSelected(AdapterView> parent) {}
+ public void onNothingSelected(AdapterView> parent) {
+ }
});
}
@@ -494,16 +584,26 @@ public class EditControlPopup {
// Side note, spinner listeners are fired later than all the other ones.
// Meaning the internalChanges bool is useless here.
- if(mCurrentlyEditedButton instanceof ControlDrawer){
- ((ControlDrawer)mCurrentlyEditedButton).drawerData.orientation = ControlDrawerData.intToOrientation(mOrientationSpinner.getSelectedItemPosition());
- ((ControlDrawer)mCurrentlyEditedButton).syncButtons();
+ if (mCurrentlyEditedButton instanceof ControlDrawer) {
+ ((ControlDrawer) mCurrentlyEditedButton).drawerData.orientation = ControlDrawerData.intToOrientation(mOrientationSpinner.getSelectedItemPosition());
+ ((ControlDrawer) mCurrentlyEditedButton).syncButtons();
}
}
@Override
- public void onNothingSelected(AdapterView> parent) {}
+ public void onNothingSelected(AdapterView> parent) {
+ }
});
+ mDisplayInGameCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ if (internalChanges) return;
+ mCurrentlyEditedButton.getProperties().displayInGame = isChecked;
+ });
+
+ mDisplayInMenuCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ if (internalChanges) return;
+ mCurrentlyEditedButton.getProperties().displayInMenu = isChecked;
+ });
mSelectStrokeColor.setOnClickListener(v -> {
mColorSelector.setAlphaEnabled(false);
@@ -524,18 +624,18 @@ public class EditControlPopup {
});
}
- private float safeParseFloat(String string){
+ private float safeParseFloat(String string) {
float out = -1; // -1
try {
out = Float.parseFloat(string);
- }catch (NumberFormatException e){
+ } catch (NumberFormatException e) {
Log.e("EditControlPopup", e.toString());
}
return out;
}
- public void setCurrentlyEditedButton(ControlInterface button){
- if(mCurrentlyEditedButton != null)
+ public void setCurrentlyEditedButton(ControlInterface button) {
+ if (mCurrentlyEditedButton != null)
mCurrentlyEditedButton.getControlView().removeOnLayoutChangeListener(mLayoutChangedListener);
mCurrentlyEditedButton = button;
mCurrentlyEditedButton.getControlView().addOnLayoutChangeListener(mLayoutChangedListener);
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabricInstallFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabricInstallFragment.java
index 4626a1df9..6bcc93b84 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabricInstallFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabricInstallFragment.java
@@ -1,195 +1,24 @@
package net.kdt.pojavlaunch.fragments;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Adapter;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ProgressBar;
-import android.widget.Spinner;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-
-import net.kdt.pojavlaunch.JavaGUILauncherActivity;
-import net.kdt.pojavlaunch.R;
-import net.kdt.pojavlaunch.Tools;
-import net.kdt.pojavlaunch.modloaders.FabricDownloadTask;
-import net.kdt.pojavlaunch.modloaders.FabricUtils;
-import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener;
+import net.kdt.pojavlaunch.modloaders.FabriclikeUtils;
import net.kdt.pojavlaunch.modloaders.ModloaderListenerProxy;
-import net.kdt.pojavlaunch.profiles.VersionSelectorDialog;
-import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
+public class FabricInstallFragment extends FabriclikeInstallFragment {
-public class FabricInstallFragment extends Fragment implements AdapterView.OnItemSelectedListener, ModloaderDownloadListener, Runnable {
- public static final String TAG = "FabricInstallTarget";
+ public static final String TAG = "FabricInstallFragment";
private static ModloaderListenerProxy sTaskProxy;
- private TextView mSelectedVersionLabel;
- private String mSelectedLoaderVersion;
- private Spinner mLoaderVersionSpinner;
- private String mSelectedGameVersion;
- private boolean mSelectedSnapshot;
- private ProgressBar mProgressBar;
- private File mDestinationDir;
- private Button mStartButton;
- private View mRetryView;
+
public FabricInstallFragment() {
- super(R.layout.fragment_fabric_install);
+ super(FabriclikeUtils.FABRIC_UTILS);
}
@Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- this.mDestinationDir = new File(Tools.DIR_CACHE, "fabric-installer");
+ protected ModloaderListenerProxy getListenerProxy() {
+ return sTaskProxy;
}
@Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- mStartButton = view.findViewById(R.id.fabric_installer_start_button);
- mStartButton.setOnClickListener(this::onClickStart);
- mSelectedVersionLabel = view.findViewById(R.id.fabric_installer_version_select_label);
- view.findViewById(R.id.fabric_installer_game_version_change).setOnClickListener(this::onClickSelect);
- mLoaderVersionSpinner = view.findViewById(R.id.fabric_installer_loader_ver_spinner);
- mLoaderVersionSpinner.setOnItemSelectedListener(this);
- mProgressBar = view.findViewById(R.id.fabric_installer_progress_bar);
- mRetryView = view.findViewById(R.id.fabric_installer_retry_layout);
- view.findViewById(R.id.fabric_installer_retry_button).setOnClickListener(this::onClickRetry);
- if(sTaskProxy != null) {
- mStartButton.setEnabled(false);
- sTaskProxy.attachListener(this);
- }
- new Thread(this).start();
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- if(sTaskProxy != null) {
- sTaskProxy.detachListener();
- }
- }
-
- private void onClickStart(View v) {
- if(ProgressKeeper.hasOngoingTasks()) {
- Toast.makeText(v.getContext(), R.string.tasks_ongoing, Toast.LENGTH_LONG).show();
- return;
- }
- sTaskProxy = new ModloaderListenerProxy();
- FabricDownloadTask fabricDownloadTask = new FabricDownloadTask(sTaskProxy, mDestinationDir);
- sTaskProxy.attachListener(this);
- mStartButton.setEnabled(false);
- new Thread(fabricDownloadTask).start();
- }
-
- private void onClickSelect(View v) {
- VersionSelectorDialog.open(v.getContext(), true, (id, snapshot)->{
- mSelectedGameVersion = id;
- mSelectedVersionLabel.setText(mSelectedGameVersion);
- mSelectedSnapshot = snapshot;
- if(mSelectedLoaderVersion != null && sTaskProxy == null) mStartButton.setEnabled(true);
- });
- }
-
- private void onClickRetry(View v) {
- mLoaderVersionSpinner.setAdapter(null);
- mStartButton.setEnabled(false);
- mProgressBar.setVisibility(View.VISIBLE);
- mRetryView.setVisibility(View.GONE);
- new Thread(this).start();
- }
-
- @Override
- public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
- Adapter adapter = adapterView.getAdapter();
- mSelectedLoaderVersion = (String) adapter.getItem(i);
- }
-
- @Override
- public void onNothingSelected(AdapterView> adapterView) {
- mSelectedLoaderVersion = null;
- }
-
- @Override
- public void onDownloadFinished(File downloadedFile) {
- Tools.runOnUiThread(()->{
- Context context = requireContext();
- sTaskProxy.detachListener();
- sTaskProxy = null;
- mStartButton.setEnabled(true);
- // This works because the due to the fact that we have transitioned here
- // without adding a transaction to the back stack, which caused the previous
- // transaction to be amended (i guess?? thats how the back stack dump looks like)
- // we can get back to the main fragment with just one back stack pop.
- // For some reason that amendment causes the transaction to lose its tag
- // so we cant use the tag here.
- getParentFragmentManager().popBackStackImmediate();
- Intent intent = new Intent(context, JavaGUILauncherActivity.class);
- FabricUtils.addAutoInstallArgs(intent, downloadedFile, mSelectedGameVersion, mSelectedLoaderVersion, mSelectedSnapshot, true);
- context.startActivity(intent);
- });
- }
-
- @Override
- public void onDataNotAvailable() {
- Tools.runOnUiThread(()->{
- Context context = requireContext();
- sTaskProxy.detachListener();
- sTaskProxy = null;
- mStartButton.setEnabled(true);
- Tools.dialog(context,
- context.getString(R.string.global_error),
- context.getString(R.string.fabric_dl_cant_read_meta));
- });
- }
-
- @Override
- public void onDownloadError(Exception e) {
- Tools.runOnUiThread(()-> {
- Context context = requireContext();
- sTaskProxy.detachListener();
- sTaskProxy = null;
- mStartButton.setEnabled(true);
- Tools.showError(context, e);
- });
- }
-
- @Override
- public void run() {
- try {
- List mLoaderVersions = FabricUtils.downloadLoaderVersionList(false);
- if (mLoaderVersions != null) {
- Tools.runOnUiThread(()->{
- Context context = getContext();
- if(context == null) return;
- ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, R.layout.support_simple_spinner_dropdown_item, mLoaderVersions);
- mLoaderVersionSpinner.setAdapter(arrayAdapter);
- mProgressBar.setVisibility(View.GONE);
- });
- }else{
- Tools.runOnUiThread(()-> {
- mRetryView.setVisibility(View.VISIBLE);
- mProgressBar.setVisibility(View.GONE);
- });
- }
- }catch (IOException e) {
- Tools.runOnUiThread(()-> {
- if(getContext() != null) Tools.showError(getContext(), e);
- mRetryView.setVisibility(View.VISIBLE);
- mProgressBar.setVisibility(View.GONE);
- });
- }
+ protected void setListenerProxy(ModloaderListenerProxy listenerProxy) {
+ sTaskProxy = listenerProxy;
}
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabriclikeInstallFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabriclikeInstallFragment.java
new file mode 100644
index 000000000..8c7d93724
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/FabriclikeInstallFragment.java
@@ -0,0 +1,293 @@
+package net.kdt.pojavlaunch.fragments;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ProgressBar;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import net.kdt.pojavlaunch.PojavApplication;
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.FabriclikeDownloadTask;
+import net.kdt.pojavlaunch.modloaders.FabriclikeUtils;
+import net.kdt.pojavlaunch.modloaders.FabricVersion;
+import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener;
+import net.kdt.pojavlaunch.modloaders.ModloaderListenerProxy;
+import net.kdt.pojavlaunch.modloaders.modpacks.SelfReferencingFuture;
+import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.Future;
+
+public abstract class FabriclikeInstallFragment extends Fragment implements ModloaderDownloadListener, CompoundButton.OnCheckedChangeListener {
+ private final FabriclikeUtils mFabriclikeUtils;
+ private Spinner mGameVersionSpinner;
+ private FabricVersion[] mGameVersionArray;
+ private Future> mGameVersionFuture;
+ private String mSelectedGameVersion;
+ private Spinner mLoaderVersionSpinner;
+ private FabricVersion[] mLoaderVersionArray;
+ private Future> mLoaderVersionFuture;
+ private String mSelectedLoaderVersion;
+ private ProgressBar mProgressBar;
+ private Button mStartButton;
+ private View mRetryView;
+ private CheckBox mOnlyStableCheckbox;
+ protected FabriclikeInstallFragment(FabriclikeUtils mFabriclikeUtils) {
+ super(R.layout.fragment_fabric_install);
+ this.mFabriclikeUtils = mFabriclikeUtils;
+ }
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ mStartButton = view.findViewById(R.id.fabric_installer_start_button);
+ mStartButton.setOnClickListener(this::onClickStart);
+ mGameVersionSpinner = view.findViewById(R.id.fabric_installer_game_ver_spinner);
+ mGameVersionSpinner.setOnItemSelectedListener(new GameVersionSelectedListener());
+ mLoaderVersionSpinner = view.findViewById(R.id.fabric_installer_loader_ver_spinner);
+ mLoaderVersionSpinner.setOnItemSelectedListener(new LoaderVersionSelectedListener());
+ mProgressBar = view.findViewById(R.id.fabric_installer_progress_bar);
+ mRetryView = view.findViewById(R.id.fabric_installer_retry_layout);
+ mOnlyStableCheckbox = view.findViewById(R.id.fabric_installer_only_stable_checkbox);
+ mOnlyStableCheckbox.setOnCheckedChangeListener(this);
+ view.findViewById(R.id.fabric_installer_retry_button).setOnClickListener(this::onClickRetry);
+ ((TextView)view.findViewById(R.id.fabric_installer_label_loader_ver)).setText(getString(R.string.fabric_dl_loader_version, mFabriclikeUtils.getName()));
+ ModloaderListenerProxy proxy = getListenerProxy();
+ if(proxy != null) {
+ mStartButton.setEnabled(false);
+ proxy.attachListener(this);
+ }
+ updateGameVersions();
+ }
+
+ @Override
+ public void onStop() {
+ cancelFutureChecked(mGameVersionFuture);
+ cancelFutureChecked(mLoaderVersionFuture);
+ ModloaderListenerProxy proxy = getListenerProxy();
+ if(proxy != null) {
+ proxy.detachListener();
+ }
+ super.onStop();
+ }
+
+ private void onClickStart(View v) {
+ if(ProgressKeeper.hasOngoingTasks()) {
+ Toast.makeText(v.getContext(), R.string.tasks_ongoing, Toast.LENGTH_LONG).show();
+ return;
+ }
+ ModloaderListenerProxy proxy = new ModloaderListenerProxy();
+ FabriclikeDownloadTask fabricDownloadTask = new FabriclikeDownloadTask(proxy, mFabriclikeUtils,
+ mSelectedGameVersion, mSelectedLoaderVersion, true);
+ proxy.attachListener(this);
+ setListenerProxy(proxy);
+ mStartButton.setEnabled(false);
+ new Thread(fabricDownloadTask).start();
+ }
+
+ private void onClickRetry(View v) {
+ mStartButton.setEnabled(false);
+ mRetryView.setVisibility(View.GONE);
+ mLoaderVersionSpinner.setAdapter(null);
+ if(mGameVersionArray == null) {
+ mGameVersionSpinner.setAdapter(null);
+ updateGameVersions();
+ return;
+ }
+ updateLoaderVersions();
+ }
+
+ @Override
+ public void onDownloadFinished(File downloadedFile) {
+ Tools.runOnUiThread(()->{
+
+ getListenerProxy().detachListener();
+ setListenerProxy(null);
+ mStartButton.setEnabled(true);
+ // This works because the due to the fact that we have transitioned here
+ // without adding a transaction to the back stack, which caused the previous
+ // transaction to be amended (i guess?? thats how the back stack dump looks like)
+ // we can get back to the main fragment with just one back stack pop.
+ // For some reason that amendment causes the transaction to lose its tag
+ // so we cant use the tag here.
+ getParentFragmentManager().popBackStackImmediate();
+ });
+ }
+
+ @Override
+ public void onDataNotAvailable() {
+ Tools.runOnUiThread(()->{
+ Context context = requireContext();
+ getListenerProxy().detachListener();
+ setListenerProxy(null);
+ mStartButton.setEnabled(true);
+ Tools.dialog(context,
+ context.getString(R.string.global_error),
+ context.getString(R.string.fabric_dl_cant_read_meta, mFabriclikeUtils.getName()));
+ });
+ }
+
+ @Override
+ public void onDownloadError(Exception e) {
+ Tools.runOnUiThread(()-> {
+ Context context = requireContext();
+ getListenerProxy().detachListener();
+ setListenerProxy(null);
+ mStartButton.setEnabled(true);
+ Tools.showError(context, e);
+ });
+ }
+
+ private void cancelFutureChecked(Future> future) {
+ if(future != null && !future.isCancelled()) future.cancel(true);
+ }
+
+ private void startLoading() {
+ mProgressBar.setVisibility(View.VISIBLE);
+ mStartButton.setEnabled(false);
+ }
+
+ private void stopLoading() {
+ mProgressBar.setVisibility(View.GONE);
+ // The "visibility on" is managed by the spinners
+ }
+
+ private ArrayAdapter createAdapter(FabricVersion[] fabricVersions, boolean onlyStable) {
+ ArrayList filteredVersions = new ArrayList<>(fabricVersions.length);
+ for(FabricVersion fabricVersion : fabricVersions) {
+ if(!onlyStable || fabricVersion.stable) filteredVersions.add(fabricVersion);
+ }
+ filteredVersions.trimToSize();
+ return new ArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_dropdown_item, filteredVersions);
+ }
+
+ private void onException(Future> myFuture, Exception e) {
+ Tools.runOnUiThread(()->{
+ if(myFuture.isCancelled()) return;
+ stopLoading();
+ if(e != null) Tools.showError(requireContext(), e);
+ mRetryView.setVisibility(View.VISIBLE);
+ });
+ }
+
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ updateGameSpinner();
+ updateLoaderSpinner();
+ }
+
+ class LoaderVersionSelectedListener implements AdapterView.OnItemSelectedListener {
+
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ mSelectedLoaderVersion = ((FabricVersion) adapterView.getAdapter().getItem(i)).version;
+ mStartButton.setEnabled(mSelectedGameVersion != null);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+ mSelectedLoaderVersion = null;
+ mStartButton.setEnabled(false);
+ }
+ }
+
+ class LoadLoaderVersionsTask implements SelfReferencingFuture.FutureInterface {
+ @Override
+ public void run(Future> myFuture) {
+ Log.i("LoadLoaderVersions", "Starting...");
+ try {
+ mLoaderVersionArray = mFabriclikeUtils.downloadLoaderVersions(mSelectedGameVersion);
+ if(mLoaderVersionArray != null) onFinished(myFuture);
+ else onException(myFuture, null);
+ }catch (IOException e) {
+ onException(myFuture, e);
+ }
+ }
+ private void onFinished(Future> myFuture) {
+ Tools.runOnUiThread(()->{
+ if(myFuture.isCancelled()) return;
+ stopLoading();
+ updateLoaderSpinner();
+ });
+ }
+ }
+
+ private void updateLoaderVersions() {
+ startLoading();
+ mLoaderVersionFuture = new SelfReferencingFuture(new LoadLoaderVersionsTask()).startOnExecutor(PojavApplication.sExecutorService);
+ }
+
+ private void updateLoaderSpinner() {
+ mLoaderVersionSpinner.setAdapter(createAdapter(mLoaderVersionArray, mOnlyStableCheckbox.isChecked()));
+ }
+
+ class GameVersionSelectedListener implements AdapterView.OnItemSelectedListener {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ mSelectedGameVersion = ((FabricVersion) adapterView.getAdapter().getItem(i)).version;
+ cancelFutureChecked(mLoaderVersionFuture);
+ updateLoaderVersions();
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+ mSelectedGameVersion = null;
+ if(mLoaderVersionFuture != null) mLoaderVersionFuture.cancel(true);
+ adapterView.setAdapter(null);
+ }
+
+ }
+
+ class LoadGameVersionsTask implements SelfReferencingFuture.FutureInterface {
+ @Override
+ public void run(Future> myFuture) {
+ try {
+ mGameVersionArray = mFabriclikeUtils.downloadGameVersions();
+ if(mGameVersionArray != null) onFinished(myFuture);
+ else onException(myFuture, null);
+ }catch (IOException e) {
+ onException(myFuture, e);
+ }
+ }
+ private void onFinished(Future> myFuture) {
+ Tools.runOnUiThread(()->{
+ if(myFuture.isCancelled()) return;
+ stopLoading();
+ updateGameSpinner();
+ });
+ }
+ }
+
+ private void updateGameVersions() {
+ startLoading();
+ mGameVersionFuture = new SelfReferencingFuture(new LoadGameVersionsTask()).startOnExecutor(PojavApplication.sExecutorService);
+ }
+
+ private void updateGameSpinner() {
+ mGameVersionSpinner.setAdapter(createAdapter(mGameVersionArray, mOnlyStableCheckbox.isChecked()));
+ }
+
+ protected abstract ModloaderListenerProxy getListenerProxy();
+ protected abstract void setListenerProxy(ModloaderListenerProxy listenerProxy);
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ForgeInstallFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ForgeInstallFragment.java
index fe609697f..9455a23b4 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ForgeInstallFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ForgeInstallFragment.java
@@ -59,7 +59,7 @@ public class ForgeInstallFragment extends ModVersionListFragment> {
@Override
public Runnable createDownloadTask(Object selectedVersion, ModloaderListenerProxy listenerProxy) {
- return new ForgeDownloadTask(listenerProxy, (String) selectedVersion, new File(Tools.DIR_CACHE, "forge-installer.jar"));
+ return new ForgeDownloadTask(listenerProxy, (String) selectedVersion);
}
@Override
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java
index 29e5b4d33..701a7a76b 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java
@@ -13,16 +13,21 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import com.kdt.mcgui.mcVersionSpinner;
+
import net.kdt.pojavlaunch.CustomControlsActivity;
import net.kdt.pojavlaunch.R;
import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.extra.ExtraConstants;
import net.kdt.pojavlaunch.extra.ExtraCore;
import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
+import net.kdt.pojavlaunch.value.launcherprofiles.LauncherProfiles;
public class MainMenuFragment extends Fragment {
public static final String TAG = "MainMenuFragment";
+ private mcVersionSpinner mVersionSpinner;
+
public MainMenuFragment(){
super(R.layout.fragment_launcher);
}
@@ -36,6 +41,7 @@ public class MainMenuFragment extends Fragment {
ImageButton mEditProfileButton = view.findViewById(R.id.edit_profile_button);
Button mPlayButton = view.findViewById(R.id.play_button);
+ mVersionSpinner = view.findViewById(R.id.mc_version_spinner);
mNewsButton.setOnClickListener(v -> Tools.openURL(requireActivity(), Tools.URL_HOME));
mCustomControlButton.setOnClickListener(v -> startActivity(new Intent(requireContext(), CustomControlsActivity.class)));
@@ -51,10 +57,17 @@ public class MainMenuFragment extends Fragment {
mShareLogsButton.setOnClickListener((v) -> shareLog(requireContext()));
mNewsButton.setOnLongClickListener((v)->{
- Tools.swapFragment(requireActivity(), FabricInstallFragment.class, FabricInstallFragment.TAG, true, null);
+ Tools.swapFragment(requireActivity(), SearchModFragment.class, SearchModFragment.TAG, true, null);
return true;
});
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mVersionSpinner.reloadProfiles();
+ }
+
private void runInstallerWithConfirmation(boolean isCustomArgs) {
if (ProgressKeeper.getTaskCount() == 0)
Tools.installMod(requireActivity(), isCustomArgs);
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java
index f1ac32a51..581e487f0 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java
@@ -58,10 +58,10 @@ public abstract class ModVersionListFragment extends Fragment implements Runn
}
@Override
- public void onDestroyView() {
+ public void onStop() {
ModloaderListenerProxy taskProxy = getTaskProxy();
if(taskProxy != null) taskProxy.detachListener();
- super.onDestroyView();
+ super.onStop();
}
@Override
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/OptiFineInstallFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/OptiFineInstallFragment.java
index a37704618..abe7c0b39 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/OptiFineInstallFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/OptiFineInstallFragment.java
@@ -51,8 +51,7 @@ public class OptiFineInstallFragment extends ModVersionListFragment renderList = new ArrayList<>(5);
Collections.addAll(renderList, getResources().getStringArray(R.array.renderer));
renderList.add("Default");
- mDefaultRenderer.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, renderList));
+ mDefaultRenderer.setAdapter(new ArrayAdapter<>(getContext(), R.layout.item_simple_list_1, renderList));
// Set up behaviors
mSaveButton.setOnClickListener(v -> {
@@ -84,9 +83,12 @@ public class ProfileEditorFragment extends Fragment {
});
mDeleteButton.setOnClickListener(v -> {
- LauncherProfiles.mainProfileJson.profiles.remove(mProfileKey);
- LauncherProfiles.update();
- ExtraCore.setValue(ExtraConstants.REFRESH_VERSION_SPINNER, DELETED_PROFILE);
+ if(LauncherProfiles.mainProfileJson.profiles.size() > 1){
+ LauncherProfiles.mainProfileJson.profiles.remove(mProfileKey);
+ LauncherProfiles.write();
+ ExtraCore.setValue(ExtraConstants.REFRESH_VERSION_SPINNER, DELETED_PROFILE);
+ }
+
Tools.removeCurrentFragment(requireActivity());
});
@@ -160,11 +162,7 @@ public class ProfileEditorFragment extends Fragment {
mProfileKey = profile;
}else{
minecraftProfile = MinecraftProfile.createTemplate();
- String uuid = UUID.randomUUID().toString();
- while(LauncherProfiles.mainProfileJson.profiles.containsKey(uuid)) {
- uuid = UUID.randomUUID().toString();
- }
- mProfileKey = uuid;
+ mProfileKey = LauncherProfiles.getFreeProfileKey();
}
return minecraftProfile;
}
@@ -208,7 +206,7 @@ public class ProfileEditorFragment extends Fragment {
LauncherProfiles.mainProfileJson.profiles.put(mProfileKey, mTempProfile);
- LauncherProfiles.update();
+ LauncherProfiles.write();
ExtraCore.setValue(ExtraConstants.REFRESH_VERSION_SPINNER, mProfileKey);
}
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ProfileTypeSelectFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ProfileTypeSelectFragment.java
index 2c29ffff5..e8d4f86c1 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ProfileTypeSelectFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ProfileTypeSelectFragment.java
@@ -31,5 +31,9 @@ public class ProfileTypeSelectFragment extends Fragment {
Tools.swapFragment(requireActivity(), FabricInstallFragment.class, FabricInstallFragment.TAG, false, null));
view.findViewById(R.id.modded_profile_forge).setOnClickListener((v)->
Tools.swapFragment(requireActivity(), ForgeInstallFragment.class, ForgeInstallFragment.TAG, false, null));
+ view.findViewById(R.id.modded_profile_modpack).setOnClickListener((v)->
+ Tools.swapFragment(requireActivity(), SearchModFragment.class, SearchModFragment.TAG, false, null));
+ view.findViewById(R.id.modded_profile_quilt).setOnClickListener((v)->
+ Tools.swapFragment(requireActivity(), QuiltInstallFragment.class, QuiltInstallFragment.TAG, false, null));
}
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/QuiltInstallFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/QuiltInstallFragment.java
new file mode 100644
index 000000000..f7356ed3d
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/QuiltInstallFragment.java
@@ -0,0 +1,24 @@
+package net.kdt.pojavlaunch.fragments;
+
+import net.kdt.pojavlaunch.modloaders.FabriclikeUtils;
+import net.kdt.pojavlaunch.modloaders.ModloaderListenerProxy;
+
+public class QuiltInstallFragment extends FabriclikeInstallFragment {
+
+ public static final String TAG = "QuiltInstallFragment";
+ private static ModloaderListenerProxy sTaskProxy;
+
+ public QuiltInstallFragment() {
+ super(FabriclikeUtils.QUILT_UTILS);
+ }
+
+ @Override
+ protected ModloaderListenerProxy getListenerProxy() {
+ return sTaskProxy;
+ }
+
+ @Override
+ protected void setListenerProxy(ModloaderListenerProxy listenerProxy) {
+ sTaskProxy = listenerProxy;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java
new file mode 100644
index 000000000..ace5d14af
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java
@@ -0,0 +1,165 @@
+package net.kdt.pojavlaunch.fragments;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.math.MathUtils;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.modloaders.modpacks.ModItemAdapter;
+import net.kdt.pojavlaunch.modloaders.modpacks.api.CommonApi;
+import net.kdt.pojavlaunch.modloaders.modpacks.api.ModpackApi;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.profiles.VersionSelectorDialog;
+import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
+
+public class SearchModFragment extends Fragment implements ModItemAdapter.SearchResultCallback {
+
+ public static final String TAG = "SearchModFragment";
+ private View mOverlay;
+ private float mOverlayTopCache; // Padding cache reduce resource lookup
+
+ private final RecyclerView.OnScrollListener mOverlayPositionListener = new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ mOverlay.setY(MathUtils.clamp(mOverlay.getY() - dy, -mOverlay.getHeight(), mOverlayTopCache));
+ }
+ };
+
+ private EditText mSearchEditText;
+ private ImageButton mFilterButton;
+ private RecyclerView mRecyclerview;
+ private ModItemAdapter mModItemAdapter;
+ private ProgressBar mSearchProgressBar;
+ private TextView mStatusTextView;
+ private ColorStateList mDefaultTextColor;
+
+ private ModpackApi modpackApi;
+
+ private final SearchFilters mSearchFilters;
+
+ public SearchModFragment(){
+ super(R.layout.fragment_mod_search);
+ mSearchFilters = new SearchFilters();
+ mSearchFilters.isModpack = true;
+ }
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ modpackApi = new CommonApi(context.getString(R.string.curseforge_api_key));
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ // You can only access resources after attaching to current context
+ mModItemAdapter = new ModItemAdapter(getResources(), modpackApi, this);
+ ProgressKeeper.addTaskCountListener(mModItemAdapter);
+ mOverlayTopCache = getResources().getDimension(R.dimen.fragment_padding_medium);
+
+ mOverlay = view.findViewById(R.id.search_mod_overlay);
+ mSearchEditText = view.findViewById(R.id.search_mod_edittext);
+ mSearchProgressBar = view.findViewById(R.id.search_mod_progressbar);
+ mRecyclerview = view.findViewById(R.id.search_mod_list);
+ mStatusTextView = view.findViewById(R.id.search_mod_status_text);
+ mFilterButton = view.findViewById(R.id.search_mod_filter);
+
+ mDefaultTextColor = mStatusTextView.getTextColors();
+
+ mRecyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
+ mRecyclerview.setAdapter(mModItemAdapter);
+
+ mRecyclerview.addOnScrollListener(mOverlayPositionListener);
+
+ mSearchEditText.setOnEditorActionListener((v, actionId, event) -> {
+ mSearchProgressBar.setVisibility(View.VISIBLE);
+ mSearchFilters.name = mSearchEditText.getText().toString();
+ mModItemAdapter.performSearchQuery(mSearchFilters);
+ return true;
+ });
+
+ mOverlay.post(()->{
+ int overlayHeight = mOverlay.getHeight();
+ mRecyclerview.setPadding(mRecyclerview.getPaddingLeft(),
+ mRecyclerview.getPaddingTop() + overlayHeight,
+ mRecyclerview.getPaddingRight(),
+ mRecyclerview.getPaddingBottom());
+ });
+ mFilterButton.setOnClickListener(v -> displayFilterDialog());
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ ProgressKeeper.removeTaskCountListener(mModItemAdapter);
+ mRecyclerview.removeOnScrollListener(mOverlayPositionListener);
+ }
+
+ @Override
+ public void onSearchFinished() {
+ mSearchProgressBar.setVisibility(View.GONE);
+ mStatusTextView.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onSearchError(int error) {
+ mSearchProgressBar.setVisibility(View.GONE);
+ mStatusTextView.setVisibility(View.VISIBLE);
+ switch (error) {
+ case ERROR_INTERNAL:
+ mStatusTextView.setTextColor(Color.RED);
+ mStatusTextView.setText(R.string.search_modpack_error);
+ break;
+ case ERROR_NO_RESULTS:
+ mStatusTextView.setTextColor(mDefaultTextColor);
+ mStatusTextView.setText(R.string.search_modpack_no_result);
+ break;
+ }
+ }
+
+ private void displayFilterDialog() {
+ AlertDialog dialog = new AlertDialog.Builder(requireContext())
+ .setView(R.layout.dialog_mod_filters)
+ .create();
+
+ // setup the view behavior
+ dialog.setOnShowListener(dialogInterface -> {
+ TextView mSelectedVersion = dialog.findViewById(R.id.search_mod_selected_mc_version_textview);
+ Button mSelectVersionButton = dialog.findViewById(R.id.search_mod_mc_version_button);
+ Button mApplyButton = dialog.findViewById(R.id.search_mod_apply_filters);
+
+ assert mSelectVersionButton != null;
+ assert mSelectedVersion != null;
+ assert mApplyButton != null;
+
+ // Setup the expendable list behavior
+ mSelectVersionButton.setOnClickListener(v -> VersionSelectorDialog.open(v.getContext(), true, (id, snapshot)-> mSelectedVersion.setText(id)));
+
+ // Apply visually all the current settings
+ mSelectedVersion.setText(mSearchFilters.mcVersion);
+
+ // Apply the new settings
+ mApplyButton.setOnClickListener(v -> {
+ mSearchFilters.mcVersion = mSelectedVersion.getText().toString();
+ dialogInterface.dismiss();
+ });
+ });
+
+
+ dialog.show();
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricDownloadTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricDownloadTask.java
deleted file mode 100644
index 03ea723ad..000000000
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricDownloadTask.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package net.kdt.pojavlaunch.modloaders;
-
-import com.kdt.mcgui.ProgressLayout;
-
-import net.kdt.pojavlaunch.R;
-import net.kdt.pojavlaunch.Tools;
-import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
-import net.kdt.pojavlaunch.utils.DownloadUtils;
-
-import java.io.File;
-import java.io.IOException;
-
-public class FabricDownloadTask implements Runnable, Tools.DownloaderFeedback{
- private final File mDestinationDir;
- private final File mDestinationFile;
- private final ModloaderDownloadListener mModloaderDownloadListener;
-
- public FabricDownloadTask(ModloaderDownloadListener modloaderDownloadListener, File mDestinationDir) {
- this.mModloaderDownloadListener = modloaderDownloadListener;
- this.mDestinationDir = mDestinationDir;
- this.mDestinationFile = new File(mDestinationDir, "fabric-installer.jar");
- }
-
- @Override
- public void run() {
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.fabric_dl_progress);
- try {
- if(runCatching()) mModloaderDownloadListener.onDownloadFinished(mDestinationFile);
- }catch (IOException e) {
- mModloaderDownloadListener.onDownloadError(e);
- }
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, -1, -1);
- }
-
- private boolean runCatching() throws IOException {
- if(!mDestinationDir.exists() && !mDestinationDir.mkdirs()) throw new IOException("Failed to create cache directory");
- String[] urlAndVersion = FabricUtils.getInstallerUrlAndVersion();
- if(urlAndVersion == null) {
- mModloaderDownloadListener.onDataNotAvailable();
- return false;
- }
- File versionFile = new File(mDestinationDir, "fabric-installer-version");
- boolean shouldDownloadInstaller = true;
- if(urlAndVersion[1] != null && versionFile.canRead()) { // if we know the latest version that we have and the server has
- try {
- shouldDownloadInstaller = !urlAndVersion[1].equals(Tools.read(versionFile.getAbsolutePath()));
- }catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(shouldDownloadInstaller) {
- if (urlAndVersion[0] != null) {
- byte[] buffer = new byte[8192];
- DownloadUtils.downloadFileMonitored(urlAndVersion[0], mDestinationFile, buffer, this);
- if(urlAndVersion[1] != null) {
- try {
- Tools.write(versionFile.getAbsolutePath(), urlAndVersion[1]);
- }catch (IOException e) {
- e.printStackTrace();
- }
- }
- return true;
- } else {
- mModloaderDownloadListener.onDataNotAvailable();
- return false;
- }
- }else{
- return true;
- }
- }
-
- @Override
- public void updateProgress(int curr, int max) {
- int progress100 = (int)(((float)curr / (float)max)*100f);
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, progress100, R.string.fabric_dl_progress);
- }
-}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricUtils.java
deleted file mode 100644
index 83f849a78..000000000
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricUtils.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package net.kdt.pojavlaunch.modloaders;
-
-import android.content.Intent;
-
-import net.kdt.pojavlaunch.Tools;
-import net.kdt.pojavlaunch.utils.DownloadUtils;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class FabricUtils {
- private static final String FABRIC_INSTALLER_METADATA_URL = "https://meta.fabricmc.net/v2/versions/installer";
- private static final String FABRIC_LOADER_METADATA_URL = "https://meta.fabricmc.net/v2/versions/loader";
- public static List downloadLoaderVersionList(boolean onlyStable) throws IOException {
- try {
- return DownloadUtils.downloadStringCached(FABRIC_LOADER_METADATA_URL,
- "fabric_loader_versions", (input)->{
- final List loaderList = new ArrayList<>();
- try {
- enumerateMetadata(input, (object) -> {
- if (onlyStable && !object.getBoolean("stable")) return false;
- loaderList.add(object.getString("version"));
- return false;
- });
- }catch (JSONException e) {
- throw new DownloadUtils.ParseException(e);
- }
- return loaderList;
- });
- }catch (DownloadUtils.ParseException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- public static String[] getInstallerUrlAndVersion() throws IOException{
- String installerMetadata = DownloadUtils.downloadString(FABRIC_INSTALLER_METADATA_URL);
- try {
- return DownloadUtils.downloadStringCached(FABRIC_INSTALLER_METADATA_URL,
- "fabric_installer_versions", input -> {
- try {
- JSONObject selectedMetadata = enumerateMetadata(installerMetadata, (object) ->
- object.getBoolean("stable"));
- if (selectedMetadata == null) return null;
- return new String[]{selectedMetadata.getString("url"),
- selectedMetadata.getString("version")};
- } catch (JSONException e) {
- throw new DownloadUtils.ParseException(e);
- }
- });
- }catch (DownloadUtils.ParseException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- public static void addAutoInstallArgs(Intent intent, File modInstalllerJar,
- String gameVersion, String loaderVersion,
- boolean isSnapshot, boolean createProfile) {
- intent.putExtra("javaArgs", "-jar " + modInstalllerJar.getAbsolutePath() + " client -dir "+ Tools.DIR_GAME_NEW
- + " -mcversion "+gameVersion +" -loader "+loaderVersion +
- (isSnapshot ? " -snapshot" : "") +
- (createProfile ? "" : " -noprofile"));
- intent.putExtra("openLogOutput", true);
-
- }
-
- private static JSONObject enumerateMetadata(String inputMetadata, FabricMetaReader metaReader) throws JSONException{
- JSONArray fullMetadata = new JSONArray(inputMetadata);
- JSONObject metadataObject = null;
- for(int i = 0; i < fullMetadata.length(); i++) {
- metadataObject = fullMetadata.getJSONObject(i);
- if(metaReader.processMetadata(metadataObject)) return metadataObject;
- }
- return metadataObject;
- }
-}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricVersion.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricVersion.java
new file mode 100644
index 000000000..b1a5358b7
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabricVersion.java
@@ -0,0 +1,24 @@
+package net.kdt.pojavlaunch.modloaders;
+
+import androidx.annotation.NonNull;
+
+public class FabricVersion {
+ public String version;
+ public boolean stable;
+
+ public static class LoaderDescriptor extends FabricVersion {
+ public FabricVersion loader;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return loader != null ? loader.toString() : "null";
+ }
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return version;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeDownloadTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeDownloadTask.java
new file mode 100644
index 000000000..706acbce3
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeDownloadTask.java
@@ -0,0 +1,76 @@
+package net.kdt.pojavlaunch.modloaders;
+
+import com.kdt.mcgui.ProgressLayout;
+
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
+import net.kdt.pojavlaunch.utils.DownloadUtils;
+import net.kdt.pojavlaunch.value.launcherprofiles.LauncherProfiles;
+import net.kdt.pojavlaunch.value.launcherprofiles.MinecraftProfile;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.IOException;
+
+public class FabriclikeDownloadTask implements Runnable, Tools.DownloaderFeedback{
+ private final ModloaderDownloadListener mModloaderDownloadListener;
+ private final FabriclikeUtils mUtils;
+ private final String mGameVersion;
+ private final String mLoaderVersion;
+ private final boolean mCreateProfile;
+ public FabriclikeDownloadTask(ModloaderDownloadListener modloaderDownloadListener, FabriclikeUtils utils, String mGameVersion, String mLoaderVersion, boolean mCreateProfile) {
+ this.mModloaderDownloadListener = modloaderDownloadListener;
+ this.mUtils = utils;
+ this.mGameVersion = mGameVersion;
+ this.mLoaderVersion = mLoaderVersion;
+ this.mCreateProfile = mCreateProfile;
+ }
+
+ @Override
+ public void run() {
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.fabric_dl_progress);
+ try {
+ if(runCatching()) mModloaderDownloadListener.onDownloadFinished(null);
+ else mModloaderDownloadListener.onDataNotAvailable();
+ }catch (IOException e) {
+ mModloaderDownloadListener.onDownloadError(e);
+ }
+ ProgressLayout.clearProgress(ProgressLayout.INSTALL_MODPACK);
+ }
+
+ private boolean runCatching() throws IOException{
+ String fabricJson = DownloadUtils.downloadString(mUtils.createJsonDownloadUrl(mGameVersion, mLoaderVersion));
+ String versionId;
+ try {
+ JSONObject fabricJsonObject = new JSONObject(fabricJson);
+ versionId = fabricJsonObject.getString("id");
+ }catch (JSONException e) {
+ e.printStackTrace();
+ return false;
+ }
+ File versionJsonDir = new File(Tools.DIR_HOME_VERSION, versionId);
+ File versionJsonFile = new File(versionJsonDir, versionId+".json");
+ if(versionJsonDir.isFile()) throw new IOException("Version destination directory is a file!");
+ if(!versionJsonDir.exists() && !versionJsonDir.mkdirs()) throw new IOException("Failed to create version directory");
+ Tools.write(versionJsonFile.getAbsolutePath(), fabricJson);
+ if(mCreateProfile) {
+ LauncherProfiles.load();
+ MinecraftProfile fabricProfile = new MinecraftProfile();
+ fabricProfile.lastVersionId = versionId;
+ fabricProfile.name = mUtils.getName();
+ fabricProfile.icon = mUtils.getIconName();
+ LauncherProfiles.insertMinecraftProfile(fabricProfile);
+ LauncherProfiles.write();
+ }
+ return true;
+ }
+
+ @Override
+ public void updateProgress(int curr, int max) {
+ int progress100 = (int)(((float)curr / (float)max)*100f);
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, progress100, R.string.fabric_dl_progress, mUtils.getName());
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeUtils.java
new file mode 100644
index 000000000..9dddb0049
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/FabriclikeUtils.java
@@ -0,0 +1,107 @@
+package net.kdt.pojavlaunch.modloaders;
+
+import com.google.gson.JsonSyntaxException;
+
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.utils.DownloadUtils;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+public class FabriclikeUtils {
+
+ public static final FabriclikeUtils FABRIC_UTILS = new FabriclikeUtils("https://meta.fabricmc.net/v2", "fabric", "Fabric", "fabric");
+ public static final FabriclikeUtils QUILT_UTILS = new FabriclikeUtils("https://meta.quiltmc.org/v3", "quilt", "Quilt", "quilt");
+
+ private static final String LOADER_METADATA_URL = "%s/versions/loader/%s";
+ private static final String GAME_METADATA_URL = "%s/versions/game";
+
+ private static final String JSON_DOWNLOAD_URL = "%s/versions/loader/%s/%s/profile/json";
+
+ private final String mApiUrl;
+ private final String mCachePrefix;
+ private final String mName;
+ private final String mIconName;
+
+ private FabriclikeUtils(String mApiUrl, String cachePrefix, String mName, String iconName) {
+ this.mApiUrl = mApiUrl;
+ this.mCachePrefix = cachePrefix;
+ this.mIconName = iconName;
+ this.mName = mName;
+ }
+
+ public FabricVersion[] downloadGameVersions() throws IOException{
+ try {
+ return DownloadUtils.downloadStringCached(String.format(GAME_METADATA_URL, mApiUrl), mCachePrefix+"_game_versions",
+ FabriclikeUtils::deserializeRawVersions
+ );
+ }catch (DownloadUtils.ParseException ignored) {}
+ return null;
+ }
+
+ public FabricVersion[] downloadLoaderVersions(String gameVersion) throws IOException{
+ try {
+ String urlEncodedGameVersion = URLEncoder.encode(gameVersion, "UTF-8");
+ return DownloadUtils.downloadStringCached(String.format(LOADER_METADATA_URL, mApiUrl, urlEncodedGameVersion),
+ mCachePrefix+"_loader_versions."+urlEncodedGameVersion,
+ (input)->{ try {
+ return deserializeLoaderVersions(input);
+ }catch (JSONException e) {
+ throw new DownloadUtils.ParseException(e);
+ }});
+
+ }catch (DownloadUtils.ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public String createJsonDownloadUrl(String gameVersion, String loaderVersion) {
+ try {
+ gameVersion = URLEncoder.encode(gameVersion, "UTF-8");
+ loaderVersion = URLEncoder.encode(loaderVersion, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ return String.format(JSON_DOWNLOAD_URL, mApiUrl, gameVersion, loaderVersion);
+ }
+
+ public String getName() {
+ return mName;
+ }
+ public String getIconName() {
+ return mIconName;
+ }
+
+ private static FabricVersion[] deserializeLoaderVersions(String input) throws JSONException {
+ JSONArray jsonArray = new JSONArray(input);
+ FabricVersion[] fabricVersions = new FabricVersion[jsonArray.length()];
+ for(int i = 0; i < jsonArray.length(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("loader");
+ FabricVersion fabricVersion = new FabricVersion();
+ fabricVersion.version = jsonObject.getString("version");
+ //Quilt has a skill issue and does not say which versions are stable or not
+ if(jsonObject.has("stable")) {
+ fabricVersion.stable = jsonObject.getBoolean("stable");
+ } else {
+ fabricVersion.stable = !fabricVersion.version.contains("beta");
+ }
+ fabricVersions[i] = fabricVersion;
+ }
+ return fabricVersions;
+ }
+
+ private static FabricVersion[] deserializeRawVersions(String jsonArrayIn) throws DownloadUtils.ParseException {
+ try {
+ return Tools.GLOBAL_GSON.fromJson(jsonArrayIn, FabricVersion[].class);
+ }catch (JsonSyntaxException e) {
+ e.printStackTrace();
+ throw new DownloadUtils.ParseException(null);
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeDownloadTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeDownloadTask.java
index 60dcd9b2d..81d7f1d1a 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeDownloadTask.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeDownloadTask.java
@@ -10,39 +10,79 @@ import net.kdt.pojavlaunch.utils.DownloadUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.util.List;
public class ForgeDownloadTask implements Runnable, Tools.DownloaderFeedback {
- private final String mForgeUrl;
- private final String mForgeVersion;
- private final File mDestinationFile;
+ private String mDownloadUrl;
+ private String mFullVersion;
+ private String mLoaderVersion;
+ private String mGameVersion;
private final ModloaderDownloadListener mListener;
- public ForgeDownloadTask(ModloaderDownloadListener listener, String forgeVersion, File destinationFile) {
+ public ForgeDownloadTask(ModloaderDownloadListener listener, String forgeVersion) {
this.mListener = listener;
- this.mForgeUrl = ForgeUtils.getInstallerUrl(forgeVersion);
- this.mForgeVersion = forgeVersion;
- this.mDestinationFile = destinationFile;
+ this.mDownloadUrl = ForgeUtils.getInstallerUrl(forgeVersion);
+ this.mFullVersion = forgeVersion;
+ }
+
+ public ForgeDownloadTask(ModloaderDownloadListener listener, String gameVersion, String loaderVersion) {
+ this.mListener = listener;
+ this.mLoaderVersion = loaderVersion;
+ this.mGameVersion = gameVersion;
}
@Override
public void run() {
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.forge_dl_progress, mForgeVersion);
- try {
- byte[] buffer = new byte[8192];
- DownloadUtils.downloadFileMonitored(mForgeUrl, mDestinationFile, buffer, this);
- mListener.onDownloadFinished(mDestinationFile);
- }catch (IOException e) {
- if(e instanceof FileNotFoundException) {
- mListener.onDataNotAvailable();
- }else{
- mListener.onDownloadError(e);
- }
+ if(determineDownloadUrl()) {
+ downloadForge();
}
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, -1, -1);
+ ProgressLayout.clearProgress(ProgressLayout.INSTALL_MODPACK);
}
@Override
public void updateProgress(int curr, int max) {
int progress100 = (int)(((float)curr / (float)max)*100f);
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, progress100, R.string.forge_dl_progress, mForgeVersion);
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, progress100, R.string.forge_dl_progress, mFullVersion);
+ }
+
+ private void downloadForge() {
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.forge_dl_progress, mFullVersion);
+ try {
+ File destinationFile = new File(Tools.DIR_CACHE, "forge-installer.jar");
+ byte[] buffer = new byte[8192];
+ DownloadUtils.downloadFileMonitored(mDownloadUrl, destinationFile, buffer, this);
+ mListener.onDownloadFinished(destinationFile);
+ }catch (FileNotFoundException e) {
+ mListener.onDataNotAvailable();
+ } catch (IOException e) {
+ mListener.onDownloadError(e);
+ }
+ }
+
+ public boolean determineDownloadUrl() {
+ if(mDownloadUrl != null && mFullVersion != null) return true;
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.forge_dl_searching);
+ try {
+ if(!findVersion()) {
+ mListener.onDataNotAvailable();
+ return false;
+ }
+ }catch (IOException e) {
+ mListener.onDownloadError(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean findVersion() throws IOException {
+ List forgeVersions = ForgeUtils.downloadForgeVersions();
+ if(forgeVersions == null) return false;
+ String versionStart = mGameVersion+"-"+mLoaderVersion;
+ for(String versionName : forgeVersions) {
+ if(!versionName.startsWith(versionStart)) continue;
+ mFullVersion = versionName;
+ mDownloadUrl = ForgeUtils.getInstallerUrl(mFullVersion);
+ return true;
+ }
+ return false;
}
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeUtils.java
index 31420de90..5925d9b4d 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeUtils.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/ForgeUtils.java
@@ -59,4 +59,10 @@ public class ForgeUtils {
" -jar "+modInstallerJar.getAbsolutePath());
intent.putExtra("skipDetectMod", true);
}
+ public static void addAutoInstallArgs(Intent intent, File modInstallerJar, String modpackFixupId) {
+ intent.putExtra("javaArgs", "-javaagent:"+ Tools.DIR_DATA+"/forge_installer/forge_installer.jar"
+ + "=\"" + modpackFixupId +"\"" +
+ " -jar "+modInstallerJar.getAbsolutePath());
+ intent.putExtra("skipDetectMod", true);
+ }
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/OptiFineDownloadTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/OptiFineDownloadTask.java
index c5278340d..d4fcfab68 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/OptiFineDownloadTask.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/OptiFineDownloadTask.java
@@ -22,9 +22,9 @@ public class OptiFineDownloadTask implements Runnable, Tools.DownloaderFeedback,
private final Object mMinecraftDownloadLock = new Object();
private Throwable mDownloaderThrowable;
- public OptiFineDownloadTask(OptiFineUtils.OptiFineVersion mOptiFineVersion, File mDestinationFile, ModloaderDownloadListener mListener) {
+ public OptiFineDownloadTask(OptiFineUtils.OptiFineVersion mOptiFineVersion, ModloaderDownloadListener mListener) {
this.mOptiFineVersion = mOptiFineVersion;
- this.mDestinationFile = mDestinationFile;
+ this.mDestinationFile = new File(Tools.DIR_CACHE, "optifine-installer.jar");
this.mListener = mListener;
}
@@ -36,7 +36,7 @@ public class OptiFineDownloadTask implements Runnable, Tools.DownloaderFeedback,
}catch (IOException e) {
mListener.onDownloadError(e);
}
- ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, -1, -1);
+ ProgressLayout.clearProgress(ProgressLayout.INSTALL_MODPACK);
}
public boolean runCatching() throws IOException {
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java
new file mode 100644
index 000000000..5eab19ab0
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java
@@ -0,0 +1,409 @@
+package net.kdt.pojavlaunch.modloaders.modpacks;
+
+import android.annotation.SuppressLint;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewStub;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.kdt.SimpleArrayAdapter;
+
+import net.kdt.pojavlaunch.PojavApplication;
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.modpacks.api.ModpackApi;
+import net.kdt.pojavlaunch.modloaders.modpacks.imagecache.ImageReceiver;
+import net.kdt.pojavlaunch.modloaders.modpacks.imagecache.ModIconCache;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.Constants;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchResult;
+import net.kdt.pojavlaunch.progresskeeper.TaskCountListener;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
+import java.util.WeakHashMap;
+import java.util.concurrent.Future;
+
+public class ModItemAdapter extends RecyclerView.Adapter implements TaskCountListener {
+ private static final ModItem[] MOD_ITEMS_EMPTY = new ModItem[0];
+ private static final int VIEW_TYPE_MOD_ITEM = 0;
+ private static final int VIEW_TYPE_LOADING = 1;
+
+ /* Used when versions haven't loaded yet, default text to reduce layout shifting */
+ private final SimpleArrayAdapter mLoadingAdapter = new SimpleArrayAdapter<>(Collections.singletonList("Loading"));
+ /* This my seem horribly inefficient but it is in fact the most efficient way without effectively writing a weak collection from scratch */
+ private final Set mViewHolderSet = Collections.newSetFromMap(new WeakHashMap<>());
+ private final ModIconCache mIconCache = new ModIconCache();
+ private final SearchResultCallback mSearchResultCallback;
+ private ModItem[] mModItems;
+ private final ModpackApi mModpackApi;
+
+ /* Cache for ever so slightly rounding the image for the corner not to stick out of the layout */
+ private final float mCornerDimensionCache;
+
+ private Future> mTaskInProgress;
+ private SearchFilters mSearchFilters;
+ private SearchResult mCurrentResult;
+ private boolean mLastPage;
+ private boolean mTasksRunning;
+
+
+ public ModItemAdapter(Resources resources, ModpackApi api, SearchResultCallback callback) {
+ mCornerDimensionCache = resources.getDimension(R.dimen._1sdp) / 250;
+ mModpackApi = api;
+ mModItems = new ModItem[]{};
+ mSearchResultCallback = callback;
+ }
+
+ public void performSearchQuery(SearchFilters searchFilters) {
+ if(mTaskInProgress != null) {
+ mTaskInProgress.cancel(true);
+ mTaskInProgress = null;
+ }
+ this.mSearchFilters = searchFilters;
+ this.mLastPage = false;
+ mTaskInProgress = new SelfReferencingFuture(new SearchApiTask(mSearchFilters, null))
+ .startOnExecutor(PojavApplication.sExecutorService);
+ }
+
+ @NonNull
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());
+ View view;
+ switch (viewType) {
+ case VIEW_TYPE_MOD_ITEM:
+ // Create a new view, which defines the UI of the list item
+ view = layoutInflater.inflate(R.layout.view_mod, viewGroup, false);
+ return new ViewHolder(view);
+ case VIEW_TYPE_LOADING:
+ // Create a new view, which is actually just the progress bar
+ view = layoutInflater.inflate(R.layout.view_loading, viewGroup, false);
+ return new LoadingViewHolder(view);
+ default:
+ throw new RuntimeException("Unimplemented view type!");
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+ switch (getItemViewType(position)) {
+ case VIEW_TYPE_MOD_ITEM:
+ ((ModItemAdapter.ViewHolder)holder).setStateLimited(mModItems[position]);
+ break;
+ case VIEW_TYPE_LOADING:
+ loadMoreResults();
+ break;
+ default:
+ throw new RuntimeException("Unimplemented view type!");
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ if(mLastPage || mModItems.length == 0) return mModItems.length;
+ return mModItems.length+1;
+ }
+
+ private void loadMoreResults() {
+ if(mTaskInProgress != null) return;
+ mTaskInProgress = new SelfReferencingFuture(new SearchApiTask(mSearchFilters, mCurrentResult))
+ .startOnExecutor(PojavApplication.sExecutorService);
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ if(position < mModItems.length) return VIEW_TYPE_MOD_ITEM;
+ return VIEW_TYPE_LOADING;
+ }
+
+ @Override
+ public void onUpdateTaskCount(int taskCount) {
+ Tools.runOnUiThread(()->{
+ mTasksRunning = taskCount != 0;
+ for(ViewHolder viewHolder : mViewHolderSet) {
+ viewHolder.updateInstallButtonState();
+ }
+ });
+ }
+
+
+ /**
+ * Basic viewholder with expension capabilities
+ */
+ public class ViewHolder extends RecyclerView.ViewHolder {
+
+ private ModDetail mModDetail = null;
+ private ModItem mModItem = null;
+ private final TextView mTitle, mDescription;
+ private final ImageView mIconView, mSourceView;
+ private View mExtendedLayout;
+ private Spinner mExtendedSpinner;
+ private Button mExtendedButton;
+ private TextView mExtendedErrorTextView;
+ private Future> mExtensionFuture;
+ private Bitmap mThumbnailBitmap;
+ private ImageReceiver mImageReceiver;
+ private boolean mInstallEnabled;
+
+ /* Used to display available versions of the mod(pack) */
+ private final SimpleArrayAdapter mVersionAdapter = new SimpleArrayAdapter<>(null);
+
+ public ViewHolder(View view) {
+ super(view);
+ mViewHolderSet.add(this);
+ view.setOnClickListener(v -> {
+ if(!hasExtended()){
+ // Inflate the ViewStub
+ mExtendedLayout = ((ViewStub)v.findViewById(R.id.mod_limited_state_stub)).inflate();
+ mExtendedButton = mExtendedLayout.findViewById(R.id.mod_extended_select_version_button);
+ mExtendedSpinner = mExtendedLayout.findViewById(R.id.mod_extended_version_spinner);
+ mExtendedErrorTextView = mExtendedLayout.findViewById(R.id.mod_extended_error_textview);
+
+ mExtendedButton.setOnClickListener(v1 -> mModpackApi.handleInstallation(
+ mExtendedButton.getContext().getApplicationContext(),
+ mModDetail,
+ mExtendedSpinner.getSelectedItemPosition()));
+ mExtendedSpinner.setAdapter(mLoadingAdapter);
+ } else {
+ if(isExtended()) closeDetailedView();
+ else openDetailedView();
+ }
+
+ if(isExtended() && mModDetail == null && mExtensionFuture == null) { // only reload if no reloads are in progress
+ setDetailedStateDefault();
+ /*
+ * Why do we do this?
+ * The reason is simple: multithreading is difficult as hell to manage
+ * Let me explain:
+ */
+ mExtensionFuture = new SelfReferencingFuture(myFuture -> {
+ /*
+ * While we are sitting in the function below doing networking, the view might have already gotten recycled.
+ * If we didn't use a Future, we would have extended a ViewHolder with completely unrelated content
+ * or with an error that has never actually happened
+ */
+ mModDetail = mModpackApi.getModDetails(mModItem);
+ System.out.println(mModDetail);
+ Tools.runOnUiThread(() -> {
+ /*
+ * Once we enter here, the state we're in is already defined - no view shuffling can happen on the UI
+ * thread while we are on the UI thread ourselves. If we were cancelled, this means that the future
+ * we were supposed to have no longer makes sense, so we return and do not alter the state (since we might
+ * alter the state of an unrelated item otherwise)
+ */
+ if(myFuture.isCancelled()) return;
+ /*
+ * We do not null the future before returning since this field might already belong to a different item with its
+ * own Future, which we don't want to interfere with.
+ * But if the future is not cancelled, it is the right one for this ViewHolder, and we don't need it anymore, so
+ * let's help GC clean it up once we exit!
+ */
+ mExtensionFuture = null;
+ setStateDetailed(mModDetail);
+ });
+ }).startOnExecutor(PojavApplication.sExecutorService);
+ }
+ });
+
+ // Define click listener for the ViewHolder's View
+ mTitle = view.findViewById(R.id.mod_title_textview);
+ mDescription = view.findViewById(R.id.mod_body_textview);
+ mIconView = view.findViewById(R.id.mod_thumbnail_imageview);
+ mSourceView = view.findViewById(R.id.mod_source_imageview);
+ }
+
+ /** Display basic info about the moditem */
+ public void setStateLimited(ModItem item) {
+ mModDetail = null;
+ if(mThumbnailBitmap != null) {
+ mIconView.setImageBitmap(null);
+ mThumbnailBitmap.recycle();
+ }
+ if(mImageReceiver != null) {
+ mIconCache.cancelImage(mImageReceiver);
+ }
+ if(mExtensionFuture != null) {
+ /*
+ * Since this method reinitializes the ViewHolder for a new mod, this Future stops being ours, so we cancel it
+ * and null it. The rest is handled above
+ */
+ mExtensionFuture.cancel(true);
+ mExtensionFuture = null;
+ }
+
+ mModItem = item;
+ // here the previous reference to the image receiver will disappear
+ mImageReceiver = bm->{
+ mImageReceiver = null;
+ mThumbnailBitmap = bm;
+ RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(mIconView.getResources(), bm);
+ drawable.setCornerRadius(mCornerDimensionCache * bm.getHeight());
+ mIconView.setImageDrawable(drawable);
+ };
+ mIconCache.getImage(mImageReceiver, mModItem.getIconCacheTag(), mModItem.imageUrl);
+ mSourceView.setImageResource(getSourceDrawable(item.apiSource));
+ mTitle.setText(item.title);
+ mDescription.setText(item.description);
+
+ if(hasExtended()){
+ closeDetailedView();
+ }
+ }
+
+ /** Display extended info/interaction about a modpack */
+ private void setStateDetailed(ModDetail detailedItem) {
+ if(detailedItem != null) {
+ setInstallEnabled(true);
+ mExtendedErrorTextView.setVisibility(View.GONE);
+ mVersionAdapter.setObjects(Arrays.asList(detailedItem.versionNames));
+ mExtendedSpinner.setAdapter(mVersionAdapter);
+ } else {
+ closeDetailedView();
+ setInstallEnabled(false);
+ mExtendedErrorTextView.setVisibility(View.VISIBLE);
+ mExtendedSpinner.setAdapter(null);
+ mVersionAdapter.setObjects(null);
+ }
+ }
+
+ private void openDetailedView() {
+ mExtendedLayout.setVisibility(View.VISIBLE);
+ mDescription.setMaxLines(99);
+
+ // We need to align to the longer section
+ int futureBottom = mDescription.getBottom() + Tools.mesureTextviewHeight(mDescription) - mDescription.getHeight();
+ ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mExtendedLayout.getLayoutParams();
+ params.topToBottom = futureBottom > mIconView.getBottom() ? R.id.mod_body_textview : R.id.mod_thumbnail_imageview;
+ mExtendedLayout.setLayoutParams(params);
+ }
+
+ private void closeDetailedView(){
+ mExtendedLayout.setVisibility(View.GONE);
+ mDescription.setMaxLines(3);
+ }
+
+ private void setDetailedStateDefault() {
+ setInstallEnabled(false);
+ mExtendedSpinner.setAdapter(mLoadingAdapter);
+ mExtendedErrorTextView.setVisibility(View.GONE);
+ openDetailedView();
+ }
+
+ private boolean hasExtended(){
+ return mExtendedLayout != null;
+ }
+
+ private boolean isExtended(){
+ return hasExtended() && mExtendedLayout.getVisibility() == View.VISIBLE;
+ }
+
+ private int getSourceDrawable(int apiSource) {
+ switch (apiSource) {
+ case Constants.SOURCE_CURSEFORGE:
+ return R.drawable.ic_curseforge;
+ case Constants.SOURCE_MODRINTH:
+ return R.drawable.ic_modrinth;
+ default:
+ throw new RuntimeException("Unknown API source");
+ }
+ }
+
+ private void setInstallEnabled(boolean enabled) {
+ mInstallEnabled = enabled;
+ updateInstallButtonState();
+ }
+
+ private void updateInstallButtonState() {
+ if(mExtendedButton != null)
+ mExtendedButton.setEnabled(mInstallEnabled && !mTasksRunning);
+ }
+ }
+
+ /**
+ * The view holder used to hold the progress bar at the end of the list
+ */
+ private static class LoadingViewHolder extends RecyclerView.ViewHolder {
+ public LoadingViewHolder(View view) {
+ super(view);
+ }
+ }
+
+ private class SearchApiTask implements SelfReferencingFuture.FutureInterface {
+ private final SearchFilters mSearchFilters;
+ private final SearchResult mPreviousResult;
+
+ private SearchApiTask(SearchFilters searchFilters, SearchResult previousResult) {
+ this.mSearchFilters = searchFilters;
+ this.mPreviousResult = previousResult;
+ }
+
+ @SuppressLint("NotifyDataSetChanged")
+ @Override
+ public void run(Future> myFuture) {
+ SearchResult result = mModpackApi.searchMod(mSearchFilters, mPreviousResult);
+ ModItem[] resultModItems = result != null ? result.results : null;
+ if(resultModItems != null && resultModItems.length != 0 && mPreviousResult != null) {
+ ModItem[] newModItems = new ModItem[resultModItems.length + mModItems.length];
+ System.arraycopy(mModItems, 0, newModItems, 0, mModItems.length);
+ System.arraycopy(resultModItems, 0, newModItems, mModItems.length, resultModItems.length);
+ resultModItems = newModItems;
+ }
+ ModItem[] finalModItems = resultModItems;
+ Tools.runOnUiThread(() -> {
+ if(myFuture.isCancelled()) return;
+ mTaskInProgress = null;
+ if(finalModItems == null) {
+ mSearchResultCallback.onSearchError(SearchResultCallback.ERROR_INTERNAL);
+ }else if(finalModItems.length == 0) {
+ if(mPreviousResult != null) {
+ mLastPage = true;
+ notifyItemChanged(mModItems.length);
+ mSearchResultCallback.onSearchFinished();
+ return;
+ }
+ mSearchResultCallback.onSearchError(SearchResultCallback.ERROR_NO_RESULTS);
+ }else{
+ mSearchResultCallback.onSearchFinished();
+ }
+ mCurrentResult = result;
+ if(finalModItems == null) {
+ mModItems = MOD_ITEMS_EMPTY;
+ notifyDataSetChanged();
+ return;
+ }
+ if(mPreviousResult != null) {
+ int prevLength = mModItems.length;
+ mModItems = finalModItems;
+ notifyItemChanged(prevLength);
+ notifyItemRangeInserted(prevLength+1, mModItems.length);
+ }else {
+ mModItems = finalModItems;
+ notifyDataSetChanged();
+ }
+ });
+ }
+ }
+
+ public interface SearchResultCallback {
+ int ERROR_INTERNAL = 0;
+ int ERROR_NO_RESULTS = 1;
+ void onSearchFinished();
+ void onSearchError(int error);
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModloaderInstallTracker.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModloaderInstallTracker.java
new file mode 100644
index 000000000..8ec11e3fa
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModloaderInstallTracker.java
@@ -0,0 +1,106 @@
+package net.kdt.pojavlaunch.modloaders.modpacks;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+
+import net.kdt.pojavlaunch.modloaders.modpacks.api.ModLoader;
+
+import java.io.File;
+
+/**
+ * This class is meant to track the availability of a modloader that is ready to be installed (as a result of modpack installation)
+ * It is needed because having all this logic spread over LauncherActivity would be clumsy, and I think that this is the best way to
+ * ensure that the modloader installer will run, even if the user does not receive the notification or something else happens
+ */
+public class ModloaderInstallTracker implements SharedPreferences.OnSharedPreferenceChangeListener {
+ private final SharedPreferences mSharedPreferences;
+ private final Activity mActivity;
+
+ /**
+ * Create a ModInstallTracker object. This must be done in the Activity's onCreate method.
+ * @param activity the host activity
+ */
+ public ModloaderInstallTracker(Activity activity) {
+ mActivity = activity;
+ mSharedPreferences = getPreferences(activity);
+
+ }
+
+ /**
+ * Attach the ModloaderInstallTracker to the current Activity. Must be done in the Activity's
+ * onResume method
+ */
+ public void attach() {
+ mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
+ runCheck();
+ }
+
+ /**
+ * Detach the ModloaderInstallTracker from the current Activity. Must be done in the Activity's
+ * onPause method
+ */
+ public void detach() {
+ mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String prefName) {
+ if(!"modLoaderAvailable".equals(prefName)) return;
+ runCheck();
+ }
+
+ @SuppressLint("ApplySharedPref")
+ private void runCheck() {
+ if(!mSharedPreferences.getBoolean("modLoaderAvailable", false)) return;
+ SharedPreferences.Editor editor = mSharedPreferences.edit().putBoolean("modLoaderAvailable", false);
+ if(!editor.commit()) editor.apply();
+ ModLoader modLoader = deserializeModLoader(mSharedPreferences);
+ File modInstallFile = deserializeInstallFile(mSharedPreferences);
+ if(modLoader == null || modInstallFile == null) return;
+ startModInstallation(modLoader, modInstallFile);
+ }
+
+ private void startModInstallation(ModLoader modLoader, File modInstallFile) {
+ Intent installIntent = modLoader.getInstallationIntent(mActivity, modInstallFile);
+ mActivity.startActivity(installIntent);
+ }
+
+ private static SharedPreferences getPreferences(Context context) {
+ return context.getSharedPreferences("modloader_info", Context.MODE_PRIVATE);
+ }
+
+ /**
+ * Store the data necessary to start a ModLoader installation for the tracker to start the installer
+ * sometime.
+ * @param context the Context
+ * @param modLoader the ModLoader to store
+ * @param modInstallFile the installer jar to store
+ */
+ @SuppressLint("ApplySharedPref")
+ public static void saveModLoader(Context context, ModLoader modLoader, File modInstallFile) {
+ SharedPreferences.Editor editor = getPreferences(context).edit();
+ editor.putInt("modLoaderType", modLoader.modLoaderType);
+ editor.putString("modLoaderVersion", modLoader.modLoaderVersion);
+ editor.putString("minecraftVersion", modLoader.minecraftVersion);
+ editor.putString("modInstallerJar", modInstallFile.getAbsolutePath());
+ editor.putBoolean("modLoaderAvailable", true);
+ editor.commit();
+ }
+
+ private static ModLoader deserializeModLoader(SharedPreferences sharedPreferences) {
+ if(!sharedPreferences.contains("modLoaderType") ||
+ !sharedPreferences.contains("modLoaderVersion") ||
+ !sharedPreferences.contains("minecraftVersion")) return null;
+ return new ModLoader(sharedPreferences.getInt("modLoaderType", -1),
+ sharedPreferences.getString("modLoaderVersion", ""),
+ sharedPreferences.getString("minecraftVersion", ""));
+ }
+
+ private static File deserializeInstallFile(SharedPreferences sharedPreferences) {
+ if(!sharedPreferences.contains("modInstallerJar")) return null;
+ return new File(sharedPreferences.getString("modInstallerJar", ""));
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/SelfReferencingFuture.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/SelfReferencingFuture.java
new file mode 100644
index 000000000..6f7d625af
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/SelfReferencingFuture.java
@@ -0,0 +1,40 @@
+package net.kdt.pojavlaunch.modloaders.modpacks;
+
+import android.util.Log;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+
+public class SelfReferencingFuture {
+ private final Object mFutureLock = new Object();
+ private final FutureInterface mFutureInterface;
+ private Future> mMyFuture;
+
+ public SelfReferencingFuture(FutureInterface futureInterface) {
+ this.mFutureInterface = futureInterface;
+ }
+
+ public Future> startOnExecutor(ExecutorService executorService) {
+ Future> future = executorService.submit(this::run);
+ synchronized (mFutureLock) {
+ mMyFuture = future;
+ mFutureLock.notify();
+ }
+ return future;
+ }
+
+ private void run() {
+ try {
+ synchronized (mFutureLock) {
+ if (mMyFuture == null) mFutureLock.wait();
+ }
+ mFutureInterface.run(mMyFuture);
+ }catch (InterruptedException e) {
+ Log.i("SelfReferencingFuture", "Interrupted while acquiring own Future");
+ }
+ }
+
+ public interface FutureInterface {
+ void run(Future> myFuture);
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ApiHandler.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ApiHandler.java
new file mode 100644
index 000000000..4c03ecf2b
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ApiHandler.java
@@ -0,0 +1,164 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.google.gson.Gson;
+
+import net.kdt.pojavlaunch.Tools;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@SuppressWarnings("unused")
+public class ApiHandler {
+ public final String baseUrl;
+ public final Map additionalHeaders;
+
+ public ApiHandler(String url) {
+ baseUrl = url;
+ additionalHeaders = null;
+ }
+
+ public ApiHandler(String url, String apiKey) {
+ baseUrl = url;
+ additionalHeaders = new ArrayMap<>();
+ additionalHeaders.put("x-api-key", apiKey);
+ }
+
+ public T get(String endpoint, Class tClass) {
+ return getFullUrl(additionalHeaders, baseUrl + "/" + endpoint, tClass);
+ }
+
+ public T get(String endpoint, HashMap query, Class tClass) {
+ return getFullUrl(additionalHeaders, baseUrl + "/" + endpoint, query, tClass);
+ }
+
+ public T post(String endpoint, T body, Class tClass) {
+ return postFullUrl(additionalHeaders, baseUrl + "/" + endpoint, body, tClass);
+ }
+
+ public T post(String endpoint, HashMap query, T body, Class tClass) {
+ return postFullUrl(additionalHeaders, baseUrl + "/" + endpoint, query, body, tClass);
+ }
+
+ //Make a get request and return the response as a raw string;
+ public static String getRaw(String url) {
+ return getRaw(null, url);
+ }
+
+ public static String getRaw(Map headers, String url) {
+ Log.d("ApiHandler", url);
+ try {
+ HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
+ addHeaders(conn, headers);
+ InputStream inputStream = conn.getInputStream();
+ String data = Tools.read(inputStream);
+ Log.d(ApiHandler.class.toString(), data);
+ inputStream.close();
+ conn.disconnect();
+ return data;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static String postRaw(String url, String body) {
+ return postRaw(null, url, body);
+ }
+
+ public static String postRaw(Map headers, String url, String body) {
+ try {
+ HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
+ conn.setRequestMethod("POST");
+ conn.setRequestProperty("Content-Type", "application/json");
+ conn.setRequestProperty("Accept", "application/json");
+ addHeaders(conn, headers);
+ conn.setDoOutput(true);
+
+ OutputStream outputStream = conn.getOutputStream();
+ byte[] input = body.getBytes(StandardCharsets.UTF_8);
+ outputStream.write(input, 0, input.length);
+ outputStream.close();
+
+ InputStream inputStream = conn.getInputStream();
+ String data = Tools.read(inputStream);
+ inputStream.close();
+
+ conn.disconnect();
+ return data;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private static void addHeaders(HttpURLConnection connection, Map headers) {
+ if(headers != null) {
+ for(String key : headers.keySet())
+ connection.addRequestProperty(key, headers.get(key));
+ }
+ }
+
+ private static String parseQueries(HashMap query) {
+ StringBuilder params = new StringBuilder("?");
+ for (String param : query.keySet()) {
+ String value = Objects.toString(query.get(param));
+ params.append(urlEncodeUTF8(param))
+ .append("=")
+ .append(urlEncodeUTF8(value))
+ .append("&");
+ }
+ return params.substring(0, params.length() - 1);
+ }
+
+ public static T getFullUrl(String url, Class tClass) {
+ return getFullUrl(null, url, tClass);
+ }
+
+ public static T getFullUrl(String url, HashMap query, Class tClass) {
+ return getFullUrl(null, url, query, tClass);
+ }
+
+ public static T postFullUrl(String url, T body, Class tClass) {
+ return postFullUrl(null, url, body, tClass);
+ }
+
+ public static T postFullUrl(String url, HashMap query, T body, Class tClass) {
+ return postFullUrl(null, url, query, body, tClass);
+ }
+
+ public static T getFullUrl(Map headers, String url, Class tClass) {
+ return new Gson().fromJson(getRaw(headers, url), tClass);
+ }
+
+ public static T getFullUrl(Map headers, String url, HashMap query, Class tClass) {
+ return getFullUrl(headers, url + parseQueries(query), tClass);
+ }
+
+ public static T postFullUrl(Map headers, String url, T body, Class tClass) {
+ return new Gson().fromJson(postRaw(headers, url, body.toString()), tClass);
+ }
+
+ public static T postFullUrl(Map headers, String url, HashMap query, T body, Class tClass) {
+ return new Gson().fromJson(postRaw(headers, url + parseQueries(query), body.toString()), tClass);
+ }
+
+ private static String urlEncodeUTF8(String input) {
+ try {
+ return URLEncoder.encode(input, "UTF-8");
+ }catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("UTF-8 is required");
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CommonApi.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CommonApi.java
new file mode 100644
index 000000000..d7aaef318
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CommonApi.java
@@ -0,0 +1,187 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import androidx.annotation.NonNull;
+
+import net.kdt.pojavlaunch.PojavApplication;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.Constants;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchResult;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+/**
+ * Group all apis under the same umbrella, as another layer of abstraction
+ */
+public class CommonApi implements ModpackApi {
+
+ private final ModpackApi mCurseforgeApi;
+ private final ModpackApi mModrinthApi;
+ private final ModpackApi[] mModpackApis;
+
+ public CommonApi(String curseforgeApiKey) {
+ mCurseforgeApi = new CurseforgeApi(curseforgeApiKey);
+ mModrinthApi = new ModrinthApi();
+ mModpackApis = new ModpackApi[]{mModrinthApi, mCurseforgeApi};
+ }
+
+ @Override
+ public SearchResult searchMod(SearchFilters searchFilters, SearchResult previousPageResult) {
+ CommonApiSearchResult commonApiSearchResult = (CommonApiSearchResult) previousPageResult;
+ // If there are no previous page results, create a new array. Otherwise, use the one from the previous page
+ SearchResult[] results = commonApiSearchResult == null ?
+ new SearchResult[mModpackApis.length] : commonApiSearchResult.searchResults;
+
+ int totalSize = 0;
+ int totalTotalSize = 0;
+
+ Future>[] futures = new Future>[mModpackApis.length];
+ for(int i = 0; i < mModpackApis.length; i++) {
+ // If there is an array and its length is zero, this means that we've exhausted the results for this
+ // search query and we don't need to actually do the search
+ if(results[i] != null && results[i].results.length == 0) continue;
+ // If the previous page result is not null (aka the arrays aren't fresh)
+ // and the previous result is null, it means that na error has occured on the previous
+ // page. We lost contingency anyway, so don't bother requesting.
+ if(previousPageResult != null && results[i] == null) continue;
+ futures[i] = PojavApplication.sExecutorService.submit(new ApiDownloadTask(i, searchFilters,
+ results[i]));
+ }
+
+ if(Thread.interrupted()) {
+ cancelAllFutures(futures);
+ return null;
+ }
+ boolean hasSuccessful = false;
+ // Count up all the results
+ for(int i = 0; i < mModpackApis.length; i++) {
+ Future> future = futures[i];
+ if(future == null) continue;
+ try {
+ SearchResult searchResult = results[i] = (SearchResult) future.get();
+ if(searchResult != null) hasSuccessful = true;
+ else continue;
+ totalSize += searchResult.results.length;
+ totalTotalSize += searchResult.totalResultCount;
+ }catch (Exception e) {
+ cancelAllFutures(futures);
+ e.printStackTrace();
+ return null;
+ }
+ }
+ if(!hasSuccessful) {
+ return null;
+ }
+ // Then build an array with all the mods
+ ArrayList filteredResults = new ArrayList<>(results.length);
+
+ // Sanitize returned values
+ for(SearchResult result : results) {
+ if(result == null) continue;
+ ModItem[] searchResults = result.results;
+ // If the length is zero, we don't need to perform needless copies
+ if(searchResults.length == 0) continue;
+ filteredResults.add(searchResults);
+ }
+ filteredResults.trimToSize();
+ if(Thread.interrupted()) return null;
+
+ ModItem[] concatenatedItems = buildFusedResponse(filteredResults);
+ if(Thread.interrupted()) return null;
+ // Recycle or create new search result
+ if(commonApiSearchResult == null) commonApiSearchResult = new CommonApiSearchResult();
+ commonApiSearchResult.searchResults = results;
+ commonApiSearchResult.totalResultCount = totalTotalSize;
+ commonApiSearchResult.results = concatenatedItems;
+ return commonApiSearchResult;
+ }
+
+ @Override
+ public ModDetail getModDetails(ModItem item) {
+ return getModpackApi(item.apiSource).getModDetails(item);
+ }
+
+ @Override
+ public ModLoader installMod(ModDetail modDetail, int selectedVersion) throws IOException {
+ return getModpackApi(modDetail.apiSource).installMod(modDetail, selectedVersion);
+ }
+
+ private @NonNull ModpackApi getModpackApi(int apiSource) {
+ switch (apiSource) {
+ case Constants.SOURCE_MODRINTH:
+ return mModrinthApi;
+ case Constants.SOURCE_CURSEFORGE:
+ return mCurseforgeApi;
+ default:
+ throw new UnsupportedOperationException("Unknown API source: " + apiSource);
+ }
+ }
+
+ /** Fuse the arrays in a way that's fair for every endpoint */
+ private ModItem[] buildFusedResponse(List modMatrix){
+ int totalSize = 0;
+
+ // Calculate the total size of the merged array
+ for (ModItem[] array : modMatrix) {
+ totalSize += array.length;
+ }
+
+ ModItem[] fusedItems = new ModItem[totalSize];
+
+ int mergedIndex = 0;
+ int maxLength = 0;
+
+ // Find the maximum length of arrays
+ for (ModItem[] array : modMatrix) {
+ if (array.length > maxLength) {
+ maxLength = array.length;
+ }
+ }
+
+ // Populate the merged array
+ for (int i = 0; i < maxLength; i++) {
+ for (ModItem[] matrix : modMatrix) {
+ if (i < matrix.length) {
+ fusedItems[mergedIndex] = matrix[i];
+ mergedIndex++;
+ }
+ }
+ }
+
+ return fusedItems;
+ }
+
+ private void cancelAllFutures(Future>[] futures) {
+ for(Future> future : futures) {
+ if(future == null) continue;
+ future.cancel(true);
+ }
+ }
+
+ private class ApiDownloadTask implements Callable {
+ private final int mModApi;
+ private final SearchFilters mSearchFilters;
+ private final SearchResult mPreviousPageResult;
+
+ private ApiDownloadTask(int modApi, SearchFilters searchFilters, SearchResult previousPageResult) {
+ this.mModApi = modApi;
+ this.mSearchFilters = searchFilters;
+ this.mPreviousPageResult = previousPageResult;
+ }
+
+ @Override
+ public SearchResult call() {
+ return mModpackApis[mModApi].searchMod(mSearchFilters, mPreviousPageResult);
+ }
+ }
+
+ class CommonApiSearchResult extends SearchResult {
+ SearchResult[] searchResults = new SearchResult[mModpackApis.length];
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java
new file mode 100644
index 000000000..0920509bf
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java
@@ -0,0 +1,242 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.kdt.mcgui.ProgressLayout;
+
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.Constants;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.CurseManifest;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchResult;
+import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
+import net.kdt.pojavlaunch.utils.FileUtils;
+import net.kdt.pojavlaunch.utils.ZipUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.regex.Pattern;
+import java.util.zip.ZipFile;
+
+public class CurseforgeApi implements ModpackApi{
+ private static final Pattern sMcVersionPattern = Pattern.compile("([0-9]+)\\.([0-9]+)\\.?([0-9]+)?");
+ // Stolen from
+ // https://github.com/AnzhiZhang/CurseForgeModpackDownloader/blob/6cb3f428459f0cc8f444d16e54aea4cd1186fd7b/utils/requester.py#L93
+ private static final int CURSEFORGE_MINECRAFT_GAME_ID = 432;
+ private static final int CURSEFORGE_MODPACK_CLASS_ID = 4471;
+ // https://api.curseforge.com/v1/categories?gameId=432 and search for "Mods" (case-sensitive)
+ private static final int CURSEFORGE_MOD_CLASS_ID = 6;
+ private static final int CURSEFORGE_SORT_RELEVANCY = 1;
+ private static final int CURSEFORGE_PAGINATION_SIZE = 50;
+ private static final int CURSEFORGE_PAGINATION_END_REACHED = -1;
+ private static final int CURSEFORGE_PAGINATION_ERROR = -2;
+
+ private final ApiHandler mApiHandler;
+ public CurseforgeApi(String apiKey) {
+ mApiHandler = new ApiHandler("https://api.curseforge.com/v1", apiKey);
+ }
+
+ @Override
+ public SearchResult searchMod(SearchFilters searchFilters, SearchResult previousPageResult) {
+ CurseforgeSearchResult curseforgeSearchResult = (CurseforgeSearchResult) previousPageResult;
+
+ HashMap params = new HashMap<>();
+ params.put("gameId", CURSEFORGE_MINECRAFT_GAME_ID);
+ params.put("classId", searchFilters.isModpack ? CURSEFORGE_MODPACK_CLASS_ID : CURSEFORGE_MOD_CLASS_ID);
+ params.put("searchFilter", searchFilters.name);
+ params.put("sortField", CURSEFORGE_SORT_RELEVANCY);
+ params.put("sortOrder", "desc");
+ if(searchFilters.mcVersion != null && !searchFilters.mcVersion.isEmpty())
+ params.put("gameVersion", searchFilters.mcVersion);
+ if(previousPageResult != null)
+ params.put("index", curseforgeSearchResult.previousOffset);
+
+ JsonObject response = mApiHandler.get("mods/search", params, JsonObject.class);
+ if(response == null) return null;
+ JsonArray dataArray = response.getAsJsonArray("data");
+ if(dataArray == null) return null;
+ JsonObject paginationInfo = response.getAsJsonObject("pagination");
+ ArrayList modItemList = new ArrayList<>(dataArray.size());
+ for(int i = 0; i < dataArray.size(); i++) {
+ JsonObject dataElement = dataArray.get(i).getAsJsonObject();
+ JsonElement allowModDistribution = dataElement.get("allowModDistribution");
+ // Gson automatically casts null to false, which leans to issues
+ // So, only check the distribution flag if it is non-null
+ if(!allowModDistribution.isJsonNull() && !allowModDistribution.getAsBoolean()) {
+ Log.i("CurseforgeApi", "Skipping modpack "+dataElement.get("name").getAsString() + " because curseforge sucks");
+ continue;
+ }
+ ModItem modItem = new ModItem(Constants.SOURCE_CURSEFORGE,
+ searchFilters.isModpack,
+ dataElement.get("id").getAsString(),
+ dataElement.get("name").getAsString(),
+ dataElement.get("summary").getAsString(),
+ dataElement.getAsJsonObject("logo").get("thumbnailUrl").getAsString());
+ modItemList.add(modItem);
+ }
+ if(curseforgeSearchResult == null) curseforgeSearchResult = new CurseforgeSearchResult();
+ curseforgeSearchResult.results = modItemList.toArray(new ModItem[0]);
+ curseforgeSearchResult.totalResultCount = paginationInfo.get("totalCount").getAsInt();
+ curseforgeSearchResult.previousOffset += dataArray.size();
+ return curseforgeSearchResult;
+
+ }
+
+ @Override
+ public ModDetail getModDetails(ModItem item) {
+ ArrayList allModDetails = new ArrayList<>();
+ int index = 0;
+ while(index != CURSEFORGE_PAGINATION_END_REACHED &&
+ index != CURSEFORGE_PAGINATION_ERROR) {
+ index = getPaginatedDetails(allModDetails, index, item.id);
+ }
+ if(index == CURSEFORGE_PAGINATION_ERROR) return null;
+ int length = allModDetails.size();
+ String[] versionNames = new String[length];
+ String[] mcVersionNames = new String[length];
+ String[] versionUrls = new String[length];
+ for(int i = 0; i < allModDetails.size(); i++) {
+ JsonObject modDetail = allModDetails.get(i);
+ versionNames[i] = modDetail.get("displayName").getAsString();
+ JsonElement downloadUrl = modDetail.get("downloadUrl");
+ versionUrls[i] = downloadUrl.getAsString();
+ JsonArray gameVersions = modDetail.getAsJsonArray("gameVersions");
+ for(JsonElement jsonElement : gameVersions) {
+ String gameVersion = jsonElement.getAsString();
+ if(!sMcVersionPattern.matcher(gameVersion).matches()) {
+ continue;
+ }
+ mcVersionNames[i] = gameVersion;
+ break;
+ }
+ }
+ return new ModDetail(item, versionNames, mcVersionNames, versionUrls);
+ }
+
+ @Override
+ public ModLoader installMod(ModDetail modDetail, int selectedVersion) throws IOException{
+ //TODO considering only modpacks for now
+ return ModpackInstaller.installModpack(modDetail, selectedVersion, this::installCurseforgeZip);
+ }
+
+
+ private int getPaginatedDetails(ArrayList objectList, int index, String modId) {
+ HashMap params = new HashMap<>();
+ params.put("index", index);
+ params.put("pageSize", CURSEFORGE_PAGINATION_SIZE);
+
+ JsonObject response = mApiHandler.get("mods/"+modId+"/files", params, JsonObject.class);
+ if(response == null) return CURSEFORGE_PAGINATION_ERROR;
+ JsonArray data = response.getAsJsonArray("data");
+ if(data == null) return CURSEFORGE_PAGINATION_ERROR;
+ for(int i = 0; i < data.size(); i++) {
+ JsonObject fileInfo = data.get(i).getAsJsonObject();
+ if(fileInfo.get("isServerPack").getAsBoolean()) continue;
+ objectList.add(fileInfo);
+ }
+ if(data.size() < CURSEFORGE_PAGINATION_SIZE) {
+ return CURSEFORGE_PAGINATION_END_REACHED; // we read the remainder! yay!
+ }
+ return index + data.size();
+ }
+
+ private ModLoader installCurseforgeZip(File zipFile, File instanceDestination) throws IOException {
+ try (ZipFile modpackZipFile = new ZipFile(zipFile)){
+ CurseManifest curseManifest = Tools.GLOBAL_GSON.fromJson(
+ Tools.read(ZipUtils.getEntryStream(modpackZipFile, "manifest.json")),
+ CurseManifest.class);
+ if(!verifyManifest(curseManifest)) {
+ Log.i("CurseforgeApi","manifest verification failed");
+ return null;
+ }
+ ModDownloader modDownloader = new ModDownloader(new File(instanceDestination,"mods"), true);
+ int fileCount = curseManifest.files.length;
+ for(int i = 0; i < fileCount; i++) {
+ final CurseManifest.CurseFile curseFile = curseManifest.files[i];
+ modDownloader.submitDownload(()->{
+ String url = getDownloadUrl(curseFile.projectID, curseFile.fileID);
+ if(url == null && curseFile.required)
+ throw new IOException("Failed to obtain download URL for "+curseFile.projectID+" "+curseFile.fileID);
+ else if(url == null) return null;
+ return new ModDownloader.FileInfo(url, FileUtils.getFileName(url));
+ });
+ }
+ modDownloader.awaitFinish((c,m)->
+ ProgressKeeper.submitProgress(ProgressLayout.INSTALL_MODPACK, (int) Math.max((float)c/m*100,0), R.string.modpack_download_downloading_mods_fc, c, m)
+ );
+ String overridesDir = "overrides";
+ if(curseManifest.overrides != null) overridesDir = curseManifest.overrides;
+ ZipUtils.zipExtract(modpackZipFile, overridesDir, instanceDestination);
+ return createInfo(curseManifest.minecraft);
+ }
+ }
+
+ private ModLoader createInfo(CurseManifest.CurseMinecraft minecraft) {
+ CurseManifest.CurseModLoader primaryModLoader = null;
+ for(CurseManifest.CurseModLoader modLoader : minecraft.modLoaders) {
+ if(modLoader.primary) {
+ primaryModLoader = modLoader;
+ break;
+ }
+ }
+ if(primaryModLoader == null) primaryModLoader = minecraft.modLoaders[0];
+ String modLoaderId = primaryModLoader.id;
+ int dashIndex = modLoaderId.indexOf('-');
+ String modLoaderName = modLoaderId.substring(0, dashIndex);
+ String modLoaderVersion = modLoaderId.substring(dashIndex+1);
+ Log.i("CurseforgeApi", modLoaderId + " " + modLoaderName + " "+modLoaderVersion);
+ int modLoaderTypeInt;
+ switch (modLoaderName) {
+ case "forge":
+ modLoaderTypeInt = ModLoader.MOD_LOADER_FORGE;
+ break;
+ case "fabric":
+ modLoaderTypeInt = ModLoader.MOD_LOADER_FABRIC;
+ break;
+ default:
+ return null;
+ //TODO: Quilt is also Forge? How does that work?
+ }
+ return new ModLoader(modLoaderTypeInt, modLoaderVersion, minecraft.version);
+ }
+
+ private String getDownloadUrl(long projectID, long fileID) {
+ // First try the official api endpoint
+ JsonObject response = mApiHandler.get("mods/"+projectID+"/files/"+fileID+"/download-url", JsonObject.class);
+ if (response != null && !response.get("data").isJsonNull())
+ return response.get("data").getAsString();
+
+ // Otherwise, fallback to building an edge link
+ JsonObject fallbackResponse = mApiHandler.get(String.format("mods/%s/files/%s", projectID, fileID), JsonObject.class);
+ if (fallbackResponse != null && !fallbackResponse.get("data").isJsonNull()){
+ JsonObject modData = fallbackResponse.get("data").getAsJsonObject();
+ int id = modData.get("id").getAsInt();
+ return String.format("https://edge.forgecdn.net/files/%s/%s/%s", id/1000, id % 1000, modData.get("fileName").getAsString());
+ }
+
+ return null;
+ }
+
+ private boolean verifyManifest(CurseManifest manifest) {
+ if(!"minecraftModpack".equals(manifest.manifestType)) return false;
+ if(manifest.manifestVersion != 1) return false;
+ if(manifest.minecraft == null) return false;
+ if(manifest.minecraft.version == null) return false;
+ if(manifest.minecraft.modLoaders == null) return false;
+ if(manifest.minecraft.modLoaders.length < 1) return false;
+ return true;
+ }
+
+ class CurseforgeSearchResult extends SearchResult {
+ int previousOffset;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModDownloader.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModDownloader.java
new file mode 100644
index 000000000..09ddd7c6e
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModDownloader.java
@@ -0,0 +1,172 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.utils.DownloadUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class ModDownloader {
+ private static final ThreadLocal sThreadLocalBuffer = new ThreadLocal<>();
+ private final ThreadPoolExecutor mDownloadPool = new ThreadPoolExecutor(4,4,100, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<>());
+ private final AtomicBoolean mTerminator = new AtomicBoolean(false);
+ private final AtomicLong mDownloadSize = new AtomicLong(0);
+ private final Object mExceptionSyncPoint = new Object();
+ private final File mDestinationDirectory;
+ private final boolean mUseFileCount;
+ private IOException mFirstIOException;
+ private long mTotalSize;
+
+ public ModDownloader(File destinationDirectory) {
+ this(destinationDirectory, false);
+ }
+
+ public ModDownloader(File destinationDirectory, boolean useFileCount) {
+ this.mDownloadPool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
+ this.mDestinationDirectory = destinationDirectory;
+ this.mUseFileCount = useFileCount;
+ }
+
+ public void submitDownload(int fileSize, String relativePath, String... url) {
+ if(mUseFileCount) mTotalSize += 1;
+ else mTotalSize += fileSize;
+ mDownloadPool.execute(new DownloadTask(url, new File(mDestinationDirectory, relativePath)));
+ }
+
+ public void submitDownload(FileInfoProvider infoProvider) {
+ if(!mUseFileCount) throw new RuntimeException("This method can only be used in a file-counting ModDownloader");
+ mTotalSize += 1;
+ mDownloadPool.execute(new FileInfoQueryTask(infoProvider));
+ }
+
+ public void awaitFinish(Tools.DownloaderFeedback feedback) throws IOException {
+ try {
+ mDownloadPool.shutdown();
+ while(!mDownloadPool.awaitTermination(20, TimeUnit.MILLISECONDS) && !mTerminator.get()) {
+ feedback.updateProgress((int) mDownloadSize.get(), (int) mTotalSize);
+ }
+ if(mTerminator.get()) {
+ mDownloadPool.shutdownNow();
+ synchronized (mExceptionSyncPoint) {
+ if(mFirstIOException == null) mExceptionSyncPoint.wait();
+ throw mFirstIOException;
+ }
+ }
+ }catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static byte[] getThreadLocalBuffer() {
+ byte[] buffer = sThreadLocalBuffer.get();
+ if(buffer != null) return buffer;
+ buffer = new byte[8192];
+ sThreadLocalBuffer.set(buffer);
+ return buffer;
+ }
+
+ private void downloadFailed(IOException exception) {
+ mTerminator.set(true);
+ synchronized (mExceptionSyncPoint) {
+ if(mFirstIOException == null) {
+ mFirstIOException = exception;
+ mExceptionSyncPoint.notify();
+ }
+ }
+ }
+
+ class FileInfoQueryTask implements Runnable {
+ private final FileInfoProvider mFileInfoProvider;
+ public FileInfoQueryTask(FileInfoProvider fileInfoProvider) {
+ this.mFileInfoProvider = fileInfoProvider;
+ }
+ @Override
+ public void run() {
+ try {
+ FileInfo fileInfo = mFileInfoProvider.getFileInfo();
+ if(fileInfo == null) return;
+ new DownloadTask(new String[]{fileInfo.url},
+ new File(mDestinationDirectory, fileInfo.relativePath)).run();
+ }catch (IOException e) {
+ downloadFailed(e);
+ }
+ }
+ }
+
+ class DownloadTask implements Runnable, Tools.DownloaderFeedback {
+ private final String[] mDownloadUrls;
+ private final File mDestination;
+ private int last = 0;
+
+ public DownloadTask(String[] downloadurls,
+ File downloadDestination) {
+ this.mDownloadUrls = downloadurls;
+ this.mDestination = downloadDestination;
+ }
+
+ @Override
+ public void run() {
+ IOException exception = null;
+ for(String sourceUrl : mDownloadUrls) {
+ try {
+ exception = tryDownload(sourceUrl);
+ if(exception == null) return;
+ }catch (InterruptedException e) {
+ return;
+ }
+ }
+ if(exception != null) {
+ downloadFailed(exception);
+ }
+ }
+
+ private IOException tryDownload(String sourceUrl) throws InterruptedException {
+ IOException exception = null;
+ for (int i = 0; i < 5; i++) {
+ try {
+ DownloadUtils.downloadFileMonitored(sourceUrl, mDestination, getThreadLocalBuffer(), this);
+ if(mUseFileCount) mDownloadSize.addAndGet(1);
+ return null;
+ } catch (InterruptedIOException e) {
+ throw new InterruptedException();
+ } catch (IOException e) {
+ e.printStackTrace();
+ exception = e;
+ }
+ if(!mUseFileCount) {
+ mDownloadSize.addAndGet(-last);
+ last = 0;
+ }
+ }
+ return exception;
+ }
+
+ @Override
+ public void updateProgress(int curr, int max) {
+ if(mUseFileCount) return;
+ mDownloadSize.addAndGet(curr - last);
+ last = curr;
+ }
+ }
+
+ public static class FileInfo {
+ public final String url;
+ public final String relativePath;
+
+ public FileInfo(String url, String relativePath) {
+ this.url = url;
+ this.relativePath = relativePath;
+ }
+ }
+
+ public interface FileInfoProvider {
+ FileInfo getFileInfo() throws IOException;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModLoader.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModLoader.java
new file mode 100644
index 000000000..1eef3567b
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModLoader.java
@@ -0,0 +1,105 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import android.content.Context;
+import android.content.Intent;
+
+import net.kdt.pojavlaunch.JavaGUILauncherActivity;
+import net.kdt.pojavlaunch.modloaders.FabriclikeDownloadTask;
+import net.kdt.pojavlaunch.modloaders.FabriclikeUtils;
+import net.kdt.pojavlaunch.modloaders.ForgeDownloadTask;
+import net.kdt.pojavlaunch.modloaders.ForgeUtils;
+import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener;
+
+import java.io.File;
+
+public class ModLoader {
+ public static final int MOD_LOADER_FORGE = 0;
+ public static final int MOD_LOADER_FABRIC = 1;
+ public static final int MOD_LOADER_QUILT = 2;
+ public final int modLoaderType;
+ public final String modLoaderVersion;
+ public final String minecraftVersion;
+
+ public ModLoader(int modLoaderType, String modLoaderVersion, String minecraftVersion) {
+ this.modLoaderType = modLoaderType;
+ this.modLoaderVersion = modLoaderVersion;
+ this.minecraftVersion = minecraftVersion;
+ }
+
+ /**
+ * Get the Version ID (the name of the mod loader in the versions/ folder)
+ * @return the Version ID as a string
+ */
+ public String getVersionId() {
+ switch (modLoaderType) {
+ case MOD_LOADER_FORGE:
+ return minecraftVersion+"-forge-"+modLoaderVersion;
+ case MOD_LOADER_FABRIC:
+ return "fabric-loader-"+modLoaderVersion+"-"+minecraftVersion;
+ case MOD_LOADER_QUILT:
+ return "quilt-loader-"+modLoaderVersion+"-"+minecraftVersion;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Get the Runnable that needs to run in order to download the mod loader.
+ * The task will also install the mod loader if it does not require GUI installation
+ * @param listener the listener that gets notified of the installation status
+ * @return the task Runnable that needs to be ran
+ */
+ public Runnable getDownloadTask(ModloaderDownloadListener listener) {
+ switch (modLoaderType) {
+ case MOD_LOADER_FORGE:
+ return new ForgeDownloadTask(listener, minecraftVersion, modLoaderVersion);
+ case MOD_LOADER_FABRIC:
+ return createFabriclikeTask(listener, FabriclikeUtils.FABRIC_UTILS);
+ case MOD_LOADER_QUILT:
+ return createFabriclikeTask(listener, FabriclikeUtils.QUILT_UTILS);
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Get the Intent to start the graphical installation of the mod loader.
+ * This method should only be ran after the download task of the specified mod loader finishes.
+ * This method returns null if the mod loader does not require GUI installation
+ * @param context the package resolving Context (can be the base context)
+ * @param modInstallerJar the JAR file of the mod installer, provided by ModloaderDownloadListener after the installation
+ * finishes.
+ * @return the Intent which the launcher needs to start in order to install the mod loader
+ */
+ public Intent getInstallationIntent(Context context, File modInstallerJar) {
+ Intent baseIntent = new Intent(context, JavaGUILauncherActivity.class);
+ switch (modLoaderType) {
+ case MOD_LOADER_FORGE:
+ ForgeUtils.addAutoInstallArgs(baseIntent, modInstallerJar, getVersionId());
+ return baseIntent;
+ case MOD_LOADER_QUILT:
+ case MOD_LOADER_FABRIC:
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Check whether the mod loader this object denotes requires GUI installation
+ * @return true if mod loader requires GUI installation, false otherwise
+ */
+ public boolean requiresGuiInstallation() {
+ switch (modLoaderType) {
+ case MOD_LOADER_FORGE:
+ return true;
+ case MOD_LOADER_FABRIC:
+ case MOD_LOADER_QUILT:
+ default:
+ return false;
+ }
+ }
+
+ private FabriclikeDownloadTask createFabriclikeTask(ModloaderDownloadListener modloaderDownloadListener, FabriclikeUtils utils) {
+ return new FabriclikeDownloadTask(modloaderDownloadListener, utils, minecraftVersion, modLoaderVersion, false);
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackApi.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackApi.java
new file mode 100644
index 000000000..141468af8
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackApi.java
@@ -0,0 +1,73 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+
+import android.content.Context;
+
+import com.kdt.mcgui.ProgressLayout;
+
+import net.kdt.pojavlaunch.PojavApplication;
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchResult;
+
+import java.io.IOException;
+
+/**
+ *
+ */
+public interface ModpackApi {
+
+ /**
+ * @param searchFilters Filters
+ * @param previousPageResult The result from the previous page
+ * @return the list of mod items from specified offset
+ */
+ SearchResult searchMod(SearchFilters searchFilters, SearchResult previousPageResult);
+
+ /**
+ * @param searchFilters Filters
+ * @return A list of mod items
+ */
+ default SearchResult searchMod(SearchFilters searchFilters) {
+ return searchMod(searchFilters, null);
+ }
+
+ /**
+ * Fetch the mod details
+ * @param item The moditem that was selected
+ * @return Detailed data about a mod(pack)
+ */
+ ModDetail getModDetails(ModItem item);
+
+ /**
+ * Download and install the mod(pack)
+ * @param modDetail The mod detail data
+ * @param selectedVersion The selected version
+ */
+ default void handleInstallation(Context context, ModDetail modDetail, int selectedVersion) {
+ // Doing this here since when starting installation, the progress does not start immediately
+ // which may lead to two concurrent installations (very bad)
+ ProgressLayout.setProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.global_waiting);
+ PojavApplication.sExecutorService.execute(() -> {
+ try {
+ ModLoader loaderInfo = installMod(modDetail, selectedVersion);
+ if (loaderInfo == null) return;
+ loaderInfo.getDownloadTask(new NotificationDownloadListener(context, loaderInfo)).run();
+ }catch (IOException e) {
+ Tools.showErrorRemote(context, R.string.modpack_install_download_failed, e);
+ }
+ });
+ }
+
+ /**
+ * Install the mod(pack).
+ * May require the download of additional files.
+ * May requires launching the installation of a modloader
+ * @param modDetail The mod detail data
+ * @param selectedVersion The selected version
+ */
+ ModLoader installMod(ModDetail modDetail, int selectedVersion) throws IOException;
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackInstaller.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackInstaller.java
new file mode 100644
index 000000000..708754280
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModpackInstaller.java
@@ -0,0 +1,63 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import com.kdt.mcgui.ProgressLayout;
+
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener;
+import net.kdt.pojavlaunch.modloaders.modpacks.imagecache.ModIconCache;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.progresskeeper.DownloaderProgressWrapper;
+import net.kdt.pojavlaunch.utils.DownloadUtils;
+import net.kdt.pojavlaunch.value.launcherprofiles.LauncherProfiles;
+import net.kdt.pojavlaunch.value.launcherprofiles.MinecraftProfile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+public class ModpackInstaller {
+
+ public static ModLoader installModpack(ModDetail modDetail, int selectedVersion, InstallFunction installFunction) throws IOException{
+ String versionUrl = modDetail.versionUrls[selectedVersion];
+ String modpackName = modDetail.title.toLowerCase(Locale.ROOT).trim().replace(" ", "_" );
+
+ // Build a new minecraft instance, folder first
+
+ // Get the modpack file
+ File modpackFile = new File(Tools.DIR_CACHE, modpackName + ".cf"); // Cache File
+ ModLoader modLoaderInfo;
+ try {
+ byte[] downloadBuffer = new byte[8192];
+ DownloadUtils.downloadFileMonitored(versionUrl, modpackFile, downloadBuffer,
+ new DownloaderProgressWrapper(R.string.modpack_download_downloading_metadata,
+ ProgressLayout.INSTALL_MODPACK));
+ // Install the modpack
+ modLoaderInfo = installFunction.installModpack(modpackFile, new File(Tools.DIR_GAME_HOME, "custom_instances/"+modpackName));
+
+ } finally {
+ modpackFile.delete();
+ ProgressLayout.clearProgress(ProgressLayout.INSTALL_MODPACK);
+ }
+ if(modLoaderInfo == null) {
+ return null;
+ }
+
+ // Create the instance
+ MinecraftProfile profile = new MinecraftProfile();
+ profile.gameDir = "./custom_instances/" + modpackName;
+ profile.name = modDetail.title;
+ profile.lastVersionId = modLoaderInfo.getVersionId();
+ profile.icon = ModIconCache.getBase64Image(modDetail.getIconCacheTag());
+
+
+ LauncherProfiles.mainProfileJson.profiles.put(modpackName, profile);
+ LauncherProfiles.write();
+
+ return modLoaderInfo;
+ }
+
+ interface InstallFunction {
+ ModLoader installModpack(File modpackFile, File instanceDestination) throws IOException;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModrinthApi.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModrinthApi.java
new file mode 100644
index 000000000..e8eded460
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/ModrinthApi.java
@@ -0,0 +1,139 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.kdt.mcgui.ProgressLayout;
+
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.Constants;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.ModrinthIndex;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters;
+import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchResult;
+import net.kdt.pojavlaunch.progresskeeper.DownloaderProgressWrapper;
+import net.kdt.pojavlaunch.utils.ZipUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.zip.ZipFile;
+
+public class ModrinthApi implements ModpackApi{
+ private final ApiHandler mApiHandler;
+ public ModrinthApi(){
+ mApiHandler = new ApiHandler("https://api.modrinth.com/v2");
+ }
+
+ @Override
+ public SearchResult searchMod(SearchFilters searchFilters, SearchResult previousPageResult) {
+ ModrinthSearchResult modrinthSearchResult = (ModrinthSearchResult) previousPageResult;
+ HashMap params = new HashMap<>();
+
+ // Build the facets filters
+ StringBuilder facetString = new StringBuilder();
+ facetString.append("[");
+ facetString.append(String.format("[\"project_type:%s\"]", searchFilters.isModpack ? "modpack" : "mod"));
+ if(searchFilters.mcVersion != null && !searchFilters.mcVersion.isEmpty())
+ facetString.append(String.format(",[\"versions:%s\"]", searchFilters.mcVersion));
+ facetString.append("]");
+ params.put("facets", facetString.toString());
+ params.put("query", searchFilters.name.replace(' ', '+'));
+ params.put("limit", 50);
+ params.put("index", "relevance");
+ if(modrinthSearchResult != null)
+ params.put("offset", modrinthSearchResult.previousOffset);
+
+ JsonObject response = mApiHandler.get("search", params, JsonObject.class);
+ if(response == null) return null;
+ JsonArray responseHits = response.getAsJsonArray("hits");
+ if(responseHits == null) return null;
+
+ ModItem[] items = new ModItem[responseHits.size()];
+ for(int i=0; i dependencies = modrinthIndex.dependencies;
+ String mcVersion = dependencies.get("minecraft");
+ if(mcVersion == null) return null;
+ String modLoaderVersion;
+ if((modLoaderVersion = dependencies.get("forge")) != null) {
+ return new ModLoader(ModLoader.MOD_LOADER_FORGE, modLoaderVersion, mcVersion);
+ }
+ if((modLoaderVersion = dependencies.get("fabric-loader")) != null) {
+ return new ModLoader(ModLoader.MOD_LOADER_FABRIC, modLoaderVersion, mcVersion);
+ }
+ if((modLoaderVersion = dependencies.get("quilt-loader")) != null) {
+ return new ModLoader(ModLoader.MOD_LOADER_QUILT, modLoaderVersion, mcVersion);
+ }
+ return null;
+ }
+
+ private ModLoader installMrpack(File mrpackFile, File instanceDestination) throws IOException {
+ try (ZipFile modpackZipFile = new ZipFile(mrpackFile)){
+ ModrinthIndex modrinthIndex = Tools.GLOBAL_GSON.fromJson(
+ Tools.read(ZipUtils.getEntryStream(modpackZipFile, "modrinth.index.json")),
+ ModrinthIndex.class);
+
+ ModDownloader modDownloader = new ModDownloader(instanceDestination);
+ for(ModrinthIndex.ModrinthIndexFile indexFile : modrinthIndex.files) {
+ modDownloader.submitDownload(indexFile.fileSize, indexFile.path, indexFile.downloads);
+ }
+ modDownloader.awaitFinish(new DownloaderProgressWrapper(R.string.modpack_download_downloading_mods, ProgressLayout.INSTALL_MODPACK));
+ ProgressLayout.setProgress(ProgressLayout.INSTALL_MODPACK, 0, R.string.modpack_download_applying_overrides, 1, 2);
+ ZipUtils.zipExtract(modpackZipFile, "overrides/", instanceDestination);
+ ProgressLayout.setProgress(ProgressLayout.INSTALL_MODPACK, 50, R.string.modpack_download_applying_overrides, 2, 2);
+ ZipUtils.zipExtract(modpackZipFile, "client-overrides/", instanceDestination);
+ return createInfo(modrinthIndex);
+ }
+ }
+
+ class ModrinthSearchResult extends SearchResult {
+ int previousOffset;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/NotificationDownloadListener.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/NotificationDownloadListener.java
new file mode 100644
index 000000000..84c41e961
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/NotificationDownloadListener.java
@@ -0,0 +1,69 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.api;
+
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+
+import androidx.core.app.NotificationCompat;
+
+import net.kdt.pojavlaunch.LauncherActivity;
+import net.kdt.pojavlaunch.R;
+import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener;
+import net.kdt.pojavlaunch.modloaders.modpacks.ModloaderInstallTracker;
+import net.kdt.pojavlaunch.value.NotificationConstants;
+
+import java.io.File;
+
+public class NotificationDownloadListener implements ModloaderDownloadListener {
+
+ private final NotificationCompat.Builder mNotificationBuilder;
+ private final NotificationManager mNotificationManager;
+ private final Context mContext;
+ private final ModLoader mModLoader;
+
+ public NotificationDownloadListener(Context context, ModLoader modLoader) {
+ mModLoader = modLoader;
+ mContext = context.getApplicationContext();
+ mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ mNotificationBuilder = new NotificationCompat.Builder(context, "channel_id")
+ .setContentTitle(context.getString(R.string.modpack_install_notification_title))
+ .setSmallIcon(R.drawable.notif_icon);
+ }
+
+ @Override
+ public void onDownloadFinished(File downloadedFile) {
+ if(mModLoader.requiresGuiInstallation()) {
+ ModloaderInstallTracker.saveModLoader(mContext, mModLoader, downloadedFile);
+ Intent mainActivityIntent = new Intent(mContext, LauncherActivity.class);
+ Tools.runOnUiThread(() -> sendIntentNotification(mainActivityIntent, R.string.modpack_install_notification_success));
+ }
+ }
+
+ @Override
+ public void onDataNotAvailable() {
+ Tools.runOnUiThread(()->sendEmptyNotification(R.string.modpack_install_notification_data_not_available));
+ }
+
+ @Override
+ public void onDownloadError(Exception e) {
+ Tools.showErrorRemote(mContext, R.string.modpack_install_modloader_download_failed, e);
+ }
+
+ private void sendIntentNotification(Intent intent, int contentText) {
+ PendingIntent pendingInstallIntent =
+ PendingIntent.getActivity(mContext, NotificationConstants.PENDINGINTENT_CODE_DOWNLOAD_SERVICE,
+ intent, Build.VERSION.SDK_INT >=23 ? PendingIntent.FLAG_IMMUTABLE : 0);
+
+ mNotificationBuilder.setContentText(mContext.getText(contentText));
+ mNotificationBuilder.setContentIntent(pendingInstallIntent);
+ mNotificationManager.notify(NotificationConstants.NOTIFICATION_ID_DOWNLOAD_LISTENER, mNotificationBuilder.build());
+ }
+
+ private void sendEmptyNotification(int contentText) {
+ mNotificationBuilder.setContentText(mContext.getText(contentText));
+ mNotificationManager.notify(NotificationConstants.NOTIFICATION_ID_DOWNLOAD_LISTENER, mNotificationBuilder.build());
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/DownloadImageTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/DownloadImageTask.java
new file mode 100644
index 000000000..9c9bdc942
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/DownloadImageTask.java
@@ -0,0 +1,61 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.imagecache;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+import net.kdt.pojavlaunch.utils.DownloadUtils;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+class DownloadImageTask implements Runnable {
+ private static final float BITMAP_FINAL_DIMENSION = 256f;
+ private final ReadFromDiskTask mParentTask;
+ private int mRetryCount;
+ DownloadImageTask(ReadFromDiskTask parentTask) {
+ this.mParentTask = parentTask;
+ this.mRetryCount = 0;
+ }
+
+ @Override
+ public void run() {
+ boolean wasSuccessful = false;
+ while(mRetryCount < 5 && !(wasSuccessful = runCatching())) {
+ mRetryCount++;
+ }
+ // restart the parent task to read the image and send it to the receiver
+ // if it wasn't cancelled. If it was, then we just die here
+ if(wasSuccessful && !mParentTask.taskCancelled())
+ mParentTask.iconCache.cacheLoaderPool.execute(mParentTask);
+ }
+
+ public boolean runCatching() {
+ try {
+ IconCacheJanitor.waitForJanitorToFinish();
+ DownloadUtils.downloadFile(mParentTask.imageUrl, mParentTask.cacheFile);
+ Bitmap bitmap = BitmapFactory.decodeFile(mParentTask.cacheFile.getAbsolutePath());
+ if(bitmap == null) return false;
+ int bitmapWidth = bitmap.getWidth(), bitmapHeight = bitmap.getHeight();
+ if(bitmapWidth <= BITMAP_FINAL_DIMENSION && bitmapHeight <= BITMAP_FINAL_DIMENSION) {
+ bitmap.recycle();
+ return true;
+ }
+ float imageRescaleRatio = Math.min(BITMAP_FINAL_DIMENSION/bitmapWidth, BITMAP_FINAL_DIMENSION/bitmapHeight);
+ Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap,
+ (int)(bitmapWidth * imageRescaleRatio),
+ (int)(bitmapHeight * imageRescaleRatio),
+ true);
+ bitmap.recycle();
+ if(resizedBitmap == bitmap) return true;
+ try (FileOutputStream fileOutputStream = new FileOutputStream(mParentTask.cacheFile)) {
+ resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 80, fileOutputStream);
+ } finally {
+ resizedBitmap.recycle();
+ }
+ return true;
+ }catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/IconCacheJanitor.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/IconCacheJanitor.java
new file mode 100644
index 000000000..f35fadeaa
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/IconCacheJanitor.java
@@ -0,0 +1,86 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.imagecache;
+
+import android.util.Log;
+
+import net.kdt.pojavlaunch.PojavApplication;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+/**
+ * This image is intended to keep the mod icon cache tidy (aka under 100 megabytes)
+ */
+public class IconCacheJanitor implements Runnable{
+ public static final long CACHE_SIZE_LIMIT = 104857600; // The cache size limit, 100 megabytes
+ public static final long CACHE_BRINGDOWN = 52428800; // The size to which the cache should be brought
+ // in case of an overflow, 50 mb
+ private static Future> sJanitorFuture;
+ private static boolean sJanitorRan = false;
+ private IconCacheJanitor() {
+ // don't allow others to create this
+ }
+ @Override
+ public void run() {
+ File modIconCachePath = ModIconCache.getImageCachePath();
+ if(!modIconCachePath.isDirectory() || !modIconCachePath.canRead()) return;
+ File[] modIconFiles = modIconCachePath.listFiles();
+ if(modIconFiles == null) return;
+ ArrayList writableModIconFiles = new ArrayList<>(modIconFiles.length);
+ long directoryFileSize = 0;
+ for(File modIconFile : modIconFiles) {
+ if(!modIconFile.isFile() || !modIconFile.canRead()) continue;
+ directoryFileSize += modIconFile.length();
+ if(!modIconFile.canWrite()) continue;
+ writableModIconFiles.add(modIconFile);
+ }
+ if(directoryFileSize < CACHE_SIZE_LIMIT) {
+ Log.i("IconCacheJanitor", "Skipping cleanup because there's not enough to clean up");
+ return;
+ }
+ Arrays.sort(modIconFiles,
+ (x,y)-> Long.compare(y.lastModified(), x.lastModified())
+ );
+ int filesCleanedUp = 0;
+ for(File modFile : writableModIconFiles) {
+ if(directoryFileSize < CACHE_BRINGDOWN) break;
+ long modFileSize = modFile.length();
+ if(modFile.delete()) {
+ directoryFileSize -= modFileSize;
+ filesCleanedUp++;
+ }
+ }
+ Log.i("IconCacheJanitor", "Cleaned up "+filesCleanedUp+ " files");
+ synchronized (IconCacheJanitor.class) {
+ sJanitorFuture = null;
+ sJanitorRan = true;
+ }
+ }
+
+ /**
+ * Runs the janitor task, unless there was one running already or one has ran already
+ */
+ public static void runJanitor() {
+ synchronized (IconCacheJanitor.class) {
+ if (sJanitorFuture != null || sJanitorRan) return;
+ sJanitorFuture = PojavApplication.sExecutorService.submit(new IconCacheJanitor());
+ }
+ }
+
+ /**
+ * Waits for the janitor task to finish, if there is one running already
+ * Note that the thread waiting must not be interrupted.
+ */
+ public static void waitForJanitorToFinish() {
+ synchronized (IconCacheJanitor.class) {
+ if (sJanitorFuture == null) return;
+ try {
+ sJanitorFuture.get();
+ } catch (ExecutionException | InterruptedException e) {
+ throw new RuntimeException("Should not happen!", e);
+ }
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ImageReceiver.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ImageReceiver.java
new file mode 100644
index 000000000..f405b657c
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ImageReceiver.java
@@ -0,0 +1,10 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.imagecache;
+
+import android.graphics.Bitmap;
+
+/**
+ * ModIconCache will call your view back when the image becomes available with this interface
+ */
+public interface ImageReceiver {
+ void onImageAvailable(Bitmap image);
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ModIconCache.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ModIconCache.java
new file mode 100644
index 000000000..af1775633
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ModIconCache.java
@@ -0,0 +1,109 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.imagecache;
+
+import android.util.Base64;
+import android.util.Log;
+
+import net.kdt.pojavlaunch.Tools;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public class ModIconCache {
+ ThreadPoolExecutor cacheLoaderPool = new ThreadPoolExecutor(10,
+ 10,
+ 1000,
+ TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<>());
+ File cachePath;
+ private final List> mCancelledReceivers = new ArrayList<>();
+ public ModIconCache() {
+ cachePath = getImageCachePath();
+ if(!cachePath.exists() && !cachePath.isFile() && Tools.DIR_CACHE.canWrite()) {
+ if(!cachePath.mkdirs())
+ throw new RuntimeException("Failed to create icon cache directory");
+ }
+
+ }
+ static File getImageCachePath() {
+ return new File(Tools.DIR_CACHE, "mod_icons");
+ }
+
+ /**
+ * Get an image for a mod with the associated tag and URL to download it in case if its not cached
+ * @param imageReceiver the receiver interface that would get called when the image loads
+ * @param imageTag the tag of the image to keep track of it
+ * @param imageUrl the URL of the image in case if it's not cached
+ */
+ public void getImage(ImageReceiver imageReceiver, String imageTag, String imageUrl) {
+ cacheLoaderPool.execute(new ReadFromDiskTask(this, imageReceiver, imageTag, imageUrl));
+ }
+
+ /**
+ * Mark the image obtainment task requested with this receiver as "cancelled". This means that
+ * this receiver will not be called back and that some tasks related to this image may be
+ * prevented from happening or interrupted.
+ * @param imageReceiver the receiver to cancel
+ */
+ public void cancelImage(ImageReceiver imageReceiver) {
+ synchronized (mCancelledReceivers) {
+ mCancelledReceivers.add(new WeakReference<>(imageReceiver));
+ }
+ }
+
+ boolean checkCancelled(ImageReceiver imageReceiver) {
+ boolean isCanceled = false;
+ synchronized (mCancelledReceivers) {
+ Iterator> iterator = mCancelledReceivers.iterator();
+ while (iterator.hasNext()) {
+ WeakReference reference = iterator.next();
+ if (reference.get() == null) {
+ iterator.remove();
+ continue;
+ }
+ if(reference.get() == imageReceiver) {
+ isCanceled = true;
+ }
+ }
+ }
+ if(isCanceled) Log.i("IconCache", "checkCancelled("+imageReceiver.hashCode()+") == true");
+ return isCanceled;
+ }
+
+ /**
+ * Get the base64-encoded version of a cached icon by its tag.
+ * Note: this functions performs I/O operations, and should not be called on the UI
+ * thread.
+ * @param imageTag the icon tag
+ * @return the base64 encoded image or null if not cached
+ */
+
+ public static String getBase64Image(String imageTag) {
+ File imagePath = new File(Tools.DIR_CACHE, "mod_icons/"+imageTag+".ca");
+ Log.i("IconCache", "Creating base64 version of icon "+imageTag);
+ if(!imagePath.canRead() || !imagePath.isFile()) {
+ Log.i("IconCache", "Icon does not exist");
+ return null;
+ }
+ try {
+ try(FileInputStream fileInputStream = new FileInputStream(imagePath)) {
+ byte[] imageBytes = IOUtils.toByteArray(fileInputStream);
+ // reencode to png? who cares! our profile icon cache is an omnivore!
+ // if some other launcher parses this and dies it is not our problem :troll:
+ return "data:image/png;base64,"+ Base64.encodeToString(imageBytes, Base64.DEFAULT);
+ }
+ }catch (IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ReadFromDiskTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ReadFromDiskTask.java
new file mode 100644
index 000000000..89f3ed41c
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/imagecache/ReadFromDiskTask.java
@@ -0,0 +1,55 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.imagecache;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+import net.kdt.pojavlaunch.Tools;
+
+import java.io.File;
+
+public class ReadFromDiskTask implements Runnable {
+ final ModIconCache iconCache;
+ final ImageReceiver imageReceiver;
+ final File cacheFile;
+ final String imageUrl;
+
+ ReadFromDiskTask(ModIconCache iconCache, ImageReceiver imageReceiver, String cacheTag, String imageUrl) {
+ this.iconCache = iconCache;
+ this.imageReceiver = imageReceiver;
+ this.cacheFile = new File(iconCache.cachePath, cacheTag+".ca");
+ this.imageUrl = imageUrl;
+ }
+
+ public void runDownloadTask() {
+ iconCache.cacheLoaderPool.execute(new DownloadImageTask(this));
+ }
+
+ @Override
+ public void run() {
+ if(cacheFile.isDirectory()) {
+ return;
+ }
+ if(cacheFile.canRead()) {
+ IconCacheJanitor.waitForJanitorToFinish();
+ Bitmap bitmap = BitmapFactory.decodeFile(cacheFile.getAbsolutePath());
+ if(bitmap != null) {
+ Tools.runOnUiThread(()->{
+ if(taskCancelled()) {
+ bitmap.recycle(); // do not leak the bitmap if the task got cancelled right at the end
+ return;
+ }
+ imageReceiver.onImageAvailable(bitmap);
+ });
+ return;
+ }
+ }
+ if(iconCache.cachePath.canWrite() &&
+ !taskCancelled()) { // don't run the download task if the task got canceled
+ runDownloadTask();
+ }
+ }
+ @SuppressWarnings("BooleanMethodAlwaysInverted")
+ public boolean taskCancelled() {
+ return iconCache.checkCancelled(imageReceiver);
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/Constants.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/Constants.java
new file mode 100644
index 000000000..b628a2ae6
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/Constants.java
@@ -0,0 +1,16 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.models;
+
+public class Constants {
+ private Constants(){}
+
+ /** Types of modpack apis */
+ public static final int SOURCE_MODRINTH = 0x0;
+ public static final int SOURCE_CURSEFORGE = 0x1;
+ public static final int SOURCE_TECHNIC = 0x2;
+
+ /** Modrinth api, file environments */
+ public static final String MODRINTH_FILE_ENV_REQUIRED = "required";
+ public static final String MODRINTH_FILE_ENV_OPTIONAL = "optional";
+ public static final String MODRINTH_FILE_ENV_UNSUPPORTED = "unsupported";
+
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/CurseManifest.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/CurseManifest.java
new file mode 100644
index 000000000..f7b82a4ca
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/CurseManifest.java
@@ -0,0 +1,25 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.models;
+
+public class CurseManifest {
+ public String name;
+ public String version;
+ public String author;
+ public String manifestType;
+ public int manifestVersion;
+ public CurseFile[] files;
+ public CurseMinecraft minecraft;
+ public String overrides;
+ public static class CurseFile {
+ public long projectID;
+ public long fileID;
+ public boolean required;
+ }
+ public static class CurseMinecraft {
+ public String version;
+ public CurseModLoader[] modLoaders;
+ }
+ public static class CurseModLoader {
+ public String id;
+ public boolean primary;
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java
new file mode 100644
index 000000000..12f9ec5e1
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java
@@ -0,0 +1,41 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.models;
+
+
+import androidx.annotation.NonNull;
+
+import java.util.Arrays;
+
+public class ModDetail extends ModItem {
+ /* A cheap way to map from the front facing name to the underlying id */
+ public String[] versionNames;
+ public String [] mcVersionNames;
+ public String[] versionUrls;
+ public ModDetail(ModItem item, String[] versionNames, String[] mcVersionNames, String[] versionUrls) {
+ super(item.apiSource, item.isModpack, item.id, item.title, item.description, item.imageUrl);
+ this.versionNames = versionNames;
+ this.mcVersionNames = mcVersionNames;
+ this.versionUrls = versionUrls;
+
+ // Add the mc version to the version model
+ for (int i=0; i dependencies;
+
+
+ public static class ModrinthIndexFile {
+ public String path;
+ public String[] downloads;
+ public int fileSize;
+
+ public ModrinthIndexFileHashes hashes;
+
+ @Nullable public ModrinthIndexFileEnv env;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "ModrinthIndexFile{" +
+ "path='" + path + '\'' +
+ ", downloads=" + Arrays.toString(downloads) +
+ ", fileSize=" + fileSize +
+ ", hashes=" + hashes +
+ '}';
+ }
+
+ public static class ModrinthIndexFileHashes {
+ public String sha1;
+ public String sha512;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "ModrinthIndexFileHashes{" +
+ "sha1='" + sha1 + '\'' +
+ ", sha512='" + sha512 + '\'' +
+ '}';
+ }
+ }
+
+ public static class ModrinthIndexFileEnv {
+ public String client;
+ public String server;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "ModrinthIndexFileEnv{" +
+ "client='" + client + '\'' +
+ ", server='" + server + '\'' +
+ '}';
+ }
+ }
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "ModrinthIndex{" +
+ "formatVersion=" + formatVersion +
+ ", game='" + game + '\'' +
+ ", versionId='" + versionId + '\'' +
+ ", name='" + name + '\'' +
+ ", summary='" + summary + '\'' +
+ ", files=" + Arrays.toString(files) +
+ '}';
+ }
+
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchFilters.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchFilters.java
new file mode 100644
index 000000000..5694b3b1e
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchFilters.java
@@ -0,0 +1,13 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.models;
+
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Search filters, passed to APIs
+ */
+public class SearchFilters {
+ public boolean isModpack;
+ public String name;
+ @Nullable public String mcVersion;
+
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchResult.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchResult.java
new file mode 100644
index 000000000..94638435c
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/SearchResult.java
@@ -0,0 +1,6 @@
+package net.kdt.pojavlaunch.modloaders.modpacks.models;
+
+public class SearchResult {
+ public int totalResultCount;
+ public ModItem[] results;
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTSpinnerAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTSpinnerAdapter.java
index e5548fceb..f7de37374 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTSpinnerAdapter.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTSpinnerAdapter.java
@@ -56,7 +56,7 @@ public class RTSpinnerAdapter implements SpinnerAdapter {
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = convertView != null?
convertView:
- LayoutInflater.from(mContext).inflate(android.R.layout.simple_list_item_1, parent,false);
+ LayoutInflater.from(mContext).inflate(R.layout.item_simple_list_1, parent,false);
Runtime runtime = mRuntimes.get(position);
if(position == mRuntimes.size() - 1 ){
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java
index a3a9266da..367a73c95 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java
@@ -31,15 +31,10 @@ public class ProfileAdapter extends BaseAdapter {
private Map mProfiles;
private final MinecraftProfile dummy = new MinecraftProfile();
private List mProfileList;
- private final ProfileAdapterExtra[] mExtraEntires;
+ private ProfileAdapterExtra[] mExtraEntires;
- public ProfileAdapter(Context context, ProfileAdapterExtra[] extraEntries) {
- ProfileIconCache.initDefault(context);
- LauncherProfiles.update();
- mProfiles = new HashMap<>(LauncherProfiles.mainProfileJson.profiles);
- if(extraEntries == null) mExtraEntires = new ProfileAdapterExtra[0];
- else mExtraEntires = extraEntries;
- mProfileList = new ArrayList<>(Arrays.asList(mProfiles.keySet().toArray(new String[0])));
+ public ProfileAdapter(ProfileAdapterExtra[] extraEntries) {
+ reloadProfiles(extraEntries);
}
/*
* Gets how much profiles are loaded in the adapter right now
@@ -67,6 +62,8 @@ public class ProfileAdapter extends BaseAdapter {
return null;
}
+
+
public int resolveProfileIndex(String name) {
return mProfileList.indexOf(name);
}
@@ -98,11 +95,7 @@ public class ProfileAdapter extends BaseAdapter {
MinecraftProfile minecraftProfile = mProfiles.get(nm);
if(minecraftProfile == null) minecraftProfile = dummy;
- Drawable cachedIcon = ProfileIconCache.getCachedIcon(nm);
-
- if(cachedIcon == null) {
- cachedIcon = ProfileIconCache.tryResolveIcon(v.getResources(), nm, minecraftProfile.icon);
- }
+ Drawable cachedIcon = ProfileIconCache.fetchIcon(v.getResources(), nm, minecraftProfile.icon);
extendedTextView.setCompoundDrawablesRelative(cachedIcon, null, extendedTextView.getCompoundsDrawables()[2], null);
if(Tools.isValidString(minecraftProfile.name))
@@ -134,4 +127,19 @@ public class ProfileAdapter extends BaseAdapter {
extendedTextView.setText(extra.name);
extendedTextView.setBackgroundColor(Color.TRANSPARENT);
}
+
+ /** Reload profiles from the file */
+ public void reloadProfiles(){
+ LauncherProfiles.load();
+ mProfiles = new HashMap<>(LauncherProfiles.mainProfileJson.profiles);
+ mProfileList = new ArrayList<>(Arrays.asList(mProfiles.keySet().toArray(new String[0])));
+ notifyDataSetChanged();
+ }
+
+ /** Reload profiles from the file, with additional extra entries */
+ public void reloadProfiles(ProfileAdapterExtra[] extraEntries) {
+ if(extraEntries == null) mExtraEntires = new ProfileAdapterExtra[0];
+ else mExtraEntires = extraEntries;
+ this.reloadProfiles();
+ }
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileIconCache.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileIconCache.java
index ccbd05470..e706ddcff 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileIconCache.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileIconCache.java
@@ -1,57 +1,99 @@
package net.kdt.pojavlaunch.profiles;
-import android.content.Context;
import android.content.res.Resources;
+import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Base64;
-import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.core.content.res.ResourcesCompat;
import net.kdt.pojavlaunch.R;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
public class ProfileIconCache {
- private static final String BASE64_PNG_HEADER = "data:image/png;base64,";
+ // Data header format: data:;,
+ private static final String DATA_HEADER = "data:";
+ private static final String FALLBACK_ICON_NAME = "default";
private static final Map sIconCache = new HashMap<>();
- private static Drawable sDefaultIcon;
+ private static final Map sStaticIconCache = new HashMap<>();
-
- public static void initDefault(Context context) {
- if(sDefaultIcon != null) return;
- sDefaultIcon = ResourcesCompat.getDrawable(context.getResources(), R.mipmap.ic_launcher_foreground, null);
- if(sDefaultIcon != null) sDefaultIcon.setBounds(0, 0, 10, 10);
+ /**
+ * Fetch an icon from the cache, or load it if it's not cached.
+ * @param resources the Resources object, used for creating drawables
+ * @param key the profile key
+ * @param icon the profile icon data (stored in the icon field of MinecraftProfile)
+ * @return an icon drawable
+ */
+ public static @NonNull Drawable fetchIcon(Resources resources, @NonNull String key, @Nullable String icon) {
+ Drawable cachedIcon = sIconCache.get(key);
+ if(cachedIcon != null) return cachedIcon;
+ if(icon != null && icon.startsWith(DATA_HEADER)) return fetchDataIcon(resources, key, icon);
+ else return fetchStaticIcon(resources, key, icon);
}
- public static Drawable getCachedIcon(String key) {
- return sIconCache.get(key);
+ private static Drawable fetchDataIcon(Resources resources, String key, @NonNull String icon) {
+ Drawable dataIcon = readDataIcon(resources, icon);
+ if(dataIcon == null) dataIcon = fetchFallbackIcon(resources);
+ sIconCache.put(key, dataIcon);
+ return dataIcon;
}
- public static Drawable submitIcon(Resources resources, String key, String base64) {
- byte[] pngBytes = Base64.decode(base64, Base64.DEFAULT);
- Drawable drawable = new BitmapDrawable(resources, BitmapFactory.decodeByteArray(pngBytes, 0, pngBytes.length));
- sIconCache.put(key, drawable);
- return drawable;
- }
-
- public static Drawable tryResolveIcon(Resources resources, String profileName, String b64Icon) {
- Drawable icon;
- if (b64Icon != null && b64Icon.startsWith(BASE64_PNG_HEADER)) {
- icon = ProfileIconCache.submitIcon(resources, profileName, b64Icon.substring(BASE64_PNG_HEADER.length()));
- }else{
- Log.i("IconParser","Unsupported icon: "+b64Icon);
- icon = ProfileIconCache.pushDefaultIcon(profileName);
+ private static Drawable fetchStaticIcon(Resources resources, String key, @Nullable String icon) {
+ Drawable staticIcon = sStaticIconCache.get(icon);
+ if(staticIcon == null) {
+ if(icon != null) staticIcon = getStaticIcon(resources, icon);
+ if(staticIcon == null) staticIcon = fetchFallbackIcon(resources);
+ sStaticIconCache.put(icon, staticIcon);
}
- return icon;
+ sIconCache.put(key, staticIcon);
+ return staticIcon;
}
- public static Drawable pushDefaultIcon(String key) {
- sIconCache.put(key, sDefaultIcon);
+ private static @NonNull Drawable fetchFallbackIcon(Resources resources) {
+ Drawable fallbackIcon = sStaticIconCache.get(FALLBACK_ICON_NAME);
+ if(fallbackIcon == null) {
+ fallbackIcon = Objects.requireNonNull(getStaticIcon(resources, FALLBACK_ICON_NAME));
+ sStaticIconCache.put(FALLBACK_ICON_NAME, fallbackIcon);
+ }
+ return fallbackIcon;
+ }
- return sDefaultIcon;
+ private static Drawable getStaticIcon(Resources resources, @NonNull String icon) {
+ int staticIconResource = getStaticIconResource(icon);
+ if(staticIconResource == -1) return null;
+ return ResourcesCompat.getDrawable(resources, staticIconResource, null);
+ }
+
+ private static int getStaticIconResource(String icon) {
+ switch (icon) {
+ case "default": return R.drawable.ic_pojav_full;
+ case "fabric": return R.drawable.ic_fabric;
+ case "quilt": return R.drawable.ic_quilt;
+ default: return -1;
+ }
+ }
+
+ private static Drawable readDataIcon(Resources resources, String icon) {
+ byte[] iconData = extractIconData(icon);
+ if(iconData == null) return null;
+ Bitmap iconBitmap = BitmapFactory.decodeByteArray(iconData, 0, iconData.length);
+ if(iconBitmap == null) return null;
+ return new BitmapDrawable(resources, iconBitmap);
+ }
+
+ private static byte[] extractIconData(String inputString) {
+ int firstSemicolon = inputString.indexOf(';');
+ int commaAfterSemicolon = inputString.indexOf(',');
+ if(firstSemicolon == -1 || commaAfterSemicolon == -1) return null;
+ String dataEncoding = inputString.substring(firstSemicolon+1, commaAfterSemicolon);
+ if(!dataEncoding.equals("base64")) return null;
+ return Base64.decode(inputString.substring(commaAfterSemicolon+1), 0);
}
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/progresskeeper/DownloaderProgressWrapper.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/progresskeeper/DownloaderProgressWrapper.java
new file mode 100644
index 000000000..bf2818186
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/progresskeeper/DownloaderProgressWrapper.java
@@ -0,0 +1,40 @@
+package net.kdt.pojavlaunch.progresskeeper;
+
+import static net.kdt.pojavlaunch.Tools.BYTE_TO_MB;
+
+import net.kdt.pojavlaunch.Tools;
+
+public class DownloaderProgressWrapper implements Tools.DownloaderFeedback {
+
+ private final int mProgressString;
+ private final String mProgressRecord;
+ public String extraString = null;
+
+ /**
+ * A simple wrapper to send the downloader progress to ProgressKeeper
+ * @param progressString the string that will be used in the progress reporter
+ * @param progressRecord the record for ProgressKeeper
+ */
+ public DownloaderProgressWrapper(int progressString, String progressRecord) {
+ this.mProgressString = progressString;
+ this.mProgressRecord = progressRecord;
+ }
+
+ @Override
+ public void updateProgress(int curr, int max) {
+ Object[] va;
+ if(extraString != null) {
+ va = new Object[3];
+ va[0] = extraString;
+ va[1] = curr/BYTE_TO_MB;
+ va[2] = max/BYTE_TO_MB;
+ }
+ else {
+ va = new Object[2];
+ va[0] = curr/BYTE_TO_MB;
+ va[1] = max/BYTE_TO_MB;
+ }
+ // the allocations are fine because thats how java implements variadic arguments in bytecode: an array of whatever
+ ProgressKeeper.submitProgress(mProgressRecord, (int) Math.max((float)curr/max*100,0), mProgressString, va);
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/GameService.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/GameService.java
index 00babeca1..a88416961 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/GameService.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/GameService.java
@@ -14,6 +14,7 @@ import androidx.core.content.ContextCompat;
import net.kdt.pojavlaunch.R;
import net.kdt.pojavlaunch.Tools;
+import net.kdt.pojavlaunch.value.NotificationConstants;
import java.lang.ref.WeakReference;
@@ -38,14 +39,15 @@ public class GameService extends Service {
}
Intent killIntent = new Intent(getApplicationContext(), GameService.class);
killIntent.putExtra("kill", true);
- PendingIntent pendingKillIntent = PendingIntent.getService(this, 0, killIntent, Build.VERSION.SDK_INT >=23 ? PendingIntent.FLAG_IMMUTABLE : 0);
+ PendingIntent pendingKillIntent = PendingIntent.getService(this, NotificationConstants.PENDINGINTENT_CODE_KILL_GAME_SERVICE
+ , killIntent, Build.VERSION.SDK_INT >=23 ? PendingIntent.FLAG_IMMUTABLE : 0);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "channel_id")
.setContentTitle(getString(R.string.lazy_service_default_title))
.setContentText(getString(R.string.notification_game_runs))
.addAction(android.R.drawable.ic_menu_close_clear_cancel, getString(R.string.notification_terminate), pendingKillIntent)
.setSmallIcon(R.drawable.notif_icon)
.setNotificationSilent();
- startForeground(2, notificationBuilder.build());
+ startForeground(NotificationConstants.NOTIFICATION_ID_GAME_SERVICE, notificationBuilder.build());
return START_NOT_STICKY; // non-sticky so android wont try restarting the game after the user uses the "Quit" button
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/ProgressService.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/ProgressService.java
index b5fc6396b..2ffa71eb9 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/ProgressService.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/services/ProgressService.java
@@ -19,6 +19,7 @@ import net.kdt.pojavlaunch.R;
import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper;
import net.kdt.pojavlaunch.progresskeeper.TaskCountListener;
+import net.kdt.pojavlaunch.value.NotificationConstants;
/**
* Lazy service which allows the process not to get killed.
@@ -42,7 +43,8 @@ public class ProgressService extends Service implements TaskCountListener {
notificationManagerCompat = NotificationManagerCompat.from(getApplicationContext());
Intent killIntent = new Intent(getApplicationContext(), ProgressService.class);
killIntent.putExtra("kill", true);
- PendingIntent pendingKillIntent = PendingIntent.getService(this, 0, killIntent, Build.VERSION.SDK_INT >=23 ? PendingIntent.FLAG_IMMUTABLE : 0);
+ PendingIntent pendingKillIntent = PendingIntent.getService(this, NotificationConstants.PENDINGINTENT_CODE_KILL_PROGRESS_SERVICE
+ , killIntent, Build.VERSION.SDK_INT >=23 ? PendingIntent.FLAG_IMMUTABLE : 0);
mNotificationBuilder = new NotificationCompat.Builder(this, "channel_id")
.setContentTitle(getString(R.string.lazy_service_default_title))
.addAction(android.R.drawable.ic_menu_close_clear_cancel, getString(R.string.notification_terminate), pendingKillIntent)
@@ -62,7 +64,7 @@ public class ProgressService extends Service implements TaskCountListener {
}
Log.d("ProgressService", "Started!");
mNotificationBuilder.setContentText(getString(R.string.progresslayout_tasks_in_progress, ProgressKeeper.getTaskCount()));
- startForeground(1, mNotificationBuilder.build());
+ startForeground(NotificationConstants.NOTIFICATION_ID_PROGRESS_SERVICE, mNotificationBuilder.build());
if(ProgressKeeper.getTaskCount() < 1) stopSelf();
else ProgressKeeper.addTaskCountListener(this, false);
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/AsyncMinecraftDownloader.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/AsyncMinecraftDownloader.java
index 74112fefd..4de6935c3 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/AsyncMinecraftDownloader.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/AsyncMinecraftDownloader.java
@@ -1,6 +1,7 @@
package net.kdt.pojavlaunch.tasks;
import static net.kdt.pojavlaunch.PojavApplication.sExecutorService;
+import static net.kdt.pojavlaunch.Tools.BYTE_TO_MB;
import static net.kdt.pojavlaunch.utils.DownloadUtils.downloadFileMonitored;
import android.app.Activity;
@@ -40,7 +41,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
public class AsyncMinecraftDownloader {
- private static final float BYTE_TO_MB = 1024 * 1024;
+
public static final String MINECRAFT_RES = "https://resources.download.minecraft.net/";
/* Allows each downloading thread to have its own RECYCLED buffer */
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/FileUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/FileUtils.java
index 44cc8c5fb..2256c6cc5 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/FileUtils.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/FileUtils.java
@@ -1,9 +1,20 @@
package net.kdt.pojavlaunch.utils;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
public class FileUtils {
public static boolean exists(String filePath){
return new File(filePath).exists();
}
+
+ public static String getFileName(String pathOrUrl) {
+ int lastSlashIndex = pathOrUrl.lastIndexOf('/');
+ if(lastSlashIndex == -1) return null;
+ return pathOrUrl.substring(lastSlashIndex);
+ }
}
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java
index d17f12e3d..5dd996da4 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java
@@ -285,6 +285,9 @@ public class JREUtils {
purgeArg(userArgs,"-d32");
purgeArg(userArgs,"-d64");
purgeArg(userArgs, "-Xint");
+ purgeArg(userArgs, "-XX:+UseTransparentHugePages");
+ purgeArg(userArgs, "-XX:+UseLargePagesInMetaspace");
+ purgeArg(userArgs, "-XX:+UseLargePages");
purgeArg(userArgs, "-Dorg.lwjgl.opengl.libname");
//Add automatically generated args
@@ -332,6 +335,7 @@ public class JREUtils {
ArrayList overridableArguments = new ArrayList<>(Arrays.asList(
"-Djava.home=" + runtimeHome,
"-Djava.io.tmpdir=" + Tools.DIR_CACHE.getAbsolutePath(),
+ "-Djna.boot.library.path=" + NATIVE_LIB_DIR,
"-Duser.home=" + Tools.DIR_GAME_HOME,
"-Duser.language=" + System.getProperty("user.language"),
"-Dos.name=Linux",
@@ -340,11 +344,11 @@ public class JREUtils {
"-Dpojav.path.private.account=" + Tools.DIR_ACCOUNT_NEW,
"-Duser.timezone=" + TimeZone.getDefault().getID(),
+ "-Dorg.lwjgl.vulkan.libname=libvulkan.so",
//LWJGL 3 DEBUG FLAGS
//"-Dorg.lwjgl.util.Debug=true",
//"-Dorg.lwjgl.util.DebugFunctions=true",
//"-Dorg.lwjgl.util.DebugLoader=true",
- "-Dorg.lwjgl.util.NoChecks=true",
// GLFW Stub width height
"-Dglfwstub.windowWidth=" + Tools.getDisplayFriendlyRes(currentDisplayMetrics.widthPixels, LauncherPreferences.PREF_SCALE_FACTOR/100F),
"-Dglfwstub.windowHeight=" + Tools.getDisplayFriendlyRes(currentDisplayMetrics.heightPixels, LauncherPreferences.PREF_SCALE_FACTOR/100F),
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/ZipUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/ZipUtils.java
new file mode 100644
index 000000000..a56fd661b
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/ZipUtils.java
@@ -0,0 +1,58 @@
+package net.kdt.pojavlaunch.utils;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+public class ZipUtils {
+ /**
+ * Gets an InputStream for a given ZIP entry, throwing an IOException if the ZIP entry does not
+ * exist.
+ * @param zipFile The ZipFile to get the entry from
+ * @param entryPath The full path inside of the ZipFile
+ * @return The InputStream provided by the ZipFile
+ * @throws IOException if the entry was not found
+ */
+ public static InputStream getEntryStream(ZipFile zipFile, String entryPath) throws IOException{
+ ZipEntry entry = zipFile.getEntry(entryPath);
+ if(entry == null) throw new IOException("No entry in ZIP file: "+entryPath);
+ return zipFile.getInputStream(entry);
+ }
+
+ /**
+ * Extracts all files in a ZipFile inside of a given directory to a given destination directory
+ * How to specify dirName:
+ * If you want to extract all files in the ZipFile, specify ""
+ * If you want to extract a single directory, specify its full path followed by a trailing /
+ * @param zipFile The ZipFile to extract files from
+ * @param dirName The directory to extract the files from
+ * @param destination The destination directory to extract the files into
+ * @throws IOException if it was not possible to create a directory or file extraction failed
+ */
+ public static void zipExtract(ZipFile zipFile, String dirName, File destination) throws IOException {
+ Enumeration extends ZipEntry> zipEntries = zipFile.entries();
+
+ int dirNameLen = dirName.length();
+ while(zipEntries.hasMoreElements()) {
+ ZipEntry zipEntry = zipEntries.nextElement();
+ String entryName = zipEntry.getName();
+ if(!entryName.startsWith(dirName) || zipEntry.isDirectory()) continue;
+ File zipDestination = new File(destination, entryName.substring(dirNameLen));
+ File parent = zipDestination.getParentFile();
+ if(parent != null && !parent.exists())
+ if(!parent.mkdirs()) throw new IOException("Failed to create "+parent.getAbsolutePath());
+ try (InputStream inputStream = zipFile.getInputStream(zipEntry);
+ OutputStream outputStream =
+ new FileOutputStream(zipDestination)) {
+ IOUtils.copy(inputStream, outputStream);
+ }
+ }
+ }
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/NotificationConstants.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/NotificationConstants.java
new file mode 100644
index 000000000..02c23596e
--- /dev/null
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/NotificationConstants.java
@@ -0,0 +1,12 @@
+package net.kdt.pojavlaunch.value;
+
+public class NotificationConstants {
+ public static final int NOTIFICATION_ID_PROGRESS_SERVICE = 1;
+ public static final int NOTIFICATION_ID_GAME_SERVICE = 2;
+ public static final int NOTIFICATION_ID_DOWNLOAD_LISTENER = 3;
+ public static final int NOTIFICATION_ID_SHOW_ERROR = 4;
+ public static final int PENDINGINTENT_CODE_KILL_PROGRESS_SERVICE = 1;
+ public static final int PENDINGINTENT_CODE_KILL_GAME_SERVICE = 2;
+ public static final int PENDINGINTENT_CODE_DOWNLOAD_SERVICE = 3;
+ public static final int PENDINGINTENT_CODE_SHOW_ERROR = 4;
+}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/LauncherProfiles.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/LauncherProfiles.java
index 7d7f826d2..e13c9d83d 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/LauncherProfiles.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/LauncherProfiles.java
@@ -8,45 +8,77 @@ import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.prefs.LauncherPreferences;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Map;
import java.util.UUID;
public class LauncherProfiles {
public static MinecraftLauncherProfiles mainProfileJson;
- public static final File launcherProfilesFile = new File(Tools.DIR_GAME_NEW, "launcher_profiles.json");
- public static MinecraftLauncherProfiles update() {
- try {
- if (mainProfileJson == null) {
- if (launcherProfilesFile.exists()) {
- mainProfileJson = Tools.GLOBAL_GSON.fromJson(Tools.read(launcherProfilesFile.getAbsolutePath()), MinecraftLauncherProfiles.class);
- if(mainProfileJson.profiles == null) mainProfileJson.profiles = new HashMap<>();
- else if(LauncherProfiles.normalizeProfileIds(mainProfileJson)){
- LauncherProfiles.update();
- }
- } else {
- mainProfileJson = new MinecraftLauncherProfiles();
- mainProfileJson.profiles = new HashMap<>();
- }
- } else {
- Tools.write(launcherProfilesFile.getAbsolutePath(), mainProfileJson.toJson());
- }
+ private static final File launcherProfilesFile = new File(Tools.DIR_GAME_NEW, "launcher_profiles.json");
- // insertMissing();
- return mainProfileJson;
- } catch (Throwable th) {
- throw new RuntimeException(th);
+ /** Reload the profile from the file, creating a default one if necessary */
+ public static void load(){
+ if (launcherProfilesFile.exists()) {
+ try {
+ mainProfileJson = Tools.GLOBAL_GSON.fromJson(Tools.read(launcherProfilesFile.getAbsolutePath()), MinecraftLauncherProfiles.class);
+ } catch (IOException e) {
+ Log.e(LauncherProfiles.class.toString(), "Failed to load file: ", e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ // Fill with default
+ if (mainProfileJson == null) mainProfileJson = new MinecraftLauncherProfiles();
+ if (mainProfileJson.profiles == null) mainProfileJson.profiles = new HashMap<>();
+ if (mainProfileJson.profiles.size() == 0)
+ mainProfileJson.profiles.put(UUID.randomUUID().toString(), MinecraftProfile.getDefaultProfile());
+
+ // Normalize profile names from mod installers
+ if(normalizeProfileIds(mainProfileJson)){
+ write();
+ load();
+ }
+ }
+
+ /** Apply the current configuration into a file */
+ public static void write() {
+ try {
+ Tools.write(launcherProfilesFile.getAbsolutePath(), mainProfileJson.toJson());
+ } catch (IOException e) {
+ Log.e(LauncherProfiles.class.toString(), "Failed to write profile file", e);
+ throw new RuntimeException(e);
}
}
public static @NonNull MinecraftProfile getCurrentProfile() {
- if(mainProfileJson == null) LauncherProfiles.update();
+ if(mainProfileJson == null) LauncherProfiles.load();
String defaultProfileName = LauncherPreferences.DEFAULT_PREF.getString(LauncherPreferences.PREF_KEY_CURRENT_PROFILE, "");
MinecraftProfile profile = mainProfileJson.profiles.get(defaultProfileName);
if(profile == null) throw new RuntimeException("The current profile stopped existing :(");
return profile;
}
+ /**
+ * Insert a new profile into the profile map
+ * @param minecraftProfile the profile to insert
+ */
+ public static void insertMinecraftProfile(MinecraftProfile minecraftProfile) {
+ mainProfileJson.profiles.put(getFreeProfileKey(), minecraftProfile);
+ }
+
+ /**
+ * Pick an unused normalized key to store a new profile with
+ * @return an unused key
+ */
+ public static String getFreeProfileKey() {
+ Map profileMap = mainProfileJson.profiles;
+ String freeKey = UUID.randomUUID().toString();
+ while(profileMap.get(freeKey) != null) freeKey = UUID.randomUUID().toString();
+ return freeKey;
+ }
+
/**
* For all keys to be UUIDs, effectively isolating profile created by installers
* This avoids certain profiles to be erased by the installer
@@ -67,13 +99,9 @@ public class LauncherProfiles {
}
// Swap the new keys
- for(String profileKey: keys){
- String uuid = UUID.randomUUID().toString();
- while(launcherProfiles.profiles.containsKey(uuid)) {
- uuid = UUID.randomUUID().toString();
- }
-
- launcherProfiles.profiles.put(uuid, launcherProfiles.profiles.get(profileKey));
+ for(String profileKey : keys){
+ MinecraftProfile currentProfile = launcherProfiles.profiles.get(profileKey);
+ insertMinecraftProfile(currentProfile);
launcherProfiles.profiles.remove(profileKey);
hasNormalized = true;
}
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftProfile.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftProfile.java
index 18b4d82d4..94545abf6 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftProfile.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftProfile.java
@@ -28,6 +28,13 @@ public class MinecraftProfile {
return TEMPLATE;
}
+ public static MinecraftProfile getDefaultProfile(){
+ MinecraftProfile defaultProfile = new MinecraftProfile();
+ defaultProfile.name = "Default";
+ defaultProfile.lastVersionId = "1.7.10";
+ return defaultProfile;
+ }
+
public MinecraftProfile(){}
public MinecraftProfile(MinecraftProfile profile){
diff --git a/app_pojavlauncher/src/main/jni/egl_bridge.c b/app_pojavlauncher/src/main/jni/egl_bridge.c
index 91f1e5b62..1e900eeaf 100644
--- a/app_pojavlauncher/src/main/jni/egl_bridge.c
+++ b/app_pojavlauncher/src/main/jni/egl_bridge.c
@@ -27,6 +27,12 @@
#include "utils.h"
#include "ctxbridges/gl_bridge.h"
+#define GLFW_CLIENT_API 0x22001
+/* Consider GLFW_NO_API as Vulkan API */
+#define GLFW_NO_API 0
+#define GLFW_OPENGL_API 0x30001
+
+
struct PotatoBridge {
/* EGLContext */ void* eglContextOld;
@@ -46,15 +52,10 @@ struct PotatoBridge potatoBridge;
#define RENDERER_GL4ES 1
#define RENDERER_VK_ZINK 2
+#define RENDERER_VULKAN 4
void* gbuffer;
-void pojav_openGLOnLoad() {
-}
-void pojav_openGLOnUnload() {
-
-}
-
void pojavTerminate() {
printf("EGLBridge: Terminating\n");
@@ -225,7 +226,10 @@ int pojavInit() {
pojav_environ->savedWidth = ANativeWindow_getWidth(pojav_environ->pojavWindow);
pojav_environ->savedHeight = ANativeWindow_getHeight(pojav_environ->pojavWindow);
ANativeWindow_setBuffersGeometry(pojav_environ->pojavWindow,pojav_environ->savedWidth,pojav_environ->savedHeight,AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM);
+ return 1;
+}
+int pojavInitOpenGL() {
// Only affects GL4ES as of now
const char *forceVsync = getenv("FORCE_VSYNC");
if (strcmp(forceVsync, "true") == 0)
@@ -269,6 +273,25 @@ int pojavInit() {
return 0;
}
+
+void pojavSetWindowHint(int hint, int value) {
+ if (hint != GLFW_CLIENT_API) return;
+ switch (value) {
+ case GLFW_NO_API:
+ pojav_environ->config_renderer = RENDERER_VULKAN;
+ /* Nothing to do: initialization is handled in Java-side */
+ // pojavInitVulkan();
+ break;
+ case GLFW_OPENGL_API:
+ /* Nothing to do: initialization is called in pojavCreateContext */
+ // pojavInitOpenGL();
+ break;
+ default:
+ printf("GLFW: Unimplemented API 0x%x\n", value);
+ abort();
+ }
+}
+
ANativeWindow_Buffer buf;
int32_t stride;
bool stopSwapBuffers;
@@ -344,6 +367,12 @@ Java_org_lwjgl_glfw_GLFW_nativeEglDetachOnCurrentThread(JNIEnv *env, jclass claz
*/
void* pojavCreateContext(void* contextSrc) {
+ if (pojav_environ->config_renderer == RENDERER_VULKAN) {
+ return (void *)pojav_environ->pojavWindow;
+ }
+
+ pojavInitOpenGL();
+
if (pojav_environ->config_renderer == RENDERER_GL4ES) {
/*const EGLint ctx_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, atoi(getenv("LIBGL_ES")),
diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c
index d522df52c..04a1a1854 100644
--- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c
+++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c
@@ -17,6 +17,7 @@
#include
#include
#include
+#include
#include "log.h"
#include "utils.h"
@@ -139,7 +140,8 @@ void pojavPumpEvents(void* window) {
if((pojav_environ->cLastX != pojav_environ->cursorX || pojav_environ->cLastY != pojav_environ->cursorY) && pojav_environ->GLFW_invoke_CursorPos) {
pojav_environ->cLastX = pojav_environ->cursorX;
pojav_environ->cLastY = pojav_environ->cursorY;
- pojav_environ->GLFW_invoke_CursorPos(window, pojav_environ->cursorX, pojav_environ->cursorY);
+ pojav_environ->GLFW_invoke_CursorPos(window, floor(pojav_environ->cursorX),
+ floor(pojav_environ->cursorY));
}
// The out target index is updated by the rewinder
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so
index d42762d36..b58816595 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so
index ffd734d0e..aa8acb31e 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_nanovg.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_nanovg.so
new file mode 100644
index 000000000..c78fa1565
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_nanovg.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so
index b8b470592..bad44ab62 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so
index b5e49839f..57ee82465 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_tinyfd.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_tinyfd.so
new file mode 100644
index 000000000..42af1df5f
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_tinyfd.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libjnidispatch.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libjnidispatch.so
index c411147d7..1d02dca9d 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libjnidispatch.so and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libjnidispatch.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl.so
index f795db9de..b94f9b931 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl.so and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_nanovg.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_nanovg.so
new file mode 100644
index 000000000..aea966ada
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_nanovg.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so
index 9312f05e3..44dff1b80 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_stb.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_stb.so
index d7b3c67fc..fd8ce114c 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_stb.so and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_stb.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_tinyfd.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_tinyfd.so
new file mode 100644
index 000000000..d30a1539a
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/liblwjgl_tinyfd.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/libjnidispatch.so b/app_pojavlauncher/src/main/jniLibs/x86/libjnidispatch.so
index bb9058cbd..336aad7b9 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86/libjnidispatch.so and b/app_pojavlauncher/src/main/jniLibs/x86/libjnidispatch.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl.so b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl.so
index e84adaeac..798847f89 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl.so and b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_nanovg.so b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_nanovg.so
new file mode 100644
index 000000000..8bf786578
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_nanovg.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_opengl.so b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_opengl.so
index 82c66a026..bf0f05c70 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_opengl.so and b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_opengl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_stb.so b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_stb.so
index 3b0c3d68c..7aebedf41 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_stb.so and b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_stb.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_tinyfd.so b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_tinyfd.so
new file mode 100644
index 000000000..4c9d5eaa2
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/x86/liblwjgl_tinyfd.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/libjnidispatch.so b/app_pojavlauncher/src/main/jniLibs/x86_64/libjnidispatch.so
index 72ad7b972..4af42fc52 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86_64/libjnidispatch.so and b/app_pojavlauncher/src/main/jniLibs/x86_64/libjnidispatch.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl.so b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl.so
index 372fb2900..c9efd0115 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl.so and b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_nanovg.so b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_nanovg.so
new file mode 100644
index 000000000..283728cdc
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_nanovg.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_opengl.so b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_opengl.so
index 3c81abb3e..b863fdf78 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_opengl.so and b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_opengl.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_stb.so b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_stb.so
index 35e27f248..ae0d6450a 100644
Binary files a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_stb.so and b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_stb.so differ
diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_tinyfd.so b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_tinyfd.so
new file mode 100644
index 000000000..500ae098f
Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/x86_64/liblwjgl_tinyfd.so differ
diff --git a/app_pojavlauncher/src/main/res/drawable/background_control_editor.xml b/app_pojavlauncher/src/main/res/drawable/background_control_editor.xml
new file mode 100644
index 000000000..5e350dd5b
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/drawable/background_control_editor.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/app_pojavlauncher/src/main/res/drawable/background_line_selected.xml b/app_pojavlauncher/src/main/res/drawable/background_line_selected.xml
index 56fa839b7..f962a8189 100644
--- a/app_pojavlauncher/src/main/res/drawable/background_line_selected.xml
+++ b/app_pojavlauncher/src/main/res/drawable/background_line_selected.xml
@@ -7,10 +7,6 @@
-
-
diff --git a/app_pojavlauncher/src/main/res/drawable/background_line_unselected.xml b/app_pojavlauncher/src/main/res/drawable/background_line_unselected.xml
index d1cd8faba..1c95d5431 100644
--- a/app_pojavlauncher/src/main/res/drawable/background_line_unselected.xml
+++ b/app_pojavlauncher/src/main/res/drawable/background_line_unselected.xml
@@ -8,8 +8,8 @@
+ android:bottom="@dimen/padding_input_bottom"
+ android:top="@dimen/padding_input_top" />
+
+
+
+
+
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_curseforge.png b/app_pojavlauncher/src/main/res/drawable/ic_curseforge.png
new file mode 100644
index 000000000..2e19dc710
Binary files /dev/null and b/app_pojavlauncher/src/main/res/drawable/ic_curseforge.png differ
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_fabric.webp b/app_pojavlauncher/src/main/res/drawable/ic_fabric.webp
new file mode 100644
index 000000000..1e1bb37e1
Binary files /dev/null and b/app_pojavlauncher/src/main/res/drawable/ic_fabric.webp differ
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_filter.xml b/app_pojavlauncher/src/main/res/drawable/ic_filter.xml
new file mode 100644
index 000000000..b03044595
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/drawable/ic_filter.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_modrinth.png b/app_pojavlauncher/src/main/res/drawable/ic_modrinth.png
new file mode 100644
index 000000000..0d7b08659
Binary files /dev/null and b/app_pojavlauncher/src/main/res/drawable/ic_modrinth.png differ
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_pojav_full.webp b/app_pojavlauncher/src/main/res/drawable/ic_pojav_full.webp
new file mode 100644
index 000000000..f67320c77
Binary files /dev/null and b/app_pojavlauncher/src/main/res/drawable/ic_pojav_full.webp differ
diff --git a/app_pojavlauncher/src/main/res/drawable/ic_quilt.webp b/app_pojavlauncher/src/main/res/drawable/ic_quilt.webp
new file mode 100644
index 000000000..0e9abc098
Binary files /dev/null and b/app_pojavlauncher/src/main/res/drawable/ic_quilt.webp differ
diff --git a/app_pojavlauncher/src/main/res/layout/dialog_color_selector.xml b/app_pojavlauncher/src/main/res/layout/dialog_color_selector.xml
index ffa57362c..dccb2e998 100644
--- a/app_pojavlauncher/src/main/res/layout/dialog_color_selector.xml
+++ b/app_pojavlauncher/src/main/res/layout/dialog_color_selector.xml
@@ -5,11 +5,13 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/_280sdp"
android:layout_height="match_parent"
- android:background="@color/background_app"
- android:paddingHorizontal="@dimen/_5sdp"
- android:paddingVertical="@dimen/_5sdp"
+ android:background="@drawable/background_control_editor"
+ android:paddingHorizontal="@dimen/padding_moderate"
+ android:paddingVertical="@dimen/padding_moderate"
android:id="@+id/color_picker_layout"
- android:layout_marginVertical="@dimen/_14sdp">
+ android:layout_marginVertical="@dimen/padding_heavy"
+ android:layout_gravity="center_vertical"
+ >
-
@@ -58,7 +58,7 @@
+
+ app:layout_constraintTop_toBottomOf="@+id/editMapping_textView" />
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+ app:layout_constraintBottom_toBottomOf="@+id/mapping_1_textview"
+ app:layout_constraintEnd_toEndOf="@+id/mapping_1_textview"
+ app:layout_constraintStart_toEndOf="@id/mapping_1_textview"
+ app:layout_constraintTop_toTopOf="@+id/mapping_1_textview" />
-
-
+
+
+ app:layout_constraintTop_toBottomOf="@id/mapping_1_textview"
+
+ tools:text="HELLO" />
+ app:layout_constraintBottom_toBottomOf="@+id/mapping_3_textview"
+ app:layout_constraintEnd_toEndOf="@+id/mapping_3_textview"
+ app:layout_constraintStart_toEndOf="@id/mapping_3_textview"
+ app:layout_constraintTop_toBottomOf="@+id/mapping_1_textview" />
-
+ app:layout_constraintStart_toEndOf="@id/mapping_3_textview"
+ app:layout_constraintTop_toTopOf="@id/mapping_3_textview"
+
+ tools:text="HELLO" />
@@ -198,17 +267,18 @@
android:id="@+id/editOrientation_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/_2sdp"
android:gravity="center"
android:paddingEnd="5dp"
android:text="@string/customctrl_orientation"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/editMapping_spinner_3" />
+ app:layout_constraintTop_toBottomOf="@+id/mapping_3_textview" />
+
+
+
-
+ app:layout_constraintTop_toBottomOf="@id/checkboxForwardLock" />
@@ -274,6 +354,7 @@
android:id="@+id/editStrokeWidth_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/_5sdp"
android:gravity="center"
android:paddingEnd="5dp"
android:text="@string/customctrl_stroke_width"
@@ -285,7 +366,7 @@
+
+
+
+
+
+
+
diff --git a/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml b/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml
new file mode 100644
index 000000000..911f02b39
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/res/layout/fragment_fabric_install.xml b/app_pojavlauncher/src/main/res/layout/fragment_fabric_install.xml
index cf75586d0..22bc0a2f5 100644
--- a/app_pojavlauncher/src/main/res/layout/fragment_fabric_install.xml
+++ b/app_pojavlauncher/src/main/res/layout/fragment_fabric_install.xml
@@ -27,6 +27,38 @@
android:layout_marginTop="@dimen/padding_large"
app:layout_constraintTop_toBottomOf="@+id/title_textview" />
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/fabric_installer_game_ver_spinner" />
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/res/layout/fragment_profile_editor.xml b/app_pojavlauncher/src/main/res/layout/fragment_profile_editor.xml
index 435b4d8f1..919f871a8 100644
--- a/app_pojavlauncher/src/main/res/layout/fragment_profile_editor.xml
+++ b/app_pojavlauncher/src/main/res/layout/fragment_profile_editor.xml
@@ -63,8 +63,11 @@
+ tools:paddingVertical="@dimen/_12sdp" />
+ tools:paddingVertical="@dimen/_12sdp" />
-
+ android:background="@color/background_app">
+ android:text="@string/modloader_dl_install_fabric" />
+
+
- android:text="@string/modloader_dl_install_forge"
-
- app:layout_constraintTop_toBottomOf="@+id/modded_profile_fabric" />
+
+
+
+
diff --git a/app_pojavlauncher/src/main/res/layout/view_loading.xml b/app_pojavlauncher/src/main/res/layout/view_loading.xml
new file mode 100644
index 000000000..385e1eed8
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/layout/view_loading.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/res/layout/view_mod.xml b/app_pojavlauncher/src/main/res/layout/view_mod.xml
new file mode 100644
index 000000000..863ce17dc
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/layout/view_mod.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/res/layout/view_mod_extended.xml b/app_pojavlauncher/src/main/res/layout/view_mod_extended.xml
new file mode 100644
index 000000000..c3e4f2230
--- /dev/null
+++ b/app_pojavlauncher/src/main/res/layout/view_mod_extended.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_pojavlauncher/src/main/res/values-en-rPS/strings.xml b/app_pojavlauncher/src/main/res/values-en-rPS/strings.xml
deleted file mode 100644
index 335014f0f..000000000
--- a/app_pojavlauncher/src/main/res/values-en-rPS/strings.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
- PojavLauncher (Minecraft: Java Edition fer Android)
- PojavLauncher
- Launch Minecraft: Java Edition in yer device!
-
-
-
- Email or passport
- Secret Key
- Be keepin\' ye on board fer next time
- Get Aboard
- This passport already \'ere
- Hop aboard with Microsoft
- Be usin\' buccaneer
- We can\'t be findin\' ye bucaneer !
-
-
- This buccaneer will be Marooned!
-
- Settle Java Runtime %s (.tar.xz)
- Be selectin\' a mod settler
-
- PojavLauncher has unfortunately sunk
- No Date o\' creation!
- Keep th\' knowledge out on table
- Keep th\' knowledge inside th\' table
-
- The read/write t\' hold permission be required!
- Success in th\' ship
- Finished unsettlin\' Java Runtime
-
-
- Captain\'s Log
- Sunk ship log
-
- Settled
-
- Be Ready to sail dock %s
- Downloadin %s
- "Building ship %s (%.2f MB / %.2f MB)"
- Gettin\' th\' treasure ready
- Set sail on a mod settler (Forge, LabyMod, Fabric, etc...)
- Set sail on a mod settler (with yer\' codes)
- custom trigger
- Settings
- \'Bout me
- Unsettle Java Runtime
- Don\'t see notch
- Don\'t see notch and extend th\' screen under it.\nGives you more treasure.
- Map size scaler
- Release
- Snapshot
- Ol\'-alpha
- Ol\'-beta
-
- Beware
- Title on yer forhead
- Yar ship needs a lookover
- Unpackin\' %s
- Stay Here
-
- Your boat drown with number %d, check debris for more detail (lastestlog.txt).
- True Story
-
- Keyboard
- Chat
-
- Crow\'s Nest
-
-
- Editin\' %s
- Keelhaul %s?
- Add buttn
- Choose normal Control json
- Sail
- Ahoy, %s
- Info (DEV)
- Change bucaneer
- Dock:
- No sunk ship found
- No Diary.
- RAM by magic
- Sail nevertheless
- Latest prototype
- Latest ship
- Title on yer forhead
- Dock
- Keelhaul
- Cosmetica Mantles
- Enables mantles from Cosmetica (previously Arc). Fer mor\' information be visitin\' https://cosmetica.cc. Requires OptiFine.
-
diff --git a/app_pojavlauncher/src/main/res/values-lol-rAA/strings.xml b/app_pojavlauncher/src/main/res/values-lol-rAA/strings.xml
deleted file mode 100644
index 06d66b1ca..000000000
--- a/app_pojavlauncher/src/main/res/values-lol-rAA/strings.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-
-
-
- pajaw launcher (Mc4Android)
- PojawLunchr
- go MC at your mobile!
-
-
-
- Emol or osornoim
- passwd
- kep i kog inside
- logout
- Invalid catz\' neim. Catz\' neim hav tu be in rein\'g uf 3-16 kerekturs, shud only kontainz A-Z, a-z, 0-9 and undrskore.
- ohno, this uzrname iz regiztered:(
- Microsoft entrunz
- what acc?
- No akownt findz !
- U doan has any savd akownt.\nUse teh opshun \"Keep me loggd in\" 2 save an akownt upon furst login.
-
-
- Dis akownt wil be removed!
-
- Install Coffee Cupz’ Runtime %s (.tar.xz)
- Chooz mod installr
-
- Pojaw Launcher haz unexpectadly crashd
- No vershun!
- Show mor
- Show les
-
- Teh riid/rite 2 storage permishun iz requird!
- Instal succesful
- Dun uninstall Coffee Cupz’ Runtime
-
-
- Developmnt consol
- Crash trunk
-
- Connectd
- LOCAL
-
- Ready 2 pulay minecraft %s
- Cleanin cache filez
- Downloadin %s
- "Downloadin %s (%.2f MB / %.2f MB)"
- Preparin 2 download resourcez
- MINECRAFT CANT BE LEGALLY INSTALLD WHEN LOGGD IN WIF LOCAL AKOWNT. PLZ SWITCH 2 AN ONLINE AKOWNT 2 CONTINUE.
- Opshuns
- L’unch mod installr (Forge, LabyMod, Fabric, etc...)
- L’unch mod installr (wif cuztoum argumentz)
- Custom controls
- Settinz
- Bout
- USE ALTERNATE SURFACE RENDERIN
- CUD HALP PERFORMANCE IN GPU BOUND SCENARIOS
- Uninstall Coffee Cupz’ Runtime
- [Launchah restart requird] dis letz u re-install Coffee Cupz’ Runtime
- Launch Minecraft in Freeform moed
- Launch minecraft in floatin window. Requirez android 7.0+
- Dunt’ Show Sidebar
- Nostalgic folkz preferring teh old v1 UI miet likes dis. Srsly givez u moar fullscreen experienec.
- Ignoer notch
- Ignoer teh notch an extendz teh screen undr it, Srsly.\nGivez u moar immersiev experienec.
- Resolushun Scalah
- Allowz u 2 decreaes teh gaem resolushun. 100% iz fol resolushun
- How long will triggr aftr long pres
- Change triggr tiem 4 long pres in destroy block an drop item.
- Treat bak butn as rite mouse
- Sum devicez treats external rite mouse as bak butn. If u r usin external mouse, u shud enable dis.
- Flat button styel
- Enabel dis 2 chaneg control button styel 2 flat.
- Control buttons scalin
- Upscael dem if buttons r 2 small.
- Mouse scalin
- Chaneg siez ov vurtual moues.
- CCz’UM L’unch argumentz
- Bees careful, dis can mak teh game crash if modified witout knowledge.
- General settingz
- Scalin settingz
- Renderer
- Vershun type will be in vershun list
- RELEASD
- Snapshot
- Old-alaf
- Old-beat
- Cloen
-
- Edit
- Eror
- Aelert!!!
- Load
- Naym
- Remoev
- Cloen
- Re-start
- Saev
- Unpacking %s
- Dis field can\'t bees empty
- Waitin’, meow~
-
- Applicashun/game exitd wif code %d, chek lastestlog.txt 4 moar details.
- Exit
- R u suer u wantz 2 forec cloes?
- LWJGL3 wuz not installd!
- Catz mobile cant’ handel Vulkan Zink renderer!
-
- GUI
- Keyboard
- Chat
- Debug
- Pri
- Sec
- Inv
- 3rd
- Tab
- Mouse
- Mouse: off
- Mouse: on
-
- Force close
- tree input
- Input Debug
- Send custom keycoed
- Bigging go up
- Bigging go down
-
- Import controls
- Invalid or coruptd file
- import controls
- File iz bean verifid plz wait an try again…
- Invalid naym ir file alerdy exists
- Importatshun dun
-
- Editin %s
- Remoev %s?
- Keycoed
- Toggleabel
- Siez
- Width
- Hait
- Mappin’
- Direksion
- Bakground colour
- Cornur round saiz
- Strok witz
- Strok colour
- Skratchy Dynamic pozishun
- Movin’ X pozision
- Movin’ Y pozision
- Bakground tranzperensi
- Buton Owpacity
- Ki combinasion
- Add button
- Add buton drawr’
- Add b’low-buton
- Sub-butn %d haz bean addd !
- Select defaul Control json
- Install .jar
- Opshuns
- Pulay
- Welcom, catz %s
- Info (DEV)
- Switch usr
- Vershun:
- No crash detected
- No log.
- Faild 2 fetch teh newz fed !
- Enablez automatic RAM adjustah
- Auto RAM
- Memori setd 2 %d MB
- Check libraries aftr downloadin
- Dis opshun forcez launchah 2 check teh library hash if iz’ availabel. Preventz brekd downloadz.
- Library %s iz breakd and wil’ be redownloaded
- Library %s cant’ be checkd, haz 2 assuem iz’ gud
- Library %s iz prfekt an usabel
- Disabel gesturez
- Disablez gesturez, laik hold 2 break block, an tap 2 plaec block.
- Mice speed
- Changez teh speed of teh software mice
- Mouses pas-thur
- Scratchable
- Rounded
- WURNING: Catz iz becomin’ une of teh Memory Muncherz, wich may leid tu game crash! (Free %d, munch’d %d MB) Change teh allocasion if teh game crashez.
- RAM allocasion
- Controls how mutch RAM iz given 2 Minecraft
- Derti Coffee Cup
- Incompatible architecchur: %s
- Coffee Cupz’ Unreal Machinez
- Add new
- Add new Coffee Cupz’ Unreal Machine
- Coffee Cupz klecsion
- Maniz drunk Coffee Cupz
- Storin’ tu cache memori...
- Set favoritz
- My favritz
- Catz cant’ si any Coffee Cup’s Runtime in kleksion
- Ken´t find any compatibl Java Runtime. Dis vershun reqirez Java %d or newr.
- Ken´t find Java 8. In ordr 2 use dis opshun, u ned 2 install Java 8.
- Cat stil\' won tu play
- Gamez’ direktory
- CCz’UM argumentz
- Itch-version settinz’
- Starags changez
- Teh new foldr 4 pojav filez iz Android/data/%s/filez/ (Also akcesible usin storage providr in ur file explorr).
If u ned 2 copy ur game filez, plz copy evrythin frum teh original foldr at gamez/pojavlaunchr manually.]]>
- Control offset
- Top offset:
- right offset:
- bottom offset:
- left offset:
- Control side offsetz
- Set a custom offset 2 each side ov teh screen
- Gesturez typez, triggers, an scalin
- Java Tweakz
- Miscellaneous settings
- Vershun list, an libz checkz
- Experimental Stuff
- Use things thar wif considerashun, no support.
- Enable sustaind performance mode
- Limit thermal thrittlin by limitin peak performance
- Limit thermal thrittlin by limitin peak performance
- Bak 2 teh last screen
- Doan shrink texturez
- Dividez all texturez by 2
- Dividez big texturez by /2 or /4
- No named
- last snap shot
- latest releez
- Editin cat
- Naym
- Type of cat
- Delete
- Java runtime
- Renderer
- %s vershun configuration
-
diff --git a/app_pojavlauncher/src/main/res/values/colors.xml b/app_pojavlauncher/src/main/res/values/colors.xml
index 847f9ec78..ed07e6cbd 100644
--- a/app_pojavlauncher/src/main/res/values/colors.xml
+++ b/app_pojavlauncher/src/main/res/values/colors.xml
@@ -5,6 +5,7 @@
#57CC33
#181818
+ #464646
#242424
#232323
diff --git a/app_pojavlauncher/src/main/res/values/dimens.xml b/app_pojavlauncher/src/main/res/values/dimens.xml
index 465a3132a..3a04517e8 100644
--- a/app_pojavlauncher/src/main/res/values/dimens.xml
+++ b/app_pojavlauncher/src/main/res/values/dimens.xml
@@ -5,16 +5,21 @@
16dp
16dp
-
+
@dimen/_1sdp
@dimen/_2sdp
@dimen/_4sdp
+ @dimen/_6sdp
@dimen/_12sdp
@dimen/_16sdp
@dimen/_24sdp
@dimen/_32sdp
+
+ @dimen/padding_heavy
+ @dimen/_11sdp
+
60dp
60dp
diff --git a/app_pojavlauncher/src/main/res/values/headings_array.xml b/app_pojavlauncher/src/main/res/values/headings_array.xml
index 08d942743..d26cf6220 100644
--- a/app_pojavlauncher/src/main/res/values/headings_array.xml
+++ b/app_pojavlauncher/src/main/res/values/headings_array.xml
@@ -18,10 +18,11 @@
- @string/customctrl_addbutton
- @string/customctrl_addbutton_drawer
- - @string/global_load
- - @string/global_save
- - @string/customctrl_selectdefault
- - @string/customctrl_export
+ - @string/customctrl_addbutton_joystick
+ - @string/global_load
+ - @string/global_save
+ - @string/customctrl_selectdefault
+ - @string/customctrl_export
diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml
index 3a5f307a1..3274eaf5d 100644
--- a/app_pojavlauncher/src/main/res/values/strings.xml
+++ b/app_pojavlauncher/src/main/res/values/strings.xml
@@ -203,6 +203,7 @@
Shift
Add button
Add button drawer
+ Add joystick
Add sub-button
Sub-button n°%d has been added !
@@ -236,6 +237,7 @@
Changes the speed of the software mouse
Mouse pass-thru
Swipeable
+ Forward lock
Rounded
The current amount of free RAM (%d) is lower than allocated RAM (%d), which may lead to crashes. Change the allocation if the game crashes.
Memory allocation
@@ -380,15 +382,17 @@
Forces the Minecraft render thread to run on the core with the highest max frequency
Select a version
Downloading installer for %s
+ Searching for Forge version number
Failed to load the version list!
Sorry, but this version of Forge does not have an installer, which is not yet supported.
Select Forge version
- Downloading Fabric installer
- Fabric loader version
+ Downloading %s loader metadata
+ %s loader version
Minecraft version
Install
- Failed to read Fabric metadata. Please try again later.
+ Failed to read %s loader metadata. Please try again later.
Create Fabric profile
+ Create Quilt profile
Create Forge profile
Create vanilla profile
Vanilla-like versions
@@ -402,7 +406,31 @@
Smoothing time
Reduce jitter in exchange of latency. 0 to disable it
+ Search for modpacks
Use system Vulkan driver
Force the launcher to use the system Vulkan driver instead of Turnip on Adreno GPUs. Only affects Zink.
+
+ Install
+ Apply
+
+ No modpacks found
+ Failed to find modpacks
+ Failed to download modpack metadata
+
+ Downloading modpack metadata (%.2f MB / %.2f MB)
+ Downloading mods (%.2f MB / %.2f MB)
+ Downloading mods (File %d out of %d)
+ Applying overrides (%d/%d)
+ Pojav Modpack Installer
+ Click here to finish modpack installation
+ Failed to download mod loader information
+ Failed to download the mod loader files
+ Failed to download modpack files
+ Create modpack profile
+
+ An error has occurred
+ Click to see more details
+ Show only stable versions
+>>>>>>> v3_openjdk
diff --git a/forge_installer/src/main/java/git/artdeell/installer_agent/Agent.java b/forge_installer/src/main/java/git/artdeell/installer_agent/Agent.java
index dc2cf22c2..53a7361ae 100644
--- a/forge_installer/src/main/java/git/artdeell/installer_agent/Agent.java
+++ b/forge_installer/src/main/java/git/artdeell/installer_agent/Agent.java
@@ -21,11 +21,13 @@ public class Agent implements AWTEventListener {
private boolean forgeWindowHandled = false;
private final boolean suppressProfileCreation;
private final boolean optiFineInstallation;
+ private final String modpackFixupId;
private final Timer componentTimer = new Timer();
- public Agent(boolean nps, boolean of) {
+ public Agent(boolean nps, boolean of, String mf) {
this.suppressProfileCreation = !nps;
this.optiFineInstallation = of;
+ this.modpackFixupId = mf;
}
@Override
@@ -104,7 +106,7 @@ public class Agent implements AWTEventListener {
JOptionPane optionPane = (JOptionPane) components.get(0);
if(optionPane.getMessageType() == JOptionPane.INFORMATION_MESSAGE) { // forge doesn't emit information messages for other reasons yet
System.out.println("The install was successful!");
- ProfileFixer.reinsertProfile(optiFineInstallation ? "OptiFine" : "forge", suppressProfileCreation);
+ ProfileFixer.reinsertProfile(optiFineInstallation ? "OptiFine" : "forge", modpackFixupId, suppressProfileCreation);
System.exit(0); // again, forge doesn't call exit for some reason, so we do that ourselves here
}
}
@@ -124,13 +126,30 @@ public class Agent implements AWTEventListener {
public static void premain(String args, Instrumentation inst) {
boolean noProfileSuppression = false;
boolean optifine = false;
+ String modpackFixupId = null;
if(args != null ) {
- noProfileSuppression = args.contains("NPS"); // No Profile Suppression
- optifine = args.contains("OF"); // OptiFine
+ modpackFixupId = findQuotedString(args);
+ if(modpackFixupId != null) {
+ noProfileSuppression = args.contains("NPS") && !modpackFixupId.contains("NPS");
+ // No Profile Suppression
+ optifine = args.contains("OF") && !modpackFixupId.contains("OF");
+ // OptiFine
+ }else {
+ noProfileSuppression = args.contains("NPS"); // No Profile Suppression
+ optifine = args.contains("OF"); // OptiFine
+ }
}
- Agent agent = new Agent(noProfileSuppression, optifine);
+ Agent agent = new Agent(noProfileSuppression, optifine, modpackFixupId);
Toolkit.getDefaultToolkit()
.addAWTEventListener(agent,
AWTEvent.WINDOW_EVENT_MASK);
}
+
+ private static String findQuotedString(String args) {
+ int quoteIndex = args.indexOf('"');
+ if(quoteIndex == -1) return null;
+ int nextQuoteIndex = args.indexOf('"', quoteIndex+1);
+ if(nextQuoteIndex == -1) return null;
+ return args.substring(quoteIndex+1, nextQuoteIndex);
+ }
}
diff --git a/forge_installer/src/main/java/git/artdeell/installer_agent/ProfileFixer.java b/forge_installer/src/main/java/git/artdeell/installer_agent/ProfileFixer.java
index da6e72967..5dadb711d 100644
--- a/forge_installer/src/main/java/git/artdeell/installer_agent/ProfileFixer.java
+++ b/forge_installer/src/main/java/git/artdeell/installer_agent/ProfileFixer.java
@@ -10,6 +10,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Random;
+import java.util.Set;
public class ProfileFixer {
private static final Random random = new Random();
@@ -22,7 +23,8 @@ public class ProfileFixer {
StandardCharsets.UTF_8)
);
JSONObject profilesArray = minecraftProfiles.getJSONObject("profiles");
- oldProfile = profilesArray.optJSONObject(profileName, null);
+ profileName = findProfileName(profileName, profilesArray);
+ oldProfile = profileName != null ? minecraftProfiles.getJSONObject(profileName) : null;
}catch (IOException | JSONException e) {
System.out.println("Failed to store Forge profile: "+e);
}
@@ -31,22 +33,24 @@ public class ProfileFixer {
private static String pickProfileName(String profileName) {
return profileName+random.nextInt();
}
- public static void reinsertProfile(String profileName, boolean suppressProfileCreation) {
+ public static void reinsertProfile(String profileName, String modpackFixupId, boolean suppressProfileCreation) {
try {
JSONObject minecraftProfiles = new JSONObject(
new String(Files.readAllBytes(profilesPath),
StandardCharsets.UTF_8)
);
JSONObject profilesArray = minecraftProfiles.getJSONObject("profiles");
+ profileName = findProfileName(profileName, profilesArray);
+ if(modpackFixupId != null) fixupModpackProfile(profileName, modpackFixupId, profilesArray);
if(oldProfile != null) {
- if(suppressProfileCreation) profilesArray.put("forge", oldProfile); // restore the old profile
+ if(suppressProfileCreation) profilesArray.put(profileName, oldProfile); // restore the old profile
else {
String name = pickProfileName(profileName);
while(profilesArray.has(name)) name = pickProfileName(profileName);
profilesArray.put(name, oldProfile); // restore the old profile under a new name
}
}else{
- if(suppressProfileCreation) profilesArray.remove("forge"); // remove the new profile
+ if(suppressProfileCreation) profilesArray.remove(profileName); // remove the new profile
// otherwise it wont be removed
}
minecraftProfiles.put("profiles", profilesArray);
@@ -56,4 +60,35 @@ public class ProfileFixer {
System.out.println("Failed to restore old Forge profile: "+e);
}
}
+
+ private static void fixupModpackProfile(String profileId, String expectedVersionId, JSONObject profilesArray) {
+ System.out.println("Fixing up modpack profile version ID...");
+ JSONObject modloaderProfile = profilesArray.optJSONObject(profileId);
+ if(modloaderProfile == null) {
+ System.out.println("Failed to find the modloader profile, keys:" + profilesArray.keySet().toString());
+ return;
+ }
+ String modloaderVersionId = modloaderProfile.optString("lastVersionId");
+ if(modloaderVersionId == null) {
+ System.out.println("Failed to find the modloader profile version, keys:" + modloaderProfile.keySet().toString());
+ return;
+ }
+ System.out.println("Expected version ID: "+expectedVersionId+" Modloader version ID: "+modloaderVersionId);
+ if(expectedVersionId.equals(modloaderVersionId)) return;
+ for(String profileKey : profilesArray.keySet()) {
+ if(profileKey.equals(profileId)) continue;
+ JSONObject profile = profilesArray.getJSONObject(profileKey);
+ if(!expectedVersionId.equals(profile.optString("lastVersionId"))) continue;
+ profile.put("lastVersionId", modloaderVersionId);
+ System.out.println("Replacing version ID in profile "+profileKey);
+ }
+ }
+
+ private static String findProfileName(String profileId, JSONObject profilesArray) {
+ Set profiles = profilesArray.keySet();
+ for(String profile : profiles) {
+ if(profile.equalsIgnoreCase(profileId)) return profile;
+ }
+ return null;
+ }
}
diff --git a/jre_lwjgl3glfw/libs/lwjgl-glfw.jar b/jre_lwjgl3glfw/libs/lwjgl-glfw.jar
new file mode 100644
index 000000000..61fdc6f0e
Binary files /dev/null and b/jre_lwjgl3glfw/libs/lwjgl-glfw.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-lwjglx.jar b/jre_lwjgl3glfw/libs/lwjgl-lwjglx.jar
new file mode 100644
index 000000000..ddadb354d
Binary files /dev/null and b/jre_lwjgl3glfw/libs/lwjgl-lwjglx.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-nanovg.jar b/jre_lwjgl3glfw/libs/lwjgl-nanovg.jar
new file mode 100644
index 000000000..c4759d5e9
Binary files /dev/null and b/jre_lwjgl3glfw/libs/lwjgl-nanovg.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-openal.jar b/jre_lwjgl3glfw/libs/lwjgl-openal.jar
index b715ea92d..665791d89 100644
Binary files a/jre_lwjgl3glfw/libs/lwjgl-openal.jar and b/jre_lwjgl3glfw/libs/lwjgl-openal.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-opengl.jar b/jre_lwjgl3glfw/libs/lwjgl-opengl.jar
index 1db08ec64..2350a2123 100644
Binary files a/jre_lwjgl3glfw/libs/lwjgl-opengl.jar and b/jre_lwjgl3glfw/libs/lwjgl-opengl.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-stb.jar b/jre_lwjgl3glfw/libs/lwjgl-stb.jar
index 00170036b..1cc4976ae 100644
Binary files a/jre_lwjgl3glfw/libs/lwjgl-stb.jar and b/jre_lwjgl3glfw/libs/lwjgl-stb.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar b/jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar
index 60d2cb4ba..64ab8c3cd 100644
Binary files a/jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar and b/jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar differ
diff --git a/jre_lwjgl3glfw/libs/lwjgl.jar b/jre_lwjgl3glfw/libs/lwjgl.jar
index 291a93dea..63b46c064 100644
Binary files a/jre_lwjgl3glfw/libs/lwjgl.jar and b/jre_lwjgl3glfw/libs/lwjgl.jar differ
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferChecks.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferChecks.java
deleted file mode 100644
index 1160c72e1..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferChecks.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-import java.nio.*;
-
-/**
- *
- * A class to check buffer boundaries in general. If there is unsufficient space
- * in the buffer when the call is made then a buffer overflow would otherwise
- * occur and cause unexpected behaviour, a crash, or worse, a security risk.
- *
- * Internal class, don't use.
- *
- *
- * @author cix_foo
- * @author elias_naur
- * @version $Revision$ $Id$
- */
-public class BufferChecks {
- private BufferChecks() {
- }
-
- /**
- * Helper methods to ensure a function pointer is not-null (0)
- */
- public static void checkFunctionAddress(long pointer) {
- if (LWJGLUtil.CHECKS && pointer == 0)
- throw new IllegalStateException("Function is not supported");
-
- }
-
- /**
- * Helper methods to ensure a ByteBuffer is null-terminated
- */
- public static void checkNullTerminated(ByteBuffer buf) {
- if (LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0)
- throw new IllegalArgumentException("Missing null termination");
- }
-
- public static void checkNullTerminated(ByteBuffer buf, int count) {
- if (LWJGLUtil.CHECKS) {
- int nullFound = 0;
- for (int i = buf.position(); i < buf.limit(); i++) {
- if (buf.get(i) == 0)
- nullFound++;
- }
-
- if (nullFound < count)
- throw new IllegalArgumentException("Missing null termination");
- }
- }
-
- /** Helper method to ensure an IntBuffer is null-terminated */
- public static void checkNullTerminated(IntBuffer buf) {
- if (LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0)
- throw new IllegalArgumentException("Missing null termination");
-
- }
-
- /** Helper method to ensure a LongBuffer is null-terminated */
- public static void checkNullTerminated(LongBuffer buf) {
- if (LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0)
- throw new IllegalArgumentException("Missing null termination");
-
- }
-
- /** Helper method to ensure a PointerBuffer is null-terminated */
- public static void checkNullTerminated(PointerBuffer buf) {
- if (LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0)
- throw new IllegalArgumentException("Missing null termination");
-
- }
-
- public static void checkNotNull(Object o) {
- if (LWJGLUtil.CHECKS && o == null)
- throw new IllegalArgumentException("Null argument");
- }
-
- /**
- * Helper methods to ensure a buffer is direct (and, implicitly, non-null).
- */
- public static void checkDirect(ByteBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect())
- throw new IllegalArgumentException("ByteBuffer is not direct");
-
- }
-
- public static void checkDirect(ShortBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect())
- throw new IllegalArgumentException("ShortBuffer is not direct");
-
- }
-
- public static void checkDirect(IntBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect())
- throw new IllegalArgumentException("IntBuffer is not direct");
-
- }
-
- public static void checkDirect(LongBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect()) {
- throw new IllegalArgumentException("LongBuffer is not direct");
- }
- }
-
- public static void checkDirect(FloatBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect())
- throw new IllegalArgumentException("FloatBuffer is not direct");
-
- }
-
- public static void checkDirect(DoubleBuffer buf) {
- if (LWJGLUtil.CHECKS && !buf.isDirect())
- throw new IllegalArgumentException("DoubleBuffer is not direct");
-
- }
-
- public static void checkDirect(PointerBuffer buf) {
- // NO-OP, PointerBuffer is always direct.
- }
-
- public static void checkArray(Object[] array) {
- if (LWJGLUtil.CHECKS && (array == null || array.length == 0))
- throw new IllegalArgumentException("Invalid array");
- }
-
- /**
- * This is a separate call to help inline checkBufferSize.
- */
- private static void throwBufferSizeException(Buffer buf, int size) {
- throw new IllegalArgumentException(
- "Number of remaining buffer elements is " + buf.remaining() + ", must be at least " + size
- + ". Because at most " + size + " elements can be returned, a buffer with at least " + size
- + " elements is required, regardless of actual returned element count");
- }
-
- private static void throwBufferSizeException(PointerBuffer buf, int size) {
- throw new IllegalArgumentException(
- "Number of remaining pointer buffer elements is " + buf.remaining() + ", must be at least " + size);
- }
-
- private static void throwArraySizeException(Object[] array, int size) {
- throw new IllegalArgumentException(
- "Number of array elements is " + array.length + ", must be at least " + size);
- }
-
- private static void throwArraySizeException(long[] array, int size) {
- throw new IllegalArgumentException(
- "Number of array elements is " + array.length + ", must be at least " + size);
- }
-
- /**
- * Helper method to ensure a buffer is big enough to receive data from a
- * glGet* operation.
- *
- * @param buf
- * The buffer to check
- * @param size
- * The minimum buffer size
- * @throws IllegalArgumentException
- */
- public static void checkBufferSize(Buffer buf, int size) {
- if (LWJGLUtil.CHECKS && buf.remaining() < size)
- throwBufferSizeException(buf, size);
-
- }
-
- /**
- * Detects the buffer type and performs the corresponding check and also
- * returns the buffer position in bytes.
- *
- * @param buffer
- * the buffer to check
- * @param size
- * the size to check
- *
- * @return the buffer position in bytes
- */
- public static int checkBuffer(final Buffer buffer, final int size) {
- final int posShift;
- if (buffer instanceof ByteBuffer) {
- BufferChecks.checkBuffer((ByteBuffer) buffer, size);
- posShift = 0;
- } else if (buffer instanceof ShortBuffer) {
- BufferChecks.checkBuffer((ShortBuffer) buffer, size);
- posShift = 1;
- } else if (buffer instanceof IntBuffer) {
- BufferChecks.checkBuffer((IntBuffer) buffer, size);
- posShift = 2;
- } else if (buffer instanceof LongBuffer) {
- BufferChecks.checkBuffer((LongBuffer) buffer, size);
- posShift = 4;
- } else if (buffer instanceof FloatBuffer) {
- BufferChecks.checkBuffer((FloatBuffer) buffer, size);
- posShift = 2;
- } else if (buffer instanceof DoubleBuffer) {
- BufferChecks.checkBuffer((DoubleBuffer) buffer, size);
- posShift = 4;
- } else
- throw new IllegalArgumentException("Unsupported Buffer type specified: " + buffer.getClass());
-
- return buffer.position() << posShift;
- }
-
- public static void checkBuffer(ByteBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(ShortBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(IntBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(LongBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(FloatBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(DoubleBuffer buf, int size) {
- if (LWJGLUtil.CHECKS) {
- checkBufferSize(buf, size);
- checkDirect(buf);
- }
- }
-
- public static void checkBuffer(PointerBuffer buf, int size) {
- if (LWJGLUtil.CHECKS && buf.remaining() < size) {
- throwBufferSizeException(buf, size);
- }
- }
-
- public static void checkArray(Object[] array, int size) {
- if (LWJGLUtil.CHECKS && array.length < size)
- throwArraySizeException(array, size);
- }
-
- public static void checkArray(long[] array, int size) {
- if (LWJGLUtil.CHECKS && array.length < size)
- throwArraySizeException(array, size);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferUtils.java.z b/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferUtils.java.z
deleted file mode 100644
index 643170c53..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/BufferUtils.java.z
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- */
-package org.lwjgl;
-
-import org.lwjgl.system.*;
-
-import java.nio.*;
-
-import static org.lwjgl.system.APIUtil.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * This class makes it easy and safe to work with direct buffers. It is the recommended way to allocate memory to use with LWJGL.
- *
- * Direct buffers
- *
- * LWJGL requires that all NIO buffers passed to it are direct buffers. Direct buffers essentially wrap an address that points to off-heap memory, i.e. a
- * native pointer. This is the only way LWJGL can safely pass data from Java code to native code, and vice-versa, without a performance penalty. It does not
- * support on-heap Java arrays (or plain NIO buffers, which wrap them) because arrays may be moved around in memory by the JVM's garbage collector while native
- * code is accessing them. In addition, Java arrays have an unspecified layout, i.e. they are not necessarily contiguous in memory.
- *
- * Usage
- *
- * When a direct buffer is passed as an argument to an LWJGL method, no data is copied. Instead, the current buffer position is added to the buffer's memory
- * address and the resulting value is passed to native code. The native code interprets that value as a pointer and reads or copies from it as necessary. LWJGL
- * will often also use the current buffer limit (via {@link Buffer#remaining()}) to automatically pass length/maxlength arguments. This means that, just like
- * other APIs that use NIO buffers, the current {@link Buffer#position()} and {@link Buffer#limit()} at the time of the call is very important. Contrary to
- * other APIs, LWJGL never modifies the current position, it will be the same value before and after the call.
- *
- * Arrays of pointers
- *
- * In addition to the standard NIO buffer classes, LWJGL provides a {@link PointerBuffer} class for storing pointer data in an architecture independent way.
- * It is used in bindings for pointer-to-pointers arguments, usually to provide arrays of data (input parameter) or to store returned pointer values (output
- * parameter). Also, there's the {@link CLongBuffer} class which is similar to {@code PointerBuffer}, but for C {@code long} data.
- *
- * Memory management
- *
- * Using NIO buffers for off-heap memory has some drawbacks:
- *
- * - Memory blocks bigger than {@link Integer#MAX_VALUE} bytes cannot be allocated.
- * - Memory blocks are zeroed-out on allocation, for safety. This has (sometimes unwanted) performance implications.
- * - There is no way to free a buffer explicitly (without JVM specific reflection). Buffer objects are subject to GC and it usually takes two GC cycles to
- * free the off-heap memory after the buffer object becomes unreachable.
- *
- *
- * An alternative API for allocating off-heap memory can be found in the {@link org.lwjgl.system.MemoryUtil} class. This has none of the above drawbacks,
- * but requires allocated memory to be explictly freed when not used anymore.
- *
- * Memory alignment
- *
- * Allocations done via this class have a guaranteed alignment of 8 bytes. If higher alignment values are required, use the explicit memory management API
- * or pad the requested memory with extra bytes and align manually.
- *
- * Structs and arrays of structs
- *
- * Java does not support struct value types, so LWJGL requires struct values that are backed by off-heap memory. Each struct type defined in a binding
- * has a corresponding class in LWJGL that can be used to access its members. Each struct class also has a {@code Buffer} inner class that can be used to
- * access (packed) arrays of struct values. Both struct and struct buffer classes may be backed by direct {@link ByteBuffer}s allocated from this class, but it
- * is highly recommended to use explicit memory management for performance.
- */
-public final class BufferUtils {
-// -- Begin LWJGL2 parts --
- /**
- * @return n, where buffer_element_size=2^n.
- */
- public static int getElementSizeExponent(Buffer buf) {
- if (buf instanceof ByteBuffer)
- return 0;
- else if (buf instanceof ShortBuffer || buf instanceof CharBuffer)
- return 1;
- else if (buf instanceof FloatBuffer || buf instanceof IntBuffer)
- return 2;
- else if (buf instanceof LongBuffer || buf instanceof DoubleBuffer)
- return 3;
- else
- throw new IllegalStateException("Unsupported buffer type: " + buf);
- }
-
- /**
- * A helper function which is used to get the byte offset in an arbitrary
- * buffer based on its position
- *
- * @return the position of the buffer, in BYTES
- */
- public static int getOffset(Buffer buffer) {
- return buffer.position() << getElementSizeExponent(buffer);
- }
-
- /**
- * Returns the memory address of the specified buffer.
- *
- * @param buffer
- * the buffer
- *
- * @return the memory address
- */
- static long getBufferAddress(Buffer buffer) {
- // Should be below or memAddress0() ?
- return memAddress(buffer);
- }
-// -- End LWJGL2 parts --
-
- private BufferUtils() {}
-
- /**
- * Allocates a direct native-ordered {@code ByteBuffer} with the specified capacity.
- *
- * @param capacity the capacity, in bytes
- *
- * @return a {@code ByteBuffer}
- */
- public static ByteBuffer createByteBuffer(int capacity) {
- return ByteBuffer.allocateDirect(capacity).order(ByteOrder.nativeOrder());
- }
-
- static int getAllocationSize(int elements, int elementShift) {
- apiCheckAllocation(elements, apiGetBytes(elements, elementShift), 0x7FFF_FFFFL);
- return elements << elementShift;
- }
-
- /**
- * Allocates a direct native-order {@code ShortBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in shorts
- *
- * @return a {@code ShortBuffer}
- */
- public static ShortBuffer createShortBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 1)).asShortBuffer();
- }
-
- /**
- * Allocates a direct native-order {@code CharBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in chars
- *
- * @return a {@code CharBuffer}
- */
- public static CharBuffer createCharBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 1)).asCharBuffer();
- }
-
- /**
- * Allocates a direct native-order {@code IntBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in ints
- *
- * @return an {@code IntBuffer}
- */
- public static IntBuffer createIntBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 2)).asIntBuffer();
- }
-
- /**
- * Allocates a direct native-order {@code LongBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in longs
- *
- * @return a {@code LongBuffer}
- */
- public static LongBuffer createLongBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 3)).asLongBuffer();
- }
-
- /**
- * Allocates a {@code CLongBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in memory addresses
- *
- * @return a {@code CLongBuffer}
- */
- public static CLongBuffer createCLongBuffer(int capacity) {
- return CLongBuffer.allocateDirect(capacity);
- }
-
- /**
- * Allocates a direct native-order {@code FloatBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in floats
- *
- * @return a FloatBuffer
- */
- public static FloatBuffer createFloatBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 2)).asFloatBuffer();
- }
-
- /**
- * Allocates a direct native-order {@code DoubleBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in doubles
- *
- * @return a {@code DoubleBuffer}
- */
- public static DoubleBuffer createDoubleBuffer(int capacity) {
- return createByteBuffer(getAllocationSize(capacity, 3)).asDoubleBuffer();
- }
-
- /**
- * Allocates a {@code PointerBuffer} with the specified number of elements.
- *
- * @param capacity the capacity, in memory addresses
- *
- * @return a {@code PointerBuffer}
- */
- public static PointerBuffer createPointerBuffer(int capacity) {
- return PointerBuffer.allocateDirect(capacity);
- }
-
- // memsets
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(ByteBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(ShortBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(CharBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(IntBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(FloatBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(LongBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static void zeroBuffer(DoubleBuffer buffer) { memSet(buffer, 0); }
-
- /**
- * Fills the specified buffer with zeros from the current position to the current limit.
- *
- * @param buffer the buffer to fill with zeros
- */
- public static > void zeroBuffer(T buffer) { memSet(buffer, 0); }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLException.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLException.java
deleted file mode 100644
index 79ef96bcd..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLException.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-/**
- *
- * This exception is supplied to make exception handling more generic for LWJGL
- * specific exceptions
- *
- *
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public class LWJGLException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Plain c'tor
- */
- public LWJGLException() {
- super();
- }
-
- /**
- * Creates a new LWJGLException
- *
- * @param msg
- * String identifier for exception
- */
- public LWJGLException(String msg) {
- super(msg);
- }
-
- /**
- * @param message
- * @param cause
- */
- public LWJGLException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * @param cause
- */
- public LWJGLException(Throwable cause) {
- super(cause);
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLUtil.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLUtil.java
deleted file mode 100644
index e074d9a2b..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/LWJGLUtil.java
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.nio.ByteBuffer;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.*;
-
-/**
- *
- * Internal library methods
- *
- *
- * @author Brian Matzon
- * @version $Revision: 3608 $ $Id: LWJGLUtil.java 3608 2011-08-10 16:05:46Z
- * spasi $
- */
-public class LWJGLUtil {
- public static final int PLATFORM_LINUX = 1;
- public static final int PLATFORM_MACOSX = 2;
- public static final int PLATFORM_WINDOWS = 3;
- public static final String PLATFORM_LINUX_NAME = "linux";
- public static final String PLATFORM_MACOSX_NAME = "macosx";
- public static final String PLATFORM_WINDOWS_NAME = "windows";
-
- private static final String LWJGL_ICON_DATA_16x16 = "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\376\377\377\377\302\327\350\377"
- + "\164\244\313\377\120\213\275\377\124\216\277\377\206\257\322\377"
- + "\347\357\366\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\365\365\365\377\215\217\221\377\166\202\215\377"
- + "\175\215\233\377\204\231\252\377\224\267\325\377\072\175\265\377"
- + "\110\206\272\377\332\347\361\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\364\370\373\377\234\236\240\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\344\344\344\377\204\255\320\377"
- + "\072\175\265\377\133\222\301\377\374\375\376\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\221\266\325\377\137\137\137\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\042\042\042\377\377\377\377\377\350\360\366\377"
- + "\071\174\265\377\072\175\265\377\304\330\351\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\306\331\351\377"
- + "\201\253\316\377\035\035\035\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\146\146\146\377\377\377\377\377\320\340\355\377"
- + "\072\175\265\377\072\175\265\377\215\264\324\377\377\377\377\377"
- + "\362\362\362\377\245\245\245\377\337\337\337\377\242\301\334\377"
- + "\260\305\326\377\012\012\012\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\250\250\250\377\377\377\377\377\227\272\330\377"
- + "\072\175\265\377\072\175\265\377\161\241\312\377\377\377\377\377"
- + "\241\241\241\377\000\000\000\377\001\001\001\377\043\043\043\377"
- + "\314\314\314\377\320\320\320\377\245\245\245\377\204\204\204\377"
- + "\134\134\134\377\357\357\357\377\377\377\377\377\140\226\303\377"
- + "\072\175\265\377\072\175\265\377\155\236\310\377\377\377\377\377"
- + "\136\136\136\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\317\317\317\377\037\037\037\377\003\003\003\377\053\053\053\377"
- + "\154\154\154\377\306\306\306\377\372\374\375\377\236\277\332\377"
- + "\167\245\314\377\114\211\274\377\174\250\316\377\377\377\377\377"
- + "\033\033\033\377\000\000\000\377\000\000\000\377\027\027\027\377"
- + "\326\326\326\377\001\001\001\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\122\122\122\377\345\345\345\377\075\075\075\377"
- + "\150\150\150\377\246\246\247\377\332\336\341\377\377\377\377\377"
- + "\164\164\164\377\016\016\016\377\000\000\000\377\131\131\131\377"
- + "\225\225\225\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\221\221\221\377\233\233\233\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\002\002\002\377\103\103\103\377"
- + "\377\377\377\377\356\356\356\377\214\214\214\377\277\277\277\377"
- + "\126\126\126\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\323\323\323\377\130\130\130\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\063\063\063\377"
- + "\377\377\377\377\377\377\377\377\374\375\376\377\377\377\377\377"
- + "\300\300\300\377\100\100\100\377\002\002\002\377\000\000\000\377"
- + "\033\033\033\377\373\373\373\377\027\027\027\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\170\170\170\377"
- + "\377\377\377\377\377\377\377\377\322\341\356\377\176\251\316\377"
- + "\340\352\363\377\377\377\377\377\324\324\324\377\155\155\155\377"
- + "\204\204\204\377\323\323\323\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\275\275\275\377"
- + "\377\377\377\377\377\377\377\377\376\376\376\377\146\232\305\377"
- + "\075\177\266\377\202\254\320\377\344\355\365\377\377\377\377\377"
- + "\377\377\377\377\345\345\345\377\055\055\055\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\014\014\014\377\366\366\366\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\342\354\364\377"
- + "\115\211\274\377\072\175\265\377\076\200\266\377\207\260\322\377"
- + "\347\357\366\377\377\377\377\377\376\376\376\377\274\274\274\377"
- + "\117\117\117\377\003\003\003\377\112\112\112\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\353\362\370\377\214\263\324\377\126\220\300\377\120\214\275\377"
- + "\167\245\314\377\355\363\370\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\337\337\337\377\346\346\346\377\377\377\377\377";
-
- private static final String LWJGL_ICON_DATA_32x32 = "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\374\375\377"
- + "\313\335\354\377\223\267\326\377\157\240\311\377\134\223\302\377\140\226\303\377\172\247\315\377\254\310\340\377\355\363\370\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\374\375\376\377\265\316\343\377\132\222\301\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\105\205\271\377"
- + "\241\301\334\377\374\375\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\374\374\374\377\342\352\361\377\270\317\343\377\256\311\340\377"
- + "\243\302\334\377\230\272\330\377\214\263\323\377\201\254\317\377\156\237\310\377\075\177\266\377\072\175\265\377\072\175\265\377"
- + "\072\175\265\377\162\242\312\377\365\370\373\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\330\330\330\377\061\061\061\377\044\044\044\377\061\061\061\377\100\100\100\377"
- + "\122\122\122\377\145\145\145\377\164\164\164\377\217\217\217\377\367\370\370\377\254\310\337\377\073\175\265\377\072\175\265\377"
- + "\072\175\265\377\072\175\265\377\171\247\315\377\374\375\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\376\376\376\377\150\150\150\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\266\266\266\377\376\376\376\377\206\256\321\377\072\175\265\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\256\312\341\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\323\342\356\377\341\352\362\377\050\050\050\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\002\002\002\377\336\336\336\377\377\377\377\377\365\370\373\377\133\222\301\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\110\206\272\377\364\370\373\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\354\363\370\377\144\231\305\377\327\331\333\377\005\005\005\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\044\044\044\377\376\376\376\377\377\377\377\377\377\377\377\377\300\325\347\377"
- + "\071\174\265\377\072\175\265\377\072\175\265\377\072\175\265\377\253\310\340\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377"
- + "\170\246\314\377\173\247\315\377\236\236\236\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\145\145\145\377\377\377\377\377\377\377\377\377\377\377\377\377\342\354\364\377"
- + "\067\173\264\377\072\175\265\377\072\175\265\377\072\175\265\377\146\232\305\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\327\350\377"
- + "\071\175\265\377\262\314\341\377\130\130\130\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\251\251\251\377\377\377\377\377\377\377\377\377\377\377\377\377\274\322\345\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\100\201\267\377\356\364\371\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\374\375\377\132\222\301\377"
- + "\075\177\266\377\335\345\355\377\034\034\034\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\007\007\007\377\347\347\347\377\377\377\377\377\377\377\377\377\377\377\377\377\205\256\321\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\071\175\265\377\314\336\354\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\377\272\322\345\377\072\175\265\377"
- + "\127\220\277\377\320\321\321\377\003\003\003\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\063\063\063\377\375\375\375\377\377\377\377\377\377\377\377\377\373\374\375\377\120\213\275\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\071\175\265\377\261\314\342\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\312\312\312\377\067\067\067\377\141\141\141\377\242\242\242\377\335\335\335\377\344\354\363\377\261\313\341\377"
- + "\264\315\342\377\346\346\346\377\043\043\043\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\162\162\162\377\377\377\377\377\377\377\377\377\377\377\377\377\330\345\360\377\072\175\265\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\240\300\333\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\146\146\146\377\000\000\000\377\000\000\000\377\000\000\000\377\006\006\006\377\047\047\047\377\146\146\146\377"
- + "\324\324\324\377\377\377\377\377\366\366\366\377\320\320\320\377\227\227\227\377\136\136\136\377\047\047\047\377\004\004\004\377"
- + "\000\000\000\377\003\003\003\377\300\300\300\377\377\377\377\377\377\377\377\377\377\377\377\377\242\301\333\377\072\175\265\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\236\277\332\377\377\377\377\377\377\377\377\377"
- + "\373\373\373\377\045\045\045\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\134\134\134\377\377\377\377\377\352\352\352\377\217\217\217\377\265\265\265\377\351\351\351\377\375\375\375\377\347\347\347\377"
- + "\262\262\262\377\275\275\275\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\377\153\235\307\377\072\175\265\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\241\301\334\377\377\377\377\377\377\377\377\377"
- + "\333\333\333\377\003\003\003\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\203\203\203\377\377\377\377\377\137\137\137\377\000\000\000\377\000\000\000\377\013\013\013\377\067\067\067\377\166\166\166\377"
- + "\267\267\267\377\360\360\360\377\377\377\377\377\377\377\377\377\377\377\377\377\360\365\371\377\113\210\273\377\075\177\266\377"
- + "\071\174\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\262\314\342\377\377\377\377\377\377\377\377\377"
- + "\232\232\232\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\305\305\305\377\367\367\367\377\035\035\035\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\007\007\007\377\074\074\074\377\337\337\337\377\377\377\377\377\373\374\375\377\374\375\376\377\363\367\372\377"
- + "\314\335\353\377\236\276\332\377\162\241\311\377\114\211\273\377\072\175\265\377\311\334\353\377\377\377\377\377\377\377\377\377"
- + "\126\126\126\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\017\017\017\377"
- + "\371\371\371\377\321\321\321\377\003\003\003\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\216\216\216\377\377\377\377\377\371\371\371\377\204\204\204\377\160\160\160\377"
- + "\260\260\260\377\352\352\352\377\377\377\377\377\371\373\374\377\334\350\362\377\366\371\374\377\377\377\377\377\377\377\377\377"
- + "\025\025\025\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\116\116\116\377"
- + "\377\377\377\377\221\221\221\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\273\273\273\377\377\377\377\377\236\236\236\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\004\004\004\377\057\057\057\377\160\160\160\377\260\260\260\377\346\346\346\377\376\376\376\377\377\377\377\377"
- + "\071\071\071\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\220\220\220\377"
- + "\377\377\377\377\115\115\115\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\020\020\020\377\360\360\360\377\377\377\377\377\132\132\132\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\011\011\011\377\062\062\062\377\261\261\261\377"
- + "\366\366\366\377\241\241\241\377\065\065\065\377\002\002\002\377\000\000\000\377\000\000\000\377\002\002\002\377\321\321\321\377"
- + "\365\365\365\377\023\023\023\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\105\105\105\377\376\376\376\377\370\370\370\377\035\035\035\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\053\053\053\377"
- + "\377\377\377\377\377\377\377\377\374\374\374\377\276\276\276\377\120\120\120\377\005\005\005\377\045\045\045\377\371\371\371\377"
- + "\302\302\302\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\206\206\206\377\377\377\377\377\322\322\322\377\001\001\001\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\103\103\103\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377\334\334\334\377\340\340\340\377\377\377\377\377"
- + "\225\225\225\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\001\001\001\377\310\310\310\377\377\377\377\377\216\216\216\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\210\210\210\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\337\337\337\377\051\051\051\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\030\030\030\377\365\365\365\377\377\377\377\377\112\112\112\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\317\317\317\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\361\366\372\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\371\371\371\377\265\265\265\377\113\113\113\377\006\006\006\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\122\122\122\377\377\377\377\377\370\370\370\377\020\020\020\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\034\034\034\377\370\370\370\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\206\257\321\377\220\265\325\377\352\361\367\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\333\333\333\377\170\170\170\377\033\033\033\377\000\000\000\377"
- + "\000\000\000\377\226\226\226\377\377\377\377\377\306\306\306\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\132\132\132\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\330\351\377\072\175\265\377\103\203\270\377"
- + "\224\270\326\377\355\363\370\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\364\364\364\377\247\247\247\377"
- + "\205\205\205\377\364\364\364\377\377\377\377\377\206\206\206\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\235\235\235\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\373\375\377\135\224\302\377\072\175\265\377"
- + "\072\175\265\377\106\205\271\377\230\273\330\377\357\364\371\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\233\233\233\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\005\005\005\377\335\335\335\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\305\331\351\377\073\176\266\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\110\206\272\377\236\276\332\377\362\366\372\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\373\373\373\377\216\216\216\377\045\045\045\377\001\001\001\377\000\000\000\377"
- + "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\054\054\054\377\374\374\374\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\217\265\325\377"
- + "\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\112\207\273\377\243\302\334\377\363\367\372\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\372\372\377\260\260\260\377\105\105\105\377"
- + "\004\004\004\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\156\156\156\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\374\375\376\377"
- + "\205\257\321\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\115\211\274\377"
- + "\250\305\336\377\366\371\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377"
- + "\322\322\322\377\150\150\150\377\016\016\016\377\000\000\000\377\001\001\001\377\270\270\270\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\376\376\377\377\261\313\342\377\114\211\274\377\071\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377\072\175\265\377"
- + "\072\175\265\377\115\211\274\377\277\324\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\354\354\354\377\223\223\223\377\233\233\233\377\375\375\375\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\363\367\372\377\265\316\343\377\201\254\320\377\145\231\305\377\141\227\304\377\154\236\310\377"
- + "\217\265\325\377\305\331\351\377\367\372\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377";
-
- /** LWJGL Logo - 16 by 16 pixels */
- public static final ByteBuffer LWJGLIcon16x16 = loadIcon(LWJGL_ICON_DATA_16x16);
-
- /** LWJGL Logo - 32 by 32 pixels */
- public static final ByteBuffer LWJGLIcon32x32 = loadIcon(LWJGL_ICON_DATA_32x32);
-
- /** Debug flag. */
- public static final boolean DEBUG = getPrivilegedBoolean("org.lwjgl.util.Debug");
-
- public static final boolean CHECKS = !getPrivilegedBoolean("org.lwjgl.util.NoChecks");
-
- private static final int PLATFORM;
-
- static {
- final String osName = getPrivilegedProperty("os.name");
- if (osName.startsWith("Windows"))
- PLATFORM = PLATFORM_WINDOWS;
- else if (osName.startsWith("Linux") || osName.startsWith("FreeBSD") || osName.startsWith("SunOS")
- || osName.startsWith("Unix") || osName.startsWith("Android"))
- PLATFORM = PLATFORM_LINUX;
- else if (osName.startsWith("Mac OS X") || osName.startsWith("Darwin"))
- PLATFORM = PLATFORM_MACOSX;
- else
- throw new LinkageError("Unknown platform: " + osName);
- }
-
- private static ByteBuffer loadIcon(String data) {
- int len = data.length();
- ByteBuffer bb = BufferUtils.createByteBuffer(len);
- for (int i = 0; i < len; i++) {
- bb.put(i, (byte) data.charAt(i));
- }
- return bb.asReadOnlyBuffer();
- }
-
- /**
- * @see #PLATFORM_WINDOWS
- * @see #PLATFORM_LINUX
- * @see #PLATFORM_MACOSX
- * @return the current platform type
- */
- public static int getPlatform() {
- return PLATFORM;
- }
-
- /**
- * @see #PLATFORM_WINDOWS_NAME
- * @see #PLATFORM_LINUX_NAME
- * @see #PLATFORM_MACOSX_NAME
- * @return current platform name
- */
- public static String getPlatformName() {
- switch (LWJGLUtil.getPlatform()) {
- case LWJGLUtil.PLATFORM_LINUX:
- return PLATFORM_LINUX_NAME;
- case LWJGLUtil.PLATFORM_MACOSX:
- return PLATFORM_MACOSX_NAME;
- case LWJGLUtil.PLATFORM_WINDOWS:
- return PLATFORM_WINDOWS_NAME;
- default:
- return "unknown";
- }
- }
-
- /**
- * Locates the paths required by a library.
- *
- * @param libname
- * Local Library Name to search the classloader with ("openal").
- * @param platform_lib_name
- * The native library name ("libopenal.so")
- * @param classloader
- * The classloader to ask for library paths
- * @return Paths to located libraries, if any
- */
- public static String[] getLibraryPaths(String libname, String platform_lib_name, ClassLoader classloader) {
- return getLibraryPaths(libname, new String[] { platform_lib_name }, classloader);
- }
-
- /**
- * Locates the paths required by a library.
- *
- * @param libname
- * Local Library Name to search the classloader with ("openal").
- * @param platform_lib_names
- * The list of possible library names ("libopenal.so")
- * @param classloader
- * The classloader to ask for library paths
- * @return Paths to located libraries, if any
- */
- public static String[] getLibraryPaths(String libname, String[] platform_lib_names, ClassLoader classloader) {
- // need to pass path of possible locations of library to native side
- List possible_paths = new ArrayList();
-
- String classloader_path = getPathFromClassLoader(libname, classloader);
- if (classloader_path != null) {
- log("getPathFromClassLoader: Path found: " + classloader_path);
- possible_paths.add(classloader_path);
- }
-
- for (String platform_lib_name : platform_lib_names) {
- String lwjgl_classloader_path = getPathFromClassLoader("lwjgl", classloader);
- if (lwjgl_classloader_path != null) {
- log("getPathFromClassLoader: Path found: " + lwjgl_classloader_path);
- possible_paths
- .add(lwjgl_classloader_path.substring(0, lwjgl_classloader_path.lastIndexOf(File.separator))
- + File.separator + platform_lib_name);
- }
-
- // add Installer path
- String alternative_path = getPrivilegedProperty("org.lwjgl.librarypath");
- if (alternative_path != null) {
- possible_paths.add(alternative_path + File.separator + platform_lib_name);
- }
-
- // Add all possible paths from java.library.path
- String java_library_path = getPrivilegedProperty("java.library.path");
-
- StringTokenizer st = new StringTokenizer(java_library_path, File.pathSeparator);
- while (st.hasMoreTokens()) {
- String path = st.nextToken();
- possible_paths.add(path + File.separator + platform_lib_name);
- }
-
- // add current path
- String current_dir = getPrivilegedProperty("user.dir");
- possible_paths.add(current_dir + File.separator + platform_lib_name);
-
- // add pure library (no path, let OS search)
- possible_paths.add(platform_lib_name);
- }
-
- // create needed string array
- return possible_paths.toArray(new String[possible_paths.size()]);
- }
-
- static void execPrivileged(final String[] cmd_array) throws Exception {
- try {
- Process process = AccessController.doPrivileged(new PrivilegedExceptionAction() {
- public Process run() throws Exception {
- return Runtime.getRuntime().exec(cmd_array);
- }
- });
- // Close unused streams to make sure the child process won't hang
- process.getInputStream().close();
- process.getOutputStream().close();
- process.getErrorStream().close();
- } catch (PrivilegedActionException e) {
- throw (Exception) e.getCause();
- }
- }
-
- private static String getPrivilegedProperty(final String property_name) {
- return AccessController.doPrivileged(new PrivilegedAction() {
- public String run() {
- return System.getProperty(property_name);
- }
- });
- }
-
- /**
- * Tries to locate named library from the current ClassLoader This method
- * exists because native libraries are loaded from native code, and as such
- * is exempt from ClassLoader library loading rutines. It therefore always
- * fails. We therefore invoke the protected method of the ClassLoader to see
- * if it can locate it.
- *
- * @param libname
- * Name of library to search for
- * @param classloader
- * Classloader to use
- * @return Absolute path to library if found, otherwise null
- */
- private static String getPathFromClassLoader(final String libname, final ClassLoader classloader) {
- try {
- log("getPathFromClassLoader: searching for: " + libname);
- Class> c = classloader.getClass();
- while (c != null) {
- final Class> clazz = c;
- try {
- return AccessController.doPrivileged(new PrivilegedExceptionAction() {
- public String run() throws Exception {
- Method findLibrary = clazz.getDeclaredMethod("findLibrary", String.class);
- findLibrary.setAccessible(true);
- String path = (String) findLibrary.invoke(classloader, libname);
- return path;
- }
- });
- } catch (PrivilegedActionException e) {
- log("Failed to locate findLibrary method: " + e.getCause());
- c = c.getSuperclass();
- }
- }
- } catch (Exception e) {
- log("Failure locating " + e + " using classloader:" + e);
- }
- return null;
- }
-
- /**
- * Gets a boolean property as a privileged action.
- */
- public static boolean getPrivilegedBoolean(final String property_name) {
- return AccessController.doPrivileged(new PrivilegedAction() {
- public Boolean run() {
- return Boolean.getBoolean(property_name);
- }
- });
- }
-
- /**
- * Gets an integer property as a privileged action.
- *
- * @param property_name
- * the integer property name
- *
- * @return the property value
- */
- public static Integer getPrivilegedInteger(final String property_name) {
- return AccessController.doPrivileged(new PrivilegedAction() {
- public Integer run() {
- return Integer.getInteger(property_name);
- }
- });
- }
-
- /**
- * Gets an integer property as a privileged action.
- *
- * @param property_name
- * the integer property name
- * @param default_val
- * the default value to use if the property is not defined
- *
- * @return the property value
- */
- public static Integer getPrivilegedInteger(final String property_name, final int default_val) {
- return AccessController.doPrivileged(new PrivilegedAction() {
- public Integer run() {
- return Integer.getInteger(property_name, default_val);
- }
- });
- }
-
- /**
- * Prints the given message to System.err if DEBUG is true.
- *
- * @param msg
- * Message to print
- */
- public static void log(CharSequence msg) {
- if (DEBUG) {
- System.err.println("[LWJGL] " + msg);
- }
- }
-
- /**
- * Method to determine if the current system is running a version of Mac OS
- * X better than the given version. This is only useful for Mac OS X
- * specific code and will not work for any other platform.
- */
- public static boolean isMacOSXEqualsOrBetterThan(int major_required, int minor_required) {
- String os_version = getPrivilegedProperty("os.version");
- StringTokenizer version_tokenizer = new StringTokenizer(os_version, ".");
- int major;
- int minor;
- try {
- String major_str = version_tokenizer.nextToken();
- String minor_str = version_tokenizer.nextToken();
- major = Integer.parseInt(major_str);
- minor = Integer.parseInt(minor_str);
- } catch (Exception e) {
- LWJGLUtil.log("Exception occurred while trying to determine OS version: " + e);
- // Best guess, no
- return false;
- }
- return major > major_required || (major == major_required && minor >= minor_required);
- }
-
- /**
- * Returns a map of public static final integer fields in the specified
- * classes, to their String representations. An optional filter can be
- * specified to only include specific fields. The target map may be null, in
- * which case a new map is allocated and returned.
- *
- * This method is useful when debugging to quickly identify values returned
- * from the AL/GL/CL APIs.
- *
- * @param filter
- * the filter to use (optional)
- * @param target
- * the target map (optional)
- * @param tokenClasses
- * an array of classes to get tokens from
- *
- * @return the token map
- */
-
- public static Map getClassTokens(final TokenFilter filter, final Map target,
- final Class... tokenClasses) {
- return getClassTokens(filter, target, Arrays.asList(tokenClasses));
- }
-
- /**
- * Returns a map of public static final integer fields in the specified
- * classes, to their String representations. An optional filter can be
- * specified to only include specific fields. The target map may be null, in
- * which case a new map is allocated and returned.
- *
- * This method is useful when debugging to quickly identify values returned
- * from the AL/GL/CL APIs.
- *
- * @param filter
- * the filter to use (optional)
- * @param target
- * the target map (optional)
- * @param tokenClasses
- * the classes to get tokens from
- *
- * @return the token map
- */
- public static Map getClassTokens(final TokenFilter filter, Map target,
- final Iterable tokenClasses) {
- if (target == null)
- target = new HashMap();
-
- final int TOKEN_MODIFIERS = Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL;
-
- for (final Class tokenClass : tokenClasses) {
- for (final Field field : tokenClass.getDeclaredFields()) {
- // Get only fields.
- if ((field.getModifiers() & TOKEN_MODIFIERS) == TOKEN_MODIFIERS && field.getType() == int.class) {
- try {
- final int value = field.getInt(null);
- if (filter != null && !filter.accept(field, value))
- continue;
-
- if (target.containsKey(value)) // Print colliding tokens
- // in their hex
- // representation.
- target.put(value, toHexString(value));
- else
- target.put(value, field.getName());
- } catch (IllegalAccessException e) {
- // Ignore
- }
- }
- }
- }
-
- return target;
- }
-
- /**
- * Returns a string representation of the integer argument as an unsigned
- * integer in base 16. The string will be uppercase and will have a
- * leading '0x'.
- *
- * @param value
- * the integer value
- *
- * @return the hex string representation
- */
- public static String toHexString(final int value) {
- return "0x" + Integer.toHexString(value).toUpperCase();
- }
-
- /** Simple interface for Field filtering. */
- public interface TokenFilter {
-
- /**
- * Should return true if the specified Field passes the filter.
- *
- * @param field
- * the Field to test
- * @param value
- * the integer value of the field
- *
- * @result true if the Field is accepted
- */
- boolean accept(Field field, int value);
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/MemoryUtil.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/MemoryUtil.java
deleted file mode 100644
index d41aa7674..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/MemoryUtil.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * Copyright (c) 2002-2011 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-import java.lang.reflect.Field;
-import java.nio.*;
-import java.nio.charset.*;
-
-/**
- * [INTERNAL USE ONLY]
- *
- * This class provides utility methods for passing buffers to JNI API calls.
- *
- * @author Spasi
- */
-public final class MemoryUtil {
-
- private static final Charset ascii;
- private static final Charset utf8;
-
- static {
- ascii = Charset.forName("ISO-8859-1");
- utf8 = Charset.forName("UTF-8");
- }
-
- private MemoryUtil() {
- }
-
- /**
- * Returns the memory address of the specified buffer. [INTERNAL USE ONLY]
- *
- * @param buffer the buffer
- *
- * @return the memory address
- */
- public static long getAddress0(Buffer buffer) { return org.lwjgl.system.MemoryUtil.memAddress0(buffer); }
-
- public static long getAddress0Safe(Buffer buffer) { return buffer == null ? 0L : getAddress0(buffer); }
-
- public static long getAddress0(PointerBuffer buffer) { return getAddress0(buffer.getBuffer()); }
-
- public static long getAddress0Safe(PointerBuffer buffer) { return buffer == null ? 0L : getAddress0(buffer.getBuffer()); }
-
- // --- [ API utilities ] ---
-
- public static long getAddress(ByteBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(ByteBuffer buffer, int position) { return getAddress0(buffer) + position; }
-
- public static long getAddress(ShortBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(ShortBuffer buffer, int position) { return getAddress0(buffer) + (position << 1); }
-
- public static long getAddress(CharBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(CharBuffer buffer, int position) { return getAddress0(buffer) + (position << 1); }
-
- public static long getAddress(IntBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(IntBuffer buffer, int position) { return getAddress0(buffer) + (position << 2); }
-
- public static long getAddress(FloatBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(FloatBuffer buffer, int position) { return getAddress0(buffer) + (position << 2); }
-
- public static long getAddress(LongBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(LongBuffer buffer, int position) { return getAddress0(buffer) + (position << 3); }
-
- public static long getAddress(DoubleBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(DoubleBuffer buffer, int position) { return getAddress0(buffer) + (position << 3); }
-
- public static long getAddress(PointerBuffer buffer) { return getAddress(buffer, buffer.position()); }
-
- public static long getAddress(PointerBuffer buffer, int position) { return getAddress0(buffer) + (position * PointerBuffer.getPointerSize()); }
-
- // --- [ API utilities - Safe ] ---
-
- public static long getAddressSafe(ByteBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(ByteBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(ShortBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(ShortBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(CharBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(CharBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(IntBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(IntBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(FloatBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(FloatBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(LongBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(LongBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(DoubleBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(DoubleBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- public static long getAddressSafe(PointerBuffer buffer) { return buffer == null ? 0L : getAddress(buffer); }
-
- public static long getAddressSafe(PointerBuffer buffer, int position) { return buffer == null ? 0L : getAddress(buffer, position); }
-
- // --- [ String utilities ] ---
-
- /**
- * Returns a ByteBuffer containing the specified text ASCII encoded and null-terminated.
- * If text is null, null is returned.
- *
- * @param text the text to encode
- *
- * @return the encoded text or null
- *
- * @see String#getBytes()
- */
- public static ByteBuffer encodeASCII(final CharSequence text) {
- return encode(text, ascii);
- }
-
- /**
- * Returns a ByteBuffer containing the specified text UTF-8 encoded and null-terminated.
- * If text is null, null is returned.
- *
- * @param text the text to encode
- *
- * @return the encoded text or null
- *
- * @see String#getBytes()
- */
- public static ByteBuffer encodeUTF8(final CharSequence text) {
- return encode(text, utf8);
- }
-
- /**
- * Returns a ByteBuffer containing the specified text UTF-16LE encoded and null-terminated.
- * If text is null, null is returned.
- *
- * @param text the text to encode
- *
- * @return the encoded text
- */
- public static ByteBuffer encodeUTF16(final CharSequence text) {
- return org.lwjgl.system.MemoryUtil.memUTF16(text);
- }
-
- /**
- * Wraps the specified text in a null-terminated CharBuffer and encodes it using the specified Charset.
- *
- * @param text the text to encode
- * @param charset the charset to use for encoding
- *
- * @return the encoded text
- */
- private static ByteBuffer encode(final CharSequence text, final Charset charset) {
- if ( text == null )
- return null;
-
- return encode(CharBuffer.wrap(new CharSequenceNT(text)), charset);
- }
-
- /**
- * A {@link CharsetEncoder#encode(java.nio.CharBuffer)} implementation that uses {@link BufferUtils#createByteBuffer(int)}
- * instead of {@link ByteBuffer#allocate(int)}.
- *
- * @see CharsetEncoder#encode(java.nio.CharBuffer)
- */
- private static ByteBuffer encode(final CharBuffer in, final Charset charset) {
- final CharsetEncoder encoder = charset.newEncoder(); // encoders are not thread-safe, create a new one on every call
-
- int n = (int)(in.remaining() * encoder.averageBytesPerChar());
- ByteBuffer out = BufferUtils.createByteBuffer(n);
-
- if ( n == 0 && in.remaining() == 0 )
- return out;
-
- encoder.reset();
- while ( true ) {
- CoderResult cr = in.hasRemaining() ? encoder.encode(in, out, true) : CoderResult.UNDERFLOW;
- if ( cr.isUnderflow() )
- cr = encoder.flush(out);
-
- if ( cr.isUnderflow() )
- break;
-
- if ( cr.isOverflow() ) {
- n = 2 * n + 1; // Ensure progress; n might be 0!
- ByteBuffer o = BufferUtils.createByteBuffer(n);
- out.flip();
- o.put(out);
- out = o;
- continue;
- }
-
- try {
- cr.throwException();
- } catch (CharacterCodingException e) {
- throw new RuntimeException(e);
- }
- }
- out.flip();
- return out;
- }
-
- public static String decodeASCII(final ByteBuffer buffer) {
- return decode(buffer, ascii);
- }
-
- public static String decodeUTF8(final ByteBuffer buffer) {
- return decode(buffer, utf8);
- }
-
- public static String decodeUTF16(final ByteBuffer buffer) {
- return org.lwjgl.system.MemoryUtil.memUTF16(buffer);
- }
-
- private static String decode(final ByteBuffer buffer, final Charset charset) {
- if ( buffer == null )
- return null;
-
- return decodeImpl(buffer, charset);
- }
-
- private static String decodeImpl(final ByteBuffer in, final Charset charset) {
- final CharsetDecoder decoder = charset.newDecoder(); // decoders are not thread-safe, create a new one on every call
-
- int n = (int)(in.remaining() * decoder.averageCharsPerByte());
- CharBuffer out = BufferUtils.createCharBuffer(n);
-
- if ( (n == 0) && (in.remaining() == 0) )
- return "";
-
- decoder.reset();
- for (; ; ) {
- CoderResult cr = in.hasRemaining() ? decoder.decode(in, out, true) : CoderResult.UNDERFLOW;
- if ( cr.isUnderflow() )
- cr = decoder.flush(out);
-
- if ( cr.isUnderflow() )
- break;
- if ( cr.isOverflow() ) {
- n = 2 * n + 1; // Ensure progress; n might be 0!
- CharBuffer o = BufferUtils.createCharBuffer(n);
- out.flip();
- o.put(out);
- out = o;
- continue;
- }
- try {
- cr.throwException();
- } catch (CharacterCodingException e) {
- throw new RuntimeException(e);
- }
- }
- out.flip();
- return out.toString();
- }
-
- /** A null-terminated CharSequence. */
- private static class CharSequenceNT implements CharSequence {
-
- final CharSequence source;
-
- CharSequenceNT(CharSequence source) {
- this.source = source;
- }
-
- public int length() {
- return source.length() + 1;
-
- }
-
- public char charAt(final int index) {
- return index == source.length() ? '\0' : source.charAt(index);
-
- }
-
- public CharSequence subSequence(final int start, final int end) {
- return new CharSequenceNT(source.subSequence(start, Math.min(end, source.length())));
- }
-
- }
-
- interface Accessor {
-
- long getAddress(Buffer buffer);
-
- }
-
- private static Accessor loadAccessor(final String className) throws Exception {
- return (Accessor)Class.forName(className).newInstance();
- }
-
- /** Default implementation. */
- private static class AccessorJNI implements Accessor {
-
- public long getAddress(final Buffer buffer) {
- return BufferUtils.getBufferAddress(buffer);
- }
-
- }
-
- /** Implementation using reflection on ByteBuffer. */
- private static class AccessorReflect implements Accessor {
-
- private final Field address;
-
- AccessorReflect() {
- try {
- address = getAddressField();
- } catch (NoSuchFieldException e) {
- throw new UnsupportedOperationException(e);
- }
- address.setAccessible(true);
- }
-
- public long getAddress(final Buffer buffer) {
- try {
- return address.getLong(buffer);
- } catch (IllegalAccessException e) {
- // cannot happen
- return 0L;
- }
- }
-
- }
-
- static Field getAddressField() throws NoSuchFieldException {
- return getDeclaredFieldRecursive(ByteBuffer.class, "address");
- }
-
- private static Field getDeclaredFieldRecursive(final Class> root, final String fieldName) throws NoSuchFieldException {
- Class> type = root;
-
- do {
- try {
- return type.getDeclaredField(fieldName);
- } catch (NoSuchFieldException e) {
- type = type.getSuperclass();
- }
- } while ( type != null );
-
- throw new NoSuchFieldException(fieldName + " does not exist in " + root.getSimpleName() + " or any of its superclasses.");
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerBuffer.java.z b/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerBuffer.java.z
deleted file mode 100644
index 990185312..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerBuffer.java.z
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- */
-package org.lwjgl;
-
-import org.lwjgl.system.*;
-
-import javax.annotation.*;
-import java.nio.*;
-
-import static org.lwjgl.system.CheckIntrinsics.*;
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/** This class is a container for architecture-independent pointer data. Its interface mirrors the {@link LongBuffer} API for convenience. */
-public class PointerBuffer extends CustomBuffer implements Comparable {
-// -- Begin LWJGL2 parts --
- public PointerBuffer(final int capacity) {
- this(allocateDirect(capacity));
- }
-
- public PointerBuffer(final ByteBuffer source) {
- this(create(source));
- }
-
- // Workaround for LWJGL2 bridge
- protected PointerBuffer(PointerBuffer copy) {
- this(copy.address0(), copy.container, copy.mark, copy.position, copy.limit, copy.capacity);
- }
-
- /**
- * Returns the ByteBuffer that backs this PointerBuffer.
- *
- * @return the pointer ByteBuffer
- */
- public ByteBuffer getBuffer() {
- return container;
- }
-
- /** Returns true if the underlying architecture is 64bit. */
- public static boolean is64Bit() {
- return POINTER_SIZE == 8;
- }
-
- /**
- * Returns the pointer size in bytes, based on the underlying architecture.
- *
- * @return The pointer size in bytes
- */
- public static int getPointerSize() {
- return POINTER_SIZE;
- }
-
- /**
- * Returns this buffer's position, in bytes.
- *
- * @return The position of this buffer in bytes.
- */
- public final int positionByte() {
- return position() * getPointerSize();
- }
-
- /**
- * Returns the number of bytes between the current position and the
- * limit.
- *
- * @return The number of bytes remaining in this buffer
- */
- public final int remainingByte() {
- return remaining() * getPointerSize();
- }
-
- /**
- * Creates a new, read-only pointer buffer that shares this buffer's
- * content.
- *
- * The content of the new buffer will be that of this buffer. Changes
- * to this buffer's content will be visible in the new buffer; the new
- * buffer itself, however, will be read-only and will not allow the shared
- * content to be modified. The two buffers' position, limit, and mark
- * values will be independent.
- *
- * The new buffer's capacity, limit and position will be
- * identical to those of this buffer.
- *
- * If this buffer is itself read-only then this method behaves in
- * exactly the same way as the {@link #duplicate duplicate} method.
- *
- * @return The new, read-only pointer buffer
- */
- public PointerBuffer asReadOnlyBuffer() {
- final PointerBuffer buffer = new PointerBufferR(container);
-
- buffer.position(position());
- buffer.limit(limit());
-
- return buffer;
- }
-
- public boolean isReadOnly() {
- return false;
- }
-
-
- /**
- * Read-only version of PointerBuffer.
- *
- * @author Spasi
- */
- private static final class PointerBufferR extends PointerBuffer {
-
- PointerBufferR(final ByteBuffer source) {
- super(source);
- }
-
- public boolean isReadOnly() {
- return true;
- }
-
- protected PointerBuffer newInstance(final ByteBuffer source) {
- return new PointerBufferR(source);
- }
-
- public PointerBuffer asReadOnlyBuffer() {
- return duplicate();
- }
-
- public PointerBuffer put(final long l) {
- throw new ReadOnlyBufferException();
- }
-
- public PointerBuffer put(final int index, final long l) {
- throw new ReadOnlyBufferException();
- }
-
- public PointerBuffer put(final PointerBuffer src) {
- throw new ReadOnlyBufferException();
- }
-
- public PointerBuffer put(final long[] src, final int offset, final int length) {
- throw new ReadOnlyBufferException();
- }
-
- public PointerBuffer compact() {
- throw new ReadOnlyBufferException();
- }
-
- }
-// -- End LWJGL2 parts --
-
- protected PointerBuffer(long address, @Nullable ByteBuffer container, int mark, int position, int limit, int capacity) {
- super(address, container, mark, position, limit, capacity);
- }
-
- /**
- * Allocates a new pointer buffer.
- *
- * The new buffer's position will be zero, its limit will be its capacity, and its mark will be undefined.
- *
- * @param capacity the new buffer's capacity, in pointers
- *
- * @return the new pointer buffer
- *
- * @throws IllegalArgumentException If the {@code capacity} is a negative integer
- */
- public static PointerBuffer allocateDirect(int capacity) {
- ByteBuffer source = BufferUtils.createByteBuffer(BufferUtils.getAllocationSize(capacity, POINTER_SHIFT));
- return wrap(PointerBuffer.class, memAddress(source), capacity, source);
- }
-
- /**
- * Creates a new PointerBuffer that starts at the specified memory address and has the specified capacity.
- *
- * @param address the starting memory address
- * @param capacity the buffer capacity, in number of pointers
- */
- public static PointerBuffer create(long address, int capacity) {
- return wrap(PointerBuffer.class, address, capacity);
- }
-
- /**
- * Creates a new PointerBuffer using the specified ByteBuffer as its pointer data source.
- *
- * @param source the source buffer
- */
- public static PointerBuffer create(ByteBuffer source) {
- int capacity = source.remaining() >> POINTER_SHIFT;
- return wrap(PointerBuffer.class, memAddress(source), capacity, source);
- }
-
- @Override
- protected PointerBuffer self() {
- return this;
- }
-
- @Override
- public int sizeof() {
- return POINTER_SIZE;
- }
-
- /**
- * Relative get method. Reads the pointer at this buffer's current position, and then increments the position.
- *
- * @return the pointer at the buffer's current position
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public long get() {
- return memGetAddress(address + Integer.toUnsignedLong(nextGetIndex()) * POINTER_SIZE);
- }
-
- /**
- * Convenience relative get from a source ByteBuffer.
- *
- * @param source the source ByteBuffer
- */
- public static long get(ByteBuffer source) {
- if (source.remaining() < POINTER_SIZE) {
- throw new BufferUnderflowException();
- }
-
- try {
- return memGetAddress(memAddress(source));
- } finally {
- source.position(source.position() + POINTER_SIZE);
- }
- }
-
- /**
- * Relative put method (optional operation).
- *
- * Writes the specified pointer into this buffer at the current position, and then increments the position.
- *
- * @param p the pointer to be written
- *
- * @return This buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(long p) {
- memPutAddress(address + Integer.toUnsignedLong(nextPutIndex()) * POINTER_SIZE, p);
- return this;
- }
-
- /**
- * Convenience relative put on a target ByteBuffer.
- *
- * @param target the target ByteBuffer
- * @param p the pointer value to be written
- */
- public static void put(ByteBuffer target, long p) {
- if (target.remaining() < POINTER_SIZE) {
- throw new BufferOverflowException();
- }
-
- try {
- memPutAddress(memAddress(target), p);
- } finally {
- target.position(target.position() + POINTER_SIZE);
- }
- }
-
- /**
- * Absolute get method. Reads the pointer at the specified {@code index}.
- *
- * @param index the index from which the pointer will be read
- *
- * @return the pointer at the specified {@code index}
- *
- * @throws IndexOutOfBoundsException If {@code index} is negative or not smaller than the buffer's limit
- */
- public long get(int index) {
- return memGetAddress(address + check(index, limit) * POINTER_SIZE);
- }
-
- /**
- * Convenience absolute get from a source ByteBuffer.
- *
- * @param source the source ByteBuffer
- * @param index the index at which the pointer will be read
- */
- public static long get(ByteBuffer source, int index) {
- checkFromIndexSize(index, POINTER_SIZE, source.limit());
- return memGetAddress(memAddress0(source) + index);
- }
-
- /**
- * Absolute put method (optional operation).
- *
- * Writes the specified pointer into this buffer at the specified {@code index}.
- *
- * @param index the index at which the pointer will be written
- * @param p the pointer value to be written
- *
- * @return This buffer
- *
- * @throws IndexOutOfBoundsException If {@code index} is negative or not smaller than the buffer's limit
- */
- public PointerBuffer put(int index, long p) {
- memPutAddress(address + check(index, limit) * POINTER_SIZE, p);
- return this;
- }
-
- /**
- * Convenience absolute put on a target ByteBuffer.
- *
- * @param target the target ByteBuffer
- * @param index the index at which the pointer will be written
- * @param p the pointer value to be written
- */
- public static void put(ByteBuffer target, int index, long p) {
- checkFromIndexSize(index, POINTER_SIZE, target.limit());
- memPutAddress(memAddress0(target) + index, p);
- }
-
- // -- PointerWrapper operations --
-
- /** Puts the pointer value of the specified {@link Pointer} at the current position and then increments the position. */
- public PointerBuffer put(Pointer pointer) {
- put(pointer.address());
- return this;
- }
-
- /** Puts the pointer value of the specified {@link Pointer} at the specified {@code index}. */
- public PointerBuffer put(int index, Pointer pointer) {
- put(index, pointer.address());
- return this;
- }
-
- // -- Buffer address operations --
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(ByteBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(ShortBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(IntBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(LongBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(FloatBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer put(DoubleBuffer buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- /**
- * Writes the address of the specified {@code buffer} into this buffer at the current position, and then increments the position.
- *
- * @param buffer the pointer to be written
- *
- * @return this buffer
- *
- * @throws BufferOverflowException If this buffer's current position is not smaller than its limit
- */
- public PointerBuffer putAddressOf(CustomBuffer> buffer) {
- put(memAddress(buffer));
- return this;
- }
-
- // ---
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, ByteBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, ShortBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, IntBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, LongBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, FloatBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer put(int index, DoubleBuffer buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- /** Puts the address of the specified {@code buffer} at the specified {@code index}. */
- public PointerBuffer putAddressOf(int index, CustomBuffer> buffer) {
- put(index, memAddress(buffer));
- return this;
- }
-
- // ---
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link ByteBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public ByteBuffer getByteBuffer(int size) { return memByteBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link ShortBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public ShortBuffer getShortBuffer(int size) { return memShortBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link IntBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public IntBuffer getIntBuffer(int size) { return memIntBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link LongBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public LongBuffer getLongBuffer(int size) { return memLongBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link FloatBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public FloatBuffer getFloatBuffer(int size) { return memFloatBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@link DoubleBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public DoubleBuffer getDoubleBuffer(int size) { return memDoubleBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is returned as a {@code PointerBuffer} instance that
- * starts at the pointer address and has capacity equal to the specified {@code size}.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public PointerBuffer getPointerBuffer(int size) { return memPointerBuffer(get(), size); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is evaluated as a null-terminated ASCII string, which
- * is decoded and returned as a {@link String} instance.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public String getStringASCII() { return memASCII(get()); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is evaluated as a null-terminated UTF-8 string, which
- * is decoded and returned as a {@link String} instance.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public String getStringUTF8() { return memUTF8(get()); }
-
- /**
- * Reads the pointer at this buffer's current position, and then increments the position. The pointer is evaluated as a null-terminated UTF-16 string,
- * which is decoded and returned as a {@link String} instance.
- *
- * @throws BufferUnderflowException If the buffer's current position is not smaller than its limit
- */
- public String getStringUTF16() { return memUTF16(get()); }
-
- // ---
-
- /** Returns a {@link ByteBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public ByteBuffer getByteBuffer(int index, int size) { return memByteBuffer(get(index), size); }
-
- /** Returns a {@link ShortBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public ShortBuffer getShortBuffer(int index, int size) { return memShortBuffer(get(index), size); }
-
- /** Returns a {@link IntBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public IntBuffer getIntBuffer(int index, int size) { return memIntBuffer(get(index), size); }
-
- /** Returns a {@link LongBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public LongBuffer getLongBuffer(int index, int size) { return memLongBuffer(get(index), size); }
-
- /** Returns a {@link FloatBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public FloatBuffer getFloatBuffer(int index, int size) { return memFloatBuffer(get(index), size); }
-
- /** Returns a {@link DoubleBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public DoubleBuffer getDoubleBuffer(int index, int size) { return memDoubleBuffer(get(index), size); }
-
- /** Returns a {@code PointerBuffer} instance that starts at the address found at the specified {@code index} and has capacity equal to the specified size. */
- public PointerBuffer getPointerBuffer(int index, int size) { return memPointerBuffer(get(index), size); }
-
- /** Decodes the ASCII string that starts at the address found at the specified {@code index}. */
- public String getStringASCII(int index) { return memASCII(get(index)); }
-
- /** Decodes the UTF-8 string that starts at the address found at the specified {@code index}. */
- public String getStringUTF8(int index) { return memUTF8(get(index)); }
-
- /** Decodes the UTF-16 string that starts at the address found at the specified {@code index}. */
- public String getStringUTF16(int index) { return memUTF16(get(index)); }
-
- // -- Bulk get operations --
-
- /**
- * Relative bulk get method.
- *
- * This method transfers pointers from this buffer into the specified destination array. An invocation of this method of the form {@code src.get(a)}
- * behaves in exactly the same way as the invocation
- *
- *
- * src.get(a, 0, a.length)
- *
- * @return This buffer
- *
- * @throws BufferUnderflowException If there are fewer than {@code length} pointers remaining in this buffer
- */
- public PointerBuffer get(long[] dst) {
- return get(dst, 0, dst.length);
- }
-
- /**
- * Relative bulk get method.
- *
- * This method transfers pointers from this buffer into the specified destination array. If there are fewer pointers remaining in the buffer than are
- * required to satisfy the request, that is, if {@code length} {@code >} {@code remaining()}, then no pointers are transferred and a
- * {@link BufferUnderflowException} is thrown.
- *
- *
Otherwise, this method copies {@code length} pointers from this buffer into the specified array, starting at the current position of this buffer and
- * at the specified offset in the array. The position of this buffer is then incremented by {@code length}.
- *
- *
In other words, an invocation of this method of the form {@code src.get(dst, off, len)} has exactly the same effect as the loop
- *
- *
- * for (int i = off; i < off + len; i++)
- * dst[i] = src.get();
- *
- * except that it first checks that there are sufficient pointers in this buffer and it is potentially much more efficient.
- *
- * @param dst the array into which pointers are to be written
- * @param offset the offset within the array of the first pointer to be written; must be non-negative and no larger than {@code dst.length}
- * @param length the maximum number of pointers to be written to the specified array; must be non-negative and no larger than {@code dst.length - offset}
- *
- * @return This buffer
- *
- * @throws BufferUnderflowException If there are fewer than {@code length} pointers remaining in this buffer
- * @throws IndexOutOfBoundsException If the preconditions on the {@code offset} and {@code length} parameters do not hold
- */
- public PointerBuffer get(long[] dst, int offset, int length) {
- if (BITS64) {
- memLongBuffer(address(), remaining()).get(dst, offset, length);
- position(position() + length);
- } else {
- get32(dst, offset, length);
- }
-
- return this;
- }
-
- private void get32(long[] dst, int offset, int length) {
- checkFromIndexSize(offset, length, dst.length);
- if (remaining() < length) {
- throw new BufferUnderflowException();
- }
- for (int i = offset, end = offset + length; i < end; i++) {
- dst[i] = get();
- }
- }
-
- /**
- * Relative bulk put method (optional operation).
- *
- * This method transfers the entire content of the specified source pointer array into this buffer. An invocation of this method of the form
- * {@code dst.put(a)} behaves in exactly the same way as the invocation
- *
- *
- * dst.put(a, 0, a.length)
- *
- * @return This buffer
- *
- * @throws BufferOverflowException If there is insufficient space in this buffer
- */
- public PointerBuffer put(long[] src) {
- return put(src, 0, src.length);
- }
-
- /**
- * Relative bulk put method (optional operation).
- *
- * This method transfers pointers into this buffer from the specified source array. If there are more pointers to be copied from the array than remain
- * in this buffer, that is, if {@code length} {@code >} {@code remaining()}, then no pointers are transferred and a
- * {@link BufferOverflowException} is thrown.
- *
- *
Otherwise, this method copies {@code length} pointers from the specified array into this buffer, starting at the specified offset in the array and
- * at the current position of this buffer. The position of this buffer is then incremented by {@code length}.
- *
- * In other words, an invocation of this method of the form {@code dst.put(src, off, len)} has exactly the same effect as the loop
- *
- *
- * for (int i = off; i < off + len; i++)
- * dst.put(a[i]);
- *
- * except that it first checks that there is sufficient space in this buffer and it is potentially much more efficient.
- *
- * @param src the array from which pointers are to be read
- * @param offset the offset within the array of the first pointer to be read; must be non-negative and no larger than {@code array.length}
- * @param length the number of pointers to be read from the specified array; must be non-negative and no larger than {@code array.length - offset}
- *
- * @return This buffer
- *
- * @throws BufferOverflowException If there is insufficient space in this buffer
- * @throws IndexOutOfBoundsException If the preconditions on the {@code offset} and {@code length} parameters do not hold
- */
- public PointerBuffer put(long[] src, int offset, int length) {
- if (BITS64) {
- memLongBuffer(address(), remaining()).put(src, offset, length);
- position(position() + length);
- } else {
- put32(src, offset, length);
- }
-
- return this;
- }
-
- private void put32(long[] src, int offset, int length) {
- checkFromIndexSize(offset, length, src.length);
- if (remaining() < length) {
- throw new BufferOverflowException();
- }
- int end = offset + length;
- for (int i = offset; i < end; i++) {
- put(src[i]);
- }
- }
-
- /**
- * Returns the current hash code of this buffer.
- *
- * The hash code of a pointer buffer depends only upon its remaining elements; that is, upon the elements from {@code position()} up to, and including,
- * the element at {@code limit()} - {@code 1}.
- *
- * Because buffer hash codes are content-dependent, it is inadvisable to use buffers as keys in hash maps or similar data structures unless it is known
- * that their contents will not change.
- *
- * @return the current hash code of this buffer
- */
- public int hashCode() {
- int h = 1;
- int p = position();
- for (int i = limit() - 1; i >= p; i--) {
- h = 31 * h + (int)get(i);
- }
- return h;
- }
-
- /**
- * Tells whether or not this buffer is equal to another object.
- *
- * Two pointer buffers are equal if, and only if,
- *
- *
- * - They have the same element type,
- * - They have the same number of remaining elements, and
- * - The two sequences of remaining elements, considered
- * independently of their starting positions, are pointwise equal.
- *
- *
- * A pointer buffer is not equal to any other type of object.
- *
- * @param ob the object to which this buffer is to be compared
- *
- * @return {@code true} if, and only if, this buffer is equal to the
- * given object
- */
- public boolean equals(Object ob) {
- if (!(ob instanceof PointerBuffer)) {
- return false;
- }
- PointerBuffer that = (PointerBuffer)ob;
- if (this.remaining() != that.remaining()) {
- return false;
- }
- int p = this.position();
- for (int i = this.limit() - 1, j = that.limit() - 1; i >= p; i--, j--) {
- long v1 = this.get(i);
- long v2 = that.get(j);
- if (v1 != v2) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Compares this buffer to another.
- *
- * Two pointer buffers are compared by comparing their sequences of remaining elements lexicographically, without regard to the starting position of
- * each sequence within its corresponding buffer.
- *
- * A pointer buffer is not comparable to any other type of object.
- *
- * @return A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the specified buffer
- */
- @Override
- public int compareTo(PointerBuffer that) {
- int n = this.position() + Math.min(this.remaining(), that.remaining());
- for (int i = this.position(), j = that.position(); i < n; i++, j++) {
- long v1 = this.get(i);
- long v2 = that.get(j);
- if (v1 == v2) {
- continue;
- }
- if (v1 < v2) {
- return -1;
- }
- return +1;
- }
- return this.remaining() - that.remaining();
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapper.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapper.java
deleted file mode 100644
index f68f18dd9..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-/**
- * A common interface for classes that wrap pointer addresses.
- *
- * @author Spasi
- */
-public interface PointerWrapper {
-
- long getPointer();
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapperAbstract.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapperAbstract.java
deleted file mode 100644
index 56f17aebf..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapperAbstract.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2002-2010 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl;
-
-/**
- * Base PointerWrapper implementation.
- *
- * @author Spasi
- */
-public abstract class PointerWrapperAbstract implements PointerWrapper {
-
- protected final long pointer;
-
- protected PointerWrapperAbstract(final long pointer) {
- this.pointer = pointer;
- }
-
- /**
- * Returns true if this object represents a valid pointer.
- * The pointer might be invalid because it is NULL or because
- * some other action has deleted the object that this pointer
- * represents.
- *
- * @return true if the pointer is valid
- */
- public boolean isValid() {
- return pointer != 0;
- }
-
- /**
- * Checks if the pointer is valid and throws an IllegalStateException if
- * it is not. This method is a NO-OP, unless the org.lwjgl.util.Debug
- * property has been set to true.
- */
- public final void checkValid() {
- if ( LWJGLUtil.DEBUG && !isValid() )
- throw new IllegalStateException("This " + getClass().getSimpleName() + " pointer is not valid.");
- }
-
- public final long getPointer() {
- checkValid();
- return pointer;
- }
-
- public boolean equals(final Object o) {
- if ( this == o ) return true;
- if ( !(o instanceof PointerWrapperAbstract) ) return false;
-
- final PointerWrapperAbstract that = (PointerWrapperAbstract)o;
-
- if ( pointer != that.pointer ) return false;
-
- return true;
- }
-
- public int hashCode() {
- return (int)(pointer ^ (pointer >>> 32));
- }
-
- public String toString() {
- return getClass().getSimpleName() + " pointer (0x" + Long.toHexString(pointer).toUpperCase() + ")";
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/Sys.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/Sys.java
deleted file mode 100644
index 17299f66f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/Sys.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.lwjgl;
-
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.glfw.GLFW;
-
-import java.awt.Desktop;
-import java.net.URI;
-
-import javax.swing.JOptionPane;
-import javax.swing.UIManager;
-
-public class Sys {
-
- /**
- * No constructor for Sys.
- */
- private Sys() {
- }
-
- /** Returns the LWJGL version. */
- public static String getVersion() {
- return org.lwjgl.Version.getVersion();
- }
-
- public static void initialize() {
- if (!GLFW.glfwInit())
- throw new IllegalStateException("Unable to initialize GLFW");
- }
-
- /**
- * GLFW automatically recomputes the time via
- * {@link GLFW#glfwGetTimerValue()}, no need to divide the frequency
- *
- * @return 1
- */
- public static long getTimerResolution() {
- return 1000;
- }
-
- /**
- * Gets the current value of the hires timer, in ticks. When the Sys class
- * is first loaded the hi-res timer is reset to 0. If no hi-res timer is
- * present then this method will always return 0.
- *
- * PLEASE NOTE: the hi-res timer WILL wrap around.
- *
- * @return the current hi-res time, in ticks (always >= 0)
- */
- public static long getTime() {
- return GLFW.glfwGetTimerValue();
- }
-
- public static long getNanoTime() {
- return System.nanoTime();
- // return getTime() * 1000L * 1000L;
- }
-
- public static boolean openURL(String url) {
- if (!Desktop.isDesktopSupported())
- return false;
-
- Desktop desktop = Desktop.getDesktop();
- if (!desktop.isSupported(Desktop.Action.BROWSE))
- return false;
-
- try {
- desktop.browse(new URI(url));
- return true;
- } catch (Exception ex) {
- ex.printStackTrace();
- return false;
- }
- }
-
- public static void alert(String title, String message) {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception e) {
- LWJGLUtil.log("Caught exception while setting Look-and-Feel: " + e);
- }
- JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE);
- }
-
- public static String getClipboard() {
- return GLFW.glfwGetClipboardString(GLFW.glfwGetPrimaryMonitor());
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/Callbacks.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/Callbacks.java
index 9216a1c34..f014546a3 100644
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/Callbacks.java
+++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/Callbacks.java
@@ -31,42 +31,21 @@ public final class Callbacks {
if (Checks.CHECKS) {
check(window);
}
-
- try {
- for (Field callback : GLFW.class.getFields()) {
- if (callback.getName().startsWith("mGLFW") && callback.getName().endsWith("Callback")) {
- callback.set(null, null);
- }
- }
- } catch (IllegalAccessException|NullPointerException e) {
- throw new RuntimeException("org.lwjgl.GLFW.mGLFWxxxCallbacks must be set to public and static", e);
- }
-/*
- for (long callback : new long[] {
- GLFW.Functions.SetWindowPosCallback,
- GLFW.Functions.SetWindowSizeCallback,
- GLFW.Functions.SetWindowCloseCallback,
- GLFW.Functions.SetWindowRefreshCallback,
- GLFW.Functions.SetWindowFocusCallback,
- GLFW.Functions.SetWindowIconifyCallback,
- GLFW.Functions.SetWindowMaximizeCallback,
- GLFW.Functions.SetFramebufferSizeCallback,
- GLFW.Functions.SetWindowContentScaleCallback,
- GLFW.Functions.SetKeyCallback,
- GLFW.Functions.SetCharCallback,
- GLFW.Functions.SetCharModsCallback,
- GLFW.Functions.SetMouseButtonCallback,
- GLFW.Functions.SetCursorPosCallback,
- GLFW.Functions.SetCursorEnterCallback,
- GLFW.Functions.SetScrollCallback,
- GLFW.Functions.SetDropCallback
- }) {
- long prevCB = invokePPP(window, NULL, callback);
- if (prevCB != NULL) {
- Callback.free(prevCB);
+ try {
+ for (Method callback : GLFW.class.getMethods()) {
+ if (callback.getName().startsWith("glfwSet") && callback.getName().endsWith("Callback")) {
+ if (callback.getParameterCount() == 1) {
+ callback.invoke(null, (Object)null);
+ } else {
+ callback.invoke(null, GLFW.glfwGetCurrentContext(), null);
+ }
+ }
}
+ } catch (IllegalAccessException|NullPointerException e) {
+ throw new RuntimeException("org.lwjgl.GLFW.glfwSetXXXCallback() must be set to public and static", e);
+ } catch (InvocationTargetException e) {
+ throw new RuntimeException(e);
}
-*/
}
}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/EventLoop.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/EventLoop.java
deleted file mode 100644
index 8f8113f1a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/EventLoop.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-import org.lwjgl.system.macosx.*;
-
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.macosx.LibC.*;
-import static org.lwjgl.system.macosx.ObjCRuntime.*;
-
-/**
- * Contains checks for the event loop issues on OS X.
- *
- *
On-screen GLFW windows can only be used in the main thread and only if that thread is the first thread in the process. This requires running the JVM with
- * {@code -XstartOnFirstThread}, which means that other window toolkits (AWT/Swing, JavaFX, etc.) cannot be used at the same time.
- *
- * Another window toolkit can be used if GLFW windows are never shown (created with {@link GLFW#GLFW_VISIBLE GLFW_VISIBLE} equal to
- * {@link GLFW#GLFW_FALSE GLFW_FALSE}) and only used as contexts for offscreen rendering. This is possible if the window toolkit has initialized and created
- * the shared application (NSApp) before a GLFW window is created.
- */
-final class EventLoop {
-
- static final class OffScreen {
- static {
- if (Platform.get() == Platform.MACOSX && !isMainThread()) {
- // The only way to avoid a crash is if the shared application (NSApp) has been created by something else
- throw new IllegalStateException(
- isJavaStartedOnFirstThread()
- ? "GLFW windows may only be created on the main thread."
- : "GLFW windows may only be created on the main thread and that thread must be the first thread in the process. Please run " +
- "the JVM with -XstartOnFirstThread. For offscreen rendering, make sure another window toolkit (e.g. AWT or JavaFX) is " +
- "initialized before GLFW and Configuration.GLFW_CHECK_THREAD0 is set to false."
- );
- }
- }
-
- private OffScreen() {
- }
-
- static void check() {
- // intentionally empty to trigger the static initializer
- }
- }
-
- static final class OnScreen {
- static {
- if (Platform.get() == Platform.MACOSX && !isMainThread()) {
- throw new IllegalStateException(
- "Please run the JVM with -XstartOnFirstThread and make sure a window toolkit other than GLFW (e.g. AWT or JavaFX) is not initialized."
- );
- }
- }
-
- private OnScreen() {
- }
-
- static void check() {
- // intentionally empty to trigger the static initializer
- }
- }
-
- private EventLoop() {
- }
-
- private static boolean isMainThread() {
- if (!Configuration.GLFW_CHECK_THREAD0.get(true)) {
- return true;
- }
-
- long objc_msgSend = ObjCRuntime.getLibrary().getFunctionAddress("objc_msgSend");
-
- long NSThread = objc_getClass("NSThread");
- long currentThread = invokePPP(NSThread, sel_getUid("currentThread"), objc_msgSend);
-
- return invokePPZ(currentThread, sel_getUid("isMainThread"), objc_msgSend);
- }
-
- private static boolean isJavaStartedOnFirstThread() {
- return "1".equals(System.getenv().get("JAVA_STARTED_ON_FIRST_THREAD_" + getpid()));
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java
index ac89bf795..b71984856 100644
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java
+++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java
@@ -371,6 +371,15 @@ public class GLFW
GLFW_COCOA_CHDIR_RESOURCES = 0x51001,
GLFW_COCOA_MENUBAR = 0x51002;
+ /** Hint value for {@link #GLFW_PLATFORM PLATFORM} that enables automatic platform selection. */
+ public static final int
+ GLFW_ANY_PLATFORM = 0x60000,
+ GLFW_PLATFORM_WIN32 = 0x60001,
+ GLFW_PLATFORM_COCOA = 0x60002,
+ GLFW_PLATFORM_WAYLAND = 0x60003,
+ GLFW_PLATFORM_X11 = 0x60004,
+ GLFW_PLATFORM_NULL = 0x60005;
+
/** Don't care value. */
public static final int GLFW_DONT_CARE = -1;
@@ -614,6 +623,7 @@ public class GLFW
//DetachOnCurrentThread = apiGetFunctionAddress(GLFW, "pojavDetachOnCurrentThread"),
MakeContextCurrent = apiGetFunctionAddress(GLFW, "pojavMakeCurrent"),
Terminate = apiGetFunctionAddress(GLFW, "pojavTerminate"),
+ SetWindowHint = apiGetFunctionAddress(GLFW, "pojavSetWindowHint"),
SwapBuffers = apiGetFunctionAddress(GLFW, "pojavSwapBuffers"),
SwapInterval = apiGetFunctionAddress(GLFW, "pojavSwapInterval"),
PumpEvents = apiGetFunctionAddress(GLFW, "pojavPumpEvents"),
@@ -822,6 +832,10 @@ public class GLFW
public static void glfwInitHint(int hint, int value) { }
+ public static int glfwGetPlatform() {
+ return GLFW_PLATFORM_X11;
+ }
+
@NativeType("GLFWwindow *")
public static long glfwGetCurrentContext() {
long __functionAddress = Functions.GetCurrentContext;
@@ -977,7 +991,6 @@ public class GLFW
return invokePP(share, Functions.CreateContext);
}
public static long glfwCreateWindow(int width, int height, CharSequence title, long monitor, long share) {
- EventLoop.OffScreen.check();
// Create an ACTUAL EGL context
long ptr = nglfwCreateContext(share);
//nativeEglMakeCurrent(ptr);
@@ -1032,7 +1045,12 @@ public class GLFW
public static void glfwShowWindow(long window) {
nglfwSetShowingWindow(window);
}
- public static void glfwWindowHint(int hint, int value) {}
+
+ public static void glfwWindowHint(int hint, int value) {
+ long __functionAddress = Functions.SetWindowHint;
+ invokeV(hint, value, __functionAddress);
+ }
+
public static void glfwWindowHintString(int hint, @NativeType("const char *") ByteBuffer value) {}
public static void glfwWindowHintString(int hint, @NativeType("const char *") CharSequence value) {}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallback.java
deleted file mode 100644
index a349d2253..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetCharCallback SetCharCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * unsigned int codepoint
- * )
- *
- * @since version 2.4
- */
-public abstract class GLFWCharCallback extends Callback implements GLFWCharCallbackI {
-
- /**
- * Creates a {@code GLFWCharCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWCharCallback}
- */
- public static GLFWCharCallback create(long functionPointer) {
- GLFWCharCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWCharCallback
- ? (GLFWCharCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWCharCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWCharCallback} instance that delegates to the specified {@code GLFWCharCallbackI} instance. */
- public static GLFWCharCallback create(GLFWCharCallbackI instance) {
- return instance instanceof GLFWCharCallback
- ? (GLFWCharCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWCharCallback() {
- super(SIGNATURE);
- }
-
- GLFWCharCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetCharCallback SetCharCallback}. */
- public GLFWCharCallback set(long window) {
- glfwSetCharCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWCharCallback {
-
- private final GLFWCharCallbackI delegate;
-
- Container(long functionPointer, GLFWCharCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int codepoint) {
- delegate.invoke(window, codepoint);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallbackI.java
deleted file mode 100644
index 338b05c5f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetCharCallback SetCharCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * unsigned int codepoint
- * )
- *
- * @since version 2.4
- */
-@FunctionalInterface
-@NativeType("GLFWcharfun")
-public interface GLFWCharCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a Unicode character is input.
- *
- * @param window the window that received the event
- * @param codepoint the Unicode code point of the character
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("unsigned int") int codepoint);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallback.java
deleted file mode 100644
index c9edc08fa..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallback.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetCharModsCallback SetCharModsCallback} method.
- *
- * Deprecared: scheduled for removal in version 4.0.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * unsigned int codepoint,
- * int mods
- * )
- *
- * @since version 3.1
- */
-public abstract class GLFWCharModsCallback extends Callback implements GLFWCharModsCallbackI {
-
- /**
- * Creates a {@code GLFWCharModsCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWCharModsCallback}
- */
- public static GLFWCharModsCallback create(long functionPointer) {
- GLFWCharModsCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWCharModsCallback
- ? (GLFWCharModsCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWCharModsCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWCharModsCallback} instance that delegates to the specified {@code GLFWCharModsCallbackI} instance. */
- public static GLFWCharModsCallback create(GLFWCharModsCallbackI instance) {
- return instance instanceof GLFWCharModsCallback
- ? (GLFWCharModsCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWCharModsCallback() {
- super(SIGNATURE);
- }
-
- GLFWCharModsCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetCharModsCallback SetCharModsCallback}. */
- public GLFWCharModsCallback set(long window) {
- glfwSetCharModsCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWCharModsCallback {
-
- private final GLFWCharModsCallbackI delegate;
-
- Container(long functionPointer, GLFWCharModsCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int codepoint, int mods) {
- delegate.invoke(window, codepoint, mods);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallbackI.java
deleted file mode 100644
index 3008caad3..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallbackI.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetCharModsCallback SetCharModsCallback} method.
- *
- * Deprecared: scheduled for removal in version 4.0.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * unsigned int codepoint,
- * int mods
- * )
- *
- * @since version 3.1
- */
-@FunctionalInterface
-@NativeType("GLFWcharmodsfun")
-public interface GLFWCharModsCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a Unicode character is input regardless of what modifier keys are used.
- *
- * @param window the window that received the event
- * @param codepoint the Unicode code point of the character
- * @param mods bitfield describing which modifier keys were held down
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("unsigned int") int codepoint, int mods);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallback.java
deleted file mode 100644
index bd02ce774..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetCursorEnterCallback SetCursorEnterCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int entered
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWCursorEnterCallback extends Callback implements GLFWCursorEnterCallbackI {
-
- /**
- * Creates a {@code GLFWCursorEnterCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWCursorEnterCallback}
- */
- public static GLFWCursorEnterCallback create(long functionPointer) {
- GLFWCursorEnterCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWCursorEnterCallback
- ? (GLFWCursorEnterCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWCursorEnterCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWCursorEnterCallback} instance that delegates to the specified {@code GLFWCursorEnterCallbackI} instance. */
- public static GLFWCursorEnterCallback create(GLFWCursorEnterCallbackI instance) {
- return instance instanceof GLFWCursorEnterCallback
- ? (GLFWCursorEnterCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWCursorEnterCallback() {
- super(SIGNATURE);
- }
-
- GLFWCursorEnterCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetCursorEnterCallback SetCursorEnterCallback}. */
- public GLFWCursorEnterCallback set(long window) {
- glfwSetCursorEnterCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWCursorEnterCallback {
-
- private final GLFWCursorEnterCallbackI delegate;
-
- Container(long functionPointer, GLFWCursorEnterCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, boolean entered) {
- delegate.invoke(window, entered);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallbackI.java
deleted file mode 100644
index 9be574b09..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetCursorEnterCallback SetCursorEnterCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int entered
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWcursorenterfun")
-public interface GLFWCursorEnterCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args) != 0
- );
- }
-
- /**
- * Will be called when the cursor enters or leaves the client area of the window.
- *
- * @param window the window that received the event
- * @param entered {@link GLFW#GLFW_TRUE TRUE} if the cursor entered the window's content area, or {@link GLFW#GLFW_FALSE FALSE} if it left it
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean entered);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallback.java
deleted file mode 100644
index 1a4fa68d9..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetCursorPosCallback SetCursorPosCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * double xpos,
- * double ypos
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWCursorPosCallback extends Callback implements GLFWCursorPosCallbackI {
-
- /**
- * Creates a {@code GLFWCursorPosCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWCursorPosCallback}
- */
- public static GLFWCursorPosCallback create(long functionPointer) {
- GLFWCursorPosCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWCursorPosCallback
- ? (GLFWCursorPosCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWCursorPosCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWCursorPosCallback} instance that delegates to the specified {@code GLFWCursorPosCallbackI} instance. */
- public static GLFWCursorPosCallback create(GLFWCursorPosCallbackI instance) {
- return instance instanceof GLFWCursorPosCallback
- ? (GLFWCursorPosCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWCursorPosCallback() {
- super(SIGNATURE);
- }
-
- GLFWCursorPosCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetCursorPosCallback SetCursorPosCallback}. */
- public GLFWCursorPosCallback set(long window) {
- glfwSetCursorPosCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWCursorPosCallback {
-
- private final GLFWCursorPosCallbackI delegate;
-
- Container(long functionPointer, GLFWCursorPosCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, double xpos, double ypos) {
- delegate.invoke(window, xpos, ypos);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallbackI.java
deleted file mode 100644
index 8e4f717c2..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallbackI.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetCursorPosCallback SetCursorPosCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * double xpos,
- * double ypos
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWcursorposfun")
-public interface GLFWCursorPosCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pdd)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgDouble(args),
- dcbArgDouble(args)
- );
- }
-
- /**
- * Will be called when the cursor is moved.
- *
- * The callback function receives the cursor position, measured in screen coordinates but relative to the top-left corner of the window client area. On
- * platforms that provide it, the full sub-pixel cursor position is passed on.
- *
- * @param window the window that received the event
- * @param xpos the new cursor x-coordinate, relative to the left edge of the content area
- * @param ypos the new cursor y-coordinate, relative to the top edge of the content area
- */
- void invoke(@NativeType("GLFWwindow *") long window, double xpos, double ypos);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallback.java
deleted file mode 100644
index eaf831c2d..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallback.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetDropCallback SetDropCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int count,
- * char const **names
- * )
- *
- * @since version 3.1
- */
-public abstract class GLFWDropCallback extends Callback implements GLFWDropCallbackI {
-
- /**
- * Creates a {@code GLFWDropCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWDropCallback}
- */
- public static GLFWDropCallback create(long functionPointer) {
- GLFWDropCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWDropCallback
- ? (GLFWDropCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWDropCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWDropCallback} instance that delegates to the specified {@code GLFWDropCallbackI} instance. */
- public static GLFWDropCallback create(GLFWDropCallbackI instance) {
- return instance instanceof GLFWDropCallback
- ? (GLFWDropCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWDropCallback() {
- super(SIGNATURE);
- }
-
- GLFWDropCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /**
- * Decodes the specified {@link GLFWDropCallback} arguments to a String.
- *
- * This method may only be used inside a {@code GLFWDropCallback} invocation.
- *
- * @param names pointer to the array of UTF-8 encoded path names of the dropped files
- * @param index the index to decode
- *
- * @return the name at the specified index as a String
- */
- public static String getName(long names, int index) {
- return memUTF8(memGetAddress(names + Pointer.POINTER_SIZE * index));
- }
-
- /** See {@link GLFW#glfwSetDropCallback SetDropCallback}. */
- public GLFWDropCallback set(long window) {
- glfwSetDropCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWDropCallback {
-
- private final GLFWDropCallbackI delegate;
-
- Container(long functionPointer, GLFWDropCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int count, long names) {
- delegate.invoke(window, count, names);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallbackI.java
deleted file mode 100644
index 7528629e1..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallbackI.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetDropCallback SetDropCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int count,
- * char const **names
- * )
- *
- * @since version 3.1
- */
-@FunctionalInterface
-@NativeType("GLFWdropfun")
-public interface GLFWDropCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pip)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgPointer(args)
- );
- }
-
- /**
- * Will be called when one or more dragged files are dropped on the window.
- *
- * @param window the window that received the event
- * @param count the number of dropped files
- * @param names pointer to the array of UTF-8 encoded path names of the dropped files
- */
- void invoke(@NativeType("GLFWwindow *") long window, int count, @NativeType("char const **") long names);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallback.java
deleted file mode 100644
index 1c52cca51..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallback.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import java.io.PrintStream;
-import java.util.Map;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetErrorCallback SetErrorCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * int error,
- * char *description
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWErrorCallback extends Callback implements GLFWErrorCallbackI {
-
- /**
- * Creates a {@code GLFWErrorCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWErrorCallback}
- */
- public static GLFWErrorCallback create(long functionPointer) {
- GLFWErrorCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWErrorCallback
- ? (GLFWErrorCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWErrorCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWErrorCallback} instance that delegates to the specified {@code GLFWErrorCallbackI} instance. */
- public static GLFWErrorCallback create(GLFWErrorCallbackI instance) {
- return instance instanceof GLFWErrorCallback
- ? (GLFWErrorCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWErrorCallback() {
- super(SIGNATURE);
- }
-
- GLFWErrorCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /**
- * Converts the specified {@link GLFWErrorCallback} argument to a String.
- *
- * This method may only be used inside a GLFWErrorCallback invocation.
- *
- * @param description pointer to the UTF-8 encoded description string
- *
- * @return the description as a String
- */
- public static String getDescription(long description) {
- try {
- return memUTF8(description);
- } catch (NullPointerException e) {
- return "null (unknown " + Long.toHexString(description) + ")";
- }
- }
-
- /**
- * Returns a {@link GLFWErrorCallback} instance that prints the error to the {@link APIUtil#DEBUG_STREAM}.
- *
- * @return the GLFWerrorCallback
- */
- public static GLFWErrorCallback createPrint() {
- return createPrint(APIUtil.DEBUG_STREAM);
- }
-
- /**
- * Returns a {@link GLFWErrorCallback} instance that prints the error in the specified {@link PrintStream}.
- *
- * @param stream the PrintStream to use
- *
- * @return the GLFWerrorCallback
- */
- public static GLFWErrorCallback createPrint(PrintStream stream) {
- return new GLFWErrorCallback() {
- private Map ERROR_CODES = APIUtil.apiClassTokens((field, value) -> 0x10000 < value && value < 0x20000, null, GLFW.class);
-
- @Override
- public void invoke(int error, long description) {
- String msg = getDescription(description);
-
- stream.printf("[LWJGL] %s error\n", ERROR_CODES.get(error));
- stream.println("\tDescription : " + msg);
- stream.println("\tStacktrace :");
- StackTraceElement[] stack = Thread.currentThread().getStackTrace();
- for ( int i = 4; i < stack.length; i++ ) {
- stream.print("\t\t");
- stream.println(stack[i].toString());
- }
- }
- };
- }
-
- /**
- * Returns a {@link GLFWErrorCallback} instance that throws an {@link IllegalStateException} when an error occurs.
- *
- * @return the GLFWerrorCallback
- */
- public static GLFWErrorCallback createThrow() {
- return new GLFWErrorCallback() {
- @Override
- public void invoke(int error, long description) {
- throw new IllegalStateException(String.format("GLFW error [0x%X]: %s", error, getDescription(description)));
- }
- };
- }
-
- /** See {@link GLFW#glfwSetErrorCallback SetErrorCallback}. */
- public GLFWErrorCallback set() {
- glfwSetErrorCallback(this);
- return this;
- }
-
- private static final class Container extends GLFWErrorCallback {
-
- private final GLFWErrorCallbackI delegate;
-
- Container(long functionPointer, GLFWErrorCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(int error, long description) {
- delegate.invoke(error, description);
- }
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallbackI.java
deleted file mode 100644
index 62841da17..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetErrorCallback SetErrorCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * int error,
- * char *description
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWerrorfun")
-public interface GLFWErrorCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(ip)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgInt(args),
- dcbArgPointer(args)
- );
- }
-
- /**
- * Will be called with an error code and a human-readable description when a GLFW error occurs.
- *
- * @param error the error code
- * @param description a pointer to a UTF-8 encoded string describing the error
- */
- void invoke(int error, @NativeType("char *") long description);
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallback.java
deleted file mode 100644
index 2e66f76f2..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetFramebufferSizeCallback SetFramebufferSizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int width,
- * int height
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWFramebufferSizeCallback extends Callback implements GLFWFramebufferSizeCallbackI {
-
- /**
- * Creates a {@code GLFWFramebufferSizeCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWFramebufferSizeCallback}
- */
- public static GLFWFramebufferSizeCallback create(long functionPointer) {
- GLFWFramebufferSizeCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWFramebufferSizeCallback
- ? (GLFWFramebufferSizeCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWFramebufferSizeCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWFramebufferSizeCallback} instance that delegates to the specified {@code GLFWFramebufferSizeCallbackI} instance. */
- public static GLFWFramebufferSizeCallback create(GLFWFramebufferSizeCallbackI instance) {
- return instance instanceof GLFWFramebufferSizeCallback
- ? (GLFWFramebufferSizeCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWFramebufferSizeCallback() {
- super(SIGNATURE);
- }
-
- GLFWFramebufferSizeCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetFramebufferSizeCallback SetFramebufferSizeCallback}. */
- public GLFWFramebufferSizeCallback set(long window) {
- glfwSetFramebufferSizeCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWFramebufferSizeCallback {
-
- private final GLFWFramebufferSizeCallbackI delegate;
-
- Container(long functionPointer, GLFWFramebufferSizeCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int width, int height) {
- delegate.invoke(window, width, height);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallbackI.java
deleted file mode 100644
index 098e2b2c5..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallbackI.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetFramebufferSizeCallback SetFramebufferSizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int width,
- * int height
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWframebuffersizefun")
-public interface GLFWFramebufferSizeCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when the framebuffer of the specified window is resized.
- *
- * @param window the window whose framebuffer was resized
- * @param width the new width, in pixels, of the framebuffer
- * @param height the new height, in pixels, of the framebuffer
- */
- void invoke(@NativeType("GLFWwindow *") long window, int width, int height);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGamepadState.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGamepadState.java
deleted file mode 100644
index 17792e416..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGamepadState.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.*;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.MemoryUtil.*;
-import static org.lwjgl.system.MemoryStack.*;
-
-/**
- * Describes the input state of a gamepad.
- *
- * Member documentation
- *
- *
- * - {@code buttons[15]} – the states of each gamepad button, {@link GLFW#GLFW_PRESS PRESS} or {@link GLFW#GLFW_RELEASE RELEASE}
- * - {@code axes[6]} – the states of each gamepad axis, in the range -1.0 to 1.0 inclusive
- *
- *
- * Layout
- *
- *
- * struct GLFWgamepadstate {
- * unsigned char buttons[15];
- * float axes[6];
- * }
- *
- * @since version 3.3
- */
-@NativeType("struct GLFWgamepadstate")
-public class GLFWGamepadState extends Struct implements NativeResource {
-
- /** The struct size in bytes. */
- public static final int SIZEOF;
-
- /** The struct alignment in bytes. */
- public static final int ALIGNOF;
-
- /** The struct member offsets. */
- public static final int
- BUTTONS,
- AXES;
-
- static {
- Layout layout = __struct(
- __array(1, 15),
- __array(4, 6)
- );
-
- SIZEOF = layout.getSize();
- ALIGNOF = layout.getAlignment();
-
- BUTTONS = layout.offsetof(0);
- AXES = layout.offsetof(1);
- }
-
- /**
- * Creates a {@code GLFWGamepadState} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
- * visible to the struct instance and vice versa.
- *
- * The created instance holds a strong reference to the container object.
- */
- public GLFWGamepadState(ByteBuffer container) {
- super(memAddress(container), __checkContainer(container, SIZEOF));
- }
-
- @Override
- public int sizeof() { return SIZEOF; }
-
- /** Returns a {@link ByteBuffer} view of the {@code buttons} field. */
- @NativeType("unsigned char[15]")
- public ByteBuffer buttons() { return nbuttons(address()); }
- /** Returns the value at the specified index of the {@code buttons} field. */
- @NativeType("unsigned char")
- public byte buttons(int index) { return nbuttons(address(), index); }
- /** Returns a {@link FloatBuffer} view of the {@code axes} field. */
- @NativeType("float[6]")
- public FloatBuffer axes() { return naxes(address()); }
- /** Returns the value at the specified index of the {@code axes} field. */
- public float axes(int index) { return naxes(address(), index); }
-
- /** Copies the specified {@link ByteBuffer} to the {@code buttons} field. */
- public GLFWGamepadState buttons(@NativeType("unsigned char[15]") ByteBuffer value) { nbuttons(address(), value); return this; }
- /** Sets the specified value at the specified index of the {@code buttons} field. */
- public GLFWGamepadState buttons(int index, @NativeType("unsigned char") byte value) { nbuttons(address(), index, value); return this; }
- /** Copies the specified {@link FloatBuffer} to the {@code axes} field. */
- public GLFWGamepadState axes(@NativeType("float[6]") FloatBuffer value) { naxes(address(), value); return this; }
- /** Sets the specified value at the specified index of the {@code axes} field. */
- public GLFWGamepadState axes(int index, float value) { naxes(address(), index, value); return this; }
-
- /** Initializes this struct with the specified values. */
- public GLFWGamepadState set(
- ByteBuffer buttons,
- FloatBuffer axes
- ) {
- buttons(buttons);
- axes(axes);
-
- return this;
- }
-
- /**
- * Copies the specified struct data to this struct.
- *
- * @param src the source struct
- *
- * @return this struct
- */
- public GLFWGamepadState set(GLFWGamepadState src) {
- memCopy(src.address(), address(), SIZEOF);
- return this;
- }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWGamepadState} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static GLFWGamepadState malloc() {
- return wrap(GLFWGamepadState.class, nmemAllocChecked(SIZEOF));
- }
-
- /** Returns a new {@code GLFWGamepadState} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static GLFWGamepadState calloc() {
- return wrap(GLFWGamepadState.class, nmemCallocChecked(1, SIZEOF));
- }
-
- /** Returns a new {@code GLFWGamepadState} instance allocated with {@link BufferUtils}. */
- public static GLFWGamepadState create() {
- ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(GLFWGamepadState.class, memAddress(container), container);
- }
-
- /** Returns a new {@code GLFWGamepadState} instance for the specified memory address. */
- public static GLFWGamepadState create(long address) {
- return wrap(GLFWGamepadState.class, address);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWGamepadState createSafe(long address) {
- return address == NULL ? null : wrap(GLFWGamepadState.class, address);
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer malloc(int capacity) {
- return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer calloc(int capacity) {
- return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated with {@link BufferUtils}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer create(int capacity) {
- ByteBuffer container = __create(capacity, SIZEOF);
- return wrap(Buffer.class, memAddress(container), capacity, container);
- }
-
- /**
- * Create a {@link GLFWGamepadState.Buffer} instance at the specified memory.
- *
- * @param address the memory address
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer create(long address, int capacity) {
- return wrap(Buffer.class, address, capacity);
- }
-
- /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWGamepadState.Buffer createSafe(long address, int capacity) {
- return address == NULL ? null : wrap(Buffer.class, address, capacity);
- }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWGamepadState} instance allocated on the thread-local {@link MemoryStack}. */
- public static GLFWGamepadState mallocStack() {
- return mallocStack(stackGet());
- }
-
- /** Returns a new {@code GLFWGamepadState} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero. */
- public static GLFWGamepadState callocStack() {
- return callocStack(stackGet());
- }
-
- /**
- * Returns a new {@code GLFWGamepadState} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWGamepadState mallocStack(MemoryStack stack) {
- return wrap(GLFWGamepadState.class, stack.nmalloc(ALIGNOF, SIZEOF));
- }
-
- /**
- * Returns a new {@code GLFWGamepadState} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWGamepadState callocStack(MemoryStack stack) {
- return wrap(GLFWGamepadState.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated on the thread-local {@link MemoryStack}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer mallocStack(int capacity) {
- return mallocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer callocStack(int capacity) {
- return callocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer mallocStack(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGamepadState.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWGamepadState.Buffer callocStack(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
- }
-
- // -----------------------------------
-
- /** Unsafe version of {@link #buttons}. */
- public static ByteBuffer nbuttons(long struct) { return memByteBuffer(struct + GLFWGamepadState.BUTTONS, 15); }
- /** Unsafe version of {@link #buttons(int) buttons}. */
- public static byte nbuttons(long struct, int index) {
- return UNSAFE.getByte(null, struct + GLFWGamepadState.BUTTONS + check(index, 15) * 1);
- }
- /** Unsafe version of {@link #axes}. */
- public static FloatBuffer naxes(long struct) { return memFloatBuffer(struct + GLFWGamepadState.AXES, 6); }
- /** Unsafe version of {@link #axes(int) axes}. */
- public static float naxes(long struct, int index) {
- return UNSAFE.getFloat(null, struct + GLFWGamepadState.AXES + check(index, 6) * 4);
- }
-
- /** Unsafe version of {@link #buttons(ByteBuffer) buttons}. */
- public static void nbuttons(long struct, ByteBuffer value) {
- if (CHECKS) { checkGT(value, 15); }
- memCopy(memAddress(value), struct + GLFWGamepadState.BUTTONS, value.remaining() * 1);
- }
- /** Unsafe version of {@link #buttons(int, byte) buttons}. */
- public static void nbuttons(long struct, int index, byte value) {
- UNSAFE.putByte(null, struct + GLFWGamepadState.BUTTONS + check(index, 15) * 1, value);
- }
- /** Unsafe version of {@link #axes(FloatBuffer) axes}. */
- public static void naxes(long struct, FloatBuffer value) {
- if (CHECKS) { checkGT(value, 6); }
- memCopy(memAddress(value), struct + GLFWGamepadState.AXES, value.remaining() * 4);
- }
- /** Unsafe version of {@link #axes(int, float) axes}. */
- public static void naxes(long struct, int index, float value) {
- UNSAFE.putFloat(null, struct + GLFWGamepadState.AXES + check(index, 6) * 4, value);
- }
-
- // -----------------------------------
-
- /** An array of {@link GLFWGamepadState} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
-
- private static final GLFWGamepadState ELEMENT_FACTORY = GLFWGamepadState.create(-1L);
-
- /**
- * Creates a new {@code GLFWGamepadState.Buffer} instance backed by the specified container.
- *
- * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
- * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link GLFWGamepadState#SIZEOF}, and its mark will be undefined.
- *
- * The created buffer instance holds a strong reference to the container object.
- */
- public Buffer(ByteBuffer container) {
- super(container, container.remaining() / SIZEOF);
- }
-
- public Buffer(long address, int cap) {
- super(address, null, -1, 0, cap, cap);
- }
-
- Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
- super(address, container, mark, pos, lim, cap);
- }
-
- @Override
- protected Buffer self() {
- return this;
- }
-
- @Override
- protected GLFWGamepadState getElementFactory() {
- return ELEMENT_FACTORY;
- }
-
- /** Returns a {@link ByteBuffer} view of the {@code buttons} field. */
- @NativeType("unsigned char[15]")
- public ByteBuffer buttons() { return GLFWGamepadState.nbuttons(address()); }
- /** Returns the value at the specified index of the {@code buttons} field. */
- @NativeType("unsigned char")
- public byte buttons(int index) { return GLFWGamepadState.nbuttons(address(), index); }
- /** Returns a {@link FloatBuffer} view of the {@code axes} field. */
- @NativeType("float[6]")
- public FloatBuffer axes() { return GLFWGamepadState.naxes(address()); }
- /** Returns the value at the specified index of the {@code axes} field. */
- public float axes(int index) { return GLFWGamepadState.naxes(address(), index); }
-
- /** Copies the specified {@link ByteBuffer} to the {@code buttons} field. */
- public GLFWGamepadState.Buffer buttons(@NativeType("unsigned char[15]") ByteBuffer value) { GLFWGamepadState.nbuttons(address(), value); return this; }
- /** Sets the specified value at the specified index of the {@code buttons} field. */
- public GLFWGamepadState.Buffer buttons(int index, @NativeType("unsigned char") byte value) { GLFWGamepadState.nbuttons(address(), index, value); return this; }
- /** Copies the specified {@link FloatBuffer} to the {@code axes} field. */
- public GLFWGamepadState.Buffer axes(@NativeType("float[6]") FloatBuffer value) { GLFWGamepadState.naxes(address(), value); return this; }
- /** Sets the specified value at the specified index of the {@code axes} field. */
- public GLFWGamepadState.Buffer axes(int index, float value) { GLFWGamepadState.naxes(address(), index, value); return this; }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGammaRamp.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGammaRamp.java
deleted file mode 100644
index b0c051bfd..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWGammaRamp.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.*;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.MemoryUtil.*;
-import static org.lwjgl.system.MemoryStack.*;
-
-/**
- * Describes the gamma ramp for a monitor.
- *
- * Member documentation
- *
- *
- * - {@code red} – an array of values describing the response of the red channel
- * - {@code green} – an array of values describing the response of the green channel
- * - {@code blue} – an array of values describing the response of the blue channel
- * - {@code size} – the number of elements in each array
- *
- *
- * Layout
- *
- *
- * struct GLFWgammaramp {
- * unsigned short * red;
- * unsigned short * green;
- * unsigned short * blue;
- * unsigned int size;
- * }
- *
- * @since version 3.0
- */
-@NativeType("struct GLFWgammaramp")
-public class GLFWGammaRamp extends Struct implements NativeResource {
-
- /** The struct size in bytes. */
- public static final int SIZEOF;
-
- /** The struct alignment in bytes. */
- public static final int ALIGNOF;
-
- /** The struct member offsets. */
- public static final int
- RED,
- GREEN,
- BLUE,
- SIZE;
-
- static {
- Layout layout = __struct(
- __member(POINTER_SIZE),
- __member(POINTER_SIZE),
- __member(POINTER_SIZE),
- __member(4)
- );
-
- SIZEOF = layout.getSize();
- ALIGNOF = layout.getAlignment();
-
- RED = layout.offsetof(0);
- GREEN = layout.offsetof(1);
- BLUE = layout.offsetof(2);
- SIZE = layout.offsetof(3);
- }
-
- /**
- * Creates a {@code GLFWGammaRamp} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
- * visible to the struct instance and vice versa.
- *
- * The created instance holds a strong reference to the container object.
- */
- public GLFWGammaRamp(ByteBuffer container) {
- super(memAddress(container), __checkContainer(container, SIZEOF));
- }
-
- @Override
- public int sizeof() { return SIZEOF; }
-
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code red} field. */
- @NativeType("unsigned short *")
- public ShortBuffer red() { return nred(address()); }
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code green} field. */
- @NativeType("unsigned short *")
- public ShortBuffer green() { return ngreen(address()); }
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code blue} field. */
- @NativeType("unsigned short *")
- public ShortBuffer blue() { return nblue(address()); }
- /** Returns the value of the {@code size} field. */
- @NativeType("unsigned int")
- public int size() { return nsize(address()); }
-
- /** Sets the address of the specified {@link ShortBuffer} to the {@code red} field. */
- public GLFWGammaRamp red(@NativeType("unsigned short *") ShortBuffer value) { nred(address(), value); return this; }
- /** Sets the address of the specified {@link ShortBuffer} to the {@code green} field. */
- public GLFWGammaRamp green(@NativeType("unsigned short *") ShortBuffer value) { ngreen(address(), value); return this; }
- /** Sets the address of the specified {@link ShortBuffer} to the {@code blue} field. */
- public GLFWGammaRamp blue(@NativeType("unsigned short *") ShortBuffer value) { nblue(address(), value); return this; }
- /** Sets the specified value to the {@code size} field. */
- public GLFWGammaRamp size(@NativeType("unsigned int") int value) { nsize(address(), value); return this; }
-
- /** Initializes this struct with the specified values. */
- public GLFWGammaRamp set(
- ShortBuffer red,
- ShortBuffer green,
- ShortBuffer blue,
- int size
- ) {
- red(red);
- green(green);
- blue(blue);
- size(size);
-
- return this;
- }
-
- /**
- * Copies the specified struct data to this struct.
- *
- * @param src the source struct
- *
- * @return this struct
- */
- public GLFWGammaRamp set(GLFWGammaRamp src) {
- memCopy(src.address(), address(), SIZEOF);
- return this;
- }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWGammaRamp} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static GLFWGammaRamp malloc() {
- return wrap(GLFWGammaRamp.class, nmemAllocChecked(SIZEOF));
- }
-
- /** Returns a new {@code GLFWGammaRamp} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static GLFWGammaRamp calloc() {
- return wrap(GLFWGammaRamp.class, nmemCallocChecked(1, SIZEOF));
- }
-
- /** Returns a new {@code GLFWGammaRamp} instance allocated with {@link BufferUtils}. */
- public static GLFWGammaRamp create() {
- ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(GLFWGammaRamp.class, memAddress(container), container);
- }
-
- /** Returns a new {@code GLFWGammaRamp} instance for the specified memory address. */
- public static GLFWGammaRamp create(long address) {
- return wrap(GLFWGammaRamp.class, address);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWGammaRamp createSafe(long address) {
- return address == NULL ? null : wrap(GLFWGammaRamp.class, address);
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer malloc(int capacity) {
- return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer calloc(int capacity) {
- return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated with {@link BufferUtils}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer create(int capacity) {
- ByteBuffer container = __create(capacity, SIZEOF);
- return wrap(Buffer.class, memAddress(container), capacity, container);
- }
-
- /**
- * Create a {@link GLFWGammaRamp.Buffer} instance at the specified memory.
- *
- * @param address the memory address
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer create(long address, int capacity) {
- return wrap(Buffer.class, address, capacity);
- }
-
- /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWGammaRamp.Buffer createSafe(long address, int capacity) {
- return address == NULL ? null : wrap(Buffer.class, address, capacity);
- }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWGammaRamp} instance allocated on the thread-local {@link MemoryStack}. */
- public static GLFWGammaRamp mallocStack() {
- return mallocStack(stackGet());
- }
-
- /** Returns a new {@code GLFWGammaRamp} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero. */
- public static GLFWGammaRamp callocStack() {
- return callocStack(stackGet());
- }
-
- /**
- * Returns a new {@code GLFWGammaRamp} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWGammaRamp mallocStack(MemoryStack stack) {
- return wrap(GLFWGammaRamp.class, stack.nmalloc(ALIGNOF, SIZEOF));
- }
-
- /**
- * Returns a new {@code GLFWGammaRamp} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWGammaRamp callocStack(MemoryStack stack) {
- return wrap(GLFWGammaRamp.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated on the thread-local {@link MemoryStack}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer mallocStack(int capacity) {
- return mallocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer callocStack(int capacity) {
- return callocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer mallocStack(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWGammaRamp.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWGammaRamp.Buffer callocStack(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
- }
-
- // -----------------------------------
-
- /** Unsafe version of {@link #red() red}. */
- public static ShortBuffer nred(long struct) { return memShortBuffer(memGetAddress(struct + GLFWGammaRamp.RED), nsize(struct)); }
- /** Unsafe version of {@link #green() green}. */
- public static ShortBuffer ngreen(long struct) { return memShortBuffer(memGetAddress(struct + GLFWGammaRamp.GREEN), nsize(struct)); }
- /** Unsafe version of {@link #blue() blue}. */
- public static ShortBuffer nblue(long struct) { return memShortBuffer(memGetAddress(struct + GLFWGammaRamp.BLUE), nsize(struct)); }
- /** Unsafe version of {@link #size}. */
- public static int nsize(long struct) { return UNSAFE.getInt(null, struct + GLFWGammaRamp.SIZE); }
-
- /** Unsafe version of {@link #red(ShortBuffer) red}. */
- public static void nred(long struct, ShortBuffer value) { memPutAddress(struct + GLFWGammaRamp.RED, memAddress(value)); }
- /** Unsafe version of {@link #green(ShortBuffer) green}. */
- public static void ngreen(long struct, ShortBuffer value) { memPutAddress(struct + GLFWGammaRamp.GREEN, memAddress(value)); }
- /** Unsafe version of {@link #blue(ShortBuffer) blue}. */
- public static void nblue(long struct, ShortBuffer value) { memPutAddress(struct + GLFWGammaRamp.BLUE, memAddress(value)); }
- /** Sets the specified value to the {@code size} field of the specified {@code struct}. */
- public static void nsize(long struct, int value) { UNSAFE.putInt(null, struct + GLFWGammaRamp.SIZE, value); }
-
- /**
- * Validates pointer members that should not be {@code NULL}.
- *
- * @param struct the struct to validate
- */
- public static void validate(long struct) {
- check(memGetAddress(struct + GLFWGammaRamp.RED));
- check(memGetAddress(struct + GLFWGammaRamp.GREEN));
- check(memGetAddress(struct + GLFWGammaRamp.BLUE));
- }
-
- /**
- * Calls {@link #validate(long)} for each struct contained in the specified struct array.
- *
- * @param array the struct array to validate
- * @param count the number of structs in {@code array}
- */
- public static void validate(long array, int count) {
- for (int i = 0; i < count; i++) {
- validate(array + Integer.toUnsignedLong(i) * SIZEOF);
- }
- }
-
- // -----------------------------------
-
- /** An array of {@link GLFWGammaRamp} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
-
- private static final GLFWGammaRamp ELEMENT_FACTORY = GLFWGammaRamp.create(-1L);
-
- /**
- * Creates a new {@code GLFWGammaRamp.Buffer} instance backed by the specified container.
- *
- * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
- * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link GLFWGammaRamp#SIZEOF}, and its mark will be undefined.
- *
- * The created buffer instance holds a strong reference to the container object.
- */
- public Buffer(ByteBuffer container) {
- super(container, container.remaining() / SIZEOF);
- }
-
- public Buffer(long address, int cap) {
- super(address, null, -1, 0, cap, cap);
- }
-
- Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
- super(address, container, mark, pos, lim, cap);
- }
-
- @Override
- protected Buffer self() {
- return this;
- }
-
- @Override
- protected GLFWGammaRamp getElementFactory() {
- return ELEMENT_FACTORY;
- }
-
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code red} field. */
- @NativeType("unsigned short *")
- public ShortBuffer red() { return GLFWGammaRamp.nred(address()); }
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code green} field. */
- @NativeType("unsigned short *")
- public ShortBuffer green() { return GLFWGammaRamp.ngreen(address()); }
- /** Returns a {@link ShortBuffer} view of the data pointed to by the {@code blue} field. */
- @NativeType("unsigned short *")
- public ShortBuffer blue() { return GLFWGammaRamp.nblue(address()); }
- /** Returns the value of the {@code size} field. */
- @NativeType("unsigned int")
- public int size() { return GLFWGammaRamp.nsize(address()); }
-
- /** Sets the address of the specified {@link ShortBuffer} to the {@code red} field. */
- public GLFWGammaRamp.Buffer red(@NativeType("unsigned short *") ShortBuffer value) { GLFWGammaRamp.nred(address(), value); return this; }
- /** Sets the address of the specified {@link ShortBuffer} to the {@code green} field. */
- public GLFWGammaRamp.Buffer green(@NativeType("unsigned short *") ShortBuffer value) { GLFWGammaRamp.ngreen(address(), value); return this; }
- /** Sets the address of the specified {@link ShortBuffer} to the {@code blue} field. */
- public GLFWGammaRamp.Buffer blue(@NativeType("unsigned short *") ShortBuffer value) { GLFWGammaRamp.nblue(address(), value); return this; }
- /** Sets the specified value to the {@code size} field. */
- public GLFWGammaRamp.Buffer size(@NativeType("unsigned int") int value) { GLFWGammaRamp.nsize(address(), value); return this; }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWImage.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWImage.java
deleted file mode 100644
index f2e4cf948..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWImage.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.*;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.MemoryUtil.*;
-import static org.lwjgl.system.MemoryStack.*;
-
-/**
- * Image data.
- *
- * This describes a single 2D image. See the documentation for each related function to see what the expected pixel format is.
- *
- * Member documentation
- *
- *
- * - {@code width} – the width, in pixels, of this image
- * - {@code height} – the height, in pixels, of this image
- * - {@code pixels} – the pixel data of this image, arranged left-to-right, top-to-bottom
- *
- *
- * Layout
- *
- *
- * struct GLFWimage {
- * int width;
- * int height;
- * unsigned char * pixels;
- * }
- *
- * @since version 2.1
- */
-@NativeType("struct GLFWimage")
-public class GLFWImage extends Struct implements NativeResource {
-
- /** The struct size in bytes. */
- public static final int SIZEOF;
-
- /** The struct alignment in bytes. */
- public static final int ALIGNOF;
-
- /** The struct member offsets. */
- public static final int
- WIDTH,
- HEIGHT,
- PIXELS;
-
- static {
- Layout layout = __struct(
- __member(4),
- __member(4),
- __member(POINTER_SIZE)
- );
-
- SIZEOF = layout.getSize();
- ALIGNOF = layout.getAlignment();
-
- WIDTH = layout.offsetof(0);
- HEIGHT = layout.offsetof(1);
- PIXELS = layout.offsetof(2);
- }
-
- /**
- * Creates a {@code GLFWImage} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
- * visible to the struct instance and vice versa.
- *
- * The created instance holds a strong reference to the container object.
- */
- public GLFWImage(ByteBuffer container) {
- super(memAddress(container), __checkContainer(container, SIZEOF));
- }
-
- @Override
- public int sizeof() { return SIZEOF; }
-
- /** Returns the value of the {@code width} field. */
- public int width() { return nwidth(address()); }
- /** Returns the value of the {@code height} field. */
- public int height() { return nheight(address()); }
- /**
- * Returns a {@link ByteBuffer} view of the data pointed to by the {@code pixels} field.
- *
- * @param capacity the number of elements in the returned buffer
- */
- @NativeType("unsigned char *")
- public ByteBuffer pixels(int capacity) { return npixels(address(), capacity); }
-
- /** Sets the specified value to the {@code width} field. */
- public GLFWImage width(int value) { nwidth(address(), value); return this; }
- /** Sets the specified value to the {@code height} field. */
- public GLFWImage height(int value) { nheight(address(), value); return this; }
- /** Sets the address of the specified {@link ByteBuffer} to the {@code pixels} field. */
- public GLFWImage pixels(@NativeType("unsigned char *") ByteBuffer value) { npixels(address(), value); return this; }
-
- /** Initializes this struct with the specified values. */
- public GLFWImage set(
- int width,
- int height,
- ByteBuffer pixels
- ) {
- width(width);
- height(height);
- pixels(pixels);
-
- return this;
- }
-
- /**
- * Copies the specified struct data to this struct.
- *
- * @param src the source struct
- *
- * @return this struct
- */
- public GLFWImage set(GLFWImage src) {
- memCopy(src.address(), address(), SIZEOF);
- return this;
- }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWImage} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static GLFWImage malloc() {
- return wrap(GLFWImage.class, nmemAllocChecked(SIZEOF));
- }
-
- /** Returns a new {@code GLFWImage} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static GLFWImage calloc() {
- return wrap(GLFWImage.class, nmemCallocChecked(1, SIZEOF));
- }
-
- /** Returns a new {@code GLFWImage} instance allocated with {@link BufferUtils}. */
- public static GLFWImage create() {
- ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(GLFWImage.class, memAddress(container), container);
- }
-
- /** Returns a new {@code GLFWImage} instance for the specified memory address. */
- public static GLFWImage create(long address) {
- return wrap(GLFWImage.class, address);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWImage createSafe(long address) {
- return address == NULL ? null : wrap(GLFWImage.class, address);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer malloc(int capacity) {
- return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer calloc(int capacity) {
- return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated with {@link BufferUtils}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer create(int capacity) {
- ByteBuffer container = __create(capacity, SIZEOF);
- return wrap(Buffer.class, memAddress(container), capacity, container);
- }
-
- /**
- * Create a {@link GLFWImage.Buffer} instance at the specified memory.
- *
- * @param address the memory address
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer create(long address, int capacity) {
- return wrap(Buffer.class, address, capacity);
- }
-
- /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWImage.Buffer createSafe(long address, int capacity) {
- return address == NULL ? null : wrap(Buffer.class, address, capacity);
- }
- /**
- * Returns a new {@code GLFWImage} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWImage malloc(MemoryStack stack) {
- return wrap(GLFWImage.class, stack.nmalloc(ALIGNOF, SIZEOF));
- }
-
- /**
- * Returns a new {@code GLFWImage} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWImage calloc(MemoryStack stack) {
- return wrap(GLFWImage.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer malloc(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer calloc(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
- }
-
- // mallocStack() and callocStack() will be removed in 3.4.0. Keeping them here for compatibility.
-
- /** Returns a new {@code GLFWImage} instance allocated on the thread-local {@link MemoryStack}. */
- public static GLFWImage mallocStack() {
- return mallocStack(stackGet());
- }
-
- /** Returns a new {@code GLFWImage} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero. */
- public static GLFWImage callocStack() {
- return callocStack(stackGet());
- }
-
- /**
- * Returns a new {@code GLFWImage} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWImage mallocStack(MemoryStack stack) {
- return malloc(stack);
- }
-
- /**
- * Returns a new {@code GLFWImage} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- */
- public static GLFWImage callocStack(MemoryStack stack) {
- return calloc(stack);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the thread-local {@link MemoryStack}.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer mallocStack(int capacity) {
- return mallocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the thread-local {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer callocStack(int capacity) {
- return callocStack(capacity, stackGet());
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer mallocStack(int capacity, MemoryStack stack) {
- return malloc(capacity, stack);
- }
-
- /**
- * Returns a new {@link GLFWImage.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static GLFWImage.Buffer callocStack(int capacity, MemoryStack stack) {
- return calloc(capacity, stack);
- }
-
- // -----------------------------------
-
- /** Unsafe version of {@link #width}. */
- public static int nwidth(long struct) { return UNSAFE.getInt(null, struct + GLFWImage.WIDTH); }
- /** Unsafe version of {@link #height}. */
- public static int nheight(long struct) { return UNSAFE.getInt(null, struct + GLFWImage.HEIGHT); }
- /** Unsafe version of {@link #pixels(int) pixels}. */
- public static ByteBuffer npixels(long struct, int capacity) { return memByteBuffer(memGetAddress(struct + GLFWImage.PIXELS), capacity); }
-
- /** Unsafe version of {@link #width(int) width}. */
- public static void nwidth(long struct, int value) { UNSAFE.putInt(null, struct + GLFWImage.WIDTH, value); }
- /** Unsafe version of {@link #height(int) height}. */
- public static void nheight(long struct, int value) { UNSAFE.putInt(null, struct + GLFWImage.HEIGHT, value); }
- /** Unsafe version of {@link #pixels(ByteBuffer) pixels}. */
- public static void npixels(long struct, ByteBuffer value) { memPutAddress(struct + GLFWImage.PIXELS, memAddress(value)); }
-
- /**
- * Validates pointer members that should not be {@code NULL}.
- *
- * @param struct the struct to validate
- */
- public static void validate(long struct) {
- check(memGetAddress(struct + GLFWImage.PIXELS));
- }
-
- /**
- * Calls {@link #validate(long)} for each struct contained in the specified struct array.
- *
- * @param array the struct array to validate
- * @param count the number of structs in {@code array}
- */
- public static void validate(long array, int count) {
- for (int i = 0; i < count; i++) {
- validate(array + Integer.toUnsignedLong(i) * SIZEOF);
- }
- }
-
- // -----------------------------------
-
- /** An array of {@link GLFWImage} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
-
- private static final GLFWImage ELEMENT_FACTORY = GLFWImage.create(-1L);
-
- /**
- * Creates a new {@code GLFWImage.Buffer} instance backed by the specified container.
- *
- * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
- * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link GLFWImage#SIZEOF}, and its mark will be undefined.
- *
- * The created buffer instance holds a strong reference to the container object.
- */
- public Buffer(ByteBuffer container) {
- super(container, container.remaining() / SIZEOF);
- }
-
- public Buffer(long address, int cap) {
- super(address, null, -1, 0, cap, cap);
- }
-
- Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
- super(address, container, mark, pos, lim, cap);
- }
-
- @Override
- protected Buffer self() {
- return this;
- }
-
- @Override
- protected GLFWImage getElementFactory() {
- return ELEMENT_FACTORY;
- }
-
- /** Returns the value of the {@code width} field. */
- public int width() { return GLFWImage.nwidth(address()); }
- /** Returns the value of the {@code height} field. */
- public int height() { return GLFWImage.nheight(address()); }
- /**
- * Returns a {@link ByteBuffer} view of the data pointed to by the {@code pixels} field.
- *
- * @param capacity the number of elements in the returned buffer
- */
- @NativeType("unsigned char *")
- public ByteBuffer pixels(int capacity) { return GLFWImage.npixels(address(), capacity); }
-
- /** Sets the specified value to the {@code width} field. */
- public GLFWImage.Buffer width(int value) { GLFWImage.nwidth(address(), value); return this; }
- /** Sets the specified value to the {@code height} field. */
- public GLFWImage.Buffer height(int value) { GLFWImage.nheight(address(), value); return this; }
- /** Sets the address of the specified {@link ByteBuffer} to the {@code pixels} field. */
- public GLFWImage.Buffer pixels(@NativeType("unsigned char *") ByteBuffer value) { GLFWImage.npixels(address(), value); return this; }
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallback.java
deleted file mode 100644
index 85efe06eb..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetJoystickCallback SetJoystickCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * int jid,
- * int event
- * )
- *
- * @since version 3.2
- */
-public abstract class GLFWJoystickCallback extends Callback implements GLFWJoystickCallbackI {
-
- /**
- * Creates a {@code GLFWJoystickCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWJoystickCallback}
- */
- public static GLFWJoystickCallback create(long functionPointer) {
- GLFWJoystickCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWJoystickCallback
- ? (GLFWJoystickCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWJoystickCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWJoystickCallback} instance that delegates to the specified {@code GLFWJoystickCallbackI} instance. */
- public static GLFWJoystickCallback create(GLFWJoystickCallbackI instance) {
- return instance instanceof GLFWJoystickCallback
- ? (GLFWJoystickCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWJoystickCallback() {
- super(SIGNATURE);
- }
-
- GLFWJoystickCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetJoystickCallback SetJoystickCallback}. */
- public GLFWJoystickCallback set() {
- glfwSetJoystickCallback(this);
- return this;
- }
-
- private static final class Container extends GLFWJoystickCallback {
-
- private final GLFWJoystickCallbackI delegate;
-
- Container(long functionPointer, GLFWJoystickCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(int jid, int event) {
- delegate.invoke(jid, event);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallbackI.java
deleted file mode 100644
index 2bea9c27a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetJoystickCallback SetJoystickCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * int jid,
- * int event
- * )
- *
- * @since version 3.2
- */
-@FunctionalInterface
-@NativeType("GLFWjoystickfun")
-public interface GLFWJoystickCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(ii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a joystick is connected to or disconnected from the system.
- *
- * @param jid the joystick that was connected or disconnected
- * @param event one of {@link GLFW#GLFW_CONNECTED CONNECTED} or {@link GLFW#GLFW_DISCONNECTED DISCONNECTED}. Remaining values reserved for future use.
- */
- void invoke(int jid, int event);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallback.java
deleted file mode 100644
index eb7703342..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetKeyCallback SetKeyCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int key,
- * int scancode,
- * int action,
- * int mods
- * )
- */
-public abstract class GLFWKeyCallback extends Callback implements GLFWKeyCallbackI {
-
- /**
- * Creates a {@code GLFWKeyCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWKeyCallback}
- */
- public static GLFWKeyCallback create(long functionPointer) {
- GLFWKeyCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWKeyCallback
- ? (GLFWKeyCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWKeyCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWKeyCallback} instance that delegates to the specified {@code GLFWKeyCallbackI} instance. */
- public static GLFWKeyCallback create(GLFWKeyCallbackI instance) {
- return instance instanceof GLFWKeyCallback
- ? (GLFWKeyCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWKeyCallback() {
- super(SIGNATURE);
- }
-
- GLFWKeyCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetKeyCallback SetKeyCallback}. */
- public GLFWKeyCallback set(long window) {
- glfwSetKeyCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWKeyCallback {
-
- private final GLFWKeyCallbackI delegate;
-
- Container(long functionPointer, GLFWKeyCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int key, int scancode, int action, int mods) {
- delegate.invoke(window, key, scancode, action, mods);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallbackI.java
deleted file mode 100644
index ed506cf34..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallbackI.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetKeyCallback SetKeyCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int key,
- * int scancode,
- * int action,
- * int mods
- * )
- */
-@FunctionalInterface
-@NativeType("GLFWkeyfun")
-public interface GLFWKeyCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(piiii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a key is pressed, repeated or released.
- *
- * @param window the window that received the event
- * @param key the keyboard key that was pressed or released
- * @param scancode the system-specific scancode of the key
- * @param action the key action. One of:
| {@link GLFW#GLFW_PRESS PRESS} | {@link GLFW#GLFW_RELEASE RELEASE} | {@link GLFW#GLFW_REPEAT REPEAT} |
- * @param mods bitfield describing which modifiers keys were held down
- */
- void invoke(@NativeType("GLFWwindow *") long window, int key, int scancode, int action, int mods);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallback.java
deleted file mode 100644
index a67265e27..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetMonitorCallback SetMonitorCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWmonitor *monitor,
- * int event
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWMonitorCallback extends Callback implements GLFWMonitorCallbackI {
-
- /**
- * Creates a {@code GLFWMonitorCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWMonitorCallback}
- */
- public static GLFWMonitorCallback create(long functionPointer) {
- GLFWMonitorCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWMonitorCallback
- ? (GLFWMonitorCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWMonitorCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWMonitorCallback} instance that delegates to the specified {@code GLFWMonitorCallbackI} instance. */
- public static GLFWMonitorCallback create(GLFWMonitorCallbackI instance) {
- return instance instanceof GLFWMonitorCallback
- ? (GLFWMonitorCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWMonitorCallback() {
- super(SIGNATURE);
- }
-
- GLFWMonitorCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetMonitorCallback SetMonitorCallback}. */
- public GLFWMonitorCallback set() {
- glfwSetMonitorCallback(this);
- return this;
- }
-
- private static final class Container extends GLFWMonitorCallback {
-
- private final GLFWMonitorCallbackI delegate;
-
- Container(long functionPointer, GLFWMonitorCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long monitor, int event) {
- delegate.invoke(monitor, event);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallbackI.java
deleted file mode 100644
index b0a215afd..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetMonitorCallback SetMonitorCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWmonitor *monitor,
- * int event
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWmonitorfun")
-public interface GLFWMonitorCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a monitor is connected to or disconnected from the system.
- *
- * @param monitor the monitor that was connected or disconnected
- * @param event one of {@link GLFW#GLFW_CONNECTED CONNECTED} or {@link GLFW#GLFW_DISCONNECTED DISCONNECTED}. Remaining values reserved for future use.
- */
- void invoke(@NativeType("GLFWmonitor *") long monitor, int event);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallback.java
deleted file mode 100644
index 0edc6ff30..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetMouseButtonCallback SetMouseButtonCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int button,
- * int action,
- * int mods
- * )
- */
-public abstract class GLFWMouseButtonCallback extends Callback implements GLFWMouseButtonCallbackI {
-
- /**
- * Creates a {@code GLFWMouseButtonCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWMouseButtonCallback}
- */
- public static GLFWMouseButtonCallback create(long functionPointer) {
- GLFWMouseButtonCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWMouseButtonCallback
- ? (GLFWMouseButtonCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWMouseButtonCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWMouseButtonCallback} instance that delegates to the specified {@code GLFWMouseButtonCallbackI} instance. */
- public static GLFWMouseButtonCallback create(GLFWMouseButtonCallbackI instance) {
- return instance instanceof GLFWMouseButtonCallback
- ? (GLFWMouseButtonCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWMouseButtonCallback() {
- super(SIGNATURE);
- }
-
- GLFWMouseButtonCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetMouseButtonCallback SetMouseButtonCallback}. */
- public GLFWMouseButtonCallback set(long window) {
- glfwSetMouseButtonCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWMouseButtonCallback {
-
- private final GLFWMouseButtonCallbackI delegate;
-
- Container(long functionPointer, GLFWMouseButtonCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int button, int action, int mods) {
- delegate.invoke(window, button, action, mods);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallbackI.java
deleted file mode 100644
index e010c1c1a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallbackI.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetMouseButtonCallback SetMouseButtonCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int button,
- * int action,
- * int mods
- * )
- */
-@FunctionalInterface
-@NativeType("GLFWmousebuttonfun")
-public interface GLFWMouseButtonCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(piii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when a mouse button is pressed or released.
- *
- * @param window the window that received the event
- * @param button the mouse button that was pressed or released
- * @param action the button action. One of:
| {@link GLFW#GLFW_PRESS PRESS} | {@link GLFW#GLFW_RELEASE RELEASE} |
- * @param mods bitfield describing which modifiers keys were held down
- */
- void invoke(@NativeType("GLFWwindow *") long window, int button, int action, int mods);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWNativeGLX.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWNativeGLX.java
deleted file mode 100644
index eaf7c2a2a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWNativeGLX.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.APIUtil.*;
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-
-import javax.annotation.*;
-import org.lwjgl.opengl.GL;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-/** Native bindings to the GLFW library's GLX native access functions. */
-public class GLFWNativeGLX {
-
- protected GLFWNativeGLX() {
- throw new UnsupportedOperationException();
- }
-
- /** Contains the function pointers loaded from {@code GLFW.getLibrary()}. */
- public static final class Functions {
-
- private Functions() {}
-
- /** Function address. */
- public static final long
- GetGLXContext = apiGetFunctionAddress(GLFW.getLibrary(), "glfwGetGLXContext"),
- GetGLXWindow = apiGetFunctionAddress(GLFW.getLibrary(), "glfwGetGLXWindow");
-
- }
-
- // --- [ glfwGetGLXContext ] ---
-
- /**
- * Returns the {@code GLXContext} of the specified window.
- *
- * This function may be called from any thread. Access is not synchronized.
- *
- * @param window a GLFW window
- *
- * @return the {@code GLXContext} of the specified window, or {@code NULL} if an error occurred.
- *
- * @since version 3.0
- */
- @NativeType("GLXContext")
- public static long glfwGetGLXContext(@NativeType("GLFWwindow *") long window) {
- long __functionAddress = Functions.GetGLXContext;
- if (CHECKS) {
- check(window);
- }
- return invokePP(window, __functionAddress);
- }
-
- // --- [ glfwGetGLXWindow ] ---
-
- /**
- * Returns the {@code GLXWindow} of the specified window.
- *
- * This function may be called from any thread. Access is not synchronized.
- *
- * @param window a GLFW window
- *
- * @return the {@code GLXWindow} of the specified window, or {@code None} if an error occurred.
- *
- * @since version 3.2
- */
- @NativeType("GLXWindow")
- public static long glfwGetGLXWindow(@NativeType("GLFWwindow *") long window) {
- long __functionAddress = Functions.GetGLXWindow;
- if (CHECKS) {
- check(window);
- }
- return invokePP(window, __functionAddress);
- }
-
- /** Calls {@link #setPath(String)} with the path of the OpenGL shared library loaded by LWJGL. */
- public static void setPathLWJGL() {
- FunctionProvider fp = GL.getFunctionProvider();
- if (!(fp instanceof SharedLibrary)) {
- apiLog("GLFW OpenGL path override not set: OpenGL function provider is not a shared library.");
- return;
-
- }
-
- String path = ((SharedLibrary)fp).getPath();
- if (path == null) {
- apiLog("GLFW OpenGL path override not set: Could not resolve the OpenGL shared library path.");
- return;
-
- }
-
- setPath(path);
- }
-
- /**
- * Overrides the OpenGL shared library that GLFW loads internally.
- *
- * This is useful when there's a mismatch between the shared libraries loaded by LWJGL and GLFW.
- *
- * This method must be called before GLFW initializes OpenGL. The override is available only in the default GLFW build bundled with LWJGL. Using the
- * override with a custom GLFW build will produce a warning in {@code DEBUG} mode (but not an error).
- *
- * @param path the OpenGL shared library path, or {@code null} to remove the override.
- */
- public static void setPath(@Nullable String path) {
- long override = GLFW.getLibrary().getFunctionAddress("_glfw_opengl_library");
- if (override == NULL) {
- apiLog("GLFW OpenGL path override not set: Could not resolve override symbol.");
- return;
- }
-
- long a = memGetAddress(override);
- if (a != NULL) {
- nmemFree(a);
- }
- memPutAddress(override, path == null ? NULL : memAddress(memUTF8(path)));
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallback.java
deleted file mode 100644
index 4a305a8bd..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetScrollCallback SetScrollCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * double xoffset,
- * double yoffset
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWScrollCallback extends Callback implements GLFWScrollCallbackI {
-
- /**
- * Creates a {@code GLFWScrollCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWScrollCallback}
- */
- public static GLFWScrollCallback create(long functionPointer) {
- GLFWScrollCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWScrollCallback
- ? (GLFWScrollCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWScrollCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWScrollCallback} instance that delegates to the specified {@code GLFWScrollCallbackI} instance. */
- public static GLFWScrollCallback create(GLFWScrollCallbackI instance) {
- return instance instanceof GLFWScrollCallback
- ? (GLFWScrollCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWScrollCallback() {
- super(SIGNATURE);
- }
-
- GLFWScrollCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetScrollCallback SetScrollCallback}. */
- public GLFWScrollCallback set(long window) {
- glfwSetScrollCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWScrollCallback {
-
- private final GLFWScrollCallbackI delegate;
-
- Container(long functionPointer, GLFWScrollCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, double xoffset, double yoffset) {
- delegate.invoke(window, xoffset, yoffset);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallbackI.java
deleted file mode 100644
index b467832a0..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallbackI.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetScrollCallback SetScrollCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * double xoffset,
- * double yoffset
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWscrollfun")
-public interface GLFWScrollCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pdd)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgDouble(args),
- dcbArgDouble(args)
- );
- }
-
- /**
- * Will be called when a scrolling device is used, such as a mouse wheel or scrolling area of a touchpad.
- *
- * @param window the window that received the event
- * @param xoffset the scroll offset along the x-axis
- * @param yoffset the scroll offset along the y-axis
- */
- void invoke(@NativeType("GLFWwindow *") long window, double xoffset, double yoffset);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVidMode.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVidMode.java
deleted file mode 100644
index 5e06259dc..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVidMode.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * Describes a single video mode.
- *
- * Member documentation
- *
- *
- * - {@code width} – the width, in screen coordinates, of the video mode
- * - {@code height} – the height, in screen coordinates, of the video mode
- * - {@code redBits} – the bit depth of the red channel of the video mode
- * - {@code greenBits} – the bit depth of the green channel of the video mode
- * - {@code blueBits} – the bit depth of the blue channel of the video mode
- * - {@code refreshRate} – the refresh rate, in Hz, of the video mode
- *
- *
- * Layout
- *
- *
- * struct GLFWvidmode {
- * int width;
- * int height;
- * int redBits;
- * int greenBits;
- * int blueBits;
- * int refreshRate;
- * }
- */
-@NativeType("struct GLFWvidmode")
-public class GLFWVidMode extends Struct {
-
- /** The struct size in bytes. */
- public static final int SIZEOF;
-
- /** The struct alignment in bytes. */
- public static final int ALIGNOF;
-
- /** The struct member offsets. */
- public static final int
- WIDTH,
- HEIGHT,
- REDBITS,
- GREENBITS,
- BLUEBITS,
- REFRESHRATE;
-
- static {
- Layout layout = __struct(
- __member(4),
- __member(4),
- __member(4),
- __member(4),
- __member(4),
- __member(4)
- );
-
- SIZEOF = layout.getSize();
- ALIGNOF = layout.getAlignment();
-
- WIDTH = layout.offsetof(0);
- HEIGHT = layout.offsetof(1);
- REDBITS = layout.offsetof(2);
- GREENBITS = layout.offsetof(3);
- BLUEBITS = layout.offsetof(4);
- REFRESHRATE = layout.offsetof(5);
- }
-
- /**
- * Creates a {@code GLFWVidMode} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
- * visible to the struct instance and vice versa.
- *
- * The created instance holds a strong reference to the container object.
- */
- public GLFWVidMode(ByteBuffer container) {
- super(memAddress(container), __checkContainer(container, SIZEOF));
- }
-
- @Override
- public int sizeof() { return SIZEOF; }
-
- /** Returns the value of the {@code width} field. */
- public int width() { return nwidth(address()); }
- /** Returns the value of the {@code height} field. */
- public int height() { return nheight(address()); }
- /** Returns the value of the {@code redBits} field. */
- public int redBits() { return nredBits(address()); }
- /** Returns the value of the {@code greenBits} field. */
- public int greenBits() { return ngreenBits(address()); }
- /** Returns the value of the {@code blueBits} field. */
- public int blueBits() { return nblueBits(address()); }
- /** Returns the value of the {@code refreshRate} field. */
- public int refreshRate() { return nrefreshRate(address()); }
-
- // -----------------------------------
-
- /** Returns a new {@code GLFWVidMode} instance for the specified memory address. */
- public static GLFWVidMode create(long address) {
- return wrap(GLFWVidMode.class, address);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWVidMode createSafe(long address) {
- return address == NULL ? null : wrap(GLFWVidMode.class, address);
- }
-
- /**
- * Create a {@link GLFWVidMode.Buffer} instance at the specified memory.
- *
- * @param address the memory address
- * @param capacity the buffer capacity
- */
- public static GLFWVidMode.Buffer create(long address, int capacity) {
- return wrap(Buffer.class, address, capacity);
- }
-
- /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static GLFWVidMode.Buffer createSafe(long address, int capacity) {
- return address == NULL ? null : wrap(Buffer.class, address, capacity);
- }
-
- // -----------------------------------
-
- /** Unsafe version of {@link #width}. */
- public static int nwidth(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.WIDTH); }
- /** Unsafe version of {@link #height}. */
- public static int nheight(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.HEIGHT); }
- /** Unsafe version of {@link #redBits}. */
- public static int nredBits(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.REDBITS); }
- /** Unsafe version of {@link #greenBits}. */
- public static int ngreenBits(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.GREENBITS); }
- /** Unsafe version of {@link #blueBits}. */
- public static int nblueBits(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.BLUEBITS); }
- /** Unsafe version of {@link #refreshRate}. */
- public static int nrefreshRate(long struct) { return UNSAFE.getInt(null, struct + GLFWVidMode.REFRESHRATE); }
-
- // -----------------------------------
-
- /** An array of {@link GLFWVidMode} structs. */
- public static class Buffer extends StructBuffer {
-
- private static final GLFWVidMode ELEMENT_FACTORY = GLFWVidMode.create(-1L);
-
- /**
- * Creates a new {@code GLFWVidMode.Buffer} instance backed by the specified container.
- *
- * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
- * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link GLFWVidMode#SIZEOF}, and its mark will be undefined.
- *
- * The created buffer instance holds a strong reference to the container object.
- */
- public Buffer(ByteBuffer container) {
- super(container, container.remaining() / SIZEOF);
- }
-
- public Buffer(long address, int cap) {
- super(address, null, -1, 0, cap, cap);
- }
-
- Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
- super(address, container, mark, pos, lim, cap);
- }
-
- @Override
- protected Buffer self() {
- return this;
- }
-
- @Override
- protected GLFWVidMode getElementFactory() {
- return ELEMENT_FACTORY;
- }
-
- /** Returns the value of the {@code width} field. */
- public int width() { return GLFWVidMode.nwidth(address()); }
- /** Returns the value of the {@code height} field. */
- public int height() { return GLFWVidMode.nheight(address()); }
- /** Returns the value of the {@code redBits} field. */
- public int redBits() { return GLFWVidMode.nredBits(address()); }
- /** Returns the value of the {@code greenBits} field. */
- public int greenBits() { return GLFWVidMode.ngreenBits(address()); }
- /** Returns the value of the {@code blueBits} field. */
- public int blueBits() { return GLFWVidMode.nblueBits(address()); }
- /** Returns the value of the {@code refreshRate} field. */
- public int refreshRate() { return GLFWVidMode.nrefreshRate(address()); }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVulkan.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVulkan.java
deleted file mode 100644
index 1370d2cec..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWVulkan.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.lwjgl.glfw;
-
-public class GLFWVulkan {
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallback.java
deleted file mode 100644
index da74a99c6..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallback.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowCloseCallback SetWindowCloseCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window
- * )
- *
- * @since version 2.5
- */
-public abstract class GLFWWindowCloseCallback extends Callback implements GLFWWindowCloseCallbackI {
-
- /**
- * Creates a {@code GLFWWindowCloseCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowCloseCallback}
- */
- public static GLFWWindowCloseCallback create(long functionPointer) {
- GLFWWindowCloseCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowCloseCallback
- ? (GLFWWindowCloseCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowCloseCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowCloseCallback} instance that delegates to the specified {@code GLFWWindowCloseCallbackI} instance. */
- public static GLFWWindowCloseCallback create(GLFWWindowCloseCallbackI instance) {
- return instance instanceof GLFWWindowCloseCallback
- ? (GLFWWindowCloseCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowCloseCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowCloseCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowCloseCallback SetWindowCloseCallback}. */
- public GLFWWindowCloseCallback set(long window) {
- glfwSetWindowCloseCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowCloseCallback {
-
- private final GLFWWindowCloseCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowCloseCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window) {
- delegate.invoke(window);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallbackI.java
deleted file mode 100644
index f4357e29f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallbackI.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowCloseCallback SetWindowCloseCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window
- * )
- *
- * @since version 2.5
- */
-@FunctionalInterface
-@NativeType("GLFWwindowclosefun")
-public interface GLFWWindowCloseCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(p)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args)
- );
- }
-
- /**
- * Will be called when the user attempts to close the specified window, for example by clicking the close widget in the title bar.
- *
- * @param window the window that the user attempted to close
- */
- void invoke(@NativeType("GLFWwindow *") long window);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallback.java
deleted file mode 100644
index 8b61d6377..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowContentScaleCallback SetWindowContentScaleCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * float xscale,
- * float yscale
- * )
- *
- * @since version 3.3
- */
-public abstract class GLFWWindowContentScaleCallback extends Callback implements GLFWWindowContentScaleCallbackI {
-
- /**
- * Creates a {@code GLFWWindowContentScaleCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowContentScaleCallback}
- */
- public static GLFWWindowContentScaleCallback create(long functionPointer) {
- GLFWWindowContentScaleCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowContentScaleCallback
- ? (GLFWWindowContentScaleCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowContentScaleCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowContentScaleCallback} instance that delegates to the specified {@code GLFWWindowContentScaleCallbackI} instance. */
- public static GLFWWindowContentScaleCallback create(GLFWWindowContentScaleCallbackI instance) {
- return instance instanceof GLFWWindowContentScaleCallback
- ? (GLFWWindowContentScaleCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowContentScaleCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowContentScaleCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowContentScaleCallback SetWindowContentScaleCallback}. */
- public GLFWWindowContentScaleCallback set(long window) {
- glfwSetWindowContentScaleCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowContentScaleCallback {
-
- private final GLFWWindowContentScaleCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowContentScaleCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, float xscale, float yscale) {
- delegate.invoke(window, xscale, yscale);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallbackI.java
deleted file mode 100644
index d3c979f63..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallbackI.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowContentScaleCallback SetWindowContentScaleCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * float xscale,
- * float yscale
- * )
- *
- * @since version 3.3
- */
-@FunctionalInterface
-@NativeType("GLFWwindowcontentscalefun")
-public interface GLFWWindowContentScaleCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pff)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgFloat(args),
- dcbArgFloat(args)
- );
- }
-
- /**
- * Will be called when the window content scale changes.
- *
- * @param window the window whose content scale changed
- * @param xscale the new x-axis content scale of the window
- * @param yscale the new y-axis content scale of the window
- */
- void invoke(@NativeType("GLFWwindow *") long window, float xscale, float yscale);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallback.java
deleted file mode 100644
index 74b466658..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowFocusCallback SetWindowFocusCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int focused
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWWindowFocusCallback extends Callback implements GLFWWindowFocusCallbackI {
-
- /**
- * Creates a {@code GLFWWindowFocusCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowFocusCallback}
- */
- public static GLFWWindowFocusCallback create(long functionPointer) {
- GLFWWindowFocusCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowFocusCallback
- ? (GLFWWindowFocusCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowFocusCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowFocusCallback} instance that delegates to the specified {@code GLFWWindowFocusCallbackI} instance. */
- public static GLFWWindowFocusCallback create(GLFWWindowFocusCallbackI instance) {
- return instance instanceof GLFWWindowFocusCallback
- ? (GLFWWindowFocusCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowFocusCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowFocusCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowFocusCallback SetWindowFocusCallback}. */
- public GLFWWindowFocusCallback set(long window) {
- glfwSetWindowFocusCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowFocusCallback {
-
- private final GLFWWindowFocusCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowFocusCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, boolean focused) {
- delegate.invoke(window, focused);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallbackI.java
deleted file mode 100644
index 6ea92b122..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowFocusCallback SetWindowFocusCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int focused
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWwindowfocusfun")
-public interface GLFWWindowFocusCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args) != 0
- );
- }
-
- /**
- * Will be called when the specified window gains or loses focus.
- *
- * @param window the window that was focused or defocused
- * @param focused {@link GLFW#GLFW_TRUE TRUE} if the window was focused, or {@link GLFW#GLFW_FALSE FALSE} if it was defocused
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean focused);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallback.java
deleted file mode 100644
index a9616a17f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowIconifyCallback SetWindowIconifyCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int iconified
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWWindowIconifyCallback extends Callback implements GLFWWindowIconifyCallbackI {
-
- /**
- * Creates a {@code GLFWWindowIconifyCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowIconifyCallback}
- */
- public static GLFWWindowIconifyCallback create(long functionPointer) {
- GLFWWindowIconifyCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowIconifyCallback
- ? (GLFWWindowIconifyCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowIconifyCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowIconifyCallback} instance that delegates to the specified {@code GLFWWindowIconifyCallbackI} instance. */
- public static GLFWWindowIconifyCallback create(GLFWWindowIconifyCallbackI instance) {
- return instance instanceof GLFWWindowIconifyCallback
- ? (GLFWWindowIconifyCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowIconifyCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowIconifyCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowIconifyCallback SetWindowIconifyCallback}. */
- public GLFWWindowIconifyCallback set(long window) {
- glfwSetWindowIconifyCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowIconifyCallback {
-
- private final GLFWWindowIconifyCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowIconifyCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, boolean iconified) {
- delegate.invoke(window, iconified);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallbackI.java
deleted file mode 100644
index b21159683..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowIconifyCallback SetWindowIconifyCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int iconified
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWwindowiconifyfun")
-public interface GLFWWindowIconifyCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args) != 0
- );
- }
-
- /**
- * Will be called when the specified window is iconified or restored.
- *
- * @param window the window that was iconified or restored.
- * @param iconified {@link GLFW#GLFW_TRUE TRUE} if the window was iconified, or {@link GLFW#GLFW_FALSE FALSE} if it was restored
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean iconified);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallback.java
deleted file mode 100644
index b8e93649f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallback.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowMaximizeCallback SetWindowMaximizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int maximized
- * )
- *
- * @since version 3.3
- */
-public abstract class GLFWWindowMaximizeCallback extends Callback implements GLFWWindowMaximizeCallbackI {
-
- /**
- * Creates a {@code GLFWWindowMaximizeCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowMaximizeCallback}
- */
- public static GLFWWindowMaximizeCallback create(long functionPointer) {
- GLFWWindowMaximizeCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowMaximizeCallback
- ? (GLFWWindowMaximizeCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowMaximizeCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowMaximizeCallback} instance that delegates to the specified {@code GLFWWindowMaximizeCallbackI} instance. */
- public static GLFWWindowMaximizeCallback create(GLFWWindowMaximizeCallbackI instance) {
- return instance instanceof GLFWWindowMaximizeCallback
- ? (GLFWWindowMaximizeCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowMaximizeCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowMaximizeCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowMaximizeCallback SetWindowMaximizeCallback}. */
- public GLFWWindowMaximizeCallback set(long window) {
- glfwSetWindowMaximizeCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowMaximizeCallback {
-
- private final GLFWWindowMaximizeCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowMaximizeCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, boolean maximized) {
- delegate.invoke(window, maximized);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallbackI.java
deleted file mode 100644
index a698aaf27..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallbackI.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowMaximizeCallback SetWindowMaximizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int maximized
- * )
- *
- * @since version 3.3
- */
-@FunctionalInterface
-@NativeType("GLFWwindowmaximizefun")
-public interface GLFWWindowMaximizeCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pi)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args) != 0
- );
- }
-
- /**
- * Will be called when the specified window is maximized or restored.
- *
- * @param window the window that was maximized or restored.
- * @param maximized {@link GLFW#GLFW_TRUE TRUE} if the window was maximized, or {@link GLFW#GLFW_FALSE FALSE} if it was restored
- */
- void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean maximized);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallback.java
deleted file mode 100644
index e4e1ee3d5..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallback.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowPosCallback SetWindowPosCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int xpos,
- * int ypos
- * )
- *
- * @since version 3.0
- */
-public abstract class GLFWWindowPosCallback extends Callback implements GLFWWindowPosCallbackI {
-
- /**
- * Creates a {@code GLFWWindowPosCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowPosCallback}
- */
- public static GLFWWindowPosCallback create(long functionPointer) {
- GLFWWindowPosCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowPosCallback
- ? (GLFWWindowPosCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowPosCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowPosCallback} instance that delegates to the specified {@code GLFWWindowPosCallbackI} instance. */
- public static GLFWWindowPosCallback create(GLFWWindowPosCallbackI instance) {
- return instance instanceof GLFWWindowPosCallback
- ? (GLFWWindowPosCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowPosCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowPosCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowPosCallback SetWindowPosCallback}. */
- public GLFWWindowPosCallback set(long window) {
- glfwSetWindowPosCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowPosCallback {
-
- private final GLFWWindowPosCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowPosCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int xpos, int ypos) {
- delegate.invoke(window, xpos, ypos);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallbackI.java
deleted file mode 100644
index a945a27d8..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallbackI.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowPosCallback SetWindowPosCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int xpos,
- * int ypos
- * )
- *
- * @since version 3.0
- */
-@FunctionalInterface
-@NativeType("GLFWwindowposfun")
-public interface GLFWWindowPosCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when the specified window moves.
- *
- * @param window the window that was moved
- * @param xpos the new x-coordinate, in screen coordinates, of the upper-left corner of the content area of the window
- * @param ypos the new y-coordinate, in screen coordinates, of the upper-left corner of the content area of the window
- */
- void invoke(@NativeType("GLFWwindow *") long window, int xpos, int ypos);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallback.java
deleted file mode 100644
index 11ea1ed99..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallback.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowRefreshCallback SetWindowRefreshCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window
- * )
- *
- * @since version 2.5
- */
-public abstract class GLFWWindowRefreshCallback extends Callback implements GLFWWindowRefreshCallbackI {
-
- /**
- * Creates a {@code GLFWWindowRefreshCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowRefreshCallback}
- */
- public static GLFWWindowRefreshCallback create(long functionPointer) {
- GLFWWindowRefreshCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowRefreshCallback
- ? (GLFWWindowRefreshCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowRefreshCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowRefreshCallback} instance that delegates to the specified {@code GLFWWindowRefreshCallbackI} instance. */
- public static GLFWWindowRefreshCallback create(GLFWWindowRefreshCallbackI instance) {
- return instance instanceof GLFWWindowRefreshCallback
- ? (GLFWWindowRefreshCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowRefreshCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowRefreshCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowRefreshCallback SetWindowRefreshCallback}. */
- public GLFWWindowRefreshCallback set(long window) {
- glfwSetWindowRefreshCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowRefreshCallback {
-
- private final GLFWWindowRefreshCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowRefreshCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window) {
- delegate.invoke(window);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallbackI.java
deleted file mode 100644
index 0fae18261..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallbackI.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowRefreshCallback SetWindowRefreshCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window
- * )
- *
- * @since version 2.5
- */
-@FunctionalInterface
-@NativeType("GLFWwindowrefreshfun")
-public interface GLFWWindowRefreshCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(p)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args)
- );
- }
-
- /**
- * Will be called when the client area of the specified window needs to be redrawn, for example if the window has been exposed after having been covered by
- * another window.
- *
- * @param window the window whose content needs to be refreshed
- */
- void invoke(@NativeType("GLFWwindow *") long window);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallback.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallback.java
deleted file mode 100644
index f630ab395..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallback.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import javax.annotation.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.MemoryUtil.*;
-
-import static org.lwjgl.glfw.GLFW.*;
-
-/**
- * Instances of this class may be passed to the {@link GLFW#glfwSetWindowSizeCallback SetWindowSizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int width,
- * int height
- * )
- */
-public abstract class GLFWWindowSizeCallback extends Callback implements GLFWWindowSizeCallbackI {
-
- /**
- * Creates a {@code GLFWWindowSizeCallback} instance from the specified function pointer.
- *
- * @return the new {@code GLFWWindowSizeCallback}
- */
- public static GLFWWindowSizeCallback create(long functionPointer) {
- GLFWWindowSizeCallbackI instance = Callback.get(functionPointer);
- return instance instanceof GLFWWindowSizeCallback
- ? (GLFWWindowSizeCallback)instance
- : new Container(functionPointer, instance);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */
- @Nullable
- public static GLFWWindowSizeCallback createSafe(long functionPointer) {
- return functionPointer == NULL ? null : create(functionPointer);
- }
-
- /** Creates a {@code GLFWWindowSizeCallback} instance that delegates to the specified {@code GLFWWindowSizeCallbackI} instance. */
- public static GLFWWindowSizeCallback create(GLFWWindowSizeCallbackI instance) {
- return instance instanceof GLFWWindowSizeCallback
- ? (GLFWWindowSizeCallback)instance
- : new Container(instance.address(), instance);
- }
-
- protected GLFWWindowSizeCallback() {
- super(SIGNATURE);
- }
-
- GLFWWindowSizeCallback(long functionPointer) {
- super(functionPointer);
- }
-
- /** See {@link GLFW#glfwSetWindowSizeCallback SetWindowSizeCallback}. */
- public GLFWWindowSizeCallback set(long window) {
- glfwSetWindowSizeCallback(window, this);
- return this;
- }
-
- private static final class Container extends GLFWWindowSizeCallback {
-
- private final GLFWWindowSizeCallbackI delegate;
-
- Container(long functionPointer, GLFWWindowSizeCallbackI delegate) {
- super(functionPointer);
- this.delegate = delegate;
- }
-
- @Override
- public void invoke(long window, int width, int height) {
- delegate.invoke(window, width, height);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallbackI.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallbackI.java
deleted file mode 100644
index 9e1d4f023..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallbackI.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.glfw;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.dyncall.DynCallback.*;
-
-/**
- * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowSizeCallback SetWindowSizeCallback} method.
- *
- * Type
- *
- *
- * void (*) (
- * GLFWwindow *window,
- * int width,
- * int height
- * )
- */
-@FunctionalInterface
-@NativeType("GLFWwindowsizefun")
-public interface GLFWWindowSizeCallbackI extends CallbackI.V {
-
- String SIGNATURE = "(pii)v";
-
- @Override
- default String getSignature() { return SIGNATURE; }
-
- @Override
- default void callback(long args) {
- invoke(
- dcbArgPointer(args),
- dcbArgInt(args),
- dcbArgInt(args)
- );
- }
-
- /**
- * Will be called when the specified window is resized.
- *
- * @param window the window that was resized
- * @param width the new width, in screen coordinates, of the window
- * @param height the new height, in screen coordinates, of the window
- */
- void invoke(@NativeType("GLFWwindow *") long window, int width, int height);
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/package-info.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/package-info.java
deleted file mode 100644
index d3c700296..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-
-/**
- * Contains bindings to the GLFW library.
- *
- * GLFW comes with extensive documentation, which you can read online here. The
- * Frequently Asked Questions are also useful.
- *
- * On macOS the JVM must be started with the {@code -XstartOnFirstThread} argument for GLFW to work. This is necessary because most GLFW functions must be
- * called on the main thread and the Cocoa API on macOS requires that thread to be the first thread in the process. For this reason, on-screen GLFW
- * windows and the GLFW event loop are incompatible with other window toolkits (such as AWT/Swing or JavaFX) on macOS. Off-screen GLFW windows can be used
- * with other window toolkits, but only if the window toolkit is initialized before GLFW.
- */
-@org.lwjgl.system.NonnullDefault
-package org.lwjgl.glfw;
-
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controller.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controller.java
deleted file mode 100644
index 5a35053f0..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controller.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.input;
-
-/**
- * A game controller of some sort that will provide input. The controller
- * presents buttons and axes. Buttons are either pressed or not pressed. Axis
- * provide analogue values.
- *
- * @author Kevin Glass
- */
-public interface Controller {
- /**
- * Get the name assigned to this controller.
- *
- * @return The name assigned to this controller
- */
- String getName();
-
- /**
- * Get the index of this controller in the collection
- *
- * @return The index of this controller in the collection
- */
- int getIndex();
-
- /**
- * Retrieve the number of buttons available on this controller
- *
- * @return The number of butotns available on this controller
- */
- int getButtonCount();
-
- /**
- * Get the name of the specified button. Be warned, often this is
- * as exciting as "Button X"
- *
- * @param index The index of the button whose name should be retrieved
- * @return The name of the button requested
- */
- String getButtonName(int index);
-
- /**
- * Check if a button is currently pressed
- *
- * @param index The button to check
- * @return True if the button is currently pressed
- */
- boolean isButtonPressed(int index);
-
- /**
- * Poll the controller for new data. This will also update
- * events
- */
- void poll();
-
- /**
- * Get the X-Axis value of the POV on this controller
- *
- * @return The X-Axis value of the POV on this controller
- */
- float getPovX();
-
- /**
- * Get the Y-Axis value of the POV on this controller
- *
- * @return The Y-Axis value of the POV on this controller
- */
- float getPovY();
-
- /**
- * Get the dead zone for a specified axis
- *
- * @param index The index of the axis for which to retrieve the dead zone
- * @return The dead zone for the specified axis
- */
- float getDeadZone(int index);
-
- /**
- * Set the dead zone for the specified axis
- *
- * @param index The index of hte axis for which to set the dead zone
- * @param zone The dead zone to use for the specified axis
- */
- void setDeadZone(int index,float zone);
-
- /**
- * Retrieve the number of axes available on this controller.
- *
- * @return The number of axes available on this controller.
- */
- int getAxisCount();
-
- /**
- * Get the name that's given to the specified axis
- *
- * @param index The index of the axis whose name should be retrieved
- * @return The name of the specified axis.
- */
- String getAxisName(int index);
-
- /**
- * Retrieve the value thats currently available on a specified axis. The
- * value will always be between 1.0 and -1.0 and will calibrate as values
- * are passed read. It may be useful to get the player to wiggle the joystick
- * from side to side to get the calibration right.
- *
- * @param index The index of axis to be read
- * @return The value from the specified axis.
- */
- float getAxisValue(int index);
-
- /**
- * Get the value from the X axis if there is one. If no X axis is
- * defined a zero value will be returned.
- *
- * @return The value from the X axis
- */
- float getXAxisValue();
-
- /**
- * Get the dead zone for the X axis.
- *
- * @return The dead zone for the X axis
- */
- float getXAxisDeadZone();
-
- /**
- * Set the dead zone for the X axis
- *
- * @param zone The dead zone to use for the X axis
- */
- void setXAxisDeadZone(float zone);
-
- /**
- * Get the value from the Y axis if there is one. If no Y axis is
- * defined a zero value will be returned.
- *
- * @return The value from the Y axis
- */
- float getYAxisValue();
-
- /**
- * Get the dead zone for the Y axis.
- *
- * @return The dead zone for the Y axis
- */
- float getYAxisDeadZone();
-
- /**
- * Set the dead zone for the Y axis
- *
- * @param zone The dead zone to use for the Y axis
- */
- void setYAxisDeadZone(float zone);
-
- /**
- * Get the value from the Z axis if there is one. If no Z axis is
- * defined a zero value will be returned.
- *
- * @return The value from the Z axis
- */
- float getZAxisValue();
-
- /**
- * Get the dead zone for the Z axis.
- *
- * @return The dead zone for the Z axis
- */
- float getZAxisDeadZone();
-
- /**
- * Set the dead zone for the Z axis
- *
- * @param zone The dead zone to use for the Z axis
- */
- void setZAxisDeadZone(float zone);
-
- /**
- * Get the value from the RX axis if there is one. If no RX axis is
- * defined a zero value will be returned.
- *
- * @return The value from the RX axis
- */
- float getRXAxisValue();
-
- /**
- * Get the dead zone for the RX axis.
- *
- * @return The dead zone for the RX axis
- */
- float getRXAxisDeadZone();
-
- /**
- * Set the dead zone for the RX axis
- *
- * @param zone The dead zone to use for the RX axis
- */
- void setRXAxisDeadZone(float zone);
-
- /**
- * Get the value from the RY axis if there is one. If no RY axis is
- * defined a zero value will be returned.
- *
- * @return The value from the RY axis
- */
- float getRYAxisValue();
-
- /**
- * Get the dead zone for the RY axis.
- *
- * @return The dead zone for the RY axis
- */
- float getRYAxisDeadZone();
-
- /**
- * Set the dead zone for the RY axis
- *
- * @param zone The dead zone to use for the RY axis
- */
- void setRYAxisDeadZone(float zone);
-
- /**
- * Get the value from the RZ axis if there is one. If no RZ axis is
- * defined a zero value will be returned.
- *
- * @return The value from the RZ axis
- */
- float getRZAxisValue();
-
- /**
- * Get the dead zone for the RZ axis.
- *
- * @return The dead zone for the RZ axis
- */
- float getRZAxisDeadZone();
-
- /**
- * Set the dead zone for the RZ axis
- *
- * @param zone The dead zone to use for the RZ axis
- */
- void setRZAxisDeadZone(float zone);
-
-
- /** Returns the number of rumblers this controller supports */
- int getRumblerCount();
-
- /** Returns the name of the specified rumbler
- *
- * @param index The rumbler index
- */
- String getRumblerName(int index);
-
- /** Sets the vibration strength of the specified rumbler
- *
- * @param index The index of the rumbler
- * @param strength The strength to vibrate at
- */
- void setRumblerStrength(int index, float strength);
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controllers.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controllers.java
deleted file mode 100644
index 7e6d1ebdd..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controllers.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.lwjgl.input;
-
-import org.lwjgl.Sys;
-import org.lwjgl.glfw.GLFWJoystickCallback;
-
-public class Controllers {
- static GLFWController ctrlr;
-public static void create() {
- ctrlr = new GLFWController();
- ctrlr.jid = 0;
-}
-public static Controller getController(int ctrl) {
- return ctrlr;
-}
-public static int getControllerCount() {
- return 1;
-}
- public static void poll() {
- ctrlr.poll();
- }
- public static boolean next() {
- return false;
- }
- public static boolean isCreated() {
- return true;
- }
- public static void destroy() {
-
- }
- public static void clearEvents() {}
- public static Controller getEventSource() {
- return ctrlr;
- }
-
- public static int getEventControlIndex() {
- return 0;
- }
-
- public static boolean isEventButton() {
- return true;
- }
-
- public static boolean isEventAxis() {
- return true;
- }
-
- public static boolean isEventXAxis() {
- return true;
- }
-
- public static boolean isEventYAxis() {
- return true;
- }
-
- public static boolean isEventPovX() {
- return true;
- }
-
- public static boolean isEventPovY() {
- return true;
- }
-
- public static long getEventNanoseconds() {
- return Sys.getNanoTime();
- }
-
- public static boolean getEventButtonState() {
- return true;
- }
-
- public static float getEventXAxisValue() {
- return ctrlr.getXAxisValue();
- }
-
- public static float getEventYAxisValue() {
- return ctrlr.getYAxisValue();
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java
deleted file mode 100644
index b59e322d9..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package org.lwjgl.input;
-
-import java.nio.ByteBuffer;
-import java.nio.IntBuffer;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.glfw.GLFW;
-import org.lwjgl.glfw.GLFWImage;
-import org.lwjgl.system.MemoryUtil;
-import org.lwjgl.LWJGLException;
-
-public class Cursor {
-
- /** 1 bit transparency for native cursor */
- public static final int CURSOR_ONE_BIT_TRANSPARENCY = 1;
-
- /** 8 bit alpha native cursor */
- public static final int CURSOR_8_BIT_ALPHA = 2;
-
- /** Animation native cursor */
- public static final int CURSOR_ANIMATION = 4;
-
- /** Elements to display */
- private final CursorElement[] cursors;
-
- /** Index into list of cursors */
- private int index;
-
- /** Flag set when the cursor has been destroyed */
- private boolean destroyed;
-
- /** Flag set if the cursor is empty */
- private boolean isEmpty;
-
- /**
- * Constructs a new Cursor, with the given parameters. Mouse must have been
- * created before you can create Cursor objects. Cursor images are in ARGB
- * format, but only one bit transparency is guaranteed to be supported. So
- * to maximize portability, LWJGL applications should only create cursor
- * images with 0x00 or 0xff as alpha values. The constructor will copy the
- * images and delays, so there's no need to keep them around.
- *
- * @param width
- * cursor image width
- * @param height
- * cursor image height
- * @param xHotspot
- * the x coordinate of the cursor hotspot
- * @param yHotspot
- * the y coordinate of the cursor hotspot
- * @param numImages
- * number of cursor images specified. Must be 1 if animations are
- * not supported.
- * @param images
- * A buffer containing the images. The origin is at the lower
- * left corner, like OpenGL.
- * @param delays
- * An int buffer of animation frame delays, if numImages is
- * greater than 1, else null
- * @throws LWJGLException
- * if the cursor could not be created for any reason
- */
- public Cursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays)
- throws LWJGLException {
- cursors = new CursorElement[numImages];
-
- IntBuffer flippedImages = BufferUtils.createIntBuffer(images.limit());
- flipImages(width, height, numImages, images, flippedImages);
-
- ByteBuffer pixels = convertARGBIntBuffertoRGBAByteBuffer(width, height, flippedImages);
- if(numImages == 1) {
- isEmpty = true;
- for(int i = 0; i < width*height; i++) if(pixels.get(i) != 0) {
- System.out.println("Encountered non-zero byte at "+i+", custom cursor is not empty!");
- isEmpty = false;
- }
- }
- for (int i = 0; i < numImages; i++) {
- int size = width * height;
- ByteBuffer image = BufferUtils.createByteBuffer(size);
- for (int j = 0; j < size; j++)
- image.put(pixels.get());
-
- GLFWImage cursorImage = GLFWImage.malloc();
- cursorImage.width(width);
- cursorImage.height(height);
- cursorImage.pixels(image);
-
- long delay = (delays != null) ? delays.get(i) : 0;
- long timeout = GLFW.glfwGetTimerValue();
- cursors[i] = new CursorElement(xHotspot, yHotspot, delay, timeout, cursorImage);
- }
- }
-
- private static ByteBuffer convertARGBIntBuffertoRGBAByteBuffer(int width, int height, IntBuffer imageBuffer) {
- ByteBuffer pixels = BufferUtils.createByteBuffer(width * height * 4);
-
- for (int i = 0; i < imageBuffer.limit(); i++) {
- int argbColor = imageBuffer.get(i);
-
- byte alpha = (byte) (argbColor >>> 24);
- byte blue = (byte) (argbColor >>> 16);
- byte green = (byte) (argbColor >>> 8);
- byte red = (byte) argbColor;
-
- pixels.put(red);
- pixels.put(green);
- pixels.put(blue);
- pixels.put(alpha);
- }
-
- pixels.flip();
-
- return pixels;
- }
-
- /**
- * Gets the minimum size of a native cursor. Can only be called if The Mouse
- * is created and cursor caps includes at least CURSOR_ONE_BIT_TRANSPARANCY.
- *
- * @return the minimum size of a native cursor
- */
- public static int getMinCursorSize() {
- return 1;
- }
-
- /**
- * Gets the maximum size of a native cursor. Can only be called if the
- * cursor caps includes at least {@link #CURSOR_ONE_BIT_TRANSPARENCY}.
- *
- * @return the maximum size of a native cursor
- */
- public static int getMaxCursorSize() {
- return 512;
- }
-
- /**
- * Get the capabilities of the native cursor. Return a bit mask of the
- * native cursor capabilities.
- *
- * CURSOR_ONE_BIT_TRANSPARENCY indicates support for
- * cursors with one bit transparency.
- *
- * CURSOR_8_BIT_ALPHA indicates support for 8 bit
- * alpha.
- *
- * CURSOR_ANIMATION indicates support for cursor
- * animations.
- *
- *
- * @return A bit mask with native cursor capabilities.
- */
- public static int getCapabilities() {
- return CURSOR_8_BIT_ALPHA | CURSOR_ANIMATION;
- }
-
- /**
- * Flips the images so they're oriented according to OpenGL
- *
- * @param width
- * Width of image
- * @param height
- * Height of images
- * @param numImages
- * How many images to flip
- * @param images
- * Source images
- * @param images_copy
- * Destination images
- */
- private static void flipImages(int width, int height, int numImages, IntBuffer images, IntBuffer images_copy) {
- for (int i = 0; i < numImages; i++) {
- int start_index = i * width * height;
- flipImage(width, height, start_index, images, images_copy);
- }
- }
-
- /**
- * @param width
- * Width of image
- * @param height
- * Height of images
- * @param start_index
- * index into source buffer to copy to
- * @param images
- * Source images
- * @param images_copy
- * Destination images
- */
- private static void flipImage(int width, int height, int start_index, IntBuffer images, IntBuffer images_copy) {
- for (int y = 0; y < height >> 1; y++) {
- int index_y_1 = y * width + start_index;
- int index_y_2 = (height - y - 1) * width + start_index;
- for (int x = 0; x < width; x++) {
- int index1 = index_y_1 + x;
- int index2 = index_y_2 + x;
- int temp_pixel = images.get(index1 + images.position());
- images_copy.put(index1, images.get(index2 + images.position()));
- images_copy.put(index2, temp_pixel);
- }
- }
- }
-
- /**
- * Gets the native handle associated with the cursor object.
- */
- long getHandle() {
- checkValid();
- return cursors[index].cursorHandle;
- }
-
- /**
- * Checks whether the cursor is still active and not yet destroyed.
- */
- private void checkValid() {
- if (destroyed)
- throw new IllegalStateException("The cursor is already destroyed");
- }
-
- /**
- * Destroy the current cursor. If the cursor is current, the current native
- * cursor is set to null (the default OS cursor)
- */
- public void destroy() {
- for (CursorElement cursor : cursors)
- GLFW.glfwDestroyCursor(cursor.cursorHandle);
-
- destroyed = true;
- }
-
- /**
- * Sets the timout property to the time it should be changed
- */
-
- protected void setTimeout() {
- checkValid();
- cursors[index].timeout = GLFW.glfwGetTimerValue() + cursors[index].delay;
- }
-
- /**
- * Determines whether this cursor has timed out
- *
- * @return true if the this cursor has timed out, false if not
- */
-
- protected boolean hasTimedOut() {
- checkValid();
- return cursors.length > 1 && cursors[index].timeout < GLFW.glfwGetTimerValue();
- }
-
- /**
- * Changes to the next cursor
- */
- protected void nextCursor() {
- checkValid();
- index = ++index % cursors.length;
- }
-
- /**
- /* Returns wheteher the cursor image is empty or not
- */
-
- /*package-private*/ boolean isEmpty() {
- return isEmpty;
- }
-
- /**
- * A single cursor element, used when animating
- */
- private static class CursorElement {
-
- final long cursorHandle;
- long delay;
- long timeout;
-
- CursorElement(int xHotspot, int yHotspot, long delay, long timeout, GLFWImage image) {
- this.delay = delay;
- this.timeout = timeout;
-
- this.cursorHandle = GLFW.glfwCreateCursor(image, xHotspot, yHotspot);
- if (cursorHandle == MemoryUtil.NULL)
- throw new RuntimeException("Error creating GLFW cursor");
- }
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/EventQueue.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/EventQueue.java
deleted file mode 100644
index 72cc4a7d5..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/EventQueue.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.input;
-
-/**
- * A java implementation of a LWJGL compatible event queue.
- * @author elias_naur
- */
-
-import java.nio.ByteBuffer;
-
-class EventQueue {
- private static final int QUEUE_SIZE = 200;
-
- private final int event_size;
-
- private final ByteBuffer queue;
-
- protected EventQueue(int event_size) {
- this.event_size = event_size;
- this.queue = ByteBuffer.allocate(QUEUE_SIZE*event_size);
- }
-
- protected synchronized void clearEvents() {
- queue.clear();
- }
-
- /**
- * Copy available events into the specified buffer.
- */
- public synchronized void copyEvents(ByteBuffer dest) {
- queue.flip();
- int old_limit = queue.limit();
- if (dest.remaining() < queue.remaining())
- queue.limit(dest.remaining() + queue.position());
- dest.put(queue);
- queue.limit(old_limit);
- queue.compact();
- }
-
- /**
- * Put an event into the queue.
- * @return true if the event fitted into the queue, false otherwise
- */
- public synchronized boolean putEvent(ByteBuffer event) {
- if (event.remaining() != event_size)
- throw new IllegalArgumentException("Internal error: event size " + event_size + " does not equal the given event size " + event.remaining());
- if (queue.remaining() >= event.remaining()) {
- queue.put(event);
- return true;
- } else
- return false;
- }
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWController.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWController.java
deleted file mode 100644
index 31e1c5383..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWController.java
+++ /dev/null
@@ -1,224 +0,0 @@
-package org.lwjgl.input;
-
-import org.lwjgl.glfw.GLFW;
-
-import java.nio.ByteBuffer;
-import java.nio.FloatBuffer;
-
-public class GLFWController implements Controller{
- int jid;
- FloatBuffer axisData = FloatBuffer.allocate(8);
- ByteBuffer buttonData = ByteBuffer.allocate(8);
- @Override
- public String getName() {
- return GLFW.glfwGetJoystickName(jid);
- }
-
- @Override
- public int getIndex() {
- return jid;
- }
-
- @Override
- public int getButtonCount() {
- return 8;
- }
-
- @Override
- public String getButtonName(int index) {
- switch(index) {
- case 0:
- return "A";
- case 1:
- return "B";
- case 2:
- return "X";
- case 3:
- return "Y";
- case 4:
- return "DPAD LEFT";
- case 5:
- return "DPAD RIGHT";
- case 6:
- return "DPAD UP";
- case 7:
- return "DPAD DOWN";
- default:
- return null;
- }
- }
-
- @Override
- public boolean isButtonPressed(int index) {
- if(index < 8){
- return (buttonData.get(index) == 1);
- }else return false;
- }
-
- @Override
- public void poll() {
-
- //axisData = GLFW.glfwGetJoystickAxes(jid);
- //buttonData = GLFW.glfwGetJoystickButtons(jid);
- }
-
- @Override
- public float getPovX() {
- return axisData.get(6);
- }
-
- @Override
- public float getPovY() {
- return axisData.get(7);
- }
-
- @Override
- public float getDeadZone(int index) {
- return 0;
- }
-
- @Override
- public void setDeadZone(int index, float zone) {
-
- }
-
- @Override
- public int getAxisCount() {
- return 8;
- }
-
- @Override
- public String getAxisName(int index) {
- switch(index) {
- case 0:
- return "AXIS X";
- case 1:
- return "AXIS Y";
- case 2:
- return "AXIS Z";
- case 3:
- return "AXIS RX";
- case 4:
- return "AXIS RY";
- case 5:
- return "AXIS RZ";
- case 6:
- return "HAT/POV X";
- case 7:
- return "HAT/POV Y";
- default:
- return null;
- }
-
- }
-
- @Override
- public float getAxisValue(int index) {
- return axisData.get(index);
- }
-
- @Override
- public float getXAxisValue() {
- return axisData.get(0);
- }
-
- @Override
- public float getXAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setXAxisDeadZone(float zone) {
-
- }
-
- @Override
- public float getYAxisValue() {
- return axisData.get(1);
- }
-
- @Override
- public float getYAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setYAxisDeadZone(float zone) {
-
- }
-
- @Override
- public float getZAxisValue() {
- return axisData.get(2);
- }
-
- @Override
- public float getZAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setZAxisDeadZone(float zone) {
-
- }
-
- @Override
- public float getRXAxisValue() {
- return axisData.get(3);
- }
-
- @Override
- public float getRXAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setRXAxisDeadZone(float zone) {
-
- }
-
- @Override
- public float getRYAxisValue() {
- return axisData.get(4);
- }
-
- @Override
- public float getRYAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setRYAxisDeadZone(float zone) {
-
- }
-
- @Override
- public float getRZAxisValue() {
- return axisData.get(5);
- }
-
- @Override
- public float getRZAxisDeadZone() {
- return 0;
- }
-
- @Override
- public void setRZAxisDeadZone(float zone) {
-
- }
-
- @Override
- public int getRumblerCount() {
- return 0;
- }
-
- @Override
- public String getRumblerName(int index) {
- return null;
- }
-
- @Override
- public void setRumblerStrength(int index, float strength) {
-
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWInputImplementation.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWInputImplementation.java
deleted file mode 100644
index 21ae6495e..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/GLFWInputImplementation.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.lwjgl.input;
-
-import org.lwjgl.LWJGLException;
-import org.lwjgl.glfw.GLFW;
-import org.lwjgl.opengl.Display;
-import org.lwjgl.opengl.InputImplementation;
-
-import java.nio.ByteBuffer;
-import java.nio.IntBuffer;
-
-public class GLFWInputImplementation implements InputImplementation {
- public static final GLFWInputImplementation singleton = new GLFWInputImplementation();
- private final ByteBuffer event_buffer = ByteBuffer.allocate(Mouse.EVENT_SIZE);
- private EventQueue event_queue = new EventQueue(Mouse.EVENT_SIZE);
- private final EventQueue keyboardEventQueue = new EventQueue(Keyboard.EVENT_SIZE);
- private final ByteBuffer keyboardEvent = ByteBuffer.allocate(Keyboard.EVENT_SIZE);
- public final byte[] key_down_buffer = new byte[Keyboard.KEYBOARD_SIZE];
- public final byte[] mouse_buffer = new byte[3];
- public int mouseX = 0;
- public int mouseY = 0;
- public int mouseLastEventX = 0;
- public int mouseLastEventY = 0;
- public int mouseLastX = 0;
- public int mouseLastY = 0;
- public int mouseComparatorX;
- public int mouseComparatorY;
- public boolean grab;
- private long last_event_nanos = System.nanoTime();
- @Override
- public boolean hasWheel() {
- return true;
- }
-
- @Override
- public int getButtonCount() {
- return 3;
- }
-
- @Override
- public void createMouse() throws LWJGLException {
- }
-
- @Override
- public void destroyMouse() {
-
- }
-
- @Override
- public void pollMouse(IntBuffer coord_buffer, ByteBuffer buttons) {
- coord_buffer.put(0, grab? mouseX - mouseLastX: mouseX);
- coord_buffer.put(1, grab? mouseY - mouseLastY: mouseY);
- //System.out.println("Poll Call: Buffer length="+buttons.capacity()+"; Pos="+buttons.position());
- buttons.rewind();
- buttons.put(mouse_buffer);
- mouseLastX = mouseX;
- mouseLastY = mouseY;
- }
-
- @Override
- public void readMouse(ByteBuffer buffer) {
- event_queue.copyEvents(buffer);
- }
-
- @Override
- public void grabMouse(boolean new_grab) {
- System.out.println("Grab: " + new_grab);
- grab = new_grab;
- GLFW.glfwSetInputMode(Display.getWindow(), GLFW.GLFW_CURSOR,
- grab ? GLFW.GLFW_CURSOR_DISABLED : GLFW.GLFW_CURSOR_NORMAL);
- }
-
- @Override
- public int getNativeCursorCapabilities() {
- return 0;
- }
-
- @Override
- public void setCursorPosition(int x, int y) {
-
- }
-
- @Override
- public void setNativeCursor(Object handle) throws LWJGLException {
-
- }
-
- @Override
- public int getMinCursorSize() {
- return 0;
- }
-
- @Override
- public int getMaxCursorSize() {
- return 0;
- }
-
- @Override
- public void createKeyboard() throws LWJGLException {
-
- }
-
- @Override
- public void destroyKeyboard() {
-
- }
-
- @Override
- public void pollKeyboard(ByteBuffer keyDownBuffer) {
- int old_position = keyDownBuffer.position();
- keyDownBuffer.put(key_down_buffer);
- keyDownBuffer.position(old_position);
- }
-
- public void readKeyboard(ByteBuffer buffer) {
- keyboardEventQueue.copyEvents(buffer);
- }
-
- @Override
- public Object createCursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws LWJGLException {
- return null;
- }
-
- @Override
- public void destroyCursor(Object cursor_handle) {
-
- }
-
- @Override
- public int getWidth() {
- return Display.getWidth();
- }
-
- @Override
- public int getHeight() {
- return Display.getHeight();
- }
-
- @Override
- public boolean isInsideWindow() {
- return true;
- }
-
- public void putMouseEventWithCoords(byte button, byte state, int coord1, int coord2, int dz, long nanos) {
- int acoord1=0;
- int acoord2=0;
- if(coord1 == -1 && coord2 == -1) {
- acoord1 = mouseX;
- acoord2 = mouseY;
- }else{
- acoord1 = coord1;
- acoord2= coord2;
- }
- event_buffer.clear();
- event_buffer.put(button).put(state);
- //always put deltas when grabbed
- if (grab) {
- event_buffer.putInt(acoord1-mouseX).putInt(acoord2-mouseY);
- }else{
- event_buffer.putInt(acoord1).putInt(acoord2);
- }
- if(button != -1) {
- mouse_buffer[button]=state;
- }
- event_buffer.putInt(dz).putLong(nanos);
- event_buffer.flip();
- event_queue.putEvent(event_buffer);
- last_event_nanos = nanos;
- mouseX = acoord1;
- mouseY = acoord2;
- }
-
- public void setMouseButtonInGrabMode(byte button, byte state) {
- long nanos = System.nanoTime();
- event_buffer.clear();
- event_buffer.put(button).put(state).putInt(0).putInt(0).putInt(0).putLong(nanos);
- event_buffer.flip();
- event_queue.putEvent(event_buffer);
- last_event_nanos = nanos;
- }
- public void putKeyboardEvent(int keycode, byte state, int ch, long nanos, boolean repeat) {
- key_down_buffer[keycode] = state;
- keyboardEvent.clear();
- keyboardEvent.putInt(keycode).put(state).putInt(ch).putLong(nanos).put(repeat ? (byte)1 : (byte)0);
- keyboardEvent.flip();
- keyboardEventQueue.putEvent(keyboardEvent);
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/KeyCodes.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/KeyCodes.java
deleted file mode 100644
index 55fa70649..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/KeyCodes.java
+++ /dev/null
@@ -1,321 +0,0 @@
-package org.lwjgl.input;
-
-import org.lwjgl.glfw.GLFW;
-
-public class KeyCodes {
-
- public static int toLwjglKey(int glfwKeyCode) {
-
- switch(glfwKeyCode) {
-
- case GLFW.GLFW_KEY_ESCAPE : return Keyboard.KEY_ESCAPE;
- case GLFW.GLFW_KEY_BACKSPACE: return Keyboard.KEY_BACK;
- case GLFW.GLFW_KEY_TAB : return Keyboard.KEY_TAB;
- case GLFW.GLFW_KEY_ENTER : return Keyboard.KEY_RETURN;
- case GLFW.GLFW_KEY_SPACE : return Keyboard.KEY_SPACE;
-
- case GLFW.GLFW_KEY_LEFT_CONTROL : return Keyboard.KEY_LCONTROL;
- case GLFW.GLFW_KEY_LEFT_SHIFT : return Keyboard.KEY_LSHIFT;
- case GLFW.GLFW_KEY_LEFT_ALT : return Keyboard.KEY_LMENU;
- case GLFW.GLFW_KEY_LEFT_SUPER : return Keyboard.KEY_LMETA;
-
- case GLFW.GLFW_KEY_RIGHT_CONTROL: return Keyboard.KEY_RCONTROL;
- case GLFW.GLFW_KEY_RIGHT_SHIFT : return Keyboard.KEY_RSHIFT;
- case GLFW.GLFW_KEY_RIGHT_ALT : return Keyboard.KEY_RMENU;
- case GLFW.GLFW_KEY_RIGHT_SUPER : return Keyboard.KEY_RMETA;
-
- case GLFW.GLFW_KEY_1 : return Keyboard.KEY_1;
- case GLFW.GLFW_KEY_2 : return Keyboard.KEY_2;
- case GLFW.GLFW_KEY_3 : return Keyboard.KEY_3;
- case GLFW.GLFW_KEY_4 : return Keyboard.KEY_4;
- case GLFW.GLFW_KEY_5 : return Keyboard.KEY_5;
- case GLFW.GLFW_KEY_6 : return Keyboard.KEY_6;
- case GLFW.GLFW_KEY_7 : return Keyboard.KEY_7;
- case GLFW.GLFW_KEY_8 : return Keyboard.KEY_8;
- case GLFW.GLFW_KEY_9 : return Keyboard.KEY_9;
- case GLFW.GLFW_KEY_0 : return Keyboard.KEY_0;
-
- case GLFW.GLFW_KEY_A : return Keyboard.KEY_A;
- case GLFW.GLFW_KEY_B : return Keyboard.KEY_B;
- case GLFW.GLFW_KEY_C : return Keyboard.KEY_C;
- case GLFW.GLFW_KEY_D : return Keyboard.KEY_D;
- case GLFW.GLFW_KEY_E : return Keyboard.KEY_E;
- case GLFW.GLFW_KEY_F : return Keyboard.KEY_F;
- case GLFW.GLFW_KEY_G : return Keyboard.KEY_G;
- case GLFW.GLFW_KEY_H : return Keyboard.KEY_H;
- case GLFW.GLFW_KEY_I : return Keyboard.KEY_I;
- case GLFW.GLFW_KEY_J : return Keyboard.KEY_J;
- case GLFW.GLFW_KEY_K : return Keyboard.KEY_K;
- case GLFW.GLFW_KEY_L : return Keyboard.KEY_L;
- case GLFW.GLFW_KEY_M : return Keyboard.KEY_M;
- case GLFW.GLFW_KEY_N : return Keyboard.KEY_N;
- case GLFW.GLFW_KEY_O : return Keyboard.KEY_O;
- case GLFW.GLFW_KEY_P : return Keyboard.KEY_P;
- case GLFW.GLFW_KEY_Q : return Keyboard.KEY_Q;
- case GLFW.GLFW_KEY_R : return Keyboard.KEY_R;
- case GLFW.GLFW_KEY_S : return Keyboard.KEY_S;
- case GLFW.GLFW_KEY_T : return Keyboard.KEY_T;
- case GLFW.GLFW_KEY_U : return Keyboard.KEY_U;
- case GLFW.GLFW_KEY_V : return Keyboard.KEY_V;
- case GLFW.GLFW_KEY_W : return Keyboard.KEY_W;
- case GLFW.GLFW_KEY_X : return Keyboard.KEY_X;
- case GLFW.GLFW_KEY_Y : return Keyboard.KEY_Y;
- case GLFW.GLFW_KEY_Z : return Keyboard.KEY_Z;
-
- case GLFW.GLFW_KEY_UP : return Keyboard.KEY_UP;
- case GLFW.GLFW_KEY_DOWN : return Keyboard.KEY_DOWN;
- case GLFW.GLFW_KEY_LEFT : return Keyboard.KEY_LEFT;
- case GLFW.GLFW_KEY_RIGHT : return Keyboard.KEY_RIGHT;
-
- case GLFW.GLFW_KEY_INSERT : return Keyboard.KEY_INSERT;
- case GLFW.GLFW_KEY_DELETE : return Keyboard.KEY_DELETE;
- case GLFW.GLFW_KEY_HOME : return Keyboard.KEY_HOME;
- case GLFW.GLFW_KEY_END : return Keyboard.KEY_END;
- case GLFW.GLFW_KEY_PAGE_UP : return Keyboard.KEY_PRIOR;
- case GLFW.GLFW_KEY_PAGE_DOWN: return Keyboard.KEY_NEXT;
-
- case GLFW.GLFW_KEY_F1 : return Keyboard.KEY_F1;
- case GLFW.GLFW_KEY_F2 : return Keyboard.KEY_F2;
- case GLFW.GLFW_KEY_F3 : return Keyboard.KEY_F3;
- case GLFW.GLFW_KEY_F4 : return Keyboard.KEY_F4;
- case GLFW.GLFW_KEY_F5 : return Keyboard.KEY_F5;
- case GLFW.GLFW_KEY_F6 : return Keyboard.KEY_F6;
- case GLFW.GLFW_KEY_F7 : return Keyboard.KEY_F7;
- case GLFW.GLFW_KEY_F8 : return Keyboard.KEY_F8;
- case GLFW.GLFW_KEY_F9 : return Keyboard.KEY_F9;
- case GLFW.GLFW_KEY_F10 : return Keyboard.KEY_F10;
- case GLFW.GLFW_KEY_F11 : return Keyboard.KEY_F11;
- case GLFW.GLFW_KEY_F12 : return Keyboard.KEY_F12;
- case GLFW.GLFW_KEY_F13 : return Keyboard.KEY_F13;
- case GLFW.GLFW_KEY_F14 : return Keyboard.KEY_F14;
- case GLFW.GLFW_KEY_F15 : return Keyboard.KEY_F15;
- case GLFW.GLFW_KEY_F16 : return Keyboard.KEY_F16;
- case GLFW.GLFW_KEY_F17 : return Keyboard.KEY_F17;
- case GLFW.GLFW_KEY_F18 : return Keyboard.KEY_F18;
- case GLFW.GLFW_KEY_F19 : return Keyboard.KEY_F19;
-
- case GLFW.GLFW_KEY_KP_1 : return Keyboard.KEY_NUMPAD1;
- case GLFW.GLFW_KEY_KP_2 : return Keyboard.KEY_NUMPAD2;
- case GLFW.GLFW_KEY_KP_3 : return Keyboard.KEY_NUMPAD3;
- case GLFW.GLFW_KEY_KP_4 : return Keyboard.KEY_NUMPAD4;
- case GLFW.GLFW_KEY_KP_5 : return Keyboard.KEY_NUMPAD5;
- case GLFW.GLFW_KEY_KP_6 : return Keyboard.KEY_NUMPAD6;
- case GLFW.GLFW_KEY_KP_7 : return Keyboard.KEY_NUMPAD7;
- case GLFW.GLFW_KEY_KP_8 : return Keyboard.KEY_NUMPAD8;
- case GLFW.GLFW_KEY_KP_9 : return Keyboard.KEY_NUMPAD9;
- case GLFW.GLFW_KEY_KP_0 : return Keyboard.KEY_NUMPAD0;
-
- case GLFW.GLFW_KEY_KP_ADD : return Keyboard.KEY_ADD;
- case GLFW.GLFW_KEY_KP_SUBTRACT : return Keyboard.KEY_SUBTRACT;
- case GLFW.GLFW_KEY_KP_MULTIPLY : return Keyboard.KEY_MULTIPLY;
- case GLFW.GLFW_KEY_KP_DIVIDE: return Keyboard.KEY_DIVIDE;
- case GLFW.GLFW_KEY_KP_DECIMAL : return Keyboard.KEY_DECIMAL;
- case GLFW.GLFW_KEY_KP_EQUAL : return Keyboard.KEY_NUMPADEQUALS;
- case GLFW.GLFW_KEY_KP_ENTER : return Keyboard.KEY_NUMPADENTER;
- case GLFW.GLFW_KEY_NUM_LOCK : return Keyboard.KEY_NUMLOCK;
-
- case GLFW.GLFW_KEY_SEMICOLON: return Keyboard.KEY_SEMICOLON;
- case GLFW.GLFW_KEY_BACKSLASH: return Keyboard.KEY_BACKSLASH;
- case GLFW.GLFW_KEY_COMMA : return Keyboard.KEY_COMMA;
- case GLFW.GLFW_KEY_PERIOD : return Keyboard.KEY_PERIOD;
- case GLFW.GLFW_KEY_SLASH : return Keyboard.KEY_SLASH;
- case GLFW.GLFW_KEY_GRAVE_ACCENT : return Keyboard.KEY_GRAVE;
-
- case GLFW.GLFW_KEY_CAPS_LOCK: return Keyboard.KEY_CAPITAL;
- case GLFW.GLFW_KEY_SCROLL_LOCK : return Keyboard.KEY_SCROLL;
-
- case GLFW.GLFW_KEY_WORLD_1 : return Keyboard.KEY_CIRCUMFLEX; // TODO not sure if correct
- case GLFW.GLFW_KEY_PAUSE : return Keyboard.KEY_PAUSE;
-
- case GLFW.GLFW_KEY_MINUS : return Keyboard.KEY_MINUS;
- case GLFW.GLFW_KEY_EQUAL : return Keyboard.KEY_EQUALS;
- case GLFW.GLFW_KEY_LEFT_BRACKET : return Keyboard.KEY_LBRACKET;
- case GLFW.GLFW_KEY_RIGHT_BRACKET: return Keyboard.KEY_RBRACKET;
- case GLFW.GLFW_KEY_APOSTROPHE : return Keyboard.KEY_APOSTROPHE;
-// public static final int KEY_AT = 0x91; /* (NEC PC98) */
-// public static final int KEY_COLON = 0x92; /* (NEC PC98) */
-// public static final int KEY_UNDERLINE = 0x93; /* (NEC PC98) */
-
-// public static final int KEY_KANA = 0x70; /* (Japanese keyboard) */
-// public static final int KEY_CONVERT = 0x79; /* (Japanese keyboard) */
-// public static final int KEY_NOCONVERT = 0x7B; /* (Japanese keyboard) */
-// public static final int KEY_YEN = 0x7D; /* (Japanese keyboard) */
-// public static final int KEY_CIRCUMFLEX = 0x90; /* (Japanese keyboard) */
-// public static final int KEY_KANJI = 0x94; /* (Japanese keyboard) */
-// public static final int KEY_STOP = 0x95; /* (NEC PC98) */
-// public static final int KEY_AX = 0x96; /* (Japan AX) */
-// public static final int KEY_UNLABELED = 0x97; /* (J3100) */
-// public static final int KEY_SECTION = 0xA7; /* Section symbol (Mac) */
-// public static final int KEY_NUMPADCOMMA = 0xB3; /* , on numeric keypad (NEC PC98) */
-// public static final int KEY_SYSRQ = 0xB7;
-// public static final int KEY_FUNCTION = 0xC4; /* Function (Mac) */
-// public static final int KEY_CLEAR = 0xDA; /* Clear key (Mac) */
-
-// public static final int KEY_APPS = 0xDD; /* AppMenu key */
-// public static final int KEY_POWER = 0xDE;
-// public static final int KEY_SLEEP = 0xDF;
-
- default: System.out.println("UNKNOWN GLFW KEY CODE: " + glfwKeyCode);
- return Keyboard.KEY_NONE;
- }
- }
-
- public static int toGlfwKey(int lwjglKeyCode) {
-
- switch(lwjglKeyCode) {
-
- case Keyboard.KEY_ESCAPE : return GLFW.GLFW_KEY_ESCAPE;
- case Keyboard.KEY_BACK : return GLFW.GLFW_KEY_BACKSPACE;
- case Keyboard.KEY_TAB : return GLFW.GLFW_KEY_TAB;
- case Keyboard.KEY_RETURN : return GLFW.GLFW_KEY_ENTER;
- case Keyboard.KEY_SPACE : return GLFW.GLFW_KEY_SPACE;
-
- case Keyboard.KEY_LCONTROL : return GLFW.GLFW_KEY_LEFT_CONTROL;
- case Keyboard.KEY_LSHIFT : return GLFW.GLFW_KEY_LEFT_SHIFT;
- case Keyboard.KEY_LMENU : return GLFW.GLFW_KEY_LEFT_ALT;
- case Keyboard.KEY_LMETA : return GLFW.GLFW_KEY_LEFT_SUPER;
-
- case Keyboard.KEY_RCONTROL : return GLFW.GLFW_KEY_RIGHT_CONTROL;
- case Keyboard.KEY_RSHIFT : return GLFW.GLFW_KEY_RIGHT_SHIFT;
- case Keyboard.KEY_RMENU : return GLFW.GLFW_KEY_RIGHT_ALT;
- case Keyboard.KEY_RMETA : return GLFW.GLFW_KEY_RIGHT_SUPER;
-
- case Keyboard.KEY_1 : return GLFW.GLFW_KEY_1;
- case Keyboard.KEY_2 : return GLFW.GLFW_KEY_2;
- case Keyboard.KEY_3 : return GLFW.GLFW_KEY_3;
- case Keyboard.KEY_4 : return GLFW.GLFW_KEY_4;
- case Keyboard.KEY_5 : return GLFW.GLFW_KEY_5;
- case Keyboard.KEY_6 : return GLFW.GLFW_KEY_6;
- case Keyboard.KEY_7 : return GLFW.GLFW_KEY_7;
- case Keyboard.KEY_8 : return GLFW.GLFW_KEY_8;
- case Keyboard.KEY_9 : return GLFW.GLFW_KEY_9;
- case Keyboard.KEY_0 : return GLFW.GLFW_KEY_0;
-
- case Keyboard.KEY_A : return GLFW.GLFW_KEY_A;
- case Keyboard.KEY_B : return GLFW.GLFW_KEY_B;
- case Keyboard.KEY_C : return GLFW.GLFW_KEY_C;
- case Keyboard.KEY_D : return GLFW.GLFW_KEY_D;
- case Keyboard.KEY_E : return GLFW.GLFW_KEY_E;
- case Keyboard.KEY_F : return GLFW.GLFW_KEY_F;
- case Keyboard.KEY_G : return GLFW.GLFW_KEY_G;
- case Keyboard.KEY_H : return GLFW.GLFW_KEY_H;
- case Keyboard.KEY_I : return GLFW.GLFW_KEY_I;
- case Keyboard.KEY_J : return GLFW.GLFW_KEY_J;
- case Keyboard.KEY_K : return GLFW.GLFW_KEY_K;
- case Keyboard.KEY_L : return GLFW.GLFW_KEY_L;
- case Keyboard.KEY_M : return GLFW.GLFW_KEY_M;
- case Keyboard.KEY_N : return GLFW.GLFW_KEY_N;
- case Keyboard.KEY_O : return GLFW.GLFW_KEY_O;
- case Keyboard.KEY_P : return GLFW.GLFW_KEY_P;
- case Keyboard.KEY_Q : return GLFW.GLFW_KEY_Q;
- case Keyboard.KEY_R : return GLFW.GLFW_KEY_R;
- case Keyboard.KEY_S : return GLFW.GLFW_KEY_S;
- case Keyboard.KEY_T : return GLFW.GLFW_KEY_T;
- case Keyboard.KEY_U : return GLFW.GLFW_KEY_U;
- case Keyboard.KEY_V : return GLFW.GLFW_KEY_V;
- case Keyboard.KEY_W : return GLFW.GLFW_KEY_W;
- case Keyboard.KEY_X : return GLFW.GLFW_KEY_X;
- case Keyboard.KEY_Y : return GLFW.GLFW_KEY_Y;
- case Keyboard.KEY_Z : return GLFW.GLFW_KEY_Z;
-
- case Keyboard.KEY_UP : return GLFW.GLFW_KEY_UP;
- case Keyboard.KEY_DOWN : return GLFW.GLFW_KEY_DOWN;
- case Keyboard.KEY_LEFT : return GLFW.GLFW_KEY_LEFT;
- case Keyboard.KEY_RIGHT : return GLFW.GLFW_KEY_RIGHT;
-
- case Keyboard.KEY_INSERT : return GLFW.GLFW_KEY_INSERT;
- case Keyboard.KEY_DELETE : return GLFW.GLFW_KEY_DELETE;
- case Keyboard.KEY_HOME : return GLFW.GLFW_KEY_HOME;
- case Keyboard.KEY_END : return GLFW.GLFW_KEY_END;
- case Keyboard.KEY_PRIOR : return GLFW.GLFW_KEY_PAGE_UP;
- case Keyboard.KEY_NEXT : return GLFW.GLFW_KEY_PAGE_DOWN;
-
- case Keyboard.KEY_F1 : return GLFW.GLFW_KEY_F1;
- case Keyboard.KEY_F2 : return GLFW.GLFW_KEY_F2;
- case Keyboard.KEY_F3 : return GLFW.GLFW_KEY_F3;
- case Keyboard.KEY_F4 : return GLFW.GLFW_KEY_F4;
- case Keyboard.KEY_F5 : return GLFW.GLFW_KEY_F5;
- case Keyboard.KEY_F6 : return GLFW.GLFW_KEY_F6;
- case Keyboard.KEY_F7 : return GLFW.GLFW_KEY_F7;
- case Keyboard.KEY_F8 : return GLFW.GLFW_KEY_F8;
- case Keyboard.KEY_F9 : return GLFW.GLFW_KEY_F9;
- case Keyboard.KEY_F10 : return GLFW.GLFW_KEY_F10;
- case Keyboard.KEY_F11 : return GLFW.GLFW_KEY_F11;
- case Keyboard.KEY_F12 : return GLFW.GLFW_KEY_F12;
- case Keyboard.KEY_F13 : return GLFW.GLFW_KEY_F13;
- case Keyboard.KEY_F14 : return GLFW.GLFW_KEY_F14;
- case Keyboard.KEY_F15 : return GLFW.GLFW_KEY_F15;
- case Keyboard.KEY_F16 : return GLFW.GLFW_KEY_F16;
- case Keyboard.KEY_F17 : return GLFW.GLFW_KEY_F17;
- case Keyboard.KEY_F18 : return GLFW.GLFW_KEY_F18;
- case Keyboard.KEY_F19 : return GLFW.GLFW_KEY_F19;
-
- case Keyboard.KEY_NUMPAD1 : return GLFW.GLFW_KEY_KP_1;
- case Keyboard.KEY_NUMPAD2 : return GLFW.GLFW_KEY_KP_2;
- case Keyboard.KEY_NUMPAD3 : return GLFW.GLFW_KEY_KP_3;
- case Keyboard.KEY_NUMPAD4 : return GLFW.GLFW_KEY_KP_4;
- case Keyboard.KEY_NUMPAD5 : return GLFW.GLFW_KEY_KP_5;
- case Keyboard.KEY_NUMPAD6 : return GLFW.GLFW_KEY_KP_6;
- case Keyboard.KEY_NUMPAD7 : return GLFW.GLFW_KEY_KP_7;
- case Keyboard.KEY_NUMPAD8 : return GLFW.GLFW_KEY_KP_8;
- case Keyboard.KEY_NUMPAD9 : return GLFW.GLFW_KEY_KP_9;
- case Keyboard.KEY_NUMPAD0 : return GLFW.GLFW_KEY_KP_0;
-
- case Keyboard.KEY_ADD : return GLFW.GLFW_KEY_KP_ADD;
- case Keyboard.KEY_SUBTRACT : return GLFW.GLFW_KEY_KP_SUBTRACT;
- case Keyboard.KEY_MULTIPLY : return GLFW.GLFW_KEY_KP_MULTIPLY;
- case Keyboard.KEY_DIVIDE : return GLFW.GLFW_KEY_KP_DIVIDE;
- case Keyboard.KEY_DECIMAL : return GLFW.GLFW_KEY_KP_DECIMAL;
- case Keyboard.KEY_NUMPADEQUALS : return GLFW.GLFW_KEY_KP_EQUAL;
- case Keyboard.KEY_NUMPADENTER : return GLFW.GLFW_KEY_KP_ENTER;
- case Keyboard.KEY_NUMLOCK : return GLFW.GLFW_KEY_NUM_LOCK;
-
- case Keyboard.KEY_SEMICOLON : return GLFW.GLFW_KEY_SEMICOLON;
- case Keyboard.KEY_BACKSLASH : return GLFW.GLFW_KEY_BACKSLASH;
- case Keyboard.KEY_COMMA : return GLFW.GLFW_KEY_COMMA;
- case Keyboard.KEY_PERIOD : return GLFW.GLFW_KEY_PERIOD;
- case Keyboard.KEY_SLASH : return GLFW.GLFW_KEY_SLASH;
- case Keyboard.KEY_GRAVE : return GLFW.GLFW_KEY_GRAVE_ACCENT;
-
- case Keyboard.KEY_CAPITAL : return GLFW.GLFW_KEY_CAPS_LOCK;
- case Keyboard.KEY_SCROLL : return GLFW.GLFW_KEY_SCROLL_LOCK;
-
- case Keyboard.KEY_PAUSE : return GLFW.GLFW_KEY_PAUSE;
- case Keyboard.KEY_CIRCUMFLEX: return GLFW.GLFW_KEY_WORLD_1; // TODO not sure if correct
-
- case Keyboard.KEY_MINUS : return GLFW.GLFW_KEY_MINUS;
- case Keyboard.KEY_EQUALS : return GLFW.GLFW_KEY_EQUAL;
- case Keyboard.KEY_LBRACKET : return GLFW.GLFW_KEY_LEFT_BRACKET;
- case Keyboard.KEY_RBRACKET : return GLFW.GLFW_KEY_RIGHT_BRACKET;
- case Keyboard.KEY_APOSTROPHE: return GLFW.GLFW_KEY_APOSTROPHE;
-// public static final int KEY_AT = 0x91; /* (NEC PC98) */
-// public static final int KEY_COLON = 0x92; /* (NEC PC98) */
-// public static final int KEY_UNDERLINE = 0x93; /* (NEC PC98) */
-
-// public static final int KEY_KANA = 0x70; /* (Japanese keyboard) */
-// public static final int KEY_CONVERT = 0x79; /* (Japanese keyboard) */
-// public static final int KEY_NOCONVERT = 0x7B; /* (Japanese keyboard) */
-// public static final int KEY_YEN = 0x7D; /* (Japanese keyboard) */
-
-// public static final int KEY_CIRCUMFLEX = 0x90; /* (Japanese keyboard) */
-// public static final int KEY_KANJI = 0x94; /* (Japanese keyboard) */
-// public static final int KEY_STOP = 0x95; /* (NEC PC98) */
-// public static final int KEY_AX = 0x96; /* (Japan AX) */
-// public static final int KEY_UNLABELED = 0x97; /* (J3100) */
-// public static final int KEY_SECTION = 0xA7; /* Section symbol (Mac) */
-// public static final int KEY_NUMPADCOMMA = 0xB3; /* , on numeric keypad (NEC PC98) */
-// public static final int KEY_SYSRQ = 0xB7;
-// public static final int KEY_FUNCTION = 0xC4; /* Function (Mac) */
-
-// public static final int KEY_CLEAR = 0xDA; /* Clear key (Mac) */
-
-// public static final int KEY_APPS = 0xDD; /* AppMenu key */
-// public static final int KEY_POWER = 0xDE;
-// public static final int KEY_SLEEP = 0xDF;
-
- default: System.out.println("UNKNOWN LWJGL KEY CODE: " + lwjglKeyCode);
- return GLFW.GLFW_KEY_UNKNOWN;
- }
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Keyboard.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Keyboard.java
deleted file mode 100644
index e389f0285..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Keyboard.java
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.input;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.LWJGLException;
-import org.lwjgl.Sys;
-import org.lwjgl.opengl.Display;
-import org.lwjgl.opengl.InputImplementation;
-
-/**
- *
- * A raw Keyboard interface. This can be used to poll the current state of the
- * keys, or read all the keyboard presses / releases since the last read.
- *
- * @author cix_foo
- * @author elias_naur
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public class Keyboard {
- /** Internal use - event size in bytes */
- public static final int EVENT_SIZE = 4 + 1 + 4 + 8 + 1;
-
- /**
- * The special character meaning that no
- * character was translated for the event.
- */
- public static final int CHAR_NONE = '\0';
-
- /**
- * The special keycode meaning that only the
- * translated character is valid.
- */
- public static final int KEY_NONE = 0x00;
-
- public static final int KEY_ESCAPE = 0x01;
- public static final int KEY_1 = 0x02;
- public static final int KEY_2 = 0x03;
- public static final int KEY_3 = 0x04;
- public static final int KEY_4 = 0x05;
- public static final int KEY_5 = 0x06;
- public static final int KEY_6 = 0x07;
- public static final int KEY_7 = 0x08;
- public static final int KEY_8 = 0x09;
- public static final int KEY_9 = 0x0A;
- public static final int KEY_0 = 0x0B;
- public static final int KEY_MINUS = 0x0C; /* - on main keyboard */
- public static final int KEY_EQUALS = 0x0D;
- public static final int KEY_BACK = 0x0E; /* backspace */
- public static final int KEY_TAB = 0x0F;
- public static final int KEY_Q = 0x10;
- public static final int KEY_W = 0x11;
- public static final int KEY_E = 0x12;
- public static final int KEY_R = 0x13;
- public static final int KEY_T = 0x14;
- public static final int KEY_Y = 0x15;
- public static final int KEY_U = 0x16;
- public static final int KEY_I = 0x17;
- public static final int KEY_O = 0x18;
- public static final int KEY_P = 0x19;
- public static final int KEY_LBRACKET = 0x1A;
- public static final int KEY_RBRACKET = 0x1B;
- public static final int KEY_RETURN = 0x1C; /* Enter on main keyboard */
- public static final int KEY_LCONTROL = 0x1D;
- public static final int KEY_A = 0x1E;
- public static final int KEY_S = 0x1F;
- public static final int KEY_D = 0x20;
- public static final int KEY_F = 0x21;
- public static final int KEY_G = 0x22;
- public static final int KEY_H = 0x23;
- public static final int KEY_J = 0x24;
- public static final int KEY_K = 0x25;
- public static final int KEY_L = 0x26;
- public static final int KEY_SEMICOLON = 0x27;
- public static final int KEY_APOSTROPHE = 0x28;
- public static final int KEY_GRAVE = 0x29; /* accent grave */
- public static final int KEY_LSHIFT = 0x2A;
- public static final int KEY_BACKSLASH = 0x2B;
- public static final int KEY_Z = 0x2C;
- public static final int KEY_X = 0x2D;
- public static final int KEY_C = 0x2E;
- public static final int KEY_V = 0x2F;
- public static final int KEY_B = 0x30;
- public static final int KEY_N = 0x31;
- public static final int KEY_M = 0x32;
- public static final int KEY_COMMA = 0x33;
- public static final int KEY_PERIOD = 0x34; /* . on main keyboard */
- public static final int KEY_SLASH = 0x35; /* / on main keyboard */
- public static final int KEY_RSHIFT = 0x36;
- public static final int KEY_MULTIPLY = 0x37; /* * on numeric keypad */
- public static final int KEY_LMENU = 0x38; /* left Alt */
- public static final int KEY_SPACE = 0x39;
- public static final int KEY_CAPITAL = 0x3A;
- public static final int KEY_F1 = 0x3B;
- public static final int KEY_F2 = 0x3C;
- public static final int KEY_F3 = 0x3D;
- public static final int KEY_F4 = 0x3E;
- public static final int KEY_F5 = 0x3F;
- public static final int KEY_F6 = 0x40;
- public static final int KEY_F7 = 0x41;
- public static final int KEY_F8 = 0x42;
- public static final int KEY_F9 = 0x43;
- public static final int KEY_F10 = 0x44;
- public static final int KEY_NUMLOCK = 0x45;
- public static final int KEY_SCROLL = 0x46; /* Scroll Lock */
- public static final int KEY_NUMPAD7 = 0x47;
- public static final int KEY_NUMPAD8 = 0x48;
- public static final int KEY_NUMPAD9 = 0x49;
- public static final int KEY_SUBTRACT = 0x4A; /* - on numeric keypad */
- public static final int KEY_NUMPAD4 = 0x4B;
- public static final int KEY_NUMPAD5 = 0x4C;
- public static final int KEY_NUMPAD6 = 0x4D;
- public static final int KEY_ADD = 0x4E; /* + on numeric keypad */
- public static final int KEY_NUMPAD1 = 0x4F;
- public static final int KEY_NUMPAD2 = 0x50;
- public static final int KEY_NUMPAD3 = 0x51;
- public static final int KEY_NUMPAD0 = 0x52;
- public static final int KEY_DECIMAL = 0x53; /* . on numeric keypad */
- public static final int KEY_F11 = 0x57;
- public static final int KEY_F12 = 0x58;
- public static final int KEY_F13 = 0x64; /* (NEC PC98) */
- public static final int KEY_F14 = 0x65; /* (NEC PC98) */
- public static final int KEY_F15 = 0x66; /* (NEC PC98) */
- public static final int KEY_F16 = 0x67; /* Extended Function keys - (Mac) */
- public static final int KEY_F17 = 0x68;
- public static final int KEY_F18 = 0x69;
- public static final int KEY_KANA = 0x70; /* (Japanese keyboard) */
- public static final int KEY_F19 = 0x71; /* Extended Function keys - (Mac) */
- public static final int KEY_CONVERT = 0x79; /* (Japanese keyboard) */
- public static final int KEY_NOCONVERT = 0x7B; /* (Japanese keyboard) */
- public static final int KEY_YEN = 0x7D; /* (Japanese keyboard) */
- public static final int KEY_NUMPADEQUALS = 0x8D; /* = on numeric keypad (NEC PC98) */
- public static final int KEY_CIRCUMFLEX = 0x90; /* (Japanese keyboard) */
- public static final int KEY_AT = 0x91; /* (NEC PC98) */
- public static final int KEY_COLON = 0x92; /* (NEC PC98) */
- public static final int KEY_UNDERLINE = 0x93; /* (NEC PC98) */
- public static final int KEY_KANJI = 0x94; /* (Japanese keyboard) */
- public static final int KEY_STOP = 0x95; /* (NEC PC98) */
- public static final int KEY_AX = 0x96; /* (Japan AX) */
- public static final int KEY_UNLABELED = 0x97; /* (J3100) */
- public static final int KEY_NUMPADENTER = 0x9C; /* Enter on numeric keypad */
- public static final int KEY_RCONTROL = 0x9D;
- public static final int KEY_SECTION = 0xA7; /* Section symbol (Mac) */
- public static final int KEY_NUMPADCOMMA = 0xB3; /* , on numeric keypad (NEC PC98) */
- public static final int KEY_DIVIDE = 0xB5; /* / on numeric keypad */
- public static final int KEY_SYSRQ = 0xB7;
- public static final int KEY_RMENU = 0xB8; /* right Alt */
- public static final int KEY_FUNCTION = 0xC4; /* Function (Mac) */
- public static final int KEY_PAUSE = 0xC5; /* Pause */
- public static final int KEY_HOME = 0xC7; /* Home on arrow keypad */
- public static final int KEY_UP = 0xC8; /* UpArrow on arrow keypad */
- public static final int KEY_PRIOR = 0xC9; /* PgUp on arrow keypad */
- public static final int KEY_LEFT = 0xCB; /* LeftArrow on arrow keypad */
- public static final int KEY_RIGHT = 0xCD; /* RightArrow on arrow keypad */
- public static final int KEY_END = 0xCF; /* End on arrow keypad */
- public static final int KEY_DOWN = 0xD0; /* DownArrow on arrow keypad */
- public static final int KEY_NEXT = 0xD1; /* PgDn on arrow keypad */
- public static final int KEY_INSERT = 0xD2; /* Insert on arrow keypad */
- public static final int KEY_DELETE = 0xD3; /* Delete on arrow keypad */
- public static final int KEY_CLEAR = 0xDA; /* Clear key (Mac) */
- public static final int KEY_LMETA = 0xDB; /* Left Windows/Option key */
- /**
- * The left windows key, mapped to KEY_LMETA
- *
- * @deprecated Use KEY_LMETA instead
- */
- public static final int KEY_LWIN = KEY_LMETA; /* Left Windows key */
- public static final int KEY_RMETA = 0xDC; /* Right Windows/Option key */
- /**
- * The right windows key, mapped to KEY_RMETA
- *
- * @deprecated Use KEY_RMETA instead
- */
- public static final int KEY_RWIN = KEY_RMETA; /* Right Windows key */
- public static final int KEY_APPS = 0xDD; /* AppMenu key */
- public static final int KEY_POWER = 0xDE;
- public static final int KEY_SLEEP = 0xDF;
-
- /* public static final int STATE_ON = 0;
- public static final int STATE_OFF = 1;
- public static final int STATE_UNKNOWN = 2;
- */
- public static final int KEYBOARD_SIZE = 256;
-
- /** Buffer size in events */
- private static final int BUFFER_SIZE = 50;
-
- /** Key names */
- private static final String[] keyName = new String[KEYBOARD_SIZE];
- private static final Map keyMap = new HashMap(253);
- private static int counter;
-
- static {
- // Use reflection to find out key names
- Field[] fields = Keyboard.class.getFields();
- try {
- for ( Field field : fields ) {
- if ( Modifier.isStatic(field.getModifiers())
- && Modifier.isPublic(field.getModifiers())
- && Modifier.isFinal(field.getModifiers())
- && field.getType().equals(int.class)
- && field.getName().startsWith("KEY_")
- && !field.getName().endsWith("WIN") ) { /* Don't use deprecated names */
-
- int key = field.getInt(null);
- String name = field.getName().substring(4);
- keyName[key] = name;
- keyMap.put(name, key);
- counter++;
- }
-
- }
- } catch (Exception e) {
- }
-
- }
-
- /** The number of keys supported */
- private static final int keyCount = counter;
-
- /** Has the keyboard been created? */
- private static boolean created;
-
- /** Are repeat events enabled? */
- private static boolean repeat_enabled;
-
- /** The keys status from the last poll */
- private static final ByteBuffer keyDownBuffer = BufferUtils.createByteBuffer(KEYBOARD_SIZE);
-
- /**
- * The key events from the last read: a sequence of pairs of key number,
- * followed by state. The state is followed by
- * a 4 byte code point representing the translated character.
- */
- private static ByteBuffer readBuffer;
-
- /** current event */
- private static KeyEvent current_event = new KeyEvent();
-
- /** scratch event */
- private static KeyEvent tmp_event = new KeyEvent();
-
- /** One time initialization */
- private static boolean initialized;
-
- private static InputImplementation implementation;
-
- /**
- * Keyboard cannot be constructed.
- */
- private Keyboard() {
- }
-
- /**
- * Static initialization
- */
- private static void initialize() {
- if (initialized)
- return;
- Sys.initialize();
- initialized = true;
- }
-
- /**
- * "Create" the keyboard with the given implementation. This is used
- * reflectively from AWTInputAdapter.
- *
- * @throws LWJGLException if the keyboard could not be created for any reason
- */
- private static void create(InputImplementation impl) throws LWJGLException {
- if (created)
- return;
- if (!initialized)
- initialize();
- implementation = impl;
- implementation.createKeyboard();
- created = true;
- readBuffer = ByteBuffer.allocate(EVENT_SIZE*BUFFER_SIZE);
- reset();
- }
-
- /**
- * "Create" the keyboard. The display must first have been created. The
- * reason for this is so the keyboard has a window to "focus" in.
- *
- * @throws LWJGLException if the keyboard could not be created for any reason
- */
- public static void create() throws LWJGLException {
- if (!Display.isCreated()) throw new IllegalStateException("Display must be created.");
-
- create((InputImplementation) GLFWInputImplementation.singleton);
- }
-
- private static void reset() {
- readBuffer.limit(0);
- for (int i = 0; i < keyDownBuffer.remaining(); i++)
- keyDownBuffer.put(i, (byte)0);
- current_event.reset();
- }
-
- /**
- * @return true if the keyboard has been created
- */
- public static boolean isCreated() {
- return created;
- }
-
- /**
- * "Destroy" the keyboard
- */
- public static void destroy() {
- if (!created)
- return;
- created = false;
- implementation.destroyKeyboard();
- reset();
- }
-
- /**
- * Polls the keyboard for its current state. Access the polled values using the
- * isKeyDown method.
- * By using this method, it is possible to "miss" keyboard keys if you don't
- * poll fast enough.
- *
- * To use buffered values, you have to call next for each event you
- * want to read. You can query which key caused the event by using
- * getEventKey. To get the state of that key, for that event, use
- * getEventKeyState - finally use getEventCharacter to get the
- * character for that event.
- *
- * NOTE: This method does not query the operating system for new events. To do that,
- * Display.processMessages() (or Display.update()) must be called first.
- *
- * @see org.lwjgl.input.Keyboard#isKeyDown(int key)
- * @see org.lwjgl.input.Keyboard#next()
- * @see org.lwjgl.input.Keyboard#getEventKey()
- * @see org.lwjgl.input.Keyboard#getEventKeyState()
- * @see org.lwjgl.input.Keyboard#getEventCharacter()
- */
- public static void poll() {
- if (!created)
- throw new IllegalStateException("Keyboard must be created before you can poll the device");
- implementation.pollKeyboard(keyDownBuffer);
- read();
- }
-
- private static void read() {
- readBuffer.compact();
- implementation.readKeyboard(readBuffer);
- readBuffer.flip();
- }
-
- /**
- * Checks to see if a key is down.
- * @param key Keycode to check
- * @return true if the key is down according to the last poll()
- */
- public static boolean isKeyDown(int key) {
- if (!created)
- throw new IllegalStateException("Keyboard must be created before you can query key state");
- if(key >= KEYBOARD_SIZE) return false;
- return keyDownBuffer.get(key) != 0;
- }
-
- /**
- * Checks whether one of the state keys are "active"
- *
- * @param key State key to test (KEY_CAPITAL | KEY_NUMLOCK | KEY_SYSRQ)
- * @return STATE_ON if on, STATE_OFF if off and STATE_UNKNOWN if the state is unknown
- */
-/* public static int isStateKeySet(int key) {
- if (!created)
- throw new IllegalStateException("Keyboard must be created before you can query key state");
- return implementation.isStateKeySet(key);
- }
-*/
- /**
- * Gets a key's name
- * @param key The key
- * @return a String with the key's human readable name in it or null if the key is unnamed
- */
- public static synchronized String getKeyName(int key) {
- return keyName[key];
- }
-
- /**
- * Get's a key's index. If the key is unrecognised then KEY_NONE is returned.
- * @param keyName The key name
- */
- public static synchronized int getKeyIndex(String keyName) {
- Integer ret = keyMap.get(keyName);
- if (ret == null)
- return KEY_NONE;
- else
- return ret;
- }
-
- /**
- * Gets the number of keyboard events waiting after doing a buffer enabled poll().
- * @return the number of keyboard events
- */
- public static int getNumKeyboardEvents() {
- if (!created)
- throw new IllegalStateException("Keyboard must be created before you can read events");
- int old_position = readBuffer.position();
- int num_events = 0;
- while (readNext(tmp_event) && (!tmp_event.repeat || repeat_enabled))
- num_events++;
- readBuffer.position(old_position);
- return num_events;
- }
-
- /**
- * Gets the next keyboard event. You can query which key caused the event by using
- * getEventKey. To get the state of that key, for that event, use
- * getEventKeyState - finally use getEventCharacter to get the
- * character for that event.
- *
- * @see org.lwjgl.input.Keyboard#getEventKey()
- * @see org.lwjgl.input.Keyboard#getEventKeyState()
- * @see org.lwjgl.input.Keyboard#getEventCharacter()
- * @return true if a keyboard event was read, false otherwise
- */
- public static boolean next() {
- if (!created)
- throw new IllegalStateException("Keyboard must be created before you can read events");
-
- boolean result;
- while ((result = readNext(current_event)) && current_event.repeat && !repeat_enabled)
- ;
- return result;
- }
-
- /**
- * Controls whether repeat events are reported or not. If repeat events
- * are enabled, key down events are reported when a key is pressed and held for
- * a OS dependent amount of time. To distinguish a repeat event from a normal event,
- * use isRepeatEvent().
- *
- * @see org.lwjgl.input.Keyboard#getEventKey()
- */
- public static void enableRepeatEvents(boolean enable) {
- repeat_enabled = enable;
- }
-
- /**
- * Check whether repeat events are currently reported or not.
- *
- * @return true is repeat events are reported, false if not.
- * @see org.lwjgl.input.Keyboard#getEventKey()
- */
- public static boolean areRepeatEventsEnabled() {
- return repeat_enabled;
- }
-
- private static boolean readNext(KeyEvent event) {
- if (readBuffer.hasRemaining()) {
- event.key = readBuffer.getInt() & 0xFF;
- event.state = readBuffer.get() != 0;
- event.character = readBuffer.getInt();
- event.nanos = readBuffer.getLong();
- event.repeat = readBuffer.get() == 1;
- return true;
- } else
- return false;
- }
-
- /**
- * @return Number of keys on this keyboard
- */
- public static int getKeyCount() {
- return keyCount;
- }
-
- /**
- * @return The character from the current event
- */
- public static char getEventCharacter() {
- return (char)current_event.character;
- }
-
- /**
- * Please note that the key code returned is NOT valid against the
- * current keyboard layout. To get the actual character pressed call
- * getEventCharacter
- *
- * @return The key from the current event
- */
- public static int getEventKey() {
- return current_event.key;
- }
-
- /**
- * Gets the state of the key that generated the
- * current event
- *
- * @return True if key was down, or false if released
- */
- public static boolean getEventKeyState() {
- return current_event.state;
- }
-
- /**
- * Gets the time in nanoseconds of the current event.
- * Only useful for relative comparisons with other
- * Keyboard events, as the absolute time has no defined
- * origin.
- * @return The time in nanoseconds of the current event
- */
- public static long getEventNanoseconds() {
- return current_event.nanos;
- }
-
- /**
- * @see org.lwjgl.input.Keyboard#enableRepeatEvents(boolean)
- * @return true if the current event is a repeat event, false if
- * the current event is not a repeat even or if repeat events are disabled.
- */
- public static boolean isRepeatEvent() {
- return current_event.repeat;
- }
-
- private static final class KeyEvent {
- /** The current keyboard character being examined */
- private int character;
-
- /** The current keyboard event key being examined */
- private int key;
-
- /** The current state of the key being examined in the event queue */
- private boolean state;
-
- /** The current event time */
- private long nanos;
-
- /** Is the current event a repeated event? */
- private boolean repeat;
-
- private void reset() {
- character = 0;
- key = 0;
- state = false;
- repeat = false;
- }
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java
deleted file mode 100644
index 2cfd05a78..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java
+++ /dev/null
@@ -1,661 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- package org.lwjgl.input;
-
-import java.lang.reflect.Constructor;
-import java.nio.ByteBuffer;
-import java.nio.IntBuffer;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.LWJGLException;
-import org.lwjgl.LWJGLUtil;
-import org.lwjgl.Sys;
-import org.lwjgl.opengl.Display;
-import org.lwjgl.opengl.InputImplementation;
-
-
-/**
- *
- * A raw Mouse interface. This can be used to poll the current state of the
- * mouse buttons, and determine the mouse movement delta since the last poll.
- *
- * n buttons supported, n being a native limit. A scrolly wheel is also
- * supported, if one such is available. Movement is reported as delta from
- * last position or as an absolute position. If the window has been created
- * the absolute position will be clamped to 0 - width | height.
- *
- * @author cix_foo
- * @author elias_naur
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public class Mouse {
- /** Internal use - event size in bytes */
- public static final int EVENT_SIZE = 1 + 1 + 4 + 4 + 4 + 8;
-
- /** Has the mouse been created? */
- private static boolean created;
-
- /** The mouse buttons status from the last poll */
- private static ByteBuffer buttons;
-
- /** Mouse absolute X position in pixels */
- private static int x;
-
- /** Mouse absolute Y position in pixels */
- private static int y;
-
- /** Mouse absolute X position in pixels without any clipping */
- private static int absolute_x;
-
- /** Mouse absolute Y position in pixels without any clipping */
- private static int absolute_y;
-
- /** Buffer to hold the deltas dx, dy and dwheel */
- private static IntBuffer coord_buffer;
-
- /** Delta X */
- private static int dx;
-
- /** Delta Y */
- private static int dy;
-
- /** Delta Z */
- private static int dwheel;
-
- /** Number of buttons supported by the mouse */
- private static int buttonCount = -1;
-
- /** Does this mouse support a scroll wheel */
- private static boolean hasWheel;
-
- /** The current native cursor, if any */
- private static Cursor currentCursor;
-
- /** Button names. These are set upon create(), to names like BUTTON0, BUTTON1, etc. */
- private static String[] buttonName;
-
- /** hashmap of button names, for fast lookup */
- private static final Map buttonMap = new HashMap(16);
-
- /** Lazy initialization */
- private static boolean initialized;
-
- /** The mouse button events from the last read */
- private static ByteBuffer readBuffer;
-
- /** The current mouse event button being examined */
- private static int eventButton;
-
- /** The current state of the button being examined in the event queue */
- private static boolean eventState;
-
- /** The current delta of the mouse in the event queue */
- private static int event_dx;
- private static int event_dy;
- private static int event_dwheel;
- /** The current absolute position of the mouse in the event queue */
- private static int event_x;
- private static int event_y;
- private static long event_nanos;
- /** The position of the mouse it was grabbed at */
- private static int grab_x;
- private static int grab_y;
- /** The last absolute mouse event position (before clipping) for delta computation */
- private static int last_event_raw_x;
- private static int last_event_raw_y;
-
- /** Buffer size in events */
- private static final int BUFFER_SIZE = 50;
-
- private static boolean isGrabbed;
-
- private static InputImplementation implementation;
- private static EmptyCursorGrabListener grabListener = null;
-
- /** Whether we need cursor animation emulation */
- private static final boolean emulateCursorAnimation = LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_WINDOWS ||
- LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX;
-
- private static boolean clipMouseCoordinatesToWindow = !getPrivilegedBoolean("org.lwjgl.input.Mouse.allowNegativeMouseCoords");
-
- static {
- try {
- Class infdevMouse = Class.forName("org.lwjgl.input.InfdevMouse");
- Constructor constructor = infdevMouse.getConstructor();
- grabListener = (EmptyCursorGrabListener) constructor.newInstance();
- }catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Mouse cannot be constructed.
- */
- private Mouse() {
- }
-
- /**
- * Gets the currently bound native cursor, if any.
- *
- * @return the currently bound native cursor, if any.
- */
- public static Cursor getNativeCursor() {
- return currentCursor;
- }
-
- /**
- * Binds a native cursor. If the cursor argument is null, any
- * currently bound native cursor is disabled, and the cursor reverts
- * to the default operating system supplied cursor.
- *
- * NOTE: The native cursor is not constrained to the window, but
- * relative events will not be generated if the cursor is outside.
- *
- * @param cursor the native cursor object to bind. May be null.
- * @return The previous Cursor object set, or null.
- * @throws LWJGLException if the cursor could not be set for any reason
- */
- public static Cursor setNativeCursor(Cursor cursor) throws LWJGLException {
- //dummy
- if(cursor == null && currentCursor.isEmpty()) {
- Mouse.setGrabbed(false);
- if(grabListener != null) grabListener.onGrab(false);
- }
- if(cursor != null && cursor.isEmpty()) {
- Mouse.setGrabbed(true);
- if(grabListener != null) grabListener.onGrab(true);
- }
- currentCursor = cursor;
- return currentCursor;
- }
-
- public static boolean isClipMouseCoordinatesToWindow() {
- return clipMouseCoordinatesToWindow;
- }
-
- public static void setClipMouseCoordinatesToWindow(boolean clip) {
- clipMouseCoordinatesToWindow = clip;
- }
-
- /**
- * Set the position of the cursor. If the cursor is not grabbed,
- * the native cursor is moved to the new position.
- *
- * @param new_x The x coordinate of the new cursor position in OpenGL coordinates relative
- * to the window origin.
- * @param new_y The y coordinate of the new cursor position in OpenGL coordinates relative
- * to the window origin.
- */
- public static void setCursorPosition(int new_x, int new_y) {
- //dummy
- }
-
- /**
- * Static initialization
- */
- private static void initialize() {
- Sys.initialize();
-
- // Assign names to all the buttons
- buttonName = new String[16];
- for (int i = 0; i < 16; i++) {
- buttonName[i] = "BUTTON" + i;
- buttonMap.put(buttonName[i], i);
- }
-
- initialized = true;
- }
-
- private static void resetMouse() {
- dx = dy = dwheel = 0;
- readBuffer.position(readBuffer.limit());
- }
-
- static InputImplementation getImplementation() {
- return implementation;
- }
-
- /**
- * "Create" the mouse with the given custom implementation. This is used
- * reflectively by AWTInputAdapter.
- *
- * @throws LWJGLException if the mouse could not be created for any reason
- */
- private static void create(InputImplementation impl) throws LWJGLException {
- if (created)
- return;
- if (!initialized)
- initialize();
- implementation = impl;
- implementation.createMouse();
- hasWheel = implementation.hasWheel();
- created = true;
-
- // set mouse buttons
- buttonCount = implementation.getButtonCount();
- buttons = BufferUtils.createByteBuffer(buttonCount);
- coord_buffer = BufferUtils.createIntBuffer(3);
- if (currentCursor != null && implementation.getNativeCursorCapabilities() != 0)
- setNativeCursor(currentCursor);
- readBuffer = ByteBuffer.allocate(EVENT_SIZE * BUFFER_SIZE);
- readBuffer.limit(0);
- setGrabbed(isGrabbed);
- }
-
- /**
- * "Create" the mouse. The display must first have been created.
- * Initially, the mouse is not grabbed and the delta values are reported
- * with respect to the center of the display.
- *
- * @throws LWJGLException if the mouse could not be created for any reason
- */
- public static void create() throws LWJGLException {
- if (!Display.isCreated()) throw new IllegalStateException("Display must be created.");
-
- create((InputImplementation) GLFWInputImplementation.singleton);
- }
-
- /**
- * @return true if the mouse has been created
- */
- public static boolean isCreated() {
- return created;
- }
-
- /**
- * "Destroy" the mouse.
- */
- public static void destroy() {
- if (!created) return;
- created = false;
- buttons = null;
- coord_buffer = null;
-
- implementation.destroyMouse();
- }
-
- /**
- * Polls the mouse for its current state. Access the polled values using the
- * get methods.
- * By using this method, it is possible to "miss" mouse click events if you don't
- * poll fast enough.
- *
- * To use buffered values, you have to call next for each event you
- * want to read. You can query which button caused the event by using
- * getEventButton. To get the state of that button, for that event, use
- * getEventButtonState.
- *
- * NOTE: This method does not query the operating system for new events. To do that,
- * Display.processMessages() (or Display.update()) must be called first.
- *
- * @see org.lwjgl.input.Mouse#next()
- * @see org.lwjgl.input.Mouse#getEventButton()
- * @see org.lwjgl.input.Mouse#getEventButtonState()
- * @see org.lwjgl.input.Mouse#isButtonDown(int button)
- * @see org.lwjgl.input.Mouse#getX()
- * @see org.lwjgl.input.Mouse#getY()
- * @see org.lwjgl.input.Mouse#getDX()
- * @see org.lwjgl.input.Mouse#getDY()
- * @see org.lwjgl.input.Mouse#getDWheel()
- */
- public static void poll() {
- if (!created) throw new IllegalStateException("Mouse must be created before you can poll it");
- implementation.pollMouse(coord_buffer, buttons);
-
- /* If we're grabbed, poll returns mouse deltas, if not it returns absolute coordinates */
- int poll_coord1 = coord_buffer.get(0);
- int poll_coord2 = coord_buffer.get(1);
- /* The wheel is always relative */
- int poll_dwheel = coord_buffer.get(2);
-
- if (isGrabbed()) {
- dx += poll_coord1;
- dy += poll_coord2;
- x += poll_coord1;
- y += poll_coord2;
- absolute_x += poll_coord1;
- absolute_y += poll_coord2;
- } else {
- dx = poll_coord1 - absolute_x;
- dy = poll_coord2 - absolute_y;
- absolute_x = x = poll_coord1;
- absolute_y = y = poll_coord2;
- }
-
- if(clipMouseCoordinatesToWindow) {
- x = Math.min(Display.getWidth() - 1, Math.max(0, x));
- y = Math.min(Display.getHeight() - 1, Math.max(0, y));
- }
-
- dwheel += poll_dwheel;
- read();
- }
-
- private static void read() {
- readBuffer.compact();
- implementation.readMouse(readBuffer);
- readBuffer.flip();
- }
-
- /**
- * See if a particular mouse button is down.
- *
- * @param button The index of the button you wish to test (0..getButtonCount-1)
- * @return true if the specified button is down
- */
- public static boolean isButtonDown(int button) {
- if (!created) throw new IllegalStateException("Mouse must be created before you can poll the button state");
- if (button >= buttonCount || button < 0)
- return false;
- else
- return buttons.get(button) == 1;
- }
-
- /**
- * Gets a button's name
- * @param button The button
- * @return a String with the button's human readable name in it or null if the button is unnamed
- */
- public static String getButtonName(int button) {
- if (button >= buttonName.length || button < 0)
- return null;
- else
- return buttonName[button];
- }
-
- /**
- * Get's a button's index. If the button is unrecognised then -1 is returned.
- * @param buttonName The button name
- */
- public static int getButtonIndex(String buttonName) {
- Integer ret = buttonMap.get(buttonName);
- if (ret == null)
- return -1;
- else
- return ret;
- }
-
- /**
- * Gets the next mouse event. You can query which button caused the event by using
- * getEventButton() (if any). To get the state of that key, for that event, use
- * getEventButtonState. To get the current mouse delta values use getEventDX()
- * and getEventDY().
- * @see org.lwjgl.input.Mouse#getEventButton()
- * @see org.lwjgl.input.Mouse#getEventButtonState()
- * @return true if a mouse event was read, false otherwise
- */
- public static boolean next() {
- if (!created) throw new IllegalStateException("Mouse must be created before you can read events");
- if (readBuffer.hasRemaining()) {
-
- eventButton = readBuffer.get();
- eventState = readBuffer.get() != 0;
- if (isGrabbed()) {
- event_dx = readBuffer.getInt();
- event_dy = readBuffer.getInt();
- event_x += event_dx;
- event_y += event_dy;
- last_event_raw_x = event_x;
- last_event_raw_y = event_y;
- } else {
- int new_event_x = readBuffer.getInt();
- int new_event_y = readBuffer.getInt();
- event_dx = new_event_x - last_event_raw_x;
- event_dy = new_event_y - last_event_raw_y;
- event_x = new_event_x;
- event_y = new_event_y;
- last_event_raw_x = new_event_x;
- last_event_raw_y = new_event_y;
- }
- if(clipMouseCoordinatesToWindow) {
- event_x = Math.min(Display.getWidth() - 1, Math.max(0, event_x));
- event_y = Math.min(Display.getHeight() - 1, Math.max(0, event_y));
- }
- event_dwheel = readBuffer.getInt();
- event_nanos = readBuffer.getLong();
- return true;
- } else
- return false;
- }
-
- /**
- * @return Current events button. Returns -1 if no button state was changed
- */
- public static int getEventButton() {
- return eventButton;
- }
-
- /**
- * Get the current events button state.
- * @return Current events button state.
- */
- public static boolean getEventButtonState() {
- return eventState;
- }
-
- /**
- * @return Current events delta x.
- */
- public static int getEventDX() {
- return event_dx;
- }
-
- /**
- * @return Current events delta y.
- */
- public static int getEventDY() {
- return event_dy;
- }
-
- /**
- * @return Current events absolute x.
- */
- public static int getEventX() {
- return event_x;
- }
-
- /**
- * @return Current events absolute y.
- */
- public static int getEventY() {
- return event_y;
- }
-
- /**
- * @return Current events delta z
- */
- public static int getEventDWheel() {
- return event_dwheel;
- }
-
- /**
- * Gets the time in nanoseconds of the current event.
- * Only useful for relative comparisons with other
- * Mouse events, as the absolute time has no defined
- * origin.
- *
- * @return The time in nanoseconds of the current event
- */
- public static long getEventNanoseconds() {
- return event_nanos;
- }
-
- /**
- * Retrieves the absolute position. It will be clamped to
- * 0...width-1.
- *
- * @return Absolute x axis position of mouse
- */
- public static int getX() {
- return x;
- }
-
- /**
- * Retrieves the absolute position. It will be clamped to
- * 0...height-1.
- *
- * @return Absolute y axis position of mouse
- */
- public static int getY() {
- return y;
- }
-
- /**
- * @return Movement on the x axis since last time getDX() was called.
- */
- public static int getDX() {
- int result = dx;
- dx = 0;
- return result;
- }
-
- /**
- * @return Movement on the y axis since last time getDY() was called.
- */
- public static int getDY() {
- int result = dy;
- dy = 0;
- return result;
- }
-
- /**
- * @return Movement of the wheel since last time getDWheel() was called
- */
- public static int getDWheel() {
- int result = dwheel;
- dwheel = 0;
- return result;
- }
-
- /**
- * @return Number of buttons on this mouse
- */
- public static int getButtonCount() {
- return buttonCount;
- }
-
- /**
- * @return Whether or not this mouse has wheel support
- */
- public static boolean hasWheel() {
- return hasWheel;
- }
-
- /**
- * @return whether or not the mouse has grabbed the cursor
- */
- public static boolean isGrabbed() {
- return isGrabbed;
- }
-
- /**
- * Sets whether or not the mouse has grabbed the cursor
- * (and thus hidden). If grab is false, the getX() and getY()
- * will return delta movement in pixels clamped to the display
- * dimensions, from the center of the display.
- *
- * @param grab whether the mouse should be grabbed
- */
- public static void setGrabbed(boolean grab) {
- boolean grabbed = isGrabbed;
- isGrabbed = grab;
- if (isCreated()) {
- //if (grab && !grabbed) {
- // store location mouse was grabbed
- // grab_x = x;
- // grab_y = y;
- }
- //else if (!grab && grabbed) {
- // // move mouse back to location it was grabbed before ungrabbing
- // if ((Cursor.getCapabilities() & Cursor.CURSOR_ONE_BIT_TRANSPARENCY) != 0)
- // implementation.setCursorPosition(grab_x, grab_y);
- //}
-
- implementation.grabMouse(grab);
- // Get latest values from native side
- poll();
- event_x = x;
- event_y = y;
- last_event_raw_x = x;
- last_event_raw_y = y;
- resetMouse();
- }
-
- /**
- * Updates the cursor, so that animation can be changed if needed.
- * This method is called automatically by the window on its update, and
- * shouldn't be called otherwise
- */
- public static void updateCursor() {
- //dummy
- }
-
- /** Gets a boolean property as a privileged action. */
- static boolean getPrivilegedBoolean(final String property_name) {
- Boolean value = AccessController.doPrivileged(new PrivilegedAction() {
- public Boolean run() {
- return Boolean.getBoolean(property_name);
- }
- });
- return value;
- }
-
- /**
- * Retrieves whether or not the mouse cursor is within the bounds of the window.
- * If the mouse cursor was moved outside the display during a drag, then the result of calling
- * this method will be true until the button is released.
- * @return true if mouse is inside display, false otherwise.
- */
- public static boolean isInsideWindow() {
- return implementation.isInsideWindow();
- }
-
- /*
- * Package private methods to get the absolute unclipped X/Y coordiates
- */
- /*package-private*/ static int getAbsoluteX() {
- return absolute_x;
- }
- /*package-private*/ static int getAbsoluteY() {
- return absolute_y;
- }
-
- interface EmptyCursorGrabListener {
- void onGrab(boolean grabbing);
- }
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL.java
deleted file mode 100644
index 8b25f2d0c..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- */
-package org.lwjgl.openal;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.LWJGLException;
-import org.lwjgl.system.*;
-
-import javax.annotation.*;
-import java.nio.*;
-import java.util.*;
-
-import static org.lwjgl.openal.AL10.*;
-import static org.lwjgl.openal.EXTThreadLocalContext.*;
-import static org.lwjgl.system.APIUtil.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * This class must be used before any OpenAL function is called. It has the following responsibilities:
- *
- * - Creates instances of {@link ALCapabilities} classes. An {@code ALCapabilities} instance contains flags for functionality that is available in an OpenAL
- * context. Internally, it also contains function pointers that are only valid in that specific OpenAL context.
- * - Maintains thread-local and global state for {@code ALCapabilities} instances, corresponding to OpenAL contexts that are current in those threads and the
- * entire process, respectively.
- *
- *
- * ALCapabilities creation
- * Instances of {@code ALCapabilities} can be created with the {@link #createCapabilities} method. An OpenAL context must be current in the current thread
- * or process before it is called. Calling this method is expensive, so {@code ALCapabilities} instances should be cached in user code.
- *
- * Thread-local state
- * Before a function for a given OpenAL context can be called, the corresponding {@code ALCapabilities} instance must be made current in the current
- * thread or process. The user is also responsible for clearing the current {@code ALCapabilities} instance when the context is destroyed or made current in
- * another thread.
- *
- * Note that OpenAL contexts are made current process-wide by default. Current thread-local contexts are only available if the
- * {@link EXTThreadLocalContext ALC_EXT_thread_local_context} extension is supported by the OpenAL implementation. OpenAL Soft, the implementation
- * that LWJGL ships with, supports this extension and performs better when it is used.
- *
- * @see ALC
- */
-public final class AL {
-// -- Begin LWJGL2 part --
- static {
- // FIXME should be?
- // Sys.initialize(); // init using dummy sys method
- }
- static long alContext;
- static ALCdevice alcDevice;
- static ALCCapabilities alContextCaps;
- static ALCapabilities alCaps;
-
- private static boolean created_lwjgl2 = false;
-
- /**
- * Creates an OpenAL instance. Using this constructor will cause OpenAL to
- * open the device using supplied device argument, and create a context using the context values
- * supplied.
- *
- * @param deviceArguments Arguments supplied to native device
- * @param contextFrequency Frequency for mixing output buffer, in units of Hz (Common values include 11025, 22050, and 44100).
- * @param contextRefresh Refresh intervalls, in units of Hz.
- * @param contextSynchronized Flag, indicating a synchronous context.*
- */
- public static void create(String deviceArguments, int contextFrequency, int contextRefresh, boolean contextSynchronized)
- throws LWJGLException {
- create(deviceArguments, contextFrequency, contextRefresh, contextSynchronized, true);
- }
-
- /**
- * @param openDevice Whether to automatically open the device
- * @see #create(String, int, int, boolean)
- */
- public static void create(String deviceArguments, int contextFrequency, int contextRefresh, boolean contextSynchronized, boolean openDevice)
- throws LWJGLException {
- if (alContext == MemoryUtil.NULL && openDevice) {
- //ALDevice alDevice = ALDevice.create();
- long alDevice = ALC10.alcOpenDevice(deviceArguments);
- if(alDevice == MemoryUtil.NULL){
- throw new LWJGLException("Cannot open the device");
- }
-
- IntBuffer attribs = BufferUtils.createIntBuffer(16);
-
- attribs.put(ALC10.ALC_FREQUENCY);
- attribs.put(contextFrequency);
-
- attribs.put(ALC10.ALC_REFRESH);
- attribs.put(contextRefresh);
-
- attribs.put(ALC10.ALC_SYNC);
- attribs.put(contextSynchronized ? ALC10.ALC_TRUE : ALC10.ALC_FALSE);
-
- attribs.put(0);
- attribs.flip();
-
- long contextHandle = ALC10.alcCreateContext(alDevice, attribs);
- ALC10.alcMakeContextCurrent(contextHandle);
- //alContext = new ALContext(alDevice, contextHandle);
- alContext = ALC10.alcCreateContext(contextHandle, (IntBuffer)null);
- alContextCaps = ALC.createCapabilities(alContext);
-
- alCaps = AL.createCapabilities(alContextCaps);
-
- alcDevice = new ALCdevice(alDevice);
- created_lwjgl2 = true;
- }
- }
-
- public static void create() throws LWJGLException {
- if (alContext == MemoryUtil.NULL) {
- //ALDevice alDevice = ALDevice.create();
- long alDevice = ALC10.alcOpenDevice((ByteBuffer)null);
- if(alDevice == MemoryUtil.NULL){
- throw new LWJGLException("Cannot open the device");
- }
-
- IntBuffer attribs = BufferUtils.createIntBuffer(16);
-
- attribs.put(ALC10.ALC_FREQUENCY);
- attribs.put(44100);
-
- attribs.put(ALC10.ALC_REFRESH);
- attribs.put(60);
-
- attribs.put(ALC10.ALC_SYNC);
- attribs.put(ALC10.ALC_FALSE);
-
- attribs.put(0);
- attribs.flip();
-
- long contextHandle = ALC10.alcCreateContext(alDevice, attribs);
- ALC10.alcMakeContextCurrent(contextHandle);
- //alContext = new ALContext(alDevice, contextHandle);
- alContext = ALC10.alcCreateContext(contextHandle, (IntBuffer)null);
- alContextCaps = ALC.createCapabilities(alContext);
-
- alCaps = AL.createCapabilities(alContextCaps);
-
- alcDevice = new ALCdevice(alDevice);
- created_lwjgl2 = true;
- }
- }
-
- public static boolean isCreated() {
- return created_lwjgl2;
- }
-
- public static ALCdevice getDevice() {
- return alcDevice;
- }
-// -- End LWJGL2 part
-
- @Nullable
- private static FunctionProvider functionProvider;
-
- @Nullable
- private static ALCapabilities processCaps;
-
- private static final ThreadLocal capabilitiesTLS = new ThreadLocal<>();
-
- private static ICD icd = new ICDStatic();
-
- private AL() {}
-
- static void init() {
- functionProvider = new FunctionProvider() {
- // We'll use alGetProcAddress for both core and extension entry points.
- // To do that, we need to first grab the alGetProcAddress function from
- // the OpenAL native library.
- private final long alGetProcAddress = ALC.getFunctionProvider().getFunctionAddress("alGetProcAddress");
-
- @Override
- public long getFunctionAddress(ByteBuffer functionName) {
- long address = invokePP(memAddress(functionName), alGetProcAddress);
- if (address == NULL && Checks.DEBUG_FUNCTIONS) {
- apiLog("Failed to locate address for AL function " + memASCII(functionName));
- }
- return address;
- }
- };
- }
-
- public static void destroy() {
- if (functionProvider == null) {
- return;
- }
-
- // LWJGL2 code
- if (created_lwjgl2) {
- ALC10.alcMakeContextCurrent(MemoryUtil.NULL);
- ALC10.alcDestroyContext(alContext);
- ALC10.alcCloseDevice(alcDevice.device);
- alContext = -1;
- alcDevice = null;
- created_lwjgl2 = false;
- }
-
- setCurrentProcess(null);
-
- functionProvider = null;
- }
-
- /**
- * Sets the specified {@link ALCapabilities} for the current process-wide OpenAL context.
- *
- * If the current thread had a context current (see {@link #setCurrentThread}), those {@code ALCapabilities} are cleared. Any OpenAL functions called in
- * the current thread, or any threads that have no context current, will use the specified {@code ALCapabilities}.
- *
- * @param caps the {@link ALCapabilities} to make current, or null
- */
- public static void setCurrentProcess(@Nullable ALCapabilities caps) {
- processCaps = caps;
- capabilitiesTLS.set(null); // See EXT_thread_local_context, second Q.
- icd.set(caps);
- }
-
- /**
- * Sets the specified {@link ALCapabilities} for the current OpenAL context in the current thread.
- *
- * Any OpenAL functions called in the current thread will use the specified {@code ALCapabilities}.
- *
- * @param caps the {@link ALCapabilities} to make current, or null
- */
- public static void setCurrentThread(@Nullable ALCapabilities caps) {
- capabilitiesTLS.set(caps);
- icd.set(caps);
- }
-
- /**
- * Returns the {@link ALCapabilities} for the OpenAL context that is current in the current thread or process.
- *
- * @throws IllegalStateException if no OpenAL context is current in the current thread or process
- */
- public static ALCapabilities getCapabilities() {
- ALCapabilities caps = capabilitiesTLS.get();
- if (caps == null) {
- caps = processCaps;
- }
-
- return checkCapabilities(caps);
- }
-
- private static ALCapabilities checkCapabilities(@Nullable ALCapabilities caps) {
- if (caps == null) {
- throw new IllegalStateException(
- "No ALCapabilities instance set for the current thread or process. Possible solutions:\n" +
- "\ta) Call AL.createCapabilities() after making a context current.\n" +
- "\tb) Call AL.setCurrentProcess() or AL.setCurrentThread() if an ALCapabilities instance already exists."
- );
- }
- return caps;
- }
-
- /**
- * Creates a new {@link ALCapabilities} instance for the OpenAL context that is current in the current thread or process.
- *
- * @param alcCaps the {@link ALCCapabilities} of the device associated with the current context
- *
- * @return the ALCapabilities instance
- */
- public static ALCapabilities createCapabilities(ALCCapabilities alcCaps) {
- FunctionProvider functionProvider = ALC.check(AL.functionProvider);
-
- ALCapabilities caps = null;
-
- try {
- long GetString = functionProvider.getFunctionAddress("alGetString");
- long GetError = functionProvider.getFunctionAddress("alGetError");
- long IsExtensionPresent = functionProvider.getFunctionAddress("alIsExtensionPresent");
- if (GetString == NULL || GetError == NULL || IsExtensionPresent == NULL) {
- throw new IllegalStateException("Core OpenAL functions could not be found. Make sure that the OpenAL library has been loaded correctly.");
- }
-
- String versionString = memASCIISafe(invokeP(AL_VERSION, GetString));
- if (versionString == null || invokeI(GetError) != AL_NO_ERROR) {
- throw new IllegalStateException("There is no OpenAL context current in the current thread or process.");
- }
-
- APIVersion apiVersion = apiParseVersion(versionString);
-
- int majorVersion = apiVersion.major;
- int minorVersion = apiVersion.minor;
-
- int[][] AL_VERSIONS = {
- {0, 1} // OpenAL 1
- };
-
- Set supportedExtensions = new HashSet<>(32);
-
- for (int major = 1; major <= AL_VERSIONS.length; major++) {
- int[] minors = AL_VERSIONS[major - 1];
- for (int minor : minors) {
- if (major < majorVersion || (major == majorVersion && minor <= minorVersion)) {
- supportedExtensions.add("OpenAL" + major + minor);
- }
- }
- }
-
- // Parse EXTENSIONS string
- String extensionsString = memASCIISafe(invokeP(AL_EXTENSIONS, GetString));
- if (extensionsString != null) {
- MemoryStack stack = stackGet();
-
- StringTokenizer tokenizer = new StringTokenizer(extensionsString);
- while (tokenizer.hasMoreTokens()) {
- String extName = tokenizer.nextToken();
- try (MemoryStack frame = stack.push()) {
- if (invokePZ(memAddress(frame.ASCII(extName, true)), IsExtensionPresent)) {
- supportedExtensions.add(extName);
- }
- }
- }
- }
-
- if (alcCaps.ALC_EXT_EFX) {
- supportedExtensions.add("ALC_EXT_EFX");
- }
-
- return caps = new ALCapabilities(functionProvider, supportedExtensions);
- } finally {
- if (alcCaps.ALC_EXT_thread_local_context && alcGetThreadContext() != NULL) {
- setCurrentThread(caps);
- } else {
- setCurrentProcess(caps);
- }
- }
- }
-
- static ALCapabilities getICD() {
- return ALC.check(icd.get());
- }
-
- /** Function pointer provider. */
- private interface ICD {
- default void set(@Nullable ALCapabilities caps) {}
- @Nullable ALCapabilities get();
- }
-
- /**
- * Write-once {@link ICD}.
- *
- * This is the default implementation that skips the thread/process lookup. When a new ALCapabilities is set, we compare it to the write-once
- * capabilities. If different function pointers are found, we fall back to the expensive lookup. This will never happen with the OpenAL-Soft
- * implementation.
- */
- private static class ICDStatic implements ICD {
-
- @Nullable
- private static ALCapabilities tempCaps;
-
- @Override
- public void set(@Nullable ALCapabilities caps) {
- if (tempCaps == null) {
- tempCaps = caps;
- } else if (caps != null && caps != tempCaps && ThreadLocalUtil.areCapabilitiesDifferent(tempCaps.addresses, caps.addresses)) {
- apiLog("[WARNING] Incompatible context detected. Falling back to thread/process lookup for AL contexts.");
- icd = AL::getCapabilities; // fall back to thread/process lookup
- }
- }
-
- @Override
- @Nullable
- public ALCapabilities get() {
- return WriteOnce.caps;
- }
-
- private static final class WriteOnce {
- // This will be initialized the first time get() above is called
- @Nullable
- static final ALCapabilities caps = ICDStatic.tempCaps;
-
- static {
- if (caps == null) {
- throw new IllegalStateException("No ALCapabilities instance has been set");
- }
- }
- }
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL10.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL10.java
deleted file mode 100644
index 9c5d15a33..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/AL10.java
+++ /dev/null
@@ -1,1931 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.openal;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/** Native bindings to AL 1.0 functionality. */
-public class AL10 {
-// -- Begin LWJGL2 Bridge --
- public static void alGetDouble(int p1, DoubleBuffer p2) {
- alGetDoublev(p1, p2);
- }
-/*
- public static int alGetEnumValue(String p1) {
- alGetEnumValue((CharSequence) p1);
- }
-*/
- public static void alGetFloat(int p1, FloatBuffer p2) {
- alGetFloatv(p1, p2);
- }
-
- public static void alGetInteger(int p1, IntBuffer p2) {
- alGetIntegerv(p1, p2);
- }
-
- public static void alGetListener(int p1, FloatBuffer p2) {
- alGetListenerfv(p1, p2);
- }
-
- public static void alGetSource(int p1, int p2, FloatBuffer p3) {
- alGetSourcefv(p1, p2, p3);
- }
-/*
- public static boolean alIsExtensionPresent(String p1) {
- return alIsExtensionPresent((CharSequence) p1);
- }
-*/
- public static void alListener(int pname, FloatBuffer value) {
- alListenerfv(pname, value);
- }
-
- public static void alSource(int p1, int p2, FloatBuffer p3) {
- alSourcefv(p1, p2, p3);
- }
-
- public static void alSourcePause(IntBuffer p1) {
- alSourcePausev(p1);
- }
-
- public static void alSourcePlay(IntBuffer p1) {
- alSourcePlayv(p1);
- }
-
- public static void alSourceRewind(IntBuffer p1) {
- alSourceRewindv(p1);
- }
-
- public static void alSourceStop(IntBuffer p1) {
- alSourceStopv(p1);
- }
-// -- End LWJGL2 Bridge --
-
- /** General tokens. */
- public static final int
- AL_INVALID = 0xFFFFFFFF,
- AL_NONE = 0x0,
- AL_FALSE = 0x0,
- AL_TRUE = 0x1;
-
- /** Error conditions. */
- public static final int
- AL_NO_ERROR = 0x0,
- AL_INVALID_NAME = 0xA001,
- AL_INVALID_ENUM = 0xA002,
- AL_INVALID_VALUE = 0xA003,
- AL_INVALID_OPERATION = 0xA004,
- AL_OUT_OF_MEMORY = 0xA005;
-
- /** Numerical queries. */
- public static final int
- AL_DOPPLER_FACTOR = 0xC000,
- AL_DISTANCE_MODEL = 0xD000;
-
- /** String queries. */
- public static final int
- AL_VENDOR = 0xB001,
- AL_VERSION = 0xB002,
- AL_RENDERER = 0xB003,
- AL_EXTENSIONS = 0xB004;
-
- /** Distance attenuation models. */
- public static final int
- AL_INVERSE_DISTANCE = 0xD001,
- AL_INVERSE_DISTANCE_CLAMPED = 0xD002;
-
- /** Source types. */
- public static final int
- AL_SOURCE_ABSOLUTE = 0x201,
- AL_SOURCE_RELATIVE = 0x202;
-
- /** Listener and Source attributes. */
- public static final int
- AL_POSITION = 0x1004,
- AL_VELOCITY = 0x1006,
- AL_GAIN = 0x100A;
-
- /** Source attributes. */
- public static final int
- AL_CONE_INNER_ANGLE = 0x1001,
- AL_CONE_OUTER_ANGLE = 0x1002,
- AL_PITCH = 0x1003,
- AL_DIRECTION = 0x1005,
- AL_LOOPING = 0x1007,
- AL_BUFFER = 0x1009,
- AL_SOURCE_STATE = 0x1010,
- AL_CONE_OUTER_GAIN = 0x1022,
- AL_SOURCE_TYPE = 0x1027;
-
- /** Source state. */
- public static final int
- AL_INITIAL = 0x1011,
- AL_PLAYING = 0x1012,
- AL_PAUSED = 0x1013,
- AL_STOPPED = 0x1014;
-
- /** Listener attributes. */
- public static final int AL_ORIENTATION = 0x100F;
-
- /** Queue state. */
- public static final int
- AL_BUFFERS_QUEUED = 0x1015,
- AL_BUFFERS_PROCESSED = 0x1016;
-
- /** Gain bounds. */
- public static final int
- AL_MIN_GAIN = 0x100D,
- AL_MAX_GAIN = 0x100E;
-
- /** Distance model attributes, */
- public static final int
- AL_REFERENCE_DISTANCE = 0x1020,
- AL_ROLLOFF_FACTOR = 0x1021,
- AL_MAX_DISTANCE = 0x1023;
-
- /** Buffer attributes, */
- public static final int
- AL_FREQUENCY = 0x2001,
- AL_BITS = 0x2002,
- AL_CHANNELS = 0x2003,
- AL_SIZE = 0x2004;
-
- /** Buffer formats. */
- public static final int
- AL_FORMAT_MONO8 = 0x1100,
- AL_FORMAT_MONO16 = 0x1101,
- AL_FORMAT_STEREO8 = 0x1102,
- AL_FORMAT_STEREO16 = 0x1103;
-
- /** Buffer state. */
- public static final int
- AL_UNUSED = 0x2010,
- AL_PENDING = 0x2011,
- AL_PROCESSED = 0x2012;
-
- protected AL10() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(ALCapabilities caps) {
- return checkFunctions(
- caps.alGetError, caps.alEnable, caps.alDisable, caps.alIsEnabled, caps.alGetBoolean, caps.alGetInteger, caps.alGetFloat, caps.alGetDouble,
- caps.alGetBooleanv, caps.alGetIntegerv, caps.alGetFloatv, caps.alGetDoublev, caps.alGetString, caps.alDistanceModel, caps.alDopplerFactor,
- caps.alDopplerVelocity, caps.alListenerf, caps.alListeneri, caps.alListener3f, caps.alListenerfv, caps.alGetListenerf, caps.alGetListeneri,
- caps.alGetListener3f, caps.alGetListenerfv, caps.alGenSources, caps.alDeleteSources, caps.alIsSource, caps.alSourcef, caps.alSource3f,
- caps.alSourcefv, caps.alSourcei, caps.alGetSourcef, caps.alGetSource3f, caps.alGetSourcefv, caps.alGetSourcei, caps.alGetSourceiv,
- caps.alSourceQueueBuffers, caps.alSourceUnqueueBuffers, caps.alSourcePlay, caps.alSourcePause, caps.alSourceStop, caps.alSourceRewind,
- caps.alSourcePlayv, caps.alSourcePausev, caps.alSourceStopv, caps.alSourceRewindv, caps.alGenBuffers, caps.alDeleteBuffers, caps.alIsBuffer,
- caps.alGetBufferf, caps.alGetBufferi, caps.alBufferData, caps.alGetEnumValue, caps.alGetProcAddress, caps.alIsExtensionPresent
- );
- }
-
- // --- [ alGetError ] ---
-
- /**
- * Obtains error information.
- *
- * Each detectable error is assigned a numeric code. When an error is detected by AL, a flag is set and the error code is recorded. Further errors, if they
- * occur, do not affect this recorded code. When alGetError is called, the code is returned and the flag is cleared, so that a further error will again
- * record its code. If a call to alGetError returns AL_NO_ERROR then there has been no detectable error since the last call to alGetError (or since the AL
- * was initialized).
- *
- * Error codes can be mapped to strings. The alGetString function returns a pointer to a constant (literal) string that is identical to the identifier used
- * for the enumeration value, as defined in the specification.
- */
- @NativeType("ALenum")
- public static int alGetError() {
- long __functionAddress = AL.getICD().alGetError;
- return invokeI(__functionAddress);
- }
-
- // --- [ alEnable ] ---
-
- /**
- * Enables AL capabilities.
- *
- * @param target the capability to enable
- */
- @NativeType("ALvoid")
- public static void alEnable(@NativeType("ALenum") int target) {
- long __functionAddress = AL.getICD().alEnable;
- invokeV(target, __functionAddress);
- }
-
- // --- [ alDisable ] ---
-
- /**
- * Disables AL capabilities.
- *
- * @param target the capability to disable
- */
- @NativeType("ALvoid")
- public static void alDisable(@NativeType("ALenum") int target) {
- long __functionAddress = AL.getICD().alDisable;
- invokeV(target, __functionAddress);
- }
-
- // --- [ alIsEnabled ] ---
-
- /**
- * Queries whether a given capability is currently enabled or not.
- *
- * @param target the capability to query
- */
- @NativeType("ALboolean")
- public static boolean alIsEnabled(@NativeType("ALenum") int target) {
- long __functionAddress = AL.getICD().alIsEnabled;
- return invokeZ(target, __functionAddress);
- }
-
- // --- [ alGetBoolean ] ---
-
- /**
- * Returns the boolean value of the specified parameter.
- *
- * @param paramName the parameter to query
- */
- @NativeType("ALboolean")
- public static boolean alGetBoolean(@NativeType("ALenum") int paramName) {
- long __functionAddress = AL.getICD().alGetBoolean;
- return invokeZ(paramName, __functionAddress);
- }
-
- // --- [ alGetInteger ] ---
-
- /**
- * Returns the integer value of the specified parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_DOPPLER_FACTOR DOPPLER_FACTOR} | {@link #AL_DISTANCE_MODEL DISTANCE_MODEL} | {@link AL11#AL_SPEED_OF_SOUND SPEED_OF_SOUND} |
- */
- @NativeType("ALint")
- public static int alGetInteger(@NativeType("ALenum") int paramName) {
- long __functionAddress = AL.getICD().alGetInteger;
- return invokeI(paramName, __functionAddress);
- }
-
- // --- [ alGetFloat ] ---
-
- /**
- * Returns the float value of the specified parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_DOPPLER_FACTOR DOPPLER_FACTOR} | {@link #AL_DISTANCE_MODEL DISTANCE_MODEL} | {@link AL11#AL_SPEED_OF_SOUND SPEED_OF_SOUND} |
- */
- @NativeType("ALfloat")
- public static float alGetFloat(@NativeType("ALenum") int paramName) {
- long __functionAddress = AL.getICD().alGetFloat;
- return invokeF(paramName, __functionAddress);
- }
-
- // --- [ alGetDouble ] ---
-
- /**
- * Returns the double value of the specified parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_DOPPLER_FACTOR DOPPLER_FACTOR} | {@link #AL_DISTANCE_MODEL DISTANCE_MODEL} | {@link AL11#AL_SPEED_OF_SOUND SPEED_OF_SOUND} |
- */
- @NativeType("ALdouble")
- public static double alGetDouble(@NativeType("ALenum") int paramName) {
- long __functionAddress = AL.getICD().alGetDouble;
- return invokeD(paramName, __functionAddress);
- }
-
- // --- [ alGetBooleanv ] ---
-
- /** Unsafe version of: {@link #alGetBooleanv GetBooleanv} */
- public static void nalGetBooleanv(int paramName, long dest) {
- long __functionAddress = AL.getICD().alGetBooleanv;
- invokePV(paramName, dest, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alGetBoolean GetBoolean}.
- *
- * @param paramName the parameter to query
- * @param dest a buffer that will receive the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetBooleanv(@NativeType("ALenum") int paramName, @NativeType("ALboolean *") ByteBuffer dest) {
- if (CHECKS) {
- check(dest, 1);
- }
- nalGetBooleanv(paramName, memAddress(dest));
- }
-
- // --- [ alGetIntegerv ] ---
-
- /** Unsafe version of: {@link #alGetIntegerv GetIntegerv} */
- public static void nalGetIntegerv(int paramName, long dest) {
- long __functionAddress = AL.getICD().alGetIntegerv;
- invokePV(paramName, dest, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alGetInteger GetInteger}.
- *
- * @param paramName the parameter to query
- * @param dest a buffer that will receive the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetIntegerv(@NativeType("ALenum") int paramName, @NativeType("ALint *") IntBuffer dest) {
- if (CHECKS) {
- check(dest, 1);
- }
- nalGetIntegerv(paramName, memAddress(dest));
- }
-
- // --- [ alGetFloatv ] ---
-
- /** Unsafe version of: {@link #alGetFloatv GetFloatv} */
- public static void nalGetFloatv(int paramName, long dest) {
- long __functionAddress = AL.getICD().alGetFloatv;
- invokePV(paramName, dest, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alGetFloat GetFloat}.
- *
- * @param paramName the parameter to query
- * @param dest a buffer that will receive the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetFloatv(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") FloatBuffer dest) {
- if (CHECKS) {
- check(dest, 1);
- }
- nalGetFloatv(paramName, memAddress(dest));
- }
-
- // --- [ alGetDoublev ] ---
-
- /** Unsafe version of: {@link #alGetDoublev GetDoublev} */
- public static void nalGetDoublev(int paramName, long dest) {
- long __functionAddress = AL.getICD().alGetDoublev;
- invokePV(paramName, dest, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alGetDouble GetDouble}.
- *
- * @param paramName the parameter to query
- * @param dest a buffer that will receive the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetDoublev(@NativeType("ALenum") int paramName, @NativeType("ALdouble *") DoubleBuffer dest) {
- if (CHECKS) {
- check(dest, 1);
- }
- nalGetDoublev(paramName, memAddress(dest));
- }
-
- // --- [ alGetString ] ---
-
- /** Unsafe version of: {@link #alGetString GetString} */
- public static long nalGetString(int paramName) {
- long __functionAddress = AL.getICD().alGetString;
- return invokeP(paramName, __functionAddress);
- }
-
- /**
- * Returns the string value of the specified parameter
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_VENDOR VENDOR} | {@link #AL_VERSION VERSION} | {@link #AL_RENDERER RENDERER} | {@link #AL_EXTENSIONS EXTENSIONS} |
- */
- @Nullable
- @NativeType("ALchar const *")
- public static String alGetString(@NativeType("ALenum") int paramName) {
- long __result = nalGetString(paramName);
- return memUTF8Safe(__result);
- }
-
- // --- [ alDistanceModel ] ---
-
- /**
- * Sets the distance attenuation model.
- *
- * Samples usually use the entire dynamic range of the chosen format/encoding, independent of their real world intensity. For example, a jet engine and a
- * clockwork both will have samples with full amplitude. The application will then have to adjust source gain accordingly to account for relative differences.
- *
- * Source gain is then attenuated by distance. The effective attenuation of a source depends on many factors, among which distance attenuation and source
- * and listener gain are only some of the contributing factors. Even if the source and listener gain exceed 1.0 (amplification beyond the guaranteed
- * dynamic range), distance and other attenuation might ultimately limit the overall gain to a value below 1.0.
- *
- * OpenAL currently supports three modes of operation with respect to distance attenuation, including one that is similar to the IASIG I3DL2 model. The
- * application can choose one of these models (or chooses to disable distance-dependent attenuation) on a per-context basis.
- *
- * @param modelName the distance attenuation model to set. One of:
| {@link #AL_INVERSE_DISTANCE INVERSE_DISTANCE} | {@link #AL_INVERSE_DISTANCE_CLAMPED INVERSE_DISTANCE_CLAMPED} | {@link AL11#AL_LINEAR_DISTANCE LINEAR_DISTANCE} | {@link AL11#AL_LINEAR_DISTANCE_CLAMPED LINEAR_DISTANCE_CLAMPED} |
| {@link AL11#AL_EXPONENT_DISTANCE EXPONENT_DISTANCE} | {@link AL11#AL_EXPONENT_DISTANCE_CLAMPED EXPONENT_DISTANCE_CLAMPED} | {@link #AL_NONE NONE} |
- */
- @NativeType("ALvoid")
- public static void alDistanceModel(@NativeType("ALenum") int modelName) {
- long __functionAddress = AL.getICD().alDistanceModel;
- invokeV(modelName, __functionAddress);
- }
-
- // --- [ alDopplerFactor ] ---
-
- /**
- * Sets the doppler effect factor.
- *
- * The Doppler Effect depends on the velocities of source and listener relative to the medium, and the propagation speed of sound in that medium. The
- * application might want to emphasize or de-emphasize the Doppler Effect as physically accurate calculation might not give the desired results. The amount
- * of frequency shift (pitch change) is proportional to the speed of listener and source along their line of sight. The Doppler Effect as implemented by
- * OpenAL is described by the formula below. Effects of the medium (air, water) moving with respect to listener and source are ignored.
- *
- *
- * SS: AL_SPEED_OF_SOUND = speed of sound (default value 343.3)
- * DF: AL_DOPPLER_FACTOR = Doppler factor (default 1.0)
- * vls: Listener velocity scalar (scalar, projected on source-to-listener vector)
- * vss: Source velocity scalar (scalar, projected on source-to-listener vector)
- * f: Frequency of sample
- * f': effective Doppler shifted frequency
- *
- * 3D Mathematical representation of vls and vss:
- *
- * Mag(vector) = sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z)
- * DotProduct(v1, v2) = (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z)
- *
- * SL = source to listener vector
- * SV = Source velocity vector
- * LV = Listener velocity vector
- *
- * vls = DotProduct(SL, LV) / Mag(SL)
- * vss = DotProduct(SL, SV) / Mag(SL)
- *
- * Dopper Calculation:
- *
- * vss = min(vss, SS / DF)
- * vls = min(vls, SS / DF)
- *
- * f' = f * (SS - DF * vls) / (SS - DF * vss)
- *
- * The {@code dopplerFactor} is a simple scaling of source and listener velocities to exaggerate or deemphasize the Doppler (pitch) shift resulting from
- * the calculation.
- *
- * @param dopplerFactor the doppler factor
- */
- @NativeType("ALvoid")
- public static void alDopplerFactor(@NativeType("ALfloat") float dopplerFactor) {
- long __functionAddress = AL.getICD().alDopplerFactor;
- invokeV(dopplerFactor, __functionAddress);
- }
-
- // --- [ alDopplerVelocity ] ---
-
- /**
- * Sets the doppler effect propagation velocity.
- *
- * The OpenAL 1.1 Doppler implementation is different than that of OpenAL 1.0, because the older implementation was confusing and not implemented
- * consistently. The new "speed of sound" property makes the 1.1 implementation more intuitive than the old implementation. If your implementation wants to
- * support the AL_DOPPLER_VELOCITY parameter (the alDopplerVelocity call will remain as an entry point so that 1.0 applications can link with a 1.1
- * library), the above formula can be changed to the following:
- *
- *
- * vss = min(vss, (SS * DV)/DF)
- * vls = min(vls, (SS * DV)/DF)
- *
- * f' = f * (SS * DV - DF*vls) / (SS * DV - DF * vss)
- *
- * OpenAL 1.1 programmers would never use AL_DOPPLER_VELOCITY (which defaults to 1.0).
- *
- * @param dopplerVelocity the doppler velocity
- */
- @NativeType("ALvoid")
- public static void alDopplerVelocity(@NativeType("ALfloat") float dopplerVelocity) {
- long __functionAddress = AL.getICD().alDopplerVelocity;
- invokeV(dopplerVelocity, __functionAddress);
- }
-
- // --- [ alListenerf ] ---
-
- /**
- * Sets the float value of a listener parameter.
- *
- * @param paramName the parameter to modify. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alListenerf(@NativeType("ALenum") int paramName, @NativeType("ALfloat") float value) {
- long __functionAddress = AL.getICD().alListenerf;
- invokeV(paramName, value, __functionAddress);
- }
-
- // --- [ alListeneri ] ---
-
- /**
- * Integer version of {@link #alListenerf Listenerf}.
- *
- * @param paramName the parameter to modify. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param values the parameter value
- */
- @NativeType("ALvoid")
- public static void alListeneri(@NativeType("ALenum") int paramName, @NativeType("ALint") int values) {
- long __functionAddress = AL.getICD().alListeneri;
- invokeV(paramName, values, __functionAddress);
- }
-
- // --- [ alListener3f ] ---
-
- /**
- * Sets the 3 dimensional float values of a listener parameter.
- *
- * @param paramName the parameter to modify. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param value1 the first value
- * @param value2 the second value
- * @param value3 the third value
- */
- @NativeType("ALvoid")
- public static void alListener3f(@NativeType("ALenum") int paramName, @NativeType("ALfloat") float value1, @NativeType("ALfloat") float value2, @NativeType("ALfloat") float value3) {
- long __functionAddress = AL.getICD().alListener3f;
- invokeV(paramName, value1, value2, value3, __functionAddress);
- }
-
- // --- [ alListenerfv ] ---
-
- /** Unsafe version of: {@link #alListenerfv Listenerfv} */
- public static void nalListenerfv(int paramName, long values) {
- long __functionAddress = AL.getICD().alListenerfv;
- invokePV(paramName, values, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alListenerf Listenerf}.
- *
- * @param paramName the parameter to modify
- * @param values the parameter values
- */
- @NativeType("ALvoid")
- public static void alListenerfv(@NativeType("ALenum") int paramName, @NativeType("ALfloat const *") FloatBuffer values) {
- if (CHECKS) {
- check(values, 1);
- }
- nalListenerfv(paramName, memAddress(values));
- }
-
- // --- [ alGetListenerf ] ---
-
- /** Unsafe version of: {@link #alGetListenerf GetListenerf} */
- public static void nalGetListenerf(int paramName, long value) {
- long __functionAddress = AL.getICD().alGetListenerf;
- invokePV(paramName, value, __functionAddress);
- }
-
- /**
- * Returns the float value of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetListenerf(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") FloatBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetListenerf(paramName, memAddress(value));
- }
-
- /**
- * Returns the float value of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- */
- @NativeType("ALvoid")
- public static float alGetListenerf(@NativeType("ALenum") int paramName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer value = stack.callocFloat(1);
- nalGetListenerf(paramName, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetListeneri ] ---
-
- /** Unsafe version of: {@link #alGetListeneri GetListeneri} */
- public static void nalGetListeneri(int paramName, long value) {
- long __functionAddress = AL.getICD().alGetListeneri;
- invokePV(paramName, value, __functionAddress);
- }
-
- /**
- * Returns the integer value of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetListeneri(@NativeType("ALenum") int paramName, @NativeType("ALint *") IntBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetListeneri(paramName, memAddress(value));
- }
-
- /**
- * Returns the integer value of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- */
- @NativeType("ALvoid")
- public static int alGetListeneri(@NativeType("ALenum") int paramName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer value = stack.callocInt(1);
- nalGetListeneri(paramName, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetListener3f ] ---
-
- /** Unsafe version of: {@link #alGetListener3f GetListener3f} */
- public static void nalGetListener3f(int paramName, long value1, long value2, long value3) {
- long __functionAddress = AL.getICD().alGetListener3f;
- invokePPPV(paramName, value1, value2, value3, __functionAddress);
- }
-
- /**
- * Returns the 3 dimensional values of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param value1 the first parameter value
- * @param value2 the second parameter value
- * @param value3 the third parameter value
- */
- @NativeType("ALvoid")
- public static void alGetListener3f(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") FloatBuffer value1, @NativeType("ALfloat *") FloatBuffer value2, @NativeType("ALfloat *") FloatBuffer value3) {
- if (CHECKS) {
- check(value1, 1);
- check(value2, 1);
- check(value3, 1);
- }
- nalGetListener3f(paramName, memAddress(value1), memAddress(value2), memAddress(value3));
- }
-
- // --- [ alGetListenerfv ] ---
-
- /** Unsafe version of: {@link #alGetListenerfv GetListenerfv} */
- public static void nalGetListenerfv(int paramName, long values) {
- long __functionAddress = AL.getICD().alGetListenerfv;
- invokePV(paramName, values, __functionAddress);
- }
-
- /**
- * Returns float values of a listener parameter.
- *
- * @param paramName the parameter to query. One of:
| {@link #AL_ORIENTATION ORIENTATION} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} |
- * @param values the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetListenerfv(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") FloatBuffer values) {
- if (CHECKS) {
- check(values, 1);
- }
- nalGetListenerfv(paramName, memAddress(values));
- }
-
- // --- [ alGenSources ] ---
-
- /**
- * Unsafe version of: {@link #alGenSources GenSources}
- *
- * @param n the number of source names to generated
- */
- public static void nalGenSources(int n, long srcNames) {
- long __functionAddress = AL.getICD().alGenSources;
- invokePV(n, srcNames, __functionAddress);
- }
-
- /**
- * Requests a number of source names.
- *
- * @param srcNames the buffer that will receive the source names
- */
- @NativeType("ALvoid")
- public static void alGenSources(@NativeType("ALuint *") IntBuffer srcNames) {
- nalGenSources(srcNames.remaining(), memAddress(srcNames));
- }
-
- /** Requests a number of source names. */
- @NativeType("ALvoid")
- public static int alGenSources() {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer srcNames = stack.callocInt(1);
- nalGenSources(1, memAddress(srcNames));
- return srcNames.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alDeleteSources ] ---
-
- /**
- * Unsafe version of: {@link #alDeleteSources DeleteSources}
- *
- * @param n the number of sources to delete
- */
- public static void nalDeleteSources(int n, long sources) {
- long __functionAddress = AL.getICD().alDeleteSources;
- invokePV(n, sources, __functionAddress);
- }
-
- /**
- * Requests the deletion of a number of sources.
- *
- * @param sources the sources to delete
- */
- @NativeType("ALvoid")
- public static void alDeleteSources(@NativeType("ALuint *") IntBuffer sources) {
- nalDeleteSources(sources.remaining(), memAddress(sources));
- }
-
- /** Requests the deletion of a number of sources. */
- @NativeType("ALvoid")
- public static void alDeleteSources(@NativeType("ALuint *") int source) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer sources = stack.ints(source);
- nalDeleteSources(1, memAddress(sources));
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alIsSource ] ---
-
- /**
- * Verifies whether the specified object name is a source name.
- *
- * @param sourceName a value that may be a source name
- */
- @NativeType("ALboolean")
- public static boolean alIsSource(@NativeType("ALuint") int sourceName) {
- long __functionAddress = AL.getICD().alIsSource;
- return invokeZ(sourceName, __functionAddress);
- }
-
- // --- [ alSourcef ] ---
-
- /**
- * Sets the float value of a source parameter.
- *
- * @param source the source to modify
- * @param param the parameter to modify. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alSourcef(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat") float value) {
- long __functionAddress = AL.getICD().alSourcef;
- invokeV(source, param, value, __functionAddress);
- }
-
- // --- [ alSource3f ] ---
-
- /**
- * Sets the 3 dimensional values of a source parameter.
- *
- * @param source the source to modify
- * @param param the parameter to modify. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param v1 the first parameter value
- * @param v2 the second parameter value
- * @param v3 the third parameter value
- */
- @NativeType("ALvoid")
- public static void alSource3f(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat") float v1, @NativeType("ALfloat") float v2, @NativeType("ALfloat") float v3) {
- long __functionAddress = AL.getICD().alSource3f;
- invokeV(source, param, v1, v2, v3, __functionAddress);
- }
-
- // --- [ alSourcefv ] ---
-
- /** Unsafe version of: {@link #alSourcefv Sourcefv} */
- public static void nalSourcefv(int source, int param, long values) {
- long __functionAddress = AL.getICD().alSourcefv;
- invokePV(source, param, values, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alSourcef Sourcef}.
- *
- * @param source the source to modify
- * @param param the parameter to modify
- * @param values the parameter values
- */
- @NativeType("ALvoid")
- public static void alSourcefv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat const *") FloatBuffer values) {
- if (CHECKS) {
- check(values, 1);
- }
- nalSourcefv(source, param, memAddress(values));
- }
-
- // --- [ alSourcei ] ---
-
- /**
- * Integer version of {@link #alSourcef Sourcef}.
- *
- * @param source the source to modify
- * @param param the parameter to modify
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alSourcei(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALint") int value) {
- long __functionAddress = AL.getICD().alSourcei;
- invokeV(source, param, value, __functionAddress);
- }
-
- // --- [ alGetSourcef ] ---
-
- /** Unsafe version of: {@link #alGetSourcef GetSourcef} */
- public static void nalGetSourcef(int source, int param, long value) {
- long __functionAddress = AL.getICD().alGetSourcef;
- invokePV(source, param, value, __functionAddress);
- }
-
- /**
- * Returns the float value of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetSourcef(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") FloatBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetSourcef(source, param, memAddress(value));
- }
-
- /**
- * Returns the float value of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- */
- @NativeType("ALvoid")
- public static float alGetSourcef(@NativeType("ALuint") int source, @NativeType("ALenum") int param) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer value = stack.callocFloat(1);
- nalGetSourcef(source, param, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetSource3f ] ---
-
- /** Unsafe version of: {@link #alGetSource3f GetSource3f} */
- public static void nalGetSource3f(int source, int param, long v1, long v2, long v3) {
- long __functionAddress = AL.getICD().alGetSource3f;
- invokePPPV(source, param, v1, v2, v3, __functionAddress);
- }
-
- /**
- * Returns the 3 dimensional values of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param v1 the first parameter value
- * @param v2 the second parameter value
- * @param v3 the third parameter value
- */
- @NativeType("ALvoid")
- public static void alGetSource3f(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") FloatBuffer v1, @NativeType("ALfloat *") FloatBuffer v2, @NativeType("ALfloat *") FloatBuffer v3) {
- if (CHECKS) {
- check(v1, 1);
- check(v2, 1);
- check(v3, 1);
- }
- nalGetSource3f(source, param, memAddress(v1), memAddress(v2), memAddress(v3));
- }
-
- // --- [ alGetSourcefv ] ---
-
- /** Unsafe version of: {@link #alGetSourcefv GetSourcefv} */
- public static void nalGetSourcefv(int source, int param, long values) {
- long __functionAddress = AL.getICD().alGetSourcefv;
- invokePV(source, param, values, __functionAddress);
- }
-
- /**
- * Returns the float values of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param values the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetSourcefv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") FloatBuffer values) {
- if (CHECKS) {
- check(values, 1);
- }
- nalGetSourcefv(source, param, memAddress(values));
- }
-
- // --- [ alGetSourcei ] ---
-
- /** Unsafe version of: {@link #alGetSourcei GetSourcei} */
- public static void nalGetSourcei(int source, int param, long value) {
- long __functionAddress = AL.getICD().alGetSourcei;
- invokePV(source, param, value, __functionAddress);
- }
-
- /**
- * Returns the integer value of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetSourcei(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALint *") IntBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetSourcei(source, param, memAddress(value));
- }
-
- /**
- * Returns the integer value of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- */
- @NativeType("ALvoid")
- public static int alGetSourcei(@NativeType("ALuint") int source, @NativeType("ALenum") int param) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer value = stack.callocInt(1);
- nalGetSourcei(source, param, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetSourceiv ] ---
-
- /** Unsafe version of: {@link #alGetSourceiv GetSourceiv} */
- public static void nalGetSourceiv(int source, int param, long values) {
- long __functionAddress = AL.getICD().alGetSourceiv;
- invokePV(source, param, values, __functionAddress);
- }
-
- /**
- * Returns the integer values of the specified source parameter.
- *
- * @param source the source to query
- * @param param the parameter to query. One of:
| {@link #AL_CONE_INNER_ANGLE CONE_INNER_ANGLE} | {@link #AL_CONE_OUTER_ANGLE CONE_OUTER_ANGLE} | {@link #AL_PITCH PITCH} | {@link #AL_DIRECTION DIRECTION} | {@link #AL_LOOPING LOOPING} | {@link #AL_BUFFER BUFFER} | {@link #AL_SOURCE_STATE SOURCE_STATE} |
| {@link #AL_CONE_OUTER_GAIN CONE_OUTER_GAIN} | {@link #AL_SOURCE_TYPE SOURCE_TYPE} | {@link #AL_POSITION POSITION} | {@link #AL_VELOCITY VELOCITY} | {@link #AL_GAIN GAIN} | {@link #AL_REFERENCE_DISTANCE REFERENCE_DISTANCE} | {@link #AL_ROLLOFF_FACTOR ROLLOFF_FACTOR} |
| {@link #AL_MAX_DISTANCE MAX_DISTANCE} |
- * @param values the parameter values
- */
- @NativeType("ALvoid")
- public static void alGetSourceiv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALint *") IntBuffer values) {
- if (CHECKS) {
- check(values, 1);
- }
- nalGetSourceiv(source, param, memAddress(values));
- }
-
- // --- [ alSourceQueueBuffers ] ---
-
- /**
- * Unsafe version of: {@link #alSourceQueueBuffers SourceQueueBuffers}
- *
- * @param numBuffers the number of buffers to queue
- */
- public static void nalSourceQueueBuffers(int sourceName, int numBuffers, long bufferNames) {
- long __functionAddress = AL.getICD().alSourceQueueBuffers;
- invokePV(sourceName, numBuffers, bufferNames, __functionAddress);
- }
-
- /**
- * Queues up one or multiple buffer names to the specified source.
- *
- * The buffers will be queued in the sequence in which they appear in the array. This command is legal on a source in any playback state (to allow for
- * streaming, queuing has to be possible on a AL_PLAYING source). All buffers in a queue must have the same format and attributes, with the exception of
- * the {@code NULL} buffer (i.e., 0) which can always be queued.
- *
- * @param sourceName the target source
- * @param bufferNames the buffer names
- */
- @NativeType("ALvoid")
- public static void alSourceQueueBuffers(@NativeType("ALuint") int sourceName, @NativeType("ALuint *") IntBuffer bufferNames) {
- nalSourceQueueBuffers(sourceName, bufferNames.remaining(), memAddress(bufferNames));
- }
-
- /**
- * Queues up one or multiple buffer names to the specified source.
- *
- * The buffers will be queued in the sequence in which they appear in the array. This command is legal on a source in any playback state (to allow for
- * streaming, queuing has to be possible on a AL_PLAYING source). All buffers in a queue must have the same format and attributes, with the exception of
- * the {@code NULL} buffer (i.e., 0) which can always be queued.
- *
- * @param sourceName the target source
- */
- @NativeType("ALvoid")
- public static void alSourceQueueBuffers(@NativeType("ALuint") int sourceName, @NativeType("ALuint *") int bufferName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer bufferNames = stack.ints(bufferName);
- nalSourceQueueBuffers(sourceName, 1, memAddress(bufferNames));
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alSourceUnqueueBuffers ] ---
-
- /**
- * Unsafe version of: {@link #alSourceUnqueueBuffers SourceUnqueueBuffers}
- *
- * @param numEntries the number of buffers to unqueue
- */
- public static void nalSourceUnqueueBuffers(int sourceName, int numEntries, long bufferNames) {
- long __functionAddress = AL.getICD().alSourceUnqueueBuffers;
- invokePV(sourceName, numEntries, bufferNames, __functionAddress);
- }
-
- /**
- * Removes a number of buffer entries that have finished processing, in the order of apperance, from the queue of the specified source.
- *
- * Once a queue entry for a buffer has been appended to a queue and is pending processing, it should not be changed. Removal of a given queue entry is not
- * possible unless either the source is stopped (in which case then entire queue is considered processed), or if the queue entry has already been processed
- * (AL_PLAYING or AL_PAUSED source). A playing source will enter the AL_STOPPED state if it completes playback of the last buffer in its queue (the same
- * behavior as when a single buffer has been attached to a source and has finished playback).
- *
- * @param sourceName the target source
- * @param bufferNames the buffer names
- */
- @NativeType("ALvoid")
- public static void alSourceUnqueueBuffers(@NativeType("ALuint") int sourceName, @NativeType("ALuint *") IntBuffer bufferNames) {
- nalSourceUnqueueBuffers(sourceName, bufferNames.remaining(), memAddress(bufferNames));
- }
-
- /**
- * Removes a number of buffer entries that have finished processing, in the order of apperance, from the queue of the specified source.
- *
- * Once a queue entry for a buffer has been appended to a queue and is pending processing, it should not be changed. Removal of a given queue entry is not
- * possible unless either the source is stopped (in which case then entire queue is considered processed), or if the queue entry has already been processed
- * (AL_PLAYING or AL_PAUSED source). A playing source will enter the AL_STOPPED state if it completes playback of the last buffer in its queue (the same
- * behavior as when a single buffer has been attached to a source and has finished playback).
- *
- * @param sourceName the target source
- */
- @NativeType("ALvoid")
- public static int alSourceUnqueueBuffers(@NativeType("ALuint") int sourceName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer bufferNames = stack.callocInt(1);
- nalSourceUnqueueBuffers(sourceName, 1, memAddress(bufferNames));
- return bufferNames.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alSourcePlay ] ---
-
- /**
- * Sets the source state to AL_PLAYING.
- *
- * alSourcePlay applied to an AL_INITIAL source will promote the source to AL_PLAYING, thus the data found in the buffer will be fed into the processing,
- * starting at the beginning. alSourcePlay applied to a AL_PLAYING source will restart the source from the beginning. It will not affect the configuration,
- * and will leave the source in AL_PLAYING state, but reset the sampling offset to the beginning. alSourcePlay applied to a AL_PAUSED source will resume
- * processing using the source state as preserved at the alSourcePause operation. alSourcePlay applied to a AL_STOPPED source will propagate it to
- * AL_INITIAL then to AL_PLAYING immediately.
- *
- * @param source the source to play
- */
- @NativeType("ALvoid")
- public static void alSourcePlay(@NativeType("ALuint") int source) {
- long __functionAddress = AL.getICD().alSourcePlay;
- invokeV(source, __functionAddress);
- }
-
- // --- [ alSourcePause ] ---
-
- /**
- * Sets the source state to AL_PAUSED.
- *
- * alSourcePause applied to an AL_INITIAL source is a legal NOP. alSourcePause applied to a AL_PLAYING source will change its state to AL_PAUSED. The
- * source is exempt from processing, its current state is preserved. alSourcePause applied to a AL_PAUSED source is a legal NOP. alSourcePause applied to a
- * AL_STOPPED source is a legal NOP.
- *
- * @param source the source to pause
- */
- @NativeType("ALvoid")
- public static void alSourcePause(@NativeType("ALuint") int source) {
- long __functionAddress = AL.getICD().alSourcePause;
- invokeV(source, __functionAddress);
- }
-
- // --- [ alSourceStop ] ---
-
- /**
- * Sets the source state to AL_STOPPED.
- *
- * alSourceStop applied to an AL_INITIAL source is a legal NOP. alSourceStop applied to a AL_PLAYING source will change its state to AL_STOPPED. The source
- * is exempt from processing, its current state is preserved. alSourceStop applied to a AL_PAUSED source will change its state to AL_STOPPED, with the same
- * consequences as on a AL_PLAYING source. alSourceStop applied to a AL_STOPPED source is a legal NOP.
- *
- * @param source the source to stop
- */
- @NativeType("ALvoid")
- public static void alSourceStop(@NativeType("ALuint") int source) {
- long __functionAddress = AL.getICD().alSourceStop;
- invokeV(source, __functionAddress);
- }
-
- // --- [ alSourceRewind ] ---
-
- /**
- * Sets the source state to AL_INITIAL.
- *
- * alSourceRewind applied to an AL_INITIAL source is a legal NOP. alSourceRewind applied to a AL_PLAYING source will change its state to AL_STOPPED then
- * AL_INITIAL. The source is exempt from processing: its current state is preserved, with the exception of the sampling offset, which is reset to the
- * beginning. alSourceRewind applied to a AL_PAUSED source will change its state to AL_INITIAL, with the same consequences as on a AL_PLAYING source.
- * alSourceRewind applied to an AL_STOPPED source promotes the source to AL_INITIAL, resetting the sampling offset to the beginning.
- *
- * @param source the source to rewind
- */
- @NativeType("ALvoid")
- public static void alSourceRewind(@NativeType("ALuint") int source) {
- long __functionAddress = AL.getICD().alSourceRewind;
- invokeV(source, __functionAddress);
- }
-
- // --- [ alSourcePlayv ] ---
-
- /**
- * Unsafe version of: {@link #alSourcePlayv SourcePlayv}
- *
- * @param n the number of sources to play
- */
- public static void nalSourcePlayv(int n, long sources) {
- long __functionAddress = AL.getICD().alSourcePlayv;
- invokePV(n, sources, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alSourcePlay SourcePlay}.
- *
- * @param sources the sources to play
- */
- @NativeType("ALvoid")
- public static void alSourcePlayv(@NativeType("ALuint const *") IntBuffer sources) {
- nalSourcePlayv(sources.remaining(), memAddress(sources));
- }
-
- // --- [ alSourcePausev ] ---
-
- /**
- * Unsafe version of: {@link #alSourcePausev SourcePausev}
- *
- * @param n the number of sources to pause
- */
- public static void nalSourcePausev(int n, long sources) {
- long __functionAddress = AL.getICD().alSourcePausev;
- invokePV(n, sources, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alSourcePause SourcePause}.
- *
- * @param sources the sources to pause
- */
- @NativeType("ALvoid")
- public static void alSourcePausev(@NativeType("ALuint const *") IntBuffer sources) {
- nalSourcePausev(sources.remaining(), memAddress(sources));
- }
-
- // --- [ alSourceStopv ] ---
-
- /**
- * Unsafe version of: {@link #alSourceStopv SourceStopv}
- *
- * @param n the number of sources to stop
- */
- public static void nalSourceStopv(int n, long sources) {
- long __functionAddress = AL.getICD().alSourceStopv;
- invokePV(n, sources, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alSourceStop SourceStop}.
- *
- * @param sources the sources to stop
- */
- @NativeType("ALvoid")
- public static void alSourceStopv(@NativeType("ALuint const *") IntBuffer sources) {
- nalSourceStopv(sources.remaining(), memAddress(sources));
- }
-
- // --- [ alSourceRewindv ] ---
-
- /**
- * Unsafe version of: {@link #alSourceRewindv SourceRewindv}
- *
- * @param n the number of sources to rewind
- */
- public static void nalSourceRewindv(int n, long sources) {
- long __functionAddress = AL.getICD().alSourceRewindv;
- invokePV(n, sources, __functionAddress);
- }
-
- /**
- * Pointer version of {@link #alSourceRewind SourceRewind}.
- *
- * @param sources the sources to rewind
- */
- @NativeType("ALvoid")
- public static void alSourceRewindv(@NativeType("ALuint const *") IntBuffer sources) {
- nalSourceRewindv(sources.remaining(), memAddress(sources));
- }
-
- // --- [ alGenBuffers ] ---
-
- /**
- * Unsafe version of: {@link #alGenBuffers GenBuffers}
- *
- * @param n the number of buffer names to generate
- */
- public static void nalGenBuffers(int n, long bufferNames) {
- long __functionAddress = AL.getICD().alGenBuffers;
- invokePV(n, bufferNames, __functionAddress);
- }
-
- /**
- * Requests a number of buffer names.
- *
- * @param bufferNames the buffer that will receive the buffer names
- */
- @NativeType("ALvoid")
- public static void alGenBuffers(@NativeType("ALuint *") IntBuffer bufferNames) {
- nalGenBuffers(bufferNames.remaining(), memAddress(bufferNames));
- }
-
- /** Requests a number of buffer names. */
- @NativeType("ALvoid")
- public static int alGenBuffers() {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer bufferNames = stack.callocInt(1);
- nalGenBuffers(1, memAddress(bufferNames));
- return bufferNames.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alDeleteBuffers ] ---
-
- /**
- * Unsafe version of: {@link #alDeleteBuffers DeleteBuffers}
- *
- * @param n the number of buffers to delete
- */
- public static void nalDeleteBuffers(int n, long bufferNames) {
- long __functionAddress = AL.getICD().alDeleteBuffers;
- invokePV(n, bufferNames, __functionAddress);
- }
-
- /**
- * Requests the deletion of a number of buffers.
- *
- * @param bufferNames the buffers to delete
- */
- @NativeType("ALvoid")
- public static void alDeleteBuffers(@NativeType("ALuint const *") IntBuffer bufferNames) {
- nalDeleteBuffers(bufferNames.remaining(), memAddress(bufferNames));
- }
-
- /** Requests the deletion of a number of buffers. */
- @NativeType("ALvoid")
- public static void alDeleteBuffers(@NativeType("ALuint const *") int bufferName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer bufferNames = stack.ints(bufferName);
- nalDeleteBuffers(1, memAddress(bufferNames));
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alIsBuffer ] ---
-
- /**
- * Verifies whether the specified object name is a buffer name.
- *
- * @param bufferName a value that may be a buffer name
- */
- @NativeType("ALboolean")
- public static boolean alIsBuffer(@NativeType("ALuint") int bufferName) {
- long __functionAddress = AL.getICD().alIsBuffer;
- return invokeZ(bufferName, __functionAddress);
- }
-
- // --- [ alGetBufferf ] ---
-
- /** Unsafe version of: {@link #alGetBufferf GetBufferf} */
- public static void nalGetBufferf(int bufferName, int paramName, long value) {
- long __functionAddress = AL.getICD().alGetBufferf;
- invokePV(bufferName, paramName, value, __functionAddress);
- }
-
- /**
- * Returns the float value of the specified buffer parameter.
- *
- * @param bufferName the buffer to query
- * @param paramName the parameter to query. One of:
| {@link #AL_FREQUENCY FREQUENCY} | {@link #AL_BITS BITS} | {@link #AL_CHANNELS CHANNELS} | {@link #AL_SIZE SIZE} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetBufferf(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName, @NativeType("ALfloat *") FloatBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetBufferf(bufferName, paramName, memAddress(value));
- }
-
- /**
- * Returns the float value of the specified buffer parameter.
- *
- * @param bufferName the buffer to query
- * @param paramName the parameter to query. One of:
| {@link #AL_FREQUENCY FREQUENCY} | {@link #AL_BITS BITS} | {@link #AL_CHANNELS CHANNELS} | {@link #AL_SIZE SIZE} |
- */
- @NativeType("ALvoid")
- public static float alGetBufferf(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer value = stack.callocFloat(1);
- nalGetBufferf(bufferName, paramName, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetBufferi ] ---
-
- /** Unsafe version of: {@link #alGetBufferi GetBufferi} */
- public static void nalGetBufferi(int bufferName, int paramName, long value) {
- long __functionAddress = AL.getICD().alGetBufferi;
- invokePV(bufferName, paramName, value, __functionAddress);
- }
-
- /**
- * Returns the integer value of the specified buffer parameter.
- *
- * @param bufferName the buffer to query
- * @param paramName the parameter to query. One of:
| {@link #AL_FREQUENCY FREQUENCY} | {@link #AL_BITS BITS} | {@link #AL_CHANNELS CHANNELS} | {@link #AL_SIZE SIZE} |
- * @param value the parameter value
- */
- @NativeType("ALvoid")
- public static void alGetBufferi(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName, @NativeType("ALint *") IntBuffer value) {
- if (CHECKS) {
- check(value, 1);
- }
- nalGetBufferi(bufferName, paramName, memAddress(value));
- }
-
- /**
- * Returns the integer value of the specified buffer parameter.
- *
- * @param bufferName the buffer to query
- * @param paramName the parameter to query. One of:
| {@link #AL_FREQUENCY FREQUENCY} | {@link #AL_BITS BITS} | {@link #AL_CHANNELS CHANNELS} | {@link #AL_SIZE SIZE} |
- */
- @NativeType("ALvoid")
- public static int alGetBufferi(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer value = stack.callocInt(1);
- nalGetBufferi(bufferName, paramName, memAddress(value));
- return value.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alBufferData ] ---
-
- /**
- * Unsafe version of: {@link #alBufferData BufferData}
- *
- * @param size the data buffer size, in bytes
- */
- public static void nalBufferData(int bufferName, int format, long data, int size, int frequency) {
- long __functionAddress = AL.getICD().alBufferData;
- invokePV(bufferName, format, data, size, frequency, __functionAddress);
- }
-
- /**
- * Sets the sample data of the specified buffer.
- *
- * The data specified is copied to an internal software, or if possible, hardware buffer. The implementation is free to apply decompression, conversion,
- * resampling, and filtering as needed.
- *
- * 8-bit data is expressed as an unsigned value over the range 0 to 255, 128 being an audio output level of zero.
- *
- * 16-bit data is expressed as a signed value over the range -32768 to 32767, 0 being an audio output level of zero. Byte order for 16-bit values is
- * determined by the native format of the CPU.
- *
- * Stereo data is expressed in an interleaved format, left channel sample followed by the right channel sample.
- *
- * Buffers containing audio data with more than one channel will be played without 3D spatialization features – these formats are normally used for
- * background music.
- *
- * @param bufferName the buffer to modify
- * @param format the data format. One of:
| {@link #AL_FORMAT_MONO8 FORMAT_MONO8} | {@link #AL_FORMAT_MONO16 FORMAT_MONO16} | {@link #AL_FORMAT_STEREO8 FORMAT_STEREO8} | {@link #AL_FORMAT_STEREO16 FORMAT_STEREO16} |
- * @param data the sample data
- * @param frequency the data frequency
- */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") ByteBuffer data, @NativeType("ALsizei") int frequency) {
- nalBufferData(bufferName, format, memAddress(data), data.remaining(), frequency);
- }
-
- /**
- * Sets the sample data of the specified buffer.
- *
- * The data specified is copied to an internal software, or if possible, hardware buffer. The implementation is free to apply decompression, conversion,
- * resampling, and filtering as needed.
- *
- * 8-bit data is expressed as an unsigned value over the range 0 to 255, 128 being an audio output level of zero.
- *
- * 16-bit data is expressed as a signed value over the range -32768 to 32767, 0 being an audio output level of zero. Byte order for 16-bit values is
- * determined by the native format of the CPU.
- *
- * Stereo data is expressed in an interleaved format, left channel sample followed by the right channel sample.
- *
- * Buffers containing audio data with more than one channel will be played without 3D spatialization features – these formats are normally used for
- * background music.
- *
- * @param bufferName the buffer to modify
- * @param format the data format. One of:
| {@link #AL_FORMAT_MONO8 FORMAT_MONO8} | {@link #AL_FORMAT_MONO16 FORMAT_MONO16} | {@link #AL_FORMAT_STEREO8 FORMAT_STEREO8} | {@link #AL_FORMAT_STEREO16 FORMAT_STEREO16} |
- * @param data the sample data
- * @param frequency the data frequency
- */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") ShortBuffer data, @NativeType("ALsizei") int frequency) {
- nalBufferData(bufferName, format, memAddress(data), data.remaining() << 1, frequency);
- }
-
- /**
- * Sets the sample data of the specified buffer.
- *
- * The data specified is copied to an internal software, or if possible, hardware buffer. The implementation is free to apply decompression, conversion,
- * resampling, and filtering as needed.
- *
- * 8-bit data is expressed as an unsigned value over the range 0 to 255, 128 being an audio output level of zero.
- *
- * 16-bit data is expressed as a signed value over the range -32768 to 32767, 0 being an audio output level of zero. Byte order for 16-bit values is
- * determined by the native format of the CPU.
- *
- * Stereo data is expressed in an interleaved format, left channel sample followed by the right channel sample.
- *
- * Buffers containing audio data with more than one channel will be played without 3D spatialization features – these formats are normally used for
- * background music.
- *
- * @param bufferName the buffer to modify
- * @param format the data format. One of:
| {@link #AL_FORMAT_MONO8 FORMAT_MONO8} | {@link #AL_FORMAT_MONO16 FORMAT_MONO16} | {@link #AL_FORMAT_STEREO8 FORMAT_STEREO8} | {@link #AL_FORMAT_STEREO16 FORMAT_STEREO16} |
- * @param data the sample data
- * @param frequency the data frequency
- */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") IntBuffer data, @NativeType("ALsizei") int frequency) {
- nalBufferData(bufferName, format, memAddress(data), data.remaining() << 2, frequency);
- }
-
- /**
- * Sets the sample data of the specified buffer.
- *
- * The data specified is copied to an internal software, or if possible, hardware buffer. The implementation is free to apply decompression, conversion,
- * resampling, and filtering as needed.
- *
- * 8-bit data is expressed as an unsigned value over the range 0 to 255, 128 being an audio output level of zero.
- *
- * 16-bit data is expressed as a signed value over the range -32768 to 32767, 0 being an audio output level of zero. Byte order for 16-bit values is
- * determined by the native format of the CPU.
- *
- * Stereo data is expressed in an interleaved format, left channel sample followed by the right channel sample.
- *
- * Buffers containing audio data with more than one channel will be played without 3D spatialization features – these formats are normally used for
- * background music.
- *
- * @param bufferName the buffer to modify
- * @param format the data format. One of:
| {@link #AL_FORMAT_MONO8 FORMAT_MONO8} | {@link #AL_FORMAT_MONO16 FORMAT_MONO16} | {@link #AL_FORMAT_STEREO8 FORMAT_STEREO8} | {@link #AL_FORMAT_STEREO16 FORMAT_STEREO16} |
- * @param data the sample data
- * @param frequency the data frequency
- */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") FloatBuffer data, @NativeType("ALsizei") int frequency) {
- nalBufferData(bufferName, format, memAddress(data), data.remaining() << 2, frequency);
- }
-
- // --- [ alGetEnumValue ] ---
-
- /** Unsafe version of: {@link #alGetEnumValue GetEnumValue} */
- public static int nalGetEnumValue(long enumName) {
- long __functionAddress = AL.getICD().alGetEnumValue;
- return invokePI(enumName, __functionAddress);
- }
-
- /**
- * Returns the enumeration value of the specified enum.
- *
- * @param enumName the enum name
- */
- @NativeType("ALuint")
- public static int alGetEnumValue(@NativeType("ALchar const *") ByteBuffer enumName) {
- if (CHECKS) {
- checkNT1(enumName);
- }
- return nalGetEnumValue(memAddress(enumName));
- }
-
- /**
- * Returns the enumeration value of the specified enum.
- *
- * @param enumName the enum name
- */
- @NativeType("ALuint")
- public static int alGetEnumValue(@NativeType("ALchar const *") CharSequence enumName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(enumName, true);
- long enumNameEncoded = stack.getPointerAddress();
- return nalGetEnumValue(enumNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alGetProcAddress ] ---
-
- /** Unsafe version of: {@link #alGetProcAddress GetProcAddress} */
- public static long nalGetProcAddress(long funcName) {
- long __functionAddress = AL.getICD().alGetProcAddress;
- return invokePP(funcName, __functionAddress);
- }
-
- /**
- * Retrieves extension entry points.
- *
- * Returns {@code NULL} if no entry point with the name funcName can be found. Implementations are free to return {@code NULL} if an entry point is present, but not
- * applicable for the current context. However the specification does not guarantee this behavior.
- *
- * Applications can use alGetProcAddress to obtain core API entry points, not just extensions. This is the recommended way to dynamically load and unload
- * OpenAL DLL's as sound drivers.
- *
- * @param funcName the function name
- */
- @NativeType("void *")
- public static long alGetProcAddress(@NativeType("ALchar const *") ByteBuffer funcName) {
- if (CHECKS) {
- checkNT1(funcName);
- }
- return nalGetProcAddress(memAddress(funcName));
- }
-
- /**
- * Retrieves extension entry points.
- *
- * Returns {@code NULL} if no entry point with the name funcName can be found. Implementations are free to return {@code NULL} if an entry point is present, but not
- * applicable for the current context. However the specification does not guarantee this behavior.
- *
- * Applications can use alGetProcAddress to obtain core API entry points, not just extensions. This is the recommended way to dynamically load and unload
- * OpenAL DLL's as sound drivers.
- *
- * @param funcName the function name
- */
- @NativeType("void *")
- public static long alGetProcAddress(@NativeType("ALchar const *") CharSequence funcName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(funcName, true);
- long funcNameEncoded = stack.getPointerAddress();
- return nalGetProcAddress(funcNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alIsExtensionPresent ] ---
-
- /** Unsafe version of: {@link #alIsExtensionPresent IsExtensionPresent} */
- public static boolean nalIsExtensionPresent(long extName) {
- long __functionAddress = AL.getICD().alIsExtensionPresent;
- return invokePZ(extName, __functionAddress);
- }
-
- /**
- * Verifies that a given extension is available for the current context and the device it is associated with.
- *
- * Invalid and unsupported string tokens return ALC_FALSE. {@code extName} is not case sensitive – the implementation will convert the name to all
- * upper-case internally (and will express extension names in upper-case).
- *
- * @param extName the extension name
- */
- @NativeType("ALCboolean")
- public static boolean alIsExtensionPresent(@NativeType("ALchar const *") ByteBuffer extName) {
- if (CHECKS) {
- checkNT1(extName);
- }
- return nalIsExtensionPresent(memAddress(extName));
- }
-
- /**
- * Verifies that a given extension is available for the current context and the device it is associated with.
- *
- * Invalid and unsupported string tokens return ALC_FALSE. {@code extName} is not case sensitive – the implementation will convert the name to all
- * upper-case internally (and will express extension names in upper-case).
- *
- * @param extName the extension name
- */
- @NativeType("ALCboolean")
- public static boolean alIsExtensionPresent(@NativeType("ALchar const *") CharSequence extName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(extName, true);
- long extNameEncoded = stack.getPointerAddress();
- return nalIsExtensionPresent(extNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- /** Array version of: {@link #alGetIntegerv GetIntegerv} */
- @NativeType("ALvoid")
- public static void alGetIntegerv(@NativeType("ALenum") int paramName, @NativeType("ALint *") int[] dest) {
- long __functionAddress = AL.getICD().alGetIntegerv;
- if (CHECKS) {
- check(dest, 1);
- }
- invokePV(paramName, dest, __functionAddress);
- }
-
- /** Array version of: {@link #alGetFloatv GetFloatv} */
- @NativeType("ALvoid")
- public static void alGetFloatv(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") float[] dest) {
- long __functionAddress = AL.getICD().alGetFloatv;
- if (CHECKS) {
- check(dest, 1);
- }
- invokePV(paramName, dest, __functionAddress);
- }
-
- /** Array version of: {@link #alGetDoublev GetDoublev} */
- @NativeType("ALvoid")
- public static void alGetDoublev(@NativeType("ALenum") int paramName, @NativeType("ALdouble *") double[] dest) {
- long __functionAddress = AL.getICD().alGetDoublev;
- if (CHECKS) {
- check(dest, 1);
- }
- invokePV(paramName, dest, __functionAddress);
- }
-
- /** Array version of: {@link #alListenerfv Listenerfv} */
- @NativeType("ALvoid")
- public static void alListenerfv(@NativeType("ALenum") int paramName, @NativeType("ALfloat const *") float[] values) {
- long __functionAddress = AL.getICD().alListenerfv;
- if (CHECKS) {
- check(values, 1);
- }
- invokePV(paramName, values, __functionAddress);
- }
-
- /** Array version of: {@link #alGetListenerf GetListenerf} */
- @NativeType("ALvoid")
- public static void alGetListenerf(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") float[] value) {
- long __functionAddress = AL.getICD().alGetListenerf;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(paramName, value, __functionAddress);
- }
-
- /** Array version of: {@link #alGetListeneri GetListeneri} */
- @NativeType("ALvoid")
- public static void alGetListeneri(@NativeType("ALenum") int paramName, @NativeType("ALint *") int[] value) {
- long __functionAddress = AL.getICD().alGetListeneri;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(paramName, value, __functionAddress);
- }
-
- /** Array version of: {@link #alGetListener3f GetListener3f} */
- @NativeType("ALvoid")
- public static void alGetListener3f(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") float[] value1, @NativeType("ALfloat *") float[] value2, @NativeType("ALfloat *") float[] value3) {
- long __functionAddress = AL.getICD().alGetListener3f;
- if (CHECKS) {
- check(value1, 1);
- check(value2, 1);
- check(value3, 1);
- }
- invokePPPV(paramName, value1, value2, value3, __functionAddress);
- }
-
- /** Array version of: {@link #alGetListenerfv GetListenerfv} */
- @NativeType("ALvoid")
- public static void alGetListenerfv(@NativeType("ALenum") int paramName, @NativeType("ALfloat *") float[] values) {
- long __functionAddress = AL.getICD().alGetListenerfv;
- if (CHECKS) {
- check(values, 1);
- }
- invokePV(paramName, values, __functionAddress);
- }
-
- /** Array version of: {@link #alGenSources GenSources} */
- @NativeType("ALvoid")
- public static void alGenSources(@NativeType("ALuint *") int[] srcNames) {
- long __functionAddress = AL.getICD().alGenSources;
- invokePV(srcNames.length, srcNames, __functionAddress);
- }
-
- /** Array version of: {@link #alDeleteSources DeleteSources} */
- @NativeType("ALvoid")
- public static void alDeleteSources(@NativeType("ALuint *") int[] sources) {
- long __functionAddress = AL.getICD().alDeleteSources;
- invokePV(sources.length, sources, __functionAddress);
- }
-
- /** Array version of: {@link #alSourcefv Sourcefv} */
- @NativeType("ALvoid")
- public static void alSourcefv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat const *") float[] values) {
- long __functionAddress = AL.getICD().alSourcefv;
- if (CHECKS) {
- check(values, 1);
- }
- invokePV(source, param, values, __functionAddress);
- }
-
- /** Array version of: {@link #alGetSourcef GetSourcef} */
- @NativeType("ALvoid")
- public static void alGetSourcef(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") float[] value) {
- long __functionAddress = AL.getICD().alGetSourcef;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(source, param, value, __functionAddress);
- }
-
- /** Array version of: {@link #alGetSource3f GetSource3f} */
- @NativeType("ALvoid")
- public static void alGetSource3f(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") float[] v1, @NativeType("ALfloat *") float[] v2, @NativeType("ALfloat *") float[] v3) {
- long __functionAddress = AL.getICD().alGetSource3f;
- if (CHECKS) {
- check(v1, 1);
- check(v2, 1);
- check(v3, 1);
- }
- invokePPPV(source, param, v1, v2, v3, __functionAddress);
- }
-
- /** Array version of: {@link #alGetSourcefv GetSourcefv} */
- @NativeType("ALvoid")
- public static void alGetSourcefv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALfloat *") float[] values) {
- long __functionAddress = AL.getICD().alGetSourcefv;
- if (CHECKS) {
- check(values, 1);
- }
- invokePV(source, param, values, __functionAddress);
- }
-
- /** Array version of: {@link #alGetSourcei GetSourcei} */
- @NativeType("ALvoid")
- public static void alGetSourcei(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALint *") int[] value) {
- long __functionAddress = AL.getICD().alGetSourcei;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(source, param, value, __functionAddress);
- }
-
- /** Array version of: {@link #alGetSourceiv GetSourceiv} */
- @NativeType("ALvoid")
- public static void alGetSourceiv(@NativeType("ALuint") int source, @NativeType("ALenum") int param, @NativeType("ALint *") int[] values) {
- long __functionAddress = AL.getICD().alGetSourceiv;
- if (CHECKS) {
- check(values, 1);
- }
- invokePV(source, param, values, __functionAddress);
- }
-
- /** Array version of: {@link #alSourceQueueBuffers SourceQueueBuffers} */
- @NativeType("ALvoid")
- public static void alSourceQueueBuffers(@NativeType("ALuint") int sourceName, @NativeType("ALuint *") int[] bufferNames) {
- long __functionAddress = AL.getICD().alSourceQueueBuffers;
- invokePV(sourceName, bufferNames.length, bufferNames, __functionAddress);
- }
-
- /** Array version of: {@link #alSourceUnqueueBuffers SourceUnqueueBuffers} */
- @NativeType("ALvoid")
- public static void alSourceUnqueueBuffers(@NativeType("ALuint") int sourceName, @NativeType("ALuint *") int[] bufferNames) {
- long __functionAddress = AL.getICD().alSourceUnqueueBuffers;
- invokePV(sourceName, bufferNames.length, bufferNames, __functionAddress);
- }
-
- /** Array version of: {@link #alSourcePlayv SourcePlayv} */
- @NativeType("ALvoid")
- public static void alSourcePlayv(@NativeType("ALuint const *") int[] sources) {
- long __functionAddress = AL.getICD().alSourcePlayv;
- invokePV(sources.length, sources, __functionAddress);
- }
-
- /** Array version of: {@link #alSourcePausev SourcePausev} */
- @NativeType("ALvoid")
- public static void alSourcePausev(@NativeType("ALuint const *") int[] sources) {
- long __functionAddress = AL.getICD().alSourcePausev;
- invokePV(sources.length, sources, __functionAddress);
- }
-
- /** Array version of: {@link #alSourceStopv SourceStopv} */
- @NativeType("ALvoid")
- public static void alSourceStopv(@NativeType("ALuint const *") int[] sources) {
- long __functionAddress = AL.getICD().alSourceStopv;
- invokePV(sources.length, sources, __functionAddress);
- }
-
- /** Array version of: {@link #alSourceRewindv SourceRewindv} */
- @NativeType("ALvoid")
- public static void alSourceRewindv(@NativeType("ALuint const *") int[] sources) {
- long __functionAddress = AL.getICD().alSourceRewindv;
- invokePV(sources.length, sources, __functionAddress);
- }
-
- /** Array version of: {@link #alGenBuffers GenBuffers} */
- @NativeType("ALvoid")
- public static void alGenBuffers(@NativeType("ALuint *") int[] bufferNames) {
- long __functionAddress = AL.getICD().alGenBuffers;
- invokePV(bufferNames.length, bufferNames, __functionAddress);
- }
-
- /** Array version of: {@link #alDeleteBuffers DeleteBuffers} */
- @NativeType("ALvoid")
- public static void alDeleteBuffers(@NativeType("ALuint const *") int[] bufferNames) {
- long __functionAddress = AL.getICD().alDeleteBuffers;
- invokePV(bufferNames.length, bufferNames, __functionAddress);
- }
-
- /** Array version of: {@link #alGetBufferf GetBufferf} */
- @NativeType("ALvoid")
- public static void alGetBufferf(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName, @NativeType("ALfloat *") float[] value) {
- long __functionAddress = AL.getICD().alGetBufferf;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(bufferName, paramName, value, __functionAddress);
- }
-
- /** Array version of: {@link #alGetBufferi GetBufferi} */
- @NativeType("ALvoid")
- public static void alGetBufferi(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int paramName, @NativeType("ALint *") int[] value) {
- long __functionAddress = AL.getICD().alGetBufferi;
- if (CHECKS) {
- check(value, 1);
- }
- invokePV(bufferName, paramName, value, __functionAddress);
- }
-
- /** Array version of: {@link #alBufferData BufferData} */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") short[] data, @NativeType("ALsizei") int frequency) {
- long __functionAddress = AL.getICD().alBufferData;
- invokePV(bufferName, format, data, data.length << 1, frequency, __functionAddress);
- }
-
- /** Array version of: {@link #alBufferData BufferData} */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") int[] data, @NativeType("ALsizei") int frequency) {
- long __functionAddress = AL.getICD().alBufferData;
- invokePV(bufferName, format, data, data.length << 2, frequency, __functionAddress);
- }
-
- /** Array version of: {@link #alBufferData BufferData} */
- @NativeType("ALvoid")
- public static void alBufferData(@NativeType("ALuint") int bufferName, @NativeType("ALenum") int format, @NativeType("ALvoid const *") float[] data, @NativeType("ALsizei") int frequency) {
- long __functionAddress = AL.getICD().alBufferData;
- invokePV(bufferName, format, data, data.length << 2, frequency, __functionAddress);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALC10.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALC10.java
deleted file mode 100644
index 5d52edd3f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALC10.java
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.openal;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/** Native bindings to ALC 1.0 functionality. */
-public class ALC10 {
-
- /** General tokens. */
- public static final int
- ALC_INVALID = 0xFFFFFFFF,
- ALC_FALSE = 0x0,
- ALC_TRUE = 0x1;
-
- /** Context creation attributes. */
- public static final int
- ALC_FREQUENCY = 0x1007,
- ALC_REFRESH = 0x1008,
- ALC_SYNC = 0x1009;
-
- /** Error conditions. */
- public static final int
- ALC_NO_ERROR = 0x0,
- ALC_INVALID_DEVICE = 0xA001,
- ALC_INVALID_CONTEXT = 0xA002,
- ALC_INVALID_ENUM = 0xA003,
- ALC_INVALID_VALUE = 0xA004,
- ALC_OUT_OF_MEMORY = 0xA005;
-
- /** String queries. */
- public static final int
- ALC_DEFAULT_DEVICE_SPECIFIER = 0x1004,
- ALC_DEVICE_SPECIFIER = 0x1005,
- ALC_EXTENSIONS = 0x1006;
-
- /** Integer queries. */
- public static final int
- ALC_MAJOR_VERSION = 0x1000,
- ALC_MINOR_VERSION = 0x1001,
- ALC_ATTRIBUTES_SIZE = 0x1002,
- ALC_ALL_ATTRIBUTES = 0x1003;
-
- protected ALC10() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(ALCCapabilities caps) {
- return checkFunctions(
- caps.alcOpenDevice, caps.alcCloseDevice, caps.alcCreateContext, caps.alcMakeContextCurrent, caps.alcProcessContext, caps.alcSuspendContext,
- caps.alcDestroyContext, caps.alcGetCurrentContext, caps.alcGetContextsDevice, caps.alcIsExtensionPresent, caps.alcGetProcAddress,
- caps.alcGetEnumValue, caps.alcGetError, caps.alcGetString, caps.alcGetIntegerv
- );
- }
-
-// -- Begin LWJGL2 --
- static ALCcontext alcContext;
-
- public static ALCcontext alcCreateContext(ALCdevice device, java.nio.IntBuffer attrList) {
- long alContextHandle = alcCreateContext(device.device, attrList);
- alcContext = new ALCcontext(alContextHandle);
- return alcContext;
- }
-
- // FIXME if Minecraft 1.12.2 and below crashes here!
-/*
- public static ALCcontext alcGetCurrentContext() {
- return alcContext;
- }
-*/
- public static ALCdevice alcGetContextsDevice(ALCcontext context) {
- return AL.alcDevice;
- }
-
- public static void alcGetInteger(ALCdevice device, int pname, java.nio.IntBuffer integerdata) {
- int res = alcGetInteger(device.device, pname);
- integerdata.put(0, res);
- }
-// -- End LWJGL2 --
-
- // --- [ alcOpenDevice ] ---
-
- /** Unsafe version of: {@link #alcOpenDevice OpenDevice} */
- public static long nalcOpenDevice(long deviceSpecifier) {
- long __functionAddress = ALC.getICD().alcOpenDevice;
- return invokePP(deviceSpecifier, __functionAddress);
- }
-
- /**
- * Allows the application to connect to a device.
- *
- * If the function returns {@code NULL}, then no sound driver/device has been found. The argument is a null terminated string that requests a certain device or
- * device configuration. If {@code NULL} is specified, the implementation will provide an implementation specific default.
- *
- * @param deviceSpecifier the requested device or device configuration
- */
- @NativeType("ALCdevice *")
- public static long alcOpenDevice(@Nullable @NativeType("ALCchar const *") ByteBuffer deviceSpecifier) {
- if (CHECKS) {
- checkNT1Safe(deviceSpecifier);
- }
- return nalcOpenDevice(memAddressSafe(deviceSpecifier));
- }
-
- /**
- * Allows the application to connect to a device.
- *
- * If the function returns {@code NULL}, then no sound driver/device has been found. The argument is a null terminated string that requests a certain device or
- * device configuration. If {@code NULL} is specified, the implementation will provide an implementation specific default.
- *
- * @param deviceSpecifier the requested device or device configuration
- */
- @NativeType("ALCdevice *")
- public static long alcOpenDevice(@Nullable @NativeType("ALCchar const *") CharSequence deviceSpecifier) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nUTF8Safe(deviceSpecifier, true);
- long deviceSpecifierEncoded = deviceSpecifier == null ? NULL : stack.getPointerAddress();
- return nalcOpenDevice(deviceSpecifierEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alcCloseDevice ] ---
-
- /**
- * Allows the application to disconnect from a device.
- *
- * The return code will be ALC_TRUE or ALC_FALSE, indicating success or failure. Failure will occur if all the device's contexts and buffers have not been
- * destroyed. Once closed, the {@code deviceHandle} is invalid.
- *
- * @param deviceHandle the device to close
- */
- @NativeType("ALCboolean")
- public static boolean alcCloseDevice(@NativeType("ALCdevice const *") long deviceHandle) {
- long __functionAddress = ALC.getICD().alcCloseDevice;
- if (CHECKS) {
- check(deviceHandle);
- }
- return invokePZ(deviceHandle, __functionAddress);
- }
-
- // --- [ alcCreateContext ] ---
-
- /** Unsafe version of: {@link #alcCreateContext CreateContext} */
- public static long nalcCreateContext(long deviceHandle, long attrList) {
- long __functionAddress = ALC.getICD().alcCreateContext;
- if (CHECKS) {
- check(deviceHandle);
- }
- return invokePPP(deviceHandle, attrList, __functionAddress);
- }
-
- /**
- * Creates an AL context.
- *
- * @param deviceHandle a valid device
- * @param attrList null or a zero terminated list of integer pairs composed of valid ALC attribute tokens and requested values. One of:
| {@link #ALC_FREQUENCY FREQUENCY} | {@link #ALC_REFRESH REFRESH} | {@link #ALC_SYNC SYNC} | {@link ALC11#ALC_MONO_SOURCES MONO_SOURCES} | {@link ALC11#ALC_STEREO_SOURCES STEREO_SOURCES} |
- */
- @NativeType("ALCcontext *")
- public static long alcCreateContext(@NativeType("ALCdevice const *") long deviceHandle, @Nullable @NativeType("ALCint const *") IntBuffer attrList) {
- if (CHECKS) {
- checkNTSafe(attrList);
- }
- return nalcCreateContext(deviceHandle, memAddressSafe(attrList));
- }
-
- // --- [ alcMakeContextCurrent ] ---
-
- /**
- * Makes a context current with respect to OpenAL operation.
- *
- * The context parameter can be {@code NULL} or a valid context pointer. Using {@code NULL} results in no context being current, which is useful when shutting OpenAL down.
- * The operation will apply to the device that the context was created for.
- *
- * For each OS process (usually this means for each application), only one context can be current at any given time. All AL commands apply to the current
- * context. Commands that affect objects shared among contexts (e.g. buffers) have side effects on other contexts.
- *
- * @param context the context to make current
- */
- @NativeType("ALCboolean")
- public static boolean alcMakeContextCurrent(@NativeType("ALCcontext *") long context) {
- long __functionAddress = ALC.getICD().alcMakeContextCurrent;
- return invokePZ(context, __functionAddress);
- }
-
- // --- [ alcProcessContext ] ---
-
- /**
- * The current context is the only context accessible to state changes by AL commands (aside from state changes affecting shared objects). However,
- * multiple contexts can be processed at the same time. To indicate that a context should be processed (i.e. that internal execution state such as the
- * offset increments are to be performed), the application uses {@code alcProcessContext}.
- *
- * Repeated calls to alcProcessContext are legal, and do not affect a context that is already marked as processing. The default state of a context created
- * by alcCreateContext is that it is processing.
- *
- * @param context the context to mark for processing
- */
- @NativeType("ALCvoid")
- public static void alcProcessContext(@NativeType("ALCcontext *") long context) {
- long __functionAddress = ALC.getICD().alcProcessContext;
- if (CHECKS) {
- check(context);
- }
- invokePV(context, __functionAddress);
- }
-
- // --- [ alcSuspendContext ] ---
-
- /**
- * The application can suspend any context from processing (including the current one). To indicate that a context should be suspended from processing
- * (i.e. that internal execution state such as offset increments are not to be changed), the application uses {@code alcSuspendContext}.
- *
- * Repeated calls to alcSuspendContext are legal, and do not affect a context that is already marked as suspended.
- *
- * @param context the context to mark as suspended
- */
- @NativeType("ALCvoid")
- public static void alcSuspendContext(@NativeType("ALCcontext *") long context) {
- long __functionAddress = ALC.getICD().alcSuspendContext;
- if (CHECKS) {
- check(context);
- }
- invokePV(context, __functionAddress);
- }
-
- // --- [ alcDestroyContext ] ---
-
- /**
- * Destroys a context.
- *
- * The correct way to destroy a context is to first release it using alcMakeCurrent with a {@code NULL} context. Applications should not attempt to destroy a
- * current context – doing so will not work and will result in an ALC_INVALID_OPERATION error. All sources within a context will automatically be deleted
- * during context destruction.
- *
- * @param context the context to destroy
- */
- @NativeType("ALCvoid")
- public static void alcDestroyContext(@NativeType("ALCcontext *") long context) {
- long __functionAddress = ALC.getICD().alcDestroyContext;
- if (CHECKS) {
- check(context);
- }
- invokePV(context, __functionAddress);
- }
-
- // --- [ alcGetCurrentContext ] ---
-
- /** Queries for, and obtains a handle to, the current context for the application. If there is no current context, {@code NULL} is returned. */
- @NativeType("ALCcontext *")
- public static long alcGetCurrentContext() {
- long __functionAddress = ALC.getICD().alcGetCurrentContext;
- return invokeP(__functionAddress);
- }
-
- // --- [ alcGetContextsDevice ] ---
-
- /**
- * Queries for, and obtains a handle to, the device of a given context.
- *
- * @param context the context to query
- */
- @NativeType("ALCdevice *")
- public static long alcGetContextsDevice(@NativeType("ALCcontext *") long context) {
- long __functionAddress = ALC.getICD().alcGetContextsDevice;
- if (CHECKS) {
- check(context);
- }
- return invokePP(context, __functionAddress);
- }
-
- // --- [ alcIsExtensionPresent ] ---
-
- /** Unsafe version of: {@link #alcIsExtensionPresent IsExtensionPresent} */
- public static boolean nalcIsExtensionPresent(long deviceHandle, long extName) {
- long __functionAddress = ALC.getICD().alcIsExtensionPresent;
- return invokePPZ(deviceHandle, extName, __functionAddress);
- }
-
- /**
- * Verifies that a given extension is available for the current context and the device it is associated with.
- *
- * Invalid and unsupported string tokens return ALC_FALSE. A {@code NULL} deviceHandle is acceptable. {@code extName} is not case sensitive – the implementation
- * will convert the name to all upper-case internally (and will express extension names in upper-case).
- *
- * @param deviceHandle the device to query
- * @param extName the extension name
- */
- @NativeType("ALCboolean")
- public static boolean alcIsExtensionPresent(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALCchar const *") ByteBuffer extName) {
- if (CHECKS) {
- checkNT1(extName);
- }
- return nalcIsExtensionPresent(deviceHandle, memAddress(extName));
- }
-
- /**
- * Verifies that a given extension is available for the current context and the device it is associated with.
- *
- * Invalid and unsupported string tokens return ALC_FALSE. A {@code NULL} deviceHandle is acceptable. {@code extName} is not case sensitive – the implementation
- * will convert the name to all upper-case internally (and will express extension names in upper-case).
- *
- * @param deviceHandle the device to query
- * @param extName the extension name
- */
- @NativeType("ALCboolean")
- public static boolean alcIsExtensionPresent(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALCchar const *") CharSequence extName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(extName, true);
- long extNameEncoded = stack.getPointerAddress();
- return nalcIsExtensionPresent(deviceHandle, extNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alcGetProcAddress ] ---
-
- /** Unsafe version of: {@link #alcGetProcAddress GetProcAddress} */
- public static long nalcGetProcAddress(long deviceHandle, long funcName) {
- long __functionAddress = ALC.getICD().alcGetProcAddress;
- return invokePPP(deviceHandle, funcName, __functionAddress);
- }
-
- /**
- * Retrieves extension entry points.
- *
- * The application is expected to verify the applicability of an extension or core function entry point before requesting it by name, by use of
- * {@link #alcIsExtensionPresent IsExtensionPresent}.
- *
- * Entry points can be device specific, but are not context specific. Using a {@code NULL} device handle does not guarantee that the entry point is returned,
- * even if available for one of the available devices.
- *
- * @param deviceHandle the device to query
- * @param funcName the function name
- */
- @NativeType("void *")
- public static long alcGetProcAddress(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALchar const *") ByteBuffer funcName) {
- if (CHECKS) {
- checkNT1(funcName);
- }
- return nalcGetProcAddress(deviceHandle, memAddress(funcName));
- }
-
- /**
- * Retrieves extension entry points.
- *
- * The application is expected to verify the applicability of an extension or core function entry point before requesting it by name, by use of
- * {@link #alcIsExtensionPresent IsExtensionPresent}.
- *
- * Entry points can be device specific, but are not context specific. Using a {@code NULL} device handle does not guarantee that the entry point is returned,
- * even if available for one of the available devices.
- *
- * @param deviceHandle the device to query
- * @param funcName the function name
- */
- @NativeType("void *")
- public static long alcGetProcAddress(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALchar const *") CharSequence funcName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(funcName, true);
- long funcNameEncoded = stack.getPointerAddress();
- return nalcGetProcAddress(deviceHandle, funcNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alcGetEnumValue ] ---
-
- /** Unsafe version of: {@link #alcGetEnumValue GetEnumValue} */
- public static int nalcGetEnumValue(long deviceHandle, long enumName) {
- long __functionAddress = ALC.getICD().alcGetEnumValue;
- return invokePPI(deviceHandle, enumName, __functionAddress);
- }
-
- /**
- * Returns extension enum values.
- *
- * Enumeration/token values are device independent, but tokens defined for extensions might not be present for a given device. Using a {@code NULL} handle is
- * legal, but only the tokens defined by the AL core are guaranteed. Availability of extension tokens depends on the ALC extension.
- *
- * @param deviceHandle the device to query
- * @param enumName the enum name
- */
- @NativeType("ALCenum")
- public static int alcGetEnumValue(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALCchar const *") ByteBuffer enumName) {
- if (CHECKS) {
- checkNT1(enumName);
- }
- return nalcGetEnumValue(deviceHandle, memAddress(enumName));
- }
-
- /**
- * Returns extension enum values.
- *
- * Enumeration/token values are device independent, but tokens defined for extensions might not be present for a given device. Using a {@code NULL} handle is
- * legal, but only the tokens defined by the AL core are guaranteed. Availability of extension tokens depends on the ALC extension.
- *
- * @param deviceHandle the device to query
- * @param enumName the enum name
- */
- @NativeType("ALCenum")
- public static int alcGetEnumValue(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALCchar const *") CharSequence enumName) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nASCII(enumName, true);
- long enumNameEncoded = stack.getPointerAddress();
- return nalcGetEnumValue(deviceHandle, enumNameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ alcGetError ] ---
-
- /**
- * Queries ALC errors.
- *
- * ALC uses the same conventions and mechanisms as AL for error handling. In particular, ALC does not use conventions derived from X11 (GLX) or Windows
- * (WGL).
- *
- * Error conditions are specific to the device, and (like AL) a call to alcGetError resets the error state.
- *
- * @param deviceHandle the device to query
- */
- @NativeType("ALCenum")
- public static int alcGetError(@NativeType("ALCdevice *") long deviceHandle) {
- long __functionAddress = ALC.getICD().alcGetError;
- return invokePI(deviceHandle, __functionAddress);
- }
-
- // --- [ alcGetString ] ---
-
- /** Unsafe version of: {@link #alcGetString GetString} */
- public static long nalcGetString(long deviceHandle, int token) {
- long __functionAddress = ALC.getICD().alcGetString;
- return invokePP(deviceHandle, token, __functionAddress);
- }
-
- /**
- * Obtains string value(s) from ALC.
- *
- * LWJGL note: Use {@link ALUtil#getStringList} for those tokens that return multiple values.
- *
- * @param deviceHandle the device to query
- * @param token the information to query. One of:
| {@link #ALC_DEFAULT_DEVICE_SPECIFIER DEFAULT_DEVICE_SPECIFIER} | {@link #ALC_DEVICE_SPECIFIER DEVICE_SPECIFIER} | {@link #ALC_EXTENSIONS EXTENSIONS} |
| {@link ALC11#ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER CAPTURE_DEFAULT_DEVICE_SPECIFIER} | {@link ALC11#ALC_CAPTURE_DEVICE_SPECIFIER CAPTURE_DEVICE_SPECIFIER} |
- */
- @Nullable
- @NativeType("ALCchar const *")
- public static String alcGetString(@NativeType("ALCdevice *") long deviceHandle, @NativeType("ALCenum") int token) {
- long __result = nalcGetString(deviceHandle, token);
- return memUTF8Safe(__result);
- }
-
- // --- [ alcGetIntegerv ] ---
-
- /**
- * Unsafe version of: {@link #alcGetIntegerv GetIntegerv}
- *
- * @param size the size of the {@code dest} buffer
- */
- public static void nalcGetIntegerv(long deviceHandle, int token, int size, long dest) {
- long __functionAddress = ALC.getICD().alcGetIntegerv;
- invokePPV(deviceHandle, token, size, dest, __functionAddress);
- }
-
- /**
- * Obtains integer value(s) from ALC.
- *
- * @param deviceHandle the device to query
- * @param token the information to query. One of:
| {@link #ALC_MAJOR_VERSION MAJOR_VERSION} | {@link #ALC_MINOR_VERSION MINOR_VERSION} | {@link #ALC_ATTRIBUTES_SIZE ATTRIBUTES_SIZE} | {@link #ALC_ALL_ATTRIBUTES ALL_ATTRIBUTES} | {@link ALC11#ALC_CAPTURE_SAMPLES CAPTURE_SAMPLES} |
- * @param dest the destination buffer
- */
- @NativeType("ALCvoid")
- public static void alcGetIntegerv(@NativeType("ALCdevice *") long deviceHandle, @NativeType("ALCenum") int token, @NativeType("ALCint *") IntBuffer dest) {
- nalcGetIntegerv(deviceHandle, token, dest.remaining(), memAddress(dest));
- }
-
- /**
- * Obtains integer value(s) from ALC.
- *
- * @param deviceHandle the device to query
- * @param token the information to query. One of:
| {@link #ALC_MAJOR_VERSION MAJOR_VERSION} | {@link #ALC_MINOR_VERSION MINOR_VERSION} | {@link #ALC_ATTRIBUTES_SIZE ATTRIBUTES_SIZE} | {@link #ALC_ALL_ATTRIBUTES ALL_ATTRIBUTES} | {@link ALC11#ALC_CAPTURE_SAMPLES CAPTURE_SAMPLES} |
- */
- @NativeType("ALCvoid")
- public static int alcGetInteger(@NativeType("ALCdevice *") long deviceHandle, @NativeType("ALCenum") int token) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer dest = stack.callocInt(1);
- nalcGetIntegerv(deviceHandle, token, 1, memAddress(dest));
- return dest.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- /** Array version of: {@link #alcCreateContext CreateContext} */
- @NativeType("ALCcontext *")
- public static long alcCreateContext(@NativeType("ALCdevice const *") long deviceHandle, @Nullable @NativeType("ALCint const *") int[] attrList) {
- long __functionAddress = ALC.getICD().alcCreateContext;
- if (CHECKS) {
- check(deviceHandle);
- checkNTSafe(attrList);
- }
- return invokePPP(deviceHandle, attrList, __functionAddress);
- }
-
- /** Array version of: {@link #alcGetIntegerv GetIntegerv} */
- @NativeType("ALCvoid")
- public static void alcGetIntegerv(@NativeType("ALCdevice *") long deviceHandle, @NativeType("ALCenum") int token, @NativeType("ALCint *") int[] dest) {
- long __functionAddress = ALC.getICD().alcGetIntegerv;
- invokePPV(deviceHandle, token, dest.length, dest, __functionAddress);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCcontext.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCcontext.java
deleted file mode 100644
index 2d99d4c1d..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCcontext.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.openal;
-
-import java.nio.IntBuffer;
-
-import org.lwjgl.BufferUtils;
-
-/**
- * The ALCcontext class represents a context opened in OpenAL space.
- *
- * All operations of the AL core API affect a current AL context. Within the scope of AL,
- * the ALC is implied - it is not visible as a handle or function parameter. Only one AL
- * Context per process can be current at a time. Applications maintaining multiple AL
- * Contexts, whether threaded or not, have to set the current context accordingly.
- * Applications can have multiple threads that share one more or contexts. In other words,
- * AL and ALC are threadsafe.
- *
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public final class ALCcontext {
-
- /** Address of actual context */
- final long context;
-
- /** Whether this context is valid */
- private boolean valid;
-
- /**
- * Creates a new instance of ALCcontext
- *
- * @param context address of actual context
- */
- ALCcontext(long context) {
- this.context = context;
- this.valid = true;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object context) {
- if(context instanceof ALCcontext) {
- return ((ALCcontext)context).context == this.context;
- }
- return super.equals(context);
- }
-
- /**
- * Creates an attribute list in a ByteBuffer
- * @param contextFrequency Frequency to add
- * @param contextRefresh Refresh rate to add
- * @param contextSynchronized Whether to synchronize the context
- * @return
- */
- static IntBuffer createAttributeList(int contextFrequency, int contextRefresh, int contextSynchronized) {
- IntBuffer attribList = BufferUtils.createIntBuffer(7);
-
- attribList.put(ALC10.ALC_FREQUENCY);
- attribList.put(contextFrequency);
- attribList.put(ALC10.ALC_REFRESH);
- attribList.put(contextRefresh);
- attribList.put(ALC10.ALC_SYNC);
- attribList.put(contextSynchronized);
- attribList.put(0); //terminating int
-
- return attribList;
- }
-
- /**
- * Marks this context as invalid
- *
- */
- void setInvalid() {
- valid = false;
- }
-
- /**
- * @return true if this context is still valid
- */
- public boolean isValid() {
- return valid;
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCdevice.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCdevice.java
deleted file mode 100644
index 9cc06a97a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/ALCdevice.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.openal;
-
-import java.util.HashMap;
-
-/**
- * The ALCdevice class represents a device opened in OpenAL space.
- *
- * ALC introduces the notion of a Device. A Device can be, depending on the
- * implementation, a hardware device, or a daemon/OS service/actual server. This
- * mechanism also permits different drivers (and hardware) to coexist within the same
- * system, as well as allowing several applications to share system resources for audio,
- * including a single hardware output device. The details are left to the implementation,
- * which has to map the available backends to unique device specifiers.
- *
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public final class ALCdevice {
-
- /** Address of actual device */
- final long device;
-
- /** Whether this device is valid */
- private boolean valid;
-
- /** List of contexts belonging to the device */
- private final HashMap contexts = new HashMap();
-
- /**
- * Creates a new instance of ALCdevice
- *
- * @param device address of actual device
- */
- ALCdevice(long device) {
- this.device = device;
- this.valid = true;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object device) {
- if(device instanceof ALCdevice) {
- return ((ALCdevice)device).device == this.device;
- }
- return super.equals(device);
- }
-
- /**
- * Adds a context to the device
- *
- * @param context context to add to the list of contexts for this device
- */
- void addContext(ALCcontext context) {
- synchronized (contexts) {
- contexts.put(context.context, context);
- }
- }
-
- /**
- * Remove context associated with device
- *
- * @param context Context to disassociate with device
- */
- void removeContext(ALCcontext context) {
- synchronized (contexts) {
- contexts.remove(context.context);
- }
- }
-
- /**
- * Marks this device and all of its contexts invalid
- */
- void setInvalid() {
- valid = false;
- synchronized (contexts) {
- for ( ALCcontext context : contexts.values() )
- context.setInvalid();
- }
- contexts.clear();
- }
-
- /**
- * @return true if this device is still valid
- */
- public boolean isValid() {
- return valid;
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFX10.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFX10.java
deleted file mode 100644
index 555d36a1d..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFX10.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package org.lwjgl.openal;
-
-import java.nio.*;
-
-import org.lwjgl.openal.EXTEfx;
-
-public class EFX10 {
-
- public static final int AL_EFFECT_TYPE = EXTEfx.AL_EFFECT_TYPE;
- public static final int AL_EFFECTSLOT_EFFECT = EXTEfx.AL_EFFECTSLOT_EFFECT;
- public static final int AL_EFFECT_ECHO = EXTEfx.AL_EFFECT_ECHO;
- public static final float AL_ECHO_MIN_DAMPING = EXTEfx.AL_ECHO_MIN_DAMPING;
- public static final int AL_ECHO_DAMPING = EXTEfx.AL_ECHO_DAMPING;
- public static final float AL_ECHO_MAX_DAMPING = EXTEfx.AL_ECHO_MAX_DAMPING;
- public static final float AL_ECHO_MIN_DELAY = EXTEfx.AL_ECHO_MIN_DELAY;
- public static final int AL_ECHO_DELAY = EXTEfx.AL_ECHO_DELAY;
- public static final float AL_ECHO_MAX_DELAY = EXTEfx.AL_ECHO_MAX_DELAY;
- public static final float AL_ECHO_MIN_FEEDBACK = EXTEfx.AL_ECHO_MIN_FEEDBACK;
- public static final int AL_ECHO_FEEDBACK = EXTEfx.AL_ECHO_FEEDBACK;
- public static final float AL_ECHO_MAX_FEEDBACK = EXTEfx.AL_ECHO_MAX_FEEDBACK;
- public static final float AL_ECHO_MIN_LRDELAY = EXTEfx.AL_ECHO_MIN_LRDELAY;
- public static final int AL_ECHO_LRDELAY = EXTEfx.AL_ECHO_LRDELAY;
- public static final float AL_ECHO_MAX_LRDELAY = EXTEfx.AL_ECHO_MAX_LRDELAY;
- public static final float AL_ECHO_MIN_SPREAD = EXTEfx.AL_ECHO_MIN_SPREAD;
- public static final int AL_ECHO_SPREAD = EXTEfx.AL_ECHO_SPREAD;
- public static final float AL_ECHO_MAX_SPREAD = EXTEfx.AL_ECHO_MAX_SPREAD;
- public static final int AL_EFFECT_REVERB = EXTEfx.AL_EFFECT_REVERB;
- public static final int AL_RING_MODULATOR_SINUSOID = EXTEfx.AL_RING_MODULATOR_SINUSOID;
- public static final int AL_RING_MODULATOR_SAWTOOTH = EXTEfx.AL_RING_MODULATOR_SAWTOOTH;
- public static final int AL_RING_MODULATOR_SQUARE = EXTEfx.AL_RING_MODULATOR_SQUARE;
- public static final int AL_EFFECT_RING_MODULATOR = EXTEfx.AL_EFFECT_RING_MODULATOR;
- public static final float AL_RING_MODULATOR_MAX_FREQUENCY = EXTEfx.AL_RING_MODULATOR_MAX_FREQUENCY;
- public static final int AL_RING_MODULATOR_FREQUENCY = EXTEfx.AL_RING_MODULATOR_FREQUENCY;
- public static final float AL_RING_MODULATOR_MIN_FREQUENCY = EXTEfx.AL_RING_MODULATOR_MIN_FREQUENCY;
- public static final float AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF = EXTEfx.AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF;
- public static final int AL_RING_MODULATOR_HIGHPASS_CUTOFF = EXTEfx.AL_RING_MODULATOR_HIGHPASS_CUTOFF;
- public static final float AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF = EXTEfx.AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF;
- public static final int AL_RING_MODULATOR_WAVEFORM = EXTEfx.AL_RING_MODULATOR_WAVEFORM;
- public static final int AL_FILTER_TYPE = EXTEfx.AL_FILTER_TYPE;
- public static final int AL_FILTER_LOWPASS = EXTEfx.AL_FILTER_LOWPASS;
- public static final int AL_LOWPASS_GAIN = EXTEfx.AL_LOWPASS_GAIN;
- public static final int AL_LOWPASS_GAINHF = EXTEfx.AL_LOWPASS_GAINHF;
- public static final int AL_EFFECTSLOT_NULL = EXTEfx.AL_EFFECTSLOT_NULL;
- public static final int AL_FILTER_NULL = EXTEfx.AL_FILTER_NULL;
- public static final int AL_AUXILIARY_SEND_FILTER = EXTEfx.AL_AUXILIARY_SEND_FILTER;
- public static final int AL_DIRECT_FILTER = EXTEfx.AL_DIRECT_FILTER;
- public static final int ALC_MAX_AUXILIARY_SENDS = EXTEfx.ALC_MAX_AUXILIARY_SENDS;
- public static final int ALC_EFX_MAJOR_VERSION = EXTEfx.ALC_EFX_MAJOR_VERSION;
- public static final int AL_REVERB_DECAY_TIME = EXTEfx.AL_REVERB_DECAY_TIME;
- public static final int AL_FILTER_HIGHPASS = EXTEfx.AL_FILTER_HIGHPASS;
- public static final int AL_FILTER_BANDPASS = EXTEfx.AL_FILTER_BANDPASS;
- public static final int AL_EFFECT_NULL = EXTEfx.AL_EFFECT_NULL;
- public static final int AL_EFFECT_EAXREVERB = EXTEfx.AL_EFFECT_EAXREVERB;
- public static final int AL_EFFECT_CHORUS = EXTEfx.AL_EFFECT_CHORUS;
- public static final int AL_EFFECT_DISTORTION = EXTEfx.AL_EFFECT_DISTORTION;
- public static final int AL_EFFECT_FLANGER = EXTEfx.AL_EFFECT_FLANGER;
- public static final int AL_EFFECT_FREQUENCY_SHIFTER = EXTEfx.AL_EFFECT_FREQUENCY_SHIFTER;
- public static final int AL_EFFECT_VOCAL_MORPHER = EXTEfx.AL_EFFECT_VOCAL_MORPHER;
- public static final int AL_EFFECT_PITCH_SHIFTER = EXTEfx.AL_EFFECT_PITCH_SHIFTER;
- public static final int AL_EFFECT_AUTOWAH = EXTEfx.AL_EFFECT_AUTOWAH;
- public static final int AL_EFFECT_COMPRESSOR = EXTEfx.AL_EFFECT_COMPRESSOR;
- public static final int AL_EFFECT_EQUALIZER = EXTEfx.AL_EFFECT_EQUALIZER;
-
- public static int alGenAuxiliaryEffectSlots() {
- return EXTEfx.alGenAuxiliaryEffectSlots();
- }
-
- public static int alGenFilters() {
- return EXTEfx.alGenFilters();
- }
-
- public static void alDeleteFilters(int filter) {
- EXTEfx.alDeleteFilters(filter);
- }
-
- public static void alFilteri(int filter, int param, int value) {
- EXTEfx.alFilteri(filter, param, value);
- }
-
- public static void alFilterf(int filter, int param, float value) {
- EXTEfx.alFilterf(filter, param, value);
- }
-
- public static float alGetFilterf(int filter, int param) {
- return EXTEfx.alGetFilterf(filter, param);
- }
-
- public static int alGenEffects() {
- return EXTEfx.alGenEffects();
- }
-
- public static void alDeleteEffects(int effect) {
- EXTEfx.alDeleteAuxiliaryEffectSlots(effect);
- }
-
- public static void alDeleteAuxiliaryEffectSlots(int effectSlot) {
- EXTEfx.alDeleteAuxiliaryEffectSlots(effectSlot);
- }
-
- public static void alEffecti(int effect, int param, int value) {
- EXTEfx.alEffecti(effect, param, value);
- }
-
- public static float alGetEffectf(int effect, int param) {
- return EXTEfx.alGetEffectf(effect, param);
- }
-
- public static int alGetEffecti(int effect, int param) {
- return EXTEfx.alGetEffecti(effect, param);
- }
-
- public static void alEffectf(int effect, int param, float value) {
- EXTEfx.alEffectf(effect, param, value);
- }
-
- public static void alAuxiliaryEffectSloti(int effectSlot, int param, int value) {
- EXTEfx.alAuxiliaryEffectSloti(effectSlot, param, value);
- }
-
- public static void alGenAuxiliaryEffectSlots(IntBuffer effectSlots) {
- EXTEfx.alGenAuxiliaryEffectSlots(effectSlots);
- }
-
- public static void alGenEffects(IntBuffer effects) {
- EXTEfx.alGenEffects(effects);
- }
-
- public static void alDeleteEffects(IntBuffer effects) {
- EXTEfx.alDeleteEffects(effects);
- }
-
- public static void alDeleteAuxiliaryEffectSlots(IntBuffer effectSlots) {
- EXTEfx.alDeleteAuxiliaryEffectSlots(effectSlots);
- }
-
- public static void alGenFilters(IntBuffer filters) {
- EXTEfx.alGenFilters(filters);
- }
-
- public static void alDeleteFilters(IntBuffer filters) {
- EXTEfx.alDeleteFilters(filters);
- }
-
-
-
-
-
-
-
- public static void alGetAuxiliaryEffectSlot(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alGetAuxiliaryEffectSlotfv(var0, var1, var2);
- }
-
- public static void alGetAuxiliaryEffectSlot(int var0, int var1, IntBuffer var2) {
- EXTEfx.alGetAuxiliaryEffectSlotiv(var0, var1, var2);
- }
-
- public static float alGetAuxiliaryEffectSlotf(int var0, int var1) {
- return EXTEfx.alGetAuxiliaryEffectSlotf(var0, var1);
- }
-
- public static int alGetAuxiliaryEffectSloti(int var0, int var1) {
- return EXTEfx.alGetAuxiliaryEffectSloti(var0, var1);
- }
-
- public static void alEffect(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alEffectfv(var0, var1, var2);
- }
-
- public static void alEffect(int var0, int var1, IntBuffer var2) {
- EXTEfx.alEffectiv(var0, var1, var2);
- }
-
- public static void alFilter(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alFilterfv(var0, var1, var2);
- }
-
- public static void alFilter(int var0, int var1, IntBuffer var2) {
- EXTEfx.alFilteriv(var0, var1, var2);
- }
-
- public static void alAuxiliaryEffectSlot(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alAuxiliaryEffectSlotfv(var0, var1, var2);
- }
-
- public static void alAuxiliaryEffectSlot(int var0, int var1, IntBuffer var2) {
- EXTEfx.alAuxiliaryEffectSlotiv(var0, var1, var2);
- }
-
- public static void alAuxiliaryEffectSlotf(int var0, int var1, float var2) {
- EXTEfx.alAuxiliaryEffectSlotf(var0, var1, var2);
- }
-
- public static void alGetEffect(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alGetEffectfv(var0, var1, var2);
- }
-
- public static void alGetEffect(int var0, int var1, IntBuffer var2) {
- EXTEfx.alGetEffectiv(var0, var1, var2);
- }
-
- public static void alGetFilter(int var0, int var1, FloatBuffer var2) {
- EXTEfx.alGetFilterfv(var0, var1, var2);
- }
-
- public static void alGetFilter(int var0, int var1, IntBuffer var2) {
- EXTEfx.alGetFilteriv(var0, var1, var2);
- }
-
- public static int alGetFilteri(int var0, int var1) {
- return EXTEfx.alGetFilteri(var0, var1);
- }
-
- public static boolean alIsAuxiliaryEffectSlot(int var0) {
- return EXTEfx.alIsAuxiliaryEffectSlot(var0);
- }
-
- public static boolean alIsEffect(int var0) {
- return EXTEfx.alIsEffect(var0);
- }
-
- public static boolean alIsFilter(int var0) {
- return EXTEfx.alIsFilter(var0);
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFXUtil.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFXUtil.java
deleted file mode 100644
index 57b4348cc..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/EFXUtil.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: http://lwjgl.org/license.php
- */
-package org.lwjgl.openal;
-
-import static org.lwjgl.openal.AL10.*;
-import static org.lwjgl.openal.EXTEfx.*;
-
-import org.lwjgl.openal.ALC;
-import org.lwjgl.openal.ALCCapabilities;
-
-/**
- * Utility class for the OpenAL extension AL_EXT_EFX. Provides functions to check for the extension
- * and support of various effects and filters.
- *
- * Currently supports AL_EXT_EFX version 1.0 effects and filters.
- *
- * @author Ciardhubh
- */
-public final class EFXUtil {
-
- /** Constant for testSupportGeneric to check an effect. */
- private static final int EFFECT = 1111;
- /** Constant for testSupportGeneric to check a filter. */
- private static final int FILTER = 2222;
-
- /** Utility class, hidden contructor. */
- private EFXUtil() {
- }
-
- /**
- * Checks if OpenAL implementation is loaded and supports AL_EXT_EFX.
- *
- * @return True if AL_EXT_EFX is supported, false if not.
- *
- * @throws org.lwjgl.openal.OpenALException
- * If OpenAL has not been created yet.
- */
- public static boolean isEfxSupported() {
- //return ALC.getCapabilities().ALC_EXT_EFX;
- return ALC.createCapabilities(AL.alcDevice.device).ALC_EXT_EFX;
- }
-
- /**
- * Tests OpenAL to see whether the given effect type is supported. This is done by creating an
- * effect of the given type. If creation succeeds the effect is supported.
- *
- * @param effectType Type of effect whose support is to be tested, e.g. AL_EFFECT_REVERB.
- *
- * @return True if it is supported, false if not.
- *
- * @throws org.lwjgl.openal.OpenALException
- * If the request fails due to an AL_OUT_OF_MEMORY error or OpenAL has
- * not been created yet.
- * @throws IllegalArgumentException effectType is not a valid effect type.
- */
- public static boolean isEffectSupported(int effectType) {
- // Make sure type is a real effect.
- switch ( effectType ) {
- case AL_EFFECT_NULL:
- case AL_EFFECT_EAXREVERB:
- case AL_EFFECT_REVERB:
- case AL_EFFECT_CHORUS:
- case AL_EFFECT_DISTORTION:
- case AL_EFFECT_ECHO:
- case AL_EFFECT_FLANGER:
- case AL_EFFECT_FREQUENCY_SHIFTER:
- case AL_EFFECT_VOCAL_MORPHER:
- case AL_EFFECT_PITCH_SHIFTER:
- case AL_EFFECT_RING_MODULATOR:
- case AL_EFFECT_AUTOWAH:
- case AL_EFFECT_COMPRESSOR:
- case AL_EFFECT_EQUALIZER:
- break;
- default:
- throw new IllegalArgumentException("Unknown or invalid effect type: " + effectType);
- }
-
- return testSupportGeneric(EFFECT, effectType);
- }
-
- /**
- * Tests OpenAL to see whether the given filter type is supported. This is done by creating a
- * filter of the given type. If creation succeeds the filter is supported.
- *
- * @param filterType Type of filter whose support is to be tested, e.g. AL_FILTER_LOWPASS.
- *
- * @return True if it is supported, false if not.
- *
- * @throws org.lwjgl.openal.OpenALException
- * If the request fails due to an AL_OUT_OF_MEMORY error or OpenAL has
- * not been created yet.
- * @throws IllegalArgumentException filterType is not a valid filter type.
- */
- public static boolean isFilterSupported(int filterType) {
- // Make sure type is a real filter.
- switch ( filterType ) {
- case AL_FILTER_NULL:
- case AL_FILTER_LOWPASS:
- case AL_FILTER_HIGHPASS:
- case AL_FILTER_BANDPASS:
- break;
- default:
- throw new IllegalArgumentException("Unknown or invalid filter type: " + filterType);
- }
-
- return testSupportGeneric(FILTER, filterType);
- }
-
- /**
- * Generic test function to see if an EFX object supports a given kind of type. Works for
- * effects and filters.
- *
- * @param objectType Type of object to test. Must be either EFXUtil.EFFECT or EFXUtil.FILTER.
- * @param typeValue OpenAL type the object should be tested for support, e.g. AL_FILTER_LOWPASS
- * or AL_EFFECT_REVERB.
- *
- * @return True if object supports typeValue, false else.
- */
- private static boolean testSupportGeneric(int objectType, int typeValue) {
- // Check for supported objectType.
- switch ( objectType ) {
- case EFFECT:
- case FILTER:
- break;
- default:
- throw new IllegalArgumentException("Invalid objectType: " + objectType);
- }
-
- boolean supported = false;
- if ( isEfxSupported() ) {
-
- // Try to create object in order to check AL's response.
- alGetError();
- int genError;
- int testObject = 0;
- try {
- switch ( objectType ) { // Create object based on type
- case EFFECT:
- testObject = alGenEffects();
- break;
- case FILTER:
- testObject = alGenFilters();
- break;
- default:
- throw new IllegalArgumentException("Invalid objectType: " + objectType);
- }
- genError = alGetError();
- } catch (OpenALException debugBuildException) {
- // Hack because OpenALException hides the original error code (short of parsing the
- // error message String which would break if it gets changed).
- if ( debugBuildException.getMessage().contains("AL_OUT_OF_MEMORY") ) {
- genError = AL_OUT_OF_MEMORY;
- } else {
- genError = AL_INVALID_OPERATION;
- }
- }
-
- if ( genError == AL_NO_ERROR ) {
- // Successfully created, now try to set type.
- alGetError();
- int setError;
- try {
- switch ( objectType ) { // Set based on object type
- case EFFECT:
- alEffecti(testObject, AL_EFFECT_TYPE, typeValue);
- break;
- case FILTER:
- alFilteri(testObject, AL_FILTER_TYPE, typeValue);
- break;
- default:
- throw new IllegalArgumentException("Invalid objectType: " + objectType);
- }
- setError = alGetError();
- } catch (OpenALException debugBuildException) {
- // Hack because OpenALException hides the original error code (short of parsing
- // the error message String which would break when it gets changed).
- setError = AL_INVALID_VALUE;
- }
-
- if ( setError == AL_NO_ERROR ) {
- supported = true;
- }
-
- // Cleanup
- try {
- switch ( objectType ) { // Set based on object type
- case EFFECT:
- alDeleteEffects(testObject);
- break;
- case FILTER:
- alDeleteFilters(testObject);
- break;
- default:
- throw new IllegalArgumentException("Invalid objectType: " + objectType);
- }
- } catch (OpenALException debugBuildException) {
- // Don't care about cleanup errors.
- }
-
- } else if ( genError == AL_OUT_OF_MEMORY ) {
- throw new OpenALException(AL10.alGetString(genError));
- }
- }
-
- return supported;
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/OpenALException.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/OpenALException.java
deleted file mode 100644
index 6ed4d0b97..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/OpenALException.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.openal;
-
-/**
- *
- * Thrown by the debug build library of the LWJGL if any OpenAL operation
- * causes an error.
- *
- * @author Brian Matzon
- * @version $Revision$
- * $Id$
- */
-public class OpenALException extends RuntimeException {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructor for OpenALException.
- */
- public OpenALException() {
- super();
- }
-
- /**
- * Constructor that takes an AL error number
- */
- public OpenALException(int error_code) {
- super("OpenAL error: " + org.lwjgl.openal.AL10.alGetString(error_code) + " (" + error_code + ")");
- }
-
- /**
- * Constructor for OpenALException.
- * @param message
- */
- public OpenALException(String message) {
- super(message);
- }
-
- /**
- * Constructor for OpenALException.
- * @param message
- * @param cause
- */
- public OpenALException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Constructor for OpenALException.
- * @param cause
- */
- public OpenALException(Throwable cause) {
- super(cause);
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/Util.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/Util.java
deleted file mode 100644
index 0930c2a7a..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/openal/Util.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.openal;
-
-
-/**
- * Simple utility class for checking AL/ALC errors
- *
- * @author cix_foo
- * @author Brian Matzon
- * @version $Revision$
- */
-
-public final class Util {
- /** No c'tor */
- private Util() {
- }
-
- /**
- * Checks for any ALC errors and throws an unchecked exception on errors
- * @param device Device for which to check ALC errors
- */
- public static void checkALCError(ALCdevice device) {
- int err = ALC10.alcGetError(device.device);
- if (err != ALC10.ALC_NO_ERROR)
- throw new OpenALException(ALC10.alcGetString(AL.getDevice().device, err));
- }
-
- /**
- * Checks for any AL errors and throws an unchecked exception on errors
- */
- public static void checkALError() {
- int err = AL10.alGetError();
- if (err != AL10.AL_NO_ERROR)
- throw new OpenALException(err);
- }
-
- /**
- * Checks for a valid device
- * @param device ALCdevice to check the validity of
- */
- public static void checkALCValidDevice(ALCdevice device) {
- if(!device.isValid()) {
- throw new OpenALException("Invalid device: " + device);
- }
- }
-
- /**
- * Checks for a valid context
- * @param context ALCcontext to check the validity of
- */
- public static void checkALCValidContext(ALCcontext context) {
- if(!context.isValid()) {
- throw new OpenALException("Invalid context: " + context);
- }
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBBufferObject.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBBufferObject.java
deleted file mode 100644
index c83120376..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBBufferObject.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.lwjgl.opengl;
-
-public class ARBBufferObject extends ARBVertexBufferObject
-{
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBShaderObjects.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBShaderObjects.java
deleted file mode 100644
index 634279dba..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBShaderObjects.java
+++ /dev/null
@@ -1,1386 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.opengl;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.PointerBuffer;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * Native bindings to the ARB_shader_objects extension.
- *
- * This extension adds API calls that are necessary to manage shader objects and program objects as defined in the OpenGL 2.0 white papers by 3Dlabs.
- *
- * The generation of an executable that runs on one of OpenGL's programmable units is modeled to that of developing a typical C/C++ application. There are
- * one or more source files, each of which are stored by OpenGL in a shader object. Each shader object (source file) needs to be compiled and attached to a
- * program object. Once all shader objects are compiled successfully, the program object needs to be linked to produce an executable. This executable is
- * part of the program object, and can now be loaded onto the programmable units to make it part of the current OpenGL state. Both the compile and link
- * stages generate a text string that can be queried to get more information. This information could be, but is not limited to, compile errors, link errors,
- * optimization hints, etc. Values for uniform variables, declared in a shader, can be set by the application and used to control a shader's behavior.
- *
- * This extension defines functions for creating shader objects and program objects, for compiling shader objects, for linking program objects, for
- * attaching shader objects to program objects, and for using a program object as part of current state. Functions to load uniform values are also defined.
- * Some house keeping functions, like deleting an object and querying object state, are also provided.
- *
- * Although this extension defines the API for creating shader objects, it does not define any specific types of shader objects. It is assumed that this
- * extension will be implemented along with at least one such additional extension for creating a specific type of OpenGL 2.0 shader (e.g., the
- * {@link ARBFragmentShader ARB_fragment_shader} extension or the {@link ARBVertexShader ARB_vertex_shader} extension).
- *
- * Promoted to core in {@link GL20 OpenGL 2.0}.
- */
-public class ARBShaderObjects {
-
- /** Accepted by the {@code pname} argument of GetHandleARB. */
- public static final int GL_PROGRAM_OBJECT_ARB = 0x8B40;
-
- /** Accepted by the {@code pname} parameter of GetObjectParameter{fi}vARB. */
- public static final int
- GL_OBJECT_TYPE_ARB = 0x8B4E,
- GL_OBJECT_SUBTYPE_ARB = 0x8B4F,
- GL_OBJECT_DELETE_STATUS_ARB = 0x8B80,
- GL_OBJECT_COMPILE_STATUS_ARB = 0x8B81,
- GL_OBJECT_LINK_STATUS_ARB = 0x8B82,
- GL_OBJECT_VALIDATE_STATUS_ARB = 0x8B83,
- GL_OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84,
- GL_OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85,
- GL_OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86,
- GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87,
- GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88;
-
- /** Returned by the {@code params} parameter of GetObjectParameter{fi}vARB. */
- public static final int GL_SHADER_OBJECT_ARB = 0x8B48;
-
- /** Returned by the {@code type} parameter of GetActiveUniformARB. */
- public static final int
- GL_FLOAT_VEC2_ARB = 0x8B50,
- GL_FLOAT_VEC3_ARB = 0x8B51,
- GL_FLOAT_VEC4_ARB = 0x8B52,
- GL_INT_VEC2_ARB = 0x8B53,
- GL_INT_VEC3_ARB = 0x8B54,
- GL_INT_VEC4_ARB = 0x8B55,
- GL_BOOL_ARB = 0x8B56,
- GL_BOOL_VEC2_ARB = 0x8B57,
- GL_BOOL_VEC3_ARB = 0x8B58,
- GL_BOOL_VEC4_ARB = 0x8B59,
- GL_FLOAT_MAT2_ARB = 0x8B5A,
- GL_FLOAT_MAT3_ARB = 0x8B5B,
- GL_FLOAT_MAT4_ARB = 0x8B5C,
- GL_SAMPLER_1D_ARB = 0x8B5D,
- GL_SAMPLER_2D_ARB = 0x8B5E,
- GL_SAMPLER_3D_ARB = 0x8B5F,
- GL_SAMPLER_CUBE_ARB = 0x8B60,
- GL_SAMPLER_1D_SHADOW_ARB = 0x8B61,
- GL_SAMPLER_2D_SHADOW_ARB = 0x8B62,
- GL_SAMPLER_2D_RECT_ARB = 0x8B63,
- GL_SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64;
-
- static { GL.initialize(); }
-
- protected ARBShaderObjects() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(GLCapabilities caps) {
- return checkFunctions(
- caps.glDeleteObjectARB, caps.glGetHandleARB, caps.glDetachObjectARB, caps.glCreateShaderObjectARB, caps.glShaderSourceARB, caps.glCompileShaderARB,
- caps.glCreateProgramObjectARB, caps.glAttachObjectARB, caps.glLinkProgramARB, caps.glUseProgramObjectARB, caps.glValidateProgramARB,
- caps.glUniform1fARB, caps.glUniform2fARB, caps.glUniform3fARB, caps.glUniform4fARB, caps.glUniform1iARB, caps.glUniform2iARB, caps.glUniform3iARB,
- caps.glUniform4iARB, caps.glUniform1fvARB, caps.glUniform2fvARB, caps.glUniform3fvARB, caps.glUniform4fvARB, caps.glUniform1ivARB,
- caps.glUniform2ivARB, caps.glUniform3ivARB, caps.glUniform4ivARB, caps.glUniformMatrix2fvARB, caps.glUniformMatrix3fvARB,
- caps.glUniformMatrix4fvARB, caps.glGetObjectParameterfvARB, caps.glGetObjectParameterivARB, caps.glGetInfoLogARB, caps.glGetAttachedObjectsARB,
- caps.glGetUniformLocationARB, caps.glGetActiveUniformARB, caps.glGetUniformfvARB, caps.glGetUniformivARB, caps.glGetShaderSourceARB
- );
- }
-
-// -- Begin LWJGL2 part --
- public static void glShaderSourceARB(int shader, java.nio.ByteBuffer string) {
- byte[] b = new byte[string.remaining()];
- string.get(b);
- org.lwjgl.opengl.ARBShaderObjects.glShaderSourceARB(shader, new String(b));
- }
-
- public static void glUniform1ARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniform1fvARB(location, value);
- }
-
- public static void glUniform2ARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniform2fvARB(location, value);
- }
-
- public static void glUniform3ARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniform3fvARB(location, value);
- }
-
- public static void glUniform4ARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniform4fvARB(location, value);
- }
-
- public static void glUniform1ARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- glUniform1ivARB(location, value);
- }
-
- public static void glUniform2ARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- glUniform2ivARB(location, value);
- }
-
- public static void glUniform3ARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- glUniform3ivARB(location, value);
- }
-
- public static void glUniform4ARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- glUniform4ivARB(location, value);
- }
-
- public static void glUniformMatrix2ARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniformMatrix2fvARB(location, transpose, value);
- }
-
- public static void glUniformMatrix3ARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniformMatrix3fvARB(location, transpose, value);
- }
-
- public static void glUniformMatrix4ARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- glUniformMatrix4fvARB(location, transpose, value);
- }
-
- public static void glGetObjectParameterARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- glGetObjectParameterfvARB(obj, pname, params);
- }
-
- public static void glGetObjectParameterARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- glGetObjectParameterivARB(obj, pname, params);
- }
-
- public static void glGetUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLfloat *") FloatBuffer params) {
- glGetUniformfvARB(programObj, location, params);
- }
-
- public static void glGetUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLint *") IntBuffer params) {
- glGetUniformivARB(programObj, location, params);
- }
-// -- End LWJGL2 part --
-
- // --- [ glDeleteObjectARB ] ---
-
- /**
- * Either deletes the object, or flags it for deletion. An object that is attached to a container object is not deleted until it is no longer attached to
- * any container object, for any context. If it is still attached to at least one container object, the object is flagged for deletion. If the object is
- * part of the current rendering state, it is not deleted until it is no longer part of the current rendering state for any context. If the object is still
- * part of the rendering state of at least one context, it is flagged for deletion.
- *
- * If an object is flagged for deletion, its Boolean status bit {@link #GL_OBJECT_DELETE_STATUS_ARB OBJECT_DELETE_STATUS_ARB} is set to true.
- *
- * DeleteObjectARB will silently ignore the value zero.
- *
- * When a container object is deleted, it will detach each attached object as part of the deletion process. When an object is deleted, all information for
- * the object referenced is lost. The data for the object is also deleted.
- *
- * @param obj the shader object to delete
- */
- public static native void glDeleteObjectARB(@NativeType("GLhandleARB") int obj);
-
- // --- [ glGetHandleARB ] ---
-
- /**
- * Returns the handle to an object that is in use as part of current state.
- *
- * @param pname the state item for which the current object is to be returned. Must be:
| {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB} |
- */
- @NativeType("GLhandleARB")
- public static native int glGetHandleARB(@NativeType("GLenum") int pname);
-
- // --- [ glDetachObjectARB ] ---
-
- /**
- * Detaches an object from the container object it is attached to.
- *
- * @param containerObj the container object
- * @param attachedObj the object to detach
- */
- public static native void glDetachObjectARB(@NativeType("GLhandleARB") int containerObj, @NativeType("GLhandleARB") int attachedObj);
-
- // --- [ glCreateShaderObjectARB ] ---
-
- /**
- * Creates a shader object.
- *
- * @param shaderType the type of the shader object to be created. One of:
| {@link ARBVertexShader#GL_VERTEX_SHADER_ARB VERTEX_SHADER_ARB} | {@link ARBFragmentShader#GL_FRAGMENT_SHADER_ARB FRAGMENT_SHADER_ARB} |
- */
- @NativeType("GLhandleARB")
- public static native int glCreateShaderObjectARB(@NativeType("GLenum") int shaderType);
-
- // --- [ glShaderSourceARB ] ---
-
- /**
- * Unsafe version of: {@link #glShaderSourceARB ShaderSourceARB}
- *
- * @param count the number of strings in the array
- */
- public static native void nglShaderSourceARB(int shaderObj, int count, long string, long length);
-
- /**
- * Sets the source code for the specified shader object {@code shaderObj} to the text strings in the {@code string} array. If the object previously had
- * source code loaded into it, it is completely replaced.
- *
- * The strings that are loaded into a shader object are expected to form the source code for a valid shader as defined in the OpenGL Shading Language
- * Specification.
- *
- * @param shaderObj the shader object
- * @param string an array of pointers to one or more, optionally null terminated, character strings that make up the source code
- * @param length an array with the number of charARBs in each string (the string length). Each element in this array can be set to negative one (or smaller),
- * indicating that its accompanying string is null terminated. If {@code length} is set to {@code NULL}, all strings in the {@code string} argument are
- * considered null terminated.
- */
- public static void glShaderSourceARB(@NativeType("GLhandleARB") int shaderObj, @NativeType("GLcharARB const **") PointerBuffer string, @Nullable @NativeType("GLint const *") IntBuffer length) {
- if (CHECKS) {
- checkSafe(length, string.remaining());
- }
- nglShaderSourceARB(shaderObj, string.remaining(), memAddress(string), memAddressSafe(length));
- }
-
- /**
- * Sets the source code for the specified shader object {@code shaderObj} to the text strings in the {@code string} array. If the object previously had
- * source code loaded into it, it is completely replaced.
- *
- * The strings that are loaded into a shader object are expected to form the source code for a valid shader as defined in the OpenGL Shading Language
- * Specification.
- *
- * @param shaderObj the shader object
- * @param string an array of pointers to one or more, optionally null terminated, character strings that make up the source code
- */
- public static void glShaderSourceARB(@NativeType("GLhandleARB") int shaderObj, @NativeType("GLcharARB const **") CharSequence... string) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- long stringAddress = org.lwjgl.system.APIUtil.apiArrayi(stack, MemoryUtil::memUTF8, string);
- nglShaderSourceARB(shaderObj, string.length, stringAddress, stringAddress - (string.length << 2));
- org.lwjgl.system.APIUtil.apiArrayFree(stringAddress, string.length);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- /**
- * Sets the source code for the specified shader object {@code shaderObj} to the text strings in the {@code string} array. If the object previously had
- * source code loaded into it, it is completely replaced.
- *
- * The strings that are loaded into a shader object are expected to form the source code for a valid shader as defined in the OpenGL Shading Language
- * Specification.
- *
- * @param shaderObj the shader object
- * @param string an array of pointers to one or more, optionally null terminated, character strings that make up the source code
- */
- public static void glShaderSourceARB(@NativeType("GLhandleARB") int shaderObj, @NativeType("GLcharARB const **") CharSequence string) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- long stringAddress = org.lwjgl.system.APIUtil.apiArrayi(stack, MemoryUtil::memUTF8, string);
- nglShaderSourceARB(shaderObj, 1, stringAddress, stringAddress - 4);
- org.lwjgl.system.APIUtil.apiArrayFree(stringAddress, 1);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glCompileShaderARB ] ---
-
- /**
- * Compiles a shader object. Each shader object has a Boolean status, {@link #GL_OBJECT_COMPILE_STATUS_ARB OBJECT_COMPILE_STATUS_ARB}, that is modified as a result of compilation. This status
- * can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. This status will be set to {@link GL11#GL_TRUE TRUE} if the shader {@code shaderObj} was compiled without errors and is
- * ready for use, and {@link GL11#GL_FALSE FALSE} otherwise. Compilation can fail for a variety of reasons as listed in the OpenGL Shading Language Specification. If
- * CompileShaderARB failed, any information about a previous compile is lost and is not restored. Thus a failed compile does not restore the old state of
- * {@code shaderObj}. If {@code shaderObj} does not reference a shader object, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated.
- *
- * Note that changing the source code of a shader object, through ShaderSourceARB, does not change its compile status {@link #GL_OBJECT_COMPILE_STATUS_ARB OBJECT_COMPILE_STATUS_ARB}.
- *
- * Each shader object has an information log that is modified as a result of compilation. This information log can be queried with {@link #glGetInfoLogARB GetInfoLogARB} to
- * obtain more information about the compilation attempt.
- *
- * @param shaderObj the shader object to compile
- */
- public static native void glCompileShaderARB(@NativeType("GLhandleARB") int shaderObj);
-
- // --- [ glCreateProgramObjectARB ] ---
-
- /**
- * Creates a program object.
- *
- * A program object is a container object. Shader objects are attached to a program object with the command AttachObjectARB. It is permissible to attach
- * shader objects to program objects before source code has been loaded into the shader object, or before the shader object has been compiled. It is
- * permissible to attach multiple shader objects of the same type to a single program object, and it is permissible to attach a shader object to more than
- * one program object.
- */
- @NativeType("GLhandleARB")
- public static native int glCreateProgramObjectARB();
-
- // --- [ glAttachObjectARB ] ---
-
- /**
- * Attaches an object to a container object.
- *
- * @param containerObj the container object
- * @param obj the object to attach
- */
- public static native void glAttachObjectARB(@NativeType("GLhandleARB") int containerObj, @NativeType("GLhandleARB") int obj);
-
- // --- [ glLinkProgramARB ] ---
-
- /**
- * Links a program object.
- *
- * Each program object has a Boolean status, {@link #GL_OBJECT_LINK_STATUS_ARB OBJECT_LINK_STATUS_ARB}, that is modified as a result of linking. This status can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. This status will be set to {@link GL11#GL_TRUE TRUE} if a valid executable is created, and {@link GL11#GL_FALSE FALSE} otherwise. Linking can fail for a
- * variety of reasons as specified in the OpenGL Shading Language Specification. Linking will also fail if one or more of the shader objects, attached to
- * {@code programObj}, are not compiled successfully, or if more active uniform or active sampler variables are used in {@code programObj} than allowed.
- * If LinkProgramARB failed, any information about a previous link is lost and is not restored. Thus a failed link does not restore the old state of
- * {@code programObj}. If {@code programObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated.
- *
- * Each program object has an information log that is modified as a result of a link operation. This information log can be queried with {@link #glGetInfoLogARB GetInfoLogARB}
- * to obtain more information about the link operation.
- *
- * @param programObj the program object to link
- */
- public static native void glLinkProgramARB(@NativeType("GLhandleARB") int programObj);
-
- // --- [ glUseProgramObjectARB ] ---
-
- /**
- * Installs the executable code as part of current rendering state if the program object {@code programObj} contains valid executable code, i.e. has been
- * linked successfully. If UseProgramObjectARB is called with the handle set to 0, it is as if the GL had no programmable stages and the fixed
- * functionality paths will be used instead. If {@code programObj} cannot be made part of the current rendering state, an {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} error will
- * be generated and the current rendering state left unmodified. This error will be set, for example, if {@code programObj} has not been linked
- * successfully. If {@code programObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated.
- *
- * While a program object is in use, applications are free to modify attached shader objects, compile attached shader objects, attach additional shader
- * objects, and detach shader objects. This does not affect the link status {@link #GL_OBJECT_LINK_STATUS_ARB OBJECT_LINK_STATUS_ARB} of the program object. This does not affect the
- * executable code that is part of the current state either. That executable code is only affected when the program object has been re-linked successfully.
- * After such a successful re-link, the {@link #glLinkProgramARB LinkProgramARB} command will install the generated executable code as part of the current rendering state if the
- * specified program object was already in use as a result of a previous call to UseProgramObjectARB. If this re-link failed, then the executable code part
- * of the current state does not change.
- *
- * @param programObj the program object to use
- */
- public static native void glUseProgramObjectARB(@NativeType("GLhandleARB") int programObj);
-
- // --- [ glValidateProgramARB ] ---
-
- /**
- * Validates the program object {@code programObj} against the GL state at that moment. Each program object has a Boolean status,
- * {@link #GL_OBJECT_VALIDATE_STATUS_ARB OBJECT_VALIDATE_STATUS_ARB}, that is modified as a result of validation. This status can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If validation
- * succeeded this status will be set to {@link GL11#GL_TRUE TRUE}, otherwise it will be set to {@link GL11#GL_FALSE FALSE}. If validation succeeded the program object is guaranteed to
- * execute, given the current GL state. If validation failed, the program object is guaranteed to not execute, given the current GL state. If
- * {@code programObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated.
- *
- * ValidateProgramARB will validate at least as much as is done when a rendering command is issued, and it could validate more. For example, it could give
- * a hint on how to optimize some piece of shader code.
- *
- * ValidateProgramARB will store its information in the info log. This information will either be an empty string or it will contain validation information.
- *
- * ValidateProgramARB is typically only useful during application development. An application should not expect different OpenGL implementations to produce
- * identical information.
- *
- * @param programObj the program object to validate
- */
- public static native void glValidateProgramARB(@NativeType("GLhandleARB") int programObj);
-
- // --- [ glUniform1fARB ] ---
-
- /**
- * float version of {@link #glUniform4fARB Uniform4fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- */
- public static native void glUniform1fARB(@NativeType("GLint") int location, @NativeType("GLfloat") float v0);
-
- // --- [ glUniform2fARB ] ---
-
- /**
- * vec2 version of {@link #glUniform4fARB Uniform4fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- */
- public static native void glUniform2fARB(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1);
-
- // --- [ glUniform3fARB ] ---
-
- /**
- * vec3 version of {@link #glUniform4fARB Uniform4fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- */
- public static native void glUniform3fARB(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2);
-
- // --- [ glUniform4fARB ] ---
-
- /**
- * Loads a vec4 value into a uniform variable of the program object that is currently in use.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- * @param v3 the uniform w value
- */
- public static native void glUniform4fARB(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2, @NativeType("GLfloat") float v3);
-
- // --- [ glUniform1iARB ] ---
-
- /**
- * int version of {@link #glUniform1fARB Uniform1fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- */
- public static native void glUniform1iARB(@NativeType("GLint") int location, @NativeType("GLint") int v0);
-
- // --- [ glUniform2iARB ] ---
-
- /**
- * ivec2 version of {@link #glUniform2fARB Uniform2fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- */
- public static native void glUniform2iARB(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1);
-
- // --- [ glUniform3iARB ] ---
-
- /**
- * ivec3 version of {@link #glUniform3fARB Uniform3fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- */
- public static native void glUniform3iARB(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1, @NativeType("GLint") int v2);
-
- // --- [ glUniform4iARB ] ---
-
- /**
- * ivec4 version of {@link #glUniform4fARB Uniform4fARB}.
- *
- * @param location the uniform variable location
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- * @param v3 the uniform w value
- */
- public static native void glUniform4iARB(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1, @NativeType("GLint") int v2, @NativeType("GLint") int v3);
-
- // --- [ glUniform1fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform1fvARB Uniform1fvARB}
- *
- * @param count the number of float values to load
- */
- public static native void nglUniform1fvARB(int location, int count, long value);
-
- /**
- * Loads floating-point values {@code count} times into a uniform location defined as an array of float values.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform1fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniform1fvARB(location, value.remaining(), memAddress(value));
- }
-
- // --- [ glUniform2fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform2fvARB Uniform2fvARB}
- *
- * @param count the number of vec2 vectors to load
- */
- public static native void nglUniform2fvARB(int location, int count, long value);
-
- /**
- * Loads floating-point values {@code count} times into a uniform location defined as an array of vec2 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform2fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniform2fvARB(location, value.remaining() >> 1, memAddress(value));
- }
-
- // --- [ glUniform3fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform3fvARB Uniform3fvARB}
- *
- * @param count the number of vec3 vectors to load
- */
- public static native void nglUniform3fvARB(int location, int count, long value);
-
- /**
- * Loads floating-point values {@code count} times into a uniform location defined as an array of vec3 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform3fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniform3fvARB(location, value.remaining() / 3, memAddress(value));
- }
-
- // --- [ glUniform4fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform4fvARB Uniform4fvARB}
- *
- * @param count the number of vec4 vectors to load
- */
- public static native void nglUniform4fvARB(int location, int count, long value);
-
- /**
- * Loads floating-point values {@code count} times into a uniform location defined as an array of vec4 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform4fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniform4fvARB(location, value.remaining() >> 2, memAddress(value));
- }
-
- // --- [ glUniform1ivARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform1ivARB Uniform1ivARB}
- *
- * @param count the number of integer values to load
- */
- public static native void nglUniform1ivARB(int location, int count, long value);
-
- /**
- * Loads integer values {@code count} times into a uniform location defined as an array of integer values.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform1ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- nglUniform1ivARB(location, value.remaining(), memAddress(value));
- }
-
- // --- [ glUniform2ivARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform2ivARB Uniform2ivARB}
- *
- * @param count the number of ivec2 vectors to load
- */
- public static native void nglUniform2ivARB(int location, int count, long value);
-
- /**
- * Loads integer values {@code count} times into a uniform location defined as an array of ivec2 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform2ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- nglUniform2ivARB(location, value.remaining() >> 1, memAddress(value));
- }
-
- // --- [ glUniform3ivARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform3ivARB Uniform3ivARB}
- *
- * @param count the number of ivec3 vectors to load
- */
- public static native void nglUniform3ivARB(int location, int count, long value);
-
- /**
- * Loads integer values {@code count} times into a uniform location defined as an array of ivec3 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform3ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- nglUniform3ivARB(location, value.remaining() / 3, memAddress(value));
- }
-
- // --- [ glUniform4ivARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniform4ivARB Uniform4ivARB}
- *
- * @param count the number of ivec4 vectors to load
- */
- public static native void nglUniform4ivARB(int location, int count, long value);
-
- /**
- * Loads integer values {@code count} times into a uniform location defined as an array of ivec4 vectors.
- *
- * @param location the uniform variable location
- * @param value the values to load
- */
- public static void glUniform4ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- nglUniform4ivARB(location, value.remaining() >> 2, memAddress(value));
- }
-
- // --- [ glUniformMatrix2fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix2fvARB UniformMatrix2fvARB}
- *
- * @param count the number of 2x2 matrices to load
- */
- public static native void nglUniformMatrix2fvARB(int location, int count, boolean transpose, long value);
-
- /**
- * Loads a 2x2 matrix of floating-point values {@code count} times into a uniform location defined as a matrix or an array of matrices.
- *
- * @param location the uniform variable location
- * @param transpose if {@link GL11#GL_FALSE FALSE}, the matrix is specified in column major order, otherwise in row major order
- * @param value the matrix values to load
- */
- public static void glUniformMatrix2fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniformMatrix2fvARB(location, value.remaining() >> 2, transpose, memAddress(value));
- }
-
- // --- [ glUniformMatrix3fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix3fvARB UniformMatrix3fvARB}
- *
- * @param count the number of 3x3 matrices to load
- */
- public static native void nglUniformMatrix3fvARB(int location, int count, boolean transpose, long value);
-
- /**
- * Loads a 3x3 matrix of floating-point values {@code count} times into a uniform location defined as a matrix or an array of matrices.
- *
- * @param location the uniform variable location
- * @param transpose if {@link GL11#GL_FALSE FALSE}, the matrix is specified in column major order, otherwise in row major order
- * @param value the matrix values to load
- */
- public static void glUniformMatrix3fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniformMatrix3fvARB(location, value.remaining() / 9, transpose, memAddress(value));
- }
-
- // --- [ glUniformMatrix4fvARB ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix4fvARB UniformMatrix4fvARB}
- *
- * @param count the number of 4x4 matrices to load
- */
- public static native void nglUniformMatrix4fvARB(int location, int count, boolean transpose, long value);
-
- /**
- * Loads a 4x4 matrix of floating-point values {@code count} times into a uniform location defined as a matrix or an array of matrices.
- *
- * @param location the uniform variable location
- * @param transpose if {@link GL11#GL_FALSE FALSE}, the matrix is specified in column major order, otherwise in row major order
- * @param value the matrix values to load
- */
- public static void glUniformMatrix4fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- nglUniformMatrix4fvARB(location, value.remaining() >> 4, transpose, memAddress(value));
- }
-
- // --- [ glGetObjectParameterfvARB ] ---
-
- /** Unsafe version of: {@link #glGetObjectParameterfvARB GetObjectParameterfvARB} */
- public static native void nglGetObjectParameterfvARB(int obj, int pname, long params);
-
- /**
- * Returns object specific parameter values.
- *
- * @param obj the object to query
- * @param pname the parameter to query
- * @param params a buffer in which to return the parameter value
- */
- public static void glGetObjectParameterfvARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetObjectParameterfvARB(obj, pname, memAddress(params));
- }
-
- // --- [ glGetObjectParameterivARB ] ---
-
- /** Unsafe version of: {@link #glGetObjectParameterivARB GetObjectParameterivARB} */
- public static native void nglGetObjectParameterivARB(int obj, int pname, long params);
-
- /**
- * Returns object specific parameter values.
- *
- * @param obj the object to query
- * @param pname the parameter to query. One of:
| {@link #GL_OBJECT_TYPE_ARB OBJECT_TYPE_ARB} | {@link #GL_OBJECT_SUBTYPE_ARB OBJECT_SUBTYPE_ARB} | {@link #GL_OBJECT_DELETE_STATUS_ARB OBJECT_DELETE_STATUS_ARB} |
| {@link #GL_OBJECT_COMPILE_STATUS_ARB OBJECT_COMPILE_STATUS_ARB} | {@link #GL_OBJECT_LINK_STATUS_ARB OBJECT_LINK_STATUS_ARB} | {@link #GL_OBJECT_VALIDATE_STATUS_ARB OBJECT_VALIDATE_STATUS_ARB} |
| {@link #GL_OBJECT_INFO_LOG_LENGTH_ARB OBJECT_INFO_LOG_LENGTH_ARB} | {@link #GL_OBJECT_ATTACHED_OBJECTS_ARB OBJECT_ATTACHED_OBJECTS_ARB} | {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} |
| {@link #GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB} | {@link #GL_OBJECT_SHADER_SOURCE_LENGTH_ARB OBJECT_SHADER_SOURCE_LENGTH_ARB} |
- * @param params a buffer in which to return the parameter value
- */
- public static void glGetObjectParameterivARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetObjectParameterivARB(obj, pname, memAddress(params));
- }
-
- /**
- * Returns object specific parameter values.
- *
- * @param obj the object to query
- * @param pname the parameter to query. One of:
| {@link #GL_OBJECT_TYPE_ARB OBJECT_TYPE_ARB} | {@link #GL_OBJECT_SUBTYPE_ARB OBJECT_SUBTYPE_ARB} | {@link #GL_OBJECT_DELETE_STATUS_ARB OBJECT_DELETE_STATUS_ARB} |
| {@link #GL_OBJECT_COMPILE_STATUS_ARB OBJECT_COMPILE_STATUS_ARB} | {@link #GL_OBJECT_LINK_STATUS_ARB OBJECT_LINK_STATUS_ARB} | {@link #GL_OBJECT_VALIDATE_STATUS_ARB OBJECT_VALIDATE_STATUS_ARB} |
| {@link #GL_OBJECT_INFO_LOG_LENGTH_ARB OBJECT_INFO_LOG_LENGTH_ARB} | {@link #GL_OBJECT_ATTACHED_OBJECTS_ARB OBJECT_ATTACHED_OBJECTS_ARB} | {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} |
| {@link #GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB} | {@link #GL_OBJECT_SHADER_SOURCE_LENGTH_ARB OBJECT_SHADER_SOURCE_LENGTH_ARB} |
- */
- @NativeType("void")
- public static int glGetObjectParameteriARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer params = stack.callocInt(1);
- nglGetObjectParameterivARB(obj, pname, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetInfoLogARB ] ---
-
- /**
- * Unsafe version of: {@link #glGetInfoLogARB GetInfoLogARB}
- *
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code infoLog}
- */
- public static native void nglGetInfoLogARB(int obj, int maxLength, long length, long infoLog);
-
- /**
- * A string that contains information about the last link or validation attempt and last compilation attempt are kept per program or shader object. This
- * string is called the info log and can be obtained with this command.
- *
- * This string will be null terminated. The number of characters in the info log is given by {@link #GL_OBJECT_INFO_LOG_LENGTH_ARB OBJECT_INFO_LOG_LENGTH_ARB}, which can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is a shader object, the returned info log will either be an empty string or it will contain
- * information about the last compilation attempt for that object. If {@code obj} is a program object, the returned info log will either be an empty string
- * or it will contain information about the last link attempt or last validation attempt for that object. If {@code obj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}
- * or {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code infoLog}
- * will be unmodified.
- *
- * The info log is typically only useful during application development and an application should not expect different OpenGL implementations to produce
- * identical info logs.
- *
- * @param obj the shader object to query
- * @param length the actual number of characters written by the GL into {@code infoLog} is returned in {@code length}, excluding the null termination. If
- * {@code length} is {@code NULL} then the GL ignores this parameter.
- * @param infoLog a buffer in which to return the info log
- */
- public static void glGetInfoLogARB(@NativeType("GLhandleARB") int obj, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLcharARB *") ByteBuffer infoLog) {
- if (CHECKS) {
- checkSafe(length, 1);
- }
- nglGetInfoLogARB(obj, infoLog.remaining(), memAddressSafe(length), memAddress(infoLog));
- }
-
- /**
- * A string that contains information about the last link or validation attempt and last compilation attempt are kept per program or shader object. This
- * string is called the info log and can be obtained with this command.
- *
- * This string will be null terminated. The number of characters in the info log is given by {@link #GL_OBJECT_INFO_LOG_LENGTH_ARB OBJECT_INFO_LOG_LENGTH_ARB}, which can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is a shader object, the returned info log will either be an empty string or it will contain
- * information about the last compilation attempt for that object. If {@code obj} is a program object, the returned info log will either be an empty string
- * or it will contain information about the last link attempt or last validation attempt for that object. If {@code obj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}
- * or {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code infoLog}
- * will be unmodified.
- *
- * The info log is typically only useful during application development and an application should not expect different OpenGL implementations to produce
- * identical info logs.
- *
- * @param obj the shader object to query
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code infoLog}
- */
- @NativeType("void")
- public static String glGetInfoLogARB(@NativeType("GLhandleARB") int obj, @NativeType("GLsizei") int maxLength) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- ByteBuffer infoLog = memAlloc(maxLength);
- try {
- IntBuffer length = stack.ints(0);
- nglGetInfoLogARB(obj, maxLength, memAddress(length), memAddress(infoLog));
- return memUTF8(infoLog, length.get(0));
- } finally {
- memFree(infoLog);
- stack.setPointer(stackPointer);
- }
- }
-
- /**
- * A string that contains information about the last link or validation attempt and last compilation attempt are kept per program or shader object. This
- * string is called the info log and can be obtained with this command.
- *
- * This string will be null terminated. The number of characters in the info log is given by {@link #GL_OBJECT_INFO_LOG_LENGTH_ARB OBJECT_INFO_LOG_LENGTH_ARB}, which can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is a shader object, the returned info log will either be an empty string or it will contain
- * information about the last compilation attempt for that object. If {@code obj} is a program object, the returned info log will either be an empty string
- * or it will contain information about the last link attempt or last validation attempt for that object. If {@code obj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}
- * or {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code infoLog}
- * will be unmodified.
- *
- * The info log is typically only useful during application development and an application should not expect different OpenGL implementations to produce
- * identical info logs.
- *
- * @param obj the shader object to query
- */
- @NativeType("void")
- public static String glGetInfoLogARB(@NativeType("GLhandleARB") int obj) {
- return glGetInfoLogARB(obj, glGetObjectParameteriARB(obj, GL_OBJECT_INFO_LOG_LENGTH_ARB));
- }
-
- // --- [ glGetAttachedObjectsARB ] ---
-
- /**
- * Unsafe version of: {@link #glGetAttachedObjectsARB GetAttachedObjectsARB}
- *
- * @param maxCount the maximum number of handles the GL is allowed to write into {@code obj}
- */
- public static native void nglGetAttachedObjectsARB(int containerObj, int maxCount, long count, long obj);
-
- /**
- * Returns the handles of objects attached to {@code containerObj} in {@code obj}. . The number of objects attached to {@code containerObj} is given by
- * {@link #GL_OBJECT_ATTACHED_OBJECTS_ARB OBJECT_ATTACHED_OBJECTS_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code containerObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the
- * error {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code count} and {@code obj} will be unmodified.
- *
- * @param containerObj the container object to query
- * @param count a buffer in which to return the actual number of object handles written by the GL into {@code obj}. If {@code NULL} then the GL ignores this parameter.
- * @param obj a buffer in which to return the attached object handles
- */
- public static void glGetAttachedObjectsARB(@NativeType("GLhandleARB") int containerObj, @Nullable @NativeType("GLsizei *") IntBuffer count, @NativeType("GLhandleARB *") IntBuffer obj) {
- if (CHECKS) {
- checkSafe(count, 1);
- }
- nglGetAttachedObjectsARB(containerObj, obj.remaining(), memAddressSafe(count), memAddress(obj));
- }
-
- // --- [ glGetUniformLocationARB ] ---
-
- /** Unsafe version of: {@link #glGetUniformLocationARB GetUniformLocationARB} */
- public static native int nglGetUniformLocationARB(int programObj, long name);
-
- /**
- * Returns the location of uniform variable {@code name}. {@code name} has to be a null terminated string, without white space. The value of -1 will be
- * returned if {@code name} does not correspond to an active uniform variable name in {@code programObj} or if {@code name} starts with the reserved prefix
- * "gl_". If {@code programObj} has not been successfully linked, or if {@code programObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the error
- * {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. The location of a uniform variable does not change until the next link command is issued.
- *
- * A valid {@code name} cannot be a structure, an array of structures, or a subcomponent of a vector or a matrix. In order to identify a valid {@code name},
- * the "." (dot) and "[]" operators can be used in {@code name} to operate on a structure or to operate on an array.
- *
- * The first element of a uniform array is identified using the name of the uniform array appended with "[0]". Except if the last part of the string
- * {@code name} indicates a uniform array, then the location of the first element of that array can be retrieved by either using the name of the uniform
- * array, or the name of the uniform array appended with "[0]".
- *
- * @param programObj the program object to query
- * @param name the name of the uniform variable whose location is to be queried
- */
- @NativeType("GLint")
- public static int glGetUniformLocationARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLcharARB const *") ByteBuffer name) {
- if (CHECKS) {
- checkNT1(name);
- }
- return nglGetUniformLocationARB(programObj, memAddress(name));
- }
-
- /**
- * Returns the location of uniform variable {@code name}. {@code name} has to be a null terminated string, without white space. The value of -1 will be
- * returned if {@code name} does not correspond to an active uniform variable name in {@code programObj} or if {@code name} starts with the reserved prefix
- * "gl_". If {@code programObj} has not been successfully linked, or if {@code programObj} is not of type {@link #GL_PROGRAM_OBJECT_ARB PROGRAM_OBJECT_ARB}, the error
- * {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. The location of a uniform variable does not change until the next link command is issued.
- *
- * A valid {@code name} cannot be a structure, an array of structures, or a subcomponent of a vector or a matrix. In order to identify a valid {@code name},
- * the "." (dot) and "[]" operators can be used in {@code name} to operate on a structure or to operate on an array.
- *
- * The first element of a uniform array is identified using the name of the uniform array appended with "[0]". Except if the last part of the string
- * {@code name} indicates a uniform array, then the location of the first element of that array can be retrieved by either using the name of the uniform
- * array, or the name of the uniform array appended with "[0]".
- *
- * @param programObj the program object to query
- * @param name the name of the uniform variable whose location is to be queried
- */
- @NativeType("GLint")
- public static int glGetUniformLocationARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLcharARB const *") CharSequence name) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- stack.nUTF8(name, true);
- long nameEncoded = stack.getPointerAddress();
- return nglGetUniformLocationARB(programObj, nameEncoded);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetActiveUniformARB ] ---
-
- /**
- * Unsafe version of: {@link #glGetActiveUniformARB GetActiveUniformARB}
- *
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code name}.
- */
- public static native void nglGetActiveUniformARB(int programObj, int index, int maxLength, long length, long size, long type, long name);
-
- /**
- * Determines which of the declared uniform variables are active and their sizes and types.
- *
- * This command provides information about the uniform selected by {@code index}. The {@code index} of 0 selects the first active uniform, and
- * {@code index} of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} - 1 selects the last active uniform. The value of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code index} is greater than or equal to {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB}, the error {@link GL11#GL_INVALID_VALUE INVALID_VALUE} is generated.
- *
- * If an error occurred, the return parameters {@code length}, {@code size}, {@code type} and {@code name} will be unmodified.
- *
- * The returned uniform name can be the name of built-in uniform state as well. The length of the longest uniform name in {@code programObj} is given by
- * {@link #GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}.
- *
- * Each uniform variable, declared in a shader, is broken down into one or more strings using the "." (dot) and "[]" operators, if necessary, to the point
- * that it is legal to pass each string back into {@link #glGetUniformLocationARB GetUniformLocationARB}. Each of these strings constitutes one active uniform, and each string is
- * assigned an index.
- *
- * If one or more elements of an array are active, GetActiveUniformARB will return the name of the array in {@code name}, subject to the restrictions
- * listed above. The type of the array is returned in {@code type}. The {@code size} parameter contains the highest array element index used, plus one. The
- * compiler or linker determines the highest index used. There will be only one active uniform reported by the GL per uniform array.
- *
- * This command will return as much information about active uniforms as possible. If no information is available, {@code length} will be set to zero and
- * {@code name} will be an empty string. This situation could arise if GetActiveUniformARB is issued after a failed link.
- *
- * @param programObj a handle to a program object for which the command {@link #glLinkProgramARB LinkProgramARB} has been issued in the past. It is not necessary for {@code programObj} to have
- * been linked successfully. The link could have failed because the number of active uniforms exceeded the limit.
- * @param index the uniform index
- * @param length a buffer in which to return the actual number of characters written by the GL into {@code name}. This count excludes the null termination. If
- * {@code length} is {@code NULL} then the GL ignores this parameter.
- * @param size a buffer in which to return the uniform size. The size is in units of the type returned in {@code type}.
- * @param type a buffer in which to return the uniform type
- * @param name a buffer in which to return the uniform name
- */
- public static void glGetActiveUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type, @NativeType("GLcharARB *") ByteBuffer name) {
- if (CHECKS) {
- checkSafe(length, 1);
- check(size, 1);
- check(type, 1);
- }
- nglGetActiveUniformARB(programObj, index, name.remaining(), memAddressSafe(length), memAddress(size), memAddress(type), memAddress(name));
- }
-
- /**
- * Determines which of the declared uniform variables are active and their sizes and types.
- *
- * This command provides information about the uniform selected by {@code index}. The {@code index} of 0 selects the first active uniform, and
- * {@code index} of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} - 1 selects the last active uniform. The value of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code index} is greater than or equal to {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB}, the error {@link GL11#GL_INVALID_VALUE INVALID_VALUE} is generated.
- *
- * If an error occurred, the return parameters {@code length}, {@code size}, {@code type} and {@code name} will be unmodified.
- *
- * The returned uniform name can be the name of built-in uniform state as well. The length of the longest uniform name in {@code programObj} is given by
- * {@link #GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}.
- *
- * Each uniform variable, declared in a shader, is broken down into one or more strings using the "." (dot) and "[]" operators, if necessary, to the point
- * that it is legal to pass each string back into {@link #glGetUniformLocationARB GetUniformLocationARB}. Each of these strings constitutes one active uniform, and each string is
- * assigned an index.
- *
- * If one or more elements of an array are active, GetActiveUniformARB will return the name of the array in {@code name}, subject to the restrictions
- * listed above. The type of the array is returned in {@code type}. The {@code size} parameter contains the highest array element index used, plus one. The
- * compiler or linker determines the highest index used. There will be only one active uniform reported by the GL per uniform array.
- *
- * This command will return as much information about active uniforms as possible. If no information is available, {@code length} will be set to zero and
- * {@code name} will be an empty string. This situation could arise if GetActiveUniformARB is issued after a failed link.
- *
- * @param programObj a handle to a program object for which the command {@link #glLinkProgramARB LinkProgramARB} has been issued in the past. It is not necessary for {@code programObj} to have
- * been linked successfully. The link could have failed because the number of active uniforms exceeded the limit.
- * @param index the uniform index
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code name}.
- * @param size a buffer in which to return the uniform size. The size is in units of the type returned in {@code type}.
- * @param type a buffer in which to return the uniform type
- */
- @NativeType("void")
- public static String glGetActiveUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLuint") int index, @NativeType("GLsizei") int maxLength, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- if (CHECKS) {
- check(size, 1);
- check(type, 1);
- }
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer length = stack.ints(0);
- ByteBuffer name = stack.malloc(maxLength);
- nglGetActiveUniformARB(programObj, index, maxLength, memAddress(length), memAddress(size), memAddress(type), memAddress(name));
- return memUTF8(name, length.get(0));
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- /**
- * Determines which of the declared uniform variables are active and their sizes and types.
- *
- * This command provides information about the uniform selected by {@code index}. The {@code index} of 0 selects the first active uniform, and
- * {@code index} of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} - 1 selects the last active uniform. The value of {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB} can be queried with
- * {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code index} is greater than or equal to {@link #GL_OBJECT_ACTIVE_UNIFORMS_ARB OBJECT_ACTIVE_UNIFORMS_ARB}, the error {@link GL11#GL_INVALID_VALUE INVALID_VALUE} is generated.
- *
- * If an error occurred, the return parameters {@code length}, {@code size}, {@code type} and {@code name} will be unmodified.
- *
- * The returned uniform name can be the name of built-in uniform state as well. The length of the longest uniform name in {@code programObj} is given by
- * {@link #GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}.
- *
- * Each uniform variable, declared in a shader, is broken down into one or more strings using the "." (dot) and "[]" operators, if necessary, to the point
- * that it is legal to pass each string back into {@link #glGetUniformLocationARB GetUniformLocationARB}. Each of these strings constitutes one active uniform, and each string is
- * assigned an index.
- *
- * If one or more elements of an array are active, GetActiveUniformARB will return the name of the array in {@code name}, subject to the restrictions
- * listed above. The type of the array is returned in {@code type}. The {@code size} parameter contains the highest array element index used, plus one. The
- * compiler or linker determines the highest index used. There will be only one active uniform reported by the GL per uniform array.
- *
- * This command will return as much information about active uniforms as possible. If no information is available, {@code length} will be set to zero and
- * {@code name} will be an empty string. This situation could arise if GetActiveUniformARB is issued after a failed link.
- *
- * @param programObj a handle to a program object for which the command {@link #glLinkProgramARB LinkProgramARB} has been issued in the past. It is not necessary for {@code programObj} to have
- * been linked successfully. The link could have failed because the number of active uniforms exceeded the limit.
- * @param index the uniform index
- * @param size a buffer in which to return the uniform size. The size is in units of the type returned in {@code type}.
- * @param type a buffer in which to return the uniform type
- */
- @NativeType("void")
- public static String glGetActiveUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLuint") int index, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- return glGetActiveUniformARB(programObj, index, glGetObjectParameteriARB(programObj, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB), size, type);
- }
-
- // --- [ glGetUniformfvARB ] ---
-
- /** Unsafe version of: {@link #glGetUniformfvARB GetUniformfvARB} */
- public static native void nglGetUniformfvARB(int programObj, int location, long params);
-
- /**
- * Returns the floating-point value or values of a uniform.
- *
- * @param programObj the program object to query
- * @param location the uniform variable location
- * @param params a buffer in which to return the uniform values
- */
- public static void glGetUniformfvARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLfloat *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetUniformfvARB(programObj, location, memAddress(params));
- }
-
- /**
- * Returns the floating-point value or values of a uniform.
- *
- * @param programObj the program object to query
- * @param location the uniform variable location
- */
- @NativeType("void")
- public static float glGetUniformfARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer params = stack.callocFloat(1);
- nglGetUniformfvARB(programObj, location, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetUniformivARB ] ---
-
- /** Unsafe version of: {@link #glGetUniformivARB GetUniformivARB} */
- public static native void nglGetUniformivARB(int programObj, int location, long params);
-
- /**
- * Returns the integer value or values of a uniform.
- *
- * @param programObj the program object to query
- * @param location the uniform variable location
- * @param params a buffer in which to return the uniform values
- */
- public static void glGetUniformivARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLint *") IntBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetUniformivARB(programObj, location, memAddress(params));
- }
-
- /**
- * Returns the integer value or values of a uniform.
- *
- * @param programObj the program object to query
- * @param location the uniform variable location
- */
- @NativeType("void")
- public static int glGetUniformiARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer params = stack.callocInt(1);
- nglGetUniformivARB(programObj, location, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetShaderSourceARB ] ---
-
- /**
- * Unsafe version of: {@link #glGetShaderSourceARB GetShaderSourceARB}
- *
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code source}
- */
- public static native void nglGetShaderSourceARB(int obj, int maxLength, long length, long source);
-
- /**
- * Returns the string making up the source code for a shader object.
- *
- * The string {@code source} is a concatenation of the strings passed to OpenGL using {@link #glShaderSourceARB ShaderSourceARB}. The length of this concatenation is given by
- * {@link #GL_OBJECT_SHADER_SOURCE_LENGTH_ARB OBJECT_SHADER_SOURCE_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is not of type {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error
- * {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code source} will be unmodified.
- *
- * @param obj the shader object to query
- * @param length a buffer in which to return the actual number of characters written by the GL into {@code source}, excluding the null termination. If
- * {@code length} is {@code NULL} then the GL ignores this parameter.
- * @param source a buffer in which to return the shader object source
- */
- public static void glGetShaderSourceARB(@NativeType("GLhandleARB") int obj, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLcharARB *") ByteBuffer source) {
- if (CHECKS) {
- checkSafe(length, 1);
- }
- nglGetShaderSourceARB(obj, source.remaining(), memAddressSafe(length), memAddress(source));
- }
-
- /**
- * Returns the string making up the source code for a shader object.
- *
- * The string {@code source} is a concatenation of the strings passed to OpenGL using {@link #glShaderSourceARB ShaderSourceARB}. The length of this concatenation is given by
- * {@link #GL_OBJECT_SHADER_SOURCE_LENGTH_ARB OBJECT_SHADER_SOURCE_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is not of type {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error
- * {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code source} will be unmodified.
- *
- * @param obj the shader object to query
- * @param maxLength the maximum number of characters the GL is allowed to write into {@code source}
- */
- @NativeType("void")
- public static String glGetShaderSourceARB(@NativeType("GLhandleARB") int obj, @NativeType("GLsizei") int maxLength) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- ByteBuffer source = memAlloc(maxLength);
- try {
- IntBuffer length = stack.ints(0);
- nglGetShaderSourceARB(obj, maxLength, memAddress(length), memAddress(source));
- return memUTF8(source, length.get(0));
- } finally {
- memFree(source);
- stack.setPointer(stackPointer);
- }
- }
-
- /**
- * Returns the string making up the source code for a shader object.
- *
- * The string {@code source} is a concatenation of the strings passed to OpenGL using {@link #glShaderSourceARB ShaderSourceARB}. The length of this concatenation is given by
- * {@link #GL_OBJECT_SHADER_SOURCE_LENGTH_ARB OBJECT_SHADER_SOURCE_LENGTH_ARB}, which can be queried with {@link #glGetObjectParameterivARB GetObjectParameterivARB}. If {@code obj} is not of type {@link #GL_SHADER_OBJECT_ARB SHADER_OBJECT_ARB}, the error
- * {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} is generated. If an error occurred, the return parameters {@code length} and {@code source} will be unmodified.
- *
- * @param obj the shader object to query
- */
- @NativeType("void")
- public static String glGetShaderSourceARB(@NativeType("GLhandleARB") int obj) {
- return glGetShaderSourceARB(obj, glGetObjectParameteriARB(obj, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB));
- }
-
- /** Array version of: {@link #glShaderSourceARB ShaderSourceARB} */
- public static void glShaderSourceARB(@NativeType("GLhandleARB") int shaderObj, @NativeType("GLcharARB const **") PointerBuffer string, @Nullable @NativeType("GLint const *") int[] length) {
- long __functionAddress = GL.getICD().glShaderSourceARB;
- if (CHECKS) {
- check(__functionAddress);
- checkSafe(length, string.remaining());
- }
- callPPV(shaderObj, string.remaining(), memAddress(string), length, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform1fvARB Uniform1fvARB} */
- public static void glUniform1fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniform1fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform2fvARB Uniform2fvARB} */
- public static void glUniform2fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniform2fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 1, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform3fvARB Uniform3fvARB} */
- public static void glUniform3fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniform3fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length / 3, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform4fvARB Uniform4fvARB} */
- public static void glUniform4fvARB(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniform4fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 2, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform1ivARB Uniform1ivARB} */
- public static void glUniform1ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- long __functionAddress = GL.getICD().glUniform1ivARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform2ivARB Uniform2ivARB} */
- public static void glUniform2ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- long __functionAddress = GL.getICD().glUniform2ivARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 1, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform3ivARB Uniform3ivARB} */
- public static void glUniform3ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- long __functionAddress = GL.getICD().glUniform3ivARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length / 3, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniform4ivARB Uniform4ivARB} */
- public static void glUniform4ivARB(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- long __functionAddress = GL.getICD().glUniform4ivARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 2, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniformMatrix2fvARB UniformMatrix2fvARB} */
- public static void glUniformMatrix2fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniformMatrix2fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 2, transpose, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniformMatrix3fvARB UniformMatrix3fvARB} */
- public static void glUniformMatrix3fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniformMatrix3fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length / 9, transpose, value, __functionAddress);
- }
-
- /** Array version of: {@link #glUniformMatrix4fvARB UniformMatrix4fvARB} */
- public static void glUniformMatrix4fvARB(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- long __functionAddress = GL.getICD().glUniformMatrix4fvARB;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(location, value.length >> 4, transpose, value, __functionAddress);
- }
-
- /** Array version of: {@link #glGetObjectParameterfvARB GetObjectParameterfvARB} */
- public static void glGetObjectParameterfvARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] params) {
- long __functionAddress = GL.getICD().glGetObjectParameterfvARB;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(obj, pname, params, __functionAddress);
- }
-
- /** Array version of: {@link #glGetObjectParameterivARB GetObjectParameterivARB} */
- public static void glGetObjectParameterivARB(@NativeType("GLhandleARB") int obj, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- long __functionAddress = GL.getICD().glGetObjectParameterivARB;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(obj, pname, params, __functionAddress);
- }
-
- /** Array version of: {@link #glGetInfoLogARB GetInfoLogARB} */
- public static void glGetInfoLogARB(@NativeType("GLhandleARB") int obj, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLcharARB *") ByteBuffer infoLog) {
- long __functionAddress = GL.getICD().glGetInfoLogARB;
- if (CHECKS) {
- check(__functionAddress);
- checkSafe(length, 1);
- }
- callPPV(obj, infoLog.remaining(), length, memAddress(infoLog), __functionAddress);
- }
-
- /** Array version of: {@link #glGetAttachedObjectsARB GetAttachedObjectsARB} */
- public static void glGetAttachedObjectsARB(@NativeType("GLhandleARB") int containerObj, @Nullable @NativeType("GLsizei *") int[] count, @NativeType("GLhandleARB *") int[] obj) {
- long __functionAddress = GL.getICD().glGetAttachedObjectsARB;
- if (CHECKS) {
- check(__functionAddress);
- checkSafe(count, 1);
- }
- callPPV(containerObj, obj.length, count, obj, __functionAddress);
- }
-
- /** Array version of: {@link #glGetActiveUniformARB GetActiveUniformARB} */
- public static void glGetActiveUniformARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLint *") int[] size, @NativeType("GLenum *") int[] type, @NativeType("GLcharARB *") ByteBuffer name) {
- long __functionAddress = GL.getICD().glGetActiveUniformARB;
- if (CHECKS) {
- check(__functionAddress);
- checkSafe(length, 1);
- check(size, 1);
- check(type, 1);
- }
- callPPPPV(programObj, index, name.remaining(), length, size, type, memAddress(name), __functionAddress);
- }
-
- /** Array version of: {@link #glGetUniformfvARB GetUniformfvARB} */
- public static void glGetUniformfvARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLfloat *") float[] params) {
- long __functionAddress = GL.getICD().glGetUniformfvARB;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(programObj, location, params, __functionAddress);
- }
-
- /** Array version of: {@link #glGetUniformivARB GetUniformivARB} */
- public static void glGetUniformivARB(@NativeType("GLhandleARB") int programObj, @NativeType("GLint") int location, @NativeType("GLint *") int[] params) {
- long __functionAddress = GL.getICD().glGetUniformivARB;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(programObj, location, params, __functionAddress);
- }
-
- /** Array version of: {@link #glGetShaderSourceARB GetShaderSourceARB} */
- public static void glGetShaderSourceARB(@NativeType("GLhandleARB") int obj, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLcharARB *") ByteBuffer source) {
- long __functionAddress = GL.getICD().glGetShaderSourceARB;
- if (CHECKS) {
- check(__functionAddress);
- checkSafe(length, 1);
- }
- callPPV(obj, source.remaining(), length, memAddress(source), __functionAddress);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/AWTGLCanvas.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/AWTGLCanvas.java
deleted file mode 100644
index 2070da747..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/AWTGLCanvas.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-import org.lwjgl.PointerBuffer;
-
-import java.awt.*;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.HierarchyEvent;
-import java.awt.event.HierarchyListener;
-
-public class AWTGLCanvas extends Canvas implements Drawable, ComponentListener, HierarchyListener {
-
- private static final long serialVersionUID = 1L;
-
- private ContextGL mContextGL;
- private PixelFormatLWJGL mPixelFormat;
- private ContextAttribs mCtxAttrs;
-
- public void setPixelFormat(final PixelFormatLWJGL pf) throws LWJGLException {
- mPixelFormat = pf;
- }
-
- public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
- mPixelFormat = pf;
- mCtxAttrs = attribs;
- }
-
- public PixelFormatLWJGL getPixelFormat() {
- return mPixelFormat;
- }
-
- public ContextGL getContext() {
- return mContextGL;
- }
-
- public ContextGL createSharedContext() throws LWJGLException {
- mContextGL = new ContextGL(getContext().getPeerInfo(), mCtxAttrs, null);
- return mContextGL;
- }
-
- public void checkGLError() {
- // GL11.glGetError();
- }
-
- public void initContext(final float r, final float g, final float b) {
- Display.setInitialBackground(r, g, b);
- }
-
- public AWTGLCanvas() throws LWJGLException {
- System.out.println("AWTGLCanvas constructor called on thread:"+Thread.currentThread().getName());
- //Display.create();
- }
-
- public AWTGLCanvas(PixelFormat pixel_format) throws LWJGLException {
- Display.create(pixel_format);
- }
-
- public AWTGLCanvas(GraphicsDevice device, PixelFormat pixel_format) throws LWJGLException {
- this(pixel_format);
- }
-
- public AWTGLCanvas(GraphicsDevice device, PixelFormat pixel_format, Drawable drawable) throws LWJGLException {
- this(pixel_format);
- }
-
- public AWTGLCanvas(GraphicsDevice device, PixelFormat pixel_format, Drawable drawable, ContextAttribs attribs) throws LWJGLException {
- this(pixel_format);
- }
-
- public void addNotify() {
-
- }
-
- public void removeNotify() {
-
- }
-
- public void setSwapInterval(int swap_interval) {
- mContextGL.setSwapInterval(swap_interval);
- }
-
- public void setVSyncEnabled(boolean enabled) {
- mContextGL.setSwapInterval(enabled ? 1 : 0);
- }
-
- public void swapBuffers() throws LWJGLException {
- mContextGL.swapBuffers();
- }
-
- public boolean isCurrent() throws LWJGLException {
- return mContextGL.isCurrent();
- }
-
- public void makeCurrent() throws LWJGLException {
- mContextGL.makeCurrent();
- }
-
- public void releaseContext() throws LWJGLException {
- mContextGL.releaseCurrent();
- }
-
- public final void destroy() {
- try {
- mContextGL.destroy();
- } catch (LWJGLException e) {throw new RuntimeException(e);}
- }
-
- public final void setCLSharingProperties(final PointerBuffer properties) throws LWJGLException {
- mContextGL.setCLSharingProperties(properties);
- }
-
- protected void initGL() {
-
- }
-
- protected void paintGL() {
-
- }
-
- public final void paint(Graphics g) {
-
- }
-
- protected void exceptionOccurred(LWJGLException exception) {
-
- }
-
- public void update(Graphics g) {
-
- }
-
- public void componentShown(ComponentEvent e) {
-
- }
-
- public void componentHidden(ComponentEvent e) {
-
- }
-
- public void componentResized(ComponentEvent e) {
-
- }
-
- public void componentMoved(ComponentEvent e) {
-
- }
-
- public void setLocation(int x, int y) {
- super.setLocation(x, y);
- }
-
- public void setLocation(Point p) {
- super.setLocation(p);
- }
-
- public void setSize(Dimension d) {
- super.setSize(d);
- }
-
- public void setSize(int width, int height) {
- super.setSize(width, height);
- }
-
- public void setBounds(int x, int y, int width, int height) {
- super.setBounds(x, y, width, height);
- }
-
- public void hierarchyChanged(HierarchyEvent e) {
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Context.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Context.java
deleted file mode 100644
index 01c4fded3..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Context.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2002-2011 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-
-/**
- * @author Spasi
- * @since 14/5/2011
- */
-interface Context {
-
- boolean isCurrent() throws LWJGLException;
-
- void makeCurrent() throws LWJGLException;
-
- void releaseCurrent() throws LWJGLException;
-
- void releaseDrawable() throws LWJGLException;
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextAttribs.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextAttribs.java
deleted file mode 100644
index ba1700530..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextAttribs.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-public final class ContextAttribs {
-
- public ContextAttribs() {
-
- }
-
- public ContextAttribs(final int majorVersion, final int minorVersion) {
-
- }
-
- public int getMajorVersion() {
- return 0;
- }
-
- public int getMinorVersion() {
- return 0;
- }
-
- public int getLayerPlane() {
- return 0;
- }
-
- public boolean isDebug() {
- return false;
- }
-
- public boolean isForwardCompatible() {
- return false;
- }
-
- public boolean isProfileCore() {
- return false;
- }
-
- public boolean isProfileCompatibility() {
- return false;
- }
-
- public boolean isProfileES() {
- return false;
- }
-
- public ContextAttribs withLayer(final int layerPlane) {
- return null;
- }
-
- public ContextAttribs withDebug(final boolean debug) {
- return null;
- }
-
- public ContextAttribs withForwardCompatible(final boolean forwardCompatible) {
- return null;
- }
-
- public ContextAttribs withProfileCore(final boolean profileCore) {
- return null;
- }
-
- public ContextAttribs withProfileCompatibility(final boolean profileCompatibility) {
- return null;
- }
-
- public ContextAttribs withProfileES(final boolean profileES) {
- return null;
- }
-
- public ContextAttribs withLoseContextOnReset(final boolean loseContextOnReset) {
- return null;
- }
-
- public ContextAttribs withContextResetIsolation(final boolean contextResetIsolation) {
- return null;
- }
-
- public String toString() {
- return null;
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextCapabilities.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextCapabilities.java
deleted file mode 100644
index ac8906fe8..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextCapabilities.java
+++ /dev/null
@@ -1,402 +0,0 @@
-package org.lwjgl.opengl;
-
-import java.lang.reflect.Field;
-
-public class ContextCapabilities {
-
- org.lwjgl.opengl.GLCapabilities cap = org.lwjgl.opengl.GL.createCapabilities();
-
- public ContextCapabilities() {
-
- Field[] fields = org.lwjgl.opengl.GLCapabilities.class.getFields();
-
- try {
- for ( Field field : fields ) {
-
- String name = field.getName();
-
- if (name.startsWith("GL_") || name.startsWith("OpenGL")) {
-
- boolean value = field.getBoolean(cap);
-
- try {
- Field f = this.getClass().getField(name);
- f.setBoolean(this, value);
- } catch (Exception e) {
- }
- }
- }
- } catch (Exception e) {
- System.out.println(e);
- }
- }
-
- public boolean GL_AMD_blend_minmax_factor;
- public boolean GL_AMD_conservative_depth;
- public boolean GL_AMD_debug_output;
- public boolean GL_AMD_depth_clamp_separate;
- public boolean GL_AMD_draw_buffers_blend;
- public boolean GL_AMD_interleaved_elements;
- public boolean GL_AMD_multi_draw_indirect;
- public boolean GL_AMD_name_gen_delete;
- public boolean GL_AMD_performance_monitor;
- public boolean GL_AMD_pinned_memory;
- public boolean GL_AMD_query_buffer_object;
- public boolean GL_AMD_sample_positions;
- public boolean GL_AMD_seamless_cubemap_per_texture;
- public boolean GL_AMD_shader_atomic_counter_ops;
- public boolean GL_AMD_shader_stencil_export;
- public boolean GL_AMD_shader_trinary_minmax;
- public boolean GL_AMD_sparse_texture;
- public boolean GL_AMD_stencil_operation_extended;
- public boolean GL_AMD_texture_texture4;
- public boolean GL_AMD_transform_feedback3_lines_triangles;
- public boolean GL_AMD_vertex_shader_layer;
- public boolean GL_AMD_vertex_shader_tessellator;
- public boolean GL_AMD_vertex_shader_viewport_index;
- public boolean GL_APPLE_aux_depth_stencil;
- public boolean GL_APPLE_client_storage;
- public boolean GL_APPLE_element_array;
- public boolean GL_APPLE_fence;
- public boolean GL_APPLE_float_pixels;
- public boolean GL_APPLE_flush_buffer_range;
- public boolean GL_APPLE_object_purgeable;
- public boolean GL_APPLE_packed_pixels;
- public boolean GL_APPLE_rgb_422;
- public boolean GL_APPLE_row_bytes;
- public boolean GL_APPLE_texture_range;
- public boolean GL_APPLE_vertex_array_object;
- public boolean GL_APPLE_vertex_array_range;
- public boolean GL_APPLE_vertex_program_evaluators;
- public boolean GL_APPLE_ycbcr_422;
- public boolean GL_ARB_ES2_compatibility;
- public boolean GL_ARB_ES3_compatibility;
- public boolean GL_ARB_arrays_of_arrays;
- public boolean GL_ARB_base_instance;
- public boolean GL_ARB_bindless_texture;
- public boolean GL_ARB_blend_func_extended;
- public boolean GL_ARB_buffer_storage;
- public boolean GL_ARB_cl_event;
- public boolean GL_ARB_clear_buffer_object;
- public boolean GL_ARB_clear_texture;
- public boolean GL_ARB_color_buffer_float;
- public boolean GL_ARB_compatibility;
- public boolean GL_ARB_compressed_texture_pixel_storage;
- public boolean GL_ARB_compute_shader;
- public boolean GL_ARB_compute_variable_group_size;
- public boolean GL_ARB_conservative_depth;
- public boolean GL_ARB_copy_buffer;
- public boolean GL_ARB_copy_image;
- public boolean GL_ARB_debug_output;
- public boolean GL_ARB_depth_buffer_float;
- public boolean GL_ARB_depth_clamp;
- public boolean GL_ARB_depth_texture;
- public boolean GL_ARB_draw_buffers;
- public boolean GL_ARB_draw_buffers_blend;
- public boolean GL_ARB_draw_elements_base_vertex;
- public boolean GL_ARB_draw_indirect;
- public boolean GL_ARB_draw_instanced;
- public boolean GL_ARB_enhanced_layouts;
- public boolean GL_ARB_explicit_attrib_location;
- public boolean GL_ARB_explicit_uniform_location;
- public boolean GL_ARB_fragment_coord_conventions;
- public boolean GL_ARB_fragment_layer_viewport;
- public boolean GL_ARB_fragment_program;
- public boolean GL_ARB_fragment_program_shadow;
- public boolean GL_ARB_fragment_shader;
- public boolean GL_ARB_framebuffer_no_attachments;
- public boolean GL_ARB_framebuffer_object;
- public boolean GL_ARB_framebuffer_sRGB;
- public boolean GL_ARB_geometry_shader4;
- public boolean GL_ARB_get_program_binary;
- public boolean GL_ARB_gpu_shader5;
- public boolean GL_ARB_gpu_shader_fp64;
- public boolean GL_ARB_half_float_pixel;
- public boolean GL_ARB_half_float_vertex;
- public boolean GL_ARB_imaging;
- public boolean GL_ARB_indirect_parameters;
- public boolean GL_ARB_instanced_arrays;
- public boolean GL_ARB_internalformat_query;
- public boolean GL_ARB_internalformat_query2;
- public boolean GL_ARB_invalidate_subdata;
- public boolean GL_ARB_map_buffer_alignment;
- public boolean GL_ARB_map_buffer_range;
- public boolean GL_ARB_matrix_palette;
- public boolean GL_ARB_multi_bind;
- public boolean GL_ARB_multi_draw_indirect;
- public boolean GL_ARB_multisample;
- public boolean GL_ARB_multitexture;
- public boolean GL_ARB_occlusion_query;
- public boolean GL_ARB_occlusion_query2;
- public boolean GL_ARB_pixel_buffer_object;
- public boolean GL_ARB_point_parameters;
- public boolean GL_ARB_point_sprite;
- public boolean GL_ARB_program_interface_query;
- public boolean GL_ARB_provoking_vertex;
- public boolean GL_ARB_query_buffer_object;
- public boolean GL_ARB_robust_buffer_access_behavior;
- public boolean GL_ARB_robustness;
- public boolean GL_ARB_robustness_isolation;
- public boolean GL_ARB_sample_shading;
- public boolean GL_ARB_sampler_objects;
- public boolean GL_ARB_seamless_cube_map;
- public boolean GL_ARB_seamless_cubemap_per_texture;
- public boolean GL_ARB_separate_shader_objects;
- public boolean GL_ARB_shader_atomic_counters;
- public boolean GL_ARB_shader_bit_encoding;
- public boolean GL_ARB_shader_draw_parameters;
- public boolean GL_ARB_shader_group_vote;
- public boolean GL_ARB_shader_image_load_store;
- public boolean GL_ARB_shader_image_size;
- public boolean GL_ARB_shader_objects;
- public boolean GL_ARB_shader_precision;
- public boolean GL_ARB_shader_stencil_export;
- public boolean GL_ARB_shader_storage_buffer_object;
- public boolean GL_ARB_shader_subroutine;
- public boolean GL_ARB_shader_texture_lod;
- public boolean GL_ARB_shading_language_100;
- public boolean GL_ARB_shading_language_420pack;
- public boolean GL_ARB_shading_language_include;
- public boolean GL_ARB_shading_language_packing;
- public boolean GL_ARB_shadow;
- public boolean GL_ARB_shadow_ambient;
- public boolean GL_ARB_sparse_texture;
- public boolean GL_ARB_stencil_texturing;
- public boolean GL_ARB_sync;
- public boolean GL_ARB_tessellation_shader;
- public boolean GL_ARB_texture_border_clamp;
- public boolean GL_ARB_texture_buffer_object;
- public boolean GL_ARB_texture_buffer_object_rgb32;
- public boolean GL_ARB_texture_buffer_range;
- public boolean GL_ARB_texture_compression;
- public boolean GL_ARB_texture_compression_bptc;
- public boolean GL_ARB_texture_compression_rgtc;
- public boolean GL_ARB_texture_cube_map;
- public boolean GL_ARB_texture_cube_map_array;
- public boolean GL_ARB_texture_env_add;
- public boolean GL_ARB_texture_env_combine;
- public boolean GL_ARB_texture_env_crossbar;
- public boolean GL_ARB_texture_env_dot3;
- public boolean GL_ARB_texture_float;;
- public boolean GL_ARB_texture_gather;
- public boolean GL_ARB_texture_mirror_clamp_to_edge;
- public boolean GL_ARB_texture_mirrored_repeat;
- public boolean GL_ARB_texture_multisample;
- public boolean GL_ARB_texture_non_power_of_two;
- public boolean GL_ARB_texture_query_levels;
- public boolean GL_ARB_texture_query_lod;
- public boolean GL_ARB_texture_rectangle;
- public boolean GL_ARB_texture_rg;
- public boolean GL_ARB_texture_rgb10_a2ui;
- public boolean GL_ARB_texture_stencil8;
- public boolean GL_ARB_texture_storage;
- public boolean GL_ARB_texture_storage_multisample;
- public boolean GL_ARB_texture_swizzle;
- public boolean GL_ARB_texture_view;
- public boolean GL_ARB_timer_query;
- public boolean GL_ARB_transform_feedback2;
- public boolean GL_ARB_transform_feedback3;
- public boolean GL_ARB_transform_feedback_instanced;
- public boolean GL_ARB_transpose_matrix;
- public boolean GL_ARB_uniform_buffer_object;
- public boolean GL_ARB_vertex_array_bgra;
- public boolean GL_ARB_vertex_array_object;
- public boolean GL_ARB_vertex_attrib_64bit;
- public boolean GL_ARB_vertex_attrib_binding;
- public boolean GL_ARB_vertex_blend;
- public boolean GL_ARB_vertex_buffer_object;
- public boolean GL_ARB_vertex_program;
- public boolean GL_ARB_vertex_shader;
- public boolean GL_ARB_vertex_type_10f_11f_11f_rev;
- public boolean GL_ARB_vertex_type_2_10_10_10_rev;
- public boolean GL_ARB_viewport_array;
- public boolean GL_ARB_window_pos;
- public boolean GL_ATI_draw_buffers;
- public boolean GL_ATI_element_array;
- public boolean GL_ATI_envmap_bumpmap;
- public boolean GL_ATI_fragment_shader;
- public boolean GL_ATI_map_object_buffer;
- public boolean GL_ATI_meminfo;
- public boolean GL_ATI_pn_triangles;
- public boolean GL_ATI_separate_stencil;
- public boolean GL_ATI_shader_texture_lod;
- public boolean GL_ATI_text_fragment_shader;
- public boolean GL_ATI_texture_compression_3dc;
- public boolean GL_ATI_texture_env_combine3;
- public boolean GL_ATI_texture_float;
- public boolean GL_ATI_texture_mirror_once;
- public boolean GL_ATI_vertex_array_object;
- public boolean GL_ATI_vertex_attrib_array_object;
- public boolean GL_ATI_vertex_streams;
- public boolean GL_EXT_abgr;
- public boolean GL_EXT_bgra;
- public boolean GL_EXT_bindable_uniform;
- public boolean GL_EXT_blend_color;
- public boolean GL_EXT_blend_equation_separate;
- public boolean GL_EXT_blend_func_separate;
- public boolean GL_EXT_blend_minmax;
- public boolean GL_EXT_blend_subtract;
- public boolean GL_EXT_Cg_shader;
- public boolean GL_EXT_compiled_vertex_array;
- public boolean GL_EXT_depth_bounds_test;
- public boolean GL_EXT_direct_state_access;
- public boolean GL_EXT_draw_buffers2;
- public boolean GL_EXT_draw_instanced;
- public boolean GL_EXT_draw_range_elements;
- public boolean GL_EXT_fog_coord;
- public boolean GL_EXT_framebuffer_blit;
- public boolean GL_EXT_framebuffer_multisample;
- public boolean GL_EXT_framebuffer_multisample_blit_scaled;
- public boolean GL_EXT_framebuffer_object;
- public boolean GL_EXT_framebuffer_sRGB;
- public boolean GL_EXT_geometry_shader4;
- public boolean GL_EXT_gpu_program_parameters;
- public boolean GL_EXT_gpu_shader4;
- public boolean GL_EXT_multi_draw_arrays;
- public boolean GL_EXT_packed_depth_stencil;
- public boolean GL_EXT_packed_float;
- public boolean GL_EXT_packed_pixels;
- public boolean GL_EXT_paletted_texture;
- public boolean GL_EXT_pixel_buffer_object;
- public boolean GL_EXT_point_parameters;
- public boolean GL_EXT_provoking_vertex;
- public boolean GL_EXT_rescale_normal;
- public boolean GL_EXT_secondary_color;
- public boolean GL_EXT_separate_shader_objects;
- public boolean GL_EXT_separate_specular_color;
- public boolean GL_EXT_shader_image_load_store;
- public boolean GL_EXT_shadow_funcs;
- public boolean GL_EXT_shared_texture_palette;
- public boolean GL_EXT_stencil_clear_tag;
- public boolean GL_EXT_stencil_two_side;
- public boolean GL_EXT_stencil_wrap;
- public boolean GL_EXT_texture_3d;
- public boolean GL_EXT_texture_array;
- public boolean GL_EXT_texture_buffer_object;
- public boolean GL_EXT_texture_compression_latc;
- public boolean GL_EXT_texture_compression_rgtc;
- public boolean GL_EXT_texture_compression_s3tc;
- public boolean GL_EXT_texture_env_combine;
- public boolean GL_EXT_texture_env_dot3;
- public boolean GL_EXT_texture_filter_anisotropic;
- public boolean GL_EXT_texture_integer;
- public boolean GL_EXT_texture_lod_bias;
- public boolean GL_EXT_texture_mirror_clamp;
- public boolean GL_EXT_texture_rectangle;
- public boolean GL_EXT_texture_sRGB;
- public boolean GL_EXT_texture_sRGB_decode;
- public boolean GL_EXT_texture_shared_exponent;
- public boolean GL_EXT_texture_snorm;
- public boolean GL_EXT_texture_swizzle;
- public boolean GL_EXT_timer_query;
- public boolean GL_EXT_transform_feedback;
- public boolean GL_EXT_vertex_array_bgra;
- public boolean GL_EXT_vertex_attrib_64bit;
- public boolean GL_EXT_vertex_shader;
- public boolean GL_EXT_vertex_weighting;
- public boolean OpenGL11;
- public boolean OpenGL12;
- public boolean OpenGL13;
- public boolean OpenGL14;
- public boolean OpenGL15;
- public boolean OpenGL20;
- public boolean OpenGL21;
- public boolean OpenGL30;
- public boolean OpenGL31;
- public boolean OpenGL32;
- public boolean OpenGL33;
- public boolean OpenGL40;
- public boolean OpenGL41;
- public boolean OpenGL42;
- public boolean OpenGL43;
- public boolean OpenGL44;
- public boolean GL_GREMEDY_frame_terminator;
- public boolean GL_GREMEDY_string_marker;
- public boolean GL_HP_occlusion_test;
- public boolean GL_IBM_rasterpos_clip;
- public boolean GL_INTEL_map_texture;
- public boolean GL_KHR_debug;
- public boolean GL_KHR_texture_compression_astc_ldr;
- public boolean GL_NVX_gpu_memory_info;
- public boolean GL_NV_bindless_multi_draw_indirect;
- public boolean GL_NV_bindless_texture;
- public boolean GL_NV_blend_equation_advanced;
- public boolean GL_NV_blend_square;
- public boolean GL_NV_compute_program5;
- public boolean GL_NV_conditional_render;
- public boolean GL_NV_copy_depth_to_color;
- public boolean GL_NV_copy_image;
- public boolean GL_NV_deep_texture3D;
- public boolean GL_NV_depth_buffer_float;
- public boolean GL_NV_depth_clamp;
- public boolean GL_NV_draw_texture;
- public boolean GL_NV_evaluators;
- public boolean GL_NV_explicit_multisample;
- public boolean GL_NV_fence;
- public boolean GL_NV_float_buffer;
- public boolean GL_NV_fog_distance;
- public boolean GL_NV_fragment_program;
- public boolean GL_NV_fragment_program2;
- public boolean GL_NV_fragment_program4;
- public boolean GL_NV_fragment_program_option;
- public boolean GL_NV_framebuffer_multisample_coverage;
- public boolean GL_NV_geometry_program4;
- public boolean GL_NV_geometry_shader4;
- public boolean GL_NV_gpu_program4;
- public boolean GL_NV_gpu_program5;
- public boolean GL_NV_gpu_program5_mem_extended;
- public boolean GL_NV_gpu_shader5;
- public boolean GL_NV_half_float;
- public boolean GL_NV_light_max_exponent;
- public boolean GL_NV_multisample_coverage;
- public boolean GL_NV_multisample_filter_hint;
- public boolean GL_NV_occlusion_query;
- public boolean GL_NV_packed_depth_stencil;
- public boolean GL_NV_parameter_buffer_object;
- public boolean GL_NV_parameter_buffer_object2;
- public boolean GL_NV_path_rendering;
- public boolean GL_NV_pixel_data_range;
- public boolean GL_NV_point_sprite;
- public boolean GL_NV_present_video;
- public boolean GL_NV_primitive_restart;
- public boolean GL_NV_register_combiners;
- public boolean GL_NV_register_combiners2;
- public boolean GL_NV_shader_atomic_counters;
- public boolean GL_NV_shader_atomic_float;
- public boolean GL_NV_shader_buffer_load;
- public boolean GL_NV_shader_buffer_store;
- public boolean GL_NV_shader_storage_buffer_object;
- public boolean GL_NV_tessellation_program5;
- public boolean GL_NV_texgen_reflection;
- public boolean GL_NV_texture_barrier;
- public boolean GL_NV_texture_compression_vtc;
- public boolean GL_NV_texture_env_combine4;
- public boolean GL_NV_texture_expand_normal;
- public boolean GL_NV_texture_multisample;
- public boolean GL_NV_texture_rectangle;
- public boolean GL_NV_texture_shader;
- public boolean GL_NV_texture_shader2;
- public boolean GL_NV_texture_shader3;
- public boolean GL_NV_transform_feedback;
- public boolean GL_NV_transform_feedback2;
- public boolean GL_NV_vertex_array_range;
- public boolean GL_NV_vertex_array_range2;
- public boolean GL_NV_vertex_attrib_integer_64bit;
- public boolean GL_NV_vertex_buffer_unified_memory;
- public boolean GL_NV_vertex_program;
- public boolean GL_NV_vertex_program1_1;
- public boolean GL_NV_vertex_program2;
- public boolean GL_NV_vertex_program2_option;
- public boolean GL_NV_vertex_program3;
- public boolean GL_NV_vertex_program4;
- public boolean GL_NV_video_capture;
- public boolean GL_SGIS_generate_mipmap;
- public boolean GL_SGIS_texture_lod;
- public boolean GL_SUN_slice_accum;
-
- public static void main(String[] arg) {
- System.out.println("START!");
- new ContextCapabilities();
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextGL.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextGL.java
deleted file mode 100644
index d3bc0e1cf..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ContextGL.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-import org.lwjgl.LWJGLUtil;
-import org.lwjgl.PointerBuffer;
-import org.lwjgl.Sys;
-
-import org.lwjgl.glfw.GLFW;
-
-import java.nio.ByteBuffer;
-import java.nio.IntBuffer;
-
-import static org.lwjgl.opengl.GL11.*;
-
-/**
- *
- * Context encapsulates an OpenGL context.
- *
- *
- * This class is thread-safe.
- *
- * @author elias_naur
- * @version $Revision$
- * $Id$
- */
-final class ContextGL implements Context {
-
- /** The platform specific implementation of context methods */
- // private static final ContextImplementation implementation;
-
- /** The current Context */
- private static final ThreadLocal current_context_local = new ThreadLocal();
-
- /** Handle to the native GL rendering context */
- //private final ByteBuffer handle;
- private final long handle;
- private final PeerInfo peer_info;
-
- private final ContextAttribs contextAttribs;
- private final boolean forwardCompatible;
-
- /** Whether the context has been destroyed */
- private boolean destroyed;
-
- private boolean destroy_requested;
-
- /** The thread that has this context current, or null. */
- private Thread thread;
-
- private boolean isCurrent;
-
- static {
- Sys.initialize();
- // implementation = createImplementation();
- }
-
- PeerInfo getPeerInfo() {
- return peer_info;
- }
-
- ContextAttribs getContextAttribs() {
- return contextAttribs;
- }
-
- static ContextGL getCurrentContext() {
- return current_context_local.get();
- }
- ContextGL(long handle) {
- this.peer_info = null;
- this.contextAttribs = null;
- this.forwardCompatible = false;
- this.handle = handle;
- System.out.println("LWJGLX: ready-handle context created");
- }
- /** Create a context with the specified peer info and shared context */
- ContextGL(PeerInfo peer_info, ContextAttribs attribs, ContextGL shared_context) throws LWJGLException {
- ContextGL context_lock = shared_context != null ? shared_context : this;
- // If shared_context is not null, synchronize on it to make sure it is not deleted
- // while this context is created. Otherwise, simply synchronize on ourself to avoid NPE
- synchronized ( context_lock ) {
- if ( shared_context != null && shared_context.destroyed )
- throw new IllegalArgumentException("Shared context is destroyed");
- // GLContext.loadOpenGLLibrary();
- // try {
- this.peer_info = peer_info;
- this.contextAttribs = attribs;
-/*
- IntBuffer attribList;
- if ( attribs != null ) {
- attribList = attribs.getAttribList();
- forwardCompatible = attribs.isForwardCompatible();
- } else {
- attribList = null;
- forwardCompatible = false;
- }
-*/
-
- forwardCompatible = false;
- long share = 0;
- if(shared_context != null) {
- share = shared_context.handle;
- }
- this.handle = GLFW.nglfwCreateContext(share);
- // implementation.create(peer_info, attribList, shared_context != null ? shared_context.handle : null);
- /* } catch (LWJGLException e) {
- // GLContext.unloadOpenGLLibrary();
- throw e;
- } */
- }
- }
-
- /** Release the current context (if any). After this call, no context is current. */
- public void releaseCurrent() throws LWJGLException {
- ContextGL current_context = getCurrentContext();
- if ( current_context != null ) {
- GLFW.glfwMakeContextCurrent(0l);
- isCurrent = false;
- current_context_local.set(null);
- synchronized ( current_context ) {
- current_context.thread = null;
- current_context.checkDestroy();
- }
- }
- }
-
- /**
- * Release the context from its drawable. This is necessary on some platforms,
- * like Mac OS X, where binding the context to a drawable and binding the context
- * for rendering are two distinct actions and where calling releaseDrawable
- * on every releaseCurrentContext results in artifacts.
- */
- public synchronized void releaseDrawable() throws LWJGLException {
- if ( destroyed )
- throw new IllegalStateException("Context is destroyed");
- // implementation.releaseDrawable(getHandle());
- }
-
- /** Update the context. Should be called whenever it's drawable is moved or resized */
- public synchronized void update() {
- if ( destroyed )
- throw new IllegalStateException("Context is destroyed");
- // implementation.update(getHandle());
- }
-
- /** Swap the buffers on the current context. Only valid for double-buffered contexts */
- public static void swapBuffers() throws LWJGLException {
- Display.swapBuffers();
- }
-
- private boolean canAccess() {
- return thread == null || Thread.currentThread() == thread;
- }
-
- private void checkAccess() {
- if ( !canAccess() )
- throw new IllegalStateException("From thread " + Thread.currentThread() + ": " + thread + " already has the context current");
- }
-
- /** Make the context current */
- public synchronized void makeCurrent() throws LWJGLException {
- checkAccess();
- if ( destroyed )
- throw new IllegalStateException("Context is destroyed");
- thread = Thread.currentThread();
- current_context_local.set(this);
- GLFW.glfwMakeContextCurrent(handle);
- GLContext.initCapabilities();
- isCurrent = true;
- }
-
- ByteBuffer getHandle() {
- return null;
- }
-
- /** Query whether the context is current */
- public synchronized boolean isCurrent() throws LWJGLException {
- if ( destroyed )
- throw new IllegalStateException("Context is destroyed");
- return isCurrent;
- }
-
- private void checkDestroy() {
- if ( !destroyed && destroy_requested ) {
- try {
- releaseDrawable();
- // implementation.destroy(peer_info, handle);
- // CallbackUtil.unregisterCallbacks(this);
- destroyed = true;
- thread = null;
- // GLContext.unloadOpenGLLibrary();
-
- Display.destroy();
- } catch (LWJGLException e) {
- LWJGLUtil.log("Exception occurred while destroying context: " + e);
- }
- }
- }
-
- /**
- * Set the buffer swap interval. This call is a best-attempt at changing
- * the monitor swap interval, which is the minimum periodicity of color buffer swaps,
- * measured in video frame periods, and is not guaranteed to be successful.
- *
- * A video frame period is the time required to display a full frame of video data.
- */
- public static void setSwapInterval(int value) {
- GLFW.glfwSwapInterval(value);
- }
-
- /**
- * Destroy the context. This method behaves the same as destroy() with the extra
- * requirement that the context must be either current to the current thread or not
- * current at all.
- */
- public synchronized void forceDestroy() throws LWJGLException {
- checkAccess();
- destroy();
- }
-
- /**
- * Request destruction of the Context. If the context is current, no context will be current after this call.
- * The context is destroyed when no thread has it current.
- */
- public synchronized void destroy() throws LWJGLException {
- if ( destroyed )
- return;
- destroy_requested = true;
- boolean was_current = isCurrent();
- int error = GL_NO_ERROR;
- if ( was_current ) {
- if ( GLContext.getCapabilities() != null && GLContext.getCapabilities().OpenGL11 )
- error = glGetError();
- releaseCurrent();
- }
- checkDestroy();
- if ( was_current && error != GL_NO_ERROR )
- throw new OpenGLException(error);
- }
-
- public synchronized void setCLSharingProperties(final PointerBuffer properties) throws LWJGLException {
- final ByteBuffer peer_handle = peer_info.lockAndGetHandle();
- try {
- /*
- switch ( LWJGLUtil.getPlatform() ) {
- case LWJGLUtil.PLATFORM_WINDOWS:
- final WindowsContextImplementation implWindows = (WindowsContextImplementation)implementation;
- properties.put(KHRGLSharing.CL_GL_CONTEXT_KHR).put(implWindows.getHGLRC(handle));
- properties.put(KHRGLSharing.CL_WGL_HDC_KHR).put(implWindows.getHDC(peer_handle));
- break;
- case LWJGLUtil.PLATFORM_LINUX:
- final LinuxContextImplementation implLinux = (LinuxContextImplementation)implementation;
- properties.put(KHRGLSharing.CL_GL_CONTEXT_KHR).put(implLinux.getGLXContext(handle));
- properties.put(KHRGLSharing.CL_GLX_DISPLAY_KHR).put(implLinux.getDisplay(peer_handle));
- break;
- case LWJGLUtil.PLATFORM_MACOSX:
- if (LWJGLUtil.isMacOSXEqualsOrBetterThan(10, 6)) { // only supported on OS X 10.6+
- // http://oscarbg.blogspot.com/2009/10/about-opencl-opengl-interop.html
- final MacOSXContextImplementation implMacOSX = (MacOSXContextImplementation)implementation;
- final long CGLShareGroup = implMacOSX.getCGLShareGroup(handle);
- properties.put(APPLEGLSharing.CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE).put(CGLShareGroup);
- break;
- }
- default:
- throw new UnsupportedOperationException("CL/GL context sharing is not supported on this platform.");
- }
- */
- } finally {
- // peer_info.unlock();
- }
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Display.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Display.java
deleted file mode 100644
index 293b0f5fe..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Display.java
+++ /dev/null
@@ -1,1113 +0,0 @@
-package org.lwjgl.opengl;
-
-import static org.lwjgl.opengl.GL11.GL_FALSE;
-import static org.lwjgl.opengl.GL11.GL_TRUE;
-import static org.lwjgl.system.MemoryUtil.NULL;
-import static org.lwjgl.glfw.GLFW.*;
-
-import java.awt.Canvas;
-import java.nio.ByteBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.glfw.*;
-import org.lwjgl.LWJGLUtil;
-import org.lwjgl.input.GLFWInputImplementation;
-import org.lwjgl.input.KeyCodes;
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.system.MemoryUtil;
-import org.lwjgl.LWJGLException;
-import org.lwjgl.Sys;
-import org.lwjgl.input.Cursor;
-import org.lwjgl.input.Keyboard;
-import org.lwjgl.input.Mouse;
-
-public class Display {
-
- private static String windowTitle = "Game";
-
- private static org.lwjgl.opengl.GLContext context;
-
- private static DisplayImplementation display_impl;
-
- private static boolean displayCreated = false;
- private static boolean displayFocused = true;
- private static boolean displayVisible = true;
- private static boolean displayDirty = false;
- private static boolean displayResizable = false;
-
- private static DisplayMode mode, desktopDisplayMode;
-
- private static int latestEventKey = 0;
-
- private static int displayX = -1;
- private static int displayY = -1;
-
- private static boolean displayResized = false;
- private static int displayWidth = 0;
- private static int displayHeight = 0;
- private static int displayFramebufferWidth = 0;
- private static int displayFramebufferHeight = 0;
-
- private static boolean latestResized = false;
- private static int latestWidth = 0;
- private static int latestHeight = 0;
-
- private static boolean vsyncEnabled = false;
- private static boolean displayFullscreen = true;
- private static float fps;
-
- private static boolean window_created;
-
- /** The Drawable instance that tracks the current Display context */
- private static volatile DrawableLWJGL drawable = null;
-
- private static Canvas parent;
-
- private static GLFWImage.Buffer icons;
-
- private static int swap_interval;
-
- static {
- Sys.initialize(); // init using dummy sys method
-
- long monitor = glfwGetPrimaryMonitor();
- GLFWVidMode vidmode = glfwGetVideoMode(monitor);
-
- int monitorWidth = displayWidth = displayFramebufferWidth = vidmode.width();
- int monitorHeight = displayHeight = displayFramebufferHeight = vidmode.height();
- int monitorBitPerPixel = vidmode.redBits() + vidmode.greenBits() + vidmode.blueBits();
- int monitorRefreshRate = vidmode.refreshRate();
-
- mode = desktopDisplayMode = new DisplayMode(monitorWidth, monitorHeight, monitorBitPerPixel, monitorRefreshRate);
- LWJGLUtil.log("Initial mode: " + desktopDisplayMode);
- if("opengles2".equals(System.getenv("POJAV_RENDERER"))) GLContext.initCapabilities();
- }
-
- public static void setSwapInterval(int value) {
- synchronized ( GlobalLock.lock ) {
- swap_interval = value;
- if ( isCreated() ) {
- drawable.setSwapInterval(swap_interval);
-
- }
- }
- }
-
- private static void makeCurrentAndSetSwapInterval() throws LWJGLException {
- makeCurrent();
- try {
- drawable.checkGLError();
- } catch (OpenGLException e) {
- LWJGLUtil.log("OpenGL error during context creation: " + e.getMessage());
- }
- setSwapInterval(swap_interval);
- }
-
- private static void initContext() {
- drawable.initContext(0, 0, 0);
- update();
- }
-
- private static void initControls() {
- // Automatically create mouse, keyboard and controller
- if ( true ) {
- if ( !Mouse.isCreated() ) {
- try {
- Mouse.create();
- } catch (LWJGLException e) {
- if ( LWJGLUtil.DEBUG ) {
- e.printStackTrace(System.err);
- } else {
- LWJGLUtil.log("Failed to create Mouse: " + e);
- }
- }
- }
- if ( !Keyboard.isCreated() ) {
- try {
- Keyboard.create();
- } catch (LWJGLException e) {
- if ( LWJGLUtil.DEBUG ) {
- e.printStackTrace(System.err);
- } else {
- LWJGLUtil.log("Failed to create Keyboard: " + e);
- }
- }
- }
- }
- }
-
- private static void releaseDrawable() {
- try {
- Context context = drawable.getContext();
- if ( context != null && context.isCurrent() ) {
- context.releaseCurrent();
- context.releaseDrawable();
- }
- } catch (LWJGLException e) {
- LWJGLUtil.log("Exception occurred while trying to release context: " + e);
- }
- }
-
- private static void destroyWindow() {
- if ( !window_created ) {
- return;
- }
- releaseDrawable();
-
- // Automatically destroy keyboard & mouse
- if ( Mouse.isCreated() ) {
- Mouse.destroy();
- }
- if ( Keyboard.isCreated() ) {
- Keyboard.destroy();
- }
- display_impl.destroyWindow();
- window_created = false;
- }
-
- private static void reset() {
- display_impl.resetDisplayMode();
- }
-
- private static void createWindow() throws LWJGLException {
- if ( window_created ) {
- return;
- }
- DisplayMode mode = Display.getDisplayMode();
- display_impl.createWindow(drawable, mode, null, 0, 0 /* getWindowX(), getWindowY() */);
- window_created = true;
-
- displayWidth = mode.getWidth();
- displayHeight = mode.getHeight();
-
- // setTitle(title);
- initControls();
-
- // set cached window icon if exists
- /*
- if ( cached_icons != null ) {
- setIcon(cached_icons);
- } else {
-
- }
- */
-
- setIcon(new ByteBuffer[] { LWJGLUtil.LWJGLIcon32x32, LWJGLUtil.LWJGLIcon16x16 });
- }
-
- public static void create(PixelFormat pixel_format, Drawable shared_drawable) throws LWJGLException {
- // System.out.println("TODO: Implement Display.create(PixelFormat,
- // Drawable)"); // TODO
- create(pixel_format);
-
- try {
- drawable.setPixelFormat(pixel_format, null);
- try {
- createWindow();
- try {
- ((DrawableGL) drawable).context = new ContextGL(((DrawableGL) drawable).peer_info, null /* attribs */, shared_drawable != null ? ((DrawableGL)shared_drawable).getContext() : null);
- try {
- makeCurrentAndSetSwapInterval();
- initContext();
- } catch (LWJGLException e) {
- //drawable.destroy();
- throw e;
- }
- } catch (LWJGLException e) {
- destroyWindow();
- throw e;
- }
- } catch (LWJGLException e) {
- drawable.destroy();
- throw e;
- }
- } catch (LWJGLException e) {
- display_impl.resetDisplayMode();
- throw e;
- }
- }
-
- public static void create(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
- // System.out.println("TODO: Implement Display.create(PixelFormat,
- // ContextAttribs)"); // TODO
- create(pixel_format);
- }
-
- public static void create(PixelFormat format) throws LWJGLException {
- glfwWindowHint(GLFW_ACCUM_ALPHA_BITS, format.getAccumulationBitsPerPixel());
- glfwWindowHint(GLFW_ALPHA_BITS, format.getAlphaBits());
- glfwWindowHint(GLFW_AUX_BUFFERS, format.getAuxBuffers());
- glfwWindowHint(GLFW_DEPTH_BITS, format.getDepthBits());
- glfwWindowHint(GLFW_SAMPLES, format.getSamples());
- glfwWindowHint(GLFW_STENCIL_BITS, format.getStencilBits());
- create();
- }
-
- private static boolean isCreated = false;
- public static void create() throws LWJGLException {
- if (isCreated) return;
- else isCreated = true;
-
- if (Window.handle != MemoryUtil.NULL)
- glfwDestroyWindow(Window.handle);
-
- long monitor = glfwGetPrimaryMonitor();
- GLFWVidMode vidmode = glfwGetVideoMode(monitor);
-
- int monitorWidth = vidmode.width();
- int monitorHeight = vidmode.height();
- int monitorBitPerPixel = vidmode.redBits() + vidmode.greenBits() + vidmode.blueBits();
- int monitorRefreshRate = vidmode.refreshRate();
-
- desktopDisplayMode = new DisplayMode(monitorWidth, monitorHeight, monitorBitPerPixel, monitorRefreshRate);
-
- glfwDefaultWindowHints();
- glfwWindowHint(GLFW_VISIBLE, GL_FALSE);
- glfwWindowHint(GLFW_RESIZABLE, displayResizable ? GL_TRUE : GL_FALSE);
- glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
-
- Window.handle = glfwCreateWindow(mode.getWidth(), mode.getHeight(), windowTitle, NULL, NULL);
- if (Window.handle == NULL)
- throw new LWJGLException("Failed to create Display window");
-
- Window.keyCallback = new GLFWKeyCallback() {
- @Override
- public void invoke(long window, int key, int scancode, int action, int mods) {
- latestEventKey = key;
-
- // if (action == GLFW_RELEASE || action == GLFW.GLFW_PRESS) {
- // Keyboard.addKeyEvent(key, action == GLFW.GLFW_PRESS ? true :
- // false);
- // }
-
- GLFWInputImplementation.singleton.putKeyboardEvent(KeyCodes.toLwjglKey(key),(byte)action,0,Sys.getNanoTime(),false);
- }
- };
-
- Window.charCallback = new GLFWCharCallback() {
- @Override
- public void invoke(long window, int codepoint) {
- GLFWInputImplementation.singleton.putKeyboardEvent(0,(byte)1,(int)codepoint,Sys.getNanoTime(),false);
- //GLFWInputImplementation.singleton.putKeyboardEvent(0,(byte)0,(int)codepoint,Sys.getNanoTime(),false);
- }
- };
-
- Window.cursorEnterCallback = new GLFWCursorEnterCallback() {
- @Override
- public void invoke(long window, boolean entered) {
-
-
- }
- };
-
- Window.cursorPosCallback = new GLFWCursorPosCallback() {
- @Override
- public void invoke(long window, double xpos, double ypos) {
- GLFWInputImplementation.singleton.putMouseEventWithCoords((byte)-1, (byte)0,(int)xpos,(int)((ypos - Display.getHeight())*-1),0,Sys.getNanoTime());
- }
- };
-
- Window.mouseButtonCallback = new GLFWMouseButtonCallback() {
- @Override
- public void invoke(long window, int button, int action, int mods) {
- GLFWInputImplementation.singleton.putMouseEventWithCoords((byte)button,(byte)action,-1,-1,0,Sys.getNanoTime());
- }
- };
-
- Window.windowFocusCallback = new GLFWWindowFocusCallback() {
- @Override
- public void invoke(long window, boolean focused) {
- displayFocused = focused == true;
- }
- };
-
- Window.windowIconifyCallback = new GLFWWindowIconifyCallback() {
- @Override
- public void invoke(long window, boolean iconified) {
- displayVisible = iconified == false;
- }
- };
-
- Window.windowSizeCallback = new GLFWWindowSizeCallback() {
- @Override
- public void invoke(long window, int width, int height) {
- latestResized = true;
- latestWidth = width;
- latestHeight = height;
-
- //System.out.println("Window size callback");
- if(parent != null) parent.setSize(width, height);
- }
- };
-
- Window.windowPosCallback = new GLFWWindowPosCallback() {
- @Override
- public void invoke(long window, int xpos, int ypos) {
- displayX = xpos;
- displayY = ypos;
- }
- };
-
- Window.windowRefreshCallback = new GLFWWindowRefreshCallback() {
- @Override
- public void invoke(long window) {
- displayDirty = true;
- }
- };
-
- Window.framebufferSizeCallback = new GLFWFramebufferSizeCallback() {
- @Override
- public void invoke(long window, int width, int height) {
- displayFramebufferWidth = width;
- displayFramebufferHeight = height;
- }
- };
-
- Window.scrollCallback = new GLFWScrollCallback() {
- @Override
- public void invoke(long window, double xoffset, double yoffset) {
- // Mouse.addWheelEvent((int) (yoffset * 120));
- GLFWInputImplementation.singleton.putMouseEventWithCoords((byte)-1,(byte)0,-1,-1,(int)(yoffset*120),Sys.getNanoTime());
- }
- };
-
- Window.setCallbacks();
-
- displayWidth = mode.getWidth();
- displayHeight = mode.getHeight();
-
- IntBuffer fbw = BufferUtils.createIntBuffer(1);
- IntBuffer fbh = BufferUtils.createIntBuffer(1);
- glfwGetFramebufferSize(Window.handle, fbw, fbh);
- displayFramebufferWidth = fbw.get(0);
- displayFramebufferHeight = fbh.get(0);
-
- glfwSetWindowPos(Window.handle, (monitorWidth - mode.getWidth()) / 2, (monitorHeight - mode.getHeight()) / 2);
-
- if (displayX == -1) {
- displayX = (monitorWidth - mode.getWidth()) / 2;
- }
-
- if (displayY == -1) {
- displayY = (monitorHeight - mode.getHeight()) / 2;
- }
-
- //glfwMakeContextCurrent(Window.handle);
- final DrawableGL drawable = new DrawableGL() {
- public void destroy() {
- synchronized ( GlobalLock.lock ) {
- if ( !isCreated() )
- return;
-
- releaseDrawable();
- super.destroy();
- destroyWindow();
- // x = y = -1;
- // cached_icons = null;
- reset();
- }
- }
- };
- drawable.context = new ContextGL(Window.handle);
- drawable.context.makeCurrent();
- Display.drawable = drawable;
- context = org.lwjgl.opengl.GLContext.createFromCurrent();
-
- //glfwSwapInterval(0);
- glfwShowWindow(Window.handle);
- if(parent != null) parent.setSize(displayWidth, displayHeight);
- Mouse.create();
- Keyboard.create();
-
- // glfwSetWindowIcon(Window.handle, icons);
- display_impl = new DisplayImplementation() {
-
- @Override
- public void setNativeCursor(Object handle) throws LWJGLException {
- try {
- Mouse.setNativeCursor((Cursor) handle);
- } catch (ClassCastException e) {
- throw new LWJGLException("Handle is not an instance of cursor");
- }
- }
-
- @Override
- public void setCursorPosition(int x, int y) {
- Mouse.setCursorPosition(x, y);
- }
-
- @Override
- public void readMouse(ByteBuffer buffer) {
-
- }
-
- @Override
- public void readKeyboard(ByteBuffer buffer) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void pollMouse(IntBuffer coord_buffer, ByteBuffer buttons) {
-
- }
-
- @Override
- public void pollKeyboard(ByteBuffer keyDownBuffer) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public boolean isInsideWindow() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean hasWheel() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public void grabMouse(boolean grab) {
- Mouse.setGrabbed(grab);
- }
-
- @Override
- public int getNativeCursorCapabilities() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int getMinCursorSize() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int getMaxCursorSize() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int getButtonCount() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public void destroyMouse() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void destroyKeyboard() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void destroyCursor(Object cursor_handle) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void createMouse() throws LWJGLException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void createKeyboard() throws LWJGLException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Object createCursor(int width, int height, int xHotspot, int yHotspot, int numImages,
- IntBuffer images, IntBuffer delays) throws LWJGLException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public boolean wasResized() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public void update() {
- Display.update();
- }
-
- @Override
- public void switchDisplayMode(DisplayMode mode) throws LWJGLException {
- Display.setDisplayMode(mode);
- }
-
- @Override
- public void setTitle(String title) {
- windowTitle = title;
- }
-
- @Override
- public void setResizable(boolean resizable) {
- Display.setResizable(resizable);
- }
-
- @Override
- public void setPbufferAttrib(PeerInfo handle, int attrib, int value) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public int setIcon(ByteBuffer[] icons) {
- // TODO Auto-generated method stub
- Display.setIcon(icons);
- return 0;
- }
-
- @Override
- public void setGammaRamp(FloatBuffer gammaRamp) throws LWJGLException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void reshape(int x, int y, int width, int height) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void resetDisplayMode() {
- try {
- Display.setDisplayMode(desktopDisplayMode);
- } catch (LWJGLException e) {
- }
- }
-
- @Override
- public void releaseTexImageFromPbuffer(PeerInfo handle, int buffer) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public boolean isVisible() {
- // TODO Auto-generated method stub
- return Display.displayVisible;
- }
-
- @Override
- public boolean isDirty() {
- // TODO Auto-generated method stub
- return Display.displayDirty;
- }
-
- @Override
- public boolean isCloseRequested() {
- // TODO Auto-generated method stub
- return GLFW.glfwWindowShouldClose(Window.handle);
- }
-
- @Override
- public boolean isBufferLost(PeerInfo handle) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean isActive() {
- // TODO Auto-generated method stub
- return Display.displayFocused;
- }
-
- @Override
- public DisplayMode init() throws LWJGLException {
- // TODO Auto-generated method stub
- return desktopDisplayMode;
- }
-
- @Override
- public int getY() {
- // TODO Auto-generated method stub
- return Display.displayY;
- }
-
- @Override
- public int getX() {
- // TODO Auto-generated method stub
- return Display.displayX;
- }
-
- @Override
- public int getWidth() {
- // TODO Auto-generated method stub
- return Display.latestWidth;
- }
-
- @Override
- public String getVersion() {
- // TODO Auto-generated method stub
- return Sys.getVersion();
- }
-
- @Override
- public float getPixelScaleFactor() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int getPbufferCapabilities() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int getHeight() {
- // TODO Auto-generated method stub
- return Display.latestHeight;
- }
-
- @Override
- public int getGammaRampLength() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
- // TODO Auto-generated method stub
- return Display.getAvailableDisplayModes();
- }
-
- @Override
- public String getAdapter() {
- // TODO Auto-generated method stub
- return Display.getAdapter();
- }
-
- @Override
- public void destroyWindow() {
- Display.destroy();
- }
-
- @Override
- public void createWindow(DrawableLWJGL drawable, DisplayMode mode, Canvas parent, int x, int y)
- throws LWJGLException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
- IntBuffer pixelFormatCaps, IntBuffer pBufferAttribs) throws LWJGLException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void bindTexImageToPbuffer(PeerInfo handle, int buffer) {
- // TODO Auto-generated method stub
-
- }
- };
-
-
- displayCreated = true;
-
- }
-
- public static boolean isCreated() {
- return true;
- }
-
- public static boolean isActive() {
- return displayFocused;
- }
-
- public static boolean isVisible() {
- return displayVisible;
- }
-
- public static org.lwjgl.opengl.GLContext getContext() {
- return context;
- }
-
- public static void setLocation(int new_x, int new_y) {
- if (Window.handle == 0L) {
- Display.displayX = new_x;
- Display.displayY = new_y;
- } else {
- GLFW.glfwSetWindowPos(Window.handle, new_x, new_y);
- }
- }
-
- public static void setVSyncEnabled(boolean sync) {
- vsyncEnabled = sync;
- glfwSwapInterval(vsyncEnabled ? 1 : 0);
- }
-
- public static long getWindow() {
- return Window.handle;
- }
-
- public static void update() {
- update(true);
- }
-
- public static void update(boolean processMessages) {
- try {
- swapBuffers();
- displayDirty = false;
-
- } catch (LWJGLException e) {
- throw new RuntimeException(e);
- }
-
- if (processMessages)
- processMessages();
- }
-
- public static void processMessages() {
- glfwPollEvents();
- Keyboard.poll();
- Mouse.poll();
-
- if (latestResized) {
- latestResized = false;
- displayResized = true;
- displayWidth = latestWidth;
- displayHeight = latestHeight;
- } else {
- displayResized = false;
- }
- }
-
- /** Return the last parent set with setParent(). */
- public static Canvas getParent() {
- return parent;
- }
-
- /**
- * Set the parent of the Display. If parent is null, the Display will appear as a top level window.
- * If parent is not null, the Display is made a child of the parent. A parent's isDisplayable() must be true when
- * setParent() is called and remain true until setParent() is called again with
- * null or a different parent. This generally means that the parent component must remain added to it's parent container.
- * It is not advisable to call this method from an AWT thread, since the context will be made current on the thread
- * and it is difficult to predict which AWT thread will process any given AWT event.
- * While the Display is in fullscreen mode, the current parent will be ignored. Additionally, when a non null parent is specified,
- * the Dispaly will inherit the size of the parent, disregarding the currently set display mode.
- */
- public static void setParent(Canvas parent) throws LWJGLException {
- if ( Display.parent != parent ) {
- Display.parent = parent;
- /*
- if ( !isCreated() )
- return;
- destroyWindow();
- try {
- if ( isFullscreen() ) {
- switchDisplayMode();
- } else {
- display_impl.resetDisplayMode();
- }
- createWindow();
- makeCurrentAndSetSwapInterval();
- } catch (LWJGLException e) {
- drawable.destroy();
- display_impl.resetDisplayMode();
- throw e;
- }
- */
- }
- }
-
- public static void swapBuffers() throws LWJGLException {
- glfwSwapBuffers(Window.handle);
- }
-
- public static void destroy() {
- Window.releaseCallbacks();
- glfwDestroyWindow(Window.handle);
-
- displayCreated = false;
- }
-
- public static void setDisplayMode(DisplayMode dm) throws LWJGLException {
- mode = dm;
- if(isCreated) GLFW.glfwSetWindowSize(Window.handle, dm.getWidth(), dm.getHeight());
- }
-
- public static DisplayMode getDisplayMode() {
- return mode;
- }
-
- public static DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
- GLFWVidMode.Buffer modes = GLFW.glfwGetVideoModes(GLFW.glfwGetPrimaryMonitor());
-
- DisplayMode[] displayModes = new DisplayMode[modes.capacity()];
-
- for (int i = 0; i < modes.capacity(); i++) {
- modes.position(i);
-
- int w = modes.width();
- int h = modes.height();
- int b = modes.redBits() + modes.greenBits() + modes.blueBits();
- int r = modes.refreshRate();
-
- displayModes[i] = new DisplayMode(w, h, b, r);
- }
-
- return displayModes;
- }
-
- public static DisplayMode getDesktopDisplayMode() {
- long mon = GLFW.glfwGetPrimaryMonitor();
- GLFWVidMode mode = GLFW.glfwGetVideoMode(mon);
- return new DisplayMode(mode.width(), mode.height(), mode.redBits() + mode.greenBits() + mode.blueBits(),
- mode.refreshRate());
- }
-
- public static boolean wasResized() {
- return displayResized;
- }
-
- public static int getX() {
- return displayX;
- }
-
- public static int getY() {
- return displayY;
- }
-
- public static int getWidth() {
- return displayWidth;
- }
-
- public static int getHeight() {
- return displayHeight;
- }
-
- public static int getFramebufferWidth() {
- return displayFramebufferWidth;
- }
-
- public static int getFramebufferHeight() {
- return displayFramebufferHeight;
- }
-
- public static void setTitle(String title) {
- windowTitle = title;
- }
-
- public static String getTitle() { return windowTitle; }
-
- public static boolean isCloseRequested() {
- return glfwWindowShouldClose(Window.handle) == true;
- }
-
- public static boolean isDirty() {
- return displayDirty;
- }
-
- public static void setInitialBackground(float red, float green, float blue) {
- // System.out.println("TODO: Implement Display.setInitialBackground(float, float, float)");
-
- if (Window.handle != MemoryUtil.NULL) {
- GL11.glClearColor(red, green, blue, 1f);
- GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
- }
- }
-
- public static int setIcon(java.nio.ByteBuffer[] icons) {
- // TODO
- try {
- if (Window.handle == MemoryUtil.NULL) {
- Display.icons = new GLFWImage.Buffer(icons[1]);
- } else {
- glfwSetWindowIcon(Window.handle, new GLFWImage.Buffer(icons[0]));
- }
- } catch (Exception e) {
- LWJGLUtil.log("Couldn't set icon");
- e.printStackTrace();
- }
- return 0;
- }
-
- public static void setResizable(boolean resizable) {
- //displayResizable = resizable;
- if (displayResizable ^ resizable) {
- if (Window.handle != 0) {
- IntBuffer width = BufferUtils.createIntBuffer(1);
- IntBuffer height = BufferUtils.createIntBuffer(1);
- GLFW.glfwGetWindowSize(Window.handle, width, height);
- width.rewind();
- height.rewind();
-
- GLFW.glfwDefaultWindowHints();
- glfwWindowHint(GLFW_VISIBLE, displayVisible ? GL_TRUE : GL_FALSE);
- glfwWindowHint(GLFW_RESIZABLE, displayResizable ? GL_TRUE : GL_FALSE);
- glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
-
- GLFW.glfwSetWindowSize(Window.handle, width.get(), height.get());
- }
- }
- displayResizable = resizable;
- }
-
- public static boolean isResizable() {
- return displayResizable;
- }
-
- public static void setDisplayModeAndFullscreen(DisplayMode dm) throws LWJGLException {
- if(Window.handle != 0) {
- Display.mode = dm;
- GLFW.glfwSetWindowSize(Window.handle, dm.getWidth(), dm.getHeight());
- }
- }
-
- public static void setFullscreen(boolean fullscreen) throws LWJGLException {
- System.out.println("LWJGLX: switch fullscreen to " + fullscreen);
- if (isFullscreen() ^ fullscreen) {
- if (fullscreen && (!mode.isFullscreenCapable()))
- throw new LWJGLException("Display mode is not fullscreen capable");
- if (Window.handle != 0) {
- IntBuffer width = BufferUtils.createIntBuffer(1);
- IntBuffer height = BufferUtils.createIntBuffer(1);
- glfwGetWindowSize(Window.handle, width, height);
- width.rewind();
- height.rewind();
-
- glfwDefaultWindowHints();
- glfwWindowHint(GLFW_VISIBLE, displayVisible ? GL_TRUE : GL_FALSE);
- glfwWindowHint(GLFW_RESIZABLE, displayResizable ? GL_TRUE : GL_FALSE);
- glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
-
- GLFW.glfwSetWindowSize(Window.handle, width.get(), height.get());
- }
- }
- displayFullscreen = fullscreen;
- }
-
- public static boolean isFullscreen() {
- return displayFullscreen;
- }
-
- public static void releaseContext() throws LWJGLException {
- glfwMakeContextCurrent(0);
- }
-
- public static boolean isCurrent() throws LWJGLException {
- return glfwGetCurrentContext() == Window.handle;
- }
-
- public static void makeCurrent() throws LWJGLException {
- if (!isCurrent()) {
- // -glfwMakeContextCurrent(Window.handle);
- }
- }
-
- public static void setDisplayConfiguration(float gamma, float brightness, float contrast) throws LWJGLException {
- // ignore call, this is required for a1.1.1
- }
-
- public static java.lang.String getAdapter() {
- // TODO
- return "GeNotSupportedAdapter";
- }
-
- public static java.lang.String getVersion() {
- // TODO
- return "1.0 NOT SUPPORTED";
- }
-
- /**
- * An accurate sync method that will attempt to run at a constant frame
- * rate. It should be called once every frame.
- *
- * @param fps
- * - the desired frame rate, in frames per second
- */
- public static void sync(int fps) {
- /*if (vsyncEnabled)
- Sync.sync(60);
- else*/ Sync.sync(fps);
- }
-
- public static Drawable getDrawable() {
- return drawable;
- }
-
- static DisplayImplementation getImplementation() {
- return display_impl;
- }
-
- static class Window {
- static long handle;
-
- static GLFWKeyCallback keyCallback;
- static GLFWCharCallback charCallback;
- static GLFWCursorEnterCallback cursorEnterCallback;
- static GLFWCursorPosCallback cursorPosCallback;
- static GLFWMouseButtonCallback mouseButtonCallback;
- static GLFWWindowFocusCallback windowFocusCallback;
- static GLFWWindowIconifyCallback windowIconifyCallback;
- static GLFWWindowSizeCallback windowSizeCallback;
- static GLFWWindowPosCallback windowPosCallback;
- static GLFWWindowRefreshCallback windowRefreshCallback;
- static GLFWFramebufferSizeCallback framebufferSizeCallback;
- static GLFWScrollCallback scrollCallback;
-
- public static void setCallbacks() {
- glfwSetKeyCallback(handle, keyCallback);
- glfwSetCharCallback(handle, charCallback);
- glfwSetCursorEnterCallback(handle, cursorEnterCallback);
- glfwSetCursorPosCallback(handle, cursorPosCallback);
- glfwSetMouseButtonCallback(handle, mouseButtonCallback);
- glfwSetWindowFocusCallback(handle, windowFocusCallback);
- glfwSetWindowIconifyCallback(handle, windowIconifyCallback);
- glfwSetWindowSizeCallback(handle, windowSizeCallback);
- glfwSetWindowPosCallback(handle, windowPosCallback);
- glfwSetWindowRefreshCallback(handle, windowRefreshCallback);
- glfwSetFramebufferSizeCallback(handle, framebufferSizeCallback);
- glfwSetScrollCallback(handle, scrollCallback);
- }
-
- public static void releaseCallbacks() {
- Callbacks.glfwFreeCallbacks(handle);
- keyCallback = null;
- charCallback = null;
- cursorEnterCallback = null;
- cursorPosCallback = null;
- mouseButtonCallback = null;
- windowFocusCallback = null;
- windowIconifyCallback = null;
- windowSizeCallback = null;
- windowPosCallback = null;
- windowRefreshCallback = null;
- framebufferSizeCallback = null;
- scrollCallback = null;
- System.gc();
- }
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayImplementation.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayImplementation.java
deleted file mode 100644
index 7f76555f2..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayImplementation.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-/**
- * This is the Display implementation interface. Display delegates
- * to implementors of this interface. There is one DisplayImplementation
- * for each supported platform.
- * @author elias_naur
- */
-
-import java.nio.ByteBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-import java.awt.Canvas;
-
-import org.lwjgl.LWJGLException;
-
-interface DisplayImplementation extends InputImplementation {
-
- void createWindow(DrawableLWJGL drawable, DisplayMode mode, Canvas parent, int x, int y) throws LWJGLException;
-
- void destroyWindow();
-
- void switchDisplayMode(DisplayMode mode) throws LWJGLException;
-
- /**
- * Reset the display mode to whatever it was when LWJGL was initialized.
- * Fails silently.
- */
- void resetDisplayMode();
-
- /**
- * Return the length of the gamma ramp arrays. Returns 0 if gamma settings are
- * unsupported.
- *
- * @return the length of each gamma ramp array, or 0 if gamma settings are unsupported.
- */
- int getGammaRampLength();
-
- /**
- * Method to set the gamma ramp.
- */
- void setGammaRamp(FloatBuffer gammaRamp) throws LWJGLException;
-
- /**
- * Get the driver adapter string. This is a unique string describing the actual card's hardware, eg. "Geforce2", "PS2",
- * "Radeon9700". If the adapter cannot be determined, this function returns null.
- * @return a String
- */
- String getAdapter();
-
- /**
- * Get the driver version. This is a vendor/adapter specific version string. If the version cannot be determined,
- * this function returns null.
- * @return a String
- */
- String getVersion();
-
- /**
- * Initialize and return the current display mode.
- */
- DisplayMode init() throws LWJGLException;
-
- /**
- * Implementation of setTitle(). This will read the window's title member
- * and stash it in the native title of the window.
- */
- void setTitle(String title);
-
- boolean isCloseRequested();
-
- boolean isVisible();
- boolean isActive();
-
- boolean isDirty();
-
- /**
- * Create the native PeerInfo.
- * @throws LWJGLException
- */
- PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException;
-
-// void destroyPeerInfo();
-
- /**
- * Updates the windows internal state. This must be called at least once per video frame
- * to handle window close requests, moves, paints, etc.
- */
- void update();
-
- void reshape(int x, int y, int width, int height);
-
- /**
- * Method for getting displaymodes
- */
- DisplayMode[] getAvailableDisplayModes() throws LWJGLException;
-
- /* Pbuffer */
- int getPbufferCapabilities();
-
- /**
- * Method to test for buffer integrity
- */
- boolean isBufferLost(PeerInfo handle);
-
- /**
- * Method to create a Pbuffer
- */
- PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
- IntBuffer pixelFormatCaps,
- IntBuffer pBufferAttribs) throws LWJGLException;
-
- void setPbufferAttrib(PeerInfo handle, int attrib, int value);
-
- void bindTexImageToPbuffer(PeerInfo handle, int buffer);
-
- void releaseTexImageFromPbuffer(PeerInfo handle, int buffer);
-
- /**
- * Sets one or more icons for the Display.
- *
- * - On Windows you should supply at least one 16x16 icon and one 32x32.
- * - Linux (and similar platforms) expect one 32x32 icon.
- * - Mac OS X should be supplied one 128x128 icon
- *
- * The implementation will use the supplied ByteBuffers with image data in RGBA and perform any conversions nescesarry for the specific platform.
- *
- * @param icons Array of icons in RGBA mode
- * @return number of icons used.
- */
- int setIcon(ByteBuffer[] icons);
-
- /**
- * Enable or disable the Display window to be resized.
- *
- * @param resizable set to true to make the Display window resizable;
- * false to disable resizing on the Display window.
- */
- void setResizable(boolean resizable);
-
- /**
- * @return true if the Display window has been resized since this method was last called.
- */
- boolean wasResized();
-
- /**
- * @return this method will return the width of the Display window.
- */
- int getWidth();
-
- /**
- * @return this method will return the height of the Display window.
- */
- int getHeight();
-
- /**
- * @return this method will return the top-left x position of the Display window.
- */
- int getX();
-
- /**
- * @return this method will return the top-left y position of the Display window.
- */
- int getY();
-
- /**
- * @return this method will return the pixel scale factor of the Display window useful for high resolution modes.
- */
- float getPixelScaleFactor();
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayMode.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayMode.java
deleted file mode 100644
index 23bd84aca..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DisplayMode.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-/**
- *
- * This class encapsulates the properties for a given display mode.
- * This class is not instantiable, and is aquired from the Display.
- * getAvailableDisplayModes() method.
- *
- * @author cix_foo
- * @version $Revision$
- * $Id$
- */
-
-public final class DisplayMode {
-
- /** properties of the display mode */
- private final int width, height, bpp, freq;
- /** If true, this instance can be used for fullscreen modes */
- private final boolean fullscreen;
-
- /**
- * Construct a display mode. DisplayModes constructed through the
- * public constructor can only be used to specify the dimensions of
- * the Display in windowed mode. To get the available DisplayModes for
- * fullscreen modes, use Display.getAvailableDisplayModes().
- *
- * @param width The Display width.
- * @param height The Display height.
- * @see Display
- */
- public DisplayMode(int width, int height) {
- this(width, height, 0, 0, false);
- }
-
- DisplayMode(int width, int height, int bpp, int freq) {
- this(width, height, bpp, freq, true);
- }
-
- private DisplayMode(int width, int height, int bpp, int freq, boolean fullscreen) {
- this.width = width;
- this.height = height;
- this.bpp = bpp;
- this.freq = freq;
- this.fullscreen = fullscreen;
- }
-
- /** True if this instance can be used for fullscreen modes */
- public boolean isFullscreenCapable() {
- return fullscreen;
- }
-
- public int getWidth() {
- return width;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getBitsPerPixel() {
- return bpp;
- }
-
- public int getFrequency() {
- return freq;
- }
-
- /**
- * Tests for DisplayMode equality
- *
- * @see java.lang.Object#equals(Object)
- */
- public boolean equals(Object obj) {
- if (obj == null || !(obj instanceof DisplayMode)) {
- return false;
- }
-
- DisplayMode dm = (DisplayMode) obj;
- return dm.width == width
- && dm.height == height
- && dm.bpp == bpp
- && dm.freq == freq;
- }
-
- /**
- * Retrieves the hashcode for this object
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return width ^ height ^ freq ^ bpp;
- }
-
- /**
- * Retrieves a String representation of this DisplayMode
- *
- * @see java.lang.Object#toString()
- */
- public String toString() {
- StringBuilder sb = new StringBuilder(32);
- sb.append(width);
- sb.append(" x ");
- sb.append(height);
- sb.append(" x ");
- sb.append(bpp);
- sb.append(" @");
- sb.append(freq);
- sb.append("Hz");
- return sb.toString();
- }
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Drawable.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Drawable.java
deleted file mode 100644
index d5fdc4b82..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/Drawable.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-import org.lwjgl.PointerBuffer;
-
-/**
- * The Drawable interface describes an OpenGL drawable with an associated
- * Context.
- *
- * @author elias_naur
- */
-
-public interface Drawable {
-
- /** Returns true if the Drawable's context is current in the current thread. */
- boolean isCurrent() throws LWJGLException;
-
- /**
- * Makes the Drawable's context current in the current thread.
- *
- * @throws LWJGLException
- */
- void makeCurrent() throws LWJGLException;
-
- /**
- * If the Drawable's context is current in the current thread, no context will be current after a call to this method.
- *
- * @throws LWJGLException
- */
- void releaseContext() throws LWJGLException;
-
- /** Destroys the Drawable. */
- void destroy();
-
- /**
- * Sets the appropriate khr_gl_sharing properties in the target PointerBuffer,
- * so that if it is used in a clCreateContext(FromType) call, the created CL
- * context will be sharing objects with this Drawable's GL context. After a
- * call to this method, the target buffer position will have advanced by 2 to 4 positions,
- * depending on the implementation.
- *
- * @param properties The target properties buffer. It must have at least 4 positions remaining.
- */
- void setCLSharingProperties(PointerBuffer properties) throws LWJGLException;
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableGL.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableGL.java
deleted file mode 100644
index 85b9bbce8..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableGL.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2002-2011 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-import org.lwjgl.LWJGLUtil;
-import org.lwjgl.PointerBuffer;
-
-import static org.lwjgl.opengl.GL11.*;
-
-/** @author Spasi */
-abstract class DrawableGL implements DrawableLWJGL {
-
- /** The PixelFormat used to create the drawable. */
- protected PixelFormat pixel_format;
-
- /** Handle to the native GL rendering context */
- protected PeerInfo peer_info;
-
- /** The OpenGL Context. */
- protected ContextGL context;
-
- protected DrawableGL() {
- }
-
- public void setPixelFormat(final PixelFormatLWJGL pf) throws LWJGLException {
- throw new UnsupportedOperationException();
- }
-
- public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
- this.pixel_format = (PixelFormat)pf;
- this.peer_info = Display.getImplementation().createPeerInfo(pixel_format, attribs);
- }
-
- public PixelFormatLWJGL getPixelFormat() {
- return pixel_format;
- }
-
- public ContextGL getContext() {
- synchronized ( GlobalLock.lock ) {
- return context;
- }
- }
-
- public ContextGL createSharedContext() throws LWJGLException {
- synchronized ( GlobalLock.lock ) {
- checkDestroyed();
- return new ContextGL(peer_info, context.getContextAttribs(), context);
- // return null;
- }
- }
-
- public void checkGLError() {
- Util.checkGLError();
- }
-
- public void setSwapInterval(final int swap_interval) {
- ContextGL.setSwapInterval(swap_interval);
- }
-
- public void swapBuffers() throws LWJGLException {
- ContextGL.swapBuffers();
- }
-
- public void initContext(final float r, final float g, final float b) {
- // set background clear color
- glClearColor(r, g, b, 0.0f);
- // Clear window to avoid the desktop "showing through"
- glClear(GL_COLOR_BUFFER_BIT);
- }
-
- public boolean isCurrent() throws LWJGLException {
- synchronized ( GlobalLock.lock ) {
- checkDestroyed();
- return context.isCurrent();
- }
- }
-
- public void makeCurrent() throws LWJGLException {
- synchronized ( GlobalLock.lock ) {
- checkDestroyed();
- context.makeCurrent();
- }
- }
-
- public void releaseContext() throws LWJGLException {
- synchronized ( GlobalLock.lock ) {
- checkDestroyed();
- if ( context.isCurrent() )
- context.releaseCurrent();
- }
- }
-
- public void destroy() {
- synchronized ( GlobalLock.lock ) {
- if ( context == null )
- return;
-
- try {
- releaseContext();
-
- context.forceDestroy();
- context = null;
-
- if ( peer_info != null ) {
- peer_info.destroy();
- peer_info = null;
- }
- } catch (LWJGLException e) {
- LWJGLUtil.log("Exception occurred while destroying Drawable: " + e);
- }
- }
- }
-
- public void setCLSharingProperties(final PointerBuffer properties) throws LWJGLException {
- synchronized ( GlobalLock.lock ) {
- checkDestroyed();
- context.setCLSharingProperties(properties);
- }
- }
-
- protected final void checkDestroyed() {
- if ( context == null )
- throw new IllegalStateException("The Drawable has no context available.");
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableLWJGL.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableLWJGL.java
deleted file mode 100644
index f80ad4645..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/DrawableLWJGL.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2002-2011 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.LWJGLException;
-
-/**
- * [INTERNAL USE ONLY]
- *
- * @author Spasi
- */
-interface DrawableLWJGL extends Drawable {
-
- void setPixelFormat(PixelFormatLWJGL pf) throws LWJGLException;
-
- void setPixelFormat(PixelFormatLWJGL pf, ContextAttribs attribs) throws LWJGLException;
-
- PixelFormatLWJGL getPixelFormat();
-
- /**
- * [INTERNAL USE ONLY] Returns the Drawable's Context.
- *
- * @return the Drawable's Context
- */
- Context getContext();
-
- /**
- * [INTERNAL USE ONLY] Creates a new Context that is shared with the Drawable's Context.
- *
- * @return a Context shared with the Drawable's Context.
- */
- Context createSharedContext() throws LWJGLException;
-
- void checkGLError();
-
- void setSwapInterval(int swap_interval);
-
- void swapBuffers() throws LWJGLException;
-
- void initContext(final float r, final float g, final float b);
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTAbgr.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTAbgr.java
deleted file mode 100644
index 606f4a08e..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTAbgr.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.lwjgl.opengl;
-
-import org.lwjgl.opengl.EXTABGR;
-
-public class EXTAbgr {
- public final static int GL_ABGR_EXT = EXTABGR.GL_ABGR_EXT;
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTTextureRectangle.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTTextureRectangle.java
deleted file mode 100644
index ba3c9c5c0..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTTextureRectangle.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.lwjgl.opengl;
-
-public class EXTTextureRectangle {
- public final static int GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT = 34040;
- public final static int GL_PROXY_TEXTURE_RECTANGLE_EXT = 34039;
- public final static int GL_TEXTURE_BINDING_RECTANGLE_EXT = 34038;
- public final static int GL_TEXTURE_RECTANGLE_EXT = 34037;
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL.java
deleted file mode 100644
index ed51000e0..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL.java
+++ /dev/null
@@ -1,749 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- */
-package org.lwjgl.opengl;
-
-import org.lwjgl.system.*;
-import org.lwjgl.system.macosx.*;
-import org.lwjgl.system.windows.*;
-import org.lwjgl.glfw.*;
-
-import javax.annotation.*;
-import java.nio.*;
-import java.util.*;
-
-import static java.lang.Math.*;
-import static org.lwjgl.opengl.GL32C.*;
-import static org.lwjgl.opengl.GLX.*;
-import static org.lwjgl.opengl.GLX11.*;
-import static org.lwjgl.opengl.WGL.*;
-import static org.lwjgl.system.APIUtil.*;
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-import static org.lwjgl.system.linux.X11.*;
-import static org.lwjgl.system.windows.GDI32.*;
-import static org.lwjgl.system.windows.User32.*;
-import static org.lwjgl.system.windows.WindowsUtil.*;
-
-/**
- * This class must be used before any OpenGL function is called. It has the following responsibilities:
- *
- * - Loads the OpenGL native library into the JVM process.
- * - Creates instances of {@link GLCapabilities} classes. A {@code GLCapabilities} instance contains flags for functionality that is available in an OpenGL
- * context. Internally, it also contains function pointers that are only valid in that specific OpenGL context.
- * - Maintains thread-local state for {@code GLCapabilities} instances, corresponding to OpenGL contexts that are current in those threads.
- *
- *
- * Library lifecycle
- * The OpenGL library is loaded automatically when this class is initialized. Set the {@link Configuration#OPENGL_EXPLICIT_INIT} option to override this
- * behavior. Manual loading/unloading can be achieved with the {@link #create} and {@link #destroy} functions. The name of the library loaded can be overridden
- * with the {@link Configuration#OPENGL_LIBRARY_NAME} option. The maximum OpenGL version loaded can be set with the {@link Configuration#OPENGL_MAXVERSION}
- * option. This can be useful to ensure that no functionality above a specific version is used during development.
- *
- * GLCapabilities creation
- * Instances of {@code GLCapabilities} can be created with the {@link #createCapabilities} method. An OpenGL context must be current in the current thread
- * before it is called. Calling this method is expensive, so the {@code GLCapabilities} instance should be associated with the OpenGL context and reused as
- * necessary.
- *
- * Thread-local state
- * Before a function for a given OpenGL context can be called, the corresponding {@code GLCapabilities} instance must be passed to the
- * {@link #setCapabilities} method. The user is also responsible for clearing the current {@code GLCapabilities} instance when the context is destroyed or made
- * current in another thread.
- *
- * Note that the {@link #createCapabilities} method implicitly calls {@link #setCapabilities} with the newly created instance.
- */
-public final class GL {
-
- @Nullable
- private static final APIVersion MAX_VERSION;
-
- @Nullable
- private static FunctionProvider functionProvider;
-
- private static final ThreadLocal capabilitiesTLS = new ThreadLocal<>();
-
- private static ICD icd = new ICDStatic();
-
- @Nullable
- private static WGLCapabilities capabilitiesWGL;
-
- @Nullable
- private static GLXCapabilities capabilitiesGLXClient;
- @Nullable
- private static GLXCapabilities capabilitiesGLX;
-
- private static final boolean isUsingRegal;
-
- static {
- isUsingRegal = System.getProperty("org.lwjgl.opengl.libname").contains("libRegal.so");
- // if (isUsingRegal)
-
-
- Library.loadSystem(System::load, System::loadLibrary, GL.class, "org.lwjgl.opengl", Platform.mapLibraryNameBundled("lwjgl_opengl"));
-
- MAX_VERSION = apiParseVersion(Configuration.OPENGL_MAXVERSION);
-
- if (!Configuration.OPENGL_EXPLICIT_INIT.get(false)) {
- create();
- }
- }
-
- private static native void nativeRegalMakeCurrent();
-
- private GL() {}
-
- /** Ensures that the lwjgl_opengl shared library has been loaded. */
- static void initialize() {
- // intentionally empty to trigger static initializer
- }
-
- /** Loads the OpenGL native library, using the default library name. */
- public static void create() {
- SharedLibrary GL;
- switch (Platform.get()) {
- case LINUX:
- GL = Library.loadNative(GL.class, "org.lwjgl.opengl", Configuration.OPENGL_LIBRARY_NAME, "libGL.so.1", "libGL.so");
- break;
- case MACOSX:
- String override = Configuration.OPENGL_LIBRARY_NAME.get();
- GL = override != null
- ? Library.loadNative(GL.class, "org.lwjgl.opengl", override)
- : MacOSXLibrary.getWithIdentifier("com.apple.opengl");
- break;
- case WINDOWS:
- GL = Library.loadNative(GL.class, "org.lwjgl.opengl", Configuration.OPENGL_LIBRARY_NAME, "opengl32");
- break;
- default:
- throw new IllegalStateException();
- }
- create(GL);
- }
-
- /**
- * Loads the OpenGL native library, using the specified library name.
- *
- * @param libName the native library name
- */
- public static void create(String libName) {
- create(Library.loadNative(GL.class, "org.lwjgl.opengl", libName));
- }
-
- private abstract static class SharedLibraryGL extends SharedLibrary.Delegate {
-
- SharedLibraryGL(SharedLibrary library) {
- super(library);
- }
- abstract long getExtensionAddress(long name);
-
- @Override
- public long getFunctionAddress(ByteBuffer functionName) {
- long address = getExtensionAddress(memAddress(functionName));
- if (address == NULL) {
- address = library.getFunctionAddress(functionName);
- if (address == NULL && DEBUG_FUNCTIONS) {
- apiLog("Failed to locate address for GL function " + memASCII(functionName));
- }
- }
-
- return address;
- }
-
- }
-
- private static void create(SharedLibrary OPENGL) {
- FunctionProvider functionProvider;
- try {
- switch (Platform.get()) {
- case WINDOWS:
- functionProvider = new SharedLibraryGL(OPENGL) {
- private final long wglGetProcAddress = library.getFunctionAddress("wglGetProcAddress");
-
- @Override
- long getExtensionAddress(long name) {
- return callPP(name, wglGetProcAddress);
- }
- };
- break;
- case LINUX:
- functionProvider = new SharedLibraryGL(OPENGL) {
- private final long glXGetProcAddress;
-
- {
- long GetProcAddress = library.getFunctionAddress(isUsingRegal ? "glGetProcAddressREGAL" : "glXGetProcAddress");
- if (GetProcAddress == NULL) {
- GetProcAddress = library.getFunctionAddress("glXGetProcAddressARB");
- }
-
- glXGetProcAddress = GetProcAddress;
- }
-
- @Override
- long getExtensionAddress(long name) {
- return glXGetProcAddress == NULL ? NULL : callPP(name, glXGetProcAddress);
- }
- };
- break;
- case MACOSX:
- functionProvider = new SharedLibraryGL(OPENGL) {
- @Override
- long getExtensionAddress(long name) {
- return NULL;
- }
- };
- break;
- default:
- throw new IllegalStateException();
- }
- create(functionProvider);
- } catch (RuntimeException e) {
- OPENGL.free();
- throw e;
- }
- }
-
- /**
- * Initializes OpenGL with the specified {@link FunctionProvider}. This method can be used to implement custom OpenGL library loading.
- *
- * @param functionProvider the provider of OpenGL function addresses
- */
- public static void create(FunctionProvider functionProvider) {
- if (GL.functionProvider != null) {
- throw new IllegalStateException("OpenGL library has already been loaded.");
- }
-
- GL.functionProvider = functionProvider;
- ThreadLocalUtil.setFunctionMissingAddresses(GLCapabilities.class, 3);
- }
-
- /** Unloads the OpenGL native library. */
- public static void destroy() {
- if (functionProvider == null) {
- return;
- }
-
- ThreadLocalUtil.setFunctionMissingAddresses(null, 3);
-
- capabilitiesWGL = null;
- capabilitiesGLX = null;
-
- if (functionProvider instanceof NativeResource) {
- ((NativeResource)functionProvider).free();
- }
- functionProvider = null;
- }
-
- /** Returns the {@link FunctionProvider} for the OpenGL native library. */
- @Nullable
- public static FunctionProvider getFunctionProvider() {
- return functionProvider;
- }
-
- /**
- * Sets the {@link GLCapabilities} of the OpenGL context that is current in the current thread.
- *
- * This {@code GLCapabilities} instance will be used by any OpenGL call in the current thread, until {@code setCapabilities} is called again with a
- * different value.
- */
- public static void setCapabilities(@Nullable GLCapabilities caps) {
- capabilitiesTLS.set(caps);
- ThreadLocalUtil.setEnv(caps == null ? NULL : memAddress(caps.addresses), 3);
- icd.set(caps);
- }
-
- /**
- * Returns the {@link GLCapabilities} of the OpenGL context that is current in the current thread.
- *
- * @throws IllegalStateException if {@link #setCapabilities} has never been called in the current thread or was last called with a {@code null} value
- */
- public static GLCapabilities getCapabilities() {
- return checkCapabilities(capabilitiesTLS.get());
- }
-
- private static GLCapabilities checkCapabilities(@Nullable GLCapabilities caps) {
- if (CHECKS && caps == null) {
- throw new IllegalStateException(
- "No GLCapabilities instance set for the current thread. Possible solutions:\n" +
- "\ta) Call GL.createCapabilities() after making a context current in the current thread.\n" +
- "\tb) Call GL.setCapabilities() if a GLCapabilities instance already exists for the current context."
- );
- }
- //noinspection ConstantConditions
- return caps;
- }
-
- /**
- * Returns the WGL capabilities.
- *
- * This method may only be used on Windows.
- */
- public static WGLCapabilities getCapabilitiesWGL() {
- if (capabilitiesWGL == null) {
- capabilitiesWGL = createCapabilitiesWGLDummy();
- }
-
- return capabilitiesWGL;
- }
-
- /** Returns the GLX client capabilities. */
- static GLXCapabilities getCapabilitiesGLXClient() {
- if (capabilitiesGLXClient == null) {
- capabilitiesGLXClient = initCapabilitiesGLX(true);
- }
-
- return capabilitiesGLXClient;
- }
-
- /**
- * Returns the GLX capabilities.
- *
- * This method may only be used on Linux.
- */
- public static GLXCapabilities getCapabilitiesGLX() {
- if (capabilitiesGLX == null) {
- capabilitiesGLX = initCapabilitiesGLX(false);
- }
-
- return capabilitiesGLX;
- }
-
- private static GLXCapabilities initCapabilitiesGLX(boolean client) {
- long display = nXOpenDisplay(NULL);
- try {
- return createCapabilitiesGLX(display, client ? -1 : XDefaultScreen(display));
- } finally {
- XCloseDisplay(display);
- }
- }
-
- /**
- * Creates a new {@link GLCapabilities} instance for the OpenGL context that is current in the current thread.
- *
- * Depending on the current context, the instance returned may or may not contain the deprecated functionality removed since OpenGL version 3.1.
- *
- * This method calls {@link #setCapabilities(GLCapabilities)} with the new instance before returning.
- *
- * @return the GLCapabilities instance
- */
- public static GLCapabilities createCapabilities() {
- return createCapabilities(false);
- }
- private static native long getGraphicsBufferAddr();
- private static native int[] getNativeWidthHeight();
- /**
- * Creates a new {@link GLCapabilities} instance for the OpenGL context that is current in the current thread.
- *
- * Depending on the current context, the instance returned may or may not contain the deprecated functionality removed since OpenGL version 3.1. The
- * {@code forwardCompatible} flag will force LWJGL to not load the deprecated functions, even if the current context exposes them.
- *
- * This method calls {@link #setCapabilities(GLCapabilities)} with the new instance before returning.
- *
- * @param forwardCompatible if true, LWJGL will create forward compatible capabilities
- *
- * @return the GLCapabilities instance
- */
- @SuppressWarnings("AssignmentToMethodParameter")
- public static GLCapabilities createCapabilities(boolean forwardCompatible) {
- // System.setProperty("glfwstub.internal.glthreadid", Long.toString(Thread.currentThread().getId()));
-
- FunctionProvider functionProvider = GL.functionProvider;
- if (functionProvider == null) {
- throw new IllegalStateException("OpenGL library has not been loaded.");
- }
-
- GLCapabilities caps = null;
-
- try {
- if (System.getenv("POJAV_RENDERER").equals("opengles3_virgl") || System.getenv("POJAV_RENDERER").equals("vulkan_zink")) {
- int[] dims = getNativeWidthHeight();
- callJPI(GLFW.glfwGetCurrentContext(),getGraphicsBufferAddr(),GL_UNSIGNED_BYTE,dims[0],dims[1],functionProvider.getFunctionAddress("OSMesaMakeCurrent"));
- } else if (System.getenv("POJAV_RENDERER").startsWith("opengles")) {
- // This fixed framebuffer issue on 1.13+ 64-bit by another making current
- GLFW.glfwMakeContextCurrent(GLFW.mainContext);
- if (isUsingRegal) {
- nativeRegalMakeCurrent();
- }
- }
-
- // We don't have a current ContextCapabilities when this method is called
- // so we have to use the native bindings directly.
- long GetError = functionProvider.getFunctionAddress("glGetError");
- long GetString = functionProvider.getFunctionAddress("glGetString");
- long GetIntegerv = functionProvider.getFunctionAddress("glGetIntegerv");
-
- if (GetError == NULL || GetString == NULL || GetIntegerv == NULL) {
- throw new IllegalStateException("Core OpenGL functions could not be found. Make sure that the OpenGL library has been loaded correctly.");
- }
-
- int errorCode = callI(GetError);
- if (errorCode != GL_NO_ERROR) {
- apiLog(String.format("An OpenGL context was in an error state before the creation of its capabilities instance. Error: 0x%X", errorCode));
- }
-
- int majorVersion;
- int minorVersion;
-
- try (MemoryStack stack = stackPush()) {
- IntBuffer version = stack.ints(0);
-
- // Try the 3.0+ version query first
- callPV(GL_MAJOR_VERSION, memAddress(version), GetIntegerv);
- if (callI(GetError) == GL_NO_ERROR && 3 <= (majorVersion = version.get(0))) {
- // We're on an 3.0+ context.
- callPV(GL_MINOR_VERSION, memAddress(version), GetIntegerv);
- minorVersion = version.get(0);
- } else {
- // Fallback to the string query.
- String versionString = memUTF8Safe(callP(GL_VERSION, GetString));
- if (versionString == null || callI(GetError) != GL_NO_ERROR) {
- throw new IllegalStateException("There is no OpenGL context current in the current thread.");
- }
-
- APIVersion apiVersion = apiParseVersion(versionString);
-
- majorVersion = apiVersion.major;
- minorVersion = apiVersion.minor;
- }
- }
-
- if (majorVersion < 1 || (majorVersion == 1 && minorVersion < 1)) {
- throw new IllegalStateException("OpenGL 1.1 is required.");
- }
-
- int[] GL_VERSIONS = {
- 5, // OpenGL 1.1 to 1.5
- 1, // OpenGL 2.0 to 2.1
- 3, // OpenGL 3.0 to 3.3
- 6, // OpenGL 4.0 to 4.6
- };
-
- Set supportedExtensions = new HashSet<>(512);
-
- int maxMajor = min(majorVersion, GL_VERSIONS.length);
- if (MAX_VERSION != null) {
- maxMajor = min(MAX_VERSION.major, maxMajor);
- }
- for (int M = 1; M <= maxMajor; M++) {
- int maxMinor = GL_VERSIONS[M - 1];
- if (M == majorVersion) {
- maxMinor = min(minorVersion, maxMinor);
- }
- if (MAX_VERSION != null && M == MAX_VERSION.major) {
- maxMinor = min(MAX_VERSION.minor, maxMinor);
- }
-
- for (int m = M == 1 ? 1 : 0; m <= maxMinor; m++) {
- supportedExtensions.add(String.format("OpenGL%d%d", M, m));
- }
- }
-
- if (majorVersion < 3) {
- // Parse EXTENSIONS string
- String extensionsString = memASCIISafe(callP(GL_EXTENSIONS, GetString));
- if (extensionsString != null) {
- StringTokenizer tokenizer = new StringTokenizer(extensionsString);
- while (tokenizer.hasMoreTokens()) {
- supportedExtensions.add(tokenizer.nextToken());
- }
- }
- } else {
- // Use indexed EXTENSIONS
- try (MemoryStack stack = stackPush()) {
- IntBuffer pi = stack.ints(0);
-
- callPV(GL_NUM_EXTENSIONS, memAddress(pi), GetIntegerv);
- int extensionCount = pi.get(0);
-
- long GetStringi = apiGetFunctionAddress(functionProvider, "glGetStringi");
- for (int i = 0; i < extensionCount; i++) {
- supportedExtensions.add(memASCII(callP(GL_EXTENSIONS, i, GetStringi)));
- }
-
- // In real drivers, we may encounter the following weird scenarios:
- // - 3.1 context without GL_ARB_compatibility but with deprecated functionality exposed and working.
- // - Core or forward-compatible context with GL_ARB_compatibility exposed, but not working when used.
- // We ignore these and go by the spec.
-
- // Force forwardCompatible to true if the context is a forward-compatible context.
- callPV(GL_CONTEXT_FLAGS, memAddress(pi), GetIntegerv);
- if ((pi.get(0) & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT) != 0) {
- forwardCompatible = true;
- } else {
- // Force forwardCompatible to true if the context is a core profile context.
- if ((3 < majorVersion || 1 <= minorVersion)) { // OpenGL 3.1+
- if (3 < majorVersion || 2 <= minorVersion) { // OpenGL 3.2+
- callPV(GL_CONTEXT_PROFILE_MASK, memAddress(pi), GetIntegerv);
- if ((pi.get(0) & GL_CONTEXT_CORE_PROFILE_BIT) != 0) {
- forwardCompatible = true;
- }
- } else {
- forwardCompatible = !supportedExtensions.contains("GL_ARB_compatibility");
- }
- }
- }
- }
- }
-
- return caps = new GLCapabilities(functionProvider, supportedExtensions, forwardCompatible);
- } finally {
- setCapabilities(caps);
- }
- }
-
- /** Creates a dummy context and retrieves the WGL capabilities. */
- private static WGLCapabilities createCapabilitiesWGLDummy() {
- long hdc = wglGetCurrentDC(); // just use the current context if one exists
- if (hdc != NULL) {
- return createCapabilitiesWGL(hdc);
- }
-
- short classAtom = 0;
- long hwnd = NULL;
- long hglrc = NULL;
- try (MemoryStack stack = stackPush()) {
- WNDCLASSEX wc = WNDCLASSEX.callocStack(stack)
- .cbSize(WNDCLASSEX.SIZEOF)
- .style(CS_HREDRAW | CS_VREDRAW)
- .hInstance(WindowsLibrary.HINSTANCE)
- .lpszClassName(stack.UTF16("WGL"));
-
- memPutAddress(
- wc.address() + WNDCLASSEX.LPFNWNDPROC,
- User32.Functions.DefWindowProc
- );
-
- classAtom = RegisterClassEx(wc);
- if (classAtom == 0) {
- throw new IllegalStateException("Failed to register WGL window class");
- }
-
- hwnd = check(nCreateWindowEx(
- 0, classAtom & 0xFFFF, NULL,
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
- 0, 0, 1, 1,
- NULL, NULL, NULL, NULL
- ));
-
- hdc = check(GetDC(hwnd));
-
- PIXELFORMATDESCRIPTOR pfd = PIXELFORMATDESCRIPTOR.callocStack(stack)
- .nSize((short)PIXELFORMATDESCRIPTOR.SIZEOF)
- .nVersion((short)1)
- .dwFlags(PFD_SUPPORT_OPENGL); // we don't care about anything else
-
- int pixelFormat = ChoosePixelFormat(hdc, pfd);
- if (pixelFormat == 0) {
- windowsThrowException("Failed to choose an OpenGL-compatible pixel format");
- }
-
- if (DescribePixelFormat(hdc, pixelFormat, pfd) == 0) {
- windowsThrowException("Failed to obtain pixel format information");
- }
-
- if (!SetPixelFormat(hdc, pixelFormat, pfd)) {
- windowsThrowException("Failed to set the pixel format");
- }
-
- hglrc = check(wglCreateContext(hdc));
- wglMakeCurrent(hdc, hglrc);
-
- return createCapabilitiesWGL(hdc);
- } finally {
- if (hglrc != NULL) {
- wglMakeCurrent(NULL, NULL);
- wglDeleteContext(hglrc);
- }
-
- if (hwnd != NULL) {
- DestroyWindow(hwnd);
- }
-
- if (classAtom != 0) {
- nUnregisterClass(classAtom & 0xFFFF, WindowsLibrary.HINSTANCE);
- }
- }
- }
-
- /**
- * Creates a {@link WGLCapabilities} instance for the context that is current in the current thread.
- *
- * This method may only be used on Windows.
- */
- public static WGLCapabilities createCapabilitiesWGL() {
- long hdc = wglGetCurrentDC();
- if (hdc == NULL) {
- throw new IllegalStateException("Failed to retrieve the device context of the current OpenGL context");
- }
-
- return createCapabilitiesWGL(hdc);
- }
-
- /**
- * Creates a {@link WGLCapabilities} instance for the specified device context.
- *
- * @param hdc the device context handle ({@code HDC})
- */
- private static WGLCapabilities createCapabilitiesWGL(long hdc) {
- FunctionProvider functionProvider = GL.functionProvider;
- if (functionProvider == null) {
- throw new IllegalStateException("OpenGL library has not been loaded.");
- }
-
- String extensionsString = null;
-
- long wglGetExtensionsString = functionProvider.getFunctionAddress("wglGetExtensionsStringARB");
- if (wglGetExtensionsString != NULL) {
- extensionsString = memASCII(callPP(hdc, wglGetExtensionsString));
- } else {
- wglGetExtensionsString = functionProvider.getFunctionAddress("wglGetExtensionsStringEXT");
- if (wglGetExtensionsString != NULL) {
- extensionsString = memASCII(callP(wglGetExtensionsString));
- }
- }
-
- Set supportedExtensions = new HashSet<>(32);
-
- if (extensionsString != null) {
- StringTokenizer tokenizer = new StringTokenizer(extensionsString);
- while (tokenizer.hasMoreTokens()) {
- supportedExtensions.add(tokenizer.nextToken());
- }
- }
-
- return new WGLCapabilities(functionProvider, supportedExtensions);
- }
-
- /**
- * Creates a {@link GLXCapabilities} instance for the default screen of the specified X connection.
- *
- * This method may only be used on Linux.
- *
- * @param display the X connection handle ({@code DISPLAY})
- */
- public static GLXCapabilities createCapabilitiesGLX(long display) {
- return createCapabilitiesGLX(display, XDefaultScreen(display));
- }
-
- /**
- * Creates a {@link GLXCapabilities} instance for the specified screen of the specified X connection.
- *
- * This method may only be used on Linux.
- *
- * @param display the X connection handle ({@code DISPLAY})
- * @param screen the screen index
- */
- public static GLXCapabilities createCapabilitiesGLX(long display, int screen) {
- FunctionProvider functionProvider = GL.functionProvider;
- if (functionProvider == null) {
- throw new IllegalStateException("OpenGL library has not been loaded.");
- }
-
- int majorVersion = 1;
- int minorVersion = 4;
-
- Set supportedExtensions = new HashSet<>(32);
-
- int[][] GLX_VERSIONS = {
- {1, 2, 3, 4}
- };
-
- try (MemoryStack stack = stackPush()) {
- IntBuffer piMajor = stack.ints(0);
- IntBuffer piMinor = stack.ints(0);
-
- if (!glXQueryVersion(display, piMajor, piMinor)) {
- throw new IllegalStateException("Failed to query GLX version");
- }
-
- majorVersion = piMajor.get(0);
- minorVersion = piMinor.get(0);
- if (majorVersion != 1) {
- throw new IllegalStateException("Invalid GLX major version: " + majorVersion);
- }
- }
-
- for (int major = 1; major <= GLX_VERSIONS.length; major++) {
- int[] minors = GLX_VERSIONS[major - 1];
- for (int minor : minors) {
- if (major < majorVersion || (major == majorVersion && minor <= minorVersion)) {
- supportedExtensions.add("GLX" + major + minor);
- }
- }
- }
-
- if (1 <= minorVersion) {
- String extensionsString;
-
- if (screen == -1) {
- long glXGetClientString = functionProvider.getFunctionAddress("glXGetClientString");
- extensionsString = memASCIISafe(callPP(display, GLX_EXTENSIONS, glXGetClientString));
- } else {
- long glXQueryExtensionsString = functionProvider.getFunctionAddress("glXQueryExtensionsString");
- extensionsString = memASCIISafe(callPP(display, screen, glXQueryExtensionsString));
- }
-
- if (extensionsString != null) {
- StringTokenizer tokenizer = new StringTokenizer(extensionsString);
- while (tokenizer.hasMoreTokens()) {
- supportedExtensions.add(tokenizer.nextToken());
- }
- }
- }
-
- return new GLXCapabilities(functionProvider, supportedExtensions);
- }
-
- // Only used by array overloads
- static GLCapabilities getICD() {
- return checkCapabilities(icd.get());
- }
-
- /** Function pointer provider. */
- private interface ICD {
- default void set(@Nullable GLCapabilities caps) {}
- @Nullable GLCapabilities get();
- }
-
- /**
- * Write-once {@link ICD}.
- *
- * This is the default implementation that skips the thread-local lookup. When a new GLCapabilities is set, we compare it to the write-once capabilities.
- * If different function pointers are found, we fall back to the expensive lookup.
- */
- private static class ICDStatic implements ICD {
-
- @Nullable
- private static GLCapabilities tempCaps;
-
- @Override
- public void set(@Nullable GLCapabilities caps) {
- if (tempCaps == null) {
- tempCaps = caps;
- } else if (caps != null && caps != tempCaps && ThreadLocalUtil.areCapabilitiesDifferent(tempCaps.addresses, caps.addresses)) {
- apiLog("[WARNING] Incompatible context detected. Falling back to thread-local lookup for GL contexts.");
- icd = GL::getCapabilities; // fall back to thread/process lookup
- }
- }
-
- @Override
- public GLCapabilities get() {
- return WriteOnce.caps;
- }
-
- private static final class WriteOnce {
- // This will be initialized the first time get() above is called
- @Nullable
- static final GLCapabilities caps = ICDStatic.tempCaps;
-
- static {
- if (caps == null) {
- throw new IllegalStateException("No GLCapabilities instance has been set");
- }
- }
- }
-
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL11.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL11.java
deleted file mode 100644
index 687d98aa1..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL11.java
+++ /dev/null
@@ -1,10225 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.opengl;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.PointerBuffer;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * The OpenGL functionality up to version 1.1. Includes the deprecated symbols of the Compatibility Profile.
- *
- * Extensions promoted to core in this release:
- *
- *
- */
-public class GL11 {
-// -- Begin LWJGL2 Bridge --
- public static void glColorPointer(int size, boolean unsigned, int stride, java.nio.ByteBuffer pointer) {
- glColorPointer(size, unsigned ? GL11.GL_UNSIGNED_BYTE : GL11.GL_BYTE, stride, pointer);
- }
-
- public static void glColorPointer(int size, int stride, FloatBuffer pointer) {
- glColorPointer(size, GL11.GL_FLOAT, stride, pointer);
- }
-
- public static void glFog(int p1, java.nio.FloatBuffer p2) {
- glFogfv(p1, p2);
- }
-
- public static void glFog(int p1, java.nio.IntBuffer p2) {
- glFogiv(p1, p2);
- }
-
- public static void glGetBoolean(int p1, java.nio.ByteBuffer p2) {
- glGetBooleanv(p1, p2);
- }
-
- public static void glGetDouble(int p1, java.nio.DoubleBuffer p2) {
- glGetDoublev(p1, p2);
- }
-
- public static void glGetFloat(int p1, FloatBuffer p2) {
- glGetFloatv(p1, p2);
- }
-
- public static void glGetInteger(int p1, IntBuffer p2) {
- glGetIntegerv(p1, p2);
- }
-
- public static void glGetLight(int p1, int p2, FloatBuffer p3) {
- glGetLightfv(p1, p2, p3);
- }
-
- public static void glGetLight(int p1, int p2, IntBuffer p3) {
- glGetLightiv(p1, p2, p3);
- }
-
- public static void glGetMap(int p1, int p2, DoubleBuffer p3) {
- glGetMapdv(p1, p2, p3);
- }
-
- public static void glGetMap(int p1, int p2, FloatBuffer p3) {
- glGetMapfv(p1, p2, p3);
- }
-
- public static void glGetMap(int p1, int p2, IntBuffer p3) {
- glGetMapiv(p1, p2, p3);
- }
-
- public static void glGetMaterial(int p1, int p2, FloatBuffer p3) {
- glGetMaterialfv(p1, p2, p3);
- }
-
- public static void glGetMaterial(int p1, int p2, IntBuffer p3) {
- glGetMaterialiv(p1, p2, p3);
- }
-
- public static void glGetPixelMap(int p1, FloatBuffer p2) {
- glGetPixelMapfv(p1, p2);
- }
-
- public static void glGetPixelMapu(int p1, IntBuffer p2) {
- glGetPixelMapuiv(p1, p2);
- }
-
- public static void glGetPixelMapu(int p1, ShortBuffer p2) {
- glGetPixelMapusv(p1, p2);
- }
-
- public static void glGetTexEnv(int p1, int p2, FloatBuffer p3) {
- glGetTexEnvfv(p1, p2, p3);
- }
-
- public static void glGetTexEnv(int p1, int p2, IntBuffer p3) {
- glGetTexEnviv(p1, p2, p3);
- }
-
- public static void glGetTexGen(int p1, int p2, DoubleBuffer p3) {
- glGetTexGendv(p1, p2, p3);
- }
-
- public static void glGetTexGen(int p1, int p2, FloatBuffer p3) {
- glGetTexGenfv(p1, p2, p3);
- }
-
- public static void glGetTexGen(int p1, int p2, IntBuffer p3) {
- glGetTexGeniv(p1, p2, p3);
- }
-
- public static void glGetTexLevelParameter(int target, int level, int pname, FloatBuffer params) {
- glGetTexLevelParameterfv(target, level, pname, params);
- }
-
- public static void glGetTexLevelParameter(int target, int level, int pname, IntBuffer params) {
- glGetTexLevelParameteriv(target, level, pname, params);
- }
-
- public static void glGetTexParameter(int target, int pname, FloatBuffer params) {
- glGetTexParameterfv(target, pname, params);
- }
-
- public static void glGetTexParameter(int target, int pname, IntBuffer params) {
- glGetTexParameteriv(target, pname, params);
- }
-
- public static void glLight(int light, int pname, FloatBuffer params) {
- glLightfv(light, pname, params);
- }
-
- public static void glLight(int light, int pname, IntBuffer params) {
- glLightiv(light, pname, params);
- }
-
- public static void glLightModel(int pname, FloatBuffer params) {
- glLightModelfv(pname, params);
- }
-
- public static void glLightModel(int pname, IntBuffer params) {
- glLightModeliv(pname, params);
- }
-
- public static void glLoadMatrix(DoubleBuffer m) {
- glLoadMatrixd(m);
- }
-
- public static void glLoadMatrix(FloatBuffer m) {
- glLoadMatrixf(m);
- }
-
- public static void glMaterial(int p1, int p2, java.nio.FloatBuffer p3) {
- glMaterialfv(p1, p2, p3);
- }
-
- public static void glMaterial(int p1, int p2, java.nio.IntBuffer p3) {
- glMaterialiv(p1, p2, p3);
- }
-
- public static void glMultMatrix(java.nio.DoubleBuffer p1) {
- glMultMatrixd(p1);
- }
-
- public static void glMultMatrix(java.nio.FloatBuffer p1) {
- glMultMatrixf(p1);
- }
-
- public static void glNormalPointer(int stride, ByteBuffer pointer) {
- glNormalPointer(GL11.GL_BYTE, stride, pointer);
- }
-
- public static void glNormalPointer(int stride, FloatBuffer pointer) {
- glNormalPointer(GL11.GL_FLOAT, stride, pointer);
- }
-
- public static void glNormalPointer(int stride, IntBuffer pointer) {
- glNormalPointer(GL11.GL_INT, stride, pointer);
- }
-
- public static void glNormalPointer(int stride, ShortBuffer pointer) {
- glNormalPointer(GL11.GL_SHORT, stride, pointer);
- }
-
- public static void glPixelMap(int p1, java.nio.FloatBuffer p2) {
- glPixelMapfv(p1, p2);
- }
-
- public static void glPixelMapu(int p1, java.nio.IntBuffer p2) {
- glPixelMapuiv(p1, p2);
- }
-
- public static void glPixelMapu(int p1, java.nio.ShortBuffer p2) {
- glPixelMapusv(p1, p2);
- }
-
- // todo texcoordptr bytebuffer
- public static void glTexCoordPointer(int size, int stride, FloatBuffer pointer) {
- glTexCoordPointer(size, GL11.GL_FLOAT, stride, pointer);
- }
-
- public static void glTexCoordPointer(int size, int stride, IntBuffer pointer) {
- glTexCoordPointer(size, GL11.GL_INT, stride, pointer);
- }
-
- public static void glTexCoordPointer(int size, int stride, ShortBuffer pointer) {
- glTexCoordPointer(size, GL11.GL_SHORT, stride, pointer);
- }
-
- public static void glTexEnv(int p1, int p2, java.nio.FloatBuffer p3) {
- glTexEnvfv(p1, p2, p3);
- }
-
- public static void glTexEnv(int p1, int p2, java.nio.IntBuffer p3) {
- glTexEnviv(p1, p2, p3);
- }
-
- public static void glTexGen(int p1, int p2, java.nio.DoubleBuffer p3) {
- glTexGendv(p1, p2, p3);
- }
-
- public static void glTexGen(int p1, int p2, java.nio.FloatBuffer p3) {
- glTexGenfv(p1, p2, p3);
- }
-
- public static void glTexGen(int p1, int p2, java.nio.IntBuffer p3) {
- glTexGeniv(p1, p2, p3);
- }
-
- public static void glVertexPointer(int size, int stride, FloatBuffer pointer) {
- glVertexPointer(size, GL11.GL_FLOAT, stride, pointer);
- }
-
- public static void glVertexPointer(int size, int stride, IntBuffer pointer) {
- glVertexPointer(size, GL11.GL_INT, stride, pointer);
- }
-
- public static void glVertexPointer(int size, int stride, ShortBuffer pointer) {
- glVertexPointer(size, GL11.GL_SHORT, stride, pointer);
- }
-// ------- end test duplicate ---------
-
- /** AccumOp */
- public static final int
- GL_ACCUM = 0x100,
- GL_LOAD = 0x101,
- GL_RETURN = 0x102,
- GL_MULT = 0x103,
- GL_ADD = 0x104;
-
- /** AlphaFunction */
- public static final int
- GL_NEVER = 0x200,
- GL_LESS = 0x201,
- GL_EQUAL = 0x202,
- GL_LEQUAL = 0x203,
- GL_GREATER = 0x204,
- GL_NOTEQUAL = 0x205,
- GL_GEQUAL = 0x206,
- GL_ALWAYS = 0x207;
-
- /** AttribMask */
- public static final int
- GL_CURRENT_BIT = 0x1,
- GL_POINT_BIT = 0x2,
- GL_LINE_BIT = 0x4,
- GL_POLYGON_BIT = 0x8,
- GL_POLYGON_STIPPLE_BIT = 0x10,
- GL_PIXEL_MODE_BIT = 0x20,
- GL_LIGHTING_BIT = 0x40,
- GL_FOG_BIT = 0x80,
- GL_DEPTH_BUFFER_BIT = 0x100,
- GL_ACCUM_BUFFER_BIT = 0x200,
- GL_STENCIL_BUFFER_BIT = 0x400,
- GL_VIEWPORT_BIT = 0x800,
- GL_TRANSFORM_BIT = 0x1000,
- GL_ENABLE_BIT = 0x2000,
- GL_COLOR_BUFFER_BIT = 0x4000,
- GL_HINT_BIT = 0x8000,
- GL_EVAL_BIT = 0x10000,
- GL_LIST_BIT = 0x20000,
- GL_TEXTURE_BIT = 0x40000,
- GL_SCISSOR_BIT = 0x80000,
- GL_ALL_ATTRIB_BITS = 0xFFFFF;
-
- /** BeginMode */
- public static final int
- GL_POINTS = 0x0,
- GL_LINES = 0x1,
- GL_LINE_LOOP = 0x2,
- GL_LINE_STRIP = 0x3,
- GL_TRIANGLES = 0x4,
- GL_TRIANGLE_STRIP = 0x5,
- GL_TRIANGLE_FAN = 0x6,
- GL_QUADS = 0x7,
- GL_QUAD_STRIP = 0x8,
- GL_POLYGON = 0x9;
-
- /** BlendingFactorDest */
- public static final int
- GL_ZERO = 0,
- GL_ONE = 1,
- GL_SRC_COLOR = 0x300,
- GL_ONE_MINUS_SRC_COLOR = 0x301,
- GL_SRC_ALPHA = 0x302,
- GL_ONE_MINUS_SRC_ALPHA = 0x303,
- GL_DST_ALPHA = 0x304,
- GL_ONE_MINUS_DST_ALPHA = 0x305;
-
- /** BlendingFactorSrc */
- public static final int
- GL_DST_COLOR = 0x306,
- GL_ONE_MINUS_DST_COLOR = 0x307,
- GL_SRC_ALPHA_SATURATE = 0x308;
-
- /** Boolean */
- public static final int
- GL_TRUE = 1,
- GL_FALSE = 0;
-
- /** ClipPlaneName */
- public static final int
- GL_CLIP_PLANE0 = 0x3000,
- GL_CLIP_PLANE1 = 0x3001,
- GL_CLIP_PLANE2 = 0x3002,
- GL_CLIP_PLANE3 = 0x3003,
- GL_CLIP_PLANE4 = 0x3004,
- GL_CLIP_PLANE5 = 0x3005;
-
- /** DataType */
- public static final int
- GL_BYTE = 0x1400,
- GL_UNSIGNED_BYTE = 0x1401,
- GL_SHORT = 0x1402,
- GL_UNSIGNED_SHORT = 0x1403,
- GL_INT = 0x1404,
- GL_UNSIGNED_INT = 0x1405,
- GL_FLOAT = 0x1406,
- GL_2_BYTES = 0x1407,
- GL_3_BYTES = 0x1408,
- GL_4_BYTES = 0x1409,
- GL_DOUBLE = 0x140A;
-
- /** DrawBufferMode */
- public static final int
- GL_NONE = 0,
- GL_FRONT_LEFT = 0x400,
- GL_FRONT_RIGHT = 0x401,
- GL_BACK_LEFT = 0x402,
- GL_BACK_RIGHT = 0x403,
- GL_FRONT = 0x404,
- GL_BACK = 0x405,
- GL_LEFT = 0x406,
- GL_RIGHT = 0x407,
- GL_FRONT_AND_BACK = 0x408,
- GL_AUX0 = 0x409,
- GL_AUX1 = 0x40A,
- GL_AUX2 = 0x40B,
- GL_AUX3 = 0x40C;
-
- /** ErrorCode */
- public static final int
- GL_NO_ERROR = 0,
- GL_INVALID_ENUM = 0x500,
- GL_INVALID_VALUE = 0x501,
- GL_INVALID_OPERATION = 0x502,
- GL_STACK_OVERFLOW = 0x503,
- GL_STACK_UNDERFLOW = 0x504,
- GL_OUT_OF_MEMORY = 0x505;
-
- /** FeedBackMode */
- public static final int
- GL_2D = 0x600,
- GL_3D = 0x601,
- GL_3D_COLOR = 0x602,
- GL_3D_COLOR_TEXTURE = 0x603,
- GL_4D_COLOR_TEXTURE = 0x604;
-
- /** FeedBackToken */
- public static final int
- GL_PASS_THROUGH_TOKEN = 0x700,
- GL_POINT_TOKEN = 0x701,
- GL_LINE_TOKEN = 0x702,
- GL_POLYGON_TOKEN = 0x703,
- GL_BITMAP_TOKEN = 0x704,
- GL_DRAW_PIXEL_TOKEN = 0x705,
- GL_COPY_PIXEL_TOKEN = 0x706,
- GL_LINE_RESET_TOKEN = 0x707;
-
- /** FogMode */
- public static final int
- GL_EXP = 0x800,
- GL_EXP2 = 0x801;
-
- /** FrontFaceDirection */
- public static final int
- GL_CW = 0x900,
- GL_CCW = 0x901;
-
- /** GetMapTarget */
- public static final int
- GL_COEFF = 0xA00,
- GL_ORDER = 0xA01,
- GL_DOMAIN = 0xA02;
-
- /** GetTarget */
- public static final int
- GL_CURRENT_COLOR = 0xB00,
- GL_CURRENT_INDEX = 0xB01,
- GL_CURRENT_NORMAL = 0xB02,
- GL_CURRENT_TEXTURE_COORDS = 0xB03,
- GL_CURRENT_RASTER_COLOR = 0xB04,
- GL_CURRENT_RASTER_INDEX = 0xB05,
- GL_CURRENT_RASTER_TEXTURE_COORDS = 0xB06,
- GL_CURRENT_RASTER_POSITION = 0xB07,
- GL_CURRENT_RASTER_POSITION_VALID = 0xB08,
- GL_CURRENT_RASTER_DISTANCE = 0xB09,
- GL_POINT_SMOOTH = 0xB10,
- GL_POINT_SIZE = 0xB11,
- GL_POINT_SIZE_RANGE = 0xB12,
- GL_POINT_SIZE_GRANULARITY = 0xB13,
- GL_LINE_SMOOTH = 0xB20,
- GL_LINE_WIDTH = 0xB21,
- GL_LINE_WIDTH_RANGE = 0xB22,
- GL_LINE_WIDTH_GRANULARITY = 0xB23,
- GL_LINE_STIPPLE = 0xB24,
- GL_LINE_STIPPLE_PATTERN = 0xB25,
- GL_LINE_STIPPLE_REPEAT = 0xB26,
- GL_LIST_MODE = 0xB30,
- GL_MAX_LIST_NESTING = 0xB31,
- GL_LIST_BASE = 0xB32,
- GL_LIST_INDEX = 0xB33,
- GL_POLYGON_MODE = 0xB40,
- GL_POLYGON_SMOOTH = 0xB41,
- GL_POLYGON_STIPPLE = 0xB42,
- GL_EDGE_FLAG = 0xB43,
- GL_CULL_FACE = 0xB44,
- GL_CULL_FACE_MODE = 0xB45,
- GL_FRONT_FACE = 0xB46,
- GL_LIGHTING = 0xB50,
- GL_LIGHT_MODEL_LOCAL_VIEWER = 0xB51,
- GL_LIGHT_MODEL_TWO_SIDE = 0xB52,
- GL_LIGHT_MODEL_AMBIENT = 0xB53,
- GL_SHADE_MODEL = 0xB54,
- GL_COLOR_MATERIAL_FACE = 0xB55,
- GL_COLOR_MATERIAL_PARAMETER = 0xB56,
- GL_COLOR_MATERIAL = 0xB57,
- GL_FOG = 0xB60,
- GL_FOG_INDEX = 0xB61,
- GL_FOG_DENSITY = 0xB62,
- GL_FOG_START = 0xB63,
- GL_FOG_END = 0xB64,
- GL_FOG_MODE = 0xB65,
- GL_FOG_COLOR = 0xB66,
- GL_DEPTH_RANGE = 0xB70,
- GL_DEPTH_TEST = 0xB71,
- GL_DEPTH_WRITEMASK = 0xB72,
- GL_DEPTH_CLEAR_VALUE = 0xB73,
- GL_DEPTH_FUNC = 0xB74,
- GL_ACCUM_CLEAR_VALUE = 0xB80,
- GL_STENCIL_TEST = 0xB90,
- GL_STENCIL_CLEAR_VALUE = 0xB91,
- GL_STENCIL_FUNC = 0xB92,
- GL_STENCIL_VALUE_MASK = 0xB93,
- GL_STENCIL_FAIL = 0xB94,
- GL_STENCIL_PASS_DEPTH_FAIL = 0xB95,
- GL_STENCIL_PASS_DEPTH_PASS = 0xB96,
- GL_STENCIL_REF = 0xB97,
- GL_STENCIL_WRITEMASK = 0xB98,
- GL_MATRIX_MODE = 0xBA0,
- GL_NORMALIZE = 0xBA1,
- GL_VIEWPORT = 0xBA2,
- GL_MODELVIEW_STACK_DEPTH = 0xBA3,
- GL_PROJECTION_STACK_DEPTH = 0xBA4,
- GL_TEXTURE_STACK_DEPTH = 0xBA5,
- GL_MODELVIEW_MATRIX = 0xBA6,
- GL_PROJECTION_MATRIX = 0xBA7,
- GL_TEXTURE_MATRIX = 0xBA8,
- GL_ATTRIB_STACK_DEPTH = 0xBB0,
- GL_CLIENT_ATTRIB_STACK_DEPTH = 0xBB1,
- GL_ALPHA_TEST = 0xBC0,
- GL_ALPHA_TEST_FUNC = 0xBC1,
- GL_ALPHA_TEST_REF = 0xBC2,
- GL_DITHER = 0xBD0,
- GL_BLEND_DST = 0xBE0,
- GL_BLEND_SRC = 0xBE1,
- GL_BLEND = 0xBE2,
- GL_LOGIC_OP_MODE = 0xBF0,
- GL_INDEX_LOGIC_OP = 0xBF1,
- GL_LOGIC_OP = 0xBF1,
- GL_COLOR_LOGIC_OP = 0xBF2,
- GL_AUX_BUFFERS = 0xC00,
- GL_DRAW_BUFFER = 0xC01,
- GL_READ_BUFFER = 0xC02,
- GL_SCISSOR_BOX = 0xC10,
- GL_SCISSOR_TEST = 0xC11,
- GL_INDEX_CLEAR_VALUE = 0xC20,
- GL_INDEX_WRITEMASK = 0xC21,
- GL_COLOR_CLEAR_VALUE = 0xC22,
- GL_COLOR_WRITEMASK = 0xC23,
- GL_INDEX_MODE = 0xC30,
- GL_RGBA_MODE = 0xC31,
- GL_DOUBLEBUFFER = 0xC32,
- GL_STEREO = 0xC33,
- GL_RENDER_MODE = 0xC40,
- GL_PERSPECTIVE_CORRECTION_HINT = 0xC50,
- GL_POINT_SMOOTH_HINT = 0xC51,
- GL_LINE_SMOOTH_HINT = 0xC52,
- GL_POLYGON_SMOOTH_HINT = 0xC53,
- GL_FOG_HINT = 0xC54,
- GL_TEXTURE_GEN_S = 0xC60,
- GL_TEXTURE_GEN_T = 0xC61,
- GL_TEXTURE_GEN_R = 0xC62,
- GL_TEXTURE_GEN_Q = 0xC63,
- GL_PIXEL_MAP_I_TO_I = 0xC70,
- GL_PIXEL_MAP_S_TO_S = 0xC71,
- GL_PIXEL_MAP_I_TO_R = 0xC72,
- GL_PIXEL_MAP_I_TO_G = 0xC73,
- GL_PIXEL_MAP_I_TO_B = 0xC74,
- GL_PIXEL_MAP_I_TO_A = 0xC75,
- GL_PIXEL_MAP_R_TO_R = 0xC76,
- GL_PIXEL_MAP_G_TO_G = 0xC77,
- GL_PIXEL_MAP_B_TO_B = 0xC78,
- GL_PIXEL_MAP_A_TO_A = 0xC79,
- GL_PIXEL_MAP_I_TO_I_SIZE = 0xCB0,
- GL_PIXEL_MAP_S_TO_S_SIZE = 0xCB1,
- GL_PIXEL_MAP_I_TO_R_SIZE = 0xCB2,
- GL_PIXEL_MAP_I_TO_G_SIZE = 0xCB3,
- GL_PIXEL_MAP_I_TO_B_SIZE = 0xCB4,
- GL_PIXEL_MAP_I_TO_A_SIZE = 0xCB5,
- GL_PIXEL_MAP_R_TO_R_SIZE = 0xCB6,
- GL_PIXEL_MAP_G_TO_G_SIZE = 0xCB7,
- GL_PIXEL_MAP_B_TO_B_SIZE = 0xCB8,
- GL_PIXEL_MAP_A_TO_A_SIZE = 0xCB9,
- GL_UNPACK_SWAP_BYTES = 0xCF0,
- GL_UNPACK_LSB_FIRST = 0xCF1,
- GL_UNPACK_ROW_LENGTH = 0xCF2,
- GL_UNPACK_SKIP_ROWS = 0xCF3,
- GL_UNPACK_SKIP_PIXELS = 0xCF4,
- GL_UNPACK_ALIGNMENT = 0xCF5,
- GL_PACK_SWAP_BYTES = 0xD00,
- GL_PACK_LSB_FIRST = 0xD01,
- GL_PACK_ROW_LENGTH = 0xD02,
- GL_PACK_SKIP_ROWS = 0xD03,
- GL_PACK_SKIP_PIXELS = 0xD04,
- GL_PACK_ALIGNMENT = 0xD05,
- GL_MAP_COLOR = 0xD10,
- GL_MAP_STENCIL = 0xD11,
- GL_INDEX_SHIFT = 0xD12,
- GL_INDEX_OFFSET = 0xD13,
- GL_RED_SCALE = 0xD14,
- GL_RED_BIAS = 0xD15,
- GL_ZOOM_X = 0xD16,
- GL_ZOOM_Y = 0xD17,
- GL_GREEN_SCALE = 0xD18,
- GL_GREEN_BIAS = 0xD19,
- GL_BLUE_SCALE = 0xD1A,
- GL_BLUE_BIAS = 0xD1B,
- GL_ALPHA_SCALE = 0xD1C,
- GL_ALPHA_BIAS = 0xD1D,
- GL_DEPTH_SCALE = 0xD1E,
- GL_DEPTH_BIAS = 0xD1F,
- GL_MAX_EVAL_ORDER = 0xD30,
- GL_MAX_LIGHTS = 0xD31,
- GL_MAX_CLIP_PLANES = 0xD32,
- GL_MAX_TEXTURE_SIZE = 0xD33,
- GL_MAX_PIXEL_MAP_TABLE = 0xD34,
- GL_MAX_ATTRIB_STACK_DEPTH = 0xD35,
- GL_MAX_MODELVIEW_STACK_DEPTH = 0xD36,
- GL_MAX_NAME_STACK_DEPTH = 0xD37,
- GL_MAX_PROJECTION_STACK_DEPTH = 0xD38,
- GL_MAX_TEXTURE_STACK_DEPTH = 0xD39,
- GL_MAX_VIEWPORT_DIMS = 0xD3A,
- GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 0xD3B,
- GL_SUBPIXEL_BITS = 0xD50,
- GL_INDEX_BITS = 0xD51,
- GL_RED_BITS = 0xD52,
- GL_GREEN_BITS = 0xD53,
- GL_BLUE_BITS = 0xD54,
- GL_ALPHA_BITS = 0xD55,
- GL_DEPTH_BITS = 0xD56,
- GL_STENCIL_BITS = 0xD57,
- GL_ACCUM_RED_BITS = 0xD58,
- GL_ACCUM_GREEN_BITS = 0xD59,
- GL_ACCUM_BLUE_BITS = 0xD5A,
- GL_ACCUM_ALPHA_BITS = 0xD5B,
- GL_NAME_STACK_DEPTH = 0xD70,
- GL_AUTO_NORMAL = 0xD80,
- GL_MAP1_COLOR_4 = 0xD90,
- GL_MAP1_INDEX = 0xD91,
- GL_MAP1_NORMAL = 0xD92,
- GL_MAP1_TEXTURE_COORD_1 = 0xD93,
- GL_MAP1_TEXTURE_COORD_2 = 0xD94,
- GL_MAP1_TEXTURE_COORD_3 = 0xD95,
- GL_MAP1_TEXTURE_COORD_4 = 0xD96,
- GL_MAP1_VERTEX_3 = 0xD97,
- GL_MAP1_VERTEX_4 = 0xD98,
- GL_MAP2_COLOR_4 = 0xDB0,
- GL_MAP2_INDEX = 0xDB1,
- GL_MAP2_NORMAL = 0xDB2,
- GL_MAP2_TEXTURE_COORD_1 = 0xDB3,
- GL_MAP2_TEXTURE_COORD_2 = 0xDB4,
- GL_MAP2_TEXTURE_COORD_3 = 0xDB5,
- GL_MAP2_TEXTURE_COORD_4 = 0xDB6,
- GL_MAP2_VERTEX_3 = 0xDB7,
- GL_MAP2_VERTEX_4 = 0xDB8,
- GL_MAP1_GRID_DOMAIN = 0xDD0,
- GL_MAP1_GRID_SEGMENTS = 0xDD1,
- GL_MAP2_GRID_DOMAIN = 0xDD2,
- GL_MAP2_GRID_SEGMENTS = 0xDD3,
- GL_TEXTURE_1D = 0xDE0,
- GL_TEXTURE_2D = 0xDE1,
- GL_FEEDBACK_BUFFER_POINTER = 0xDF0,
- GL_FEEDBACK_BUFFER_SIZE = 0xDF1,
- GL_FEEDBACK_BUFFER_TYPE = 0xDF2,
- GL_SELECTION_BUFFER_POINTER = 0xDF3,
- GL_SELECTION_BUFFER_SIZE = 0xDF4;
-
- /** GetTextureParameter */
- public static final int
- GL_TEXTURE_WIDTH = 0x1000,
- GL_TEXTURE_HEIGHT = 0x1001,
- GL_TEXTURE_INTERNAL_FORMAT = 0x1003,
- GL_TEXTURE_COMPONENTS = 0x1003,
- GL_TEXTURE_BORDER_COLOR = 0x1004,
- GL_TEXTURE_BORDER = 0x1005;
-
- /** HintMode */
- public static final int
- GL_DONT_CARE = 0x1100,
- GL_FASTEST = 0x1101,
- GL_NICEST = 0x1102;
-
- /** LightName */
- public static final int
- GL_LIGHT0 = 0x4000,
- GL_LIGHT1 = 0x4001,
- GL_LIGHT2 = 0x4002,
- GL_LIGHT3 = 0x4003,
- GL_LIGHT4 = 0x4004,
- GL_LIGHT5 = 0x4005,
- GL_LIGHT6 = 0x4006,
- GL_LIGHT7 = 0x4007;
-
- /** LightParameter */
- public static final int
- GL_AMBIENT = 0x1200,
- GL_DIFFUSE = 0x1201,
- GL_SPECULAR = 0x1202,
- GL_POSITION = 0x1203,
- GL_SPOT_DIRECTION = 0x1204,
- GL_SPOT_EXPONENT = 0x1205,
- GL_SPOT_CUTOFF = 0x1206,
- GL_CONSTANT_ATTENUATION = 0x1207,
- GL_LINEAR_ATTENUATION = 0x1208,
- GL_QUADRATIC_ATTENUATION = 0x1209;
-
- /** ListMode */
- public static final int
- GL_COMPILE = 0x1300,
- GL_COMPILE_AND_EXECUTE = 0x1301;
-
- /** LogicOp */
- public static final int
- GL_CLEAR = 0x1500,
- GL_AND = 0x1501,
- GL_AND_REVERSE = 0x1502,
- GL_COPY = 0x1503,
- GL_AND_INVERTED = 0x1504,
- GL_NOOP = 0x1505,
- GL_XOR = 0x1506,
- GL_OR = 0x1507,
- GL_NOR = 0x1508,
- GL_EQUIV = 0x1509,
- GL_INVERT = 0x150A,
- GL_OR_REVERSE = 0x150B,
- GL_COPY_INVERTED = 0x150C,
- GL_OR_INVERTED = 0x150D,
- GL_NAND = 0x150E,
- GL_SET = 0x150F;
-
- /** MaterialParameter */
- public static final int
- GL_EMISSION = 0x1600,
- GL_SHININESS = 0x1601,
- GL_AMBIENT_AND_DIFFUSE = 0x1602,
- GL_COLOR_INDEXES = 0x1603;
-
- /** MatrixMode */
- public static final int
- GL_MODELVIEW = 0x1700,
- GL_PROJECTION = 0x1701,
- GL_TEXTURE = 0x1702;
-
- /** PixelCopyType */
- public static final int
- GL_COLOR = 0x1800,
- GL_DEPTH = 0x1801,
- GL_STENCIL = 0x1802;
-
- /** PixelFormat */
- public static final int
- GL_COLOR_INDEX = 0x1900,
- GL_STENCIL_INDEX = 0x1901,
- GL_DEPTH_COMPONENT = 0x1902,
- GL_RED = 0x1903,
- GL_GREEN = 0x1904,
- GL_BLUE = 0x1905,
- GL_ALPHA = 0x1906,
- GL_RGB = 0x1907,
- GL_RGBA = 0x1908,
- GL_LUMINANCE = 0x1909,
- GL_LUMINANCE_ALPHA = 0x190A;
-
- /** PixelType */
- public static final int GL_BITMAP = 0x1A00;
-
- /** PolygonMode */
- public static final int
- GL_POINT = 0x1B00,
- GL_LINE = 0x1B01,
- GL_FILL = 0x1B02;
-
- /** RenderingMode */
- public static final int
- GL_RENDER = 0x1C00,
- GL_FEEDBACK = 0x1C01,
- GL_SELECT = 0x1C02;
-
- /** ShadingModel */
- public static final int
- GL_FLAT = 0x1D00,
- GL_SMOOTH = 0x1D01;
-
- /** StencilOp */
- public static final int
- GL_KEEP = 0x1E00,
- GL_REPLACE = 0x1E01,
- GL_INCR = 0x1E02,
- GL_DECR = 0x1E03;
-
- /** StringName */
- public static final int
- GL_VENDOR = 0x1F00,
- GL_RENDERER = 0x1F01,
- GL_VERSION = 0x1F02,
- GL_EXTENSIONS = 0x1F03;
-
- /** TextureCoordName */
- public static final int
- GL_S = 0x2000,
- GL_T = 0x2001,
- GL_R = 0x2002,
- GL_Q = 0x2003;
-
- /** TextureEnvMode */
- public static final int
- GL_MODULATE = 0x2100,
- GL_DECAL = 0x2101;
-
- /** TextureEnvParameter */
- public static final int
- GL_TEXTURE_ENV_MODE = 0x2200,
- GL_TEXTURE_ENV_COLOR = 0x2201;
-
- /** TextureEnvTarget */
- public static final int GL_TEXTURE_ENV = 0x2300;
-
- /** TextureGenMode */
- public static final int
- GL_EYE_LINEAR = 0x2400,
- GL_OBJECT_LINEAR = 0x2401,
- GL_SPHERE_MAP = 0x2402;
-
- /** TextureGenParameter */
- public static final int
- GL_TEXTURE_GEN_MODE = 0x2500,
- GL_OBJECT_PLANE = 0x2501,
- GL_EYE_PLANE = 0x2502;
-
- /** TextureMagFilter */
- public static final int
- GL_NEAREST = 0x2600,
- GL_LINEAR = 0x2601;
-
- /** TextureMinFilter */
- public static final int
- GL_NEAREST_MIPMAP_NEAREST = 0x2700,
- GL_LINEAR_MIPMAP_NEAREST = 0x2701,
- GL_NEAREST_MIPMAP_LINEAR = 0x2702,
- GL_LINEAR_MIPMAP_LINEAR = 0x2703;
-
- /** TextureParameterName */
- public static final int
- GL_TEXTURE_MAG_FILTER = 0x2800,
- GL_TEXTURE_MIN_FILTER = 0x2801,
- GL_TEXTURE_WRAP_S = 0x2802,
- GL_TEXTURE_WRAP_T = 0x2803;
-
- /** TextureWrapMode */
- public static final int
- GL_CLAMP = 0x2900,
- GL_REPEAT = 0x2901;
-
- /** ClientAttribMask */
- public static final int
- GL_CLIENT_PIXEL_STORE_BIT = 0x1,
- GL_CLIENT_VERTEX_ARRAY_BIT = 0x2,
- GL_CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF;
-
- /** polygon_offset */
- public static final int
- GL_POLYGON_OFFSET_FACTOR = 0x8038,
- GL_POLYGON_OFFSET_UNITS = 0x2A00,
- GL_POLYGON_OFFSET_POINT = 0x2A01,
- GL_POLYGON_OFFSET_LINE = 0x2A02,
- GL_POLYGON_OFFSET_FILL = 0x8037;
-
- /** texture */
- public static final int
- GL_ALPHA4 = 0x803B,
- GL_ALPHA8 = 0x803C,
- GL_ALPHA12 = 0x803D,
- GL_ALPHA16 = 0x803E,
- GL_LUMINANCE4 = 0x803F,
- GL_LUMINANCE8 = 0x8040,
- GL_LUMINANCE12 = 0x8041,
- GL_LUMINANCE16 = 0x8042,
- GL_LUMINANCE4_ALPHA4 = 0x8043,
- GL_LUMINANCE6_ALPHA2 = 0x8044,
- GL_LUMINANCE8_ALPHA8 = 0x8045,
- GL_LUMINANCE12_ALPHA4 = 0x8046,
- GL_LUMINANCE12_ALPHA12 = 0x8047,
- GL_LUMINANCE16_ALPHA16 = 0x8048,
- GL_INTENSITY = 0x8049,
- GL_INTENSITY4 = 0x804A,
- GL_INTENSITY8 = 0x804B,
- GL_INTENSITY12 = 0x804C,
- GL_INTENSITY16 = 0x804D,
- GL_R3_G3_B2 = 0x2A10,
- GL_RGB4 = 0x804F,
- GL_RGB5 = 0x8050,
- GL_RGB8 = 0x8051,
- GL_RGB10 = 0x8052,
- GL_RGB12 = 0x8053,
- GL_RGB16 = 0x8054,
- GL_RGBA2 = 0x8055,
- GL_RGBA4 = 0x8056,
- GL_RGB5_A1 = 0x8057,
- GL_RGBA8 = 0x8058,
- GL_RGB10_A2 = 0x8059,
- GL_RGBA12 = 0x805A,
- GL_RGBA16 = 0x805B,
- GL_TEXTURE_RED_SIZE = 0x805C,
- GL_TEXTURE_GREEN_SIZE = 0x805D,
- GL_TEXTURE_BLUE_SIZE = 0x805E,
- GL_TEXTURE_ALPHA_SIZE = 0x805F,
- GL_TEXTURE_LUMINANCE_SIZE = 0x8060,
- GL_TEXTURE_INTENSITY_SIZE = 0x8061,
- GL_PROXY_TEXTURE_1D = 0x8063,
- GL_PROXY_TEXTURE_2D = 0x8064;
-
- /** texture_object */
- public static final int
- GL_TEXTURE_PRIORITY = 0x8066,
- GL_TEXTURE_RESIDENT = 0x8067,
- GL_TEXTURE_BINDING_1D = 0x8068,
- GL_TEXTURE_BINDING_2D = 0x8069;
-
- /** vertex_array */
- public static final int
- GL_VERTEX_ARRAY = 0x8074,
- GL_NORMAL_ARRAY = 0x8075,
- GL_COLOR_ARRAY = 0x8076,
- GL_INDEX_ARRAY = 0x8077,
- GL_TEXTURE_COORD_ARRAY = 0x8078,
- GL_EDGE_FLAG_ARRAY = 0x8079,
- GL_VERTEX_ARRAY_SIZE = 0x807A,
- GL_VERTEX_ARRAY_TYPE = 0x807B,
- GL_VERTEX_ARRAY_STRIDE = 0x807C,
- GL_NORMAL_ARRAY_TYPE = 0x807E,
- GL_NORMAL_ARRAY_STRIDE = 0x807F,
- GL_COLOR_ARRAY_SIZE = 0x8081,
- GL_COLOR_ARRAY_TYPE = 0x8082,
- GL_COLOR_ARRAY_STRIDE = 0x8083,
- GL_INDEX_ARRAY_TYPE = 0x8085,
- GL_INDEX_ARRAY_STRIDE = 0x8086,
- GL_TEXTURE_COORD_ARRAY_SIZE = 0x8088,
- GL_TEXTURE_COORD_ARRAY_TYPE = 0x8089,
- GL_TEXTURE_COORD_ARRAY_STRIDE = 0x808A,
- GL_EDGE_FLAG_ARRAY_STRIDE = 0x808C,
- GL_VERTEX_ARRAY_POINTER = 0x808E,
- GL_NORMAL_ARRAY_POINTER = 0x808F,
- GL_COLOR_ARRAY_POINTER = 0x8090,
- GL_INDEX_ARRAY_POINTER = 0x8091,
- GL_TEXTURE_COORD_ARRAY_POINTER = 0x8092,
- GL_EDGE_FLAG_ARRAY_POINTER = 0x8093,
- GL_V2F = 0x2A20,
- GL_V3F = 0x2A21,
- GL_C4UB_V2F = 0x2A22,
- GL_C4UB_V3F = 0x2A23,
- GL_C3F_V3F = 0x2A24,
- GL_N3F_V3F = 0x2A25,
- GL_C4F_N3F_V3F = 0x2A26,
- GL_T2F_V3F = 0x2A27,
- GL_T4F_V4F = 0x2A28,
- GL_T2F_C4UB_V3F = 0x2A29,
- GL_T2F_C3F_V3F = 0x2A2A,
- GL_T2F_N3F_V3F = 0x2A2B,
- GL_T2F_C4F_N3F_V3F = 0x2A2C,
- GL_T4F_C4F_N3F_V4F = 0x2A2D;
-
- static { GL.initialize(); }
-
- protected GL11() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(GLCapabilities caps, java.util.Set ext, boolean fc) {
- return (fc || checkFunctions(
- caps.glAccum, caps.glAlphaFunc, caps.glAreTexturesResident, caps.glArrayElement, caps.glBegin, caps.glBitmap, caps.glCallList, caps.glCallLists,
- caps.glClearAccum, caps.glClearIndex, caps.glClipPlane, caps.glColor3b, caps.glColor3s, caps.glColor3i, caps.glColor3f, caps.glColor3d,
- caps.glColor3ub, caps.glColor3us, caps.glColor3ui, caps.glColor3bv, caps.glColor3sv, caps.glColor3iv, caps.glColor3fv, caps.glColor3dv,
- caps.glColor3ubv, caps.glColor3usv, caps.glColor3uiv, caps.glColor4b, caps.glColor4s, caps.glColor4i, caps.glColor4f, caps.glColor4d,
- caps.glColor4ub, caps.glColor4us, caps.glColor4ui, caps.glColor4bv, caps.glColor4sv, caps.glColor4iv, caps.glColor4fv, caps.glColor4dv,
- caps.glColor4ubv, caps.glColor4usv, caps.glColor4uiv, caps.glColorMaterial, caps.glColorPointer, caps.glCopyPixels, caps.glDeleteLists,
- caps.glDrawPixels, caps.glEdgeFlag, caps.glEdgeFlagv, caps.glEdgeFlagPointer, caps.glEnd, caps.glEvalCoord1f, caps.glEvalCoord1fv,
- caps.glEvalCoord1d, caps.glEvalCoord1dv, caps.glEvalCoord2f, caps.glEvalCoord2fv, caps.glEvalCoord2d, caps.glEvalCoord2dv, caps.glEvalMesh1,
- caps.glEvalMesh2, caps.glEvalPoint1, caps.glEvalPoint2, caps.glFeedbackBuffer, caps.glFogi, caps.glFogiv, caps.glFogf, caps.glFogfv,
- caps.glGenLists, caps.glGetClipPlane, caps.glGetLightiv, caps.glGetLightfv, caps.glGetMapiv, caps.glGetMapfv, caps.glGetMapdv, caps.glGetMaterialiv,
- caps.glGetMaterialfv, caps.glGetPixelMapfv, caps.glGetPixelMapusv, caps.glGetPixelMapuiv, caps.glGetPolygonStipple, caps.glGetTexEnviv,
- caps.glGetTexEnvfv, caps.glGetTexGeniv, caps.glGetTexGenfv, caps.glGetTexGendv, caps.glIndexi, caps.glIndexub, caps.glIndexs, caps.glIndexf,
- caps.glIndexd, caps.glIndexiv, caps.glIndexubv, caps.glIndexsv, caps.glIndexfv, caps.glIndexdv, caps.glIndexMask, caps.glIndexPointer,
- caps.glInitNames, caps.glInterleavedArrays, caps.glIsList, caps.glLightModeli, caps.glLightModelf, caps.glLightModeliv, caps.glLightModelfv,
- caps.glLighti, caps.glLightf, caps.glLightiv, caps.glLightfv, caps.glLineStipple, caps.glListBase, caps.glLoadMatrixf, caps.glLoadMatrixd,
- caps.glLoadIdentity, caps.glLoadName, caps.glMap1f, caps.glMap1d, caps.glMap2f, caps.glMap2d, caps.glMapGrid1f, caps.glMapGrid1d, caps.glMapGrid2f,
- caps.glMapGrid2d, caps.glMateriali, caps.glMaterialf, caps.glMaterialiv, caps.glMaterialfv, caps.glMatrixMode, caps.glMultMatrixf,
- caps.glMultMatrixd, caps.glFrustum, caps.glNewList, caps.glEndList, caps.glNormal3f, caps.glNormal3b, caps.glNormal3s, caps.glNormal3i,
- caps.glNormal3d, caps.glNormal3fv, caps.glNormal3bv, caps.glNormal3sv, caps.glNormal3iv, caps.glNormal3dv, caps.glNormalPointer, caps.glOrtho,
- caps.glPassThrough, caps.glPixelMapfv, caps.glPixelMapusv, caps.glPixelMapuiv, caps.glPixelTransferi, caps.glPixelTransferf, caps.glPixelZoom,
- caps.glPolygonStipple, caps.glPushAttrib, caps.glPushClientAttrib, caps.glPopAttrib, caps.glPopClientAttrib, caps.glPopMatrix, caps.glPopName,
- caps.glPrioritizeTextures, caps.glPushMatrix, caps.glPushName, caps.glRasterPos2i, caps.glRasterPos2s, caps.glRasterPos2f, caps.glRasterPos2d,
- caps.glRasterPos2iv, caps.glRasterPos2sv, caps.glRasterPos2fv, caps.glRasterPos2dv, caps.glRasterPos3i, caps.glRasterPos3s, caps.glRasterPos3f,
- caps.glRasterPos3d, caps.glRasterPos3iv, caps.glRasterPos3sv, caps.glRasterPos3fv, caps.glRasterPos3dv, caps.glRasterPos4i, caps.glRasterPos4s,
- caps.glRasterPos4f, caps.glRasterPos4d, caps.glRasterPos4iv, caps.glRasterPos4sv, caps.glRasterPos4fv, caps.glRasterPos4dv, caps.glRecti,
- caps.glRects, caps.glRectf, caps.glRectd, caps.glRectiv, caps.glRectsv, caps.glRectfv, caps.glRectdv, caps.glRenderMode, caps.glRotatef,
- caps.glRotated, caps.glScalef, caps.glScaled, caps.glSelectBuffer, caps.glShadeModel, caps.glTexCoord1f, caps.glTexCoord1s, caps.glTexCoord1i,
- caps.glTexCoord1d, caps.glTexCoord1fv, caps.glTexCoord1sv, caps.glTexCoord1iv, caps.glTexCoord1dv, caps.glTexCoord2f, caps.glTexCoord2s,
- caps.glTexCoord2i, caps.glTexCoord2d, caps.glTexCoord2fv, caps.glTexCoord2sv, caps.glTexCoord2iv, caps.glTexCoord2dv, caps.glTexCoord3f,
- caps.glTexCoord3s, caps.glTexCoord3i, caps.glTexCoord3d, caps.glTexCoord3fv, caps.glTexCoord3sv, caps.glTexCoord3iv, caps.glTexCoord3dv,
- caps.glTexCoord4f, caps.glTexCoord4s, caps.glTexCoord4i, caps.glTexCoord4d, caps.glTexCoord4fv, caps.glTexCoord4sv, caps.glTexCoord4iv,
- caps.glTexCoord4dv, caps.glTexCoordPointer, caps.glTexEnvi, caps.glTexEnviv, caps.glTexEnvf, caps.glTexEnvfv, caps.glTexGeni, caps.glTexGeniv,
- caps.glTexGenf, caps.glTexGenfv, caps.glTexGend, caps.glTexGendv, caps.glTranslatef, caps.glTranslated, caps.glVertex2f, caps.glVertex2s,
- caps.glVertex2i, caps.glVertex2d, caps.glVertex2fv, caps.glVertex2sv, caps.glVertex2iv, caps.glVertex2dv, caps.glVertex3f, caps.glVertex3s,
- caps.glVertex3i, caps.glVertex3d, caps.glVertex3fv, caps.glVertex3sv, caps.glVertex3iv, caps.glVertex3dv, caps.glVertex4f, caps.glVertex4s,
- caps.glVertex4i, caps.glVertex4d, caps.glVertex4fv, caps.glVertex4sv, caps.glVertex4iv, caps.glVertex4dv, caps.glVertexPointer
- )) && checkFunctions(
- caps.glEnable, caps.glDisable, caps.glBindTexture, caps.glBlendFunc, caps.glClear, caps.glClearColor, caps.glClearDepth, caps.glClearStencil,
- caps.glColorMask, caps.glCullFace, caps.glDepthFunc, caps.glDepthMask, caps.glDepthRange,
- ext.contains("GL_NV_vertex_buffer_unified_memory") ? caps.glDisableClientState : -1L, caps.glDrawArrays, caps.glDrawBuffer, caps.glDrawElements,
- ext.contains("GL_NV_vertex_buffer_unified_memory") ? caps.glEnableClientState : -1L, caps.glFinish, caps.glFlush, caps.glFrontFace,
- caps.glGenTextures, caps.glDeleteTextures, caps.glGetBooleanv, caps.glGetFloatv, caps.glGetIntegerv, caps.glGetDoublev, caps.glGetError,
- caps.glGetPointerv, caps.glGetString, caps.glGetTexImage, caps.glGetTexLevelParameteriv, caps.glGetTexLevelParameterfv, caps.glGetTexParameteriv,
- caps.glGetTexParameterfv, caps.glHint, caps.glIsEnabled, caps.glIsTexture, caps.glLineWidth, caps.glLogicOp, caps.glPixelStorei, caps.glPixelStoref,
- caps.glPointSize, caps.glPolygonMode, caps.glPolygonOffset, caps.glReadBuffer, caps.glReadPixels, caps.glScissor, caps.glStencilFunc,
- caps.glStencilMask, caps.glStencilOp, caps.glTexImage1D, caps.glTexImage2D, caps.glCopyTexImage1D, caps.glCopyTexImage2D, caps.glCopyTexSubImage1D,
- caps.glCopyTexSubImage2D, caps.glTexParameteri, caps.glTexParameteriv, caps.glTexParameterf, caps.glTexParameterfv, caps.glTexSubImage1D,
- caps.glTexSubImage2D, caps.glViewport
- );
- }
-
- // --- [ glEnable ] ---
-
- /**
- * Enables the specified OpenGL state.
- *
- * @param target the OpenGL state to enable
- *
- * @see Reference Page
- */
- public static void glEnable(@NativeType("GLenum") int target) {
- GL11C.glEnable(target);
- }
-
- // --- [ glDisable ] ---
-
- /**
- * Disables the specified OpenGL state.
- *
- * @param target the OpenGL state to disable
- *
- * @see Reference Page
- */
- public static void glDisable(@NativeType("GLenum") int target) {
- GL11C.glDisable(target);
- }
-
- // --- [ glAccum ] ---
-
- /**
- * Each portion of a pixel in the accumulation buffer consists of four values: one for each of R, G, B, and A. The accumulation buffer is controlled
- * exclusively through the use of this method (except for clearing it).
- *
- * @param op a symbolic constant indicating an accumulation buffer operation
- * @param value a floating-point value to be used in that operation. One of:
| {@link #GL_ACCUM ACCUM} | {@link #GL_LOAD LOAD} | {@link #GL_RETURN RETURN} | {@link #GL_MULT MULT} | {@link #GL_ADD ADD} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glAccum(@NativeType("GLenum") int op, @NativeType("GLfloat") float value);
-
- // --- [ glAlphaFunc ] ---
-
- /**
- * The alpha test discards a fragment conditionally based on the outcome of a comparison between the incoming fragment’s alpha value and a constant value.
- * The comparison is enabled or disabled with the generic {@link #glEnable Enable} and {@link #glDisable Disable} commands using the symbolic constant {@link #GL_ALPHA_TEST ALPHA_TEST}.
- * When disabled, it is as if the comparison always passes. The test is controlled with this method.
- *
- * @param func a symbolic constant indicating the alpha test function. One of:
| {@link #GL_NEVER NEVER} | {@link #GL_ALWAYS ALWAYS} | {@link #GL_LESS LESS} | {@link #GL_LEQUAL LEQUAL} | {@link #GL_EQUAL EQUAL} | {@link #GL_GEQUAL GEQUAL} | {@link #GL_GREATER GREATER} | {@link #GL_NOTEQUAL NOTEQUAL} |
- * @param ref a reference value clamped to the range [0, 1]. When performing the alpha test, the GL will convert the reference value to the same representation as the fragment's alpha value (floating-point or fixed-point).
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glAlphaFunc(@NativeType("GLenum") int func, @NativeType("GLfloat") float ref);
-
- // --- [ glAreTexturesResident ] ---
-
- /**
- * Unsafe version of: {@link #glAreTexturesResident AreTexturesResident}
- *
- * @param n the number of texture objects in {@code textures}
- */
- public static native boolean nglAreTexturesResident(int n, long textures, long residences);
-
- /**
- * Returns {@link #GL_TRUE TRUE} if all of the texture objects named in textures are resident, or if the implementation does not distinguish a working set. If
- * at least one of the texture objects named in textures is not resident, then {@link #GL_FALSE FALSE} is returned, and the residence of each texture object is
- * returned in residences. Otherwise the contents of residences are not changed.
- *
- * @param textures an array of texture objects
- * @param residences returns the residences of each texture object
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLboolean")
- public static boolean glAreTexturesResident(@NativeType("GLuint const *") IntBuffer textures, @NativeType("GLboolean *") ByteBuffer residences) {
- if (CHECKS) {
- check(residences, textures.remaining());
- }
- return nglAreTexturesResident(textures.remaining(), memAddress(textures), memAddress(residences));
- }
-
- /**
- * Returns {@link #GL_TRUE TRUE} if all of the texture objects named in textures are resident, or if the implementation does not distinguish a working set. If
- * at least one of the texture objects named in textures is not resident, then {@link #GL_FALSE FALSE} is returned, and the residence of each texture object is
- * returned in residences. Otherwise the contents of residences are not changed.
- *
- * @param residences returns the residences of each texture object
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLboolean")
- public static boolean glAreTexturesResident(@NativeType("GLuint const *") int texture, @NativeType("GLboolean *") ByteBuffer residences) {
- if (CHECKS) {
- check(residences, 1);
- }
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer textures = stack.ints(texture);
- return nglAreTexturesResident(1, memAddress(textures), memAddress(residences));
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glArrayElement ] ---
-
- /**
- * Transfers the ith element of every enabled, non-instanced array, and the first element of every enabled, instanced array to the GL.
- *
- * @param i the element to transfer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glArrayElement(@NativeType("GLint") int i);
-
- // --- [ glBegin ] ---
-
- /**
- * Begins the definition of vertex attributes of a sequence of primitives to be transferred to the GL.
- *
- * @param mode the primitive type being defined. One of:
| {@link #GL_POINTS POINTS} | {@link #GL_LINE_STRIP LINE_STRIP} | {@link #GL_LINE_LOOP LINE_LOOP} | {@link #GL_LINES LINES} | {@link #GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link #GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link #GL_TRIANGLES TRIANGLES} |
| {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link #GL_POLYGON POLYGON} | {@link #GL_QUADS QUADS} |
| {@link #GL_QUAD_STRIP QUAD_STRIP} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glBegin(@NativeType("GLenum") int mode);
-
- // --- [ glBindTexture ] ---
-
- /**
- * Binds the a texture to a texture target.
- *
- * While a texture object is bound, GL operations on the target to which it is bound affect the bound object, and queries of the target to which it is
- * bound return state from the bound object. If texture mapping of the dimensionality of the target to which a texture object is bound is enabled, the
- * state of the bound texture object directs the texturing operation.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param texture the texture object to bind
- *
- * @see Reference Page
- */
- public static void glBindTexture(@NativeType("GLenum") int target, @NativeType("GLuint") int texture) {
- GL11C.glBindTexture(target, texture);
- }
-
- // --- [ glBitmap ] ---
-
- /** Unsafe version of: {@link #glBitmap Bitmap} */
- public static native void nglBitmap(int w, int h, float xOrig, float yOrig, float xInc, float yInc, long data);
-
- /**
- * Sents a bitmap to the GL. Bitmaps are rectangles of zeros and ones specifying a particular pattern of fragments to be produced. Each of these fragments
- * has the same associated data. These data are those associated with the current raster position.
- *
- * @param w the bitmap width
- * @param h the bitmap width
- * @param xOrig the bitmap origin x coordinate
- * @param yOrig the bitmap origin y coordinate
- * @param xInc the x increment added to the raster position
- * @param yInc the y increment added to the raster position
- * @param data the buffer containing the bitmap data.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glBitmap(@NativeType("GLsizei") int w, @NativeType("GLsizei") int h, @NativeType("GLfloat") float xOrig, @NativeType("GLfloat") float yOrig, @NativeType("GLfloat") float xInc, @NativeType("GLfloat") float yInc, @Nullable @NativeType("GLubyte const *") ByteBuffer data) {
- if (CHECKS) {
- checkSafe(data, ((w + 7) >> 3) * h);
- }
- nglBitmap(w, h, xOrig, yOrig, xInc, yInc, memAddressSafe(data));
- }
-
- /**
- * Sents a bitmap to the GL. Bitmaps are rectangles of zeros and ones specifying a particular pattern of fragments to be produced. Each of these fragments
- * has the same associated data. These data are those associated with the current raster position.
- *
- * @param w the bitmap width
- * @param h the bitmap width
- * @param xOrig the bitmap origin x coordinate
- * @param yOrig the bitmap origin y coordinate
- * @param xInc the x increment added to the raster position
- * @param yInc the y increment added to the raster position
- * @param data the buffer containing the bitmap data.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glBitmap(@NativeType("GLsizei") int w, @NativeType("GLsizei") int h, @NativeType("GLfloat") float xOrig, @NativeType("GLfloat") float yOrig, @NativeType("GLfloat") float xInc, @NativeType("GLfloat") float yInc, @Nullable @NativeType("GLubyte const *") long data) {
- nglBitmap(w, h, xOrig, yOrig, xInc, yInc, data);
- }
-
- // --- [ glBlendFunc ] ---
-
- /**
- * Specifies the weighting factors used by the blend equation, for both RGB and alpha functions and for all draw buffers.
- *
- * @param sfactor the source weighting factor. One of:
| {@link GL11C#GL_ZERO ZERO} | {@link GL11C#GL_ONE ONE} | {@link GL11C#GL_SRC_COLOR SRC_COLOR} | {@link GL11C#GL_ONE_MINUS_SRC_COLOR ONE_MINUS_SRC_COLOR} | {@link GL11C#GL_DST_COLOR DST_COLOR} |
| {@link GL11C#GL_ONE_MINUS_DST_COLOR ONE_MINUS_DST_COLOR} | {@link GL11C#GL_SRC_ALPHA SRC_ALPHA} | {@link GL11C#GL_ONE_MINUS_SRC_ALPHA ONE_MINUS_SRC_ALPHA} | {@link GL11C#GL_DST_ALPHA DST_ALPHA} | {@link GL11C#GL_ONE_MINUS_DST_ALPHA ONE_MINUS_DST_ALPHA} |
| {@link GL14#GL_CONSTANT_COLOR CONSTANT_COLOR} | {@link GL14#GL_ONE_MINUS_CONSTANT_COLOR ONE_MINUS_CONSTANT_COLOR} | {@link GL14#GL_CONSTANT_ALPHA CONSTANT_ALPHA} | {@link GL14#GL_ONE_MINUS_CONSTANT_ALPHA ONE_MINUS_CONSTANT_ALPHA} | {@link GL11C#GL_SRC_ALPHA_SATURATE SRC_ALPHA_SATURATE} |
| {@link GL33#GL_SRC1_COLOR SRC1_COLOR} | {@link GL33#GL_ONE_MINUS_SRC1_COLOR ONE_MINUS_SRC1_COLOR} | {@link GL15#GL_SRC1_ALPHA SRC1_ALPHA} | {@link GL33#GL_ONE_MINUS_SRC1_ALPHA ONE_MINUS_SRC1_ALPHA} |
- * @param dfactor the destination weighting factor
- *
- * @see Reference Page
- */
- public static void glBlendFunc(@NativeType("GLenum") int sfactor, @NativeType("GLenum") int dfactor) {
- GL11C.glBlendFunc(sfactor, dfactor);
- }
-
- // --- [ glCallList ] ---
-
- /**
- * Executes a display list. Causes the commands saved in the display list to be executed, in order, just as if they were issued without using a display list.
- *
- * @param list the index of the display list to be called
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glCallList(@NativeType("GLuint") int list);
-
- // --- [ glCallLists ] ---
-
- /**
- * Unsafe version of: {@link #glCallLists CallLists}
- *
- * @param n the number of display lists to be called
- * @param type the data type of each element in {@code lists}. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_FLOAT FLOAT} | {@link #GL_2_BYTES 2_BYTES} | {@link #GL_3_BYTES 3_BYTES} | {@link #GL_4_BYTES 4_BYTES} |
- */
- public static native void nglCallLists(int n, int type, long lists);
-
- /**
- * Provides an efficient means for executing a number of display lists.
- *
- * @param type the data type of each element in {@code lists}. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_FLOAT FLOAT} | {@link #GL_2_BYTES 2_BYTES} | {@link #GL_3_BYTES 3_BYTES} | {@link #GL_4_BYTES 4_BYTES} |
- * @param lists an array of offsets. Each offset is added to the display list base to obtain the display list number.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glCallLists(@NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer lists) {
- nglCallLists(lists.remaining() / GLChecks.typeToBytes(type), type, memAddress(lists));
- }
-
- /**
- * Provides an efficient means for executing a number of display lists.
- *
- * @param lists an array of offsets. Each offset is added to the display list base to obtain the display list number.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glCallLists(@NativeType("void const *") ByteBuffer lists) {
- nglCallLists(lists.remaining(), GL11.GL_UNSIGNED_BYTE, memAddress(lists));
- }
-
- /**
- * Provides an efficient means for executing a number of display lists.
- *
- * @param lists an array of offsets. Each offset is added to the display list base to obtain the display list number.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glCallLists(@NativeType("void const *") ShortBuffer lists) {
- nglCallLists(lists.remaining(), GL11.GL_UNSIGNED_SHORT, memAddress(lists));
- }
-
- /**
- * Provides an efficient means for executing a number of display lists.
- *
- * @param lists an array of offsets. Each offset is added to the display list base to obtain the display list number.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glCallLists(@NativeType("void const *") IntBuffer lists) {
- nglCallLists(lists.remaining(), GL11.GL_UNSIGNED_INT, memAddress(lists));
- }
-
- // --- [ glClear ] ---
-
- /**
- * Sets portions of every pixel in a particular buffer to the same value. The value to which each buffer is cleared depends on the setting of the clear
- * value for that buffer.
- *
- * @param mask Zero or the bitwise OR of one or more values indicating which buffers are to be cleared. One or more of:
| {@link GL11C#GL_COLOR_BUFFER_BIT COLOR_BUFFER_BIT} | {@link GL11C#GL_DEPTH_BUFFER_BIT DEPTH_BUFFER_BIT} | {@link GL11C#GL_STENCIL_BUFFER_BIT STENCIL_BUFFER_BIT} |
- *
- * @see Reference Page
- */
- public static void glClear(@NativeType("GLbitfield") int mask) {
- GL11C.glClear(mask);
- }
-
- // --- [ glClearAccum ] ---
-
- /**
- * Sets the clear values for the accumulation buffer. These values are clamped to the range [-1,1] when they are specified.
- *
- * @param red the value to which to clear the R values of the accumulation buffer
- * @param green the value to which to clear the G values of the accumulation buffer
- * @param blue the value to which to clear the B values of the accumulation buffer
- * @param alpha the value to which to clear the A values of the accumulation buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glClearAccum(@NativeType("GLfloat") float red, @NativeType("GLfloat") float green, @NativeType("GLfloat") float blue, @NativeType("GLfloat") float alpha);
-
- // --- [ glClearColor ] ---
-
- /**
- * Sets the clear value for fixed-point and floating-point color buffers in RGBA mode. The specified components are stored as floating-point values.
- *
- * @param red the value to which to clear the R channel of the color buffer
- * @param green the value to which to clear the G channel of the color buffer
- * @param blue the value to which to clear the B channel of the color buffer
- * @param alpha the value to which to clear the A channel of the color buffer
- *
- * @see Reference Page
- */
- public static void glClearColor(@NativeType("GLfloat") float red, @NativeType("GLfloat") float green, @NativeType("GLfloat") float blue, @NativeType("GLfloat") float alpha) {
- GL11C.glClearColor(red, green, blue, alpha);
- }
-
- // --- [ glClearDepth ] ---
-
- /**
- * Sets the depth value used when clearing the depth buffer. When clearing a fixedpoint depth buffer, {@code depth} is clamped to the range [0,1] and
- * converted to fixed-point. No conversion is applied when clearing a floating-point depth buffer.
- *
- * @param depth the value to which to clear the depth buffer
- *
- * @see Reference Page
- */
- public static void glClearDepth(@NativeType("GLdouble") double depth) {
- GL11C.glClearDepth(depth);
- }
-
- // --- [ glClearIndex ] ---
-
- /**
- * sets the clear color index. index is converted to a fixed-point value with unspecified precision to the left of the binary point; the integer part of
- * this value is then masked with 2m – 1, where {@code m} is the number of bits in a color index value stored in the
- * framebuffer.
- *
- * @param index the value to which to clear the color buffer in color index mode
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glClearIndex(@NativeType("GLfloat") float index);
-
- // --- [ glClearStencil ] ---
-
- /**
- * Sets the value to which to clear the stencil buffer. {@code s} is masked to the number of bitplanes in the stencil buffer.
- *
- * @param s the value to which to clear the stencil buffer
- *
- * @see Reference Page
- */
- public static void glClearStencil(@NativeType("GLint") int s) {
- GL11C.glClearStencil(s);
- }
-
- // --- [ glClipPlane ] ---
-
- /** Unsafe version of: {@link #glClipPlane ClipPlane} */
- public static native void nglClipPlane(int plane, long equation);
-
- /**
- * Specifies a client-defined clip plane.
- *
- * The value of the first argument, {@code plane}, is a symbolic constant, CLIP_PLANEi, where i is an integer between 0 and n – 1, indicating one of
- * n client-defined clip planes. {@code equation} is an array of four double-precision floating-point values. These are the coefficients of a plane
- * equation in object coordinates: p1, p2, p3, and p4 (in that order).
- *
- * @param plane the clip plane to define
- * @param equation the clip plane coefficients
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glClipPlane(@NativeType("GLenum") int plane, @NativeType("GLdouble const *") DoubleBuffer equation) {
- if (CHECKS) {
- check(equation, 4);
- }
- nglClipPlane(plane, memAddress(equation));
- }
-
- // --- [ glColor3b ] ---
-
- /**
- * Sets the R, G, and B components of the current color. The alpha component is set to 1.0.
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3b(@NativeType("GLbyte") byte red, @NativeType("GLbyte") byte green, @NativeType("GLbyte") byte blue);
-
- // --- [ glColor3s ] ---
-
- /**
- * Short version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3s(@NativeType("GLshort") short red, @NativeType("GLshort") short green, @NativeType("GLshort") short blue);
-
- // --- [ glColor3i ] ---
-
- /**
- * Integer version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3i(@NativeType("GLint") int red, @NativeType("GLint") int green, @NativeType("GLint") int blue);
-
- // --- [ glColor3f ] ---
-
- /**
- * Float version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3f(@NativeType("GLfloat") float red, @NativeType("GLfloat") float green, @NativeType("GLfloat") float blue);
-
- // --- [ glColor3d ] ---
-
- /**
- * Double version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3d(@NativeType("GLdouble") double red, @NativeType("GLdouble") double green, @NativeType("GLdouble") double blue);
-
- // --- [ glColor3ub ] ---
-
- /**
- * Unsigned version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3ub(@NativeType("GLubyte") byte red, @NativeType("GLubyte") byte green, @NativeType("GLubyte") byte blue);
-
- // --- [ glColor3us ] ---
-
- /**
- * Unsigned short version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3us(@NativeType("GLushort") short red, @NativeType("GLushort") short green, @NativeType("GLushort") short blue);
-
- // --- [ glColor3ui ] ---
-
- /**
- * Unsigned int version of {@link #glColor3b Color3b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor3ui(@NativeType("GLint") int red, @NativeType("GLint") int green, @NativeType("GLint") int blue);
-
- // --- [ glColor3bv ] ---
-
- /** Unsafe version of: {@link #glColor3bv Color3bv} */
- public static native void nglColor3bv(long v);
-
- /**
- * Byte pointer version of {@link #glColor3b Color3b}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3bv(@NativeType("GLbyte const *") ByteBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3bv(memAddress(v));
- }
-
- // --- [ glColor3sv ] ---
-
- /** Unsafe version of: {@link #glColor3sv Color3sv} */
- public static native void nglColor3sv(long v);
-
- /**
- * Pointer version of {@link #glColor3s Color3s}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3sv(memAddress(v));
- }
-
- // --- [ glColor3iv ] ---
-
- /** Unsafe version of: {@link #glColor3iv Color3iv} */
- public static native void nglColor3iv(long v);
-
- /**
- * Pointer version of {@link #glColor3i Color3i}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3iv(memAddress(v));
- }
-
- // --- [ glColor3fv ] ---
-
- /** Unsafe version of: {@link #glColor3fv Color3fv} */
- public static native void nglColor3fv(long v);
-
- /**
- * Pointer version of {@link #glColor3f Color3f}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3fv(memAddress(v));
- }
-
- // --- [ glColor3dv ] ---
-
- /** Unsafe version of: {@link #glColor3dv Color3dv} */
- public static native void nglColor3dv(long v);
-
- /**
- * Pointer version of {@link #glColor3d Color3d}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3dv(memAddress(v));
- }
-
- // --- [ glColor3ubv ] ---
-
- /** Unsafe version of: {@link #glColor3ubv Color3ubv} */
- public static native void nglColor3ubv(long v);
-
- /**
- * Pointer version of {@link #glColor3ub Color3ub}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3ubv(@NativeType("GLubyte const *") ByteBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3ubv(memAddress(v));
- }
-
- // --- [ glColor3usv ] ---
-
- /** Unsafe version of: {@link #glColor3usv Color3usv} */
- public static native void nglColor3usv(long v);
-
- /**
- * Pointer version of {@link #glColor3us Color3us}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3usv(@NativeType("GLushort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3usv(memAddress(v));
- }
-
- // --- [ glColor3uiv ] ---
-
- /** Unsafe version of: {@link #glColor3uiv Color3uiv} */
- public static native void nglColor3uiv(long v);
-
- /**
- * Pointer version of {@link #glColor3ui Color3ui}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3uiv(@NativeType("GLuint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglColor3uiv(memAddress(v));
- }
-
- // --- [ glColor4b ] ---
-
- /**
- * Sets the current color.
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4b(@NativeType("GLbyte") byte red, @NativeType("GLbyte") byte green, @NativeType("GLbyte") byte blue, @NativeType("GLbyte") byte alpha);
-
- // --- [ glColor4s ] ---
-
- /**
- * Short version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4s(@NativeType("GLshort") short red, @NativeType("GLshort") short green, @NativeType("GLshort") short blue, @NativeType("GLshort") short alpha);
-
- // --- [ glColor4i ] ---
-
- /**
- * Integer version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4i(@NativeType("GLint") int red, @NativeType("GLint") int green, @NativeType("GLint") int blue, @NativeType("GLint") int alpha);
-
- // --- [ glColor4f ] ---
-
- /**
- * Float version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4f(@NativeType("GLfloat") float red, @NativeType("GLfloat") float green, @NativeType("GLfloat") float blue, @NativeType("GLfloat") float alpha);
-
- // --- [ glColor4d ] ---
-
- /**
- * Double version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4d(@NativeType("GLdouble") double red, @NativeType("GLdouble") double green, @NativeType("GLdouble") double blue, @NativeType("GLdouble") double alpha);
-
- // --- [ glColor4ub ] ---
-
- /**
- * Unsigned version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4ub(@NativeType("GLubyte") byte red, @NativeType("GLubyte") byte green, @NativeType("GLubyte") byte blue, @NativeType("GLubyte") byte alpha);
-
- // --- [ glColor4us ] ---
-
- /**
- * Unsigned short version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4us(@NativeType("GLushort") short red, @NativeType("GLushort") short green, @NativeType("GLushort") short blue, @NativeType("GLushort") short alpha);
-
- // --- [ glColor4ui ] ---
-
- /**
- * Unsigned int version of {@link #glColor4b Color4b}
- *
- * @param red the red component of the current color
- * @param green the green component of the current color
- * @param blue the blue component of the current color
- * @param alpha the alpha component of the current color
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColor4ui(@NativeType("GLint") int red, @NativeType("GLint") int green, @NativeType("GLint") int blue, @NativeType("GLint") int alpha);
-
- // --- [ glColor4bv ] ---
-
- /** Unsafe version of: {@link #glColor4bv Color4bv} */
- public static native void nglColor4bv(long v);
-
- /**
- * Pointer version of {@link #glColor4b Color4b}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4bv(@NativeType("GLbyte const *") ByteBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4bv(memAddress(v));
- }
-
- // --- [ glColor4sv ] ---
-
- /** Unsafe version of: {@link #glColor4sv Color4sv} */
- public static native void nglColor4sv(long v);
-
- /**
- * Pointer version of {@link #glColor4s Color4s}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4sv(memAddress(v));
- }
-
- // --- [ glColor4iv ] ---
-
- /** Unsafe version of: {@link #glColor4iv Color4iv} */
- public static native void nglColor4iv(long v);
-
- /**
- * Pointer version of {@link #glColor4i Color4i}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4iv(memAddress(v));
- }
-
- // --- [ glColor4fv ] ---
-
- /** Unsafe version of: {@link #glColor4fv Color4fv} */
- public static native void nglColor4fv(long v);
-
- /**
- * Pointer version of {@link #glColor4f Color4f}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4fv(memAddress(v));
- }
-
- // --- [ glColor4dv ] ---
-
- /** Unsafe version of: {@link #glColor4dv Color4dv} */
- public static native void nglColor4dv(long v);
-
- /**
- * Pointer version of {@link #glColor4d Color4d}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4dv(memAddress(v));
- }
-
- // --- [ glColor4ubv ] ---
-
- /** Unsafe version of: {@link #glColor4ubv Color4ubv} */
- public static native void nglColor4ubv(long v);
-
- /**
- * Pointer version of {@link #glColor4ub Color4ub}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4ubv(@NativeType("GLubyte const *") ByteBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4ubv(memAddress(v));
- }
-
- // --- [ glColor4usv ] ---
-
- /** Unsafe version of: {@link #glColor4usv Color4usv} */
- public static native void nglColor4usv(long v);
-
- /**
- * Pointer version of {@link #glColor4us Color4us}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4usv(@NativeType("GLushort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4usv(memAddress(v));
- }
-
- // --- [ glColor4uiv ] ---
-
- /** Unsafe version of: {@link #glColor4uiv Color4uiv} */
- public static native void nglColor4uiv(long v);
-
- /**
- * Pointer version of {@link #glColor4ui Color4ui}.
- *
- * @param v the color buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4uiv(@NativeType("GLuint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglColor4uiv(memAddress(v));
- }
-
- // --- [ glColorMask ] ---
-
- /**
- * Masks the writing of R, G, B and A values to all draw buffers. In the initial state, all color values are enabled for writing for all draw buffers.
- *
- * @param red whether R values are written or not
- * @param green whether G values are written or not
- * @param blue whether B values are written or not
- * @param alpha whether A values are written or not
- *
- * @see Reference Page
- */
- public static void glColorMask(@NativeType("GLboolean") boolean red, @NativeType("GLboolean") boolean green, @NativeType("GLboolean") boolean blue, @NativeType("GLboolean") boolean alpha) {
- GL11C.glColorMask(red, green, blue, alpha);
- }
-
- // --- [ glColorMaterial ] ---
-
- /**
- * It is possible to attach one or more material properties to the current color, so that they continuously track its component values. This behavior is
- * enabled and disabled by calling {@link #glEnable Enable} or {@link #glDisable Disable} with the symbolic value {@link #GL_COLOR_MATERIAL COLOR_MATERIAL}. This function controls which
- * of these modes is selected.
- *
- * @param face specifies which material face is affected by the current color. One of:
| {@link #GL_FRONT FRONT} | {@link #GL_BACK BACK} | {@link #GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param mode specifies which material property or properties track the current color. One of:
| {@link #GL_EMISSION EMISSION} | {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_AMBIENT_AND_DIFFUSE AMBIENT_AND_DIFFUSE} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glColorMaterial(@NativeType("GLenum") int face, @NativeType("GLenum") int mode);
-
- // --- [ glColorPointer ] ---
-
- /** Unsafe version of: {@link #glColorPointer ColorPointer} */
- public static native void nglColorPointer(int size, int type, int stride, long pointer);
-
- /**
- * Specifies the location and organization of a color array.
- *
- * @param size the number of values per vertex that are stored in the array, as well as their component ordering. One of:
| 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} |
| {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColorPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglColorPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color array.
- *
- * @param size the number of values per vertex that are stored in the array, as well as their component ordering. One of:
| 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} |
| {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColorPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglColorPointer(size, type, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a color array.
- *
- * @param size the number of values per vertex that are stored in the array, as well as their component ordering. One of:
| 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} |
| {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColorPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglColorPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color array.
- *
- * @param size the number of values per vertex that are stored in the array, as well as their component ordering. One of:
| 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} |
| {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColorPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglColorPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color array.
- *
- * @param size the number of values per vertex that are stored in the array, as well as their component ordering. One of:
| 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_INT INT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} |
| {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColorPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- nglColorPointer(size, type, stride, memAddress(pointer));
- }
-
- // --- [ glCopyPixels ] ---
-
- /**
- * Transfers a rectangle of pixel values from one region of the read framebuffer to another in the draw framebuffer
- *
- * @param x the left framebuffer pixel coordinate
- * @param y the lower framebuffer pixel coordinate
- * @param width the rectangle width
- * @param height the rectangle height
- * @param type Indicates the type of values to be transfered. One of:
| {@link #GL_COLOR COLOR} | {@link #GL_STENCIL STENCIL} | {@link #GL_DEPTH DEPTH} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glCopyPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int type);
-
- // --- [ glCullFace ] ---
-
- /**
- * Specifies which polygon faces are culled if {@link GL11C#GL_CULL_FACE CULL_FACE} is enabled. Front-facing polygons are rasterized if either culling is disabled or the
- * CullFace mode is {@link GL11C#GL_BACK BACK} while back-facing polygons are rasterized only if either culling is disabled or the CullFace mode is
- * {@link GL11C#GL_FRONT FRONT}. The initial setting of the CullFace mode is {@link GL11C#GL_BACK BACK}. Initially, culling is disabled.
- *
- * @param mode the CullFace mode. One of:
| {@link GL11C#GL_FRONT FRONT} | {@link GL11C#GL_BACK BACK} | {@link GL11C#GL_FRONT_AND_BACK FRONT_AND_BACK} |
- *
- * @see Reference Page
- */
- public static void glCullFace(@NativeType("GLenum") int mode) {
- GL11C.glCullFace(mode);
- }
-
- // --- [ glDeleteLists ] ---
-
- /**
- * Deletes a contiguous group of display lists. All information about the display lists is lost, and the indices become unused. Indices to which no display
- * list corresponds are ignored. If {@code range} is zero, nothing happens.
- *
- * @param list the index of the first display list to be deleted
- * @param range the number of display lists to be deleted
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glDeleteLists(@NativeType("GLuint") int list, @NativeType("GLsizei") int range);
-
- // --- [ glDepthFunc ] ---
-
- /**
- * Specifies the comparison that takes place during the depth buffer test (when {@link GL11C#GL_DEPTH_TEST DEPTH_TEST} is enabled).
- *
- * @param func the depth test comparison. One of:
| {@link GL11C#GL_NEVER NEVER} | {@link GL11C#GL_ALWAYS ALWAYS} | {@link GL11C#GL_LESS LESS} | {@link GL11C#GL_LEQUAL LEQUAL} | {@link GL11C#GL_EQUAL EQUAL} | {@link GL11C#GL_GREATER GREATER} | {@link GL11C#GL_GEQUAL GEQUAL} | {@link GL11C#GL_NOTEQUAL NOTEQUAL} |
- *
- * @see Reference Page
- */
- public static void glDepthFunc(@NativeType("GLenum") int func) {
- GL11C.glDepthFunc(func);
- }
-
- // --- [ glDepthMask ] ---
-
- /**
- * Masks the writing of depth values to the depth buffer. In the initial state, the depth buffer is enabled for writing.
- *
- * @param flag whether depth values are written or not.
- *
- * @see Reference Page
- */
- public static void glDepthMask(@NativeType("GLboolean") boolean flag) {
- GL11C.glDepthMask(flag);
- }
-
- // --- [ glDepthRange ] ---
-
- /**
- * Sets the depth range for all viewports to the same values.
- *
- * @param zNear the near depth range
- * @param zFar the far depth range
- *
- * @see Reference Page
- */
- public static void glDepthRange(@NativeType("GLdouble") double zNear, @NativeType("GLdouble") double zFar) {
- GL11C.glDepthRange(zNear, zFar);
- }
-
- // --- [ glDisableClientState ] ---
-
- /**
- * Disables a client-side capability.
- *
- * If the {@link NVVertexBufferUnifiedMemory} extension is supported, this function is available even in a core profile context.
- *
- * @param cap the capability to disable. One of:
| {@link #GL_COLOR_ARRAY COLOR_ARRAY} | {@link #GL_EDGE_FLAG_ARRAY EDGE_FLAG_ARRAY} | {@link GL15#GL_FOG_COORD_ARRAY FOG_COORD_ARRAY} | {@link #GL_INDEX_ARRAY INDEX_ARRAY} |
| {@link #GL_NORMAL_ARRAY NORMAL_ARRAY} | {@link GL14#GL_SECONDARY_COLOR_ARRAY SECONDARY_COLOR_ARRAY} | {@link #GL_TEXTURE_COORD_ARRAY TEXTURE_COORD_ARRAY} | {@link #GL_VERTEX_ARRAY VERTEX_ARRAY} |
| {@link NVVertexBufferUnifiedMemory#GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV VERTEX_ATTRIB_ARRAY_UNIFIED_NV} | {@link NVVertexBufferUnifiedMemory#GL_ELEMENT_ARRAY_UNIFIED_NV ELEMENT_ARRAY_UNIFIED_NV} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glDisableClientState(@NativeType("GLenum") int cap);
-
- // --- [ glDrawArrays ] ---
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices. Elements {@code first} through
- * first + count – 1 of each enabled non-instanced array are transferred to the GL.
- *
- * If an array corresponding to an attribute required by a vertex shader is not enabled, then the corresponding element is taken from the current attribute
- * state. If an array is enabled, the corresponding current vertex attribute value is unaffected by the execution of this function.
- *
- * @param mode the kind of primitives being constructed
- * @param first the first vertex to transfer to the GL
- * @param count the number of vertices after {@code first} to transfer to the GL
- *
- * @see Reference Page
- */
- public static void glDrawArrays(@NativeType("GLenum") int mode, @NativeType("GLint") int first, @NativeType("GLsizei") int count) {
- GL11C.glDrawArrays(mode, first, count);
- }
-
- // --- [ glDrawBuffer ] ---
-
- /**
- * Defines the color buffer to which fragment color zero is written.
- *
- * Acceptable values for {@code buf} depend on whether the GL is using the default framebuffer (i.e., {@link GL30#GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is zero), or
- * a framebuffer object (i.e., {@link GL30#GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is non-zero). In the initial state, the GL is bound to the default framebuffer.
- *
- * @param buf the color buffer to draw to. One of:
| {@link GL11C#GL_NONE NONE} | {@link GL11C#GL_FRONT_LEFT FRONT_LEFT} | {@link GL11C#GL_FRONT_RIGHT FRONT_RIGHT} | {@link GL11C#GL_BACK_LEFT BACK_LEFT} | {@link GL11C#GL_BACK_RIGHT BACK_RIGHT} | {@link GL11C#GL_FRONT FRONT} | {@link GL11C#GL_BACK BACK} | {@link GL11C#GL_LEFT LEFT} |
| {@link GL11C#GL_RIGHT RIGHT} | {@link GL11C#GL_FRONT_AND_BACK FRONT_AND_BACK} | {@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0} | GL30.GL_COLOR_ATTACHMENT[1-15] |
- *
- * @see Reference Page
- */
- public static void glDrawBuffer(@NativeType("GLenum") int buf) {
- GL11C.glDrawBuffer(buf);
- }
-
- // --- [ glDrawElements ] ---
-
- /**
- * Unsafe version of: {@link #glDrawElements DrawElements}
- *
- * @param count the number of vertices to transfer to the GL
- * @param type indicates the type of index values in {@code indices}. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_UNSIGNED_INT UNSIGNED_INT} |
- */
- public static void nglDrawElements(int mode, int count, int type, long indices) {
- GL11C.nglDrawElements(mode, count, type, indices);
- }
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices to the GL.
- * The ith element transferred by {@code DrawElements} will be taken from element {@code indices[i]} (if no element array buffer is bound), or
- * from the element whose index is stored in the currently bound element array buffer at offset {@code indices + i}.
- *
- * @param mode the kind of primitives being constructed. One of:
| {@link GL11C#GL_POINTS POINTS} | {@link GL11C#GL_LINE_STRIP LINE_STRIP} | {@link GL11C#GL_LINE_LOOP LINE_LOOP} | {@link GL11C#GL_LINES LINES} | {@link GL11C#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11C#GL_TRIANGLE_FAN TRIANGLE_FAN} |
| {@link GL11C#GL_TRIANGLES TRIANGLES} | {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} |
- * @param count the number of vertices to transfer to the GL
- * @param type indicates the type of index values in {@code indices}. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices the index values
- *
- * @see Reference Page
- */
- public static void glDrawElements(@NativeType("GLenum") int mode, @NativeType("GLsizei") int count, @NativeType("GLenum") int type, @NativeType("void const *") long indices) {
- GL11C.glDrawElements(mode, count, type, indices);
- }
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices to the GL.
- * The ith element transferred by {@code DrawElements} will be taken from element {@code indices[i]} (if no element array buffer is bound), or
- * from the element whose index is stored in the currently bound element array buffer at offset {@code indices + i}.
- *
- * @param mode the kind of primitives being constructed. One of:
| {@link GL11C#GL_POINTS POINTS} | {@link GL11C#GL_LINE_STRIP LINE_STRIP} | {@link GL11C#GL_LINE_LOOP LINE_LOOP} | {@link GL11C#GL_LINES LINES} | {@link GL11C#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11C#GL_TRIANGLE_FAN TRIANGLE_FAN} |
| {@link GL11C#GL_TRIANGLES TRIANGLES} | {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} |
- * @param type indicates the type of index values in {@code indices}. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices the index values
- *
- * @see Reference Page
- */
- public static void glDrawElements(@NativeType("GLenum") int mode, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer indices) {
- GL11C.glDrawElements(mode, type, indices);
- }
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices to the GL.
- * The ith element transferred by {@code DrawElements} will be taken from element {@code indices[i]} (if no element array buffer is bound), or
- * from the element whose index is stored in the currently bound element array buffer at offset {@code indices + i}.
- *
- * @param mode the kind of primitives being constructed. One of:
| {@link GL11C#GL_POINTS POINTS} | {@link GL11C#GL_LINE_STRIP LINE_STRIP} | {@link GL11C#GL_LINE_LOOP LINE_LOOP} | {@link GL11C#GL_LINES LINES} | {@link GL11C#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11C#GL_TRIANGLE_FAN TRIANGLE_FAN} |
| {@link GL11C#GL_TRIANGLES TRIANGLES} | {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} |
- * @param indices the index values
- *
- * @see Reference Page
- */
- public static void glDrawElements(@NativeType("GLenum") int mode, @NativeType("void const *") ByteBuffer indices) {
- GL11C.glDrawElements(mode, indices);
- }
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices to the GL.
- * The ith element transferred by {@code DrawElements} will be taken from element {@code indices[i]} (if no element array buffer is bound), or
- * from the element whose index is stored in the currently bound element array buffer at offset {@code indices + i}.
- *
- * @param mode the kind of primitives being constructed. One of:
| {@link GL11C#GL_POINTS POINTS} | {@link GL11C#GL_LINE_STRIP LINE_STRIP} | {@link GL11C#GL_LINE_LOOP LINE_LOOP} | {@link GL11C#GL_LINES LINES} | {@link GL11C#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11C#GL_TRIANGLE_FAN TRIANGLE_FAN} |
| {@link GL11C#GL_TRIANGLES TRIANGLES} | {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} |
- * @param indices the index values
- *
- * @see Reference Page
- */
- public static void glDrawElements(@NativeType("GLenum") int mode, @NativeType("void const *") ShortBuffer indices) {
- GL11C.glDrawElements(mode, indices);
- }
-
- /**
- * Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices to the GL.
- * The ith element transferred by {@code DrawElements} will be taken from element {@code indices[i]} (if no element array buffer is bound), or
- * from the element whose index is stored in the currently bound element array buffer at offset {@code indices + i}.
- *
- * @param mode the kind of primitives being constructed. One of:
| {@link GL11C#GL_POINTS POINTS} | {@link GL11C#GL_LINE_STRIP LINE_STRIP} | {@link GL11C#GL_LINE_LOOP LINE_LOOP} | {@link GL11C#GL_LINES LINES} | {@link GL11C#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11C#GL_TRIANGLE_FAN TRIANGLE_FAN} |
| {@link GL11C#GL_TRIANGLES TRIANGLES} | {@link GL32#GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link GL32#GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link GL32#GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link GL32#GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} |
- * @param indices the index values
- *
- * @see Reference Page
- */
- public static void glDrawElements(@NativeType("GLenum") int mode, @NativeType("void const *") IntBuffer indices) {
- GL11C.glDrawElements(mode, indices);
- }
-
- // --- [ glDrawPixels ] ---
-
- /** Unsafe version of: {@link #glDrawPixels DrawPixels} */
- public static native void nglDrawPixels(int width, int height, int format, int type, long pixels);
-
- /**
- * Draws a pixel rectangle to the active draw buffers.
- *
- * @param width the pixel rectangle width
- * @param height the pixel rectangle height
- * @param format the pixel data format. One of:
| {@link #GL_RED RED} | {@link #GL_GREEN GREEN} | {@link #GL_BLUE BLUE} | {@link #GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link #GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link #GL_STENCIL_INDEX STENCIL_INDEX} | {@link #GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} | {@link #GL_LUMINANCE LUMINANCE} | {@link #GL_LUMINANCE_ALPHA LUMINANCE_ALPHA} |
- * @param type the pixel data type. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_SHORT SHORT} |
| {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
| {@link #GL_BITMAP BITMAP} |
- * @param pixels the pixel data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer pixels) {
- nglDrawPixels(width, height, format, type, memAddress(pixels));
- }
-
- /**
- * Draws a pixel rectangle to the active draw buffers.
- *
- * @param width the pixel rectangle width
- * @param height the pixel rectangle height
- * @param format the pixel data format. One of:
| {@link #GL_RED RED} | {@link #GL_GREEN GREEN} | {@link #GL_BLUE BLUE} | {@link #GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link #GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link #GL_STENCIL_INDEX STENCIL_INDEX} | {@link #GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} | {@link #GL_LUMINANCE LUMINANCE} | {@link #GL_LUMINANCE_ALPHA LUMINANCE_ALPHA} |
- * @param type the pixel data type. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_SHORT SHORT} |
| {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
| {@link #GL_BITMAP BITMAP} |
- * @param pixels the pixel data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") long pixels) {
- nglDrawPixels(width, height, format, type, pixels);
- }
-
- /**
- * Draws a pixel rectangle to the active draw buffers.
- *
- * @param width the pixel rectangle width
- * @param height the pixel rectangle height
- * @param format the pixel data format. One of:
| {@link #GL_RED RED} | {@link #GL_GREEN GREEN} | {@link #GL_BLUE BLUE} | {@link #GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link #GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link #GL_STENCIL_INDEX STENCIL_INDEX} | {@link #GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} | {@link #GL_LUMINANCE LUMINANCE} | {@link #GL_LUMINANCE_ALPHA LUMINANCE_ALPHA} |
- * @param type the pixel data type. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_SHORT SHORT} |
| {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
| {@link #GL_BITMAP BITMAP} |
- * @param pixels the pixel data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ShortBuffer pixels) {
- nglDrawPixels(width, height, format, type, memAddress(pixels));
- }
-
- /**
- * Draws a pixel rectangle to the active draw buffers.
- *
- * @param width the pixel rectangle width
- * @param height the pixel rectangle height
- * @param format the pixel data format. One of:
| {@link #GL_RED RED} | {@link #GL_GREEN GREEN} | {@link #GL_BLUE BLUE} | {@link #GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link #GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link #GL_STENCIL_INDEX STENCIL_INDEX} | {@link #GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} | {@link #GL_LUMINANCE LUMINANCE} | {@link #GL_LUMINANCE_ALPHA LUMINANCE_ALPHA} |
- * @param type the pixel data type. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_SHORT SHORT} |
| {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
| {@link #GL_BITMAP BITMAP} |
- * @param pixels the pixel data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") IntBuffer pixels) {
- nglDrawPixels(width, height, format, type, memAddress(pixels));
- }
-
- /**
- * Draws a pixel rectangle to the active draw buffers.
- *
- * @param width the pixel rectangle width
- * @param height the pixel rectangle height
- * @param format the pixel data format. One of:
| {@link #GL_RED RED} | {@link #GL_GREEN GREEN} | {@link #GL_BLUE BLUE} | {@link #GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link #GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link #GL_STENCIL_INDEX STENCIL_INDEX} | {@link #GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} | {@link #GL_LUMINANCE LUMINANCE} | {@link #GL_LUMINANCE_ALPHA LUMINANCE_ALPHA} |
- * @param type the pixel data type. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_BYTE BYTE} | {@link #GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link #GL_SHORT SHORT} |
| {@link #GL_UNSIGNED_INT UNSIGNED_INT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
| {@link #GL_BITMAP BITMAP} |
- * @param pixels the pixel data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") FloatBuffer pixels) {
- nglDrawPixels(width, height, format, type, memAddress(pixels));
- }
-
- // --- [ glEdgeFlag ] ---
-
- /**
- * Each edge of each polygon primitive generated is flagged as either boundary or non-boundary. These classifications are used during polygon
- * rasterization; some modes affect the interpretation of polygon boundary edges. By default, all edges are boundary edges, but the flagging of polygons,
- * separate triangles, or separate quadrilaterals may be altered by calling this function.
- *
- * When a primitive of type {@link #GL_POLYGON POLYGON}, {@link #GL_TRIANGLES TRIANGLES}, or {@link #GL_QUADS QUADS} is drawn, each vertex transferred begins an edge. If the edge
- * flag bit is TRUE, then each specified vertex begins an edge that is flagged as boundary. If the bit is FALSE, then induced edges are flagged as
- * non-boundary.
- *
- * @param flag the edge flag bit
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEdgeFlag(@NativeType("GLboolean") boolean flag);
-
- // --- [ glEdgeFlagv ] ---
-
- /** Unsafe version of: {@link #glEdgeFlagv EdgeFlagv} */
- public static native void nglEdgeFlagv(long flag);
-
- /**
- * Pointer version of {@link #glEdgeFlag EdgeFlag}.
- *
- * @param flag the edge flag buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEdgeFlagv(@NativeType("GLboolean const *") ByteBuffer flag) {
- if (CHECKS) {
- check(flag, 1);
- }
- nglEdgeFlagv(memAddress(flag));
- }
-
- // --- [ glEdgeFlagPointer ] ---
-
- /** Unsafe version of: {@link #glEdgeFlagPointer EdgeFlagPointer} */
- public static native void nglEdgeFlagPointer(int stride, long pointer);
-
- /**
- * Specifies the location and organization of an edge flag array.
- *
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the edge flag array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEdgeFlagPointer(@NativeType("GLsizei") int stride, @NativeType("GLboolean const *") ByteBuffer pointer) {
- nglEdgeFlagPointer(stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of an edge flag array.
- *
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the edge flag array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEdgeFlagPointer(@NativeType("GLsizei") int stride, @NativeType("GLboolean const *") long pointer) {
- nglEdgeFlagPointer(stride, pointer);
- }
-
- // --- [ glEnableClientState ] ---
-
- /**
- * Enables a client-side capability.
- *
- * If the {@link NVVertexBufferUnifiedMemory} extension is supported, this function is available even in a core profile context.
- *
- * @param cap the capability to enable. One of:
| {@link #GL_COLOR_ARRAY COLOR_ARRAY} | {@link #GL_EDGE_FLAG_ARRAY EDGE_FLAG_ARRAY} | {@link GL15#GL_FOG_COORD_ARRAY FOG_COORD_ARRAY} | {@link #GL_INDEX_ARRAY INDEX_ARRAY} |
| {@link #GL_NORMAL_ARRAY NORMAL_ARRAY} | {@link GL14#GL_SECONDARY_COLOR_ARRAY SECONDARY_COLOR_ARRAY} | {@link #GL_TEXTURE_COORD_ARRAY TEXTURE_COORD_ARRAY} | {@link #GL_VERTEX_ARRAY VERTEX_ARRAY} |
| {@link NVVertexBufferUnifiedMemory#GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV VERTEX_ATTRIB_ARRAY_UNIFIED_NV} | {@link NVVertexBufferUnifiedMemory#GL_ELEMENT_ARRAY_UNIFIED_NV ELEMENT_ARRAY_UNIFIED_NV} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEnableClientState(@NativeType("GLenum") int cap);
-
- // --- [ glEnd ] ---
-
- /**
- * Ends the definition of vertex attributes of a sequence of primitives to be transferred to the GL.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEnd();
-
- // --- [ glEvalCoord1f ] ---
-
- /**
- * Causes evaluation of the enabled one-dimensional evaluator maps.
- *
- * @param u the domain coordinate u
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalCoord1f(@NativeType("GLfloat") float u);
-
- // --- [ glEvalCoord1fv ] ---
-
- /** Unsafe version of: {@link #glEvalCoord1fv EvalCoord1fv} */
- public static native void nglEvalCoord1fv(long u);
-
- /**
- * Pointer version of {@link #glEvalCoord1f EvalCoord1f}.
- *
- * @param u the domain coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord1fv(@NativeType("GLfloat const *") FloatBuffer u) {
- if (CHECKS) {
- check(u, 1);
- }
- nglEvalCoord1fv(memAddress(u));
- }
-
- // --- [ glEvalCoord1d ] ---
-
- /**
- * Double version of {@link #glEvalCoord1f EvalCoord1f}.
- *
- * @param u the domain coordinate u
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalCoord1d(@NativeType("GLdouble") double u);
-
- // --- [ glEvalCoord1dv ] ---
-
- /** Unsafe version of: {@link #glEvalCoord1dv EvalCoord1dv} */
- public static native void nglEvalCoord1dv(long u);
-
- /**
- * Pointer version of {@link #glEvalCoord1d EvalCoord1d}.
- *
- * @param u the domain coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord1dv(@NativeType("GLdouble const *") DoubleBuffer u) {
- if (CHECKS) {
- check(u, 1);
- }
- nglEvalCoord1dv(memAddress(u));
- }
-
- // --- [ glEvalCoord2f ] ---
-
- /**
- * Causes evaluation of the enabled two-dimensional evaluator maps.
- *
- * @param u the domain coordinate u
- * @param v the domain coordinate v
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalCoord2f(@NativeType("GLfloat") float u, @NativeType("GLfloat") float v);
-
- // --- [ glEvalCoord2fv ] ---
-
- /** Unsafe version of: {@link #glEvalCoord2fv EvalCoord2fv} */
- public static native void nglEvalCoord2fv(long u);
-
- /**
- * Pointer version of {@link #glEvalCoord2f EvalCoord2f}.
- *
- * @param u the domain coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord2fv(@NativeType("GLfloat const *") FloatBuffer u) {
- if (CHECKS) {
- check(u, 2);
- }
- nglEvalCoord2fv(memAddress(u));
- }
-
- // --- [ glEvalCoord2d ] ---
-
- /**
- * Double version of {@link #glEvalCoord2f EvalCoord2f}.
- *
- * @param u the domain coordinate u
- * @param v the domain coordinate v
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalCoord2d(@NativeType("GLdouble") double u, @NativeType("GLdouble") double v);
-
- // --- [ glEvalCoord2dv ] ---
-
- /** Unsafe version of: {@link #glEvalCoord2dv EvalCoord2dv} */
- public static native void nglEvalCoord2dv(long u);
-
- /**
- * Pointer version of {@link #glEvalCoord2d EvalCoord2d}.
- *
- * @param u the domain coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord2dv(@NativeType("GLdouble const *") DoubleBuffer u) {
- if (CHECKS) {
- check(u, 2);
- }
- nglEvalCoord2dv(memAddress(u));
- }
-
- // --- [ glEvalMesh1 ] ---
-
- /**
- * Carries out an evaluation on a subset of the one-dimensional map grid.
- *
- * @param mode the mesh type. One of:
| {@link #GL_POINT POINT} | {@link #GL_LINE LINE} |
- * @param i1 the start index
- * @param i2 the end index
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalMesh1(@NativeType("GLenum") int mode, @NativeType("GLint") int i1, @NativeType("GLint") int i2);
-
- // --- [ glEvalMesh2 ] ---
-
- /**
- * Carries out an evaluation on a rectangular subset of the two-dimensional map grid.
- *
- * @param mode the mesh type. One of:
| {@link #GL_FILL FILL} | {@link #GL_LINE LINE} | {@link #GL_POINT POINT} |
- * @param i1 the u-dimension start index
- * @param i2 the u-dimension end index
- * @param j1 the v-dimension start index
- * @param j2 the v-dimension end index
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalMesh2(@NativeType("GLenum") int mode, @NativeType("GLint") int i1, @NativeType("GLint") int i2, @NativeType("GLint") int j1, @NativeType("GLint") int j2);
-
- // --- [ glEvalPoint1 ] ---
-
- /**
- * Carries out an evalutation of a single point on the one-dimensional map grid.
- *
- * @param i the grid index
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalPoint1(@NativeType("GLint") int i);
-
- // --- [ glEvalPoint2 ] ---
-
- /**
- * Carries out an evalutation of a single point on the two-dimensional map grid.
- *
- * @param i the u-dimension grid index
- * @param j the v-dimension grid index
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEvalPoint2(@NativeType("GLint") int i, @NativeType("GLint") int j);
-
- // --- [ glFeedbackBuffer ] ---
-
- /**
- * Unsafe version of: {@link #glFeedbackBuffer FeedbackBuffer}
- *
- * @param size the maximum number of values that can be written to {@code buffer}
- */
- public static native void nglFeedbackBuffer(int size, int type, long buffer);
-
- /**
- * Returns information about primitives when the GL is in feedback mode.
- *
- * @param type the type of information to feed back for each vertex. One of:
| {@link #GL_2D 2D} | {@link #GL_3D 3D} | {@link #GL_3D_COLOR 3D_COLOR} | {@link #GL_3D_COLOR_TEXTURE 3D_COLOR_TEXTURE} | {@link #GL_4D_COLOR_TEXTURE 4D_COLOR_TEXTURE} |
- * @param buffer an array of floating-point values into which feedback information will be placed
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFeedbackBuffer(@NativeType("GLenum") int type, @NativeType("GLfloat *") FloatBuffer buffer) {
- nglFeedbackBuffer(buffer.remaining(), type, memAddress(buffer));
- }
-
- // --- [ glFinish ] ---
-
- /**
- * Forces all previously issued GL commands to complete. {@code Finish} does not return until all effects from such commands on GL client and server
- * state and the framebuffer are fully realized.
- *
- * @see Reference Page
- */
- public static void glFinish() {
- GL11C.glFinish();
- }
-
- // --- [ glFlush ] ---
-
- /**
- * Causes all previously issued GL commands to complete in finite time (although such commands may still be executing when {@code Flush} returns).
- *
- * @see Reference Page
- */
- public static void glFlush() {
- GL11C.glFlush();
- }
-
- // --- [ glFogi ] ---
-
- /**
- * Sets the integer value of a fog parameter.
- *
- * @param pname the fog parameter. One of:
| {@link #GL_FOG_MODE FOG_MODE} | {@link GL15#GL_FOG_COORD_SRC FOG_COORD_SRC} |
- * @param param the fog parameter value. One of:
| {@link #GL_EXP EXP} | {@link #GL_EXP2 EXP2} | {@link #GL_LINEAR LINEAR} | {@link GL14#GL_FRAGMENT_DEPTH FRAGMENT_DEPTH} | {@link GL15#GL_FOG_COORD FOG_COORD} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glFogi(@NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glFogiv ] ---
-
- /** Unsafe version of: {@link #glFogiv Fogiv} */
- public static native void nglFogiv(int pname, long params);
-
- /**
- * Pointer version of {@link #glFogi Fogi}.
- *
- * @param pname the fog parameter. One of:
| {@link #GL_FOG_MODE FOG_MODE} | {@link GL15#GL_FOG_COORD_SRC FOG_COORD_SRC} |
- * @param params the fog parameter buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFogiv(@NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglFogiv(pname, memAddress(params));
- }
-
- // --- [ glFogf ] ---
-
- /**
- * Sets the float value of a fog parameter.
- *
- * @param pname the fog parameter. One of:
| {@link #GL_FOG_DENSITY FOG_DENSITY} | {@link #GL_FOG_START FOG_START} | {@link #GL_FOG_END FOG_END} |
- * @param param the fog parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glFogf(@NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glFogfv ] ---
-
- /** Unsafe version of: {@link #glFogfv Fogfv} */
- public static native void nglFogfv(int pname, long params);
-
- /**
- * Pointer version of {@link #glFogf Fogf}.
- *
- * @param pname the fog parameter. One of:
| {@link #GL_FOG_DENSITY FOG_DENSITY} | {@link #GL_FOG_START FOG_START} | {@link #GL_FOG_END FOG_END} |
- * @param params the fog parameter buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFogfv(@NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglFogfv(pname, memAddress(params));
- }
-
- // --- [ glFrontFace ] ---
-
- /**
- * The first step of polygon rasterization is to determine if the polygon is back-facing or front-facing. This determination is made based on the sign of
- * the (clipped or unclipped) polygon's area computed in window coordinates. The interpretation of the sign of this value is controlled with this function.
- * In the initial state, the front face direction is set to {@link GL11C#GL_CCW CCW}.
- *
- * @param dir the front face direction. One of:
| {@link GL11C#GL_CCW CCW} | {@link GL11C#GL_CW CW} |
- *
- * @see Reference Page
- */
- public static void glFrontFace(@NativeType("GLenum") int dir) {
- GL11C.glFrontFace(dir);
- }
-
- // --- [ glGenLists ] ---
-
- /**
- * Returns an integer n such that the indices {@code n,..., n + s - 1} are previously unused (i.e. there are {@code s} previously unused display list
- * indices starting at n). {@code GenLists} also has the effect of creating an empty display list for each of the indices {@code n,..., n + s - 1}, so
- * that these indices all become used. {@code GenLists} returns zero if there is no group of {@code s} contiguous previously unused display list indices,
- * or if {@code s = 0}.
- *
- * @param s the number of display lists to create
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLuint")
- public static native int glGenLists(@NativeType("GLsizei") int s);
-
- // --- [ glGenTextures ] ---
-
- /**
- * Unsafe version of: {@link #glGenTextures GenTextures}
- *
- * @param n the number of textures to create
- */
- public static void nglGenTextures(int n, long textures) {
- GL11C.nglGenTextures(n, textures);
- }
-
- /**
- * Returns n previously unused texture names in textures. These names are marked as used, for the purposes of GenTextures only, but they acquire texture
- * state and a dimensionality only when they are first bound, just as if they were unused.
- *
- * @param textures a scalar or buffer in which to place the returned texture names
- *
- * @see Reference Page
- */
- public static void glGenTextures(@NativeType("GLuint *") IntBuffer textures) {
- GL11C.glGenTextures(textures);
- }
-
- /**
- * Returns n previously unused texture names in textures. These names are marked as used, for the purposes of GenTextures only, but they acquire texture
- * state and a dimensionality only when they are first bound, just as if they were unused.
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGenTextures() {
- return GL11C.glGenTextures();
- }
-
- // --- [ glDeleteTextures ] ---
-
- /**
- * Unsafe version of: {@link #glDeleteTextures DeleteTextures}
- *
- * @param n the number of texture names in the {@code textures} parameter
- */
- public static void nglDeleteTextures(int n, long textures) {
- GL11C.nglDeleteTextures(n, textures);
- }
-
- /**
- * Deletes texture objects. After a texture object is deleted, it has no contents or dimensionality, and its name is again unused. If a texture that is
- * currently bound to any of the target bindings of {@link #glBindTexture BindTexture} is deleted, it is as though {@link #glBindTexture BindTexture} had been executed with the
- * same target and texture zero. Additionally, special care must be taken when deleting a texture if any of the images of the texture are attached to a
- * framebuffer object.
- *
- * Unused names in textures that have been marked as used for the purposes of {@link #glGenTextures GenTextures} are marked as unused again. Unused names in textures are
- * silently ignored, as is the name zero.
- *
- * @param textures contains {@code n} names of texture objects to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteTextures(@NativeType("GLuint const *") IntBuffer textures) {
- GL11C.glDeleteTextures(textures);
- }
-
- /**
- * Deletes texture objects. After a texture object is deleted, it has no contents or dimensionality, and its name is again unused. If a texture that is
- * currently bound to any of the target bindings of {@link #glBindTexture BindTexture} is deleted, it is as though {@link #glBindTexture BindTexture} had been executed with the
- * same target and texture zero. Additionally, special care must be taken when deleting a texture if any of the images of the texture are attached to a
- * framebuffer object.
- *
- * Unused names in textures that have been marked as used for the purposes of {@link #glGenTextures GenTextures} are marked as unused again. Unused names in textures are
- * silently ignored, as is the name zero.
- *
- * @see Reference Page
- */
- public static void glDeleteTextures(@NativeType("GLuint const *") int texture) {
- GL11C.glDeleteTextures(texture);
- }
-
- // --- [ glGetClipPlane ] ---
-
- /** Unsafe version of: {@link #glGetClipPlane GetClipPlane} */
- public static native void nglGetClipPlane(int plane, long equation);
-
- /**
- * Returns four double-precision values in {@code equation}; these are the coefficients of the plane equation of plane in eye coordinates (these
- * coordinates are those that were computed when the plane was specified).
- *
- * @param plane the clip plane
- * @param equation a buffer in which to place the returned values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetClipPlane(@NativeType("GLenum") int plane, @NativeType("GLdouble *") DoubleBuffer equation) {
- if (CHECKS) {
- check(equation, 4);
- }
- nglGetClipPlane(plane, memAddress(equation));
- }
-
- // --- [ glGetBooleanv ] ---
-
- /** Unsafe version of: {@link #glGetBooleanv GetBooleanv} */
- public static void nglGetBooleanv(int pname, long params) {
- GL11C.nglGetBooleanv(pname, params);
- }
-
- /**
- * Returns the current boolean value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetBooleanv(@NativeType("GLenum") int pname, @NativeType("GLboolean *") ByteBuffer params) {
- GL11C.glGetBooleanv(pname, params);
- }
-
- /**
- * Returns the current boolean value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static boolean glGetBoolean(@NativeType("GLenum") int pname) {
- return GL11C.glGetBoolean(pname);
- }
-
- // --- [ glGetFloatv ] ---
-
- /** Unsafe version of: {@link #glGetFloatv GetFloatv} */
- public static void nglGetFloatv(int pname, long params) {
- GL11C.nglGetFloatv(pname, params);
- }
-
- /**
- * Returns the current float value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetFloatv(@NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- GL11C.glGetFloatv(pname, params);
- }
-
- /**
- * Returns the current float value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static float glGetFloat(@NativeType("GLenum") int pname) {
- return GL11C.glGetFloat(pname);
- }
-
- // --- [ glGetIntegerv ] ---
-
- /** Unsafe version of: {@link #glGetIntegerv GetIntegerv} */
- public static void nglGetIntegerv(int pname, long params) {
- GL11C.nglGetIntegerv(pname, params);
- }
-
- /**
- * Returns the current integer value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetIntegerv(@NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL11C.glGetIntegerv(pname, params);
- }
-
- /**
- * Returns the current integer value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetInteger(@NativeType("GLenum") int pname) {
- return GL11C.glGetInteger(pname);
- }
-
- // --- [ glGetDoublev ] ---
-
- /** Unsafe version of: {@link #glGetDoublev GetDoublev} */
- public static void nglGetDoublev(int pname, long params) {
- GL11C.nglGetDoublev(pname, params);
- }
-
- /**
- * Returns the current double value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetDoublev(@NativeType("GLenum") int pname, @NativeType("GLdouble *") DoubleBuffer params) {
- GL11C.glGetDoublev(pname, params);
- }
-
- /**
- * Returns the current double value of the specified state variable.
- *
- * LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values,
- * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the
- * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.
- *
- * @param pname the state variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static double glGetDouble(@NativeType("GLenum") int pname) {
- return GL11C.glGetDouble(pname);
- }
-
- // --- [ glGetError ] ---
-
- /**
- * Returns error information.
- *
- * Each detectable error is assigned a numeric code. When an error is detected, a flag is set and the code is recorded. Further errors, if they occur, do
- * not affect this recorded code. When {@code GetError} is called, the code is returned and the flag is cleared, so that a further error will again record
- * its code. If a call to {@code GetError} returns {@link GL11C#GL_NO_ERROR NO_ERROR}, then there has been no detectable error since the last call to {@code GetError} (or since
- * the GL was initialized).
- *
- * @see Reference Page
- */
- @NativeType("GLenum")
- public static int glGetError() {
- return GL11C.glGetError();
- }
-
- // --- [ glGetLightiv ] ---
-
- /** Unsafe version of: {@link #glGetLightiv GetLightiv} */
- public static native void nglGetLightiv(int light, int pname, long data);
-
- /**
- * Returns integer information about light parameter {@code pname} for {@code light} in {@code data}.
- *
- * @param light the light for which to return information. One of:
| {@link #GL_LIGHT0 LIGHT0} | GL_LIGHT[1-7] |
- * @param pname the light parameter to query. One of:
| {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_POSITION POSITION} | {@link #GL_CONSTANT_ATTENUATION CONSTANT_ATTENUATION} | {@link #GL_LINEAR_ATTENUATION LINEAR_ATTENUATION} |
| {@link #GL_QUADRATIC_ATTENUATION QUADRATIC_ATTENUATION} | {@link #GL_SPOT_DIRECTION SPOT_DIRECTION} | {@link #GL_SPOT_EXPONENT SPOT_EXPONENT} | {@link #GL_SPOT_CUTOFF SPOT_CUTOFF} |
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetLightiv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetLightiv(light, pname, memAddress(data));
- }
-
- /**
- * Returns integer information about light parameter {@code pname} for {@code light} in {@code data}.
- *
- * @param light the light for which to return information. One of:
| {@link #GL_LIGHT0 LIGHT0} | GL_LIGHT[1-7] |
- * @param pname the light parameter to query. One of:
| {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_POSITION POSITION} | {@link #GL_CONSTANT_ATTENUATION CONSTANT_ATTENUATION} | {@link #GL_LINEAR_ATTENUATION LINEAR_ATTENUATION} |
| {@link #GL_QUADRATIC_ATTENUATION QUADRATIC_ATTENUATION} | {@link #GL_SPOT_DIRECTION SPOT_DIRECTION} | {@link #GL_SPOT_EXPONENT SPOT_EXPONENT} | {@link #GL_SPOT_CUTOFF SPOT_CUTOFF} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static int glGetLighti(@NativeType("GLenum") int light, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer data = stack.callocInt(1);
- nglGetLightiv(light, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetLightfv ] ---
-
- /** Unsafe version of: {@link #glGetLightfv GetLightfv} */
- public static native void nglGetLightfv(int light, int pname, long data);
-
- /**
- * Float version of {@link #glGetLightiv GetLightiv}.
- *
- * @param light the light for which to return information
- * @param pname the light parameter to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetLightfv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetLightfv(light, pname, memAddress(data));
- }
-
- /**
- * Float version of {@link #glGetLightiv GetLightiv}.
- *
- * @param light the light for which to return information
- * @param pname the light parameter to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static float glGetLightf(@NativeType("GLenum") int light, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer data = stack.callocFloat(1);
- nglGetLightfv(light, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetMapiv ] ---
-
- /** Unsafe version of: {@link #glGetMapiv GetMapiv} */
- public static native void nglGetMapiv(int target, int query, long data);
-
- /**
- * Returns integer information about {@code query} for evaluator map {@code target} in {@code data}.
- *
- * @param target the evaluator target. One of:
| {@link #GL_MAP1_VERTEX_3 MAP1_VERTEX_3} | {@link #GL_MAP1_VERTEX_4 MAP1_VERTEX_4} | {@link #GL_MAP1_COLOR_4 MAP1_COLOR_4} | {@link #GL_MAP1_NORMAL MAP1_NORMAL} | {@link #GL_MAP1_TEXTURE_COORD_1 MAP1_TEXTURE_COORD_1} |
| {@link #GL_MAP1_TEXTURE_COORD_2 MAP1_TEXTURE_COORD_2} | {@link #GL_MAP1_TEXTURE_COORD_3 MAP1_TEXTURE_COORD_3} | {@link #GL_MAP1_TEXTURE_COORD_4 MAP1_TEXTURE_COORD_4} | {@link #GL_MAP2_VERTEX_3 MAP2_VERTEX_3} | {@link #GL_MAP2_VERTEX_4 MAP2_VERTEX_4} |
| {@link #GL_MAP2_COLOR_4 MAP2_COLOR_4} | {@link #GL_MAP2_NORMAL MAP2_NORMAL} | {@link #GL_MAP2_TEXTURE_COORD_1 MAP2_TEXTURE_COORD_1} | {@link #GL_MAP2_TEXTURE_COORD_2 MAP2_TEXTURE_COORD_2} | {@link #GL_MAP2_TEXTURE_COORD_3 MAP2_TEXTURE_COORD_3} |
| {@link #GL_MAP2_TEXTURE_COORD_4 MAP2_TEXTURE_COORD_4} |
- * @param query the information to query. One of:
| {@link #GL_ORDER ORDER} | {@link #GL_COEFF COEFF} | {@link #GL_DOMAIN DOMAIN} |
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapiv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetMapiv(target, query, memAddress(data));
- }
-
- /**
- * Returns integer information about {@code query} for evaluator map {@code target} in {@code data}.
- *
- * @param target the evaluator target. One of:
| {@link #GL_MAP1_VERTEX_3 MAP1_VERTEX_3} | {@link #GL_MAP1_VERTEX_4 MAP1_VERTEX_4} | {@link #GL_MAP1_COLOR_4 MAP1_COLOR_4} | {@link #GL_MAP1_NORMAL MAP1_NORMAL} | {@link #GL_MAP1_TEXTURE_COORD_1 MAP1_TEXTURE_COORD_1} |
| {@link #GL_MAP1_TEXTURE_COORD_2 MAP1_TEXTURE_COORD_2} | {@link #GL_MAP1_TEXTURE_COORD_3 MAP1_TEXTURE_COORD_3} | {@link #GL_MAP1_TEXTURE_COORD_4 MAP1_TEXTURE_COORD_4} | {@link #GL_MAP2_VERTEX_3 MAP2_VERTEX_3} | {@link #GL_MAP2_VERTEX_4 MAP2_VERTEX_4} |
| {@link #GL_MAP2_COLOR_4 MAP2_COLOR_4} | {@link #GL_MAP2_NORMAL MAP2_NORMAL} | {@link #GL_MAP2_TEXTURE_COORD_1 MAP2_TEXTURE_COORD_1} | {@link #GL_MAP2_TEXTURE_COORD_2 MAP2_TEXTURE_COORD_2} | {@link #GL_MAP2_TEXTURE_COORD_3 MAP2_TEXTURE_COORD_3} |
| {@link #GL_MAP2_TEXTURE_COORD_4 MAP2_TEXTURE_COORD_4} |
- * @param query the information to query. One of:
| {@link #GL_ORDER ORDER} | {@link #GL_COEFF COEFF} | {@link #GL_DOMAIN DOMAIN} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static int glGetMapi(@NativeType("GLenum") int target, @NativeType("GLenum") int query) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer data = stack.callocInt(1);
- nglGetMapiv(target, query, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetMapfv ] ---
-
- /** Unsafe version of: {@link #glGetMapfv GetMapfv} */
- public static native void nglGetMapfv(int target, int query, long data);
-
- /**
- * Float version of {@link #glGetMapiv GetMapiv}.
- *
- * @param target the evaluator map
- * @param query the information to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapfv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetMapfv(target, query, memAddress(data));
- }
-
- /**
- * Float version of {@link #glGetMapiv GetMapiv}.
- *
- * @param target the evaluator map
- * @param query the information to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static float glGetMapf(@NativeType("GLenum") int target, @NativeType("GLenum") int query) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer data = stack.callocFloat(1);
- nglGetMapfv(target, query, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetMapdv ] ---
-
- /** Unsafe version of: {@link #glGetMapdv GetMapdv} */
- public static native void nglGetMapdv(int target, int query, long data);
-
- /**
- * Double version of {@link #glGetMapiv GetMapiv}.
- *
- * @param target the evaluator map
- * @param query the information to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapdv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLdouble *") DoubleBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetMapdv(target, query, memAddress(data));
- }
-
- /**
- * Double version of {@link #glGetMapiv GetMapiv}.
- *
- * @param target the evaluator map
- * @param query the information to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static double glGetMapd(@NativeType("GLenum") int target, @NativeType("GLenum") int query) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- DoubleBuffer data = stack.callocDouble(1);
- nglGetMapdv(target, query, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetMaterialiv ] ---
-
- /** Unsafe version of: {@link #glGetMaterialiv GetMaterialiv} */
- public static native void nglGetMaterialiv(int face, int pname, long data);
-
- /**
- * Returns integer information about material property {@code pname} for {@code face} in {@code data}.
- *
- * @param face the material face for which to return information. One of:
| {@link #GL_FRONT FRONT} | {@link #GL_BACK BACK} |
- * @param pname the information to query. One of:
| {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_EMISSION EMISSION} | {@link #GL_SHININESS SHININESS} |
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMaterialiv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 1);
- }
- nglGetMaterialiv(face, pname, memAddress(data));
- }
-
- // --- [ glGetMaterialfv ] ---
-
- /** Unsafe version of: {@link #glGetMaterialfv GetMaterialfv} */
- public static native void nglGetMaterialfv(int face, int pname, long data);
-
- /**
- * Float version of {@link #glGetMaterialiv GetMaterialiv}.
- *
- * @param face the material face for which to return information
- * @param pname the information to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMaterialfv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 1);
- }
- nglGetMaterialfv(face, pname, memAddress(data));
- }
-
- // --- [ glGetPixelMapfv ] ---
-
- /** Unsafe version of: {@link #glGetPixelMapfv GetPixelMapfv} */
- public static native void nglGetPixelMapfv(int map, long data);
-
- /**
- * Returns all float values in the pixel map {@code map} in {@code data}.
- *
- * @param map the pixel map parameter to query. One of:
| {@link #GL_PIXEL_MAP_I_TO_I PIXEL_MAP_I_TO_I} | {@link #GL_PIXEL_MAP_S_TO_S PIXEL_MAP_S_TO_S} | {@link #GL_PIXEL_MAP_I_TO_R PIXEL_MAP_I_TO_R} | {@link #GL_PIXEL_MAP_I_TO_G PIXEL_MAP_I_TO_G} | {@link #GL_PIXEL_MAP_I_TO_B PIXEL_MAP_I_TO_B} |
| {@link #GL_PIXEL_MAP_I_TO_A PIXEL_MAP_I_TO_A} | {@link #GL_PIXEL_MAP_R_TO_R PIXEL_MAP_R_TO_R} | {@link #GL_PIXEL_MAP_G_TO_G PIXEL_MAP_G_TO_G} | {@link #GL_PIXEL_MAP_B_TO_B PIXEL_MAP_B_TO_B} | {@link #GL_PIXEL_MAP_A_TO_A PIXEL_MAP_A_TO_A} |
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 32);
- }
- nglGetPixelMapfv(map, memAddress(data));
- }
-
- /**
- * Returns all float values in the pixel map {@code map} in {@code data}.
- *
- * @param map the pixel map parameter to query. One of:
| {@link #GL_PIXEL_MAP_I_TO_I PIXEL_MAP_I_TO_I} | {@link #GL_PIXEL_MAP_S_TO_S PIXEL_MAP_S_TO_S} | {@link #GL_PIXEL_MAP_I_TO_R PIXEL_MAP_I_TO_R} | {@link #GL_PIXEL_MAP_I_TO_G PIXEL_MAP_I_TO_G} | {@link #GL_PIXEL_MAP_I_TO_B PIXEL_MAP_I_TO_B} |
| {@link #GL_PIXEL_MAP_I_TO_A PIXEL_MAP_I_TO_A} | {@link #GL_PIXEL_MAP_R_TO_R PIXEL_MAP_R_TO_R} | {@link #GL_PIXEL_MAP_G_TO_G PIXEL_MAP_G_TO_G} | {@link #GL_PIXEL_MAP_B_TO_B PIXEL_MAP_B_TO_B} | {@link #GL_PIXEL_MAP_A_TO_A PIXEL_MAP_A_TO_A} |
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLfloat *") long data) {
- nglGetPixelMapfv(map, data);
- }
-
- // --- [ glGetPixelMapusv ] ---
-
- /** Unsafe version of: {@link #glGetPixelMapusv GetPixelMapusv} */
- public static native void nglGetPixelMapusv(int map, long data);
-
- /**
- * Unsigned short version of {@link #glGetPixelMapfv GetPixelMapfv}.
- *
- * @param map the pixel map parameter to query
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLushort *") ShortBuffer data) {
- if (CHECKS) {
- check(data, 32);
- }
- nglGetPixelMapusv(map, memAddress(data));
- }
-
- /**
- * Unsigned short version of {@link #glGetPixelMapfv GetPixelMapfv}.
- *
- * @param map the pixel map parameter to query
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLushort *") long data) {
- nglGetPixelMapusv(map, data);
- }
-
- // --- [ glGetPixelMapuiv ] ---
-
- /** Unsafe version of: {@link #glGetPixelMapuiv GetPixelMapuiv} */
- public static native void nglGetPixelMapuiv(int map, long data);
-
- /**
- * Unsigned integer version of {@link #glGetPixelMapfv GetPixelMapfv}.
- *
- * @param map the pixel map parameter to query
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLuint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 32);
- }
- nglGetPixelMapuiv(map, memAddress(data));
- }
-
- /**
- * Unsigned integer version of {@link #glGetPixelMapfv GetPixelMapfv}.
- *
- * @param map the pixel map parameter to query
- * @param data a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLuint *") long data) {
- nglGetPixelMapuiv(map, data);
- }
-
- // --- [ glGetPointerv ] ---
-
- /** Unsafe version of: {@link #glGetPointerv GetPointerv} */
- public static void nglGetPointerv(int pname, long params) {
- GL11C.nglGetPointerv(pname, params);
- }
-
- /**
- * Returns a pointer in the current GL context.
- *
- * @param pname the pointer to return. One of:
| {@link GL43#GL_DEBUG_CALLBACK_FUNCTION DEBUG_CALLBACK_FUNCTION} | {@link GL43#GL_DEBUG_CALLBACK_USER_PARAM DEBUG_CALLBACK_USER_PARAM} |
- * @param params a buffer in which to place the returned pointer
- *
- * @see Reference Page
- */
- public static void glGetPointerv(@NativeType("GLenum") int pname, @NativeType("void **") PointerBuffer params) {
- GL11C.glGetPointerv(pname, params);
- }
-
- /**
- * Returns a pointer in the current GL context.
- *
- * @param pname the pointer to return. One of:
| {@link GL43#GL_DEBUG_CALLBACK_FUNCTION DEBUG_CALLBACK_FUNCTION} | {@link GL43#GL_DEBUG_CALLBACK_USER_PARAM DEBUG_CALLBACK_USER_PARAM} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetPointer(@NativeType("GLenum") int pname) {
- return GL11C.glGetPointer(pname);
- }
-
- // --- [ glGetPolygonStipple ] ---
-
- /** Unsafe version of: {@link #glGetPolygonStipple GetPolygonStipple} */
- public static native void nglGetPolygonStipple(long pattern);
-
- /**
- * Obtains the polygon stipple.
- *
- * @param pattern a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPolygonStipple(@NativeType("void *") ByteBuffer pattern) {
- if (CHECKS) {
- check(pattern, 128);
- }
- nglGetPolygonStipple(memAddress(pattern));
- }
-
- /**
- * Obtains the polygon stipple.
- *
- * @param pattern a buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPolygonStipple(@NativeType("void *") long pattern) {
- nglGetPolygonStipple(pattern);
- }
-
- // --- [ glGetString ] ---
-
- /** Unsafe version of: {@link #glGetString GetString} */
- public static long nglGetString(int name) {
- return GL11C.nglGetString(name);
- }
-
- /**
- * Return strings describing properties of the current GL context.
- *
- * @param name the property to query. One of:
| {@link GL11C#GL_RENDERER RENDERER} | {@link GL11C#GL_VENDOR VENDOR} | {@link GL11C#GL_EXTENSIONS EXTENSIONS} | {@link GL11C#GL_VERSION VERSION} | {@link GL20#GL_SHADING_LANGUAGE_VERSION SHADING_LANGUAGE_VERSION} |
- *
- * @see Reference Page
- */
- @Nullable
- @NativeType("GLubyte const *")
- public static String glGetString(@NativeType("GLenum") int name) {
- return GL11C.glGetString(name);
- }
-
- // --- [ glGetTexEnviv ] ---
-
- /** Unsafe version of: {@link #glGetTexEnviv GetTexEnviv} */
- public static native void nglGetTexEnviv(int env, int pname, long data);
-
- /**
- * Returns integer information about {@code pname} for {@code env} in {@code data}.
- *
- * @param env the texture environment to query. One of:
| {@link GL20#GL_POINT_SPRITE POINT_SPRITE} | {@link #GL_TEXTURE_ENV TEXTURE_ENV} | {@link GL14#GL_TEXTURE_FILTER_CONTROL TEXTURE_FILTER_CONTROL} |
- * @param pname the parameter to query. One of:
| {@link GL20#GL_COORD_REPLACE COORD_REPLACE} | {@link #GL_TEXTURE_ENV_MODE TEXTURE_ENV_MODE} | {@link #GL_TEXTURE_ENV_COLOR TEXTURE_ENV_COLOR} | {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL13#GL_COMBINE_RGB COMBINE_RGB} | {@link GL13#GL_COMBINE_ALPHA COMBINE_ALPHA} |
| {@link GL15#GL_SRC0_RGB SRC0_RGB} | {@link GL15#GL_SRC1_RGB SRC1_RGB} | {@link GL15#GL_SRC2_RGB SRC2_RGB} | {@link GL15#GL_SRC0_ALPHA SRC0_ALPHA} | {@link GL15#GL_SRC1_ALPHA SRC1_ALPHA} | {@link GL15#GL_SRC2_ALPHA SRC2_ALPHA} |
| {@link GL13#GL_OPERAND0_RGB OPERAND0_RGB} | {@link GL13#GL_OPERAND1_RGB OPERAND1_RGB} | {@link GL13#GL_OPERAND2_RGB OPERAND2_RGB} | {@link GL13#GL_OPERAND0_ALPHA OPERAND0_ALPHA} | {@link GL13#GL_OPERAND1_ALPHA OPERAND1_ALPHA} | {@link GL13#GL_OPERAND2_ALPHA OPERAND2_ALPHA} |
| {@link GL13#GL_RGB_SCALE RGB_SCALE} | {@link #GL_ALPHA_SCALE ALPHA_SCALE} |
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexEnviv(@NativeType("GLenum") int env, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 1);
- }
- nglGetTexEnviv(env, pname, memAddress(data));
- }
-
- /**
- * Returns integer information about {@code pname} for {@code env} in {@code data}.
- *
- * @param env the texture environment to query. One of:
| {@link GL20#GL_POINT_SPRITE POINT_SPRITE} | {@link #GL_TEXTURE_ENV TEXTURE_ENV} | {@link GL14#GL_TEXTURE_FILTER_CONTROL TEXTURE_FILTER_CONTROL} |
- * @param pname the parameter to query. One of:
| {@link GL20#GL_COORD_REPLACE COORD_REPLACE} | {@link #GL_TEXTURE_ENV_MODE TEXTURE_ENV_MODE} | {@link #GL_TEXTURE_ENV_COLOR TEXTURE_ENV_COLOR} | {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL13#GL_COMBINE_RGB COMBINE_RGB} | {@link GL13#GL_COMBINE_ALPHA COMBINE_ALPHA} |
| {@link GL15#GL_SRC0_RGB SRC0_RGB} | {@link GL15#GL_SRC1_RGB SRC1_RGB} | {@link GL15#GL_SRC2_RGB SRC2_RGB} | {@link GL15#GL_SRC0_ALPHA SRC0_ALPHA} | {@link GL15#GL_SRC1_ALPHA SRC1_ALPHA} | {@link GL15#GL_SRC2_ALPHA SRC2_ALPHA} |
| {@link GL13#GL_OPERAND0_RGB OPERAND0_RGB} | {@link GL13#GL_OPERAND1_RGB OPERAND1_RGB} | {@link GL13#GL_OPERAND2_RGB OPERAND2_RGB} | {@link GL13#GL_OPERAND0_ALPHA OPERAND0_ALPHA} | {@link GL13#GL_OPERAND1_ALPHA OPERAND1_ALPHA} | {@link GL13#GL_OPERAND2_ALPHA OPERAND2_ALPHA} |
| {@link GL13#GL_RGB_SCALE RGB_SCALE} | {@link #GL_ALPHA_SCALE ALPHA_SCALE} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static int glGetTexEnvi(@NativeType("GLenum") int env, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer data = stack.callocInt(1);
- nglGetTexEnviv(env, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetTexEnvfv ] ---
-
- /** Unsafe version of: {@link #glGetTexEnvfv GetTexEnvfv} */
- public static native void nglGetTexEnvfv(int env, int pname, long data);
-
- /**
- * Float version of {@link #glGetTexEnviv GetTexEnviv}.
- *
- * @param env the texture environment to query
- * @param pname the parameter to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexEnvfv(@NativeType("GLenum") int env, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 1);
- }
- nglGetTexEnvfv(env, pname, memAddress(data));
- }
-
- /**
- * Float version of {@link #glGetTexEnviv GetTexEnviv}.
- *
- * @param env the texture environment to query
- * @param pname the parameter to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static float glGetTexEnvf(@NativeType("GLenum") int env, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer data = stack.callocFloat(1);
- nglGetTexEnvfv(env, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetTexGeniv ] ---
-
- /** Unsafe version of: {@link #glGetTexGeniv GetTexGeniv} */
- public static native void nglGetTexGeniv(int coord, int pname, long data);
-
- /**
- * Returns integer information about {@code pname} for {@code coord} in {@code data}.
- *
- * @param coord the coord to query. One of:
| {@link #GL_S S} | {@link #GL_T T} | {@link #GL_R R} | {@link #GL_Q Q} |
- * @param pname the parameter to query. One of:
| {@link #GL_EYE_PLANE EYE_PLANE} | {@link #GL_OBJECT_PLANE OBJECT_PLANE} | {@link #GL_TEXTURE_GEN_MODE TEXTURE_GEN_MODE} |
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGeniv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer data) {
- if (CHECKS) {
- check(data, 1);
- }
- nglGetTexGeniv(coord, pname, memAddress(data));
- }
-
- /**
- * Returns integer information about {@code pname} for {@code coord} in {@code data}.
- *
- * @param coord the coord to query. One of:
| {@link #GL_S S} | {@link #GL_T T} | {@link #GL_R R} | {@link #GL_Q Q} |
- * @param pname the parameter to query. One of:
| {@link #GL_EYE_PLANE EYE_PLANE} | {@link #GL_OBJECT_PLANE OBJECT_PLANE} | {@link #GL_TEXTURE_GEN_MODE TEXTURE_GEN_MODE} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static int glGetTexGeni(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer data = stack.callocInt(1);
- nglGetTexGeniv(coord, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetTexGenfv ] ---
-
- /** Unsafe version of: {@link #glGetTexGenfv GetTexGenfv} */
- public static native void nglGetTexGenfv(int coord, int pname, long data);
-
- /**
- * Float version of {@link #glGetTexGeniv GetTexGeniv}.
- *
- * @param coord the coord to query
- * @param pname the parameter to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGenfv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetTexGenfv(coord, pname, memAddress(data));
- }
-
- /**
- * Float version of {@link #glGetTexGeniv GetTexGeniv}.
- *
- * @param coord the coord to query
- * @param pname the parameter to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static float glGetTexGenf(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer data = stack.callocFloat(1);
- nglGetTexGenfv(coord, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetTexGendv ] ---
-
- /** Unsafe version of: {@link #glGetTexGendv GetTexGendv} */
- public static native void nglGetTexGendv(int coord, int pname, long data);
-
- /**
- * Double version of {@link #glGetTexGeniv GetTexGeniv}.
- *
- * @param coord the coord to query
- * @param pname the parameter to query
- * @param data a scalar or buffer in which to place the returned data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGendv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLdouble *") DoubleBuffer data) {
- if (CHECKS) {
- check(data, 4);
- }
- nglGetTexGendv(coord, pname, memAddress(data));
- }
-
- /**
- * Double version of {@link #glGetTexGeniv GetTexGeniv}.
- *
- * @param coord the coord to query
- * @param pname the parameter to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("void")
- public static double glGetTexGend(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- DoubleBuffer data = stack.callocDouble(1);
- nglGetTexGendv(coord, pname, memAddress(data));
- return data.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetTexImage ] ---
-
- /** Unsafe version of: {@link #glGetTexImage GetTexImage} */
- public static void nglGetTexImage(int tex, int level, int format, int type, long pixels) {
- GL11C.nglGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") ByteBuffer pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") long pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") ShortBuffer pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") IntBuffer pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") FloatBuffer pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Obtains texture images.
- *
- * @param tex the texture (or texture face) to be obtained. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_X TEXTURE_CUBE_MAP_POSITIVE_X} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_X TEXTURE_CUBE_MAP_NEGATIVE_X} |
| {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Y TEXTURE_CUBE_MAP_POSITIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y TEXTURE_CUBE_MAP_NEGATIVE_Y} | {@link GL13#GL_TEXTURE_CUBE_MAP_POSITIVE_Z TEXTURE_CUBE_MAP_POSITIVE_Z} | {@link GL13#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z TEXTURE_CUBE_MAP_NEGATIVE_Z} |
- * @param level the level-of-detail number
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") DoubleBuffer pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- // --- [ glGetTexLevelParameteriv ] ---
-
- /** Unsafe version of: {@link #glGetTexLevelParameteriv GetTexLevelParameteriv} */
- public static void nglGetTexLevelParameteriv(int target, int level, int pname, long params) {
- GL11C.nglGetTexLevelParameteriv(target, level, pname, params);
- }
-
- /**
- * Places integer information about texture image parameter {@code pname} for level-of-detail {@code level} of the specified {@code target} into {@code params}.
- *
- * @param target the texture image target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} | {@link GL12#GL_PROXY_TEXTURE_3D PROXY_TEXTURE_3D} |
| {@link GL30#GL_PROXY_TEXTURE_2D_ARRAY PROXY_TEXTURE_2D_ARRAY} | {@link GL40#GL_PROXY_TEXTURE_CUBE_MAP_ARRAY PROXY_TEXTURE_CUBE_MAP_ARRAY} | {@link GL32#GL_PROXY_TEXTURE_2D_MULTISAMPLE PROXY_TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param level the level-of-detail number
- * @param pname the parameter to query. One of:
| {@link GL11C#GL_TEXTURE_WIDTH TEXTURE_WIDTH} | {@link GL11C#GL_TEXTURE_HEIGHT TEXTURE_HEIGHT} | {@link GL12#GL_TEXTURE_DEPTH TEXTURE_DEPTH} | {@link GL32#GL_TEXTURE_SAMPLES TEXTURE_SAMPLES} |
| {@link GL32#GL_TEXTURE_FIXED_SAMPLE_LOCATIONS TEXTURE_FIXED_SAMPLE_LOCATIONS} | {@link GL11C#GL_TEXTURE_INTERNAL_FORMAT TEXTURE_INTERNAL_FORMAT} | {@link GL11C#GL_TEXTURE_RED_SIZE TEXTURE_RED_SIZE} | {@link GL11C#GL_TEXTURE_GREEN_SIZE TEXTURE_GREEN_SIZE} |
| {@link GL11C#GL_TEXTURE_BLUE_SIZE TEXTURE_BLUE_SIZE} | {@link GL11C#GL_TEXTURE_ALPHA_SIZE TEXTURE_ALPHA_SIZE} | {@link GL14#GL_TEXTURE_DEPTH_SIZE TEXTURE_DEPTH_SIZE} | {@link GL30#GL_TEXTURE_STENCIL_SIZE TEXTURE_STENCIL_SIZE} |
| {@link GL30#GL_TEXTURE_SHARED_SIZE TEXTURE_SHARED_SIZE} | {@link GL30#GL_TEXTURE_ALPHA_TYPE TEXTURE_ALPHA_TYPE} | {@link GL30#GL_TEXTURE_DEPTH_TYPE TEXTURE_DEPTH_TYPE} | {@link GL13#GL_TEXTURE_COMPRESSED TEXTURE_COMPRESSED} |
| {@link GL13#GL_TEXTURE_COMPRESSED_IMAGE_SIZE TEXTURE_COMPRESSED_IMAGE_SIZE} | {@link GL31#GL_TEXTURE_BUFFER_DATA_STORE_BINDING TEXTURE_BUFFER_DATA_STORE_BINDING} | {@link GL43#GL_TEXTURE_BUFFER_OFFSET TEXTURE_BUFFER_OFFSET} | {@link GL43#GL_TEXTURE_BUFFER_SIZE TEXTURE_BUFFER_SIZE} |
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexLevelParameteriv(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL11C.glGetTexLevelParameteriv(target, level, pname, params);
- }
-
- /**
- * Places integer information about texture image parameter {@code pname} for level-of-detail {@code level} of the specified {@code target} into {@code params}.
- *
- * @param target the texture image target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} | {@link GL12#GL_PROXY_TEXTURE_3D PROXY_TEXTURE_3D} |
| {@link GL30#GL_PROXY_TEXTURE_2D_ARRAY PROXY_TEXTURE_2D_ARRAY} | {@link GL40#GL_PROXY_TEXTURE_CUBE_MAP_ARRAY PROXY_TEXTURE_CUBE_MAP_ARRAY} | {@link GL32#GL_PROXY_TEXTURE_2D_MULTISAMPLE PROXY_TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param level the level-of-detail number
- * @param pname the parameter to query. One of:
| {@link GL11C#GL_TEXTURE_WIDTH TEXTURE_WIDTH} | {@link GL11C#GL_TEXTURE_HEIGHT TEXTURE_HEIGHT} | {@link GL12#GL_TEXTURE_DEPTH TEXTURE_DEPTH} | {@link GL32#GL_TEXTURE_SAMPLES TEXTURE_SAMPLES} |
| {@link GL32#GL_TEXTURE_FIXED_SAMPLE_LOCATIONS TEXTURE_FIXED_SAMPLE_LOCATIONS} | {@link GL11C#GL_TEXTURE_INTERNAL_FORMAT TEXTURE_INTERNAL_FORMAT} | {@link GL11C#GL_TEXTURE_RED_SIZE TEXTURE_RED_SIZE} | {@link GL11C#GL_TEXTURE_GREEN_SIZE TEXTURE_GREEN_SIZE} |
| {@link GL11C#GL_TEXTURE_BLUE_SIZE TEXTURE_BLUE_SIZE} | {@link GL11C#GL_TEXTURE_ALPHA_SIZE TEXTURE_ALPHA_SIZE} | {@link GL14#GL_TEXTURE_DEPTH_SIZE TEXTURE_DEPTH_SIZE} | {@link GL30#GL_TEXTURE_STENCIL_SIZE TEXTURE_STENCIL_SIZE} |
| {@link GL30#GL_TEXTURE_SHARED_SIZE TEXTURE_SHARED_SIZE} | {@link GL30#GL_TEXTURE_ALPHA_TYPE TEXTURE_ALPHA_TYPE} | {@link GL30#GL_TEXTURE_DEPTH_TYPE TEXTURE_DEPTH_TYPE} | {@link GL13#GL_TEXTURE_COMPRESSED TEXTURE_COMPRESSED} |
| {@link GL13#GL_TEXTURE_COMPRESSED_IMAGE_SIZE TEXTURE_COMPRESSED_IMAGE_SIZE} | {@link GL31#GL_TEXTURE_BUFFER_DATA_STORE_BINDING TEXTURE_BUFFER_DATA_STORE_BINDING} | {@link GL43#GL_TEXTURE_BUFFER_OFFSET TEXTURE_BUFFER_OFFSET} | {@link GL43#GL_TEXTURE_BUFFER_SIZE TEXTURE_BUFFER_SIZE} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetTexLevelParameteri(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname) {
- return GL11C.glGetTexLevelParameteri(target, level, pname);
- }
-
- // --- [ glGetTexLevelParameterfv ] ---
-
- /** Unsafe version of: {@link #glGetTexLevelParameterfv GetTexLevelParameterfv} */
- public static void nglGetTexLevelParameterfv(int target, int level, int pname, long params) {
- GL11C.nglGetTexLevelParameterfv(target, level, pname, params);
- }
-
- /**
- * Float version of {@link #glGetTexLevelParameteriv GetTexLevelParameteriv}.
- *
- * @param target the texture image target
- * @param level the level-of-detail number
- * @param pname the parameter to query
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexLevelParameterfv(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- GL11C.glGetTexLevelParameterfv(target, level, pname, params);
- }
-
- /**
- * Float version of {@link #glGetTexLevelParameteriv GetTexLevelParameteriv}.
- *
- * @param target the texture image target
- * @param level the level-of-detail number
- * @param pname the parameter to query
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static float glGetTexLevelParameterf(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname) {
- return GL11C.glGetTexLevelParameterf(target, level, pname);
- }
-
- // --- [ glGetTexParameteriv ] ---
-
- /** Unsafe version of: {@link #glGetTexParameteriv GetTexParameteriv} */
- public static void nglGetTexParameteriv(int target, int pname, long params) {
- GL11C.nglGetTexParameteriv(target, pname, params);
- }
-
- /**
- * Place integer information about texture parameter {@code pname} for the specified {@code target} into {@code params}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param pname the parameter to query. One of:
| {@link GL12#GL_TEXTURE_BASE_LEVEL TEXTURE_BASE_LEVEL} | {@link GL11C#GL_TEXTURE_BORDER_COLOR TEXTURE_BORDER_COLOR} | {@link GL14#GL_TEXTURE_COMPARE_MODE TEXTURE_COMPARE_MODE} | {@link GL14#GL_TEXTURE_COMPARE_FUNC TEXTURE_COMPARE_FUNC} |
| {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL11C#GL_TEXTURE_MAG_FILTER TEXTURE_MAG_FILTER} | {@link GL12#GL_TEXTURE_MAX_LEVEL TEXTURE_MAX_LEVEL} | {@link GL12#GL_TEXTURE_MAX_LOD TEXTURE_MAX_LOD} |
| {@link GL11C#GL_TEXTURE_MIN_FILTER TEXTURE_MIN_FILTER} | {@link GL12#GL_TEXTURE_MIN_LOD TEXTURE_MIN_LOD} | {@link GL33#GL_TEXTURE_SWIZZLE_R TEXTURE_SWIZZLE_R} | {@link GL33#GL_TEXTURE_SWIZZLE_G TEXTURE_SWIZZLE_G} |
| {@link GL33#GL_TEXTURE_SWIZZLE_B TEXTURE_SWIZZLE_B} | {@link GL33#GL_TEXTURE_SWIZZLE_A TEXTURE_SWIZZLE_A} | {@link GL33#GL_TEXTURE_SWIZZLE_RGBA TEXTURE_SWIZZLE_RGBA} | {@link GL11C#GL_TEXTURE_WRAP_S TEXTURE_WRAP_S} |
| {@link GL11C#GL_TEXTURE_WRAP_T TEXTURE_WRAP_T} | {@link GL12#GL_TEXTURE_WRAP_R TEXTURE_WRAP_R} | {@link GL14#GL_DEPTH_TEXTURE_MODE DEPTH_TEXTURE_MODE} | {@link GL14#GL_GENERATE_MIPMAP GENERATE_MIPMAP} |
| {@link GL42#GL_IMAGE_FORMAT_COMPATIBILITY_TYPE IMAGE_FORMAT_COMPATIBILITY_TYPE} | {@link GL42#GL_TEXTURE_IMMUTABLE_FORMAT TEXTURE_IMMUTABLE_FORMAT} | {@link GL43#GL_TEXTURE_IMMUTABLE_LEVELS TEXTURE_IMMUTABLE_LEVELS} | {@link GL43#GL_TEXTURE_VIEW_MIN_LEVEL TEXTURE_VIEW_MIN_LEVEL} |
| {@link GL43#GL_TEXTURE_VIEW_NUM_LEVELS TEXTURE_VIEW_NUM_LEVELS} | {@link GL43#GL_TEXTURE_VIEW_MIN_LAYER TEXTURE_VIEW_MIN_LAYER} | {@link GL43#GL_TEXTURE_VIEW_NUM_LAYERS TEXTURE_VIEW_NUM_LAYERS} |
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL11C.glGetTexParameteriv(target, pname, params);
- }
-
- /**
- * Place integer information about texture parameter {@code pname} for the specified {@code target} into {@code params}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param pname the parameter to query. One of:
| {@link GL12#GL_TEXTURE_BASE_LEVEL TEXTURE_BASE_LEVEL} | {@link GL11C#GL_TEXTURE_BORDER_COLOR TEXTURE_BORDER_COLOR} | {@link GL14#GL_TEXTURE_COMPARE_MODE TEXTURE_COMPARE_MODE} | {@link GL14#GL_TEXTURE_COMPARE_FUNC TEXTURE_COMPARE_FUNC} |
| {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL11C#GL_TEXTURE_MAG_FILTER TEXTURE_MAG_FILTER} | {@link GL12#GL_TEXTURE_MAX_LEVEL TEXTURE_MAX_LEVEL} | {@link GL12#GL_TEXTURE_MAX_LOD TEXTURE_MAX_LOD} |
| {@link GL11C#GL_TEXTURE_MIN_FILTER TEXTURE_MIN_FILTER} | {@link GL12#GL_TEXTURE_MIN_LOD TEXTURE_MIN_LOD} | {@link GL33#GL_TEXTURE_SWIZZLE_R TEXTURE_SWIZZLE_R} | {@link GL33#GL_TEXTURE_SWIZZLE_G TEXTURE_SWIZZLE_G} |
| {@link GL33#GL_TEXTURE_SWIZZLE_B TEXTURE_SWIZZLE_B} | {@link GL33#GL_TEXTURE_SWIZZLE_A TEXTURE_SWIZZLE_A} | {@link GL33#GL_TEXTURE_SWIZZLE_RGBA TEXTURE_SWIZZLE_RGBA} | {@link GL11C#GL_TEXTURE_WRAP_S TEXTURE_WRAP_S} |
| {@link GL11C#GL_TEXTURE_WRAP_T TEXTURE_WRAP_T} | {@link GL12#GL_TEXTURE_WRAP_R TEXTURE_WRAP_R} | {@link GL14#GL_DEPTH_TEXTURE_MODE DEPTH_TEXTURE_MODE} | {@link GL14#GL_GENERATE_MIPMAP GENERATE_MIPMAP} |
| {@link GL42#GL_IMAGE_FORMAT_COMPATIBILITY_TYPE IMAGE_FORMAT_COMPATIBILITY_TYPE} | {@link GL42#GL_TEXTURE_IMMUTABLE_FORMAT TEXTURE_IMMUTABLE_FORMAT} | {@link GL43#GL_TEXTURE_IMMUTABLE_LEVELS TEXTURE_IMMUTABLE_LEVELS} | {@link GL43#GL_TEXTURE_VIEW_MIN_LEVEL TEXTURE_VIEW_MIN_LEVEL} |
| {@link GL43#GL_TEXTURE_VIEW_NUM_LEVELS TEXTURE_VIEW_NUM_LEVELS} | {@link GL43#GL_TEXTURE_VIEW_MIN_LAYER TEXTURE_VIEW_MIN_LAYER} | {@link GL43#GL_TEXTURE_VIEW_NUM_LAYERS TEXTURE_VIEW_NUM_LAYERS} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetTexParameteri(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- return GL11C.glGetTexParameteri(target, pname);
- }
-
- // --- [ glGetTexParameterfv ] ---
-
- /** Unsafe version of: {@link #glGetTexParameterfv GetTexParameterfv} */
- public static void nglGetTexParameterfv(int target, int pname, long params) {
- GL11C.nglGetTexParameterfv(target, pname, params);
- }
-
- /**
- * Float version of {@link #glGetTexParameteriv GetTexParameteriv}.
- *
- * @param target the texture target
- * @param pname the parameter to query
- * @param params a scalar or buffer in which to place the returned data
- *
- * @see Reference Page
- */
- public static void glGetTexParameterfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- GL11C.glGetTexParameterfv(target, pname, params);
- }
-
- /**
- * Float version of {@link #glGetTexParameteriv GetTexParameteriv}.
- *
- * @param target the texture target
- * @param pname the parameter to query
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static float glGetTexParameterf(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- return GL11C.glGetTexParameterf(target, pname);
- }
-
- // --- [ glHint ] ---
-
- /**
- * Certain aspects of GL behavior, when there is room for variation, may be controlled with this function. The initial value for all hints is
- * {@link GL11C#GL_DONT_CARE DONT_CARE}.
- *
- * @param target the behavior to control. One of:
| {@link GL11C#GL_LINE_SMOOTH_HINT LINE_SMOOTH_HINT} | {@link GL11C#GL_POLYGON_SMOOTH_HINT POLYGON_SMOOTH_HINT} | {@link GL13#GL_TEXTURE_COMPRESSION_HINT TEXTURE_COMPRESSION_HINT} |
| {@link GL20#GL_FRAGMENT_SHADER_DERIVATIVE_HINT FRAGMENT_SHADER_DERIVATIVE_HINT} |
- * @param hint the behavior hint. One of:
| {@link GL11C#GL_FASTEST FASTEST} | {@link GL11C#GL_NICEST NICEST} | {@link GL11C#GL_DONT_CARE DONT_CARE} |
- *
- * @see Reference Page
- */
- public static void glHint(@NativeType("GLenum") int target, @NativeType("GLenum") int hint) {
- GL11C.glHint(target, hint);
- }
-
- // --- [ glIndexi ] ---
-
- /**
- * Updates the current (single-valued) color index.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexi(@NativeType("GLint") int index);
-
- // --- [ glIndexub ] ---
-
- /**
- * Unsigned byte version of {@link #glIndexi Indexi}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexub(@NativeType("GLubyte") byte index);
-
- // --- [ glIndexs ] ---
-
- /**
- * Short version of {@link #glIndexi Indexi}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexs(@NativeType("GLshort") short index);
-
- // --- [ glIndexf ] ---
-
- /**
- * Float version of {@link #glIndexi Indexi}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexf(@NativeType("GLfloat") float index);
-
- // --- [ glIndexd ] ---
-
- /**
- * Double version of {@link #glIndexi Indexi}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexd(@NativeType("GLdouble") double index);
-
- // --- [ glIndexiv ] ---
-
- /** Unsafe version of: {@link #glIndexiv Indexiv} */
- public static native void nglIndexiv(long index);
-
- /**
- * Pointer version of {@link #glIndexi Indexi}
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexiv(@NativeType("GLint const *") IntBuffer index) {
- if (CHECKS) {
- check(index, 1);
- }
- nglIndexiv(memAddress(index));
- }
-
- // --- [ glIndexubv ] ---
-
- /** Unsafe version of: {@link #glIndexubv Indexubv} */
- public static native void nglIndexubv(long index);
-
- /**
- * Pointer version of {@link #glIndexub Indexub}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexubv(@NativeType("GLubyte const *") ByteBuffer index) {
- if (CHECKS) {
- check(index, 1);
- }
- nglIndexubv(memAddress(index));
- }
-
- // --- [ glIndexsv ] ---
-
- /** Unsafe version of: {@link #glIndexsv Indexsv} */
- public static native void nglIndexsv(long index);
-
- /**
- * Pointer version of {@link #glIndexs Indexs}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexsv(@NativeType("GLshort const *") ShortBuffer index) {
- if (CHECKS) {
- check(index, 1);
- }
- nglIndexsv(memAddress(index));
- }
-
- // --- [ glIndexfv ] ---
-
- /** Unsafe version of: {@link #glIndexfv Indexfv} */
- public static native void nglIndexfv(long index);
-
- /**
- * Pointer version of {@link #glIndexf Indexf}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexfv(@NativeType("GLfloat const *") FloatBuffer index) {
- if (CHECKS) {
- check(index, 1);
- }
- nglIndexfv(memAddress(index));
- }
-
- // --- [ glIndexdv ] ---
-
- /** Unsafe version of: {@link #glIndexdv Indexdv} */
- public static native void nglIndexdv(long index);
-
- /**
- * Pointer version of {@link #glIndexd Indexd}.
- *
- * @param index the value to which the current color index should be set
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexdv(@NativeType("GLdouble const *") DoubleBuffer index) {
- if (CHECKS) {
- check(index, 1);
- }
- nglIndexdv(memAddress(index));
- }
-
- // --- [ glIndexMask ] ---
-
- /**
- * The least significant n bits of mask, where n is the number of bits in a color index buffer, specify a mask. Where a 1 appears in this mask, the
- * corresponding bit in the color index buffer (or buffers) is written; where a 0 appears, the bit is not written. This mask applies only in color index
- * mode.
- *
- * @param mask the color index mask value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glIndexMask(@NativeType("GLuint") int mask);
-
- // --- [ glIndexPointer ] ---
-
- /**
- * Unsafe version of: {@link #glIndexPointer IndexPointer}
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} |
- */
- public static native void nglIndexPointer(int type, int stride, long pointer);
-
- /**
- * Specifies the location and organization of a color index array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color index array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglIndexPointer(type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color index array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color index array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglIndexPointer(type, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a color index array.
- *
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color index array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexPointer(@NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglIndexPointer(GL11.GL_UNSIGNED_BYTE, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color index array.
- *
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color index array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexPointer(@NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglIndexPointer(GL11.GL_SHORT, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a color index array.
- *
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the color index array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexPointer(@NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglIndexPointer(GL11.GL_INT, stride, memAddress(pointer));
- }
-
- // --- [ glInitNames ] ---
-
- /**
- * Clears the selection name stack.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glInitNames();
-
- // --- [ glInterleavedArrays ] ---
-
- /** Unsafe version of: {@link #glInterleavedArrays InterleavedArrays} */
- public static native void nglInterleavedArrays(int format, int stride, long pointer);
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglInterleavedArrays(format, stride, memAddress(pointer));
- }
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglInterleavedArrays(format, stride, pointer);
- }
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglInterleavedArrays(format, stride, memAddress(pointer));
- }
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglInterleavedArrays(format, stride, memAddress(pointer));
- }
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- nglInterleavedArrays(format, stride, memAddress(pointer));
- }
-
- /**
- * Efficiently initializes the six vertex arrays and their enables to one of 14 configurations.
- *
- * @param format the interleaved array format. One of:
| {@link #GL_V2F V2F} | {@link #GL_V3F V3F} | {@link #GL_C4UB_V2F C4UB_V2F} | {@link #GL_C4UB_V3F C4UB_V3F} | {@link #GL_C3F_V3F C3F_V3F} | {@link #GL_N3F_V3F N3F_V3F} | {@link #GL_C4F_N3F_V3F C4F_N3F_V3F} | {@link #GL_T2F_V3F T2F_V3F} |
| {@link #GL_T4F_V4F T4F_V4F} | {@link #GL_T2F_C4UB_V3F T2F_C4UB_V3F} | {@link #GL_T2F_C3F_V3F T2F_C3F_V3F} | {@link #GL_T2F_N3F_V3F T2F_N3F_V3F} | {@link #GL_T2F_C4F_N3F_V3F T2F_C4F_N3F_V3F} | {@link #GL_T4F_C4F_N3F_V4F T4F_C4F_N3F_V4F} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") DoubleBuffer pointer) {
- nglInterleavedArrays(format, stride, memAddress(pointer));
- }
-
- // --- [ glIsEnabled ] ---
-
- /**
- * Determines if {@code cap} is currently enabled (as with {@link #glEnable Enable}) or disabled.
- *
- * @param cap the enable state to query
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsEnabled(@NativeType("GLenum") int cap) {
- return GL11C.glIsEnabled(cap);
- }
-
- // --- [ glIsList ] ---
-
- /**
- * Returns true if the {@code list} is the index of some display list.
- *
- * @param list the list index to query
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLboolean")
- public static native boolean glIsList(@NativeType("GLuint") int list);
-
- // --- [ glIsTexture ] ---
-
- /**
- * Returns true if {@code texture} is the name of a texture object.
- *
- * @param texture the texture name to query
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsTexture(@NativeType("GLuint") int texture) {
- return GL11C.glIsTexture(texture);
- }
-
- // --- [ glLightModeli ] ---
-
- /**
- * Set the integer value of a lighting model parameter.
- *
- * @param pname the lighting model parameter to set. One of:
| {@link #GL_LIGHT_MODEL_AMBIENT LIGHT_MODEL_AMBIENT} | {@link #GL_LIGHT_MODEL_LOCAL_VIEWER LIGHT_MODEL_LOCAL_VIEWER} | {@link #GL_LIGHT_MODEL_TWO_SIDE LIGHT_MODEL_TWO_SIDE} |
| {@link GL12#GL_LIGHT_MODEL_COLOR_CONTROL LIGHT_MODEL_COLOR_CONTROL} |
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLightModeli(@NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glLightModelf ] ---
-
- /**
- * Float version of {@link #glLightModeli LightModeli}.
- *
- * @param pname the lighting model parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLightModelf(@NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glLightModeliv ] ---
-
- /** Unsafe version of: {@link #glLightModeliv LightModeliv} */
- public static native void nglLightModeliv(int pname, long params);
-
- /**
- * Pointer version of {@link #glLightModeli LightModeli}.
- *
- * @param pname the lighting model parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightModeliv(@NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglLightModeliv(pname, memAddress(params));
- }
-
- // --- [ glLightModelfv ] ---
-
- /** Unsafe version of: {@link #glLightModelfv LightModelfv} */
- public static native void nglLightModelfv(int pname, long params);
-
- /**
- * Pointer version of {@link #glLightModelf LightModelf}.
- *
- * @param pname the lighting model parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightModelfv(@NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglLightModelfv(pname, memAddress(params));
- }
-
- // --- [ glLighti ] ---
-
- /**
- * Sets the integer value of a light parameter.
- *
- * @param light the light for which to set the parameter. One of:
| {@link #GL_LIGHT0 LIGHT0} | GL_LIGHT[1-7] |
- * @param pname the parameter to set. One of:
| {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_POSITION POSITION} | {@link #GL_CONSTANT_ATTENUATION CONSTANT_ATTENUATION} | {@link #GL_LINEAR_ATTENUATION LINEAR_ATTENUATION} |
| {@link #GL_QUADRATIC_ATTENUATION QUADRATIC_ATTENUATION} | {@link #GL_SPOT_DIRECTION SPOT_DIRECTION} | {@link #GL_SPOT_EXPONENT SPOT_EXPONENT} | {@link #GL_SPOT_CUTOFF SPOT_CUTOFF} |
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLighti(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glLightf ] ---
-
- /**
- * Float version of {@link #glLighti Lighti}.
- *
- * @param light the light for which to set the parameter
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLightf(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glLightiv ] ---
-
- /** Unsafe version of: {@link #glLightiv Lightiv} */
- public static native void nglLightiv(int light, int pname, long params);
-
- /**
- * Pointer version of {@link #glLighti Lighti}.
- *
- * @param light the light for which to set the parameter
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightiv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglLightiv(light, pname, memAddress(params));
- }
-
- // --- [ glLightfv ] ---
-
- /** Unsafe version of: {@link #glLightfv Lightfv} */
- public static native void nglLightfv(int light, int pname, long params);
-
- /**
- * Pointer version of {@link #glLightf Lightf}.
- *
- * @param light the light for which to set the parameter
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightfv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglLightfv(light, pname, memAddress(params));
- }
-
- // --- [ glLineStipple ] ---
-
- /**
- * Defines a line stipple. It determines those fragments that are to be drawn when the line is rasterized. Line stippling may be enabled or disabled using
- * {@link #glEnable Enable} or {@link #glDisable Disable} with the constant {@link #GL_LINE_STIPPLE LINE_STIPPLE}. When disabled, it is as if the line stipple has its default value.
- *
- * @param factor a count that is used to modify the effective line stipple by causing each bit in pattern to be used {@code factor} times. {@code factor} is clamped
- * to the range [1, 256].
- * @param pattern an unsigned short integer whose 16 bits define the stipple pattern
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLineStipple(@NativeType("GLint") int factor, @NativeType("GLushort") short pattern);
-
- // --- [ glLineWidth ] ---
-
- /**
- * Sets the width of rasterized line segments. The default width is 1.0.
- *
- * @param width the line width
- *
- * @see Reference Page
- */
- public static void glLineWidth(@NativeType("GLfloat") float width) {
- GL11C.glLineWidth(width);
- }
-
- // --- [ glListBase ] ---
-
- /**
- * Sets the display list base.
- *
- * @param base the display list base offset
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glListBase(@NativeType("GLuint") int base);
-
- // --- [ glLoadMatrixf ] ---
-
- /** Unsafe version of: {@link #glLoadMatrixf LoadMatrixf} */
- public static native void nglLoadMatrixf(long m);
-
- /**
- * Sets the current matrix to a 4 × 4 matrix in column-major order.
- *
- * The matrix is stored as 16 consecutive values, i.e. as:
- *
- *
- * | a1 | a5 | a9 | a13 |
- * | a2 | a6 | a10 | a14 |
- * | a3 | a7 | a11 | a15 |
- * | a4 | a8 | a12 | a16 |
- *
- *
- * This differs from the standard row-major ordering for matrix elements. If the standard ordering is used, all of the subsequent transformation equations
- * are transposed, and the columns representing vectors become rows.
- *
- * @param m the matrix data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLoadMatrixf(@NativeType("GLfloat const *") FloatBuffer m) {
- if (CHECKS) {
- check(m, 16);
- }
- nglLoadMatrixf(memAddress(m));
- }
-
- // --- [ glLoadMatrixd ] ---
-
- /** Unsafe version of: {@link #glLoadMatrixd LoadMatrixd} */
- public static native void nglLoadMatrixd(long m);
-
- /**
- * Double version of {@link #glLoadMatrixf LoadMatrixf}.
- *
- * @param m the matrix data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLoadMatrixd(@NativeType("GLdouble const *") DoubleBuffer m) {
- if (CHECKS) {
- check(m, 16);
- }
- nglLoadMatrixd(memAddress(m));
- }
-
- // --- [ glLoadIdentity ] ---
-
- /**
- * Sets the current matrix to the identity matrix.
- *
- * Calling this function is equivalent to calling {@link #glLoadMatrixf LoadMatrixf} with the following matrix:
- *
- *
- * | 1 | 0 | 0 | 0 |
- * | 0 | 1 | 0 | 0 |
- * | 0 | 0 | 1 | 0 |
- * | 0 | 0 | 0 | 1 |
- *
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLoadIdentity();
-
- // --- [ glLoadName ] ---
-
- /**
- * Replaces the value on the top of the selection stack with {@code name}.
- *
- * @param name the name to load
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glLoadName(@NativeType("GLuint") int name);
-
- // --- [ glLogicOp ] ---
-
- /**
- * Sets the logical framebuffer operation.
- *
- * @param op the operation to set. One of:
| {@link GL11C#GL_CLEAR CLEAR} | {@link GL11C#GL_AND AND} | {@link GL11C#GL_AND_REVERSE AND_REVERSE} | {@link GL11C#GL_COPY COPY} | {@link GL11C#GL_AND_INVERTED AND_INVERTED} | {@link GL11C#GL_NOOP NOOP} | {@link GL11C#GL_XOR XOR} | {@link GL11C#GL_OR OR} | {@link GL11C#GL_NOR NOR} | {@link GL11C#GL_EQUIV EQUIV} | {@link GL11C#GL_INVERT INVERT} | {@link GL11C#GL_OR_REVERSE OR_REVERSE} | {@link GL11C#GL_COPY_INVERTED COPY_INVERTED} |
| {@link GL11C#GL_OR_INVERTED OR_INVERTED} | {@link GL11C#GL_NAND NAND} | {@link GL11C#GL_SET SET} |
- *
- * @see Reference Page
- */
- public static void glLogicOp(@NativeType("GLenum") int op) {
- GL11C.glLogicOp(op);
- }
-
- // --- [ glMap1f ] ---
-
- /** Unsafe version of: {@link #glMap1f Map1f} */
- public static native void nglMap1f(int target, float u1, float u2, int stride, int order, long points);
-
- /**
- * Defines a polynomial or rational polynomial mapping to produce vertex, normal, texture coordinates and colors. The values so produced are sent on to
- * further stages of the GL as if they had been provided directly by the client.
- *
- * @param target the evaluator target. One of:
| {@link #GL_MAP1_VERTEX_3 MAP1_VERTEX_3} | {@link #GL_MAP1_VERTEX_4 MAP1_VERTEX_4} | {@link #GL_MAP1_COLOR_4 MAP1_COLOR_4} | {@link #GL_MAP1_NORMAL MAP1_NORMAL} | {@link #GL_MAP1_TEXTURE_COORD_1 MAP1_TEXTURE_COORD_1} |
| {@link #GL_MAP1_TEXTURE_COORD_2 MAP1_TEXTURE_COORD_2} | {@link #GL_MAP1_TEXTURE_COORD_3 MAP1_TEXTURE_COORD_3} | {@link #GL_MAP1_TEXTURE_COORD_4 MAP1_TEXTURE_COORD_4} |
- * @param u1 the first endpoint of the pre-image of the map
- * @param u2 the second endpoint of the pre-image of the map
- * @param stride the number of values in each block of storage
- * @param order the polynomial order
- * @param points a set of {@code order} blocks of storage containing control points
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap1f(@NativeType("GLenum") int target, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2, @NativeType("GLint") int stride, @NativeType("GLint") int order, @NativeType("GLfloat const *") FloatBuffer points) {
- if (CHECKS) {
- check(points, order * stride);
- }
- nglMap1f(target, u1, u2, stride, order, memAddress(points));
- }
-
- // --- [ glMap1d ] ---
-
- /** Unsafe version of: {@link #glMap1d Map1d} */
- public static native void nglMap1d(int target, double u1, double u2, int stride, int order, long points);
-
- /**
- * Double version of {@link #glMap1f Map1f}.
- *
- * @param target the evaluator target
- * @param u1 the first endpoint of the pre-image of the map
- * @param u2 the second endpoint of the pre-image of the map
- * @param stride the number of values in each block of storage
- * @param order the polynomial order
- * @param points a set of {@code order} blocks of storage containing control points
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap1d(@NativeType("GLenum") int target, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2, @NativeType("GLint") int stride, @NativeType("GLint") int order, @NativeType("GLdouble const *") DoubleBuffer points) {
- if (CHECKS) {
- check(points, stride * order);
- }
- nglMap1d(target, u1, u2, stride, order, memAddress(points));
- }
-
- // --- [ glMap2f ] ---
-
- /** Unsafe version of: {@link #glMap2f Map2f} */
- public static native void nglMap2f(int target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, long points);
-
- /**
- * Bivariate version of {@link #glMap1f Map1f}.
- *
- * @param target the evaluator target
- * @param u1 the first u-dimension endpoint of the pre-image rectangle of the map
- * @param u2 the second u-dimension endpoint of the pre-image rectangle of the map
- * @param ustride the number of values in the u-dimension in each block of storage
- * @param uorder the polynomial order in the u-dimension
- * @param v1 the first v-dimension endpoint of the pre-image rectangle of the map
- * @param v2 the second v-dimension endpoint of the pre-image rectangle of the map
- * @param vstride the number of values in the v-dimension in each block of storage
- * @param vorder the polynomial order in the v-dimension
- * @param points a set of uorder × vorder blocks of storage containing control points
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap2f(@NativeType("GLenum") int target, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2, @NativeType("GLint") int ustride, @NativeType("GLint") int uorder, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2, @NativeType("GLint") int vstride, @NativeType("GLint") int vorder, @NativeType("GLfloat const *") FloatBuffer points) {
- if (CHECKS) {
- check(points, ustride * uorder * vstride * vorder);
- }
- nglMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, memAddress(points));
- }
-
- // --- [ glMap2d ] ---
-
- /** Unsafe version of: {@link #glMap2d Map2d} */
- public static native void nglMap2d(int target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, long points);
-
- /**
- * Double version of {@link #glMap2f Map2f}.
- *
- * @param target the evaluator target
- * @param u1 the first u-dimension endpoint of the pre-image rectangle of the map
- * @param u2 the second u-dimension endpoint of the pre-image rectangle of the map
- * @param ustride the number of values in the u-dimension in each block of storage
- * @param uorder the polynomial order in the u-dimension
- * @param v1 the first v-dimension endpoint of the pre-image rectangle of the map
- * @param v2 the second v-dimension endpoint of the pre-image rectangle of the map
- * @param vstride the number of values in the v-dimension in each block of storage
- * @param vorder the polynomial order in the v-dimension
- * @param points a set of uorder × vorder blocks of storage containing control points
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap2d(@NativeType("GLenum") int target, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2, @NativeType("GLint") int ustride, @NativeType("GLint") int uorder, @NativeType("GLdouble") double v1, @NativeType("GLdouble") double v2, @NativeType("GLint") int vstride, @NativeType("GLint") int vorder, @NativeType("GLdouble const *") DoubleBuffer points) {
- if (CHECKS) {
- check(points, ustride * uorder * vstride * vorder);
- }
- nglMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, memAddress(points));
- }
-
- // --- [ glMapGrid1f ] ---
-
- /**
- * Defines a one-dimensional grid in the map evaluator domain.
- *
- * @param n the number of partitions of the interval
- * @param u1 the first interval endpoint
- * @param u2 the second interval endpoint
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMapGrid1f(@NativeType("GLint") int n, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2);
-
- // --- [ glMapGrid1d ] ---
-
- /**
- * Double version of {@link #glMapGrid1f MapGrid1f}.
- *
- * @param n the number of partitions of the interval
- * @param u1 the first interval endpoint
- * @param u2 the second interval endpoint
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMapGrid1d(@NativeType("GLint") int n, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2);
-
- // --- [ glMapGrid2f ] ---
-
- /**
- * Defines a two-dimensional grid in the map evaluator domain.
- *
- * @param un the number of partitions of the interval in the u-dimension
- * @param u1 the first u-dimension interval endpoint
- * @param u2 the second u-dimension interval endpoint
- * @param vn the number of partitions of the interval in the v-dimension
- * @param v1 the first v-dimension interval endpoint
- * @param v2 the second v-dimension interval endpoint
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMapGrid2f(@NativeType("GLint") int un, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2, @NativeType("GLint") int vn, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2);
-
- // --- [ glMapGrid2d ] ---
-
- /**
- * Double version of {@link #glMapGrid2f MapGrid2f}.
- *
- * @param un the number of partitions of the interval in the u-dimension
- * @param u1 the first u-dimension interval endpoint
- * @param u2 the second u-dimension interval endpoint
- * @param vn the number of partitions of the interval in the v-dimension
- * @param v1 the first v-dimension interval endpoint
- * @param v2 the second v-dimension interval endpoint
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMapGrid2d(@NativeType("GLint") int un, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2, @NativeType("GLint") int vn, @NativeType("GLdouble") double v1, @NativeType("GLdouble") double v2);
-
- // --- [ glMateriali ] ---
-
- /**
- * Sets the integer value of a material parameter.
- *
- * @param face the material face for which to set the parameter. One of:
| {@link #GL_FRONT FRONT} | {@link #GL_BACK BACK} | {@link #GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param pname the parameter to set. Must be:
| {@link #GL_SHININESS SHININESS} |
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMateriali(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glMaterialf ] ---
-
- /**
- * Float version of {@link #glMateriali Materiali}.
- *
- * @param face the material face for which to set the parameter
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMaterialf(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glMaterialiv ] ---
-
- /** Unsafe version of: {@link #glMaterialiv Materialiv} */
- public static native void nglMaterialiv(int face, int pname, long params);
-
- /**
- * Pointer version of {@link #glMateriali Materiali}.
- *
- * @param face the material face for which to set the parameter
- * @param pname the parameter to set. One of:
| {@link #GL_AMBIENT AMBIENT} | {@link #GL_DIFFUSE DIFFUSE} | {@link #GL_AMBIENT_AND_DIFFUSE AMBIENT_AND_DIFFUSE} | {@link #GL_SPECULAR SPECULAR} | {@link #GL_EMISSION EMISSION} |
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMaterialiv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglMaterialiv(face, pname, memAddress(params));
- }
-
- // --- [ glMaterialfv ] ---
-
- /** Unsafe version of: {@link #glMaterialfv Materialfv} */
- public static native void nglMaterialfv(int face, int pname, long params);
-
- /**
- * Pointer version of {@link #glMaterialf Materialf}.
- *
- * @param face the material face for which to set the parameter
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMaterialfv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglMaterialfv(face, pname, memAddress(params));
- }
-
- // --- [ glMatrixMode ] ---
-
- /**
- * Set the current matrix mode.
- *
- * @param mode the matrix mode. One of:
| {@link #GL_MODELVIEW MODELVIEW} | {@link #GL_PROJECTION PROJECTION} | {@link #GL_TEXTURE TEXTURE} | {@link #GL_COLOR COLOR} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glMatrixMode(@NativeType("GLenum") int mode);
-
- // --- [ glMultMatrixf ] ---
-
- /** Unsafe version of: {@link #glMultMatrixf MultMatrixf} */
- public static native void nglMultMatrixf(long m);
-
- /**
- * Multiplies the current matrix with a 4 × 4 matrix in column-major order. See {@link #glLoadMatrixf LoadMatrixf} for details.
- *
- * @param m the matrix data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMultMatrixf(@NativeType("GLfloat const *") FloatBuffer m) {
- if (CHECKS) {
- check(m, 16);
- }
- nglMultMatrixf(memAddress(m));
- }
-
- // --- [ glMultMatrixd ] ---
-
- /** Unsafe version of: {@link #glMultMatrixd MultMatrixd} */
- public static native void nglMultMatrixd(long m);
-
- /**
- * Double version of {@link #glMultMatrixf MultMatrixf}.
- *
- * @param m the matrix data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMultMatrixd(@NativeType("GLdouble const *") DoubleBuffer m) {
- if (CHECKS) {
- check(m, 16);
- }
- nglMultMatrixd(memAddress(m));
- }
-
- // --- [ glFrustum ] ---
-
- /**
- * Manipulates the current matrix with a matrix that produces perspective projection, in such a way that the coordinates (lb – n)T
- * and (rt – n)T specify the points on the near clipping plane that are mapped to the lower left and upper right corners of the
- * window, respectively (assuming that the eye is located at (0 0 0)T). {@code f} gives the distance from the eye to the far clipping
- * plane.
- *
- * Calling this function is equivalent to calling {@link #glMultMatrixf MultMatrixf} with the following matrix:
- *
- *
- * | 2n / (r - l) | 0 | (r + l) / (r - l) | 0 |
- * | 0 | 2n / (t - b) | (t + b) / (t - b) | 0 |
- * | 0 | 0 | - (f + n) / (f - n) | - (2fn) / (f - n) |
- * | 0 | 0 | -1 | 0 |
- *
- *
- * @param l the left frustum plane
- * @param r the right frustum plane
- * @param b the bottom frustum plane
- * @param t the top frustum plane
- * @param n the near frustum plane
- * @param f the far frustum plane
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glFrustum(@NativeType("GLdouble") double l, @NativeType("GLdouble") double r, @NativeType("GLdouble") double b, @NativeType("GLdouble") double t, @NativeType("GLdouble") double n, @NativeType("GLdouble") double f);
-
- // --- [ glNewList ] ---
-
- /**
- * Begins the definition of a display list.
- *
- * @param n a positive integer to which the display list that follows is assigned
- * @param mode a symbolic constant that controls the behavior of the GL during display list creation. One of:
| {@link #GL_COMPILE COMPILE} | {@link #GL_COMPILE_AND_EXECUTE COMPILE_AND_EXECUTE} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNewList(@NativeType("GLuint") int n, @NativeType("GLenum") int mode);
-
- // --- [ glEndList ] ---
-
- /**
- * Ends the definition of GL commands to be placed in a display list. It is only when {@code EndList} occurs that the specified display list is actually
- * associated with the index indicated with {@link #glNewList NewList}.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glEndList();
-
- // --- [ glNormal3f ] ---
-
- /**
- * Sets the current normal.
- *
- * @param nx the x coordinate of the current normal
- * @param ny the y coordinate of the current normal
- * @param nz the z coordinate of the current normal
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNormal3f(@NativeType("GLfloat") float nx, @NativeType("GLfloat") float ny, @NativeType("GLfloat") float nz);
-
- // --- [ glNormal3b ] ---
-
- /**
- * Byte version of {@link #glNormal3f Normal3f}.
- *
- * @param nx the x coordinate of the current normal
- * @param ny the y coordinate of the current normal
- * @param nz the z coordinate of the current normal
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNormal3b(@NativeType("GLbyte") byte nx, @NativeType("GLbyte") byte ny, @NativeType("GLbyte") byte nz);
-
- // --- [ glNormal3s ] ---
-
- /**
- * Short version of {@link #glNormal3f Normal3f}.
- *
- * @param nx the x coordinate of the current normal
- * @param ny the y coordinate of the current normal
- * @param nz the z coordinate of the current normal
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNormal3s(@NativeType("GLshort") short nx, @NativeType("GLshort") short ny, @NativeType("GLshort") short nz);
-
- // --- [ glNormal3i ] ---
-
- /**
- * Integer version of {@link #glNormal3f Normal3f}.
- *
- * @param nx the x coordinate of the current normal
- * @param ny the y coordinate of the current normal
- * @param nz the z coordinate of the current normal
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNormal3i(@NativeType("GLint") int nx, @NativeType("GLint") int ny, @NativeType("GLint") int nz);
-
- // --- [ glNormal3d ] ---
-
- /**
- * Double version of {@link #glNormal3f Normal3f}.
- *
- * @param nx the x coordinate of the current normal
- * @param ny the y coordinate of the current normal
- * @param nz the z coordinate of the current normal
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glNormal3d(@NativeType("GLdouble") double nx, @NativeType("GLdouble") double ny, @NativeType("GLdouble") double nz);
-
- // --- [ glNormal3fv ] ---
-
- /** Unsafe version of: {@link #glNormal3fv Normal3fv} */
- public static native void nglNormal3fv(long v);
-
- /**
- * Pointer version of {@link #glNormal3f Normal3f}.
- *
- * @param v the normal buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglNormal3fv(memAddress(v));
- }
-
- // --- [ glNormal3bv ] ---
-
- /** Unsafe version of: {@link #glNormal3bv Normal3bv} */
- public static native void nglNormal3bv(long v);
-
- /**
- * Pointer version of {@link #glNormal3b Normal3b}.
- *
- * @param v the normal buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3bv(@NativeType("GLbyte const *") ByteBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglNormal3bv(memAddress(v));
- }
-
- // --- [ glNormal3sv ] ---
-
- /** Unsafe version of: {@link #glNormal3sv Normal3sv} */
- public static native void nglNormal3sv(long v);
-
- /**
- * Pointer version of {@link #glNormal3s Normal3s}.
- *
- * @param v the normal buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglNormal3sv(memAddress(v));
- }
-
- // --- [ glNormal3iv ] ---
-
- /** Unsafe version of: {@link #glNormal3iv Normal3iv} */
- public static native void nglNormal3iv(long v);
-
- /**
- * Pointer version of {@link #glNormal3i Normal3i}.
- *
- * @param v the normal buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglNormal3iv(memAddress(v));
- }
-
- // --- [ glNormal3dv ] ---
-
- /** Unsafe version of: {@link #glNormal3dv Normal3dv} */
- public static native void nglNormal3dv(long v);
-
- /**
- * Pointer version of {@link #glNormal3d Normal3d}.
- *
- * @param v the normal buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglNormal3dv(memAddress(v));
- }
-
- // --- [ glNormalPointer ] ---
-
- /** Unsafe version of: {@link #glNormalPointer NormalPointer} */
- public static native void nglNormalPointer(int type, int stride, long pointer);
-
- /**
- * Specifies the location and organization of a normal array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the normal array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormalPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglNormalPointer(type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a normal array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the normal array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormalPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglNormalPointer(type, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a normal array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the normal array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormalPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglNormalPointer(type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a normal array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the normal array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormalPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglNormalPointer(type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a normal array.
- *
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_BYTE BYTE} | {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the normal array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormalPointer(@NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- nglNormalPointer(type, stride, memAddress(pointer));
- }
-
- // --- [ glOrtho ] ---
-
- /**
- * Manipulates the current matrix with a matrix that produces parallel projection, in such a way that the coordinates (lb – n)T
- * and (rt – n)T specify the points on the near clipping plane that are mapped to the lower left and upper right corners of the
- * window, respectively (assuming that the eye is located at (0 0 0)T). {@code f} gives the distance from the eye to the far clipping
- * plane.
- *
- * Calling this function is equivalent to calling {@link #glMultMatrixf MultMatrixf} with the following matrix:
- *
- *
- * | 2 / (r - l) | 0 | 0 | - (r + l) / (r - l) |
- * | 0 | 2 / (t - b) | 0 | - (t + b) / (t - b) |
- * | 0 | 0 | - 2 / (f - n) | - (f + n) / (f - n) |
- * | 0 | 0 | 0 | 1 |
- *
- *
- * @param l the left frustum plane
- * @param r the right frustum plane
- * @param b the bottom frustum plane
- * @param t the top frustum plane
- * @param n the near frustum plane
- * @param f the far frustum plane
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glOrtho(@NativeType("GLdouble") double l, @NativeType("GLdouble") double r, @NativeType("GLdouble") double b, @NativeType("GLdouble") double t, @NativeType("GLdouble") double n, @NativeType("GLdouble") double f);
-
- // --- [ glPassThrough ] ---
-
- /**
- * Inserts a marker when the GL is in feeback mode. {@code token} is returned as if it were a primitive; it is indicated with its own unique identifying
- * value. The ordering of any {@code PassThrough} commands with respect to primitive specification is maintained by feedback. {@code PassThrough} may
- * not occur between {@link #glBegin Begin} and {@link #glEnd End}.
- *
- * @param token the marker value to insert
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPassThrough(@NativeType("GLfloat") float token);
-
- // --- [ glPixelMapfv ] ---
-
- /**
- * Unsafe version of: {@link #glPixelMapfv PixelMapfv}
- *
- * @param size the map size
- */
- public static native void nglPixelMapfv(int map, int size, long values);
-
- /**
- * Sets a pixel map lookup table.
- *
- * @param map the map to set. One of:
| {@link #GL_PIXEL_MAP_I_TO_I PIXEL_MAP_I_TO_I} | {@link #GL_PIXEL_MAP_S_TO_S PIXEL_MAP_S_TO_S} | {@link #GL_PIXEL_MAP_I_TO_R PIXEL_MAP_I_TO_R} | {@link #GL_PIXEL_MAP_I_TO_G PIXEL_MAP_I_TO_G} | {@link #GL_PIXEL_MAP_I_TO_B PIXEL_MAP_I_TO_B} |
| {@link #GL_PIXEL_MAP_I_TO_A PIXEL_MAP_I_TO_A} | {@link #GL_PIXEL_MAP_R_TO_R PIXEL_MAP_R_TO_R} | {@link #GL_PIXEL_MAP_G_TO_G PIXEL_MAP_G_TO_G} | {@link #GL_PIXEL_MAP_B_TO_B PIXEL_MAP_B_TO_B} | {@link #GL_PIXEL_MAP_A_TO_A PIXEL_MAP_A_TO_A} |
- * @param size the map size
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLsizei") int size, @NativeType("GLfloat const *") long values) {
- nglPixelMapfv(map, size, values);
- }
-
- /**
- * Sets a pixel map lookup table.
- *
- * @param map the map to set. One of:
| {@link #GL_PIXEL_MAP_I_TO_I PIXEL_MAP_I_TO_I} | {@link #GL_PIXEL_MAP_S_TO_S PIXEL_MAP_S_TO_S} | {@link #GL_PIXEL_MAP_I_TO_R PIXEL_MAP_I_TO_R} | {@link #GL_PIXEL_MAP_I_TO_G PIXEL_MAP_I_TO_G} | {@link #GL_PIXEL_MAP_I_TO_B PIXEL_MAP_I_TO_B} |
| {@link #GL_PIXEL_MAP_I_TO_A PIXEL_MAP_I_TO_A} | {@link #GL_PIXEL_MAP_R_TO_R PIXEL_MAP_R_TO_R} | {@link #GL_PIXEL_MAP_G_TO_G PIXEL_MAP_G_TO_G} | {@link #GL_PIXEL_MAP_B_TO_B PIXEL_MAP_B_TO_B} | {@link #GL_PIXEL_MAP_A_TO_A PIXEL_MAP_A_TO_A} |
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLfloat const *") FloatBuffer values) {
- nglPixelMapfv(map, values.remaining(), memAddress(values));
- }
-
- // --- [ glPixelMapusv ] ---
-
- /**
- * Unsafe version of: {@link #glPixelMapusv PixelMapusv}
- *
- * @param size the map size
- */
- public static native void nglPixelMapusv(int map, int size, long values);
-
- /**
- * Unsigned short version of {@link #glPixelMapfv PixelMapfv}.
- *
- * @param map the map to set
- * @param size the map size
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLsizei") int size, @NativeType("GLushort const *") long values) {
- nglPixelMapusv(map, size, values);
- }
-
- /**
- * Unsigned short version of {@link #glPixelMapfv PixelMapfv}.
- *
- * @param map the map to set
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLushort const *") ShortBuffer values) {
- nglPixelMapusv(map, values.remaining(), memAddress(values));
- }
-
- // --- [ glPixelMapuiv ] ---
-
- /**
- * Unsafe version of: {@link #glPixelMapuiv PixelMapuiv}
- *
- * @param size the map size
- */
- public static native void nglPixelMapuiv(int map, int size, long values);
-
- /**
- * Unsigned integer version of {@link #glPixelMapfv PixelMapfv}.
- *
- * @param map the map to set
- * @param size the map size
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLsizei") int size, @NativeType("GLuint const *") long values) {
- nglPixelMapuiv(map, size, values);
- }
-
- /**
- * Unsigned integer version of {@link #glPixelMapfv PixelMapfv}.
- *
- * @param map the map to set
- * @param values the map values
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLuint const *") IntBuffer values) {
- nglPixelMapuiv(map, values.remaining(), memAddress(values));
- }
-
- // --- [ glPixelStorei ] ---
-
- /**
- * Sets the integer value of a pixel store parameter.
- *
- * @param pname the pixel store parameter to set. One of:
| {@link GL11C#GL_UNPACK_SWAP_BYTES UNPACK_SWAP_BYTES} | {@link GL11C#GL_UNPACK_LSB_FIRST UNPACK_LSB_FIRST} | {@link GL11C#GL_UNPACK_ROW_LENGTH UNPACK_ROW_LENGTH} |
| {@link GL11C#GL_UNPACK_SKIP_ROWS UNPACK_SKIP_ROWS} | {@link GL11C#GL_UNPACK_SKIP_PIXELS UNPACK_SKIP_PIXELS} | {@link GL11C#GL_UNPACK_ALIGNMENT UNPACK_ALIGNMENT} |
| {@link GL12#GL_UNPACK_IMAGE_HEIGHT UNPACK_IMAGE_HEIGHT} | {@link GL12#GL_UNPACK_SKIP_IMAGES UNPACK_SKIP_IMAGES} | {@link GL42#GL_UNPACK_COMPRESSED_BLOCK_WIDTH UNPACK_COMPRESSED_BLOCK_WIDTH} |
| {@link GL42#GL_UNPACK_COMPRESSED_BLOCK_HEIGHT UNPACK_COMPRESSED_BLOCK_HEIGHT} | {@link GL42#GL_UNPACK_COMPRESSED_BLOCK_DEPTH UNPACK_COMPRESSED_BLOCK_DEPTH} | {@link GL42#GL_UNPACK_COMPRESSED_BLOCK_SIZE UNPACK_COMPRESSED_BLOCK_SIZE} |
- * @param param the parameter value
- *
- * @see Reference Page
- */
- public static void glPixelStorei(@NativeType("GLenum") int pname, @NativeType("GLint") int param) {
- GL11C.glPixelStorei(pname, param);
- }
-
- // --- [ glPixelStoref ] ---
-
- /**
- * Float version of {@link #glPixelStorei PixelStorei}.
- *
- * @param pname the pixel store parameter to set
- * @param param the parameter value
- *
- * @see Reference Page
- */
- public static void glPixelStoref(@NativeType("GLenum") int pname, @NativeType("GLfloat") float param) {
- GL11C.glPixelStoref(pname, param);
- }
-
- // --- [ glPixelTransferi ] ---
-
- /**
- * Sets the integer value of a pixel transfer parameter.
- *
- * @param pname the pixel transfer parameter to set. One of:
| {@link #GL_MAP_COLOR MAP_COLOR} | {@link #GL_MAP_STENCIL MAP_STENCIL} | {@link #GL_INDEX_SHIFT INDEX_SHIFT} | {@link #GL_INDEX_OFFSET INDEX_OFFSET} |
| {@link #GL_RED_SCALE RED_SCALE} | {@link #GL_GREEN_SCALE GREEN_SCALE} | {@link #GL_BLUE_SCALE BLUE_SCALE} | {@link #GL_ALPHA_SCALE ALPHA_SCALE} |
| {@link #GL_DEPTH_SCALE DEPTH_SCALE} | {@link #GL_RED_BIAS RED_BIAS} | {@link #GL_GREEN_BIAS GREEN_BIAS} | {@link #GL_BLUE_BIAS BLUE_BIAS} |
| {@link #GL_ALPHA_BIAS ALPHA_BIAS} | {@link #GL_DEPTH_BIAS DEPTH_BIAS} | {@link ARBImaging#GL_POST_CONVOLUTION_RED_SCALE POST_CONVOLUTION_RED_SCALE} | {@link ARBImaging#GL_POST_CONVOLUTION_RED_BIAS POST_CONVOLUTION_RED_BIAS} |
| {@link ARBImaging#GL_POST_COLOR_MATRIX_RED_SCALE POST_COLOR_MATRIX_RED_SCALE} | {@link ARBImaging#GL_POST_COLOR_MATRIX_RED_BIAS POST_COLOR_MATRIX_RED_BIAS} | {@link ARBImaging#GL_POST_CONVOLUTION_GREEN_SCALE POST_CONVOLUTION_GREEN_SCALE} | {@link ARBImaging#GL_POST_CONVOLUTION_GREEN_BIAS POST_CONVOLUTION_GREEN_BIAS} |
| {@link ARBImaging#GL_POST_COLOR_MATRIX_GREEN_SCALE POST_COLOR_MATRIX_GREEN_SCALE} | {@link ARBImaging#GL_POST_COLOR_MATRIX_GREEN_BIAS POST_COLOR_MATRIX_GREEN_BIAS} | {@link ARBImaging#GL_POST_CONVOLUTION_BLUE_SCALE POST_CONVOLUTION_BLUE_SCALE} | {@link ARBImaging#GL_POST_CONVOLUTION_BLUE_BIAS POST_CONVOLUTION_BLUE_BIAS} |
| {@link ARBImaging#GL_POST_COLOR_MATRIX_BLUE_SCALE POST_COLOR_MATRIX_BLUE_SCALE} | {@link ARBImaging#GL_POST_COLOR_MATRIX_BLUE_BIAS POST_COLOR_MATRIX_BLUE_BIAS} | {@link ARBImaging#GL_POST_CONVOLUTION_ALPHA_SCALE POST_CONVOLUTION_ALPHA_SCALE} | {@link ARBImaging#GL_POST_CONVOLUTION_ALPHA_BIAS POST_CONVOLUTION_ALPHA_BIAS} |
| {@link ARBImaging#GL_POST_COLOR_MATRIX_ALPHA_SCALE POST_COLOR_MATRIX_ALPHA_SCALE} | {@link ARBImaging#GL_POST_COLOR_MATRIX_ALPHA_BIAS POST_COLOR_MATRIX_ALPHA_BIAS} |
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPixelTransferi(@NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glPixelTransferf ] ---
-
- /**
- * Float version of {@link #glPixelTransferi PixelTransferi}.
- *
- * @param pname the pixel transfer parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPixelTransferf(@NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glPixelZoom ] ---
-
- /**
- * Controls the conversion of a group of fragments.
- *
- * Let (xrp, yrp) be the current raster position. If a particular group is the nth in a row and belongs to the
- * mth row, consider the region in window coordinates bounded by the rectangle with corners
- *
- * (xrp + zxn, yrp + zym) and (xrp + zx(n + 1), yrp + zy(m + 1))
- *
- * (either zx or zy may be negative). A fragment representing group {@code (n, m)} is produced for each framebuffer pixel inside, or
- * on the bottom or left boundary, of this rectangle.
- *
- * @param xfactor the zx factor
- * @param yfactor the zy factor
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPixelZoom(@NativeType("GLfloat") float xfactor, @NativeType("GLfloat") float yfactor);
-
- // --- [ glPointSize ] ---
-
- /**
- * Controls the rasterization of points if no vertex, tessellation control, tessellation evaluation, or geometry shader is active. The default point size is 1.0.
- *
- * @param size the request size of a point
- *
- * @see Reference Page
- */
- public static void glPointSize(@NativeType("GLfloat") float size) {
- GL11C.glPointSize(size);
- }
-
- // --- [ glPolygonMode ] ---
-
- /**
- * Controls the interpretation of polygons for rasterization.
- *
- * {@link GL11C#GL_FILL FILL} is the default mode of polygon rasterization. Note that these modes affect only the final rasterization of polygons: in particular, a
- * polygon's vertices are lit, and the polygon is clipped and possibly culled before these modes are applied. Polygon antialiasing applies only to the
- * {@link GL11C#GL_FILL FILL} state of PolygonMode. For {@link GL11C#GL_POINT POINT} or {@link GL11C#GL_LINE LINE}, point antialiasing or line segment antialiasing, respectively, apply.
- *
- * @param face the face for which to set the rasterizing method. One of:
| {@link GL11C#GL_FRONT FRONT} | {@link GL11C#GL_BACK BACK} | {@link GL11C#GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param mode the rasterization mode. One of:
| {@link GL11C#GL_POINT POINT} | {@link GL11C#GL_LINE LINE} | {@link GL11C#GL_FILL FILL} |
- *
- * @see Reference Page
- */
- public static void glPolygonMode(@NativeType("GLenum") int face, @NativeType("GLenum") int mode) {
- GL11C.glPolygonMode(face, mode);
- }
-
- // --- [ glPolygonOffset ] ---
-
- /**
- * The depth values of all fragments generated by the rasterization of a polygon may be offset by a single value that is computed for that polygon. This
- * function determines that value.
- *
- * {@code factor} scales the maximum depth slope of the polygon, and {@code units} scales an implementation-dependent constant that relates to the usable
- * resolution of the depth buffer. The resulting values are summed to produce the polygon offset value.
- *
- * @param factor the maximum depth slope factor
- * @param units the constant scale
- *
- * @see Reference Page
- */
- public static void glPolygonOffset(@NativeType("GLfloat") float factor, @NativeType("GLfloat") float units) {
- GL11C.glPolygonOffset(factor, units);
- }
-
- // --- [ glPolygonStipple ] ---
-
- /** Unsafe version of: {@link #glPolygonStipple PolygonStipple} */
- public static native void nglPolygonStipple(long pattern);
-
- /**
- * Defines a polygon stipple. It works much the same way as {@link #glLineStipple LineStipple}, masking out certain fragments produced by rasterization so that they
- * are not sent to the next stage of the GL. This is the case regardless of the state of polygon antialiasing.
- *
- * If xw and yw are the window coordinates of a rasterized polygon fragment, then that fragment is sent to the next stage of the GL
- * if and only if the bit of the pattern (xw mod 32, yw mod 32) is 1.
- *
- * Polygon stippling may be enabled or disabled with {@link #glEnable Enable} or {@link #glDisable Disable} using the constant {@link #GL_POLYGON_STIPPLE POLYGON_STIPPLE}. When disabled,
- * it is as if the stipple pattern were all ones.
- *
- * @param pattern a pointer to memory into which a 32 × 32 pattern is packed
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPolygonStipple(@NativeType("GLubyte const *") ByteBuffer pattern) {
- if (CHECKS) {
- check(pattern, 128);
- }
- nglPolygonStipple(memAddress(pattern));
- }
-
- /**
- * Defines a polygon stipple. It works much the same way as {@link #glLineStipple LineStipple}, masking out certain fragments produced by rasterization so that they
- * are not sent to the next stage of the GL. This is the case regardless of the state of polygon antialiasing.
- *
- * If xw and yw are the window coordinates of a rasterized polygon fragment, then that fragment is sent to the next stage of the GL
- * if and only if the bit of the pattern (xw mod 32, yw mod 32) is 1.
- *
- * Polygon stippling may be enabled or disabled with {@link #glEnable Enable} or {@link #glDisable Disable} using the constant {@link #GL_POLYGON_STIPPLE POLYGON_STIPPLE}. When disabled,
- * it is as if the stipple pattern were all ones.
- *
- * @param pattern a pointer to memory into which a 32 × 32 pattern is packed
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPolygonStipple(@NativeType("GLubyte const *") long pattern) {
- nglPolygonStipple(pattern);
- }
-
- // --- [ glPushAttrib ] ---
-
- /**
- * Takes a bitwise OR of symbolic constants indicating which groups of state variables to push onto the server attribute stack. Each constant refers to a
- * group of state variables.
- *
- * Bits set in mask that do not correspond to an attribute group are ignored. The special mask value {@link #GL_ALL_ATTRIB_BITS ALL_ATTRIB_BITS} may be used to push all
- * stackable server state.
- *
- * A {@link #GL_STACK_OVERFLOW STACK_OVERFLOW} error is generated if {@code PushAttrib} is called and the attribute stack depth is equal to the value of
- * {@link #GL_MAX_ATTRIB_STACK_DEPTH MAX_ATTRIB_STACK_DEPTH}.
- *
- * @param mask the state variables to push. One or more of:
| {@link #GL_ACCUM_BUFFER_BIT ACCUM_BUFFER_BIT} | {@link #GL_COLOR_BUFFER_BIT COLOR_BUFFER_BIT} | {@link #GL_CURRENT_BIT CURRENT_BIT} | {@link #GL_DEPTH_BUFFER_BIT DEPTH_BUFFER_BIT} | {@link #GL_ENABLE_BIT ENABLE_BIT} | {@link #GL_EVAL_BIT EVAL_BIT} |
| {@link #GL_FOG_BIT FOG_BIT} | {@link #GL_HINT_BIT HINT_BIT} | {@link #GL_LIGHTING_BIT LIGHTING_BIT} | {@link #GL_LINE_BIT LINE_BIT} | {@link #GL_LIST_BIT LIST_BIT} | {@link GL13#GL_MULTISAMPLE_BIT MULTISAMPLE_BIT} |
| {@link #GL_PIXEL_MODE_BIT PIXEL_MODE_BIT} | {@link #GL_POINT_BIT POINT_BIT} | {@link #GL_POLYGON_BIT POLYGON_BIT} | {@link #GL_POLYGON_STIPPLE_BIT POLYGON_STIPPLE_BIT} | {@link #GL_SCISSOR_BIT SCISSOR_BIT} | {@link #GL_STENCIL_BUFFER_BIT STENCIL_BUFFER_BIT} |
| {@link #GL_TEXTURE_BIT TEXTURE_BIT} | {@link #GL_TRANSFORM_BIT TRANSFORM_BIT} | {@link #GL_VIEWPORT_BIT VIEWPORT_BIT} | {@link #GL_ALL_ATTRIB_BITS ALL_ATTRIB_BITS} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPushAttrib(@NativeType("GLbitfield") int mask);
-
- // --- [ glPushClientAttrib ] ---
-
- /**
- * Takes a bitwise OR of symbolic constants indicating which groups of state variables to push onto the client attribute stack. Each constant refers to a
- * group of state variables.
- *
- * Bits set in mask that do not correspond to an attribute group are ignored. The special mask value {@link #GL_CLIENT_ALL_ATTRIB_BITS CLIENT_ALL_ATTRIB_BITS} may be used to push
- * all stackable client state.
- *
- * A {@link #GL_STACK_OVERFLOW STACK_OVERFLOW} error is generated if {@code PushAttrib} is called and the client attribute stack depth is equal to the value of
- * {@link #GL_MAX_CLIENT_ATTRIB_STACK_DEPTH MAX_CLIENT_ATTRIB_STACK_DEPTH}.
- *
- * @param mask the state variables to push. One or more of:
| {@link #GL_CLIENT_VERTEX_ARRAY_BIT CLIENT_VERTEX_ARRAY_BIT} | {@link #GL_CLIENT_PIXEL_STORE_BIT CLIENT_PIXEL_STORE_BIT} | {@link #GL_CLIENT_ALL_ATTRIB_BITS CLIENT_ALL_ATTRIB_BITS} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPushClientAttrib(@NativeType("GLbitfield") int mask);
-
- // --- [ glPopAttrib ] ---
-
- /**
- * Resets the values of those state variables that were saved with the last {@link #glPushAttrib PushAttrib}. Those not saved remain unchanged.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPopAttrib();
-
- // --- [ glPopClientAttrib ] ---
-
- /**
- * Resets the values of those state variables that were saved with the last {@link #glPushClientAttrib PushClientAttrib}. Those not saved remain unchanged.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPopClientAttrib();
-
- // --- [ glPopMatrix ] ---
-
- /**
- * Pops the top entry off the current matrix stack, replacing the current matrix with the matrix that was the second entry in the stack.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPopMatrix();
-
- // --- [ glPopName ] ---
-
- /**
- * Pops one name off the top of the selection name stack.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPopName();
-
- // --- [ glPrioritizeTextures ] ---
-
- /**
- * Unsafe version of: {@link #glPrioritizeTextures PrioritizeTextures}
- *
- * @param n the number of texture object priorities to set
- */
- public static native void nglPrioritizeTextures(int n, long textures, long priorities);
-
- /**
- * Sets the priority of texture objects. Each priority value is clamped to the range [0, 1] before it is assigned. Zero indicates the lowest priority, with
- * the least likelihood of being resident. One indicates the highest priority, with the greatest likelihood of being resident.
- *
- * @param textures an array of texture object names
- * @param priorities an array of texture object priorities
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPrioritizeTextures(@NativeType("GLuint const *") IntBuffer textures, @NativeType("GLfloat const *") FloatBuffer priorities) {
- if (CHECKS) {
- check(priorities, textures.remaining());
- }
- nglPrioritizeTextures(textures.remaining(), memAddress(textures), memAddress(priorities));
- }
-
- // --- [ glPushMatrix ] ---
-
- /**
- * Pushes the current matrix stack down by one, duplicating the current matrix in both the top of the stack and the entry below it.
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPushMatrix();
-
- // --- [ glPushName ] ---
-
- /**
- * Causes {@code name} to be pushed onto the selection name stack.
- *
- * @param name the name to push
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glPushName(@NativeType("GLuint") int name);
-
- // --- [ glRasterPos2i ] ---
-
- /**
- * Sets the two-dimensional current raster position. {@code z} is implicitly set to 0 and {@code w} implicitly set to 1.
- *
- * The coordinates are treated as if they were specified in a Vertex command. If a vertex shader is active, this vertex shader is executed using the x, y,
- * z, and w coordinates as the object coordinates of the vertex. Otherwise, the x, y, z, and w coordinates are transformed by the current model-view and
- * projection matrices. These coordinates, along with current values, are used to generate primary and secondary colors and texture coordinates just as is
- * done for a vertex. The colors and texture coordinates so produced replace the colors and texture coordinates stored in the current raster position's
- * associated data.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos2i(@NativeType("GLint") int x, @NativeType("GLint") int y);
-
- // --- [ glRasterPos2s ] ---
-
- /**
- * Short version of {@link #glRasterPos2i RasterPos2i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos2s(@NativeType("GLshort") short x, @NativeType("GLshort") short y);
-
- // --- [ glRasterPos2f ] ---
-
- /**
- * Float version of {@link #glRasterPos2i RasterPos2i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos2f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y);
-
- // --- [ glRasterPos2d ] ---
-
- /**
- * Double version of {@link #glRasterPos2i RasterPos2i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos2d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y);
-
- // --- [ glRasterPos2iv ] ---
-
- /** Unsafe version of: {@link #glRasterPos2iv RasterPos2iv} */
- public static native void nglRasterPos2iv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos2i RasterPos2i}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglRasterPos2iv(memAddress(coords));
- }
-
- // --- [ glRasterPos2sv ] ---
-
- /** Unsafe version of: {@link #glRasterPos2sv RasterPos2sv} */
- public static native void nglRasterPos2sv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos2s RasterPos2s}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglRasterPos2sv(memAddress(coords));
- }
-
- // --- [ glRasterPos2fv ] ---
-
- /** Unsafe version of: {@link #glRasterPos2fv RasterPos2fv} */
- public static native void nglRasterPos2fv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos2f RasterPos2f}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglRasterPos2fv(memAddress(coords));
- }
-
- // --- [ glRasterPos2dv ] ---
-
- /** Unsafe version of: {@link #glRasterPos2dv RasterPos2dv} */
- public static native void nglRasterPos2dv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos2d RasterPos2d}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglRasterPos2dv(memAddress(coords));
- }
-
- // --- [ glRasterPos3i ] ---
-
- /**
- * Sets the three-dimensional current raster position. {@code w} is implicitly set to 1. See {@link #glRasterPos2i RasterPos2i} for more details.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos3i(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLint") int z);
-
- // --- [ glRasterPos3s ] ---
-
- /**
- * Short version of {@link #glRasterPos3i RasterPos3i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos3s(@NativeType("GLshort") short x, @NativeType("GLshort") short y, @NativeType("GLshort") short z);
-
- // --- [ glRasterPos3f ] ---
-
- /**
- * Float version of {@link #glRasterPos3i RasterPos3i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos3f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
-
- // --- [ glRasterPos3d ] ---
-
- /**
- * Double version of {@link #glRasterPos3i RasterPos3i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos3d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z);
-
- // --- [ glRasterPos3iv ] ---
-
- /** Unsafe version of: {@link #glRasterPos3iv RasterPos3iv} */
- public static native void nglRasterPos3iv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos3i RasterPos3i}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglRasterPos3iv(memAddress(coords));
- }
-
- // --- [ glRasterPos3sv ] ---
-
- /** Unsafe version of: {@link #glRasterPos3sv RasterPos3sv} */
- public static native void nglRasterPos3sv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos3s RasterPos3s}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglRasterPos3sv(memAddress(coords));
- }
-
- // --- [ glRasterPos3fv ] ---
-
- /** Unsafe version of: {@link #glRasterPos3fv RasterPos3fv} */
- public static native void nglRasterPos3fv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos3f RasterPos3f}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglRasterPos3fv(memAddress(coords));
- }
-
- // --- [ glRasterPos3dv ] ---
-
- /** Unsafe version of: {@link #glRasterPos3dv RasterPos3dv} */
- public static native void nglRasterPos3dv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos3d RasterPos3d}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglRasterPos3dv(memAddress(coords));
- }
-
- // --- [ glRasterPos4i ] ---
-
- /**
- * Sets the four-dimensional current raster position. See {@link #glRasterPos2i RasterPos2i} for more details.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- * @param w the {@code w} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos4i(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLint") int z, @NativeType("GLint") int w);
-
- // --- [ glRasterPos4s ] ---
-
- /**
- * Short version of {@link #glRasterPos4i RasterPos4i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- * @param w the {@code w} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos4s(@NativeType("GLshort") short x, @NativeType("GLshort") short y, @NativeType("GLshort") short z, @NativeType("GLshort") short w);
-
- // --- [ glRasterPos4f ] ---
-
- /**
- * Float version of RasterPos4i.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- * @param w the {@code w} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos4f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z, @NativeType("GLfloat") float w);
-
- // --- [ glRasterPos4d ] ---
-
- /**
- * Double version of {@link #glRasterPos4i RasterPos4i}.
- *
- * @param x the {@code x} raster coordinate
- * @param y the {@code y} raster coordinate
- * @param z the {@code z} raster coordinate
- * @param w the {@code w} raster coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRasterPos4d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z, @NativeType("GLdouble") double w);
-
- // --- [ glRasterPos4iv ] ---
-
- /** Unsafe version of: {@link #glRasterPos4iv RasterPos4iv} */
- public static native void nglRasterPos4iv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos4i RasterPos4i}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglRasterPos4iv(memAddress(coords));
- }
-
- // --- [ glRasterPos4sv ] ---
-
- /** Unsafe version of: {@link #glRasterPos4sv RasterPos4sv} */
- public static native void nglRasterPos4sv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos4s RasterPos4s}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglRasterPos4sv(memAddress(coords));
- }
-
- // --- [ glRasterPos4fv ] ---
-
- /** Unsafe version of: {@link #glRasterPos4fv RasterPos4fv} */
- public static native void nglRasterPos4fv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos4f RasterPos4f}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglRasterPos4fv(memAddress(coords));
- }
-
- // --- [ glRasterPos4dv ] ---
-
- /** Unsafe version of: {@link #glRasterPos4dv RasterPos4dv} */
- public static native void nglRasterPos4dv(long coords);
-
- /**
- * Pointer version of {@link #glRasterPos4d RasterPos4d}.
- *
- * @param coords the raster position buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglRasterPos4dv(memAddress(coords));
- }
-
- // --- [ glReadBuffer ] ---
-
- /**
- * Defines the color buffer from which values are obtained.
- *
- * Acceptable values for {@code src} depend on whether the GL is using the default framebuffer (i.e., {@link GL30#GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is zero), or
- * a framebuffer object (i.e., {@link GL30#GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is non-zero). In the initial state, the GL is bound to the default framebuffer.
- *
- * @param src the color buffer to read from. One of:
| {@link GL11C#GL_NONE NONE} | {@link GL11C#GL_FRONT_LEFT FRONT_LEFT} | {@link GL11C#GL_FRONT_RIGHT FRONT_RIGHT} | {@link GL11C#GL_BACK_LEFT BACK_LEFT} | {@link GL11C#GL_BACK_RIGHT BACK_RIGHT} | {@link GL11C#GL_FRONT FRONT} | {@link GL11C#GL_BACK BACK} | {@link GL11C#GL_LEFT LEFT} |
| {@link GL11C#GL_RIGHT RIGHT} | {@link GL11C#GL_FRONT_AND_BACK FRONT_AND_BACK} | {@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0} | GL30.GL_COLOR_ATTACHMENT[1-15] |
- *
- * @see Reference Page
- */
- public static void glReadBuffer(@NativeType("GLenum") int src) {
- GL11C.glReadBuffer(src);
- }
-
- // --- [ glReadPixels ] ---
-
- /** Unsafe version of: {@link #glReadPixels ReadPixels} */
- public static void nglReadPixels(int x, int y, int width, int height, int format, int type, long pixels) {
- GL11C.nglReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width}
- * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the
- * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained
- * for those pixels are undefined. When {@link GL30#GL_READ_FRAMEBUFFER_BINDING READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by
- * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there.
- *
- * @param x the left pixel coordinate
- * @param y the lower pixel coordinate
- * @param width the number of pixels to read in the x-dimension
- * @param height the number of pixels to read in the y-dimension
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels a buffer in which to place the returned pixel data
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") ByteBuffer pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width}
- * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the
- * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained
- * for those pixels are undefined. When {@link GL30#GL_READ_FRAMEBUFFER_BINDING READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by
- * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there.
- *
- * @param x the left pixel coordinate
- * @param y the lower pixel coordinate
- * @param width the number of pixels to read in the x-dimension
- * @param height the number of pixels to read in the y-dimension
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels a buffer in which to place the returned pixel data
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") long pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width}
- * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the
- * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained
- * for those pixels are undefined. When {@link GL30#GL_READ_FRAMEBUFFER_BINDING READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by
- * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there.
- *
- * @param x the left pixel coordinate
- * @param y the lower pixel coordinate
- * @param width the number of pixels to read in the x-dimension
- * @param height the number of pixels to read in the y-dimension
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels a buffer in which to place the returned pixel data
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") ShortBuffer pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width}
- * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the
- * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained
- * for those pixels are undefined. When {@link GL30#GL_READ_FRAMEBUFFER_BINDING READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by
- * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there.
- *
- * @param x the left pixel coordinate
- * @param y the lower pixel coordinate
- * @param width the number of pixels to read in the x-dimension
- * @param height the number of pixels to read in the y-dimension
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels a buffer in which to place the returned pixel data
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") IntBuffer pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width}
- * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the
- * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained
- * for those pixels are undefined. When {@link GL30#GL_READ_FRAMEBUFFER_BINDING READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by
- * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there.
- *
- * @param x the left pixel coordinate
- * @param y the lower pixel coordinate
- * @param width the number of pixels to read in the x-dimension
- * @param height the number of pixels to read in the y-dimension
- * @param format the pixel format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels a buffer in which to place the returned pixel data
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") FloatBuffer pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- // --- [ glRecti ] ---
-
- /**
- * Specifies a rectangle as two corner vertices. The effect of the Rect command
- *
- * {@code Rect(x1, y1, x2, y2);}
- *
- * is exactly the same as the following sequence of commands:
- * {@code
- * Begin(POLYGON);
- * Vertex2(x1, y1);
- * Vertex2(x2, y1);
- * Vertex2(x2, y2);
- * Vertex2(x1, y2);
- * End();}
- *
- * The appropriate Vertex2 command would be invoked depending on which of the Rect commands is issued.
- *
- * @param x1 the x coordinate of the first corner vertex
- * @param y1 the y coordinate of the first corner vertex
- * @param x2 the x coordinate of the second corner vertex
- * @param y2 the y coordinate of the second corner vertex
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRecti(@NativeType("GLint") int x1, @NativeType("GLint") int y1, @NativeType("GLint") int x2, @NativeType("GLint") int y2);
-
- // --- [ glRects ] ---
-
- /**
- * Short version of {@link #glRecti Recti}.
- *
- * @param x1 the x coordinate of the first corner vertex
- * @param y1 the y coordinate of the first corner vertex
- * @param x2 the x coordinate of the second corner vertex
- * @param y2 the y coordinate of the second corner vertex
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRects(@NativeType("GLshort") short x1, @NativeType("GLshort") short y1, @NativeType("GLshort") short x2, @NativeType("GLshort") short y2);
-
- // --- [ glRectf ] ---
-
- /**
- * Float version of {@link #glRecti Recti}.
- *
- * @param x1 the x coordinate of the first corner vertex
- * @param y1 the y coordinate of the first corner vertex
- * @param x2 the x coordinate of the second corner vertex
- * @param y2 the y coordinate of the second corner vertex
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRectf(@NativeType("GLfloat") float x1, @NativeType("GLfloat") float y1, @NativeType("GLfloat") float x2, @NativeType("GLfloat") float y2);
-
- // --- [ glRectd ] ---
-
- /**
- * Double version of {@link #glRecti Recti}.
- *
- * @param x1 the x coordinate of the first corner vertex
- * @param y1 the y coordinate of the first corner vertex
- * @param x2 the x coordinate of the second corner vertex
- * @param y2 the y coordinate of the second corner vertex
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRectd(@NativeType("GLdouble") double x1, @NativeType("GLdouble") double y1, @NativeType("GLdouble") double x2, @NativeType("GLdouble") double y2);
-
- // --- [ glRectiv ] ---
-
- /** Unsafe version of: {@link #glRectiv Rectiv} */
- public static native void nglRectiv(long v1, long v2);
-
- /**
- * Pointer version of {@link #glRecti Recti}.
- *
- * @param v1 the first vertex buffer
- * @param v2 the second vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectiv(@NativeType("GLint const *") IntBuffer v1, @NativeType("GLint const *") IntBuffer v2) {
- if (CHECKS) {
- check(v1, 2);
- check(v2, 2);
- }
- nglRectiv(memAddress(v1), memAddress(v2));
- }
-
- // --- [ glRectsv ] ---
-
- /** Unsafe version of: {@link #glRectsv Rectsv} */
- public static native void nglRectsv(long v1, long v2);
-
- /**
- * Pointer version of {@link #glRects Rects}.
- *
- * @param v1 the first vertex buffer
- * @param v2 the second vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectsv(@NativeType("GLshort const *") ShortBuffer v1, @NativeType("GLshort const *") ShortBuffer v2) {
- if (CHECKS) {
- check(v1, 2);
- check(v2, 2);
- }
- nglRectsv(memAddress(v1), memAddress(v2));
- }
-
- // --- [ glRectfv ] ---
-
- /** Unsafe version of: {@link #glRectfv Rectfv} */
- public static native void nglRectfv(long v1, long v2);
-
- /**
- * Pointer version of {@link #glRectf Rectf}.
- *
- * @param v1 the first vertex buffer
- * @param v2 the second vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectfv(@NativeType("GLfloat const *") FloatBuffer v1, @NativeType("GLfloat const *") FloatBuffer v2) {
- if (CHECKS) {
- check(v1, 2);
- check(v2, 2);
- }
- nglRectfv(memAddress(v1), memAddress(v2));
- }
-
- // --- [ glRectdv ] ---
-
- /** Unsafe version of: {@link #glRectdv Rectdv} */
- public static native void nglRectdv(long v1, long v2);
-
- /**
- * Pointer version of {@link #glRectd Rectd}.
- *
- * @param v1 the first vertex buffer
- * @param v2 the second vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectdv(@NativeType("GLdouble const *") DoubleBuffer v1, @NativeType("GLdouble const *") DoubleBuffer v2) {
- if (CHECKS) {
- check(v1, 2);
- check(v2, 2);
- }
- nglRectdv(memAddress(v1), memAddress(v2));
- }
-
- // --- [ glRenderMode ] ---
-
- /**
- * Sets the current render mode. The default is {@link #GL_RENDER RENDER}.
- *
- * @param mode the render mode. One of:
| {@link #GL_RENDER RENDER} | {@link #GL_SELECT SELECT} | {@link #GL_FEEDBACK FEEDBACK} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLint")
- public static native int glRenderMode(@NativeType("GLenum") int mode);
-
- // --- [ glRotatef ] ---
-
- /**
- * Manipulates the current matrix with a rotation matrix.
- *
- * {@code angle} gives an angle of rotation in degrees; the coordinates of a vector v are given by v = (x y z)T. The computed matrix
- * is a counter-clockwise rotation about the line through the origin with the specified axis when that axis is pointing up (i.e. the right-hand rule
- * determines the sense of the rotation angle). The matrix is thus
- *
- *
- * | R | 0 |
- * | 0 |
- * | 0 |
- * | 0 | 0 | 0 | 1 |
- *
- *
- * Let u = v / ||v|| = (x' y' z')T. If S =
- *
- *
- * | 0 | -z' | y' |
- * | z' | 0 | -x' |
- * | -y' | x' | 0 |
- *
- *
- * then R = uuT + cos(angle)(I - uuT) + sin(angle)S
- *
- * @param angle the angle of rotation in degrees
- * @param x the x coordinate of the rotation vector
- * @param y the y coordinate of the rotation vector
- * @param z the z coordinate of the rotation vector
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRotatef(@NativeType("GLfloat") float angle, @NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
-
- // --- [ glRotated ] ---
-
- /**
- * Double version of {@link #glRotatef Rotatef}.
- *
- * @param angle the angle of rotation in degrees
- * @param x the x coordinate of the rotation vector
- * @param y the y coordinate of the rotation vector
- * @param z the z coordinate of the rotation vector
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glRotated(@NativeType("GLdouble") double angle, @NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z);
-
- // --- [ glScalef ] ---
-
- /**
- * Manipulates the current matrix with a general scaling matrix along the x-, y- and z- axes.
- *
- * Calling this function is equivalent to calling {@link #glMultMatrixf MultMatrixf} with the following matrix:
- *
- *
- * | x | 0 | 0 | 0 |
- * | 0 | y | 0 | 0 |
- * | 0 | 0 | z | 0 |
- * | 0 | 0 | 0 | 1 |
- *
- *
- * @param x the x-axis scaling factor
- * @param y the y-axis scaling factor
- * @param z the z-axis scaling factor
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glScalef(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
-
- // --- [ glScaled ] ---
-
- /**
- * Double version of {@link #glScalef Scalef}.
- *
- * @param x the x-axis scaling factor
- * @param y the y-axis scaling factor
- * @param z the z-axis scaling factor
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glScaled(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z);
-
- // --- [ glScissor ] ---
-
- /**
- * Defines the scissor rectangle for all viewports. The scissor test is enabled or disabled for all viewports using {@link #glEnable Enable} or {@link #glDisable Disable}
- * with the symbolic constant {@link GL11C#GL_SCISSOR_TEST SCISSOR_TEST}. When disabled, it is as if the scissor test always passes. When enabled, if
- * left ≤ xw < left + width and bottom ≤ yw < bottom + height for the scissor rectangle, then the scissor
- * test passes. Otherwise, the test fails and the fragment is discarded.
- *
- * @param x the left scissor rectangle coordinate
- * @param y the bottom scissor rectangle coordinate
- * @param width the scissor rectangle width
- * @param height the scissor rectangle height
- *
- * @see Reference Page
- */
- public static void glScissor(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height) {
- GL11C.glScissor(x, y, width, height);
- }
-
- // --- [ glSelectBuffer ] ---
-
- /**
- * Unsafe version of: {@link #glSelectBuffer SelectBuffer}
- *
- * @param size the maximum number of values that can be stored in {@code buffer}
- */
- public static native void nglSelectBuffer(int size, long buffer);
-
- /**
- * Sets the selection array.
- *
- * @param buffer an array of unsigned integers to be potentially filled names
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glSelectBuffer(@NativeType("GLuint *") IntBuffer buffer) {
- nglSelectBuffer(buffer.remaining(), memAddress(buffer));
- }
-
- // --- [ glShadeModel ] ---
-
- /**
- * Sets the current shade mode. The initial value of the shade mode is {@link #GL_SMOOTH SMOOTH}.
- *
- * If mode is {@link #GL_SMOOTH SMOOTH}, vertex colors are treated individually. If mode is {@link #GL_FLAT FLAT}, flatshading is enabled and colors are taken from the
- * provoking vertex of the primitive. The colors selected are those derived from current values, generated by lighting, or generated by vertex shading, if
- * lighting is disabled, enabled, or a vertex shader is in use, respectively.
- *
- * @param mode the shade mode. One of:
| {@link #GL_SMOOTH SMOOTH} | {@link #GL_FLAT FLAT} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glShadeModel(@NativeType("GLenum") int mode);
-
- // --- [ glStencilFunc ] ---
-
- /**
- * Controls the stencil test.
- *
- * {@code ref} is an integer reference value that is used in the unsigned stencil comparison. Stencil comparison operations and queries of {@code ref}
- * clamp its value to the range [0, 2s – 1], where s is the number of bits in the stencil buffer attached to the draw framebuffer. The s
- * least significant bits of {@code mask} are bitwise ANDed with both the reference and the stored stencil value, and the resulting masked values are those that
- * participate in the comparison controlled by {@code func}.
- *
- * @param func the stencil comparison function. One of:
| {@link GL11C#GL_NEVER NEVER} | {@link GL11C#GL_ALWAYS ALWAYS} | {@link GL11C#GL_LESS LESS} | {@link GL11C#GL_LEQUAL LEQUAL} | {@link GL11C#GL_EQUAL EQUAL} | {@link GL11C#GL_GEQUAL GEQUAL} | {@link GL11C#GL_GREATER GREATER} | {@link GL11C#GL_NOTEQUAL NOTEQUAL} |
- * @param ref the reference value
- * @param mask the stencil comparison mask
- *
- * @see Reference Page
- */
- public static void glStencilFunc(@NativeType("GLenum") int func, @NativeType("GLint") int ref, @NativeType("GLuint") int mask) {
- GL11C.glStencilFunc(func, ref, mask);
- }
-
- // --- [ glStencilMask ] ---
-
- /**
- * Masks the writing of particular bits into the stencil plans.
- *
- * The least significant s bits of {@code mask}, where s is the number of bits in the stencil buffer, specify an integer mask. Where a 1 appears in this
- * mask, the corresponding bit in the stencil buffer is written; where a 0 appears, the bit is not written.
- *
- * @param mask the stencil mask
- *
- * @see Reference Page
- */
- public static void glStencilMask(@NativeType("GLuint") int mask) {
- GL11C.glStencilMask(mask);
- }
-
- // --- [ glStencilOp ] ---
-
- /**
- * Indicates what happens to the stored stencil value if this or certain subsequent tests fail or pass.
- *
- * The supported actions are {@link GL11C#GL_KEEP KEEP}, {@link GL11C#GL_ZERO ZERO}, {@link GL11C#GL_REPLACE REPLACE}, {@link GL11C#GL_INCR INCR}, {@link GL11C#GL_DECR DECR}, {@link GL11C#GL_INVERT INVERT},
- * {@link GL14#GL_INCR_WRAP INCR_WRAP} and {@link GL14#GL_DECR_WRAP DECR_WRAP}. These correspond to keeping the current value, setting to zero, replacing with the reference value,
- * incrementing with saturation, decrementing with saturation, bitwise inverting it, incrementing without saturation, and decrementing without saturation.
- *
- * For purposes of increment and decrement, the stencil bits are considered as an unsigned integer. Incrementing or decrementing with saturation clamps
- * the stencil value at 0 and the maximum representable value. Incrementing or decrementing without saturation will wrap such that incrementing the maximum
- * representable value results in 0, and decrementing 0 results in the maximum representable value.
- *
- * @param sfail the action to take if the stencil test fails
- * @param dpfail the action to take if the depth buffer test fails
- * @param dppass the action to take if the depth buffer test passes
- *
- * @see Reference Page
- */
- public static void glStencilOp(@NativeType("GLenum") int sfail, @NativeType("GLenum") int dpfail, @NativeType("GLenum") int dppass) {
- GL11C.glStencilOp(sfail, dpfail, dppass);
- }
-
- // --- [ glTexCoord1f ] ---
-
- /**
- * Sets the current one-dimensional texture coordinate. {@code t} and {@code r} are implicitly set to 0 and {@code q} to 1.
- *
- * @param s the s component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord1f(@NativeType("GLfloat") float s);
-
- // --- [ glTexCoord1s ] ---
-
- /**
- * Short version of {@link #glTexCoord1f TexCoord1f}.
- *
- * @param s the s component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord1s(@NativeType("GLshort") short s);
-
- // --- [ glTexCoord1i ] ---
-
- /**
- * Integer version of {@link #glTexCoord1f TexCoord1f}.
- *
- * @param s the s component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord1i(@NativeType("GLint") int s);
-
- // --- [ glTexCoord1d ] ---
-
- /**
- * Double version of {@link #glTexCoord1f TexCoord1f}.
- *
- * @param s the s component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord1d(@NativeType("GLdouble") double s);
-
- // --- [ glTexCoord1fv ] ---
-
- /** Unsafe version of: {@link #glTexCoord1fv TexCoord1fv} */
- public static native void nglTexCoord1fv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord1f TexCoord1f}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 1);
- }
- nglTexCoord1fv(memAddress(v));
- }
-
- // --- [ glTexCoord1sv ] ---
-
- /** Unsafe version of: {@link #glTexCoord1sv TexCoord1sv} */
- public static native void nglTexCoord1sv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord1s TexCoord1s}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 1);
- }
- nglTexCoord1sv(memAddress(v));
- }
-
- // --- [ glTexCoord1iv ] ---
-
- /** Unsafe version of: {@link #glTexCoord1iv TexCoord1iv} */
- public static native void nglTexCoord1iv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord1i TexCoord1i}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 1);
- }
- nglTexCoord1iv(memAddress(v));
- }
-
- // --- [ glTexCoord1dv ] ---
-
- /** Unsafe version of: {@link #glTexCoord1dv TexCoord1dv} */
- public static native void nglTexCoord1dv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord1d TexCoord1d}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 1);
- }
- nglTexCoord1dv(memAddress(v));
- }
-
- // --- [ glTexCoord2f ] ---
-
- /**
- * Sets the current two-dimensional texture coordinate. {@code r} is implicitly set to 0 and {@code q} to 1.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord2f(@NativeType("GLfloat") float s, @NativeType("GLfloat") float t);
-
- // --- [ glTexCoord2s ] ---
-
- /**
- * Short version of {@link #glTexCoord2f TexCoord2f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord2s(@NativeType("GLshort") short s, @NativeType("GLshort") short t);
-
- // --- [ glTexCoord2i ] ---
-
- /**
- * Integer version of {@link #glTexCoord2f TexCoord2f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord2i(@NativeType("GLint") int s, @NativeType("GLint") int t);
-
- // --- [ glTexCoord2d ] ---
-
- /**
- * Double version of {@link #glTexCoord2f TexCoord2f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord2d(@NativeType("GLdouble") double s, @NativeType("GLdouble") double t);
-
- // --- [ glTexCoord2fv ] ---
-
- /** Unsafe version of: {@link #glTexCoord2fv TexCoord2fv} */
- public static native void nglTexCoord2fv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord2f TexCoord2f}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 2);
- }
- nglTexCoord2fv(memAddress(v));
- }
-
- // --- [ glTexCoord2sv ] ---
-
- /** Unsafe version of: {@link #glTexCoord2sv TexCoord2sv} */
- public static native void nglTexCoord2sv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord2s TexCoord2s}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 2);
- }
- nglTexCoord2sv(memAddress(v));
- }
-
- // --- [ glTexCoord2iv ] ---
-
- /** Unsafe version of: {@link #glTexCoord2iv TexCoord2iv} */
- public static native void nglTexCoord2iv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord2i TexCoord2i}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 2);
- }
- nglTexCoord2iv(memAddress(v));
- }
-
- // --- [ glTexCoord2dv ] ---
-
- /** Unsafe version of: {@link #glTexCoord2dv TexCoord2dv} */
- public static native void nglTexCoord2dv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord2d TexCoord2d}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 2);
- }
- nglTexCoord2dv(memAddress(v));
- }
-
- // --- [ glTexCoord3f ] ---
-
- /**
- * Sets the current three-dimensional texture coordinate. {@code q} is implicitly set to 1.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord3f(@NativeType("GLfloat") float s, @NativeType("GLfloat") float t, @NativeType("GLfloat") float r);
-
- // --- [ glTexCoord3s ] ---
-
- /**
- * Short version of {@link #glTexCoord3f TexCoord3f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord3s(@NativeType("GLshort") short s, @NativeType("GLshort") short t, @NativeType("GLshort") short r);
-
- // --- [ glTexCoord3i ] ---
-
- /**
- * Integer version of {@link #glTexCoord3f TexCoord3f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord3i(@NativeType("GLint") int s, @NativeType("GLint") int t, @NativeType("GLint") int r);
-
- // --- [ glTexCoord3d ] ---
-
- /**
- * Double version of {@link #glTexCoord3f TexCoord3f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord3d(@NativeType("GLdouble") double s, @NativeType("GLdouble") double t, @NativeType("GLdouble") double r);
-
- // --- [ glTexCoord3fv ] ---
-
- /** Unsafe version of: {@link #glTexCoord3fv TexCoord3fv} */
- public static native void nglTexCoord3fv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord3f TexCoord3f}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglTexCoord3fv(memAddress(v));
- }
-
- // --- [ glTexCoord3sv ] ---
-
- /** Unsafe version of: {@link #glTexCoord3sv TexCoord3sv} */
- public static native void nglTexCoord3sv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord3s TexCoord3s}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglTexCoord3sv(memAddress(v));
- }
-
- // --- [ glTexCoord3iv ] ---
-
- /** Unsafe version of: {@link #glTexCoord3iv TexCoord3iv} */
- public static native void nglTexCoord3iv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord3i TexCoord3i}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglTexCoord3iv(memAddress(v));
- }
-
- // --- [ glTexCoord3dv ] ---
-
- /** Unsafe version of: {@link #glTexCoord3dv TexCoord3dv} */
- public static native void nglTexCoord3dv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord3d TexCoord3d}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 3);
- }
- nglTexCoord3dv(memAddress(v));
- }
-
- // --- [ glTexCoord4f ] ---
-
- /**
- * Sets the current four-dimensional texture coordinate.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- * @param q the q component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord4f(@NativeType("GLfloat") float s, @NativeType("GLfloat") float t, @NativeType("GLfloat") float r, @NativeType("GLfloat") float q);
-
- // --- [ glTexCoord4s ] ---
-
- /**
- * Short version of {@link #glTexCoord4f TexCoord4f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- * @param q the q component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord4s(@NativeType("GLshort") short s, @NativeType("GLshort") short t, @NativeType("GLshort") short r, @NativeType("GLshort") short q);
-
- // --- [ glTexCoord4i ] ---
-
- /**
- * Integer version of {@link #glTexCoord4f TexCoord4f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- * @param q the q component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord4i(@NativeType("GLint") int s, @NativeType("GLint") int t, @NativeType("GLint") int r, @NativeType("GLint") int q);
-
- // --- [ glTexCoord4d ] ---
-
- /**
- * Double version of {@link #glTexCoord4f TexCoord4f}.
- *
- * @param s the s component of the current texture coordinates
- * @param t the t component of the current texture coordinates
- * @param r the r component of the current texture coordinates
- * @param q the q component of the current texture coordinates
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexCoord4d(@NativeType("GLdouble") double s, @NativeType("GLdouble") double t, @NativeType("GLdouble") double r, @NativeType("GLdouble") double q);
-
- // --- [ glTexCoord4fv ] ---
-
- /** Unsafe version of: {@link #glTexCoord4fv TexCoord4fv} */
- public static native void nglTexCoord4fv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord4f TexCoord4f}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4fv(@NativeType("GLfloat const *") FloatBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglTexCoord4fv(memAddress(v));
- }
-
- // --- [ glTexCoord4sv ] ---
-
- /** Unsafe version of: {@link #glTexCoord4sv TexCoord4sv} */
- public static native void nglTexCoord4sv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord4s TexCoord4s}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4sv(@NativeType("GLshort const *") ShortBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglTexCoord4sv(memAddress(v));
- }
-
- // --- [ glTexCoord4iv ] ---
-
- /** Unsafe version of: {@link #glTexCoord4iv TexCoord4iv} */
- public static native void nglTexCoord4iv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord4i TexCoord4i}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4iv(@NativeType("GLint const *") IntBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglTexCoord4iv(memAddress(v));
- }
-
- // --- [ glTexCoord4dv ] ---
-
- /** Unsafe version of: {@link #glTexCoord4dv TexCoord4dv} */
- public static native void nglTexCoord4dv(long v);
-
- /**
- * Pointer version of {@link #glTexCoord4d TexCoord4d}.
- *
- * @param v the texture coordinate buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4dv(@NativeType("GLdouble const *") DoubleBuffer v) {
- if (CHECKS) {
- check(v, 4);
- }
- nglTexCoord4dv(memAddress(v));
- }
-
- // --- [ glTexCoordPointer ] ---
-
- /** Unsafe version of: {@link #glTexCoordPointer TexCoordPointer} */
- public static native void nglTexCoordPointer(int size, int type, int stride, long pointer);
-
- /**
- * Specifies the location and organization of a texture coordinate array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the texture coordinate array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoordPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglTexCoordPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a texture coordinate array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the texture coordinate array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoordPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglTexCoordPointer(size, type, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a texture coordinate array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the texture coordinate array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoordPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglTexCoordPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a texture coordinate array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the texture coordinate array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoordPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglTexCoordPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a texture coordinate array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the texture coordinate array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoordPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- nglTexCoordPointer(size, type, stride, memAddress(pointer));
- }
-
- // --- [ glTexEnvi ] ---
-
- /**
- * Sets parameters of the texture environment that specifies how texture values are interpreted when texturing a fragment, or sets per-texture-unit
- * filtering parameters.
- *
- * @param target the texture environment target. One of:
| {@link #GL_TEXTURE_ENV TEXTURE_ENV} | {@link GL14#GL_TEXTURE_FILTER_CONTROL TEXTURE_FILTER_CONTROL} | {@link GL20#GL_POINT_SPRITE POINT_SPRITE} |
- * @param pname the parameter to set. One of:
| {@link GL20#GL_COORD_REPLACE COORD_REPLACE} | {@link #GL_TEXTURE_ENV_MODE TEXTURE_ENV_MODE} | {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL13#GL_COMBINE_RGB COMBINE_RGB} | {@link GL13#GL_COMBINE_ALPHA COMBINE_ALPHA} | {@link GL15#GL_SRC0_RGB SRC0_RGB} |
| {@link GL15#GL_SRC1_RGB SRC1_RGB} | {@link GL15#GL_SRC2_RGB SRC2_RGB} | {@link GL15#GL_SRC0_ALPHA SRC0_ALPHA} | {@link GL15#GL_SRC1_ALPHA SRC1_ALPHA} | {@link GL15#GL_SRC2_ALPHA SRC2_ALPHA} | {@link GL13#GL_OPERAND0_RGB OPERAND0_RGB} |
| {@link GL13#GL_OPERAND1_RGB OPERAND1_RGB} | {@link GL13#GL_OPERAND2_RGB OPERAND2_RGB} | {@link GL13#GL_OPERAND0_ALPHA OPERAND0_ALPHA} | {@link GL13#GL_OPERAND1_ALPHA OPERAND1_ALPHA} | {@link GL13#GL_OPERAND2_ALPHA OPERAND2_ALPHA} | {@link GL13#GL_RGB_SCALE RGB_SCALE} |
| {@link #GL_ALPHA_SCALE ALPHA_SCALE} |
- * @param param the parameter value. Scalar value or one of:
| {@link #GL_REPLACE REPLACE} | {@link #GL_MODULATE MODULATE} | {@link #GL_DECAL DECAL} | {@link #GL_BLEND BLEND} | {@link #GL_ADD ADD} | {@link GL13#GL_COMBINE COMBINE} | {@link GL13#GL_ADD_SIGNED ADD_SIGNED} | {@link GL13#GL_INTERPOLATE INTERPOLATE} |
| {@link GL13#GL_SUBTRACT SUBTRACT} | {@link GL13#GL_DOT3_RGB DOT3_RGB} | {@link GL13#GL_DOT3_RGBA DOT3_RGBA} | {@link #GL_TEXTURE TEXTURE} | {@link GL13#GL_TEXTURE0 TEXTURE0} | GL13.GL_TEXTURE[1-31] | {@link GL13#GL_CONSTANT CONSTANT} | {@link GL13#GL_PRIMARY_COLOR PRIMARY_COLOR} |
| {@link GL13#GL_PREVIOUS PREVIOUS} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexEnvi(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glTexEnviv ] ---
-
- /** Unsafe version of: {@link #glTexEnviv TexEnviv} */
- public static native void nglTexEnviv(int target, int pname, long params);
-
- /**
- * Pointer version of {@link #glTexEnvi TexEnvi}.
- *
- * @param target the texture environment target. Must be:
| {@link #GL_TEXTURE_ENV TEXTURE_ENV} |
- * @param pname the parameter to set. Must be:
| {@link #GL_TEXTURE_ENV_COLOR TEXTURE_ENV_COLOR} |
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexEnviv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglTexEnviv(target, pname, memAddress(params));
- }
-
- // --- [ glTexEnvf ] ---
-
- /**
- * Float version of {@link #glTexEnvi TexEnvi}.
- *
- * @param target the texture environment target
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexEnvf(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glTexEnvfv ] ---
-
- /** Unsafe version of: {@link #glTexEnvfv TexEnvfv} */
- public static native void nglTexEnvfv(int target, int pname, long params);
-
- /**
- * Pointer version of {@link #glTexEnvf TexEnvf}.
- *
- * @param target the texture environment target. Must be:
| {@link #GL_TEXTURE_ENV TEXTURE_ENV} |
- * @param pname the parameter to set. Must be:
| {@link #GL_TEXTURE_ENV_COLOR TEXTURE_ENV_COLOR} |
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexEnvfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglTexEnvfv(target, pname, memAddress(params));
- }
-
- // --- [ glTexGeni ] ---
-
- /**
- * Sets an integer texture coordinate generation parameter.
- *
- * A texture coordinate generation function is enabled or disabled using {@link #glEnable Enable} and {@link #glDisable Disable} with an argument of
- * {@link #GL_TEXTURE_GEN_S TEXTURE_GEN_S}, {@link #GL_TEXTURE_GEN_T TEXTURE_GEN_T}, {@link #GL_TEXTURE_GEN_R TEXTURE_GEN_R}, or {@link #GL_TEXTURE_GEN_Q TEXTURE_GEN_Q} (each indicates the corresponding texture
- * coordinate). When enabled, the specified texture coordinate is computed according to the current {@link #GL_EYE_LINEAR EYE_LINEAR}, {@link #GL_OBJECT_LINEAR OBJECT_LINEAR} or
- * {@link #GL_SPHERE_MAP SPHERE_MAP} specification, depending on the current setting of {@link #GL_TEXTURE_GEN_MODE TEXTURE_GEN_MODE} for that coordinate. When disabled, subsequent
- * vertices will take the indicated texture coordinate from the current texture coordinates.
- *
- * The initial state has the texture generation function disabled for all texture coordinates. Initially all texture generation modes are EYE_LINEAR.
- *
- * @param coord the coordinate for which to set the parameter. One of:
| {@link #GL_S S} | {@link #GL_T T} | {@link #GL_R R} | {@link #GL_Q Q} |
- * @param pname the parameter to set. Must be:
| {@link #GL_TEXTURE_GEN_MODE TEXTURE_GEN_MODE} |
- * @param param the parameter value. One of:
| {@link #GL_OBJECT_LINEAR OBJECT_LINEAR} | {@link #GL_EYE_LINEAR EYE_LINEAR} | {@link #GL_SPHERE_MAP SPHERE_MAP} | {@link GL13#GL_REFLECTION_MAP REFLECTION_MAP} | {@link GL13#GL_NORMAL_MAP NORMAL_MAP} |
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexGeni(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLint") int param);
-
- // --- [ glTexGeniv ] ---
-
- /** Unsafe version of: {@link #glTexGeniv TexGeniv} */
- public static native void nglTexGeniv(int coord, int pname, long params);
-
- /**
- * Pointer version of {@link #glTexGeni TexGeni}.
- *
- * @param coord the coordinate for which to set the parameter
- * @param pname the parameter to set. One of:
| {@link #GL_OBJECT_PLANE OBJECT_PLANE} | {@link #GL_EYE_PLANE EYE_PLANE} |
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGeniv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglTexGeniv(coord, pname, memAddress(params));
- }
-
- // --- [ glTexGenf ] ---
-
- /**
- * Float version of {@link #glTexGeni TexGeni}.
- *
- * @param coord the coordinate for which to set the parameter
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexGenf(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLfloat") float param);
-
- // --- [ glTexGenfv ] ---
-
- /** Unsafe version of: {@link #glTexGenfv TexGenfv} */
- public static native void nglTexGenfv(int coord, int pname, long params);
-
- /**
- * Pointer version of {@link #glTexGenf TexGenf}.
- *
- * @param coord the coordinate for which to set the parameter
- * @param pname the parameter to set. One of:
| {@link #GL_OBJECT_PLANE OBJECT_PLANE} | {@link #GL_EYE_PLANE EYE_PLANE} |
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGenfv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglTexGenfv(coord, pname, memAddress(params));
- }
-
- // --- [ glTexGend ] ---
-
- /**
- * Double version of {@link #glTexGeni TexGeni}.
- *
- * @param coord the coordinate for which to set the parameter
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTexGend(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLdouble") double param);
-
- // --- [ glTexGendv ] ---
-
- /** Unsafe version of: {@link #glTexGendv TexGendv} */
- public static native void nglTexGendv(int coord, int pname, long params);
-
- /**
- * Pointer version of {@link #glTexGend TexGend}.
- *
- * @param coord the coordinate for which to set the parameter
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGendv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLdouble const *") DoubleBuffer params) {
- if (CHECKS) {
- check(params, 4);
- }
- nglTexGendv(coord, pname, memAddress(params));
- }
-
- // --- [ glTexImage1D ] ---
-
- /** Unsafe version of: {@link #glTexImage1D TexImage1D} */
- public static void nglTexImage1D(int target, int level, int internalformat, int width, int border, int format, int type, long pixels) {
- GL11C.nglTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") ByteBuffer pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") long pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") ShortBuffer pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") IntBuffer pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") FloatBuffer pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexImage2D TexImage2D}}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_PROXY_TEXTURE_1D PROXY_TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format
- * @param width the texture width
- * @param border the texture border width
- * @param format the texel data format
- * @param type the texel data type
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") DoubleBuffer pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- // --- [ glTexImage2D ] ---
-
- /** Unsafe version of: {@link #glTexImage2D TexImage2D} */
- public static void nglTexImage2D(int target, int level, int internalformat, int width, int height, int border, int format, int type, long pixels) {
- GL11C.nglTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") ByteBuffer pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") long pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") ShortBuffer pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") IntBuffer pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") FloatBuffer pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Specifies a two-dimensional texture image.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
| {@link GL11C#GL_PROXY_TEXTURE_2D PROXY_TEXTURE_2D} | {@link GL30#GL_PROXY_TEXTURE_1D_ARRAY PROXY_TEXTURE_1D_ARRAY} | {@link GL31#GL_PROXY_TEXTURE_RECTANGLE PROXY_TEXTURE_RECTANGLE} | {@link GL13#GL_PROXY_TEXTURE_CUBE_MAP PROXY_TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalformat the texture internal format. One of:
| {@link GL11C#GL_RED RED} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
| {@link GL30#GL_R8 R8} | {@link GL31#GL_R8_SNORM R8_SNORM} | {@link GL30#GL_R16 R16} | {@link GL31#GL_R16_SNORM R16_SNORM} | {@link GL30#GL_RG8 RG8} | {@link GL31#GL_RG8_SNORM RG8_SNORM} |
| {@link GL30#GL_RG16 RG16} | {@link GL31#GL_RG16_SNORM RG16_SNORM} | {@link GL11C#GL_R3_G3_B2 R3_G3_B2} | {@link GL11C#GL_RGB4 RGB4} | {@link GL11C#GL_RGB5 RGB5} | {@link GL41#GL_RGB565 RGB565} |
| {@link GL11C#GL_RGB8 RGB8} | {@link GL31#GL_RGB8_SNORM RGB8_SNORM} | {@link GL11C#GL_RGB10 RGB10} | {@link GL11C#GL_RGB12 RGB12} | {@link GL11C#GL_RGB16 RGB16} | {@link GL31#GL_RGB16_SNORM RGB16_SNORM} |
| {@link GL11C#GL_RGBA2 RGBA2} | {@link GL11C#GL_RGBA4 RGBA4} | {@link GL11C#GL_RGB5_A1 RGB5_A1} | {@link GL11C#GL_RGBA8 RGBA8} | {@link GL31#GL_RGBA8_SNORM RGBA8_SNORM} | {@link GL11C#GL_RGB10_A2 RGB10_A2} |
| {@link GL33#GL_RGB10_A2UI RGB10_A2UI} | {@link GL11C#GL_RGBA12 RGBA12} | {@link GL11C#GL_RGBA16 RGBA16} | {@link GL31#GL_RGBA16_SNORM RGBA16_SNORM} | {@link GL21#GL_SRGB8 SRGB8} | {@link GL21#GL_SRGB8_ALPHA8 SRGB8_ALPHA8} |
| {@link GL30#GL_R16F R16F} | {@link GL30#GL_RG16F RG16F} | {@link GL30#GL_RGB16F RGB16F} | {@link GL30#GL_RGBA16F RGBA16F} | {@link GL30#GL_R32F R32F} | {@link GL30#GL_RG32F RG32F} |
| {@link GL30#GL_RGB32F RGB32F} | {@link GL30#GL_RGBA32F RGBA32F} | {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} | {@link GL30#GL_RGB9_E5 RGB9_E5} | {@link GL30#GL_R8I R8I} | {@link GL30#GL_R8UI R8UI} |
| {@link GL30#GL_R16I R16I} | {@link GL30#GL_R16UI R16UI} | {@link GL30#GL_R32I R32I} | {@link GL30#GL_R32UI R32UI} | {@link GL30#GL_RG8I RG8I} | {@link GL30#GL_RG8UI RG8UI} |
| {@link GL30#GL_RG16I RG16I} | {@link GL30#GL_RG16UI RG16UI} | {@link GL30#GL_RG32I RG32I} | {@link GL30#GL_RG32UI RG32UI} | {@link GL30#GL_RGB8I RGB8I} | {@link GL30#GL_RGB8UI RGB8UI} |
| {@link GL30#GL_RGB16I RGB16I} | {@link GL30#GL_RGB16UI RGB16UI} | {@link GL30#GL_RGB32I RGB32I} | {@link GL30#GL_RGB32UI RGB32UI} | {@link GL30#GL_RGBA8I RGBA8I} | {@link GL30#GL_RGBA8UI RGBA8UI} |
| {@link GL30#GL_RGBA16I RGBA16I} | {@link GL30#GL_RGBA16UI RGBA16UI} | {@link GL30#GL_RGBA32I RGBA32I} | {@link GL30#GL_RGBA32UI RGBA32UI} | {@link GL14#GL_DEPTH_COMPONENT16 DEPTH_COMPONENT16} | {@link GL14#GL_DEPTH_COMPONENT24 DEPTH_COMPONENT24} |
| {@link GL14#GL_DEPTH_COMPONENT32 DEPTH_COMPONENT32} | {@link GL30#GL_DEPTH24_STENCIL8 DEPTH24_STENCIL8} | {@link GL30#GL_DEPTH_COMPONENT32F DEPTH_COMPONENT32F} | {@link GL30#GL_DEPTH32F_STENCIL8 DEPTH32F_STENCIL8} | {@link GL30#GL_COMPRESSED_RED COMPRESSED_RED} | {@link GL30#GL_COMPRESSED_RG COMPRESSED_RG} |
| {@link GL13#GL_COMPRESSED_RGB COMPRESSED_RGB} | {@link GL13#GL_COMPRESSED_RGBA COMPRESSED_RGBA} | {@link GL21#GL_COMPRESSED_SRGB COMPRESSED_SRGB} | {@link GL21#GL_COMPRESSED_SRGB_ALPHA COMPRESSED_SRGB_ALPHA} | {@link GL30#GL_COMPRESSED_RED_RGTC1 COMPRESSED_RED_RGTC1} | {@link GL30#GL_COMPRESSED_SIGNED_RED_RGTC1 COMPRESSED_SIGNED_RED_RGTC1} |
| {@link GL30#GL_COMPRESSED_RG_RGTC2 COMPRESSED_RG_RGTC2} | {@link GL30#GL_COMPRESSED_SIGNED_RG_RGTC2 COMPRESSED_SIGNED_RG_RGTC2} | {@link GL42#GL_COMPRESSED_RGBA_BPTC_UNORM COMPRESSED_RGBA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM COMPRESSED_SRGB_ALPHA_BPTC_UNORM} | {@link GL42#GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT COMPRESSED_RGB_BPTC_SIGNED_FLOAT} | {@link GL42#GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT} |
| {@link GL43#GL_COMPRESSED_RGB8_ETC2 COMPRESSED_RGB8_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_ETC2 COMPRESSED_SRGB8_ETC2} | {@link GL43#GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2} | {@link GL43#GL_COMPRESSED_RGBA8_ETC2_EAC COMPRESSED_RGBA8_ETC2_EAC} | {@link GL43#GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC COMPRESSED_SRGB8_ALPHA8_ETC2_EAC} |
| {@link GL43#GL_COMPRESSED_R11_EAC COMPRESSED_R11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_R11_EAC COMPRESSED_SIGNED_R11_EAC} | {@link GL43#GL_COMPRESSED_RG11_EAC COMPRESSED_RG11_EAC} | {@link GL43#GL_COMPRESSED_SIGNED_RG11_EAC COMPRESSED_SIGNED_RG11_EAC} | see {@link EXTTextureCompressionS3TC} | see {@link EXTTextureCompressionLATC} |
| see {@link ATITextureCompression3DC} |
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- * @param format the texel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the texel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the texel data
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") DoubleBuffer pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- // --- [ glCopyTexImage1D ] ---
-
- /**
- * Defines a one-dimensional texel array in exactly the manner of {@link #glTexImage1D TexImage1D}, except that the image data are taken from the framebuffer rather
- * than from client memory. For the purposes of decoding the texture image, {@code CopyTexImage1D} is equivalent to calling {@link #glCopyTexImage2D CopyTexImage2D}
- * with corresponding arguments and height of 1, except that the height of the image is always 1, regardless of the value of border. level, internalformat,
- * and border are specified using the same values, with the same meanings, as the corresponding arguments of {@link #glTexImage1D TexImage1D}. The constraints on
- * width and border are exactly those of the corresponding arguments of {@link #glTexImage1D TexImage1D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param internalFormat the texture internal format. See {@link #glTexImage2D TexImage2D} for a list of supported formats.
- * @param x the left framebuffer pixel coordinate
- * @param y the lower framebuffer pixel coordinate
- * @param width the texture width
- * @param border the texture border width
- *
- * @see Reference Page
- */
- public static void glCopyTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int internalFormat, @NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLint") int border) {
- GL11C.glCopyTexImage1D(target, level, internalFormat, x, y, width, border);
- }
-
- // --- [ glCopyTexImage2D ] ---
-
- /**
- * Defines a two-dimensional texel array in exactly the manner of {@link #glTexImage2D TexImage2D}, except that the image data are taken from the framebuffer rather
- * than from client memory.
- *
- * {@code x}, {@code y}, {@code width}, and {@code height} correspond precisely to the corresponding arguments to {@link #glReadPixels ReadPixels}; they specify the
- * image's width and height, and the lower left (x, y) coordinates of the framebuffer region to be copied.
- *
- * The image is taken from the framebuffer exactly as if these arguments were passed to {@link GL11#glCopyPixels CopyPixels} with argument type set to {@link GL11C#GL_COLOR COLOR},
- * {@link GL11C#GL_DEPTH DEPTH}, or {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL}, depending on {@code internalformat}. RGBA data is taken from the current color buffer, while depth
- * component and stencil index data are taken from the depth and stencil buffers, respectively.
- *
- * Subsequent processing is identical to that described for {@link #glTexImage2D TexImage2D}, beginning with clamping of the R, G, B, A, or depth values, and masking
- * of the stencil index values from the resulting pixel groups. Parameters {@code level}, {@code internalformat}, and {@code border} are specified using
- * the same values, with the same meanings, as the corresponding arguments of {@link #glTexImage2D TexImage2D}.
- *
- * The constraints on width, height, and border are exactly those for the corresponding arguments of {@link #glTexImage2D TexImage2D}.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param internalFormat the texture internal format. See {@link #glTexImage2D TexImage2D} for a list of supported formats.
- * @param x the left framebuffer pixel coordinate
- * @param y the lower framebuffer pixel coordinate
- * @param width the texture width
- * @param height the texture height
- * @param border the texture border width
- *
- * @see Reference Page
- */
- public static void glCopyTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int internalFormat, @NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border) {
- GL11C.glCopyTexImage2D(target, level, internalFormat, x, y, width, height, border);
- }
-
- // --- [ glCopyTexSubImage1D ] ---
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the {@code internalformat}, {@code width} or {@code border}
- * parameters of the specified texel array, nor is any change made to texel values outside the specified subregion. See {@link #glCopyTexImage1D CopyTexImage1D} for more
- * details.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail number
- * @param xoffset the left texel coordinate of the texture subregion to update
- * @param x the left framebuffer pixel coordinate
- * @param y the lower framebuffer pixel coordinate
- * @param width the texture subregion width
- *
- * @see Reference Page
- */
- public static void glCopyTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width) {
- GL11C.glCopyTexSubImage1D(target, level, xoffset, x, y, width);
- }
-
- // --- [ glCopyTexSubImage2D ] ---
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the {@code internalformat}, {@code width}, {@code height},
- * or {@code border} parameters of the specified texel array, nor is any change made to texel values outside the specified subregion. See
- * {@link #glCopyTexImage2D CopyTexImage2D} for more details.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail number
- * @param xoffset the left texel coordinate of the texture subregion to update
- * @param yoffset the lower texel coordinate of the texture subregion to update
- * @param x the left framebuffer pixel coordinate
- * @param y the lower framebuffer pixel coordinate
- * @param width the texture subregion width
- * @param height the texture subregion height
- *
- * @see Reference Page
- */
- public static void glCopyTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height) {
- GL11C.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
- }
-
- // --- [ glTexParameteri ] ---
-
- /**
- * Sets the integer value of a texture parameter, which controls how the texel array is treated when specified or changed, and when applied to a fragment.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} | {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL12#GL_TEXTURE_3D TEXTURE_3D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} |
| {@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} | {@link GL40#GL_TEXTURE_CUBE_MAP_ARRAY TEXTURE_CUBE_MAP_ARRAY} |
| {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link GL32#GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param pname the parameter to set. One of:
| {@link GL12#GL_TEXTURE_BASE_LEVEL TEXTURE_BASE_LEVEL} | {@link GL11C#GL_TEXTURE_BORDER_COLOR TEXTURE_BORDER_COLOR} | {@link GL14#GL_TEXTURE_COMPARE_MODE TEXTURE_COMPARE_MODE} | {@link GL14#GL_TEXTURE_COMPARE_FUNC TEXTURE_COMPARE_FUNC} |
| {@link GL14#GL_TEXTURE_LOD_BIAS TEXTURE_LOD_BIAS} | {@link GL11C#GL_TEXTURE_MAG_FILTER TEXTURE_MAG_FILTER} | {@link GL12#GL_TEXTURE_MAX_LEVEL TEXTURE_MAX_LEVEL} | {@link GL12#GL_TEXTURE_MAX_LOD TEXTURE_MAX_LOD} |
| {@link GL11C#GL_TEXTURE_MIN_FILTER TEXTURE_MIN_FILTER} | {@link GL12#GL_TEXTURE_MIN_LOD TEXTURE_MIN_LOD} | {@link GL33#GL_TEXTURE_SWIZZLE_R TEXTURE_SWIZZLE_R} | {@link GL33#GL_TEXTURE_SWIZZLE_G TEXTURE_SWIZZLE_G} |
| {@link GL33#GL_TEXTURE_SWIZZLE_B TEXTURE_SWIZZLE_B} | {@link GL33#GL_TEXTURE_SWIZZLE_A TEXTURE_SWIZZLE_A} | {@link GL33#GL_TEXTURE_SWIZZLE_RGBA TEXTURE_SWIZZLE_RGBA} | {@link GL11C#GL_TEXTURE_WRAP_S TEXTURE_WRAP_S} |
| {@link GL11C#GL_TEXTURE_WRAP_T TEXTURE_WRAP_T} | {@link GL12#GL_TEXTURE_WRAP_R TEXTURE_WRAP_R} | {@link GL14#GL_DEPTH_TEXTURE_MODE DEPTH_TEXTURE_MODE} | {@link GL14#GL_GENERATE_MIPMAP GENERATE_MIPMAP} |
- * @param param the parameter value
- *
- * @see Reference Page
- */
- public static void glTexParameteri(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint") int param) {
- GL11C.glTexParameteri(target, pname, param);
- }
-
- // --- [ glTexParameteriv ] ---
-
- /** Unsafe version of: {@link #glTexParameteriv TexParameteriv} */
- public static void nglTexParameteriv(int target, int pname, long params) {
- GL11C.nglTexParameteriv(target, pname, params);
- }
-
- /**
- * Pointer version of {@link #glTexParameteri TexParameteri}.
- *
- * @param target the texture target
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page
- */
- public static void glTexParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint const *") IntBuffer params) {
- GL11C.glTexParameteriv(target, pname, params);
- }
-
- // --- [ glTexParameterf ] ---
-
- /**
- * Float version of {@link #glTexParameteri TexParameteri}.
- *
- * @param target the texture target
- * @param pname the parameter to set
- * @param param the parameter value
- *
- * @see Reference Page
- */
- public static void glTexParameterf(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat") float param) {
- GL11C.glTexParameterf(target, pname, param);
- }
-
- // --- [ glTexParameterfv ] ---
-
- /** Unsafe version of: {@link #glTexParameterfv TexParameterfv} */
- public static void nglTexParameterfv(int target, int pname, long params) {
- GL11C.nglTexParameterfv(target, pname, params);
- }
-
- /**
- * Pointer version of {@link #glTexParameterf TexParameterf}.
- *
- * @param target the texture target
- * @param pname the parameter to set
- * @param params the parameter value
- *
- * @see Reference Page
- */
- public static void glTexParameterfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") FloatBuffer params) {
- GL11C.glTexParameterfv(target, pname, params);
- }
-
- // --- [ glTexSubImage1D ] ---
-
- /** Unsafe version of: {@link #glTexSubImage1D TexSubImage1D} */
- public static void nglTexSubImage1D(int target, int level, int xoffset, int width, int format, int type, long pixels) {
- GL11C.nglTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") long pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ShortBuffer pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") IntBuffer pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") FloatBuffer pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * One-dimensional version of {@link #glTexSubImage2D TexSubImage2D}.
- *
- * @param target the texture target. Must be:
| {@link GL11C#GL_TEXTURE_1D TEXTURE_1D} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param width the subregion width
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") DoubleBuffer pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- // --- [ glTexSubImage2D ] ---
-
- /** Unsafe version of: {@link #glTexSubImage2D TexSubImage2D} */
- public static void nglTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, long pixels) {
- GL11C.nglTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") long pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") ShortBuffer pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") IntBuffer pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") FloatBuffer pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of
- * the specified texel array, nor is any change made to texel values outside the specified subregion.
- *
- * @param target the texture target. One of:
| {@link GL11C#GL_TEXTURE_2D TEXTURE_2D} | {@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY} | {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} | {@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP} |
- * @param level the level-of-detail-number
- * @param xoffset the left coordinate of the texel subregion
- * @param yoffset the bottom coordinate of the texel subregion
- * @param width the subregion width
- * @param height the subregion height
- * @param format the pixel data format. One of:
| {@link GL11C#GL_RED RED} | {@link GL11C#GL_GREEN GREEN} | {@link GL11C#GL_BLUE BLUE} | {@link GL11C#GL_ALPHA ALPHA} | {@link GL30#GL_RG RG} | {@link GL11C#GL_RGB RGB} | {@link GL11C#GL_RGBA RGBA} | {@link GL12#GL_BGR BGR} |
| {@link GL12#GL_BGRA BGRA} | {@link GL30#GL_RED_INTEGER RED_INTEGER} | {@link GL30#GL_GREEN_INTEGER GREEN_INTEGER} | {@link GL30#GL_BLUE_INTEGER BLUE_INTEGER} | {@link GL30#GL_ALPHA_INTEGER ALPHA_INTEGER} | {@link GL30#GL_RG_INTEGER RG_INTEGER} | {@link GL30#GL_RGB_INTEGER RGB_INTEGER} | {@link GL30#GL_RGBA_INTEGER RGBA_INTEGER} |
| {@link GL30#GL_BGR_INTEGER BGR_INTEGER} | {@link GL30#GL_BGRA_INTEGER BGRA_INTEGER} | {@link GL11C#GL_STENCIL_INDEX STENCIL_INDEX} | {@link GL11C#GL_DEPTH_COMPONENT DEPTH_COMPONENT} | {@link GL30#GL_DEPTH_STENCIL DEPTH_STENCIL} |
- * @param type the pixel data type. One of:
| {@link GL11C#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11C#GL_BYTE BYTE} | {@link GL11C#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11C#GL_SHORT SHORT} |
| {@link GL11C#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL11C#GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11C#GL_FLOAT FLOAT} |
| {@link GL12#GL_UNSIGNED_BYTE_3_3_2 UNSIGNED_BYTE_3_3_2} | {@link GL12#GL_UNSIGNED_BYTE_2_3_3_REV UNSIGNED_BYTE_2_3_3_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5 UNSIGNED_SHORT_5_6_5} | {@link GL12#GL_UNSIGNED_SHORT_5_6_5_REV UNSIGNED_SHORT_5_6_5_REV} |
| {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4 UNSIGNED_SHORT_4_4_4_4} | {@link GL12#GL_UNSIGNED_SHORT_4_4_4_4_REV UNSIGNED_SHORT_4_4_4_4_REV} | {@link GL12#GL_UNSIGNED_SHORT_5_5_5_1 UNSIGNED_SHORT_5_5_5_1} | {@link GL12#GL_UNSIGNED_SHORT_1_5_5_5_REV UNSIGNED_SHORT_1_5_5_5_REV} |
| {@link GL12#GL_UNSIGNED_INT_8_8_8_8 UNSIGNED_INT_8_8_8_8} | {@link GL12#GL_UNSIGNED_INT_8_8_8_8_REV UNSIGNED_INT_8_8_8_8_REV} | {@link GL12#GL_UNSIGNED_INT_10_10_10_2 UNSIGNED_INT_10_10_10_2} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} |
| {@link GL30#GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} | {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} | {@link GL30#GL_UNSIGNED_INT_5_9_9_9_REV UNSIGNED_INT_5_9_9_9_REV} | {@link GL30#GL_FLOAT_32_UNSIGNED_INT_24_8_REV FLOAT_32_UNSIGNED_INT_24_8_REV} |
- * @param pixels the pixel data
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") DoubleBuffer pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- // --- [ glTranslatef ] ---
-
- /**
- * Manipulates the current matrix with a translation matrix along the x-, y- and z- axes.
- *
- * Calling this function is equivalent to calling {@link #glMultMatrixf MultMatrixf} with the following matrix:
- *
- *
- * | 1 | 0 | 0 | x |
- * | 0 | 1 | 0 | y |
- * | 0 | 0 | 1 | z |
- * | 0 | 0 | 0 | 1 |
- *
- *
- * @param x the x-axis translation
- * @param y the y-axis translation
- * @param z the z-axis translation
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTranslatef(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
-
- // --- [ glTranslated ] ---
-
- /**
- * Double version of {@link #glTranslatef Translatef}.
- *
- * @param x the x-axis translation
- * @param y the y-axis translation
- * @param z the z-axis translation
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glTranslated(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z);
-
- // --- [ glVertex2f ] ---
-
- /**
- * Specifies a single vertex between {@link #glBegin Begin} and {@link #glEnd End} by giving its coordinates in two dimensions. The z coordinate is implicitly set
- * to zero and the w coordinate to one.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex2f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y);
-
- // --- [ glVertex2s ] ---
-
- /**
- * Short version of {@link #glVertex2f Vertex2f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex2s(@NativeType("GLshort") short x, @NativeType("GLshort") short y);
-
- // --- [ glVertex2i ] ---
-
- /**
- * Integer version of {@link #glVertex2f Vertex2f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex2i(@NativeType("GLint") int x, @NativeType("GLint") int y);
-
- // --- [ glVertex2d ] ---
-
- /**
- * Double version of {@link #glVertex2f Vertex2f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex2d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y);
-
- // --- [ glVertex2fv ] ---
-
- /** Unsafe version of: {@link #glVertex2fv Vertex2fv} */
- public static native void nglVertex2fv(long coords);
-
- /**
- * Pointer version of {@link #glVertex2f Vertex2f}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglVertex2fv(memAddress(coords));
- }
-
- // --- [ glVertex2sv ] ---
-
- /** Unsafe version of: {@link #glVertex2sv Vertex2sv} */
- public static native void nglVertex2sv(long coords);
-
- /**
- * Pointer version of {@link #glVertex2s Vertex2s}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglVertex2sv(memAddress(coords));
- }
-
- // --- [ glVertex2iv ] ---
-
- /** Unsafe version of: {@link #glVertex2iv Vertex2iv} */
- public static native void nglVertex2iv(long coords);
-
- /**
- * Pointer version of {@link #glVertex2i Vertex2i}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglVertex2iv(memAddress(coords));
- }
-
- // --- [ glVertex2dv ] ---
-
- /** Unsafe version of: {@link #glVertex2dv Vertex2dv} */
- public static native void nglVertex2dv(long coords);
-
- /**
- * Pointer version of {@link #glVertex2d Vertex2d}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 2);
- }
- nglVertex2dv(memAddress(coords));
- }
-
- // --- [ glVertex3f ] ---
-
- /**
- * Specifies a single vertex between {@link #glBegin Begin} and {@link #glEnd End} by giving its coordinates in three dimensions. The w coordinate is implicitly set
- * to one.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex3f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
-
- // --- [ glVertex3s ] ---
-
- /**
- * Short version of {@link #glVertex3f Vertex3f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex3s(@NativeType("GLshort") short x, @NativeType("GLshort") short y, @NativeType("GLshort") short z);
-
- // --- [ glVertex3i ] ---
-
- /**
- * Integer version of {@link #glVertex3f Vertex3f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex3i(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLint") int z);
-
- // --- [ glVertex3d ] ---
-
- /**
- * Double version of {@link #glVertex3f Vertex3f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex3d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z);
-
- // --- [ glVertex3fv ] ---
-
- /** Unsafe version of: {@link #glVertex3fv Vertex3fv} */
- public static native void nglVertex3fv(long coords);
-
- /**
- * Pointer version of {@link #glVertex3f Vertex3f}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglVertex3fv(memAddress(coords));
- }
-
- // --- [ glVertex3sv ] ---
-
- /** Unsafe version of: {@link #glVertex3sv Vertex3sv} */
- public static native void nglVertex3sv(long coords);
-
- /**
- * Pointer version of {@link #glVertex3s Vertex3s}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglVertex3sv(memAddress(coords));
- }
-
- // --- [ glVertex3iv ] ---
-
- /** Unsafe version of: {@link #glVertex3iv Vertex3iv} */
- public static native void nglVertex3iv(long coords);
-
- /**
- * Pointer version of {@link #glVertex3i Vertex3i}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglVertex3iv(memAddress(coords));
- }
-
- // --- [ glVertex3dv ] ---
-
- /** Unsafe version of: {@link #glVertex3dv Vertex3dv} */
- public static native void nglVertex3dv(long coords);
-
- /**
- * Pointer version of {@link #glVertex3d Vertex3d}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 3);
- }
- nglVertex3dv(memAddress(coords));
- }
-
- // --- [ glVertex4f ] ---
-
- /**
- * Specifies a single vertex between {@link #glBegin Begin} and {@link #glEnd End} by giving its coordinates in four dimensions.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- * @param w the vertex w coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex4f(@NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z, @NativeType("GLfloat") float w);
-
- // --- [ glVertex4s ] ---
-
- /**
- * Short version of {@link #glVertex4f Vertex4f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- * @param w the vertex w coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex4s(@NativeType("GLshort") short x, @NativeType("GLshort") short y, @NativeType("GLshort") short z, @NativeType("GLshort") short w);
-
- // --- [ glVertex4i ] ---
-
- /**
- * Integer version of {@link #glVertex4f Vertex4f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- * @param w the vertex w coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex4i(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLint") int z, @NativeType("GLint") int w);
-
- // --- [ glVertex4d ] ---
-
- /**
- * Double version of {@link #glVertex4f Vertex4f}.
- *
- * @param x the vertex x coordinate
- * @param y the vertex y coordinate
- * @param z the vertex z coordinate
- * @param w the vertex w coordinate
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static native void glVertex4d(@NativeType("GLdouble") double x, @NativeType("GLdouble") double y, @NativeType("GLdouble") double z, @NativeType("GLdouble") double w);
-
- // --- [ glVertex4fv ] ---
-
- /** Unsafe version of: {@link #glVertex4fv Vertex4fv} */
- public static native void nglVertex4fv(long coords);
-
- /**
- * Pointer version of {@link #glVertex4f Vertex4f}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4fv(@NativeType("GLfloat const *") FloatBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglVertex4fv(memAddress(coords));
- }
-
- // --- [ glVertex4sv ] ---
-
- /** Unsafe version of: {@link #glVertex4sv Vertex4sv} */
- public static native void nglVertex4sv(long coords);
-
- /**
- * Pointer version of {@link #glVertex4s Vertex4s}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4sv(@NativeType("GLshort const *") ShortBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglVertex4sv(memAddress(coords));
- }
-
- // --- [ glVertex4iv ] ---
-
- /** Unsafe version of: {@link #glVertex4iv Vertex4iv} */
- public static native void nglVertex4iv(long coords);
-
- /**
- * Pointer version of {@link #glVertex4i Vertex4i}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4iv(@NativeType("GLint const *") IntBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglVertex4iv(memAddress(coords));
- }
-
- // --- [ glVertex4dv ] ---
-
- /** Unsafe version of: {@link #glVertex4dv Vertex4dv} */
- public static native void nglVertex4dv(long coords);
-
- /**
- * Pointer version of {@link #glVertex4d Vertex4d}.
- *
- * @param coords the vertex buffer
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4dv(@NativeType("GLdouble const *") DoubleBuffer coords) {
- if (CHECKS) {
- check(coords, 4);
- }
- nglVertex4dv(memAddress(coords));
- }
-
- // --- [ glVertexPointer ] ---
-
- /** Unsafe version of: {@link #glVertexPointer VertexPointer} */
- public static native void nglVertexPointer(int size, int type, int stride, long pointer);
-
- /**
- * Specifies the location and organization of a vertex array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertexPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- nglVertexPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a vertex array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertexPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- nglVertexPointer(size, type, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertexPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- nglVertexPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a vertex array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertexPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- nglVertexPointer(size, type, stride, memAddress(pointer));
- }
-
- /**
- * Specifies the location and organization of a vertex array.
- *
- * @param size the number of values per vertex that are stored in the array. One of:
- * @param type the data type of the values stored in the array. One of:
| {@link #GL_SHORT SHORT} | {@link #GL_INT INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link #GL_FLOAT FLOAT} | {@link #GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} |
- * @param stride the vertex stride in bytes. If specified as zero, then array elements are stored sequentially
- * @param pointer the vertex array data
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertexPointer(@NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- nglVertexPointer(size, type, stride, memAddress(pointer));
- }
-
- // --- [ glViewport ] ---
-
- /**
- * Specifies the viewport transformation parameters for all viewports.
- *
- * The location of the viewport's bottom-left corner, given by {@code (x, y)}, are clamped to be within the implementation-dependent viewport bounds range.
- * The viewport bounds range {@code [min, max]} tuple may be determined by calling {@link #glGetFloatv GetFloatv} with the symbolic
- * constant {@link GL41#GL_VIEWPORT_BOUNDS_RANGE VIEWPORT_BOUNDS_RANGE}. Viewport width and height are clamped to implementation-dependent maximums when specified. The maximum
- * width and height may be found by calling {@link #glGetFloatv GetFloatv} with the symbolic constant {@link GL11C#GL_MAX_VIEWPORT_DIMS MAX_VIEWPORT_DIMS}. The
- * maximum viewport dimensions must be greater than or equal to the larger of the visible dimensions of the display being rendered to (if a display
- * exists), and the largest renderbuffer image which can be successfully created and attached to a framebuffer object.
- *
- * In the initial state, {@code w} and {@code h} for each viewport are set to the width and height, respectively, of the window into which the GL is to do
- * its rendering. If the default framebuffer is bound but no default framebuffer is associated with the GL context, then {@code w} and {@code h} are
- * initially set to zero.
- *
- * @param x the left viewport coordinate
- * @param y the bottom viewport coordinate
- * @param w the viewport width
- * @param h the viewport height
- *
- * @see Reference Page
- */
- public static void glViewport(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int w, @NativeType("GLsizei") int h) {
- GL11C.glViewport(x, y, w, h);
- }
-
- /**
- * Array version of: {@link #glAreTexturesResident AreTexturesResident}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- @NativeType("GLboolean")
- public static boolean glAreTexturesResident(@NativeType("GLuint const *") int[] textures, @NativeType("GLboolean *") ByteBuffer residences) {
- long __functionAddress = GL.getICD().glAreTexturesResident;
- if (CHECKS) {
- check(__functionAddress);
- check(residences, textures.length);
- }
- return callPPZ(textures.length, textures, memAddress(residences), __functionAddress);
- }
-
- /**
- * Array version of: {@link #glClipPlane ClipPlane}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glClipPlane(@NativeType("GLenum") int plane, @NativeType("GLdouble const *") double[] equation) {
- long __functionAddress = GL.getICD().glClipPlane;
- if (CHECKS) {
- check(__functionAddress);
- check(equation, 4);
- }
- callPV(plane, equation, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3sv Color3sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glColor3sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3iv Color3iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glColor3iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3fv Color3fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glColor3fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3dv Color3dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glColor3dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3usv Color3usv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3usv(@NativeType("GLushort const *") short[] v) {
- long __functionAddress = GL.getICD().glColor3usv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor3uiv Color3uiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor3uiv(@NativeType("GLuint const *") int[] v) {
- long __functionAddress = GL.getICD().glColor3uiv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4sv Color4sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glColor4sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4iv Color4iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glColor4iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4fv Color4fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glColor4fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4dv Color4dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glColor4dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4usv Color4usv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4usv(@NativeType("GLushort const *") short[] v) {
- long __functionAddress = GL.getICD().glColor4usv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glColor4uiv Color4uiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glColor4uiv(@NativeType("GLuint const *") int[] v) {
- long __functionAddress = GL.getICD().glColor4uiv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glDrawPixels DrawPixels}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") short[] pixels) {
- long __functionAddress = GL.getICD().glDrawPixels;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(width, height, format, type, pixels, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glDrawPixels DrawPixels}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") int[] pixels) {
- long __functionAddress = GL.getICD().glDrawPixels;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(width, height, format, type, pixels, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glDrawPixels DrawPixels}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glDrawPixels(@NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") float[] pixels) {
- long __functionAddress = GL.getICD().glDrawPixels;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(width, height, format, type, pixels, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glEvalCoord1fv EvalCoord1fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord1fv(@NativeType("GLfloat const *") float[] u) {
- long __functionAddress = GL.getICD().glEvalCoord1fv;
- if (CHECKS) {
- check(__functionAddress);
- check(u, 1);
- }
- callPV(u, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glEvalCoord1dv EvalCoord1dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord1dv(@NativeType("GLdouble const *") double[] u) {
- long __functionAddress = GL.getICD().glEvalCoord1dv;
- if (CHECKS) {
- check(__functionAddress);
- check(u, 1);
- }
- callPV(u, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glEvalCoord2fv EvalCoord2fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord2fv(@NativeType("GLfloat const *") float[] u) {
- long __functionAddress = GL.getICD().glEvalCoord2fv;
- if (CHECKS) {
- check(__functionAddress);
- check(u, 2);
- }
- callPV(u, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glEvalCoord2dv EvalCoord2dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glEvalCoord2dv(@NativeType("GLdouble const *") double[] u) {
- long __functionAddress = GL.getICD().glEvalCoord2dv;
- if (CHECKS) {
- check(__functionAddress);
- check(u, 2);
- }
- callPV(u, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glFeedbackBuffer FeedbackBuffer}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFeedbackBuffer(@NativeType("GLenum") int type, @NativeType("GLfloat *") float[] buffer) {
- long __functionAddress = GL.getICD().glFeedbackBuffer;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(buffer.length, type, buffer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glFogiv Fogiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFogiv(@NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glFogiv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glFogfv Fogfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glFogfv(@NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glFogfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGenTextures GenTextures}
- *
- * @see Reference Page
- */
- public static void glGenTextures(@NativeType("GLuint *") int[] textures) {
- GL11C.glGenTextures(textures);
- }
-
- /**
- * Array version of: {@link #glDeleteTextures DeleteTextures}
- *
- * @see Reference Page
- */
- public static void glDeleteTextures(@NativeType("GLuint const *") int[] textures) {
- GL11C.glDeleteTextures(textures);
- }
-
- /**
- * Array version of: {@link #glGetClipPlane GetClipPlane}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetClipPlane(@NativeType("GLenum") int plane, @NativeType("GLdouble *") double[] equation) {
- long __functionAddress = GL.getICD().glGetClipPlane;
- if (CHECKS) {
- check(__functionAddress);
- check(equation, 4);
- }
- callPV(plane, equation, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetFloatv GetFloatv}
- *
- * @see Reference Page
- */
- public static void glGetFloatv(@NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] params) {
- GL11C.glGetFloatv(pname, params);
- }
-
- /**
- * Array version of: {@link #glGetIntegerv GetIntegerv}
- *
- * @see Reference Page
- */
- public static void glGetIntegerv(@NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL11C.glGetIntegerv(pname, params);
- }
-
- /**
- * Array version of: {@link #glGetDoublev GetDoublev}
- *
- * @see Reference Page
- */
- public static void glGetDoublev(@NativeType("GLenum") int pname, @NativeType("GLdouble *") double[] params) {
- GL11C.glGetDoublev(pname, params);
- }
-
- /**
- * Array version of: {@link #glGetLightiv GetLightiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetLightiv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] data) {
- long __functionAddress = GL.getICD().glGetLightiv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(light, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetLightfv GetLightfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetLightfv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetLightfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(light, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMapiv GetMapiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapiv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLint *") int[] data) {
- long __functionAddress = GL.getICD().glGetMapiv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(target, query, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMapfv GetMapfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapfv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetMapfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(target, query, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMapdv GetMapdv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMapdv(@NativeType("GLenum") int target, @NativeType("GLenum") int query, @NativeType("GLdouble *") double[] data) {
- long __functionAddress = GL.getICD().glGetMapdv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(target, query, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMaterialiv GetMaterialiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMaterialiv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] data) {
- long __functionAddress = GL.getICD().glGetMaterialiv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 1);
- }
- callPV(face, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMaterialfv GetMaterialfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetMaterialfv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetMaterialfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 1);
- }
- callPV(face, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetPixelMapfv GetPixelMapfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetPixelMapfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 32);
- }
- callPV(map, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetPixelMapusv GetPixelMapusv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLushort *") short[] data) {
- long __functionAddress = GL.getICD().glGetPixelMapusv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 32);
- }
- callPV(map, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetPixelMapuiv GetPixelMapuiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLuint *") int[] data) {
- long __functionAddress = GL.getICD().glGetPixelMapuiv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 32);
- }
- callPV(map, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexEnviv GetTexEnviv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexEnviv(@NativeType("GLenum") int env, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] data) {
- long __functionAddress = GL.getICD().glGetTexEnviv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 1);
- }
- callPV(env, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexEnvfv GetTexEnvfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexEnvfv(@NativeType("GLenum") int env, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetTexEnvfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 1);
- }
- callPV(env, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexGeniv GetTexGeniv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGeniv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] data) {
- long __functionAddress = GL.getICD().glGetTexGeniv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 1);
- }
- callPV(coord, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexGenfv GetTexGenfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGenfv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] data) {
- long __functionAddress = GL.getICD().glGetTexGenfv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(coord, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexGendv GetTexGendv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glGetTexGendv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLdouble *") double[] data) {
- long __functionAddress = GL.getICD().glGetTexGendv;
- if (CHECKS) {
- check(__functionAddress);
- check(data, 4);
- }
- callPV(coord, pname, data, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetTexImage GetTexImage}
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") short[] pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glGetTexImage GetTexImage}
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") int[] pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glGetTexImage GetTexImage}
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") float[] pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glGetTexImage GetTexImage}
- *
- * @see Reference Page
- */
- public static void glGetTexImage(@NativeType("GLenum") int tex, @NativeType("GLint") int level, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") double[] pixels) {
- GL11C.glGetTexImage(tex, level, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glGetTexLevelParameteriv GetTexLevelParameteriv}
- *
- * @see Reference Page
- */
- public static void glGetTexLevelParameteriv(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL11C.glGetTexLevelParameteriv(target, level, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetTexLevelParameterfv GetTexLevelParameterfv}
- *
- * @see Reference Page
- */
- public static void glGetTexLevelParameterfv(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] params) {
- GL11C.glGetTexLevelParameterfv(target, level, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetTexParameteriv GetTexParameteriv}
- *
- * @see Reference Page
- */
- public static void glGetTexParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL11C.glGetTexParameteriv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetTexParameterfv GetTexParameterfv}
- *
- * @see Reference Page
- */
- public static void glGetTexParameterfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] params) {
- GL11C.glGetTexParameterfv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glIndexiv Indexiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexiv(@NativeType("GLint const *") int[] index) {
- long __functionAddress = GL.getICD().glIndexiv;
- if (CHECKS) {
- check(__functionAddress);
- check(index, 1);
- }
- callPV(index, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glIndexsv Indexsv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexsv(@NativeType("GLshort const *") short[] index) {
- long __functionAddress = GL.getICD().glIndexsv;
- if (CHECKS) {
- check(__functionAddress);
- check(index, 1);
- }
- callPV(index, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glIndexfv Indexfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexfv(@NativeType("GLfloat const *") float[] index) {
- long __functionAddress = GL.getICD().glIndexfv;
- if (CHECKS) {
- check(__functionAddress);
- check(index, 1);
- }
- callPV(index, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glIndexdv Indexdv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glIndexdv(@NativeType("GLdouble const *") double[] index) {
- long __functionAddress = GL.getICD().glIndexdv;
- if (CHECKS) {
- check(__functionAddress);
- check(index, 1);
- }
- callPV(index, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glInterleavedArrays InterleavedArrays}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") short[] pointer) {
- long __functionAddress = GL.getICD().glInterleavedArrays;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(format, stride, pointer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glInterleavedArrays InterleavedArrays}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") int[] pointer) {
- long __functionAddress = GL.getICD().glInterleavedArrays;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(format, stride, pointer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glInterleavedArrays InterleavedArrays}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") float[] pointer) {
- long __functionAddress = GL.getICD().glInterleavedArrays;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(format, stride, pointer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glInterleavedArrays InterleavedArrays}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glInterleavedArrays(@NativeType("GLenum") int format, @NativeType("GLsizei") int stride, @NativeType("void const *") double[] pointer) {
- long __functionAddress = GL.getICD().glInterleavedArrays;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(format, stride, pointer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLightModeliv LightModeliv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightModeliv(@NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glLightModeliv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLightModelfv LightModelfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightModelfv(@NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glLightModelfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLightiv Lightiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightiv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glLightiv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(light, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLightfv Lightfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLightfv(@NativeType("GLenum") int light, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glLightfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(light, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLoadMatrixf LoadMatrixf}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLoadMatrixf(@NativeType("GLfloat const *") float[] m) {
- long __functionAddress = GL.getICD().glLoadMatrixf;
- if (CHECKS) {
- check(__functionAddress);
- check(m, 16);
- }
- callPV(m, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glLoadMatrixd LoadMatrixd}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glLoadMatrixd(@NativeType("GLdouble const *") double[] m) {
- long __functionAddress = GL.getICD().glLoadMatrixd;
- if (CHECKS) {
- check(__functionAddress);
- check(m, 16);
- }
- callPV(m, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMap1f Map1f}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap1f(@NativeType("GLenum") int target, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2, @NativeType("GLint") int stride, @NativeType("GLint") int order, @NativeType("GLfloat const *") float[] points) {
- long __functionAddress = GL.getICD().glMap1f;
- if (CHECKS) {
- check(__functionAddress);
- check(points, order * stride);
- }
- callPV(target, u1, u2, stride, order, points, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMap1d Map1d}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap1d(@NativeType("GLenum") int target, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2, @NativeType("GLint") int stride, @NativeType("GLint") int order, @NativeType("GLdouble const *") double[] points) {
- long __functionAddress = GL.getICD().glMap1d;
- if (CHECKS) {
- check(__functionAddress);
- check(points, stride * order);
- }
- callPV(target, u1, u2, stride, order, points, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMap2f Map2f}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap2f(@NativeType("GLenum") int target, @NativeType("GLfloat") float u1, @NativeType("GLfloat") float u2, @NativeType("GLint") int ustride, @NativeType("GLint") int uorder, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2, @NativeType("GLint") int vstride, @NativeType("GLint") int vorder, @NativeType("GLfloat const *") float[] points) {
- long __functionAddress = GL.getICD().glMap2f;
- if (CHECKS) {
- check(__functionAddress);
- check(points, ustride * uorder * vstride * vorder);
- }
- callPV(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMap2d Map2d}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMap2d(@NativeType("GLenum") int target, @NativeType("GLdouble") double u1, @NativeType("GLdouble") double u2, @NativeType("GLint") int ustride, @NativeType("GLint") int uorder, @NativeType("GLdouble") double v1, @NativeType("GLdouble") double v2, @NativeType("GLint") int vstride, @NativeType("GLint") int vorder, @NativeType("GLdouble const *") double[] points) {
- long __functionAddress = GL.getICD().glMap2d;
- if (CHECKS) {
- check(__functionAddress);
- check(points, ustride * uorder * vstride * vorder);
- }
- callPV(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMaterialiv Materialiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMaterialiv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glMaterialiv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(face, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMaterialfv Materialfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMaterialfv(@NativeType("GLenum") int face, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glMaterialfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(face, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMultMatrixf MultMatrixf}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMultMatrixf(@NativeType("GLfloat const *") float[] m) {
- long __functionAddress = GL.getICD().glMultMatrixf;
- if (CHECKS) {
- check(__functionAddress);
- check(m, 16);
- }
- callPV(m, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMultMatrixd MultMatrixd}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glMultMatrixd(@NativeType("GLdouble const *") double[] m) {
- long __functionAddress = GL.getICD().glMultMatrixd;
- if (CHECKS) {
- check(__functionAddress);
- check(m, 16);
- }
- callPV(m, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glNormal3fv Normal3fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glNormal3fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glNormal3sv Normal3sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glNormal3sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glNormal3iv Normal3iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glNormal3iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glNormal3dv Normal3dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glNormal3dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glNormal3dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glPixelMapfv PixelMapfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapfv(@NativeType("GLenum") int map, @NativeType("GLfloat const *") float[] values) {
- long __functionAddress = GL.getICD().glPixelMapfv;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(map, values.length, values, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glPixelMapusv PixelMapusv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapusv(@NativeType("GLenum") int map, @NativeType("GLushort const *") short[] values) {
- long __functionAddress = GL.getICD().glPixelMapusv;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(map, values.length, values, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glPixelMapuiv PixelMapuiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPixelMapuiv(@NativeType("GLenum") int map, @NativeType("GLuint const *") int[] values) {
- long __functionAddress = GL.getICD().glPixelMapuiv;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(map, values.length, values, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glPrioritizeTextures PrioritizeTextures}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glPrioritizeTextures(@NativeType("GLuint const *") int[] textures, @NativeType("GLfloat const *") float[] priorities) {
- long __functionAddress = GL.getICD().glPrioritizeTextures;
- if (CHECKS) {
- check(__functionAddress);
- check(priorities, textures.length);
- }
- callPPV(textures.length, textures, priorities, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos2iv RasterPos2iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glRasterPos2iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos2sv RasterPos2sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glRasterPos2sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos2fv RasterPos2fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glRasterPos2fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos2dv RasterPos2dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos2dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glRasterPos2dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos3iv RasterPos3iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glRasterPos3iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos3sv RasterPos3sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glRasterPos3sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos3fv RasterPos3fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glRasterPos3fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos3dv RasterPos3dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos3dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glRasterPos3dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos4iv RasterPos4iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glRasterPos4iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos4sv RasterPos4sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glRasterPos4sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos4fv RasterPos4fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glRasterPos4fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRasterPos4dv RasterPos4dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRasterPos4dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glRasterPos4dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glReadPixels ReadPixels}
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") short[] pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glReadPixels ReadPixels}
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") int[] pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glReadPixels ReadPixels}
- *
- * @see Reference Page
- */
- public static void glReadPixels(@NativeType("GLint") int x, @NativeType("GLint") int y, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void *") float[] pixels) {
- GL11C.glReadPixels(x, y, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glRectiv Rectiv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectiv(@NativeType("GLint const *") int[] v1, @NativeType("GLint const *") int[] v2) {
- long __functionAddress = GL.getICD().glRectiv;
- if (CHECKS) {
- check(__functionAddress);
- check(v1, 2);
- check(v2, 2);
- }
- callPPV(v1, v2, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRectsv Rectsv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectsv(@NativeType("GLshort const *") short[] v1, @NativeType("GLshort const *") short[] v2) {
- long __functionAddress = GL.getICD().glRectsv;
- if (CHECKS) {
- check(__functionAddress);
- check(v1, 2);
- check(v2, 2);
- }
- callPPV(v1, v2, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRectfv Rectfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectfv(@NativeType("GLfloat const *") float[] v1, @NativeType("GLfloat const *") float[] v2) {
- long __functionAddress = GL.getICD().glRectfv;
- if (CHECKS) {
- check(__functionAddress);
- check(v1, 2);
- check(v2, 2);
- }
- callPPV(v1, v2, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glRectdv Rectdv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glRectdv(@NativeType("GLdouble const *") double[] v1, @NativeType("GLdouble const *") double[] v2) {
- long __functionAddress = GL.getICD().glRectdv;
- if (CHECKS) {
- check(__functionAddress);
- check(v1, 2);
- check(v2, 2);
- }
- callPPV(v1, v2, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glSelectBuffer SelectBuffer}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glSelectBuffer(@NativeType("GLuint *") int[] buffer) {
- long __functionAddress = GL.getICD().glSelectBuffer;
- if (CHECKS) {
- check(__functionAddress);
- }
- callPV(buffer.length, buffer, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord1fv TexCoord1fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glTexCoord1fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 1);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord1sv TexCoord1sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glTexCoord1sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 1);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord1iv TexCoord1iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glTexCoord1iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 1);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord1dv TexCoord1dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord1dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glTexCoord1dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 1);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord2fv TexCoord2fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glTexCoord2fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 2);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord2sv TexCoord2sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glTexCoord2sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 2);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord2iv TexCoord2iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glTexCoord2iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 2);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord2dv TexCoord2dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord2dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glTexCoord2dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 2);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord3fv TexCoord3fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glTexCoord3fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord3sv TexCoord3sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glTexCoord3sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord3iv TexCoord3iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glTexCoord3iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord3dv TexCoord3dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord3dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glTexCoord3dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 3);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord4fv TexCoord4fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4fv(@NativeType("GLfloat const *") float[] v) {
- long __functionAddress = GL.getICD().glTexCoord4fv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord4sv TexCoord4sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4sv(@NativeType("GLshort const *") short[] v) {
- long __functionAddress = GL.getICD().glTexCoord4sv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord4iv TexCoord4iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4iv(@NativeType("GLint const *") int[] v) {
- long __functionAddress = GL.getICD().glTexCoord4iv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexCoord4dv TexCoord4dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexCoord4dv(@NativeType("GLdouble const *") double[] v) {
- long __functionAddress = GL.getICD().glTexCoord4dv;
- if (CHECKS) {
- check(__functionAddress);
- check(v, 4);
- }
- callPV(v, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexEnviv TexEnviv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexEnviv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glTexEnviv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(target, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexEnvfv TexEnvfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexEnvfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glTexEnvfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(target, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexGeniv TexGeniv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGeniv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- long __functionAddress = GL.getICD().glTexGeniv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(coord, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexGenfv TexGenfv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGenfv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- long __functionAddress = GL.getICD().glTexGenfv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(coord, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexGendv TexGendv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glTexGendv(@NativeType("GLenum") int coord, @NativeType("GLenum") int pname, @NativeType("GLdouble const *") double[] params) {
- long __functionAddress = GL.getICD().glTexGendv;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 4);
- }
- callPV(coord, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glTexImage1D TexImage1D}
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") short[] pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage1D TexImage1D}
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") int[] pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage1D TexImage1D}
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") float[] pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage1D TexImage1D}
- *
- * @see Reference Page
- */
- public static void glTexImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") double[] pixels) {
- GL11C.glTexImage1D(target, level, internalformat, width, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage2D TexImage2D}
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") short[] pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage2D TexImage2D}
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") int[] pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage2D TexImage2D}
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") float[] pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexImage2D TexImage2D}
- *
- * @see Reference Page
- */
- public static void glTexImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLint") int border, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @Nullable @NativeType("void const *") double[] pixels) {
- GL11C.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexParameteriv TexParameteriv}
- *
- * @see Reference Page
- */
- public static void glTexParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint const *") int[] params) {
- GL11C.glTexParameteriv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glTexParameterfv TexParameterfv}
- *
- * @see Reference Page
- */
- public static void glTexParameterfv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLfloat const *") float[] params) {
- GL11C.glTexParameterfv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glTexSubImage1D TexSubImage1D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") short[] pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage1D TexSubImage1D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") int[] pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage1D TexSubImage1D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") float[] pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage1D TexSubImage1D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage1D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLsizei") int width, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") double[] pixels) {
- GL11C.glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage2D TexSubImage2D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") short[] pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage2D TexSubImage2D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") int[] pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage2D TexSubImage2D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") float[] pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glTexSubImage2D TexSubImage2D}
- *
- * @see Reference Page
- */
- public static void glTexSubImage2D(@NativeType("GLenum") int target, @NativeType("GLint") int level, @NativeType("GLint") int xoffset, @NativeType("GLint") int yoffset, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLenum") int format, @NativeType("GLenum") int type, @NativeType("void const *") double[] pixels) {
- GL11C.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- }
-
- /**
- * Array version of: {@link #glVertex2fv Vertex2fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glVertex2fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex2sv Vertex2sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glVertex2sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex2iv Vertex2iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glVertex2iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex2dv Vertex2dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex2dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glVertex2dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 2);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex3fv Vertex3fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glVertex3fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex3sv Vertex3sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glVertex3sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex3iv Vertex3iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glVertex3iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex3dv Vertex3dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex3dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glVertex3dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 3);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex4fv Vertex4fv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4fv(@NativeType("GLfloat const *") float[] coords) {
- long __functionAddress = GL.getICD().glVertex4fv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex4sv Vertex4sv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4sv(@NativeType("GLshort const *") short[] coords) {
- long __functionAddress = GL.getICD().glVertex4sv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex4iv Vertex4iv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4iv(@NativeType("GLint const *") int[] coords) {
- long __functionAddress = GL.getICD().glVertex4iv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glVertex4dv Vertex4dv}
- *
- * @see Reference Page - This function is deprecated and unavailable in the Core profile
- */
- public static void glVertex4dv(@NativeType("GLdouble const *") double[] coords) {
- long __functionAddress = GL.getICD().glVertex4dv;
- if (CHECKS) {
- check(__functionAddress);
- check(coords, 4);
- }
- callPV(coords, __functionAddress);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL15.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL15.java
deleted file mode 100644
index 693c4fa68..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL15.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.opengl;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.PointerBuffer;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-
-/**
- * The OpenGL functionality up to version 1.5. Includes the deprecated symbols of the Compatibility Profile.
- *
- * Extensions promoted to core in this release:
- *
- *
- */
-public class GL15 extends GL14 {
-
- /** New token names. */
- public static final int
- GL_FOG_COORD_SRC = 0x8450,
- GL_FOG_COORD = 0x8451,
- GL_CURRENT_FOG_COORD = 0x8453,
- GL_FOG_COORD_ARRAY_TYPE = 0x8454,
- GL_FOG_COORD_ARRAY_STRIDE = 0x8455,
- GL_FOG_COORD_ARRAY_POINTER = 0x8456,
- GL_FOG_COORD_ARRAY = 0x8457,
- GL_FOG_COORD_ARRAY_BUFFER_BINDING = 0x889D,
- GL_SRC0_RGB = 0x8580,
- GL_SRC1_RGB = 0x8581,
- GL_SRC2_RGB = 0x8582,
- GL_SRC0_ALPHA = 0x8588,
- GL_SRC1_ALPHA = 0x8589,
- GL_SRC2_ALPHA = 0x858A;
-
- /**
- * Accepted by the {@code target} parameters of BindBuffer, BufferData, BufferSubData, MapBuffer, UnmapBuffer, GetBufferSubData,
- * GetBufferParameteriv, and GetBufferPointerv.
- */
- public static final int
- GL_ARRAY_BUFFER = 0x8892,
- GL_ELEMENT_ARRAY_BUFFER = 0x8893;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_ARRAY_BUFFER_BINDING = 0x8894,
- GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895,
- GL_VERTEX_ARRAY_BUFFER_BINDING = 0x8896,
- GL_NORMAL_ARRAY_BUFFER_BINDING = 0x8897,
- GL_COLOR_ARRAY_BUFFER_BINDING = 0x8898,
- GL_INDEX_ARRAY_BUFFER_BINDING = 0x8899,
- GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A,
- GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889B,
- GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889C,
- GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889D,
- GL_WEIGHT_ARRAY_BUFFER_BINDING = 0x889E;
-
- /** Accepted by the {@code pname} parameter of GetVertexAttribiv. */
- public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
-
- /** Accepted by the {@code usage} parameter of BufferData. */
- public static final int
- GL_STREAM_DRAW = 0x88E0,
- GL_STREAM_READ = 0x88E1,
- GL_STREAM_COPY = 0x88E2,
- GL_STATIC_DRAW = 0x88E4,
- GL_STATIC_READ = 0x88E5,
- GL_STATIC_COPY = 0x88E6,
- GL_DYNAMIC_DRAW = 0x88E8,
- GL_DYNAMIC_READ = 0x88E9,
- GL_DYNAMIC_COPY = 0x88EA;
-
- /** Accepted by the {@code access} parameter of MapBuffer. */
- public static final int
- GL_READ_ONLY = 0x88B8,
- GL_WRITE_ONLY = 0x88B9,
- GL_READ_WRITE = 0x88BA;
-
- /** Accepted by the {@code pname} parameter of GetBufferParameteriv. */
- public static final int
- GL_BUFFER_SIZE = 0x8764,
- GL_BUFFER_USAGE = 0x8765,
- GL_BUFFER_ACCESS = 0x88BB,
- GL_BUFFER_MAPPED = 0x88BC;
-
- /** Accepted by the {@code pname} parameter of GetBufferPointerv. */
- public static final int GL_BUFFER_MAP_POINTER = 0x88BD;
-
- /** Accepted by the {@code target} parameter of BeginQuery, EndQuery, and GetQueryiv. */
- public static final int GL_SAMPLES_PASSED = 0x8914;
-
- /** Accepted by the {@code pname} parameter of GetQueryiv. */
- public static final int
- GL_QUERY_COUNTER_BITS = 0x8864,
- GL_CURRENT_QUERY = 0x8865;
-
- /** Accepted by the {@code pname} parameter of GetQueryObjectiv and GetQueryObjectuiv. */
- public static final int
- GL_QUERY_RESULT = 0x8866,
- GL_QUERY_RESULT_AVAILABLE = 0x8867;
-
- static { GL.initialize(); }
-
- protected GL15() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(GLCapabilities caps) {
- return checkFunctions(
- caps.glBindBuffer, caps.glDeleteBuffers, caps.glGenBuffers, caps.glIsBuffer, caps.glBufferData, caps.glBufferSubData, caps.glGetBufferSubData,
- caps.glMapBuffer, caps.glUnmapBuffer, caps.glGetBufferParameteriv, caps.glGetBufferPointerv, caps.glGenQueries, caps.glDeleteQueries,
- caps.glIsQuery, caps.glBeginQuery, caps.glEndQuery, caps.glGetQueryiv, caps.glGetQueryObjectiv, caps.glGetQueryObjectuiv
- );
- }
-
- // --- [ glBindBuffer ] ---
-
- /**
- * Binds a named buffer object.
- *
- * @param target the target to which the buffer object is bound. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param buffer the name of a buffer object
- *
- * @see Reference Page
- */
- public static void glBindBuffer(@NativeType("GLenum") int target, @NativeType("GLuint") int buffer) {
- GL15C.glBindBuffer(target, buffer);
- }
-
- // --- [ glDeleteBuffers ] ---
-
- /**
- * Unsafe version of: {@link #glDeleteBuffers DeleteBuffers}
- *
- * @param n the number of buffer objects to be deleted
- */
- public static void nglDeleteBuffers(int n, long buffers) {
- GL15C.nglDeleteBuffers(n, buffers);
- }
-
- /**
- * Deletes named buffer objects.
- *
- * @param buffers an array of buffer objects to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteBuffers(@NativeType("GLuint const *") IntBuffer buffers) {
- GL15C.glDeleteBuffers(buffers);
- }
-
- /**
- * Deletes named buffer objects.
- *
- * @see Reference Page
- */
- public static void glDeleteBuffers(@NativeType("GLuint const *") int buffer) {
- GL15C.glDeleteBuffers(buffer);
- }
-
- // --- [ glGenBuffers ] ---
-
- /**
- * Unsafe version of: {@link #glGenBuffers GenBuffers}
- *
- * @param n the number of buffer object names to be generated
- */
- public static void nglGenBuffers(int n, long buffers) {
- GL15C.nglGenBuffers(n, buffers);
- }
-
- /**
- * Generates buffer object names.
- *
- * @param buffers a buffer in which the generated buffer object names are stored
- *
- * @see Reference Page
- */
- public static void glGenBuffers(@NativeType("GLuint *") IntBuffer buffers) {
- GL15C.glGenBuffers(buffers);
- }
-
- /**
- * Generates buffer object names.
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGenBuffers() {
- return GL15C.glGenBuffers();
- }
-
- // --- [ glIsBuffer ] ---
-
- /**
- * Determines if a name corresponds to a buffer object.
- *
- * @param buffer a value that may be the name of a buffer object
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsBuffer(@NativeType("GLuint") int buffer) {
- return GL15C.glIsBuffer(buffer);
- }
-
- // --- [ glBufferData ] ---
-
- /**
- * Unsafe version of: {@link #glBufferData BufferData}
- *
- * @param size the size in bytes of the buffer object's new data store
- */
- public static void nglBufferData(int target, long size, long data, int usage) {
- GL15C.nglBufferData(target, size, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param size the size in bytes of the buffer object's new data store
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("GLsizeiptr") long size, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, size, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") ByteBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") ShortBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") IntBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") LongBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") FloatBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Creates and initializes a buffer object's data store.
- *
- * {@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make
- * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store.
- * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The
- * frequency of access may be one of these:
- *
- *
- * - STREAM - The data store contents will be modified once and used at most a few times.
- * - STATIC - The data store contents will be modified once and used many times.
- * - DYNAMIC - The data store contents will be modified repeatedly and used many times.
- *
- *
- * The nature of access may be one of these:
- *
- *
- * - DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
- * - READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
- * - COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
- *
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied
- * @param usage the expected usage pattern of the data store. One of:
| {@link GL15C#GL_STREAM_DRAW STREAM_DRAW} | {@link GL15C#GL_STREAM_READ STREAM_READ} | {@link GL15C#GL_STREAM_COPY STREAM_COPY} | {@link GL15C#GL_STATIC_DRAW STATIC_DRAW} | {@link GL15C#GL_STATIC_READ STATIC_READ} | {@link GL15C#GL_STATIC_COPY STATIC_COPY} | {@link GL15C#GL_DYNAMIC_DRAW DYNAMIC_DRAW} |
| {@link GL15C#GL_DYNAMIC_READ DYNAMIC_READ} | {@link GL15C#GL_DYNAMIC_COPY DYNAMIC_COPY} |
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") DoubleBuffer data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- // --- [ glBufferSubData ] ---
-
- /**
- * Unsafe version of: {@link #glBufferSubData BufferSubData}
- *
- * @param size the size in bytes of the data store region being replaced
- */
- public static void nglBufferSubData(int target, long offset, long size, long data) {
- GL15C.nglBufferSubData(target, offset, size, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") ByteBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") ShortBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") IntBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") LongBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") FloatBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Updates a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes
- * @param data a pointer to the new data that will be copied into the data store
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") DoubleBuffer data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- // --- [ glGetBufferSubData ] ---
-
- /**
- * Unsafe version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @param size the size in bytes of the data store region being returned
- */
- public static void nglGetBufferSubData(int target, long offset, long size, long data) {
- GL15C.nglGetBufferSubData(target, offset, size, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") ByteBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") ShortBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") IntBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") LongBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") FloatBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Returns a subset of a buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes
- * @param data a pointer to the location where buffer object data is returned
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") DoubleBuffer data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- // --- [ glMapBuffer ] ---
-
- /** Unsafe version of: {@link #glMapBuffer MapBuffer} */
- public static long nglMapBuffer(int target, int access) {
- return GL15C.nglMapBuffer(target, access);
- }
-
- /**
- * Maps a buffer object's data store.
- *
- * LWJGL note: This method comes in 3 flavors:
- *
- *
- * - {@link #glMapBuffer(int, int)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and a new ByteBuffer instance is always returned.
- * - {@link #glMapBuffer(int, int, ByteBuffer)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and the {@code old_buffer} parameter is reused if not null.
- * - {@link #glMapBuffer(int, int, long, ByteBuffer)} - The buffer size is explicitly specified and the {@code old_buffer} parameter is reused if not null. This is the most efficient method.
- *
- *
- * @param target the target buffer object being mapped. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param access the access policy, indicating whether it will be possible to read from, write to, or both read from and write to the buffer object's mapped data store. One of:
| {@link GL15C#GL_READ_ONLY READ_ONLY} | {@link GL15C#GL_WRITE_ONLY WRITE_ONLY} | {@link GL15C#GL_READ_WRITE READ_WRITE} |
- *
- * @see Reference Page
- */
- @Nullable
- @NativeType("void *")
- public static ByteBuffer glMapBuffer(@NativeType("GLenum") int target, @NativeType("GLenum") int access) {
- return GL15C.glMapBuffer(target, access);
- }
-
- /**
- * Maps a buffer object's data store.
- *
- * LWJGL note: This method comes in 3 flavors:
- *
- *
- * - {@link #glMapBuffer(int, int)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and a new ByteBuffer instance is always returned.
- * - {@link #glMapBuffer(int, int, ByteBuffer)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and the {@code old_buffer} parameter is reused if not null.
- * - {@link #glMapBuffer(int, int, long, ByteBuffer)} - The buffer size is explicitly specified and the {@code old_buffer} parameter is reused if not null. This is the most efficient method.
- *
- *
- * @param target the target buffer object being mapped. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param access the access policy, indicating whether it will be possible to read from, write to, or both read from and write to the buffer object's mapped data store. One of:
| {@link GL15C#GL_READ_ONLY READ_ONLY} | {@link GL15C#GL_WRITE_ONLY WRITE_ONLY} | {@link GL15C#GL_READ_WRITE READ_WRITE} |
- *
- * @see Reference Page
- */
- @Nullable
- @NativeType("void *")
- public static ByteBuffer glMapBuffer(@NativeType("GLenum") int target, @NativeType("GLenum") int access, @Nullable ByteBuffer old_buffer) {
- return GL15C.glMapBuffer(target, access, old_buffer);
- }
-
- /**
- * Maps a buffer object's data store.
- *
- * LWJGL note: This method comes in 3 flavors:
- *
- *
- * - {@link #glMapBuffer(int, int)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and a new ByteBuffer instance is always returned.
- * - {@link #glMapBuffer(int, int, ByteBuffer)} - Calls {@link #glGetBufferParameteriv GetBufferParameteriv} to retrieve the buffer size and the {@code old_buffer} parameter is reused if not null.
- * - {@link #glMapBuffer(int, int, long, ByteBuffer)} - The buffer size is explicitly specified and the {@code old_buffer} parameter is reused if not null. This is the most efficient method.
- *
- *
- * @param target the target buffer object being mapped. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param access the access policy, indicating whether it will be possible to read from, write to, or both read from and write to the buffer object's mapped data store. One of:
| {@link GL15C#GL_READ_ONLY READ_ONLY} | {@link GL15C#GL_WRITE_ONLY WRITE_ONLY} | {@link GL15C#GL_READ_WRITE READ_WRITE} |
- *
- * @see Reference Page
- */
- @Nullable
- @NativeType("void *")
- public static ByteBuffer glMapBuffer(@NativeType("GLenum") int target, @NativeType("GLenum") int access, long length, @Nullable ByteBuffer old_buffer) {
- return GL15C.glMapBuffer(target, access, length, old_buffer);
- }
-
- // --- [ glUnmapBuffer ] ---
-
- /**
- * Relinquishes the mapping of a buffer object and invalidates the pointer to its data store.
- *
- * Returns TRUE unless data values in the buffer’s data store have become corrupted during the period that the buffer was mapped. Such corruption can be
- * the result of a screen resolution change or other window system-dependent event that causes system heaps such as those for high-performance graphics
- * memory to be discarded. GL implementations must guarantee that such corruption can occur only during the periods that a buffer’s data store is mapped.
- * If such corruption has occurred, UnmapBuffer returns FALSE, and the contents of the buffer’s data store become undefined.
- *
- * @param target the target buffer object being unmapped. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glUnmapBuffer(@NativeType("GLenum") int target) {
- return GL15C.glUnmapBuffer(target);
- }
-
- // --- [ glGetBufferParameteriv ] ---
-
- /** Unsafe version of: {@link #glGetBufferParameteriv GetBufferParameteriv} */
- public static void nglGetBufferParameteriv(int target, int pname, long params) {
- GL15C.nglGetBufferParameteriv(target, pname, params);
- }
-
- /**
- * Returns the value of a buffer object parameter.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the symbolic name of a buffer object parameter. One of:
| {@link GL15#GL_BUFFER_SIZE BUFFER_SIZE} | {@link GL15C#GL_BUFFER_USAGE BUFFER_USAGE} | {@link GL15C#GL_BUFFER_ACCESS BUFFER_ACCESS} | {@link GL15C#GL_BUFFER_MAPPED BUFFER_MAPPED} |
| {@link GL30#GL_BUFFER_ACCESS_FLAGS BUFFER_ACCESS_FLAGS} | {@link GL30#GL_BUFFER_MAP_LENGTH BUFFER_MAP_LENGTH} | {@link GL30#GL_BUFFER_MAP_OFFSET BUFFER_MAP_OFFSET} | {@link GL44#GL_BUFFER_IMMUTABLE_STORAGE BUFFER_IMMUTABLE_STORAGE} |
| {@link GL44#GL_BUFFER_STORAGE_FLAGS BUFFER_STORAGE_FLAGS} |
- * @param params the requested parameter
- *
- * @see Reference Page
- */
- public static void glGetBufferParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL15C.glGetBufferParameteriv(target, pname, params);
- }
-
- /**
- * Returns the value of a buffer object parameter.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the symbolic name of a buffer object parameter. One of:
| {@link GL15#GL_BUFFER_SIZE BUFFER_SIZE} | {@link GL15C#GL_BUFFER_USAGE BUFFER_USAGE} | {@link GL15C#GL_BUFFER_ACCESS BUFFER_ACCESS} | {@link GL15C#GL_BUFFER_MAPPED BUFFER_MAPPED} |
| {@link GL30#GL_BUFFER_ACCESS_FLAGS BUFFER_ACCESS_FLAGS} | {@link GL30#GL_BUFFER_MAP_LENGTH BUFFER_MAP_LENGTH} | {@link GL30#GL_BUFFER_MAP_OFFSET BUFFER_MAP_OFFSET} | {@link GL44#GL_BUFFER_IMMUTABLE_STORAGE BUFFER_IMMUTABLE_STORAGE} |
| {@link GL44#GL_BUFFER_STORAGE_FLAGS BUFFER_STORAGE_FLAGS} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetBufferParameteri(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- return GL15C.glGetBufferParameteri(target, pname);
- }
-
- // --- [ glGetBufferPointerv ] ---
-
- /** Unsafe version of: {@link #glGetBufferPointerv GetBufferPointerv} */
- public static void nglGetBufferPointerv(int target, int pname, long params) {
- GL15C.nglGetBufferPointerv(target, pname, params);
- }
-
- /**
- * Returns the pointer to a mapped buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the pointer to be returned. Must be:
| {@link GL15C#GL_BUFFER_MAP_POINTER BUFFER_MAP_POINTER} |
- * @param params the pointer value specified by {@code pname}
- *
- * @see Reference Page
- */
- public static void glGetBufferPointerv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("void **") PointerBuffer params) {
- GL15C.glGetBufferPointerv(target, pname, params);
- }
-
- /**
- * Returns the pointer to a mapped buffer object's data store.
- *
- * @param target the target buffer object. One of:
| {@link GL15C#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15C#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the pointer to be returned. Must be:
| {@link GL15C#GL_BUFFER_MAP_POINTER BUFFER_MAP_POINTER} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetBufferPointer(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- return GL15C.glGetBufferPointer(target, pname);
- }
-
- // --- [ glGenQueries ] ---
-
- /**
- * Unsafe version of: {@link #glGenQueries GenQueries}
- *
- * @param n the number of query object names to be generated
- */
- public static void nglGenQueries(int n, long ids) {
- GL15C.nglGenQueries(n, ids);
- }
-
- /**
- * Generates query object names.
- *
- * @param ids a buffer in which the generated query object names are stored
- *
- * @see Reference Page
- */
- public static void glGenQueries(@NativeType("GLuint *") IntBuffer ids) {
- GL15C.glGenQueries(ids);
- }
-
- /**
- * Generates query object names.
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGenQueries() {
- return GL15C.glGenQueries();
- }
-
- // --- [ glDeleteQueries ] ---
-
- /**
- * Unsafe version of: {@link #glDeleteQueries DeleteQueries}
- *
- * @param n the number of query objects to be deleted
- */
- public static void nglDeleteQueries(int n, long ids) {
- GL15C.nglDeleteQueries(n, ids);
- }
-
- /**
- * Deletes named query objects.
- *
- * @param ids an array of query objects to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteQueries(@NativeType("GLuint const *") IntBuffer ids) {
- GL15C.glDeleteQueries(ids);
- }
-
- /**
- * Deletes named query objects.
- *
- * @see Reference Page
- */
- public static void glDeleteQueries(@NativeType("GLuint const *") int id) {
- GL15C.glDeleteQueries(id);
- }
-
- // --- [ glIsQuery ] ---
-
- /**
- * Determine if a name corresponds to a query object.
- *
- * @param id a value that may be the name of a query object
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsQuery(@NativeType("GLuint") int id) {
- return GL15C.glIsQuery(id);
- }
-
- // --- [ glBeginQuery ] ---
-
- /**
- * Creates a query object and makes it active.
- *
- * @param target the target type of query object established. One of:
| {@link GL15C#GL_SAMPLES_PASSED SAMPLES_PASSED} | {@link GL30#GL_PRIMITIVES_GENERATED PRIMITIVES_GENERATED} | {@link GL30#GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN} | {@link GL33#GL_TIME_ELAPSED TIME_ELAPSED} |
| {@link GL33#GL_TIMESTAMP TIMESTAMP} | {@link GL33#GL_ANY_SAMPLES_PASSED ANY_SAMPLES_PASSED} | {@link GL43#GL_ANY_SAMPLES_PASSED_CONSERVATIVE ANY_SAMPLES_PASSED_CONSERVATIVE} |
- * @param id the name of a query object
- *
- * @see Reference Page
- */
- public static void glBeginQuery(@NativeType("GLenum") int target, @NativeType("GLuint") int id) {
- GL15C.glBeginQuery(target, id);
- }
-
- // --- [ glEndQuery ] ---
-
- /**
- * Marks the end of the sequence of commands to be tracked for the active query specified by {@code target}.
- *
- * @param target the query object target. One of:
| {@link GL15C#GL_SAMPLES_PASSED SAMPLES_PASSED} | {@link GL30#GL_PRIMITIVES_GENERATED PRIMITIVES_GENERATED} | {@link GL30#GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN} | {@link GL33#GL_TIME_ELAPSED TIME_ELAPSED} |
| {@link GL33#GL_TIMESTAMP TIMESTAMP} | {@link GL33#GL_ANY_SAMPLES_PASSED ANY_SAMPLES_PASSED} | {@link GL43#GL_ANY_SAMPLES_PASSED_CONSERVATIVE ANY_SAMPLES_PASSED_CONSERVATIVE} |
- *
- * @see Reference Page
- */
- public static void glEndQuery(@NativeType("GLenum") int target) {
- GL15C.glEndQuery(target);
- }
-
- // --- [ glGetQueryiv ] ---
-
- /** Unsafe version of: {@link #glGetQueryiv GetQueryiv} */
- public static void nglGetQueryiv(int target, int pname, long params) {
- GL15C.nglGetQueryiv(target, pname, params);
- }
-
- /**
- * Returns parameters of a query object target.
- *
- * @param target the query object target. One of:
| {@link GL15C#GL_SAMPLES_PASSED SAMPLES_PASSED} | {@link GL30#GL_PRIMITIVES_GENERATED PRIMITIVES_GENERATED} | {@link GL30#GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN} | {@link GL33#GL_TIME_ELAPSED TIME_ELAPSED} |
| {@link GL33#GL_TIMESTAMP TIMESTAMP} | {@link GL33#GL_ANY_SAMPLES_PASSED ANY_SAMPLES_PASSED} | {@link GL43#GL_ANY_SAMPLES_PASSED_CONSERVATIVE ANY_SAMPLES_PASSED_CONSERVATIVE} |
- * @param pname the symbolic name of a query object target parameter. One of:
| {@link GL15C#GL_QUERY_COUNTER_BITS QUERY_COUNTER_BITS} | {@link GL15C#GL_CURRENT_QUERY CURRENT_QUERY} |
- * @param params the requested data
- *
- * @see Reference Page
- */
- public static void glGetQueryiv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL15C.glGetQueryiv(target, pname, params);
- }
-
- /**
- * Returns parameters of a query object target.
- *
- * @param target the query object target. One of:
| {@link GL15C#GL_SAMPLES_PASSED SAMPLES_PASSED} | {@link GL30#GL_PRIMITIVES_GENERATED PRIMITIVES_GENERATED} | {@link GL30#GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN} | {@link GL33#GL_TIME_ELAPSED TIME_ELAPSED} |
| {@link GL33#GL_TIMESTAMP TIMESTAMP} | {@link GL33#GL_ANY_SAMPLES_PASSED ANY_SAMPLES_PASSED} | {@link GL43#GL_ANY_SAMPLES_PASSED_CONSERVATIVE ANY_SAMPLES_PASSED_CONSERVATIVE} |
- * @param pname the symbolic name of a query object target parameter. One of:
| {@link GL15C#GL_QUERY_COUNTER_BITS QUERY_COUNTER_BITS} | {@link GL15C#GL_CURRENT_QUERY CURRENT_QUERY} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetQueryi(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- return GL15C.glGetQueryi(target, pname);
- }
-
- // --- [ glGetQueryObjectiv ] ---
-
- /** Unsafe version of: {@link #glGetQueryObjectiv GetQueryObjectiv} */
- public static void nglGetQueryObjectiv(int id, int pname, long params) {
- GL15C.nglGetQueryObjectiv(id, pname, params);
- }
-
- /**
- * Returns the integer value of a query object parameter.
- *
- * @param id the name of a query object
- * @param pname the symbolic name of a query object parameter. One of:
| {@link GL15C#GL_QUERY_RESULT QUERY_RESULT} | {@link GL15C#GL_QUERY_RESULT_AVAILABLE QUERY_RESULT_AVAILABLE} |
- * @param params the requested data
- *
- * @see Reference Page
- */
- public static void glGetQueryObjectiv(@NativeType("GLuint") int id, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL15C.glGetQueryObjectiv(id, pname, params);
- }
-
- /**
- * Returns the integer value of a query object parameter.
- *
- * @param id the name of a query object
- * @param pname the symbolic name of a query object parameter. One of:
| {@link GL15C#GL_QUERY_RESULT QUERY_RESULT} | {@link GL15C#GL_QUERY_RESULT_AVAILABLE QUERY_RESULT_AVAILABLE} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetQueryObjecti(@NativeType("GLuint") int id, @NativeType("GLenum") int pname) {
- return GL15C.glGetQueryObjecti(id, pname);
- }
-
- // --- [ glGetQueryObjectuiv ] ---
-
- /** Unsafe version of: {@link #glGetQueryObjectuiv GetQueryObjectuiv} */
- public static void nglGetQueryObjectuiv(int id, int pname, long params) {
- GL15C.nglGetQueryObjectuiv(id, pname, params);
- }
-
- /**
- * Unsigned version of {@link #glGetQueryObjectiv GetQueryObjectiv}.
- *
- * @param id the name of a query object
- * @param pname the symbolic name of a query object parameter. One of:
| {@link GL15C#GL_QUERY_RESULT QUERY_RESULT} | {@link GL15C#GL_QUERY_RESULT_AVAILABLE QUERY_RESULT_AVAILABLE} |
- * @param params the requested data
- *
- * @see Reference Page
- */
- public static void glGetQueryObjectuiv(@NativeType("GLuint") int id, @NativeType("GLenum") int pname, @NativeType("GLuint *") IntBuffer params) {
- GL15C.glGetQueryObjectuiv(id, pname, params);
- }
-
- /**
- * Unsigned version of {@link #glGetQueryObjectiv GetQueryObjectiv}.
- *
- * @param id the name of a query object
- * @param pname the symbolic name of a query object parameter. One of:
| {@link GL15C#GL_QUERY_RESULT QUERY_RESULT} | {@link GL15C#GL_QUERY_RESULT_AVAILABLE QUERY_RESULT_AVAILABLE} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetQueryObjectui(@NativeType("GLuint") int id, @NativeType("GLenum") int pname) {
- return GL15C.glGetQueryObjectui(id, pname);
- }
-
- /**
- * Array version of: {@link #glDeleteBuffers DeleteBuffers}
- *
- * @see Reference Page
- */
- public static void glDeleteBuffers(@NativeType("GLuint const *") int[] buffers) {
- GL15C.glDeleteBuffers(buffers);
- }
-
- /**
- * Array version of: {@link #glGenBuffers GenBuffers}
- *
- * @see Reference Page
- */
- public static void glGenBuffers(@NativeType("GLuint *") int[] buffers) {
- GL15C.glGenBuffers(buffers);
- }
-
- /**
- * Array version of: {@link #glBufferData BufferData}
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") short[] data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Array version of: {@link #glBufferData BufferData}
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") int[] data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Array version of: {@link #glBufferData BufferData}
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") long[] data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Array version of: {@link #glBufferData BufferData}
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") float[] data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Array version of: {@link #glBufferData BufferData}
- *
- * @see Reference Page
- */
- public static void glBufferData(@NativeType("GLenum") int target, @NativeType("void const *") double[] data, @NativeType("GLenum") int usage) {
- GL15C.glBufferData(target, data, usage);
- }
-
- /**
- * Array version of: {@link #glBufferSubData BufferSubData}
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") short[] data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glBufferSubData BufferSubData}
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") int[] data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glBufferSubData BufferSubData}
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") long[] data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glBufferSubData BufferSubData}
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") float[] data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glBufferSubData BufferSubData}
- *
- * @see Reference Page
- */
- public static void glBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void const *") double[] data) {
- GL15C.glBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") short[] data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") int[] data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") long[] data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") float[] data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferSubData GetBufferSubData}
- *
- * @see Reference Page
- */
- public static void glGetBufferSubData(@NativeType("GLenum") int target, @NativeType("GLintptr") long offset, @NativeType("void *") double[] data) {
- GL15C.glGetBufferSubData(target, offset, data);
- }
-
- /**
- * Array version of: {@link #glGetBufferParameteriv GetBufferParameteriv}
- *
- * @see Reference Page
- */
- public static void glGetBufferParameteriv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL15C.glGetBufferParameteriv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glGenQueries GenQueries}
- *
- * @see Reference Page
- */
- public static void glGenQueries(@NativeType("GLuint *") int[] ids) {
- GL15C.glGenQueries(ids);
- }
-
- /**
- * Array version of: {@link #glDeleteQueries DeleteQueries}
- *
- * @see Reference Page
- */
- public static void glDeleteQueries(@NativeType("GLuint const *") int[] ids) {
- GL15C.glDeleteQueries(ids);
- }
-
- /**
- * Array version of: {@link #glGetQueryiv GetQueryiv}
- *
- * @see Reference Page
- */
- public static void glGetQueryiv(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL15C.glGetQueryiv(target, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetQueryObjectiv GetQueryObjectiv}
- *
- * @see Reference Page
- */
- public static void glGetQueryObjectiv(@NativeType("GLuint") int id, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL15C.glGetQueryObjectiv(id, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetQueryObjectuiv GetQueryObjectuiv}
- *
- * @see Reference Page
- */
- public static void glGetQueryObjectuiv(@NativeType("GLuint") int id, @NativeType("GLenum") int pname, @NativeType("GLuint *") int[] params) {
- GL15C.glGetQueryObjectuiv(id, pname, params);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL20.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL20.java
deleted file mode 100644
index b4e164e40..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL20.java
+++ /dev/null
@@ -1,2926 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.opengl;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.BufferUtils;
-import org.lwjgl.PointerBuffer;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-
-/**
- * The OpenGL functionality up to version 2.0. Includes the deprecated symbols of the Compatibility Profile.
- *
- * Extensions promoted to core in this release:
- *
- *
- */
-public class GL20 extends GL15 {
-
- /** Accepted by the {@code name} parameter of GetString. */
- public static final int GL_SHADING_LANGUAGE_VERSION = 0x8B8C;
-
- /** Accepted by the {@code pname} parameter of GetInteger. */
- public static final int GL_CURRENT_PROGRAM = 0x8B8D;
-
- /** Accepted by the {@code pname} parameter of GetShaderiv. */
- public static final int
- GL_SHADER_TYPE = 0x8B4F,
- GL_DELETE_STATUS = 0x8B80,
- GL_COMPILE_STATUS = 0x8B81,
- GL_LINK_STATUS = 0x8B82,
- GL_VALIDATE_STATUS = 0x8B83,
- GL_INFO_LOG_LENGTH = 0x8B84,
- GL_ATTACHED_SHADERS = 0x8B85,
- GL_ACTIVE_UNIFORMS = 0x8B86,
- GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87,
- GL_ACTIVE_ATTRIBUTES = 0x8B89,
- GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A,
- GL_SHADER_SOURCE_LENGTH = 0x8B88;
-
- /** Returned by the {@code type} parameter of GetActiveUniform. */
- public static final int
- GL_FLOAT_VEC2 = 0x8B50,
- GL_FLOAT_VEC3 = 0x8B51,
- GL_FLOAT_VEC4 = 0x8B52,
- GL_INT_VEC2 = 0x8B53,
- GL_INT_VEC3 = 0x8B54,
- GL_INT_VEC4 = 0x8B55,
- GL_BOOL = 0x8B56,
- GL_BOOL_VEC2 = 0x8B57,
- GL_BOOL_VEC3 = 0x8B58,
- GL_BOOL_VEC4 = 0x8B59,
- GL_FLOAT_MAT2 = 0x8B5A,
- GL_FLOAT_MAT3 = 0x8B5B,
- GL_FLOAT_MAT4 = 0x8B5C,
- GL_SAMPLER_1D = 0x8B5D,
- GL_SAMPLER_2D = 0x8B5E,
- GL_SAMPLER_3D = 0x8B5F,
- GL_SAMPLER_CUBE = 0x8B60,
- GL_SAMPLER_1D_SHADOW = 0x8B61,
- GL_SAMPLER_2D_SHADOW = 0x8B62;
-
- /** Accepted by the {@code type} argument of CreateShader and returned by the {@code params} parameter of GetShaderiv. */
- public static final int GL_VERTEX_SHADER = 0x8B31;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A,
- GL_MAX_VARYING_FLOATS = 0x8B4B,
- GL_MAX_VERTEX_ATTRIBS = 0x8869,
- GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872,
- GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C,
- GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D,
- GL_MAX_TEXTURE_COORDS = 0x8871;
-
- /**
- * Accepted by the {@code cap} parameter of Disable, Enable, and IsEnabled, and by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- * GetDoublev.
- */
- public static final int
- GL_VERTEX_PROGRAM_POINT_SIZE = 0x8642,
- GL_VERTEX_PROGRAM_TWO_SIDE = 0x8643;
-
- /** Accepted by the {@code pname} parameter of GetVertexAttrib{dfi}v. */
- public static final int
- GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622,
- GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623,
- GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624,
- GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625,
- GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A,
- GL_CURRENT_VERTEX_ATTRIB = 0x8626;
-
- /** Accepted by the {@code pname} parameter of GetVertexAttribPointerv. */
- public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
-
- /** Accepted by the {@code type} argument of CreateShader and returned by the {@code params} parameter of GetShaderiv. */
- public static final int GL_FRAGMENT_SHADER = 0x8B30;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
-
- /** Accepted by the {@code target} parameter of Hint and the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
-
- /** Accepted by the {@code pname} parameters of GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_MAX_DRAW_BUFFERS = 0x8824,
- GL_DRAW_BUFFER0 = 0x8825,
- GL_DRAW_BUFFER1 = 0x8826,
- GL_DRAW_BUFFER2 = 0x8827,
- GL_DRAW_BUFFER3 = 0x8828,
- GL_DRAW_BUFFER4 = 0x8829,
- GL_DRAW_BUFFER5 = 0x882A,
- GL_DRAW_BUFFER6 = 0x882B,
- GL_DRAW_BUFFER7 = 0x882C,
- GL_DRAW_BUFFER8 = 0x882D,
- GL_DRAW_BUFFER9 = 0x882E,
- GL_DRAW_BUFFER10 = 0x882F,
- GL_DRAW_BUFFER11 = 0x8830,
- GL_DRAW_BUFFER12 = 0x8831,
- GL_DRAW_BUFFER13 = 0x8832,
- GL_DRAW_BUFFER14 = 0x8833,
- GL_DRAW_BUFFER15 = 0x8834;
-
- /**
- * Accepted by the {@code cap} parameter of Enable, Disable, and IsEnabled, by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- * GetDoublev, and by the {@code target} parameter of TexEnvi, TexEnviv, TexEnvf, TexEnvfv, GetTexEnviv, and GetTexEnvfv.
- */
- public static final int GL_POINT_SPRITE = 0x8861;
-
- /**
- * When the {@code target} parameter of TexEnvf, TexEnvfv, TexEnvi, TexEnviv, GetTexEnvfv, or GetTexEnviv is POINT_SPRITE, then the value of
- * {@code pname} may be.
- */
- public static final int GL_COORD_REPLACE = 0x8862;
-
- /** Accepted by the {@code pname} parameter of PointParameter{if}v. */
- public static final int GL_POINT_SPRITE_COORD_ORIGIN = 0x8CA0;
-
- /** Accepted by the {@code param} parameter of PointParameter{if}v. */
- public static final int
- GL_LOWER_LEFT = 0x8CA1,
- GL_UPPER_LEFT = 0x8CA2;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_BLEND_EQUATION_RGB = 0x8009,
- GL_BLEND_EQUATION_ALPHA = 0x883D;
-
- /** Accepted by the {@code pname} parameter of GetIntegerv. */
- public static final int
- GL_STENCIL_BACK_FUNC = 0x8800,
- GL_STENCIL_BACK_FAIL = 0x8801,
- GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802,
- GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803,
- GL_STENCIL_BACK_REF = 0x8CA3,
- GL_STENCIL_BACK_VALUE_MASK = 0x8CA4,
- GL_STENCIL_BACK_WRITEMASK = 0x8CA5;
-
- static { GL.initialize(); }
-
- protected GL20() {
- throw new UnsupportedOperationException();
- }
-
- static boolean isAvailable(GLCapabilities caps) {
- return checkFunctions(
- caps.glCreateProgram, caps.glDeleteProgram, caps.glIsProgram, caps.glCreateShader, caps.glDeleteShader, caps.glIsShader, caps.glAttachShader,
- caps.glDetachShader, caps.glShaderSource, caps.glCompileShader, caps.glLinkProgram, caps.glUseProgram, caps.glValidateProgram, caps.glUniform1f,
- caps.glUniform2f, caps.glUniform3f, caps.glUniform4f, caps.glUniform1i, caps.glUniform2i, caps.glUniform3i, caps.glUniform4i, caps.glUniform1fv,
- caps.glUniform2fv, caps.glUniform3fv, caps.glUniform4fv, caps.glUniform1iv, caps.glUniform2iv, caps.glUniform3iv, caps.glUniform4iv,
- caps.glUniformMatrix2fv, caps.glUniformMatrix3fv, caps.glUniformMatrix4fv, caps.glGetShaderiv, caps.glGetProgramiv, caps.glGetShaderInfoLog,
- caps.glGetProgramInfoLog, caps.glGetAttachedShaders, caps.glGetUniformLocation, caps.glGetActiveUniform, caps.glGetUniformfv, caps.glGetUniformiv,
- caps.glGetShaderSource, caps.glVertexAttrib1f, caps.glVertexAttrib1s, caps.glVertexAttrib1d, caps.glVertexAttrib2f, caps.glVertexAttrib2s,
- caps.glVertexAttrib2d, caps.glVertexAttrib3f, caps.glVertexAttrib3s, caps.glVertexAttrib3d, caps.glVertexAttrib4f, caps.glVertexAttrib4s,
- caps.glVertexAttrib4d, caps.glVertexAttrib4Nub, caps.glVertexAttrib1fv, caps.glVertexAttrib1sv, caps.glVertexAttrib1dv, caps.glVertexAttrib2fv,
- caps.glVertexAttrib2sv, caps.glVertexAttrib2dv, caps.glVertexAttrib3fv, caps.glVertexAttrib3sv, caps.glVertexAttrib3dv, caps.glVertexAttrib4fv,
- caps.glVertexAttrib4sv, caps.glVertexAttrib4dv, caps.glVertexAttrib4iv, caps.glVertexAttrib4bv, caps.glVertexAttrib4ubv, caps.glVertexAttrib4usv,
- caps.glVertexAttrib4uiv, caps.glVertexAttrib4Nbv, caps.glVertexAttrib4Nsv, caps.glVertexAttrib4Niv, caps.glVertexAttrib4Nubv,
- caps.glVertexAttrib4Nusv, caps.glVertexAttrib4Nuiv, caps.glVertexAttribPointer, caps.glEnableVertexAttribArray, caps.glDisableVertexAttribArray,
- caps.glBindAttribLocation, caps.glGetActiveAttrib, caps.glGetAttribLocation, caps.glGetVertexAttribiv, caps.glGetVertexAttribfv,
- caps.glGetVertexAttribdv, caps.glGetVertexAttribPointerv, caps.glDrawBuffers, caps.glBlendEquationSeparate, caps.glStencilOpSeparate,
- caps.glStencilFuncSeparate, caps.glStencilMaskSeparate
- );
- }
-
-// -- Begin LWJGL2 part --
- public static void glVertexAttribPointer(int index, int size,
- boolean unsigned, boolean normalized,
- int stride, ByteBuffer buffer) {
- int type = unsigned ? GL11.GL_UNSIGNED_BYTE : GL11.GL_BYTE;
- GL20.glVertexAttribPointer(index, size, type, normalized, stride, buffer);
- }
-
- public static void glVertexAttribPointer(int index, int size,
- boolean unsigned, boolean normalized,
- int stride, ShortBuffer buffer) {
- GL20.nglVertexAttribPointer(index, size, unsigned ? GL11.GL_UNSIGNED_SHORT : GL11.GL_SHORT, normalized, stride, MemoryUtil.memAddress(buffer));
- }
-
- public static void glVertexAttribPointer(int index, int size,
- boolean unsigned, boolean normalized,
- int stride, IntBuffer buffer) {
- GL20.nglVertexAttribPointer(index, size, unsigned ? GL11.GL_UNSIGNED_INT : GL11.GL_INT, normalized, stride, MemoryUtil.memAddress(buffer));
- }
-
- public static String glGetActiveAttrib(int program, int index, int maxLength,
- IntBuffer sizeType) {
- //TODO check if correct
- IntBuffer type = BufferUtils.createIntBuffer(1);
- String s = GL20.glGetActiveAttrib(program, index, maxLength, sizeType, type);
- sizeType.put(type.get(0));
- return s;
- }
-
- public static String glGetActiveUniform(int program, int index, int maxLength,
- IntBuffer sizeType) {
- //TODO if correct
- IntBuffer type = BufferUtils.createIntBuffer(1);
- String s = GL20.glGetActiveUniform(program, index, maxLength, sizeType, type);
- sizeType.put(type.get(0));
- return s;
- }
-
- public static void glShaderSource(int shader, ByteBuffer string) {
- byte[] b = new byte[string.remaining()];
- string.get(b);
- glShaderSource(shader, new String(b));
- }
-
- // TODO port below
-/*
- public static String glGetActiveAttrib(int i, int i2, int i3) {
- int i4 = i;
- int i5 = i2;
- int i6 = i3;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveAttrib;
- BufferChecks.checkFunctionAddress(j);
- Buffer lengths = APIUtil.getLengths(capabilities);
- ByteBuffer bufferByte = APIUtil.getBufferByte(capabilities, i6);
- nglGetActiveAttrib(i4, i5, i6, MemoryUtil.memAddress(lengths), MemoryUtil.memAddress(APIUtil.getBufferInt(capabilities)), MemoryUtil.getAddress(APIUtil.getBufferInt(capabilities), 1), MemoryUtil.getAddress(bufferByte), j);
- Buffer limit = bufferByte.limit(lengths.get(0));
- return APIUtil.getString(capabilities, bufferByte);
- }
-
- public static int glGetActiveAttribSize(int i, int i2) {
- int i3 = i;
- int i4 = i2;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveAttrib;
- BufferChecks.checkFunctionAddress(j);
- IntBuffer bufferInt = APIUtil.getBufferInt(capabilities);
- nglGetActiveAttrib(i3, i4, 0, 0, MemoryUtil.getAddress(bufferInt), MemoryUtil.getAddress(bufferInt, 1), APIUtil.getBufferByte0(capabilities), j);
- return bufferInt.get(0);
- }
-
- public static int glGetActiveAttribType(int i, int i2) {
- int i3 = i;
- int i4 = i2;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveAttrib;
- BufferChecks.checkFunctionAddress(j);
- IntBuffer bufferInt = APIUtil.getBufferInt(capabilities);
- nglGetActiveAttrib(i3, i4, 0, 0, MemoryUtil.getAddress(bufferInt, 1), MemoryUtil.getAddress(bufferInt), APIUtil.getBufferByte0(capabilities), j);
- return bufferInt.get(0);
- }
-
- public static String glGetActiveUniform(int i, int i2, int i3) {
- int i4 = i;
- int i5 = i2;
- int i6 = i3;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveUniform;
- BufferChecks.checkFunctionAddress(j);
- Buffer lengths = APIUtil.getLengths(capabilities);
- ByteBuffer bufferByte = APIUtil.getBufferByte(capabilities, i6);
- nglGetActiveUniform(i4, i5, i6, MemoryUtil.memAddress(lengths), MemoryUtil.memAddress(APIUtil.getBufferInt(capabilities)), MemoryUtil.getAddress(APIUtil.getBufferInt(capabilities), 1), MemoryUtil.getAddress(bufferByte), j);
- Buffer limit = bufferByte.limit(lengths.get(0));
- return APIUtil.getString(capabilities, bufferByte);
- }
-
- public static int glGetActiveUniformSize(int i, int i2) {
- int i3 = i;
- int i4 = i2;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveUniform;
- BufferChecks.checkFunctionAddress(j);
- IntBuffer bufferInt = APIUtil.getBufferInt(capabilities);
- nglGetActiveUniform(i3, i4, 1, 0, MemoryUtil.getAddress(bufferInt), MemoryUtil.getAddress(bufferInt, 1), APIUtil.getBufferByte0(capabilities), j);
- return bufferInt.get(0);
- }
-
- public static int glGetActiveUniformType(int i, int i2) {
- int i3 = i;
- int i4 = i2;
- ContextCapabilities capabilities = GLContext.getCapabilities();
- long j = capabilities.glGetActiveUniform;
- BufferChecks.checkFunctionAddress(j);
- IntBuffer bufferInt = APIUtil.getBufferInt(capabilities);
- nglGetActiveUniform(i3, i4, 0, 0, MemoryUtil.getAddress(bufferInt, 1), MemoryUtil.getAddress(bufferInt), APIUtil.getBufferByte0(capabilities), j);
- return bufferInt.get(0);
- }
-*/
-
- @Deprecated
- public static int glGetProgram(int i, int i2) {
- return glGetProgrami(i, i2);
- }
-
- public static void glGetProgram(int program, int pname, IntBuffer params) {
- glGetProgramiv(program, pname, params);
- }
-
- @Deprecated
- public static int glGetShader(int i, int i2) {
- return glGetShaderi(i, i2);
- }
-
- public static void glGetShader(int shader, int pname, IntBuffer params) {
- glGetShaderiv(shader, pname, params);
- }
-
- public static void glGetUniform(int program, int location, FloatBuffer params) {
- glGetUniformfv(program, location, params);
- }
-
- public static void glGetUniform(int program, int location, IntBuffer params) {
- glGetUniformiv(program, location, params);
- }
-
- public static void glGetVertexAttrib(int index, int pname, DoubleBuffer params) {
- glGetVertexAttribdv(index, pname, params);
- }
-
- public static void glGetVertexAttrib(int index, int pname, FloatBuffer params) {
- glGetVertexAttribfv(index, pname, params);
- }
-
- public static void glGetVertexAttrib(int index, int pname, IntBuffer params) {
- glGetVertexAttribiv(index, pname, params);
- }
-
- // FIXME
-/*
- public static ByteBuffer glGetVertexAttribPointer(int i, int i2, long j) {
- glGetVertexa
- }
-
- public static void glGetVertexAttribPointer(int index, int pname, ByteBuffer buffer) {
- glGetVertexAttribPointer(index, pname);
- }
-*/
- public static void glUniform1(int location, FloatBuffer buffer) {
- glUniform1fv(location, buffer);
- }
-
- public static void glUniform1(int location, IntBuffer buffer) {
- glUniform1iv(location, buffer);
- }
-
- public static void glUniform2(int location, FloatBuffer buffer) {
- glUniform2fv(location, buffer);
- }
-
- public static void glUniform2(int location, IntBuffer buffer) {
- glUniform2iv(location, buffer);
- }
-
- public static void glUniform3(int location, FloatBuffer buffer) {
- glUniform3fv(location, buffer);
- }
-
- public static void glUniform3(int location, IntBuffer buffer) {
- glUniform3iv(location, buffer);
- }
-
- public static void glUniform4(int location, FloatBuffer buffer) {
- glUniform4fv(location, buffer);
- }
-
- public static void glUniform4(int location, IntBuffer buffer) {
- glUniform4iv(location, buffer);
- }
-
- public static void glUniformMatrix2(int location, boolean transpose, FloatBuffer buffer) {
- glUniformMatrix2fv(location, transpose, buffer);
- }
-
- public static void glUniformMatrix3(int location, boolean transpose, FloatBuffer buffer) {
- glUniformMatrix3fv(location, transpose, buffer);
- }
-
- public static void glUniformMatrix4(int location, boolean transpose, FloatBuffer buffer) {
- glUniformMatrix4fv(location, transpose, buffer);
- }
-
- // FIXME
-/*
- public static void glVertexAttribPointer(int index, int size, boolean normalized, int stride, DoubleBuffer buffer) {
- glVertexAttribPointer(index, size, GL11.GL_DOUBLE, normalized, stride, buffer);
- }
-*/
- public static void glVertexAttribPointer(int index, int size, boolean normalized, int stride, FloatBuffer buffer) {
- glVertexAttribPointer(index, size, GL11.GL_FLOAT, normalized, stride, buffer);
- }
-// -- End LWJGL2 part --
-
- // --- [ glCreateProgram ] ---
-
- /**
- * Creates a program object.
- *
- * @see Reference Page
- */
- @NativeType("GLuint")
- public static int glCreateProgram() {
- return GL20C.glCreateProgram();
- }
-
- // --- [ glDeleteProgram ] ---
-
- /**
- * Deletes a program object.
- *
- * @param program the program object to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteProgram(@NativeType("GLuint") int program) {
- GL20C.glDeleteProgram(program);
- }
-
- // --- [ glIsProgram ] ---
-
- /**
- * Returns {@link GL11#GL_TRUE TRUE} if {@code program} is the name of a program object. If {@code program} is zero, or a non-zero value that is not the name of a program
- * object, IsProgram returns {@link GL11#GL_FALSE FALSE}. No error is generated if program is not a valid program object name.
- *
- * @param program the program object name to query
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsProgram(@NativeType("GLuint") int program) {
- return GL20C.glIsProgram(program);
- }
-
- // --- [ glCreateShader ] ---
-
- /**
- * Creates a shader object.
- *
- * @param type the type of shader to be created. One of:
| {@link GL20C#GL_VERTEX_SHADER VERTEX_SHADER} | {@link GL20C#GL_FRAGMENT_SHADER FRAGMENT_SHADER} | {@link GL32#GL_GEOMETRY_SHADER GEOMETRY_SHADER} | {@link GL40#GL_TESS_CONTROL_SHADER TESS_CONTROL_SHADER} |
| {@link GL40#GL_TESS_EVALUATION_SHADER TESS_EVALUATION_SHADER} |
- *
- * @see Reference Page
- */
- @NativeType("GLuint")
- public static int glCreateShader(@NativeType("GLenum") int type) {
- return GL20C.glCreateShader(type);
- }
-
- // --- [ glDeleteShader ] ---
-
- /**
- * Deletes a shader object.
- *
- * @param shader the shader object to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteShader(@NativeType("GLuint") int shader) {
- GL20C.glDeleteShader(shader);
- }
-
- // --- [ glIsShader ] ---
-
- /**
- * Returns {@link GL11#GL_TRUE TRUE} if {@code shader} is the name of a shader object. If {@code shader} is zero, or a nonzero value that is not the name of a shader
- * object, IsShader returns {@link GL11#GL_FALSE FALSE}. No error is generated if shader is not a valid shader object name.
- *
- * @param shader the shader object name to query
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsShader(@NativeType("GLuint") int shader) {
- return GL20C.glIsShader(shader);
- }
-
- // --- [ glAttachShader ] ---
-
- /**
- * Attaches a shader object to a program object.
- *
- * In order to create a complete shader program, there must be a way to specify the list of things that will be linked together. Program objects provide
- * this mechanism. Shaders that are to be linked together in a program object must first be attached to that program object. glAttachShader attaches the
- * shader object specified by shader to the program object specified by program. This indicates that shader will be included in link operations that will
- * be performed on program.
- *
- * All operations that can be performed on a shader object are valid whether or not the shader object is attached to a program object. It is permissible to
- * attach a shader object to a program object before source code has been loaded into the shader object or before the shader object has been compiled. It
- * is permissible to attach multiple shader objects of the same type because each may contain a portion of the complete shader. It is also permissible to
- * attach a shader object to more than one program object. If a shader object is deleted while it is attached to a program object, it will be flagged for
- * deletion, and deletion will not occur until glDetachShader is called to detach it from all program objects to which it is attached.
- *
- * @param program the program object to which a shader object will be attached
- * @param shader the shader object that is to be attached
- *
- * @see Reference Page
- */
- public static void glAttachShader(@NativeType("GLuint") int program, @NativeType("GLuint") int shader) {
- GL20C.glAttachShader(program, shader);
- }
-
- // --- [ glDetachShader ] ---
-
- /**
- * Detaches a shader object from a program object to which it is attached.
- *
- * @param program the program object from which to detach the shader object
- * @param shader the shader object to be detached
- *
- * @see Reference Page
- */
- public static void glDetachShader(@NativeType("GLuint") int program, @NativeType("GLuint") int shader) {
- GL20C.glDetachShader(program, shader);
- }
-
- // --- [ glShaderSource ] ---
-
- /**
- * Unsafe version of: {@link #glShaderSource ShaderSource}
- *
- * @param count the number of elements in the string and length arrays
- */
- public static void nglShaderSource(int shader, int count, long strings, long length) {
- GL20C.nglShaderSource(shader, count, strings, length);
- }
-
- /**
- * Sets the source code in {@code shader} to the source code in the array of strings specified by {@code strings}. Any source code previously stored in the
- * shader object is completely replaced. The number of strings in the array is specified by {@code count}. If {@code length} is {@code NULL}, each string is
- * assumed to be null terminated. If {@code length} is a value other than {@code NULL}, it points to an array containing a string length for each of the
- * corresponding elements of {@code strings}. Each element in the length array may contain the length of the corresponding string (the null character is not
- * counted as part of the string length) or a value less than 0 to indicate that the string is null terminated. The source code strings are not scanned or
- * parsed at this time; they are simply copied into the specified shader object.
- *
- * @param shader the shader object whose source code is to be replaced
- * @param strings an array of pointers to strings containing the source code to be loaded into the shader
- * @param length an array of string lengths
- *
- * @see Reference Page
- */
- public static void glShaderSource(@NativeType("GLuint") int shader, @NativeType("GLchar const **") PointerBuffer strings, @Nullable @NativeType("GLint const *") IntBuffer length) {
- GL20C.glShaderSource(shader, strings, length);
- }
-
- /**
- * Sets the source code in {@code shader} to the source code in the array of strings specified by {@code strings}. Any source code previously stored in the
- * shader object is completely replaced. The number of strings in the array is specified by {@code count}. If {@code length} is {@code NULL}, each string is
- * assumed to be null terminated. If {@code length} is a value other than {@code NULL}, it points to an array containing a string length for each of the
- * corresponding elements of {@code strings}. Each element in the length array may contain the length of the corresponding string (the null character is not
- * counted as part of the string length) or a value less than 0 to indicate that the string is null terminated. The source code strings are not scanned or
- * parsed at this time; they are simply copied into the specified shader object.
- *
- * @param shader the shader object whose source code is to be replaced
- * @param strings an array of pointers to strings containing the source code to be loaded into the shader
- *
- * @see Reference Page
- */
- public static void glShaderSource(@NativeType("GLuint") int shader, @NativeType("GLchar const **") CharSequence... strings) {
- GL20C.glShaderSource(shader, strings);
- }
-
- /**
- * Sets the source code in {@code shader} to the source code in the array of strings specified by {@code strings}. Any source code previously stored in the
- * shader object is completely replaced. The number of strings in the array is specified by {@code count}. If {@code length} is {@code NULL}, each string is
- * assumed to be null terminated. If {@code length} is a value other than {@code NULL}, it points to an array containing a string length for each of the
- * corresponding elements of {@code strings}. Each element in the length array may contain the length of the corresponding string (the null character is not
- * counted as part of the string length) or a value less than 0 to indicate that the string is null terminated. The source code strings are not scanned or
- * parsed at this time; they are simply copied into the specified shader object.
- *
- * @param shader the shader object whose source code is to be replaced
- *
- * @see Reference Page
- */
- public static void glShaderSource(@NativeType("GLuint") int shader, @NativeType("GLchar const **") CharSequence string) {
- GL20C.glShaderSource(shader, string);
- }
-
- // --- [ glCompileShader ] ---
-
- /**
- * Compiles a shader object.
- *
- * @param shader the shader object to be compiled
- *
- * @see Reference Page
- */
- public static void glCompileShader(@NativeType("GLuint") int shader) {
- GL20C.glCompileShader(shader);
- }
-
- // --- [ glLinkProgram ] ---
-
- /**
- * Links a program object.
- *
- * @param program the program object to be linked
- *
- * @see Reference Page
- */
- public static void glLinkProgram(@NativeType("GLuint") int program) {
- GL20C.glLinkProgram(program);
- }
-
- // --- [ glUseProgram ] ---
-
- /**
- * Installs a program object as part of current rendering state.
- *
- * @param program the program object whose executables are to be used as part of current rendering state
- *
- * @see Reference Page
- */
- public static void glUseProgram(@NativeType("GLuint") int program) {
- GL20C.glUseProgram(program);
- }
-
- // --- [ glValidateProgram ] ---
-
- /**
- * Validates a program object.
- *
- * @param program the program object to be validated
- *
- * @see Reference Page
- */
- public static void glValidateProgram(@NativeType("GLuint") int program) {
- GL20C.glValidateProgram(program);
- }
-
- // --- [ glUniform1f ] ---
-
- /**
- * Specifies the value of a float uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform value
- *
- * @see Reference Page
- */
- public static void glUniform1f(@NativeType("GLint") int location, @NativeType("GLfloat") float v0) {
- GL20C.glUniform1f(location, v0);
- }
-
- // --- [ glUniform2f ] ---
-
- /**
- * Specifies the value of a vec2 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- *
- * @see Reference Page
- */
- public static void glUniform2f(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1) {
- GL20C.glUniform2f(location, v0, v1);
- }
-
- // --- [ glUniform3f ] ---
-
- /**
- * Specifies the value of a vec3 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- *
- * @see Reference Page
- */
- public static void glUniform3f(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2) {
- GL20C.glUniform3f(location, v0, v1, v2);
- }
-
- // --- [ glUniform4f ] ---
-
- /**
- * Specifies the value of a vec4 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- * @param v3 the uniform w value
- *
- * @see Reference Page
- */
- public static void glUniform4f(@NativeType("GLint") int location, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2, @NativeType("GLfloat") float v3) {
- GL20C.glUniform4f(location, v0, v1, v2, v3);
- }
-
- // --- [ glUniform1i ] ---
-
- /**
- * Specifies the value of an int uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform value
- *
- * @see Reference Page
- */
- public static void glUniform1i(@NativeType("GLint") int location, @NativeType("GLint") int v0) {
- GL20C.glUniform1i(location, v0);
- }
-
- // --- [ glUniform2i ] ---
-
- /**
- * Specifies the value of an ivec2 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- *
- * @see Reference Page
- */
- public static void glUniform2i(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1) {
- GL20C.glUniform2i(location, v0, v1);
- }
-
- // --- [ glUniform3i ] ---
-
- /**
- * Specifies the value of an ivec3 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- *
- * @see Reference Page
- */
- public static void glUniform3i(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1, @NativeType("GLint") int v2) {
- GL20C.glUniform3i(location, v0, v1, v2);
- }
-
- // --- [ glUniform4i ] ---
-
- /**
- * Specifies the value of an ivec4 uniform variable for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param v0 the uniform x value
- * @param v1 the uniform y value
- * @param v2 the uniform z value
- * @param v3 the uniform w value
- *
- * @see Reference Page
- */
- public static void glUniform4i(@NativeType("GLint") int location, @NativeType("GLint") int v0, @NativeType("GLint") int v1, @NativeType("GLint") int v2, @NativeType("GLint") int v3) {
- GL20C.glUniform4i(location, v0, v1, v2, v3);
- }
-
- // --- [ glUniform1fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform1fv Uniform1fv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform1fv(int location, int count, long value) {
- GL20C.nglUniform1fv(location, count, value);
- }
-
- /**
- * Specifies the value of a single float uniform variable or a float uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform1fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniform1fv(location, value);
- }
-
- // --- [ glUniform2fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform2fv Uniform2fv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform2fv(int location, int count, long value) {
- GL20C.nglUniform2fv(location, count, value);
- }
-
- /**
- * Specifies the value of a single vec2 uniform variable or a vec2 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform2fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniform2fv(location, value);
- }
-
- // --- [ glUniform3fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform3fv Uniform3fv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform3fv(int location, int count, long value) {
- GL20C.nglUniform3fv(location, count, value);
- }
-
- /**
- * Specifies the value of a single vec3 uniform variable or a vec3 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform3fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniform3fv(location, value);
- }
-
- // --- [ glUniform4fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform4fv Uniform4fv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform4fv(int location, int count, long value) {
- GL20C.nglUniform4fv(location, count, value);
- }
-
- /**
- * Specifies the value of a single vec4 uniform variable or a vec4 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform4fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniform4fv(location, value);
- }
-
- // --- [ glUniform1iv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform1iv Uniform1iv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform1iv(int location, int count, long value) {
- GL20C.nglUniform1iv(location, count, value);
- }
-
- /**
- * Specifies the value of a single int uniform variable or a int uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform1iv(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- GL20C.glUniform1iv(location, value);
- }
-
- // --- [ glUniform2iv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform2iv Uniform2iv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform2iv(int location, int count, long value) {
- GL20C.nglUniform2iv(location, count, value);
- }
-
- /**
- * Specifies the value of a single ivec2 uniform variable or an ivec2 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform2iv(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- GL20C.glUniform2iv(location, value);
- }
-
- // --- [ glUniform3iv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform3iv Uniform3iv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform3iv(int location, int count, long value) {
- GL20C.nglUniform3iv(location, count, value);
- }
-
- /**
- * Specifies the value of a single ivec3 uniform variable or an ivec3 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform3iv(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- GL20C.glUniform3iv(location, value);
- }
-
- // --- [ glUniform4iv ] ---
-
- /**
- * Unsafe version of: {@link #glUniform4iv Uniform4iv}
- *
- * @param count the number of elements that are to be modified. This should be 1 if the targeted uniform variable is not an array, and 1 or more if it is an array.
- */
- public static void nglUniform4iv(int location, int count, long value) {
- GL20C.nglUniform4iv(location, count, value);
- }
-
- /**
- * Specifies the value of a single ivec4 uniform variable or an ivec4 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniform4iv(@NativeType("GLint") int location, @NativeType("GLint const *") IntBuffer value) {
- GL20C.glUniform4iv(location, value);
- }
-
- // --- [ glUniformMatrix2fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix2fv UniformMatrix2fv}
- *
- * @param count the number of matrices that are to be modified. This should be 1 if the targeted uniform variable is not an array of matrices, and 1 or more if it is an array of matrices.
- */
- public static void nglUniformMatrix2fv(int location, int count, boolean transpose, long value) {
- GL20C.nglUniformMatrix2fv(location, count, transpose, value);
- }
-
- /**
- * Specifies the value of a single mat2 uniform variable or a mat2 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param transpose whether to transpose the matrix as the values are loaded into the uniform variable
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniformMatrix2fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniformMatrix2fv(location, transpose, value);
- }
-
- // --- [ glUniformMatrix3fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix3fv UniformMatrix3fv}
- *
- * @param count the number of matrices that are to be modified. This should be 1 if the targeted uniform variable is not an array of matrices, and 1 or more if it is an array of matrices.
- */
- public static void nglUniformMatrix3fv(int location, int count, boolean transpose, long value) {
- GL20C.nglUniformMatrix3fv(location, count, transpose, value);
- }
-
- /**
- * Specifies the value of a single mat3 uniform variable or a mat3 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param transpose whether to transpose the matrix as the values are loaded into the uniform variable
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniformMatrix3fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniformMatrix3fv(location, transpose, value);
- }
-
- // --- [ glUniformMatrix4fv ] ---
-
- /**
- * Unsafe version of: {@link #glUniformMatrix4fv UniformMatrix4fv}
- *
- * @param count the number of matrices that are to be modified. This should be 1 if the targeted uniform variable is not an array of matrices, and 1 or more if it is an array of matrices.
- */
- public static void nglUniformMatrix4fv(int location, int count, boolean transpose, long value) {
- GL20C.nglUniformMatrix4fv(location, count, transpose, value);
- }
-
- /**
- * Specifies the value of a single mat4 uniform variable or a mat4 uniform variable array for the current program object.
- *
- * @param location the location of the uniform variable to be modified
- * @param transpose whether to transpose the matrix as the values are loaded into the uniform variable
- * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glUniformMatrix4fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") FloatBuffer value) {
- GL20C.glUniformMatrix4fv(location, transpose, value);
- }
-
- // --- [ glGetShaderiv ] ---
-
- /** Unsafe version of: {@link #glGetShaderiv GetShaderiv} */
- public static void nglGetShaderiv(int shader, int pname, long params) {
- GL20C.nglGetShaderiv(shader, pname, params);
- }
-
- /**
- * Returns a parameter from a shader object.
- *
- * @param shader the shader object to be queried
- * @param pname the object parameter. One of:
| {@link GL20C#GL_SHADER_TYPE SHADER_TYPE} | {@link GL20C#GL_DELETE_STATUS DELETE_STATUS} | {@link GL20C#GL_COMPILE_STATUS COMPILE_STATUS} | {@link GL20C#GL_INFO_LOG_LENGTH INFO_LOG_LENGTH} | {@link GL20C#GL_SHADER_SOURCE_LENGTH SHADER_SOURCE_LENGTH} |
- * @param params the requested object parameter
- *
- * @see Reference Page
- */
- public static void glGetShaderiv(@NativeType("GLuint") int shader, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL20C.glGetShaderiv(shader, pname, params);
- }
-
- /**
- * Returns a parameter from a shader object.
- *
- * @param shader the shader object to be queried
- * @param pname the object parameter. One of:
| {@link GL20C#GL_SHADER_TYPE SHADER_TYPE} | {@link GL20C#GL_DELETE_STATUS DELETE_STATUS} | {@link GL20C#GL_COMPILE_STATUS COMPILE_STATUS} | {@link GL20C#GL_INFO_LOG_LENGTH INFO_LOG_LENGTH} | {@link GL20C#GL_SHADER_SOURCE_LENGTH SHADER_SOURCE_LENGTH} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetShaderi(@NativeType("GLuint") int shader, @NativeType("GLenum") int pname) {
- return GL20C.glGetShaderi(shader, pname);
- }
-
- // --- [ glGetProgramiv ] ---
-
- /** Unsafe version of: {@link #glGetProgramiv GetProgramiv} */
- public static void nglGetProgramiv(int program, int pname, long params) {
- GL20C.nglGetProgramiv(program, pname, params);
- }
-
- /**
- * Returns a parameter from a program object.
- *
- * @param program the program object to be queried
- * @param pname the object parameter. One of:
| {@link GL20C#GL_DELETE_STATUS DELETE_STATUS} | {@link GL20C#GL_LINK_STATUS LINK_STATUS} | {@link GL20C#GL_VALIDATE_STATUS VALIDATE_STATUS} |
| {@link GL20C#GL_INFO_LOG_LENGTH INFO_LOG_LENGTH} | {@link GL20C#GL_ATTACHED_SHADERS ATTACHED_SHADERS} | {@link GL20C#GL_ACTIVE_ATTRIBUTES ACTIVE_ATTRIBUTES} |
| {@link GL20C#GL_ACTIVE_ATTRIBUTE_MAX_LENGTH ACTIVE_ATTRIBUTE_MAX_LENGTH} | {@link GL20C#GL_ACTIVE_UNIFORMS ACTIVE_UNIFORMS} | {@link GL20C#GL_ACTIVE_UNIFORM_MAX_LENGTH ACTIVE_UNIFORM_MAX_LENGTH} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER_MODE TRANSFORM_FEEDBACK_BUFFER_MODE} | {@link GL30#GL_TRANSFORM_FEEDBACK_VARYINGS TRANSFORM_FEEDBACK_VARYINGS} | {@link GL30#GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH} |
| {@link GL31#GL_ACTIVE_UNIFORM_BLOCKS ACTIVE_UNIFORM_BLOCKS} | {@link GL31#GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH} | {@link GL32#GL_GEOMETRY_VERTICES_OUT GEOMETRY_VERTICES_OUT} |
| {@link GL32#GL_GEOMETRY_INPUT_TYPE GEOMETRY_INPUT_TYPE} | {@link GL32#GL_GEOMETRY_OUTPUT_TYPE GEOMETRY_OUTPUT_TYPE} | {@link GL41#GL_PROGRAM_BINARY_LENGTH PROGRAM_BINARY_LENGTH} |
| {@link GL42#GL_ACTIVE_ATOMIC_COUNTER_BUFFERS ACTIVE_ATOMIC_COUNTER_BUFFERS} | {@link GL43#GL_COMPUTE_WORK_GROUP_SIZE COMPUTE_WORK_GROUP_SIZE} |
- * @param params the requested object parameter
- *
- * @see Reference Page
- */
- public static void glGetProgramiv(@NativeType("GLuint") int program, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL20C.glGetProgramiv(program, pname, params);
- }
-
- /**
- * Returns a parameter from a program object.
- *
- * @param program the program object to be queried
- * @param pname the object parameter. One of:
| {@link GL20C#GL_DELETE_STATUS DELETE_STATUS} | {@link GL20C#GL_LINK_STATUS LINK_STATUS} | {@link GL20C#GL_VALIDATE_STATUS VALIDATE_STATUS} |
| {@link GL20C#GL_INFO_LOG_LENGTH INFO_LOG_LENGTH} | {@link GL20C#GL_ATTACHED_SHADERS ATTACHED_SHADERS} | {@link GL20C#GL_ACTIVE_ATTRIBUTES ACTIVE_ATTRIBUTES} |
| {@link GL20C#GL_ACTIVE_ATTRIBUTE_MAX_LENGTH ACTIVE_ATTRIBUTE_MAX_LENGTH} | {@link GL20C#GL_ACTIVE_UNIFORMS ACTIVE_UNIFORMS} | {@link GL20C#GL_ACTIVE_UNIFORM_MAX_LENGTH ACTIVE_UNIFORM_MAX_LENGTH} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER_MODE TRANSFORM_FEEDBACK_BUFFER_MODE} | {@link GL30#GL_TRANSFORM_FEEDBACK_VARYINGS TRANSFORM_FEEDBACK_VARYINGS} | {@link GL30#GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH} |
| {@link GL31#GL_ACTIVE_UNIFORM_BLOCKS ACTIVE_UNIFORM_BLOCKS} | {@link GL31#GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH} | {@link GL32#GL_GEOMETRY_VERTICES_OUT GEOMETRY_VERTICES_OUT} |
| {@link GL32#GL_GEOMETRY_INPUT_TYPE GEOMETRY_INPUT_TYPE} | {@link GL32#GL_GEOMETRY_OUTPUT_TYPE GEOMETRY_OUTPUT_TYPE} | {@link GL41#GL_PROGRAM_BINARY_LENGTH PROGRAM_BINARY_LENGTH} |
| {@link GL42#GL_ACTIVE_ATOMIC_COUNTER_BUFFERS ACTIVE_ATOMIC_COUNTER_BUFFERS} | {@link GL43#GL_COMPUTE_WORK_GROUP_SIZE COMPUTE_WORK_GROUP_SIZE} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetProgrami(@NativeType("GLuint") int program, @NativeType("GLenum") int pname) {
- return GL20C.glGetProgrami(program, pname);
- }
-
- // --- [ glGetShaderInfoLog ] ---
-
- /**
- * Unsafe version of: {@link #glGetShaderInfoLog GetShaderInfoLog}
- *
- * @param maxLength the size of the character buffer for storing the returned information log
- */
- public static void nglGetShaderInfoLog(int shader, int maxLength, long length, long infoLog) {
- GL20C.nglGetShaderInfoLog(shader, maxLength, length, infoLog);
- }
-
- /**
- * Returns the information log for a shader object.
- *
- * @param shader the shader object whose information log is to be queried
- * @param length the length of the string returned in {@code infoLog} (excluding the null terminator)
- * @param infoLog an array of characters that is used to return the information log
- *
- * @see Reference Page
- */
- public static void glGetShaderInfoLog(@NativeType("GLuint") int shader, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLchar *") ByteBuffer infoLog) {
- GL20C.glGetShaderInfoLog(shader, length, infoLog);
- }
-
- /**
- * Returns the information log for a shader object.
- *
- * @param shader the shader object whose information log is to be queried
- * @param maxLength the size of the character buffer for storing the returned information log
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetShaderInfoLog(@NativeType("GLuint") int shader, @NativeType("GLsizei") int maxLength) {
- return GL20C.glGetShaderInfoLog(shader, maxLength);
- }
-
- /**
- * Returns the information log for a shader object.
- *
- * @param shader the shader object whose information log is to be queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetShaderInfoLog(@NativeType("GLuint") int shader) {
- return glGetShaderInfoLog(shader, glGetShaderi(shader, GL_INFO_LOG_LENGTH));
- }
-
- // --- [ glGetProgramInfoLog ] ---
-
- /**
- * Unsafe version of: {@link #glGetProgramInfoLog GetProgramInfoLog}
- *
- * @param maxLength the size of the character buffer for storing the returned information log
- */
- public static void nglGetProgramInfoLog(int program, int maxLength, long length, long infoLog) {
- GL20C.nglGetProgramInfoLog(program, maxLength, length, infoLog);
- }
-
- /**
- * Returns the information log for a program object.
- *
- * @param program the program object whose information log is to be queried
- * @param length the length of the string returned in {@code infoLog} (excluding the null terminator)
- * @param infoLog an array of characters that is used to return the information log
- *
- * @see Reference Page
- */
- public static void glGetProgramInfoLog(@NativeType("GLuint") int program, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLchar *") ByteBuffer infoLog) {
- GL20C.glGetProgramInfoLog(program, length, infoLog);
- }
-
- /**
- * Returns the information log for a program object.
- *
- * @param program the program object whose information log is to be queried
- * @param maxLength the size of the character buffer for storing the returned information log
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetProgramInfoLog(@NativeType("GLuint") int program, @NativeType("GLsizei") int maxLength) {
- return GL20C.glGetProgramInfoLog(program, maxLength);
- }
-
- /**
- * Returns the information log for a program object.
- *
- * @param program the program object whose information log is to be queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetProgramInfoLog(@NativeType("GLuint") int program) {
- return glGetProgramInfoLog(program, glGetProgrami(program, GL_INFO_LOG_LENGTH));
- }
-
- // --- [ glGetAttachedShaders ] ---
-
- /**
- * Unsafe version of: {@link #glGetAttachedShaders GetAttachedShaders}
- *
- * @param maxCount the size of the array for storing the returned object names
- */
- public static void nglGetAttachedShaders(int program, int maxCount, long count, long shaders) {
- GL20C.nglGetAttachedShaders(program, maxCount, count, shaders);
- }
-
- /**
- * Returns the shader objects attached to a program object.
- *
- * @param program the program object to be queried
- * @param count the number of names actually returned in {@code shaders}
- * @param shaders an array that is used to return the names of attached shader objects
- *
- * @see Reference Page
- */
- public static void glGetAttachedShaders(@NativeType("GLuint") int program, @Nullable @NativeType("GLsizei *") IntBuffer count, @NativeType("GLuint *") IntBuffer shaders) {
- GL20C.glGetAttachedShaders(program, count, shaders);
- }
-
- // --- [ glGetUniformLocation ] ---
-
- /** Unsafe version of: {@link #glGetUniformLocation GetUniformLocation} */
- public static int nglGetUniformLocation(int program, long name) {
- return GL20C.nglGetUniformLocation(program, name);
- }
-
- /**
- * Returns the location of a uniform variable.
- *
- * @param program the program object to be queried
- * @param name a null terminated string containing the name of the uniform variable whose location is to be queried
- *
- * @see Reference Page
- */
- @NativeType("GLint")
- public static int glGetUniformLocation(@NativeType("GLuint") int program, @NativeType("GLchar const *") ByteBuffer name) {
- return GL20C.glGetUniformLocation(program, name);
- }
-
- /**
- * Returns the location of a uniform variable.
- *
- * @param program the program object to be queried
- * @param name a null terminated string containing the name of the uniform variable whose location is to be queried
- *
- * @see Reference Page
- */
- @NativeType("GLint")
- public static int glGetUniformLocation(@NativeType("GLuint") int program, @NativeType("GLchar const *") CharSequence name) {
- return GL20C.glGetUniformLocation(program, name);
- }
-
- // --- [ glGetActiveUniform ] ---
-
- /**
- * Unsafe version of: {@link #glGetActiveUniform GetActiveUniform}
- *
- * @param maxLength the maximum number of characters OpenGL is allowed to write in the character buffer indicated by {@code name}
- */
- public static void nglGetActiveUniform(int program, int index, int maxLength, long length, long size, long type, long name) {
- GL20C.nglGetActiveUniform(program, index, maxLength, length, size, type, name);
- }
-
- /**
- * Returns information about an active uniform variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the uniform variable to be queried
- * @param length the number of characters actually written by OpenGL in the string indicated by {@code name} (excluding the null terminator) if a value other than NULL is passed
- * @param size the size of the uniform variable
- * @param type the data type of the uniform variable
- * @param name a null terminated string containing the name of the uniform variable
- *
- * @see Reference Page
- */
- public static void glGetActiveUniform(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type, @NativeType("GLchar *") ByteBuffer name) {
- GL20C.glGetActiveUniform(program, index, length, size, type, name);
- }
-
- /**
- * Returns information about an active uniform variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the uniform variable to be queried
- * @param maxLength the maximum number of characters OpenGL is allowed to write in the character buffer indicated by {@code name}
- * @param size the size of the uniform variable
- * @param type the data type of the uniform variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetActiveUniform(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLsizei") int maxLength, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- return GL20C.glGetActiveUniform(program, index, maxLength, size, type);
- }
-
- /**
- * Returns information about an active uniform variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the uniform variable to be queried
- * @param size the size of the uniform variable
- * @param type the data type of the uniform variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetActiveUniform(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- return glGetActiveUniform(program, index, glGetProgrami(program, GL_ACTIVE_UNIFORM_MAX_LENGTH), size, type);
- }
-
- // --- [ glGetUniformfv ] ---
-
- /** Unsafe version of: {@link #glGetUniformfv GetUniformfv} */
- public static void nglGetUniformfv(int program, int location, long params) {
- GL20C.nglGetUniformfv(program, location, params);
- }
-
- /**
- * Returns the float value(s) of a uniform variable.
- *
- * @param program the program object to be queried
- * @param location the location of the uniform variable to be queried
- * @param params the value of the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glGetUniformfv(@NativeType("GLuint") int program, @NativeType("GLint") int location, @NativeType("GLfloat *") FloatBuffer params) {
- GL20C.glGetUniformfv(program, location, params);
- }
-
- /**
- * Returns the float value(s) of a uniform variable.
- *
- * @param program the program object to be queried
- * @param location the location of the uniform variable to be queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static float glGetUniformf(@NativeType("GLuint") int program, @NativeType("GLint") int location) {
- return GL20C.glGetUniformf(program, location);
- }
-
- // --- [ glGetUniformiv ] ---
-
- /** Unsafe version of: {@link #glGetUniformiv GetUniformiv} */
- public static void nglGetUniformiv(int program, int location, long params) {
- GL20C.nglGetUniformiv(program, location, params);
- }
-
- /**
- * Returns the int value(s) of a uniform variable.
- *
- * @param program the program object to be queried
- * @param location the location of the uniform variable to be queried
- * @param params the value of the specified uniform variable
- *
- * @see Reference Page
- */
- public static void glGetUniformiv(@NativeType("GLuint") int program, @NativeType("GLint") int location, @NativeType("GLint *") IntBuffer params) {
- GL20C.glGetUniformiv(program, location, params);
- }
-
- /**
- * Returns the int value(s) of a uniform variable.
- *
- * @param program the program object to be queried
- * @param location the location of the uniform variable to be queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetUniformi(@NativeType("GLuint") int program, @NativeType("GLint") int location) {
- return GL20C.glGetUniformi(program, location);
- }
-
- // --- [ glGetShaderSource ] ---
-
- /**
- * Unsafe version of: {@link #glGetShaderSource GetShaderSource}
- *
- * @param maxLength the size of the character buffer for storing the returned source code string
- */
- public static void nglGetShaderSource(int shader, int maxLength, long length, long source) {
- GL20C.nglGetShaderSource(shader, maxLength, length, source);
- }
-
- /**
- * Returns the source code string from a shader object.
- *
- * @param shader the shader object to be queried
- * @param length the length of the string returned in source (excluding the null terminator)
- * @param source an array of characters that is used to return the source code string
- *
- * @see Reference Page
- */
- public static void glGetShaderSource(@NativeType("GLuint") int shader, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLchar *") ByteBuffer source) {
- GL20C.glGetShaderSource(shader, length, source);
- }
-
- /**
- * Returns the source code string from a shader object.
- *
- * @param shader the shader object to be queried
- * @param maxLength the size of the character buffer for storing the returned source code string
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetShaderSource(@NativeType("GLuint") int shader, @NativeType("GLsizei") int maxLength) {
- return GL20C.glGetShaderSource(shader, maxLength);
- }
-
- /**
- * Returns the source code string from a shader object.
- *
- * @param shader the shader object to be queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetShaderSource(@NativeType("GLuint") int shader) {
- return glGetShaderSource(shader, glGetShaderi(shader, GL_SHADER_SOURCE_LENGTH));
- }
-
- // --- [ glVertexAttrib1f ] ---
-
- /**
- * Specifies the value of a generic vertex attribute. The y and z components are implicitly set to 0.0f and w to 1.0f.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1f(@NativeType("GLuint") int index, @NativeType("GLfloat") float v0) {
- GL20C.glVertexAttrib1f(index, v0);
- }
-
- // --- [ glVertexAttrib1s ] ---
-
- /**
- * Short version of {@link #glVertexAttrib1f VertexAttrib1f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1s(@NativeType("GLuint") int index, @NativeType("GLshort") short v0) {
- GL20C.glVertexAttrib1s(index, v0);
- }
-
- // --- [ glVertexAttrib1d ] ---
-
- /**
- * Double version of {@link #glVertexAttrib1f VertexAttrib1f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1d(@NativeType("GLuint") int index, @NativeType("GLdouble") double v0) {
- GL20C.glVertexAttrib1d(index, v0);
- }
-
- // --- [ glVertexAttrib2f ] ---
-
- /**
- * Specifies the value of a generic vertex attribute. The y component is implicitly set to 0.0f and w to 1.0f.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2f(@NativeType("GLuint") int index, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1) {
- GL20C.glVertexAttrib2f(index, v0, v1);
- }
-
- // --- [ glVertexAttrib2s ] ---
-
- /**
- * Short version of {@link #glVertexAttrib2f VertexAttrib2f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2s(@NativeType("GLuint") int index, @NativeType("GLshort") short v0, @NativeType("GLshort") short v1) {
- GL20C.glVertexAttrib2s(index, v0, v1);
- }
-
- // --- [ glVertexAttrib2d ] ---
-
- /**
- * Double version of {@link #glVertexAttrib2f VertexAttrib2f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2d(@NativeType("GLuint") int index, @NativeType("GLdouble") double v0, @NativeType("GLdouble") double v1) {
- GL20C.glVertexAttrib2d(index, v0, v1);
- }
-
- // --- [ glVertexAttrib3f ] ---
-
- /**
- * Specifies the value of a generic vertex attribute. The w is implicitly set to 1.0f.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3f(@NativeType("GLuint") int index, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2) {
- GL20C.glVertexAttrib3f(index, v0, v1, v2);
- }
-
- // --- [ glVertexAttrib3s ] ---
-
- /**
- * Short version of {@link #glVertexAttrib3f VertexAttrib3f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3s(@NativeType("GLuint") int index, @NativeType("GLshort") short v0, @NativeType("GLshort") short v1, @NativeType("GLshort") short v2) {
- GL20C.glVertexAttrib3s(index, v0, v1, v2);
- }
-
- // --- [ glVertexAttrib3d ] ---
-
- /**
- * Double version of {@link #glVertexAttrib3f VertexAttrib3f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3d(@NativeType("GLuint") int index, @NativeType("GLdouble") double v0, @NativeType("GLdouble") double v1, @NativeType("GLdouble") double v2) {
- GL20C.glVertexAttrib3d(index, v0, v1, v2);
- }
-
- // --- [ glVertexAttrib4f ] ---
-
- /**
- * Specifies the value of a generic vertex attribute.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- * @param v3 the vertex attribute w component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4f(@NativeType("GLuint") int index, @NativeType("GLfloat") float v0, @NativeType("GLfloat") float v1, @NativeType("GLfloat") float v2, @NativeType("GLfloat") float v3) {
- GL20C.glVertexAttrib4f(index, v0, v1, v2, v3);
- }
-
- // --- [ glVertexAttrib4s ] ---
-
- /**
- * Short version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- * @param v3 the vertex attribute w component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4s(@NativeType("GLuint") int index, @NativeType("GLshort") short v0, @NativeType("GLshort") short v1, @NativeType("GLshort") short v2, @NativeType("GLshort") short v3) {
- GL20C.glVertexAttrib4s(index, v0, v1, v2, v3);
- }
-
- // --- [ glVertexAttrib4d ] ---
-
- /**
- * Double version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v0 the vertex attribute x component
- * @param v1 the vertex attribute y component
- * @param v2 the vertex attribute z component
- * @param v3 the vertex attribute w component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4d(@NativeType("GLuint") int index, @NativeType("GLdouble") double v0, @NativeType("GLdouble") double v1, @NativeType("GLdouble") double v2, @NativeType("GLdouble") double v3) {
- GL20C.glVertexAttrib4d(index, v0, v1, v2, v3);
- }
-
- // --- [ glVertexAttrib4Nub ] ---
-
- /**
- * Normalized unsigned byte version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param x the vertex attribute x component
- * @param y the vertex attribute y component
- * @param z the vertex attribute z component
- * @param w the vertex attribute w component
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nub(@NativeType("GLuint") int index, @NativeType("GLubyte") byte x, @NativeType("GLubyte") byte y, @NativeType("GLubyte") byte z, @NativeType("GLubyte") byte w) {
- GL20C.glVertexAttrib4Nub(index, x, y, z, w);
- }
-
- // --- [ glVertexAttrib1fv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib1fv VertexAttrib1fv} */
- public static void nglVertexAttrib1fv(int index, long v) {
- GL20C.nglVertexAttrib1fv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib1f VertexAttrib1f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") FloatBuffer v) {
- GL20C.glVertexAttrib1fv(index, v);
- }
-
- // --- [ glVertexAttrib1sv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib1sv VertexAttrib1sv} */
- public static void nglVertexAttrib1sv(int index, long v) {
- GL20C.nglVertexAttrib1sv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib1s VertexAttrib1s}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") ShortBuffer v) {
- GL20C.glVertexAttrib1sv(index, v);
- }
-
- // --- [ glVertexAttrib1dv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib1dv VertexAttrib1dv} */
- public static void nglVertexAttrib1dv(int index, long v) {
- GL20C.nglVertexAttrib1dv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib1d VertexAttrib1d}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") DoubleBuffer v) {
- GL20C.glVertexAttrib1dv(index, v);
- }
-
- // --- [ glVertexAttrib2fv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib2fv VertexAttrib2fv} */
- public static void nglVertexAttrib2fv(int index, long v) {
- GL20C.nglVertexAttrib2fv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib2f VertexAttrib2f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") FloatBuffer v) {
- GL20C.glVertexAttrib2fv(index, v);
- }
-
- // --- [ glVertexAttrib2sv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib2sv VertexAttrib2sv} */
- public static void nglVertexAttrib2sv(int index, long v) {
- GL20C.nglVertexAttrib2sv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib2s VertexAttrib2s}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") ShortBuffer v) {
- GL20C.glVertexAttrib2sv(index, v);
- }
-
- // --- [ glVertexAttrib2dv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib2dv VertexAttrib2dv} */
- public static void nglVertexAttrib2dv(int index, long v) {
- GL20C.nglVertexAttrib2dv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib2d VertexAttrib2d}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") DoubleBuffer v) {
- GL20C.glVertexAttrib2dv(index, v);
- }
-
- // --- [ glVertexAttrib3fv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib3fv VertexAttrib3fv} */
- public static void nglVertexAttrib3fv(int index, long v) {
- GL20C.nglVertexAttrib3fv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib3f VertexAttrib3f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") FloatBuffer v) {
- GL20C.glVertexAttrib3fv(index, v);
- }
-
- // --- [ glVertexAttrib3sv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib3sv VertexAttrib3sv} */
- public static void nglVertexAttrib3sv(int index, long v) {
- GL20C.nglVertexAttrib3sv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib3s VertexAttrib3s}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") ShortBuffer v) {
- GL20C.glVertexAttrib3sv(index, v);
- }
-
- // --- [ glVertexAttrib3dv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib3dv VertexAttrib3dv} */
- public static void nglVertexAttrib3dv(int index, long v) {
- GL20C.nglVertexAttrib3dv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib3d VertexAttrib3d}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") DoubleBuffer v) {
- GL20C.glVertexAttrib3dv(index, v);
- }
-
- // --- [ glVertexAttrib4fv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4fv VertexAttrib4fv} */
- public static void nglVertexAttrib4fv(int index, long v) {
- GL20C.nglVertexAttrib4fv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") FloatBuffer v) {
- GL20C.glVertexAttrib4fv(index, v);
- }
-
- // --- [ glVertexAttrib4sv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4sv VertexAttrib4sv} */
- public static void nglVertexAttrib4sv(int index, long v) {
- GL20C.nglVertexAttrib4sv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib4s VertexAttrib4s}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") ShortBuffer v) {
- GL20C.glVertexAttrib4sv(index, v);
- }
-
- // --- [ glVertexAttrib4dv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4dv VertexAttrib4dv} */
- public static void nglVertexAttrib4dv(int index, long v) {
- GL20C.nglVertexAttrib4dv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib4d VertexAttrib4d}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") DoubleBuffer v) {
- GL20C.glVertexAttrib4dv(index, v);
- }
-
- // --- [ glVertexAttrib4iv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4iv VertexAttrib4iv} */
- public static void nglVertexAttrib4iv(int index, long v) {
- GL20C.nglVertexAttrib4iv(index, v);
- }
-
- /**
- * Integer pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4iv(@NativeType("GLuint") int index, @NativeType("GLint const *") IntBuffer v) {
- GL20C.glVertexAttrib4iv(index, v);
- }
-
- // --- [ glVertexAttrib4bv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4bv VertexAttrib4bv} */
- public static void nglVertexAttrib4bv(int index, long v) {
- GL20C.nglVertexAttrib4bv(index, v);
- }
-
- /**
- * Byte pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4bv(@NativeType("GLuint") int index, @NativeType("GLbyte const *") ByteBuffer v) {
- GL20C.glVertexAttrib4bv(index, v);
- }
-
- // --- [ glVertexAttrib4ubv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4ubv VertexAttrib4ubv} */
- public static void nglVertexAttrib4ubv(int index, long v) {
- GL20C.nglVertexAttrib4ubv(index, v);
- }
-
- /**
- * Pointer version of {@link #glVertexAttrib4Nub VertexAttrib4Nub}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4ubv(@NativeType("GLuint") int index, @NativeType("GLubyte const *") ByteBuffer v) {
- GL20C.glVertexAttrib4ubv(index, v);
- }
-
- // --- [ glVertexAttrib4usv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4usv VertexAttrib4usv} */
- public static void nglVertexAttrib4usv(int index, long v) {
- GL20C.nglVertexAttrib4usv(index, v);
- }
-
- /**
- * Unsigned short pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4usv(@NativeType("GLuint") int index, @NativeType("GLushort const *") ShortBuffer v) {
- GL20C.glVertexAttrib4usv(index, v);
- }
-
- // --- [ glVertexAttrib4uiv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4uiv VertexAttrib4uiv} */
- public static void nglVertexAttrib4uiv(int index, long v) {
- GL20C.nglVertexAttrib4uiv(index, v);
- }
-
- /**
- * Unsigned int pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4uiv(@NativeType("GLuint") int index, @NativeType("GLuint const *") IntBuffer v) {
- GL20C.glVertexAttrib4uiv(index, v);
- }
-
- // --- [ glVertexAttrib4Nbv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Nbv VertexAttrib4Nbv} */
- public static void nglVertexAttrib4Nbv(int index, long v) {
- GL20C.nglVertexAttrib4Nbv(index, v);
- }
-
- /**
- * Normalized byte pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nbv(@NativeType("GLuint") int index, @NativeType("GLbyte const *") ByteBuffer v) {
- GL20C.glVertexAttrib4Nbv(index, v);
- }
-
- // --- [ glVertexAttrib4Nsv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Nsv VertexAttrib4Nsv} */
- public static void nglVertexAttrib4Nsv(int index, long v) {
- GL20C.nglVertexAttrib4Nsv(index, v);
- }
-
- /**
- * Normalized short pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nsv(@NativeType("GLuint") int index, @NativeType("GLshort const *") ShortBuffer v) {
- GL20C.glVertexAttrib4Nsv(index, v);
- }
-
- // --- [ glVertexAttrib4Niv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Niv VertexAttrib4Niv} */
- public static void nglVertexAttrib4Niv(int index, long v) {
- GL20C.nglVertexAttrib4Niv(index, v);
- }
-
- /**
- * Normalized int pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Niv(@NativeType("GLuint") int index, @NativeType("GLint const *") IntBuffer v) {
- GL20C.glVertexAttrib4Niv(index, v);
- }
-
- // --- [ glVertexAttrib4Nubv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Nubv VertexAttrib4Nubv} */
- public static void nglVertexAttrib4Nubv(int index, long v) {
- GL20C.nglVertexAttrib4Nubv(index, v);
- }
-
- /**
- * Normalized unsigned byte pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nubv(@NativeType("GLuint") int index, @NativeType("GLubyte const *") ByteBuffer v) {
- GL20C.glVertexAttrib4Nubv(index, v);
- }
-
- // --- [ glVertexAttrib4Nusv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Nusv VertexAttrib4Nusv} */
- public static void nglVertexAttrib4Nusv(int index, long v) {
- GL20C.nglVertexAttrib4Nusv(index, v);
- }
-
- /**
- * Normalized unsigned short pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nusv(@NativeType("GLuint") int index, @NativeType("GLushort const *") ShortBuffer v) {
- GL20C.glVertexAttrib4Nusv(index, v);
- }
-
- // --- [ glVertexAttrib4Nuiv ] ---
-
- /** Unsafe version of: {@link #glVertexAttrib4Nuiv VertexAttrib4Nuiv} */
- public static void nglVertexAttrib4Nuiv(int index, long v) {
- GL20C.nglVertexAttrib4Nuiv(index, v);
- }
-
- /**
- * Normalized unsigned int pointer version of {@link #glVertexAttrib4f VertexAttrib4f}.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param v the vertex attribute buffer
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nuiv(@NativeType("GLuint") int index, @NativeType("GLuint const *") IntBuffer v) {
- GL20C.glVertexAttrib4Nuiv(index, v);
- }
-
- // --- [ glVertexAttribPointer ] ---
-
- /** Unsafe version of: {@link #glVertexAttribPointer VertexAttribPointer} */
- public static void nglVertexAttribPointer(int index, int size, int type, boolean normalized, int stride, long pointer) {
- GL20C.nglVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param size the number of values per vertex that are stored in the array. The initial value is 4. One of:
| 1 | 2 | 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of each component in the array. The initial value is GL_FLOAT. One of:
| {@link GL11#GL_BYTE BYTE} | {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_SHORT SHORT} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_INT INT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11#GL_FLOAT FLOAT} |
| {@link GL11#GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} | {@link GL41#GL_FIXED FIXED} |
- * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed
- * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in
- * the array. The initial value is 0.
- * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer
- * currently bound to the {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0.
- *
- * @see Reference Page
- */
- public static void glVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLboolean") boolean normalized, @NativeType("GLsizei") int stride, @NativeType("void const *") ByteBuffer pointer) {
- GL20C.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param size the number of values per vertex that are stored in the array. The initial value is 4. One of:
| 1 | 2 | 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of each component in the array. The initial value is GL_FLOAT. One of:
| {@link GL11#GL_BYTE BYTE} | {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_SHORT SHORT} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_INT INT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11#GL_FLOAT FLOAT} |
| {@link GL11#GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} | {@link GL41#GL_FIXED FIXED} |
- * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed
- * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in
- * the array. The initial value is 0.
- * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer
- * currently bound to the {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0.
- *
- * @see Reference Page
- */
- public static void glVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLboolean") boolean normalized, @NativeType("GLsizei") int stride, @NativeType("void const *") long pointer) {
- GL20C.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param size the number of values per vertex that are stored in the array. The initial value is 4. One of:
| 1 | 2 | 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of each component in the array. The initial value is GL_FLOAT. One of:
| {@link GL11#GL_BYTE BYTE} | {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_SHORT SHORT} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_INT INT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11#GL_FLOAT FLOAT} |
| {@link GL11#GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} | {@link GL41#GL_FIXED FIXED} |
- * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed
- * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in
- * the array. The initial value is 0.
- * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer
- * currently bound to the {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0.
- *
- * @see Reference Page
- */
- public static void glVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLboolean") boolean normalized, @NativeType("GLsizei") int stride, @NativeType("void const *") ShortBuffer pointer) {
- GL20C.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param size the number of values per vertex that are stored in the array. The initial value is 4. One of:
| 1 | 2 | 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of each component in the array. The initial value is GL_FLOAT. One of:
| {@link GL11#GL_BYTE BYTE} | {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_SHORT SHORT} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_INT INT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11#GL_FLOAT FLOAT} |
| {@link GL11#GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} | {@link GL41#GL_FIXED FIXED} |
- * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed
- * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in
- * the array. The initial value is 0.
- * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer
- * currently bound to the {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0.
- *
- * @see Reference Page
- */
- public static void glVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLboolean") boolean normalized, @NativeType("GLsizei") int stride, @NativeType("void const *") IntBuffer pointer) {
- GL20C.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- /**
- * Specifies the location and organization of a vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be modified
- * @param size the number of values per vertex that are stored in the array. The initial value is 4. One of:
| 1 | 2 | 3 | 4 | {@link GL12#GL_BGRA BGRA} |
- * @param type the data type of each component in the array. The initial value is GL_FLOAT. One of:
| {@link GL11#GL_BYTE BYTE} | {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_SHORT SHORT} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_INT INT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} | {@link GL30#GL_HALF_FLOAT HALF_FLOAT} | {@link GL11#GL_FLOAT FLOAT} |
| {@link GL11#GL_DOUBLE DOUBLE} | {@link GL12#GL_UNSIGNED_INT_2_10_10_10_REV UNSIGNED_INT_2_10_10_10_REV} | {@link GL33#GL_INT_2_10_10_10_REV INT_2_10_10_10_REV} | {@link GL41#GL_FIXED FIXED} |
- * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed
- * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in
- * the array. The initial value is 0.
- * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer
- * currently bound to the {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0.
- *
- * @see Reference Page
- */
- public static void glVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLint") int size, @NativeType("GLenum") int type, @NativeType("GLboolean") boolean normalized, @NativeType("GLsizei") int stride, @NativeType("void const *") FloatBuffer pointer) {
- GL20C.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
- }
-
- // --- [ glEnableVertexAttribArray ] ---
-
- /**
- * Enables a generic vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be enabled
- *
- * @see Reference Page
- */
- public static void glEnableVertexAttribArray(@NativeType("GLuint") int index) {
- GL20C.glEnableVertexAttribArray(index);
- }
-
- // --- [ glDisableVertexAttribArray ] ---
-
- /**
- * Disables a generic vertex attribute array.
- *
- * @param index the index of the generic vertex attribute to be disabled
- *
- * @see Reference Page
- */
- public static void glDisableVertexAttribArray(@NativeType("GLuint") int index) {
- GL20C.glDisableVertexAttribArray(index);
- }
-
- // --- [ glBindAttribLocation ] ---
-
- /** Unsafe version of: {@link #glBindAttribLocation BindAttribLocation} */
- public static void nglBindAttribLocation(int program, int index, long name) {
- GL20C.nglBindAttribLocation(program, index, name);
- }
-
- /**
- * Associates a generic vertex attribute index with a named attribute variable.
- *
- * @param program the program object in which the association is to be made
- * @param index the index of the generic vertex attribute to be bound
- * @param name a null terminated string containing the name of the vertex shader attribute variable to which {@code index} is to be bound
- *
- * @see Reference Page
- */
- public static void glBindAttribLocation(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLchar const *") ByteBuffer name) {
- GL20C.glBindAttribLocation(program, index, name);
- }
-
- /**
- * Associates a generic vertex attribute index with a named attribute variable.
- *
- * @param program the program object in which the association is to be made
- * @param index the index of the generic vertex attribute to be bound
- * @param name a null terminated string containing the name of the vertex shader attribute variable to which {@code index} is to be bound
- *
- * @see Reference Page
- */
- public static void glBindAttribLocation(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLchar const *") CharSequence name) {
- GL20C.glBindAttribLocation(program, index, name);
- }
-
- // --- [ glGetActiveAttrib ] ---
-
- /**
- * Unsafe version of: {@link #glGetActiveAttrib GetActiveAttrib}
- *
- * @param maxLength the maximum number of characters OpenGL is allowed to write in the character buffer indicated by {@code name}
- */
- public static void nglGetActiveAttrib(int program, int index, int maxLength, long length, long size, long type, long name) {
- GL20C.nglGetActiveAttrib(program, index, maxLength, length, size, type, name);
- }
-
- /**
- * Returns information about an active attribute variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the attribute variable to be queried
- * @param length the number of characters actually written by OpenGL in the string indicated by {@code name} (excluding the null terminator) if a value other than
- * {@code NULL} is passed
- * @param size the size of the attribute variable
- * @param type the data type of the attribute variable
- * @param name a null terminated string containing the name of the attribute variable
- *
- * @see Reference Page
- */
- public static void glGetActiveAttrib(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type, @NativeType("GLchar *") ByteBuffer name) {
- GL20C.glGetActiveAttrib(program, index, length, size, type, name);
- }
-
- /**
- * Returns information about an active attribute variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the attribute variable to be queried
- * @param maxLength the maximum number of characters OpenGL is allowed to write in the character buffer indicated by {@code name}
- * @param size the size of the attribute variable
- * @param type the data type of the attribute variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetActiveAttrib(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLsizei") int maxLength, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- return GL20C.glGetActiveAttrib(program, index, maxLength, size, type);
- }
-
- /**
- * Returns information about an active attribute variable for the specified program object.
- *
- * @param program the program object to be queried
- * @param index the index of the attribute variable to be queried
- * @param size the size of the attribute variable
- * @param type the data type of the attribute variable
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static String glGetActiveAttrib(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @NativeType("GLint *") IntBuffer size, @NativeType("GLenum *") IntBuffer type) {
- return glGetActiveAttrib(program, index, glGetProgrami(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH), size, type);
- }
-
- // --- [ glGetAttribLocation ] ---
-
- /** Unsafe version of: {@link #glGetAttribLocation GetAttribLocation} */
- public static int nglGetAttribLocation(int program, long name) {
- return GL20C.nglGetAttribLocation(program, name);
- }
-
- /**
- * Returns the location of an attribute variable.
- *
- * @param program the program object to be queried
- * @param name a null terminated string containing the name of the attribute variable whose location is to be queried
- *
- * @see Reference Page
- */
- @NativeType("GLint")
- public static int glGetAttribLocation(@NativeType("GLuint") int program, @NativeType("GLchar const *") ByteBuffer name) {
- return GL20C.glGetAttribLocation(program, name);
- }
-
- /**
- * Returns the location of an attribute variable.
- *
- * @param program the program object to be queried
- * @param name a null terminated string containing the name of the attribute variable whose location is to be queried
- *
- * @see Reference Page
- */
- @NativeType("GLint")
- public static int glGetAttribLocation(@NativeType("GLuint") int program, @NativeType("GLchar const *") CharSequence name) {
- return GL20C.glGetAttribLocation(program, name);
- }
-
- // --- [ glGetVertexAttribiv ] ---
-
- /** Unsafe version of: {@link #glGetVertexAttribiv GetVertexAttribiv} */
- public static void nglGetVertexAttribiv(int index, int pname, long params) {
- GL20C.nglGetVertexAttribiv(index, pname, params);
- }
-
- /**
- * Returns the integer value of a generic vertex attribute parameter.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the vertex attribute parameter to be queried. One of:
| {@link GL15#GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING VERTEX_ATTRIB_ARRAY_BUFFER_BINDING} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_ENABLED VERTEX_ATTRIB_ARRAY_ENABLED} |
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_SIZE VERTEX_ATTRIB_ARRAY_SIZE} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_STRIDE VERTEX_ATTRIB_ARRAY_STRIDE} |
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_TYPE VERTEX_ATTRIB_ARRAY_TYPE} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_NORMALIZED VERTEX_ATTRIB_ARRAY_NORMALIZED} |
| {@link GL20C#GL_CURRENT_VERTEX_ATTRIB CURRENT_VERTEX_ATTRIB} | {@link GL30#GL_VERTEX_ATTRIB_ARRAY_INTEGER VERTEX_ATTRIB_ARRAY_INTEGER} |
| {@link GL33#GL_VERTEX_ATTRIB_ARRAY_DIVISOR VERTEX_ATTRIB_ARRAY_DIVISOR} |
- * @param params returns the requested data
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribiv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
- GL20C.glGetVertexAttribiv(index, pname, params);
- }
-
- /**
- * Returns the integer value of a generic vertex attribute parameter.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the vertex attribute parameter to be queried. One of:
| {@link GL15#GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING VERTEX_ATTRIB_ARRAY_BUFFER_BINDING} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_ENABLED VERTEX_ATTRIB_ARRAY_ENABLED} |
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_SIZE VERTEX_ATTRIB_ARRAY_SIZE} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_STRIDE VERTEX_ATTRIB_ARRAY_STRIDE} |
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_TYPE VERTEX_ATTRIB_ARRAY_TYPE} | {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_NORMALIZED VERTEX_ATTRIB_ARRAY_NORMALIZED} |
| {@link GL20C#GL_CURRENT_VERTEX_ATTRIB CURRENT_VERTEX_ATTRIB} | {@link GL30#GL_VERTEX_ATTRIB_ARRAY_INTEGER VERTEX_ATTRIB_ARRAY_INTEGER} |
| {@link GL33#GL_VERTEX_ATTRIB_ARRAY_DIVISOR VERTEX_ATTRIB_ARRAY_DIVISOR} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetVertexAttribi(@NativeType("GLuint") int index, @NativeType("GLenum") int pname) {
- return GL20C.glGetVertexAttribi(index, pname);
- }
-
- // --- [ glGetVertexAttribfv ] ---
-
- /** Unsafe version of: {@link #glGetVertexAttribfv GetVertexAttribfv} */
- public static void nglGetVertexAttribfv(int index, int pname, long params) {
- GL20C.nglGetVertexAttribfv(index, pname, params);
- }
-
- /**
- * Float version of {@link #glGetVertexAttribiv GetVertexAttribiv}.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the vertex attribute parameter to be queried
- * @param params returns the requested data
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribfv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLfloat *") FloatBuffer params) {
- GL20C.glGetVertexAttribfv(index, pname, params);
- }
-
- // --- [ glGetVertexAttribdv ] ---
-
- /** Unsafe version of: {@link #glGetVertexAttribdv GetVertexAttribdv} */
- public static void nglGetVertexAttribdv(int index, int pname, long params) {
- GL20C.nglGetVertexAttribdv(index, pname, params);
- }
-
- /**
- * Double version of {@link #glGetVertexAttribiv GetVertexAttribiv}.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the vertex attribute parameter to be queried
- * @param params returns the requested data
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribdv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLdouble *") DoubleBuffer params) {
- GL20C.glGetVertexAttribdv(index, pname, params);
- }
-
- // --- [ glGetVertexAttribPointerv ] ---
-
- /** Unsafe version of: {@link #glGetVertexAttribPointerv GetVertexAttribPointerv} */
- public static void nglGetVertexAttribPointerv(int index, int pname, long pointer) {
- GL20C.nglGetVertexAttribPointerv(index, pname, pointer);
- }
-
- /**
- * Returns the address of the specified generic vertex attribute pointer.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the generic vertex attribute parameter to be returned. Must be:
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_POINTER VERTEX_ATTRIB_ARRAY_POINTER} |
- * @param pointer the pointer value
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribPointerv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("void **") PointerBuffer pointer) {
- GL20C.glGetVertexAttribPointerv(index, pname, pointer);
- }
-
- /**
- * Returns the address of the specified generic vertex attribute pointer.
- *
- * @param index the generic vertex attribute parameter to be queried
- * @param pname the symbolic name of the generic vertex attribute parameter to be returned. Must be:
| {@link GL20C#GL_VERTEX_ATTRIB_ARRAY_POINTER VERTEX_ATTRIB_ARRAY_POINTER} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetVertexAttribPointer(@NativeType("GLuint") int index, @NativeType("GLenum") int pname) {
- return GL20C.glGetVertexAttribPointer(index, pname);
- }
-
- // --- [ glDrawBuffers ] ---
-
- /**
- * Unsafe version of: {@link #glDrawBuffers DrawBuffers}
- *
- * @param n the number of buffers in {@code bufs}
- */
- public static void nglDrawBuffers(int n, long bufs) {
- GL20C.nglDrawBuffers(n, bufs);
- }
-
- /**
- * Specifies a list of color buffers to be drawn into.
- *
- * @param bufs an array of symbolic constants specifying the buffers into which fragment colors or data values will be written. One of:
| {@link GL11#GL_NONE NONE} | {@link GL11#GL_FRONT_LEFT FRONT_LEFT} | {@link GL11#GL_FRONT_RIGHT FRONT_RIGHT} | {@link GL11#GL_BACK_LEFT BACK_LEFT} | {@link GL11#GL_BACK_RIGHT BACK_RIGHT} | {@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0} |
| GL30.GL_COLOR_ATTACHMENT[1-15] |
- *
- * @see Reference Page
- */
- public static void glDrawBuffers(@NativeType("GLenum const *") IntBuffer bufs) {
- GL20C.glDrawBuffers(bufs);
- }
-
- /**
- * Specifies a list of color buffers to be drawn into.
- *
- * @see Reference Page
- */
- public static void glDrawBuffers(@NativeType("GLenum const *") int buf) {
- GL20C.glDrawBuffers(buf);
- }
-
- // --- [ glBlendEquationSeparate ] ---
-
- /**
- * Sets the RGB blend equation and the alpha blend equation separately.
- *
- * @param modeRGB the RGB blend equation, how the red, green, and blue components of the source and destination colors are combined. One of:
| {@link GL14#GL_FUNC_ADD FUNC_ADD} | {@link GL14#GL_FUNC_SUBTRACT FUNC_SUBTRACT} | {@link GL14#GL_FUNC_REVERSE_SUBTRACT FUNC_REVERSE_SUBTRACT} | {@link GL14#GL_MIN MIN} | {@link GL14#GL_MAX MAX} |
- * @param modeAlpha the alpha blend equation, how the alpha component of the source and destination colors are combined
- *
- * @see Reference Page
- */
- public static void glBlendEquationSeparate(@NativeType("GLenum") int modeRGB, @NativeType("GLenum") int modeAlpha) {
- GL20C.glBlendEquationSeparate(modeRGB, modeAlpha);
- }
-
- // --- [ glStencilOpSeparate ] ---
-
- /**
- * Sets front and/or back stencil test actions.
- *
- * @param face whether front and/or back stencil state is updated. One of:
| {@link GL11#GL_FRONT FRONT} | {@link GL11#GL_BACK BACK} | {@link GL11#GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param sfail the action to take when the stencil test fails. The initial value is GL_KEEP. One of:
| {@link GL11#GL_KEEP KEEP} | {@link GL11#GL_ZERO ZERO} | {@link GL11#GL_REPLACE REPLACE} | {@link GL11#GL_INCR INCR} | {@link GL14#GL_INCR_WRAP INCR_WRAP} | {@link GL11#GL_DECR DECR} | {@link GL14#GL_DECR_WRAP DECR_WRAP} | {@link GL11#GL_INVERT INVERT} |
- * @param dpfail the stencil action when the stencil test passes, but the depth test fails. The initial value is GL_KEEP
- * @param dppass the stencil action when both the stencil test and the depth test pass, or when the stencil test passes and either there is no depth buffer or depth
- * testing is not enabled. The initial value is GL_KEEP
- *
- * @see Reference Page
- */
- public static void glStencilOpSeparate(@NativeType("GLenum") int face, @NativeType("GLenum") int sfail, @NativeType("GLenum") int dpfail, @NativeType("GLenum") int dppass) {
- GL20C.glStencilOpSeparate(face, sfail, dpfail, dppass);
- }
-
- // --- [ glStencilFuncSeparate ] ---
-
- /**
- * Sets front and/or back function and reference value for stencil testing.
- *
- * @param face whether front and/or back stencil state is updated. One of:
| {@link GL11#GL_FRONT FRONT} | {@link GL11#GL_BACK BACK} | {@link GL11#GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param func the test function. The initial value is GL_ALWAYS. One of:
| {@link GL11#GL_NEVER NEVER} | {@link GL11#GL_LESS LESS} | {@link GL11#GL_LEQUAL LEQUAL} | {@link GL11#GL_GREATER GREATER} | {@link GL11#GL_GEQUAL GEQUAL} | {@link GL11#GL_EQUAL EQUAL} | {@link GL11#GL_NOTEQUAL NOTEQUAL} | {@link GL11#GL_ALWAYS ALWAYS} |
- * @param ref the reference value for the stencil test. {@code ref} is clamped to the range [0, 2n – 1], where {@code n} is the number of bitplanes in the stencil
- * buffer. The initial value is 0.
- * @param mask a mask that is ANDed with both the reference value and the stored stencil value when the test is done. The initial value is all 1's.
- *
- * @see Reference Page
- */
- public static void glStencilFuncSeparate(@NativeType("GLenum") int face, @NativeType("GLenum") int func, @NativeType("GLint") int ref, @NativeType("GLuint") int mask) {
- GL20C.glStencilFuncSeparate(face, func, ref, mask);
- }
-
- // --- [ glStencilMaskSeparate ] ---
-
- /**
- * Controls the front and/or back writing of individual bits in the stencil planes.
- *
- * @param face whether front and/or back stencil writemask is updated. One of:
| {@link GL11#GL_FRONT FRONT} | {@link GL11#GL_BACK BACK} | {@link GL11#GL_FRONT_AND_BACK FRONT_AND_BACK} |
- * @param mask a bit mask to enable and disable writing of individual bits in the stencil planes. Initially, the mask is all 1's.
- *
- * @see Reference Page
- */
- public static void glStencilMaskSeparate(@NativeType("GLenum") int face, @NativeType("GLuint") int mask) {
- GL20C.glStencilMaskSeparate(face, mask);
- }
-
- /**
- * Array version of: {@link #glShaderSource ShaderSource}
- *
- * @see Reference Page
- */
- public static void glShaderSource(@NativeType("GLuint") int shader, @NativeType("GLchar const **") PointerBuffer strings, @Nullable @NativeType("GLint const *") int[] length) {
- GL20C.glShaderSource(shader, strings, length);
- }
-
- /**
- * Array version of: {@link #glUniform1fv Uniform1fv}
- *
- * @see Reference Page
- */
- public static void glUniform1fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniform1fv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform2fv Uniform2fv}
- *
- * @see Reference Page
- */
- public static void glUniform2fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniform2fv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform3fv Uniform3fv}
- *
- * @see Reference Page
- */
- public static void glUniform3fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniform3fv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform4fv Uniform4fv}
- *
- * @see Reference Page
- */
- public static void glUniform4fv(@NativeType("GLint") int location, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniform4fv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform1iv Uniform1iv}
- *
- * @see Reference Page
- */
- public static void glUniform1iv(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- GL20C.glUniform1iv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform2iv Uniform2iv}
- *
- * @see Reference Page
- */
- public static void glUniform2iv(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- GL20C.glUniform2iv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform3iv Uniform3iv}
- *
- * @see Reference Page
- */
- public static void glUniform3iv(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- GL20C.glUniform3iv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniform4iv Uniform4iv}
- *
- * @see Reference Page
- */
- public static void glUniform4iv(@NativeType("GLint") int location, @NativeType("GLint const *") int[] value) {
- GL20C.glUniform4iv(location, value);
- }
-
- /**
- * Array version of: {@link #glUniformMatrix2fv UniformMatrix2fv}
- *
- * @see Reference Page
- */
- public static void glUniformMatrix2fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniformMatrix2fv(location, transpose, value);
- }
-
- /**
- * Array version of: {@link #glUniformMatrix3fv UniformMatrix3fv}
- *
- * @see Reference Page
- */
- public static void glUniformMatrix3fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniformMatrix3fv(location, transpose, value);
- }
-
- /**
- * Array version of: {@link #glUniformMatrix4fv UniformMatrix4fv}
- *
- * @see Reference Page
- */
- public static void glUniformMatrix4fv(@NativeType("GLint") int location, @NativeType("GLboolean") boolean transpose, @NativeType("GLfloat const *") float[] value) {
- GL20C.glUniformMatrix4fv(location, transpose, value);
- }
-
- /**
- * Array version of: {@link #glGetShaderiv GetShaderiv}
- *
- * @see Reference Page
- */
- public static void glGetShaderiv(@NativeType("GLuint") int shader, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL20C.glGetShaderiv(shader, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetProgramiv GetProgramiv}
- *
- * @see Reference Page
- */
- public static void glGetProgramiv(@NativeType("GLuint") int program, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL20C.glGetProgramiv(program, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetShaderInfoLog GetShaderInfoLog}
- *
- * @see Reference Page
- */
- public static void glGetShaderInfoLog(@NativeType("GLuint") int shader, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLchar *") ByteBuffer infoLog) {
- GL20C.glGetShaderInfoLog(shader, length, infoLog);
- }
-
- /**
- * Array version of: {@link #glGetProgramInfoLog GetProgramInfoLog}
- *
- * @see Reference Page
- */
- public static void glGetProgramInfoLog(@NativeType("GLuint") int program, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLchar *") ByteBuffer infoLog) {
- GL20C.glGetProgramInfoLog(program, length, infoLog);
- }
-
- /**
- * Array version of: {@link #glGetAttachedShaders GetAttachedShaders}
- *
- * @see Reference Page
- */
- public static void glGetAttachedShaders(@NativeType("GLuint") int program, @Nullable @NativeType("GLsizei *") int[] count, @NativeType("GLuint *") int[] shaders) {
- GL20C.glGetAttachedShaders(program, count, shaders);
- }
-
- /**
- * Array version of: {@link #glGetActiveUniform GetActiveUniform}
- *
- * @see Reference Page
- */
- public static void glGetActiveUniform(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLint *") int[] size, @NativeType("GLenum *") int[] type, @NativeType("GLchar *") ByteBuffer name) {
- GL20C.glGetActiveUniform(program, index, length, size, type, name);
- }
-
- /**
- * Array version of: {@link #glGetUniformfv GetUniformfv}
- *
- * @see Reference Page
- */
- public static void glGetUniformfv(@NativeType("GLuint") int program, @NativeType("GLint") int location, @NativeType("GLfloat *") float[] params) {
- GL20C.glGetUniformfv(program, location, params);
- }
-
- /**
- * Array version of: {@link #glGetUniformiv GetUniformiv}
- *
- * @see Reference Page
- */
- public static void glGetUniformiv(@NativeType("GLuint") int program, @NativeType("GLint") int location, @NativeType("GLint *") int[] params) {
- GL20C.glGetUniformiv(program, location, params);
- }
-
- /**
- * Array version of: {@link #glGetShaderSource GetShaderSource}
- *
- * @see Reference Page
- */
- public static void glGetShaderSource(@NativeType("GLuint") int shader, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLchar *") ByteBuffer source) {
- GL20C.glGetShaderSource(shader, length, source);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib1fv VertexAttrib1fv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") float[] v) {
- GL20C.glVertexAttrib1fv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib1sv VertexAttrib1sv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") short[] v) {
- GL20C.glVertexAttrib1sv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib1dv VertexAttrib1dv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib1dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") double[] v) {
- GL20C.glVertexAttrib1dv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib2fv VertexAttrib2fv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") float[] v) {
- GL20C.glVertexAttrib2fv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib2sv VertexAttrib2sv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") short[] v) {
- GL20C.glVertexAttrib2sv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib2dv VertexAttrib2dv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib2dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") double[] v) {
- GL20C.glVertexAttrib2dv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib3fv VertexAttrib3fv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") float[] v) {
- GL20C.glVertexAttrib3fv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib3sv VertexAttrib3sv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") short[] v) {
- GL20C.glVertexAttrib3sv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib3dv VertexAttrib3dv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib3dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") double[] v) {
- GL20C.glVertexAttrib3dv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4fv VertexAttrib4fv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4fv(@NativeType("GLuint") int index, @NativeType("GLfloat const *") float[] v) {
- GL20C.glVertexAttrib4fv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4sv VertexAttrib4sv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4sv(@NativeType("GLuint") int index, @NativeType("GLshort const *") short[] v) {
- GL20C.glVertexAttrib4sv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4dv VertexAttrib4dv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4dv(@NativeType("GLuint") int index, @NativeType("GLdouble const *") double[] v) {
- GL20C.glVertexAttrib4dv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4iv VertexAttrib4iv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4iv(@NativeType("GLuint") int index, @NativeType("GLint const *") int[] v) {
- GL20C.glVertexAttrib4iv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4usv VertexAttrib4usv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4usv(@NativeType("GLuint") int index, @NativeType("GLushort const *") short[] v) {
- GL20C.glVertexAttrib4usv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4uiv VertexAttrib4uiv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4uiv(@NativeType("GLuint") int index, @NativeType("GLuint const *") int[] v) {
- GL20C.glVertexAttrib4uiv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4Nsv VertexAttrib4Nsv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nsv(@NativeType("GLuint") int index, @NativeType("GLshort const *") short[] v) {
- GL20C.glVertexAttrib4Nsv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4Niv VertexAttrib4Niv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Niv(@NativeType("GLuint") int index, @NativeType("GLint const *") int[] v) {
- GL20C.glVertexAttrib4Niv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4Nusv VertexAttrib4Nusv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nusv(@NativeType("GLuint") int index, @NativeType("GLushort const *") short[] v) {
- GL20C.glVertexAttrib4Nusv(index, v);
- }
-
- /**
- * Array version of: {@link #glVertexAttrib4Nuiv VertexAttrib4Nuiv}
- *
- * @see Reference Page
- */
- public static void glVertexAttrib4Nuiv(@NativeType("GLuint") int index, @NativeType("GLuint const *") int[] v) {
- GL20C.glVertexAttrib4Nuiv(index, v);
- }
-
- /**
- * Array version of: {@link #glGetActiveAttrib GetActiveAttrib}
- *
- * @see Reference Page
- */
- public static void glGetActiveAttrib(@NativeType("GLuint") int program, @NativeType("GLuint") int index, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLint *") int[] size, @NativeType("GLenum *") int[] type, @NativeType("GLchar *") ByteBuffer name) {
- GL20C.glGetActiveAttrib(program, index, length, size, type, name);
- }
-
- /**
- * Array version of: {@link #glGetVertexAttribiv GetVertexAttribiv}
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribiv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
- GL20C.glGetVertexAttribiv(index, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetVertexAttribfv GetVertexAttribfv}
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribfv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLfloat *") float[] params) {
- GL20C.glGetVertexAttribfv(index, pname, params);
- }
-
- /**
- * Array version of: {@link #glGetVertexAttribdv GetVertexAttribdv}
- *
- * @see Reference Page
- */
- public static void glGetVertexAttribdv(@NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLdouble *") double[] params) {
- GL20C.glGetVertexAttribdv(index, pname, params);
- }
-
- /**
- * Array version of: {@link #glDrawBuffers DrawBuffers}
- *
- * @see Reference Page
- */
- public static void glDrawBuffers(@NativeType("GLenum const *") int[] bufs) {
- GL20C.glDrawBuffers(bufs);
- }
-
-}
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL32C.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL32C.java
deleted file mode 100644
index 7b01cfe9f..000000000
--- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GL32C.java
+++ /dev/null
@@ -1,964 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.opengl;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.*;
-
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.JNI.*;
-import static org.lwjgl.system.MemoryStack.*;
-import static org.lwjgl.system.MemoryUtil.*;
-
-/**
- * The OpenGL functionality up to version 3.2. Includes only Core Profile symbols.
- *
- * OpenGL 3.2 implementations support revision 1.50 of the OpenGL Shading Language.
- *
- * Extensions promoted to core in this release:
- *
- *
- */
-public class GL32C extends GL31C {
-
- /** Accepted by the {@code pname} parameter of GetIntegerv. */
- public static final int GL_CONTEXT_PROFILE_MASK = 0x9126;
-
- /** Context profile bits. */
- public static final int
- GL_CONTEXT_CORE_PROFILE_BIT = 0x1,
- GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x2;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122,
- GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123,
- GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124,
- GL_MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
-
- /** Accepted by the {@code mode} parameter of ProvokingVertex. */
- public static final int
- GL_FIRST_VERTEX_CONVENTION = 0x8E4D,
- GL_LAST_VERTEX_CONVENTION = 0x8E4E;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_PROVOKING_VERTEX = 0x8E4F,
- GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C;
-
- /**
- * Accepted by the {@code cap} parameter of Enable, Disable and IsEnabled, and by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv and
- * GetDoublev.
- */
- public static final int GL_TEXTURE_CUBE_MAP_SEAMLESS = 0x884F;
-
- /** Accepted by the {@code pname} parameter of GetMultisamplefv. */
- public static final int GL_SAMPLE_POSITION = 0x8E50;
-
- /**
- * Accepted by the {@code cap} parameter of Enable, Disable, and IsEnabled, and by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- * GetDoublev.
- */
- public static final int GL_SAMPLE_MASK = 0x8E51;
-
- /** Accepted by the {@code target} parameter of GetBooleani_v and GetIntegeri_v. */
- public static final int GL_SAMPLE_MASK_VALUE = 0x8E52;
-
- /** Accepted by the {@code target} parameter of BindTexture and TexImage2DMultisample. */
- public static final int GL_TEXTURE_2D_MULTISAMPLE = 0x9100;
-
- /** Accepted by the {@code target} parameter of TexImage2DMultisample. */
- public static final int GL_PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101;
-
- /** Accepted by the {@code target} parameter of BindTexture and TexImage3DMultisample. */
- public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102;
-
- /** Accepted by the {@code target} parameter of TexImage3DMultisample. */
- public static final int GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv. */
- public static final int
- GL_MAX_SAMPLE_MASK_WORDS = 0x8E59,
- GL_MAX_COLOR_TEXTURE_SAMPLES = 0x910E,
- GL_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F,
- GL_MAX_INTEGER_SAMPLES = 0x9110,
- GL_TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104,
- GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105;
-
- /** Accepted by the {@code pname} parameter of GetTexLevelParameter. */
- public static final int
- GL_TEXTURE_SAMPLES = 0x9106,
- GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107;
-
- /** Returned by the {@code type} parameter of GetActiveUniform. */
- public static final int
- GL_SAMPLER_2D_MULTISAMPLE = 0x9108,
- GL_INT_SAMPLER_2D_MULTISAMPLE = 0x9109,
- GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A,
- GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B,
- GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C,
- GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D;
-
- /**
- * Accepted by the {@code cap} parameter of Enable, Disable, and IsEnabled, and by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- * GetDoublev.
- */
- public static final int GL_DEPTH_CLAMP = 0x864F;
-
- /** Accepted by the {@code type} parameter of CreateShader and returned by the {@code params} parameter of GetShaderiv. */
- public static final int GL_GEOMETRY_SHADER = 0x8DD9;
-
- /** Accepted by the {@code pname} parameter of ProgramParameteri and GetProgramiv. */
- public static final int
- GL_GEOMETRY_VERTICES_OUT = 0x8DDA,
- GL_GEOMETRY_INPUT_TYPE = 0x8DDB,
- GL_GEOMETRY_OUTPUT_TYPE = 0x8DDC;
-
- /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */
- public static final int
- GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29,
- GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF,
- GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0,
- GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1;
-
- /** Accepted by the {@code mode} parameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements. */
- public static final int
- GL_LINES_ADJACENCY = 0xA,
- GL_LINE_STRIP_ADJACENCY = 0xB,
- GL_TRIANGLES_ADJACENCY = 0xC,
- GL_TRIANGLE_STRIP_ADJACENCY = 0xD;
-
- /** Returned by CheckFramebufferStatus. */
- public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8;
-
- /** Accepted by the {@code pname} parameter of GetFramebufferAttachment- Parameteriv. */
- public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7;
-
- /**
- * Accepted by the {@code cap} parameter of Enable, Disable, and IsEnabled, and by the {@code pname} parameter of GetIntegerv, GetFloatv, GetDoublev, and
- * GetBooleanv.
- */
- public static final int GL_PROGRAM_POINT_SIZE = 0x8642;
-
- /** Accepted as the {@code pname} parameter of GetInteger64v. */
- public static final int GL_MAX_SERVER_WAIT_TIMEOUT = 0x9111;
-
- /** Accepted as the {@code pname} parameter of GetSynciv. */
- public static final int
- GL_OBJECT_TYPE = 0x9112,
- GL_SYNC_CONDITION = 0x9113,
- GL_SYNC_STATUS = 0x9114,
- GL_SYNC_FLAGS = 0x9115;
-
- /** Returned in {@code values} for GetSynciv {@code pname} OBJECT_TYPE. */
- public static final int GL_SYNC_FENCE = 0x9116;
-
- /** Returned in {@code values} for GetSynciv {@code pname} SYNC_CONDITION. */
- public static final int GL_SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
-
- /** Returned in {@code values} for GetSynciv {@code pname} SYNC_STATUS. */
- public static final int
- GL_UNSIGNALED = 0x9118,
- GL_SIGNALED = 0x9119;
-
- /** Accepted in the {@code flags} parameter of ClientWaitSync. */
- public static final int GL_SYNC_FLUSH_COMMANDS_BIT = 0x1;
-
- /** Accepted in the {@code timeout} parameter of WaitSync. */
- public static final long GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFL;
-
- /** Returned by ClientWaitSync. */
- public static final int
- GL_ALREADY_SIGNALED = 0x911A,
- GL_TIMEOUT_EXPIRED = 0x911B,
- GL_CONDITION_SATISFIED = 0x911C,
- GL_WAIT_FAILED = 0x911D;
-
- static { GL.initialize(); }
-
- protected GL32C() {
- throw new UnsupportedOperationException();
- }
-
- // --- [ glGetBufferParameteri64v ] ---
-
- /** Unsafe version of: {@link #glGetBufferParameteri64v GetBufferParameteri64v} */
- public static native void nglGetBufferParameteri64v(int target, int pname, long params);
-
- /**
- * Returns the value of a buffer object parameter.
- *
- * @param target the target buffer object. One of:
| {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the symbolic name of a buffer object parameter. One of:
| {@link GL15#GL_BUFFER_SIZE BUFFER_SIZE} | {@link GL15#GL_BUFFER_USAGE BUFFER_USAGE} | {@link GL15#GL_BUFFER_ACCESS BUFFER_ACCESS} | {@link GL15#GL_BUFFER_MAPPED BUFFER_MAPPED} |
| {@link GL30#GL_BUFFER_ACCESS_FLAGS BUFFER_ACCESS_FLAGS} | {@link GL30#GL_BUFFER_MAP_LENGTH BUFFER_MAP_LENGTH} | {@link GL30#GL_BUFFER_MAP_OFFSET BUFFER_MAP_OFFSET} | {@link GL44#GL_BUFFER_IMMUTABLE_STORAGE BUFFER_IMMUTABLE_STORAGE} |
| {@link GL44#GL_BUFFER_STORAGE_FLAGS BUFFER_STORAGE_FLAGS} |
- * @param params the requested parameter
- *
- * @see Reference Page
- */
- public static void glGetBufferParameteri64v(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint64 *") LongBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetBufferParameteri64v(target, pname, memAddress(params));
- }
-
- /**
- * Returns the value of a buffer object parameter.
- *
- * @param target the target buffer object. One of:
| {@link GL15#GL_ARRAY_BUFFER ARRAY_BUFFER} | {@link GL15#GL_ELEMENT_ARRAY_BUFFER ELEMENT_ARRAY_BUFFER} | {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER} | {@link GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER} |
| {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER TRANSFORM_FEEDBACK_BUFFER} | {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER} | {@link GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER} | {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER} |
| {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER} | {@link GL40#GL_DRAW_INDIRECT_BUFFER DRAW_INDIRECT_BUFFER} | {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER} | {@link GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER} |
| {@link GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER} | {@link ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} |
- * @param pname the symbolic name of a buffer object parameter. One of:
| {@link GL15#GL_BUFFER_SIZE BUFFER_SIZE} | {@link GL15#GL_BUFFER_USAGE BUFFER_USAGE} | {@link GL15#GL_BUFFER_ACCESS BUFFER_ACCESS} | {@link GL15#GL_BUFFER_MAPPED BUFFER_MAPPED} |
| {@link GL30#GL_BUFFER_ACCESS_FLAGS BUFFER_ACCESS_FLAGS} | {@link GL30#GL_BUFFER_MAP_LENGTH BUFFER_MAP_LENGTH} | {@link GL30#GL_BUFFER_MAP_OFFSET BUFFER_MAP_OFFSET} | {@link GL44#GL_BUFFER_IMMUTABLE_STORAGE BUFFER_IMMUTABLE_STORAGE} |
| {@link GL44#GL_BUFFER_STORAGE_FLAGS BUFFER_STORAGE_FLAGS} |
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetBufferParameteri64(@NativeType("GLenum") int target, @NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- LongBuffer params = stack.callocLong(1);
- nglGetBufferParameteri64v(target, pname, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glDrawElementsBaseVertex ] ---
-
- /**
- * Unsafe version of: {@link #glDrawElementsBaseVertex DrawElementsBaseVertex}
- *
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- */
- public static native void nglDrawElementsBaseVertex(int mode, int count, int type, long indices, int basevertex);
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLsizei") int count, @NativeType("GLenum") int type, @NativeType("void const *") long indices, @NativeType("GLint") int basevertex) {
- nglDrawElementsBaseVertex(mode, count, type, indices, basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawElementsBaseVertex(mode, indices.remaining() >> GLChecks.typeToByteShift(type), type, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") ByteBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawElementsBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_BYTE, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") ShortBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawElementsBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_SHORT, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") IntBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawElementsBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_INT, memAddress(indices), basevertex);
- }
-
- // --- [ glDrawRangeElementsBaseVertex ] ---
-
- /**
- * Unsafe version of: {@link #glDrawRangeElementsBaseVertex DrawRangeElementsBaseVertex}
- *
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- */
- public static native void nglDrawRangeElementsBaseVertex(int mode, int start, int end, int count, int type, long indices, int basevertex);
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param start the minimum array index contained in {@code indices}
- * @param end the maximum array index contained in {@code indices}
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawRangeElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLuint") int start, @NativeType("GLuint") int end, @NativeType("GLsizei") int count, @NativeType("GLenum") int type, @NativeType("void const *") long indices, @NativeType("GLint") int basevertex) {
- nglDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param start the minimum array index contained in {@code indices}
- * @param end the maximum array index contained in {@code indices}
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawRangeElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLuint") int start, @NativeType("GLuint") int end, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawRangeElementsBaseVertex(mode, start, end, indices.remaining() >> GLChecks.typeToByteShift(type), type, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param start the minimum array index contained in {@code indices}
- * @param end the maximum array index contained in {@code indices}
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawRangeElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLuint") int start, @NativeType("GLuint") int end, @NativeType("void const *") ByteBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawRangeElementsBaseVertex(mode, start, end, indices.remaining(), GL11.GL_UNSIGNED_BYTE, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param start the minimum array index contained in {@code indices}
- * @param end the maximum array index contained in {@code indices}
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawRangeElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLuint") int start, @NativeType("GLuint") int end, @NativeType("void const *") ShortBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawRangeElementsBaseVertex(mode, start, end, indices.remaining(), GL11.GL_UNSIGNED_SHORT, memAddress(indices), basevertex);
- }
-
- /**
- * Renders primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param start the minimum array index contained in {@code indices}
- * @param end the maximum array index contained in {@code indices}
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a constant that should be added to each element of {@code indices} when choosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawRangeElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLuint") int start, @NativeType("GLuint") int end, @NativeType("void const *") IntBuffer indices, @NativeType("GLint") int basevertex) {
- nglDrawRangeElementsBaseVertex(mode, start, end, indices.remaining(), GL11.GL_UNSIGNED_INT, memAddress(indices), basevertex);
- }
-
- // --- [ glDrawElementsInstancedBaseVertex ] ---
-
- /**
- * Unsafe version of: {@link #glDrawElementsInstancedBaseVertex DrawElementsInstancedBaseVertex}
- *
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- */
- public static native void nglDrawElementsInstancedBaseVertex(int mode, int count, int type, long indices, int primcount, int basevertex);
-
- /**
- * Renders multiple instances of a set of primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param count the number of elements to be rendered
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param primcount the number of instances of the indexed geometry that should be drawn
- * @param basevertex a constant that should be added to each element of indices when chosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsInstancedBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLsizei") int count, @NativeType("GLenum") int type, @NativeType("void const *") long indices, @NativeType("GLsizei") int primcount, @NativeType("GLint") int basevertex) {
- nglDrawElementsInstancedBaseVertex(mode, count, type, indices, primcount, basevertex);
- }
-
- /**
- * Renders multiple instances of a set of primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param primcount the number of instances of the indexed geometry that should be drawn
- * @param basevertex a constant that should be added to each element of indices when chosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsInstancedBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLenum") int type, @NativeType("void const *") ByteBuffer indices, @NativeType("GLsizei") int primcount, @NativeType("GLint") int basevertex) {
- nglDrawElementsInstancedBaseVertex(mode, indices.remaining() >> GLChecks.typeToByteShift(type), type, memAddress(indices), primcount, basevertex);
- }
-
- /**
- * Renders multiple instances of a set of primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param primcount the number of instances of the indexed geometry that should be drawn
- * @param basevertex a constant that should be added to each element of indices when chosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsInstancedBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") ByteBuffer indices, @NativeType("GLsizei") int primcount, @NativeType("GLint") int basevertex) {
- nglDrawElementsInstancedBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_BYTE, memAddress(indices), primcount, basevertex);
- }
-
- /**
- * Renders multiple instances of a set of primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param primcount the number of instances of the indexed geometry that should be drawn
- * @param basevertex a constant that should be added to each element of indices when chosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsInstancedBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") ShortBuffer indices, @NativeType("GLsizei") int primcount, @NativeType("GLint") int basevertex) {
- nglDrawElementsInstancedBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_SHORT, memAddress(indices), primcount, basevertex);
- }
-
- /**
- * Renders multiple instances of a set of primitives from array data with a per-element offset.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param indices a pointer to the location where the indices are stored
- * @param primcount the number of instances of the indexed geometry that should be drawn
- * @param basevertex a constant that should be added to each element of indices when chosing elements from the enabled vertex arrays
- *
- * @see Reference Page
- */
- public static void glDrawElementsInstancedBaseVertex(@NativeType("GLenum") int mode, @NativeType("void const *") IntBuffer indices, @NativeType("GLsizei") int primcount, @NativeType("GLint") int basevertex) {
- nglDrawElementsInstancedBaseVertex(mode, indices.remaining(), GL11.GL_UNSIGNED_INT, memAddress(indices), primcount, basevertex);
- }
-
- // --- [ glMultiDrawElementsBaseVertex ] ---
-
- /**
- * Unsafe version of: {@link #glMultiDrawElementsBaseVertex MultiDrawElementsBaseVertex}
- *
- * @param drawcount the size of the {@code count} array
- */
- public static native void nglMultiDrawElementsBaseVertex(int mode, long count, int type, long indices, int drawcount, long basevertex);
-
- /**
- * Renders multiple sets of primitives by specifying indices of array data elements and an offset to apply to each index.
- *
- * LWJGL note: Use {@link org.lwjgl.system.MemoryUtil#memAddress} to retrieve pointers to the index buffers.
- *
- * @param mode the kind of primitives to render. One of:
| {@link GL11#GL_POINTS POINTS} | {@link GL11#GL_LINE_STRIP LINE_STRIP} | {@link GL11#GL_LINE_LOOP LINE_LOOP} | {@link GL11#GL_LINES LINES} | {@link GL11#GL_TRIANGLE_STRIP TRIANGLE_STRIP} | {@link GL11#GL_TRIANGLE_FAN TRIANGLE_FAN} | {@link GL11#GL_TRIANGLES TRIANGLES} |
| {@link #GL_LINES_ADJACENCY LINES_ADJACENCY} | {@link #GL_LINE_STRIP_ADJACENCY LINE_STRIP_ADJACENCY} | {@link #GL_TRIANGLES_ADJACENCY TRIANGLES_ADJACENCY} | {@link #GL_TRIANGLE_STRIP_ADJACENCY TRIANGLE_STRIP_ADJACENCY} | {@link GL40#GL_PATCHES PATCHES} | {@link GL11#GL_POLYGON POLYGON} | {@link GL11#GL_QUADS QUADS} |
| {@link GL11#GL_QUAD_STRIP QUAD_STRIP} |
- * @param count an array of the elements counts
- * @param type the type of the values in {@code indices}. One of:
| {@link GL11#GL_UNSIGNED_BYTE UNSIGNED_BYTE} | {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} | {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} |
- * @param indices a pointer to the location where the indices are stored
- * @param basevertex a pointer to the location where the base vertices are stored
- *
- * @see Reference Page
- */
- public static void glMultiDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLsizei const *") IntBuffer count, @NativeType("GLenum") int type, @NativeType("void const **") PointerBuffer indices, @NativeType("GLint *") IntBuffer basevertex) {
- while (basevertex.hasRemaining()){
- GL32C.glDrawElementsBaseVertex(mode, count.get(), type, indices.get(), basevertex.get());
- }
- }
-
- // --- [ glProvokingVertex ] ---
-
- /**
- * Specifies the vertex to be used as the source of data for flat shaded varyings.
- *
- * @param mode the provoking vertex mode. One of:
| {@link #GL_FIRST_VERTEX_CONVENTION FIRST_VERTEX_CONVENTION} | {@link #GL_LAST_VERTEX_CONVENTION LAST_VERTEX_CONVENTION} |
- *
- * @see Reference Page
- */
- public static native void glProvokingVertex(@NativeType("GLenum") int mode);
-
- // --- [ glTexImage2DMultisample ] ---
-
- /**
- * Establishes the data storage, format, dimensions, and number of samples of a 2D multisample texture's image.
- *
- * @param target the target of the operation. One of:
| {@link #GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE} | {@link #GL_PROXY_TEXTURE_2D_MULTISAMPLE PROXY_TEXTURE_2D_MULTISAMPLE} |
- * @param samples the number of samples in the multisample texture's image
- * @param internalformat the internal format to be used to store the multisample texture's image. {@code internalformat} must specify a color-renderable, depth-renderable,
- * or stencil-renderable format.
- * @param width the width of the multisample texture's image, in texels
- * @param height the height of the multisample texture's image, in texels
- * @param fixedsamplelocations whether the image will use identical sample locations and the same number of samples for all texels in the image, and the sample locations will not
- * depend on the internal format or size of the image
- *
- * @see Reference Page
- */
- public static native void glTexImage2DMultisample(@NativeType("GLenum") int target, @NativeType("GLsizei") int samples, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLboolean") boolean fixedsamplelocations);
-
- // --- [ glTexImage3DMultisample ] ---
-
- /**
- * Establishes the data storage, format, dimensions, and number of samples of a 3D multisample texture's image.
- *
- * @param target the target of the operation. One of:
| {@link #GL_TEXTURE_2D_MULTISAMPLE_ARRAY TEXTURE_2D_MULTISAMPLE_ARRAY} | {@link #GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY} |
- * @param samples the number of samples in the multisample texture's image
- * @param internalformat the internal format to be used to store the multisample texture's image. {@code internalformat} must specify a color-renderable, depth-renderable,
- * or stencil-renderable format.
- * @param width the width of the multisample texture's image, in texels
- * @param height the height of the multisample texture's image, in texels
- * @param depth the depth of the multisample texture's image, in texels
- * @param fixedsamplelocations whether the image will use identical sample locations and the same number of samples for all texels in the image, and the sample locations will not
- * depend on the internal format or size of the image
- *
- * @see Reference Page
- */
- public static native void glTexImage3DMultisample(@NativeType("GLenum") int target, @NativeType("GLsizei") int samples, @NativeType("GLint") int internalformat, @NativeType("GLsizei") int width, @NativeType("GLsizei") int height, @NativeType("GLsizei") int depth, @NativeType("GLboolean") boolean fixedsamplelocations);
-
- // --- [ glGetMultisamplefv ] ---
-
- /** Unsafe version of: {@link #glGetMultisamplefv GetMultisamplefv} */
- public static native void nglGetMultisamplefv(int pname, int index, long val);
-
- /**
- * Retrieves the location of a sample.
- *
- * @param pname the sample parameter name. Must be:
| {@link #GL_SAMPLE_POSITION SAMPLE_POSITION} |
- * @param index the index of the sample whose position to query
- * @param val an array to receive the position of the sample
- *
- * @see Reference Page
- */
- public static void glGetMultisamplefv(@NativeType("GLenum") int pname, @NativeType("GLuint") int index, @NativeType("GLfloat *") FloatBuffer val) {
- if (CHECKS) {
- check(val, 1);
- }
- nglGetMultisamplefv(pname, index, memAddress(val));
- }
-
- /**
- * Retrieves the location of a sample.
- *
- * @param pname the sample parameter name. Must be:
| {@link #GL_SAMPLE_POSITION SAMPLE_POSITION} |
- * @param index the index of the sample whose position to query
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static float glGetMultisamplef(@NativeType("GLenum") int pname, @NativeType("GLuint") int index) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- FloatBuffer val = stack.callocFloat(1);
- nglGetMultisamplefv(pname, index, memAddress(val));
- return val.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glSampleMaski ] ---
-
- /**
- * Sets the value of a sub-word of the sample mask.
- *
- * @param index which 32-bit sub-word of the sample mask to update
- * @param mask the new value of the mask sub-word
- *
- * @see Reference Page
- */
- public static native void glSampleMaski(@NativeType("GLuint") int index, @NativeType("GLbitfield") int mask);
-
- // --- [ glFramebufferTexture ] ---
-
- /**
- * Attaches a level of a texture object as a logical buffer to the currently bound framebuffer object.
- *
- * @param target the framebuffer target. One of:
| {@link GL30#GL_FRAMEBUFFER FRAMEBUFFER} | {@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER} | {@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER} |
- * @param attachment the attachment point of the framebuffer
- * @param texture the texture object to attach to the framebuffer attachment point named by {@code attachment}
- * @param level the mipmap level of {@code texture} to attach
- *
- * @see Reference Page
- */
- public static native void glFramebufferTexture(@NativeType("GLenum") int target, @NativeType("GLenum") int attachment, @NativeType("GLuint") int texture, @NativeType("GLint") int level);
-
- // --- [ glFenceSync ] ---
-
- /**
- * Creates a new sync object and inserts it into the GL command stream.
- *
- * @param condition the condition that must be met to set the sync object's state to signaled. Must be:
| {@link #GL_SYNC_GPU_COMMANDS_COMPLETE SYNC_GPU_COMMANDS_COMPLETE} |
- * @param flags a bitwise combination of flags controlling the behavior of the sync object. No flags are presently defined for this operation and {@code flags} must
- * be zero.
- *
- * @see Reference Page
- */
- @NativeType("GLsync")
- public static native long glFenceSync(@NativeType("GLenum") int condition, @NativeType("GLbitfield") int flags);
-
- // --- [ glIsSync ] ---
-
- /** Unsafe version of: {@link #glIsSync IsSync} */
- public static native boolean nglIsSync(long sync);
-
- /**
- * Determines if a name corresponds to a sync object.
- *
- * @param sync a value that may be the name of a sync object
- *
- * @see Reference Page
- */
- @NativeType("GLboolean")
- public static boolean glIsSync(@NativeType("GLsync") long sync) {
- if (CHECKS) {
- check(sync);
- }
- return nglIsSync(sync);
- }
-
- // --- [ glDeleteSync ] ---
-
- /** Unsafe version of: {@link #glDeleteSync DeleteSync} */
- public static native void nglDeleteSync(long sync);
-
- /**
- * Deletes a sync object.
- *
- * @param sync the sync object to be deleted
- *
- * @see Reference Page
- */
- public static void glDeleteSync(@NativeType("GLsync") long sync) {
- if (CHECKS) {
- check(sync);
- }
- nglDeleteSync(sync);
- }
-
- // --- [ glClientWaitSync ] ---
-
- /** Unsafe version of: {@link #glClientWaitSync ClientWaitSync} */
- public static native int nglClientWaitSync(long sync, int flags, long timeout);
-
- /**
- * Causes the client to block and wait for a sync object to become signaled. If {@code sync} is signaled when {@code glClientWaitSync} is called,
- * {@code glClientWaitSync} returns immediately, otherwise it will block and wait for up to timeout nanoseconds for {@code sync} to become signaled.
- *
- * The return value is one of four status values:
- *
- *
- * - {@link #GL_ALREADY_SIGNALED ALREADY_SIGNALED} indicates that sync was signaled at the time that glClientWaitSync was called.
- * - {@link #GL_TIMEOUT_EXPIRED TIMEOUT_EXPIRED} indicates that at least timeout nanoseconds passed and sync did not become signaled.
- * - {@link #GL_CONDITION_SATISFIED CONDITION_SATISFIED} indicates that sync was signaled before the timeout expired.
- * - {@link #GL_WAIT_FAILED WAIT_FAILED} indicates that an error occurred. Additionally, an OpenGL error will be generated.
- *
- *
- * @param sync the sync object whose status to wait on
- * @param flags a bitfield controlling the command flushing behavior. One or more of:
| 0 | {@link #GL_SYNC_FLUSH_COMMANDS_BIT SYNC_FLUSH_COMMANDS_BIT} |
- * @param timeout the timeout, specified in nanoseconds, for which the implementation should wait for {@code sync} to become signaled
- *
- * @see Reference Page
- */
- @NativeType("GLenum")
- public static int glClientWaitSync(@NativeType("GLsync") long sync, @NativeType("GLbitfield") int flags, @NativeType("GLuint64") long timeout) {
- if (CHECKS) {
- check(sync);
- }
- return nglClientWaitSync(sync, flags, timeout);
- }
-
- // --- [ glWaitSync ] ---
-
- /** Unsafe version of: {@link #glWaitSync WaitSync} */
- public static native void nglWaitSync(long sync, int flags, long timeout);
-
- /**
- * Causes the GL server to block and wait for a sync object to become signaled.
- *
- * {@code glWaitSync} will always wait no longer than an implementation-dependent timeout. The duration of this timeout in nanoseconds may be queried by
- * with {@link #GL_MAX_SERVER_WAIT_TIMEOUT MAX_SERVER_WAIT_TIMEOUT}. There is currently no way to determine whether glWaitSync unblocked because the timeout expired or because the
- * sync object being waited on was signaled.
- *
- * If an error occurs, {@code glWaitSync} does not cause the GL server to block.
- *
- * @param sync the sync object whose status to wait on
- * @param flags a bitfield controlling the command flushing behavior. Must be:
- * @param timeout the timeout that the server should wait before continuing. Must be:
| {@link #GL_TIMEOUT_IGNORED TIMEOUT_IGNORED} |
- *
- * @see Reference Page
- */
- public static void glWaitSync(@NativeType("GLsync") long sync, @NativeType("GLbitfield") int flags, @NativeType("GLuint64") long timeout) {
- if (CHECKS) {
- check(sync);
- }
- nglWaitSync(sync, flags, timeout);
- }
-
- // --- [ glGetInteger64v ] ---
-
- /** Unsafe version of: {@link #glGetInteger64v GetInteger64v} */
- public static native void nglGetInteger64v(int pname, long params);
-
- /**
- * Returns the 64bit integer value or values of a selected parameter.
- *
- * @param pname the parameter value to be returned
- * @param params the value or values of the specified parameter
- *
- * @see Reference Page
- */
- public static void glGetInteger64v(@NativeType("GLenum") int pname, @NativeType("GLint64 *") LongBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetInteger64v(pname, memAddress(params));
- }
-
- /**
- * Returns the 64bit integer value or values of a selected parameter.
- *
- * @param pname the parameter value to be returned
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetInteger64(@NativeType("GLenum") int pname) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- LongBuffer params = stack.callocLong(1);
- nglGetInteger64v(pname, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetInteger64i_v ] ---
-
- /** Unsafe version of: {@link #glGetInteger64i_v GetInteger64i_v} */
- public static native void nglGetInteger64i_v(int pname, int index, long params);
-
- /**
- * Queries the 64bit integer value of an indexed state variable.
- *
- * @param pname the indexed state to query
- * @param index the index of the element being queried
- * @param params the value or values of the specified parameter
- *
- * @see Reference Page
- */
- public static void glGetInteger64i_v(@NativeType("GLenum") int pname, @NativeType("GLuint") int index, @NativeType("GLint64 *") LongBuffer params) {
- if (CHECKS) {
- check(params, 1);
- }
- nglGetInteger64i_v(pname, index, memAddress(params));
- }
-
- /**
- * Queries the 64bit integer value of an indexed state variable.
- *
- * @param pname the indexed state to query
- * @param index the index of the element being queried
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static long glGetInteger64i(@NativeType("GLenum") int pname, @NativeType("GLuint") int index) {
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- LongBuffer params = stack.callocLong(1);
- nglGetInteger64i_v(pname, index, memAddress(params));
- return params.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- // --- [ glGetSynciv ] ---
-
- /**
- * Unsafe version of: {@link #glGetSynciv GetSynciv}
- *
- * @param bufSize the size of the buffer whose address is given in {@code values}
- */
- public static native void nglGetSynciv(long sync, int pname, int bufSize, long length, long values);
-
- /**
- * Queries the properties of a sync object.
- *
- * @param sync the sync object whose properties to query
- * @param pname the parameter whose value to retrieve from the sync object specified in {@code sync}. One of:
| {@link #GL_OBJECT_TYPE OBJECT_TYPE} | {@link #GL_SYNC_CONDITION SYNC_CONDITION} | {@link #GL_SYNC_STATUS SYNC_STATUS} | {@link #GL_SYNC_FLAGS SYNC_FLAGS} |
- * @param length the address of an variable to receive the number of integers placed in {@code values}
- * @param values the address of an array to receive the values of the queried parameter
- *
- * @see Reference Page
- */
- public static void glGetSynciv(@NativeType("GLsync") long sync, @NativeType("GLenum") int pname, @Nullable @NativeType("GLsizei *") IntBuffer length, @NativeType("GLint *") IntBuffer values) {
- if (CHECKS) {
- check(sync);
- checkSafe(length, 1);
- }
- nglGetSynciv(sync, pname, values.remaining(), memAddressSafe(length), memAddress(values));
- }
-
- /**
- * Queries the properties of a sync object.
- *
- * @param sync the sync object whose properties to query
- * @param pname the parameter whose value to retrieve from the sync object specified in {@code sync}. One of:
| {@link #GL_OBJECT_TYPE OBJECT_TYPE} | {@link #GL_SYNC_CONDITION SYNC_CONDITION} | {@link #GL_SYNC_STATUS SYNC_STATUS} | {@link #GL_SYNC_FLAGS SYNC_FLAGS} |
- * @param length the address of an variable to receive the number of integers placed in {@code values}
- *
- * @see Reference Page
- */
- @NativeType("void")
- public static int glGetSynci(@NativeType("GLsync") long sync, @NativeType("GLenum") int pname, @Nullable @NativeType("GLsizei *") IntBuffer length) {
- if (CHECKS) {
- check(sync);
- checkSafe(length, 1);
- }
- MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
- try {
- IntBuffer values = stack.callocInt(1);
- nglGetSynciv(sync, pname, 1, memAddressSafe(length), memAddress(values));
- return values.get(0);
- } finally {
- stack.setPointer(stackPointer);
- }
- }
-
- /**
- * Array version of: {@link #glGetBufferParameteri64v GetBufferParameteri64v}
- *
- * @see Reference Page
- */
- public static void glGetBufferParameteri64v(@NativeType("GLenum") int target, @NativeType("GLenum") int pname, @NativeType("GLint64 *") long[] params) {
- long __functionAddress = GL.getICD().glGetBufferParameteri64v;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(target, pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glMultiDrawElementsBaseVertex MultiDrawElementsBaseVertex}
- *
- * @see Reference Page
- */
- public static void glMultiDrawElementsBaseVertex(@NativeType("GLenum") int mode, @NativeType("GLsizei const *") int[] count, @NativeType("GLenum") int type, @NativeType("void const **") PointerBuffer indices, @NativeType("GLint *") int[] basevertex) {
- long __functionAddress = GL.getICD().glMultiDrawElementsBaseVertex;
- if (CHECKS) {
- check(__functionAddress);
- check(indices, count.length);
- check(basevertex, count.length);
- }
- callPPPV(mode, count, type, memAddress(indices), count.length, basevertex, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetMultisamplefv GetMultisamplefv}
- *
- * @see Reference Page
- */
- public static void glGetMultisamplefv(@NativeType("GLenum") int pname, @NativeType("GLuint") int index, @NativeType("GLfloat *") float[] val) {
- long __functionAddress = GL.getICD().glGetMultisamplefv;
- if (CHECKS) {
- check(__functionAddress);
- check(val, 1);
- }
- callPV(pname, index, val, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetInteger64v GetInteger64v}
- *
- * @see Reference Page
- */
- public static void glGetInteger64v(@NativeType("GLenum") int pname, @NativeType("GLint64 *") long[] params) {
- long __functionAddress = GL.getICD().glGetInteger64v;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(pname, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetInteger64i_v GetInteger64i_v}
- *
- * @see Reference Page
- */
- public static void glGetInteger64i_v(@NativeType("GLenum") int pname, @NativeType("GLuint") int index, @NativeType("GLint64 *") long[] params) {
- long __functionAddress = GL.getICD().glGetInteger64i_v;
- if (CHECKS) {
- check(__functionAddress);
- check(params, 1);
- }
- callPV(pname, index, params, __functionAddress);
- }
-
- /**
- * Array version of: {@link #glGetSynciv GetSynciv}
- *
- * @see Reference Page
- */
- public static void glGetSynciv(@NativeType("GLsync") long sync, @NativeType("GLenum") int pname, @Nullable @NativeType("GLsizei *") int[] length, @NativeType("GLint *") int[] values) {
- long __functionAddress = GL.getICD().glGetSynciv;
- if (CHECKS) {
- check(__functionAddress);
- check(sync);
- checkSafe(length, 1);
- }
- callPPPV(sync, pname, values.length, length, values, __functionAddress);
- }
-
-}
\ No newline at end of file
diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GLCapabilities.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GLCapabilities.java
new file mode 100644
index 000000000..12428ba65
--- /dev/null
+++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GLCapabilities.java
@@ -0,0 +1,10714 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.opengl;
+
+import org.lwjgl.system.*;
+import java.util.Set;
+import org.lwjgl.*;
+import java.util.function.IntFunction;
+
+import static org.lwjgl.system.APIUtil.*;
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.MemoryUtil.*;
+
+/** Defines the capabilities of an OpenGL context. */
+public final class GLCapabilities {
+
+ static final int ADDRESS_BUFFER_SIZE = 2226;
+
+ // GL11
+ public final long
+ glEnable,
+ glDisable,
+ glAccum,
+ glAlphaFunc,
+ glAreTexturesResident,
+ glArrayElement,
+ glBegin,
+ glBindTexture,
+ glBitmap,
+ glBlendFunc,
+ glCallList,
+ glCallLists,
+ glClear,
+ glClearAccum,
+ glClearColor,
+ glClearDepth,
+ glClearIndex,
+ glClearStencil,
+ glClipPlane,
+ glColor3b,
+ glColor3s,
+ glColor3i,
+ glColor3f,
+ glColor3d,
+ glColor3ub,
+ glColor3us,
+ glColor3ui,
+ glColor3bv,
+ glColor3sv,
+ glColor3iv,
+ glColor3fv,
+ glColor3dv,
+ glColor3ubv,
+ glColor3usv,
+ glColor3uiv,
+ glColor4b,
+ glColor4s,
+ glColor4i,
+ glColor4f,
+ glColor4d,
+ glColor4ub,
+ glColor4us,
+ glColor4ui,
+ glColor4bv,
+ glColor4sv,
+ glColor4iv,
+ glColor4fv,
+ glColor4dv,
+ glColor4ubv,
+ glColor4usv,
+ glColor4uiv,
+ glColorMask,
+ glColorMaterial,
+ glColorPointer,
+ glCopyPixels,
+ glCullFace,
+ glDeleteLists,
+ glDepthFunc,
+ glDepthMask,
+ glDepthRange,
+ glDisableClientState,
+ glDrawArrays,
+ glDrawBuffer,
+ glDrawElements,
+ glDrawPixels,
+ glEdgeFlag,
+ glEdgeFlagv,
+ glEdgeFlagPointer,
+ glEnableClientState,
+ glEnd,
+ glEvalCoord1f,
+ glEvalCoord1fv,
+ glEvalCoord1d,
+ glEvalCoord1dv,
+ glEvalCoord2f,
+ glEvalCoord2fv,
+ glEvalCoord2d,
+ glEvalCoord2dv,
+ glEvalMesh1,
+ glEvalMesh2,
+ glEvalPoint1,
+ glEvalPoint2,
+ glFeedbackBuffer,
+ glFinish,
+ glFlush,
+ glFogi,
+ glFogiv,
+ glFogf,
+ glFogfv,
+ glFrontFace,
+ glGenLists,
+ glGenTextures,
+ glDeleteTextures,
+ glGetClipPlane,
+ glGetBooleanv,
+ glGetFloatv,
+ glGetIntegerv,
+ glGetDoublev,
+ glGetError,
+ glGetLightiv,
+ glGetLightfv,
+ glGetMapiv,
+ glGetMapfv,
+ glGetMapdv,
+ glGetMaterialiv,
+ glGetMaterialfv,
+ glGetPixelMapfv,
+ glGetPixelMapusv,
+ glGetPixelMapuiv,
+ glGetPointerv,
+ glGetPolygonStipple,
+ glGetString,
+ glGetTexEnviv,
+ glGetTexEnvfv,
+ glGetTexGeniv,
+ glGetTexGenfv,
+ glGetTexGendv,
+ glGetTexImage,
+ glGetTexLevelParameteriv,
+ glGetTexLevelParameterfv,
+ glGetTexParameteriv,
+ glGetTexParameterfv,
+ glHint,
+ glIndexi,
+ glIndexub,
+ glIndexs,
+ glIndexf,
+ glIndexd,
+ glIndexiv,
+ glIndexubv,
+ glIndexsv,
+ glIndexfv,
+ glIndexdv,
+ glIndexMask,
+ glIndexPointer,
+ glInitNames,
+ glInterleavedArrays,
+ glIsEnabled,
+ glIsList,
+ glIsTexture,
+ glLightModeli,
+ glLightModelf,
+ glLightModeliv,
+ glLightModelfv,
+ glLighti,
+ glLightf,
+ glLightiv,
+ glLightfv,
+ glLineStipple,
+ glLineWidth,
+ glListBase,
+ glLoadMatrixf,
+ glLoadMatrixd,
+ glLoadIdentity,
+ glLoadName,
+ glLogicOp,
+ glMap1f,
+ glMap1d,
+ glMap2f,
+ glMap2d,
+ glMapGrid1f,
+ glMapGrid1d,
+ glMapGrid2f,
+ glMapGrid2d,
+ glMateriali,
+ glMaterialf,
+ glMaterialiv,
+ glMaterialfv,
+ glMatrixMode,
+ glMultMatrixf,
+ glMultMatrixd,
+ glFrustum,
+ glNewList,
+ glEndList,
+ glNormal3f,
+ glNormal3b,
+ glNormal3s,
+ glNormal3i,
+ glNormal3d,
+ glNormal3fv,
+ glNormal3bv,
+ glNormal3sv,
+ glNormal3iv,
+ glNormal3dv,
+ glNormalPointer,
+ glOrtho,
+ glPassThrough,
+ glPixelMapfv,
+ glPixelMapusv,
+ glPixelMapuiv,
+ glPixelStorei,
+ glPixelStoref,
+ glPixelTransferi,
+ glPixelTransferf,
+ glPixelZoom,
+ glPointSize,
+ glPolygonMode,
+ glPolygonOffset,
+ glPolygonStipple,
+ glPushAttrib,
+ glPushClientAttrib,
+ glPopAttrib,
+ glPopClientAttrib,
+ glPopMatrix,
+ glPopName,
+ glPrioritizeTextures,
+ glPushMatrix,
+ glPushName,
+ glRasterPos2i,
+ glRasterPos2s,
+ glRasterPos2f,
+ glRasterPos2d,
+ glRasterPos2iv,
+ glRasterPos2sv,
+ glRasterPos2fv,
+ glRasterPos2dv,
+ glRasterPos3i,
+ glRasterPos3s,
+ glRasterPos3f,
+ glRasterPos3d,
+ glRasterPos3iv,
+ glRasterPos3sv,
+ glRasterPos3fv,
+ glRasterPos3dv,
+ glRasterPos4i,
+ glRasterPos4s,
+ glRasterPos4f,
+ glRasterPos4d,
+ glRasterPos4iv,
+ glRasterPos4sv,
+ glRasterPos4fv,
+ glRasterPos4dv,
+ glReadBuffer,
+ glReadPixels,
+ glRecti,
+ glRects,
+ glRectf,
+ glRectd,
+ glRectiv,
+ glRectsv,
+ glRectfv,
+ glRectdv,
+ glRenderMode,
+ glRotatef,
+ glRotated,
+ glScalef,
+ glScaled,
+ glScissor,
+ glSelectBuffer,
+ glShadeModel,
+ glStencilFunc,
+ glStencilMask,
+ glStencilOp,
+ glTexCoord1f,
+ glTexCoord1s,
+ glTexCoord1i,
+ glTexCoord1d,
+ glTexCoord1fv,
+ glTexCoord1sv,
+ glTexCoord1iv,
+ glTexCoord1dv,
+ glTexCoord2f,
+ glTexCoord2s,
+ glTexCoord2i,
+ glTexCoord2d,
+ glTexCoord2fv,
+ glTexCoord2sv,
+ glTexCoord2iv,
+ glTexCoord2dv,
+ glTexCoord3f,
+ glTexCoord3s,
+ glTexCoord3i,
+ glTexCoord3d,
+ glTexCoord3fv,
+ glTexCoord3sv,
+ glTexCoord3iv,
+ glTexCoord3dv,
+ glTexCoord4f,
+ glTexCoord4s,
+ glTexCoord4i,
+ glTexCoord4d,
+ glTexCoord4fv,
+ glTexCoord4sv,
+ glTexCoord4iv,
+ glTexCoord4dv,
+ glTexCoordPointer,
+ glTexEnvi,
+ glTexEnviv,
+ glTexEnvf,
+ glTexEnvfv,
+ glTexGeni,
+ glTexGeniv,
+ glTexGenf,
+ glTexGenfv,
+ glTexGend,
+ glTexGendv,
+ glTexImage1D,
+ glTexImage2D,
+ glCopyTexImage1D,
+ glCopyTexImage2D,
+ glCopyTexSubImage1D,
+ glCopyTexSubImage2D,
+ glTexParameteri,
+ glTexParameteriv,
+ glTexParameterf,
+ glTexParameterfv,
+ glTexSubImage1D,
+ glTexSubImage2D,
+ glTranslatef,
+ glTranslated,
+ glVertex2f,
+ glVertex2s,
+ glVertex2i,
+ glVertex2d,
+ glVertex2fv,
+ glVertex2sv,
+ glVertex2iv,
+ glVertex2dv,
+ glVertex3f,
+ glVertex3s,
+ glVertex3i,
+ glVertex3d,
+ glVertex3fv,
+ glVertex3sv,
+ glVertex3iv,
+ glVertex3dv,
+ glVertex4f,
+ glVertex4s,
+ glVertex4i,
+ glVertex4d,
+ glVertex4fv,
+ glVertex4sv,
+ glVertex4iv,
+ glVertex4dv,
+ glVertexPointer,
+ glViewport;
+
+ // GL12
+ public final long
+ glTexImage3D,
+ glTexSubImage3D,
+ glCopyTexSubImage3D,
+ glDrawRangeElements;
+
+ // GL13
+ public final long
+ glCompressedTexImage3D,
+ glCompressedTexImage2D,
+ glCompressedTexImage1D,
+ glCompressedTexSubImage3D,
+ glCompressedTexSubImage2D,
+ glCompressedTexSubImage1D,
+ glGetCompressedTexImage,
+ glSampleCoverage,
+ glActiveTexture,
+ glClientActiveTexture,
+ glMultiTexCoord1f,
+ glMultiTexCoord1s,
+ glMultiTexCoord1i,
+ glMultiTexCoord1d,
+ glMultiTexCoord1fv,
+ glMultiTexCoord1sv,
+ glMultiTexCoord1iv,
+ glMultiTexCoord1dv,
+ glMultiTexCoord2f,
+ glMultiTexCoord2s,
+ glMultiTexCoord2i,
+ glMultiTexCoord2d,
+ glMultiTexCoord2fv,
+ glMultiTexCoord2sv,
+ glMultiTexCoord2iv,
+ glMultiTexCoord2dv,
+ glMultiTexCoord3f,
+ glMultiTexCoord3s,
+ glMultiTexCoord3i,
+ glMultiTexCoord3d,
+ glMultiTexCoord3fv,
+ glMultiTexCoord3sv,
+ glMultiTexCoord3iv,
+ glMultiTexCoord3dv,
+ glMultiTexCoord4f,
+ glMultiTexCoord4s,
+ glMultiTexCoord4i,
+ glMultiTexCoord4d,
+ glMultiTexCoord4fv,
+ glMultiTexCoord4sv,
+ glMultiTexCoord4iv,
+ glMultiTexCoord4dv,
+ glLoadTransposeMatrixf,
+ glLoadTransposeMatrixd,
+ glMultTransposeMatrixf,
+ glMultTransposeMatrixd;
+
+ // GL14
+ public final long
+ glBlendColor,
+ glBlendEquation,
+ glFogCoordf,
+ glFogCoordd,
+ glFogCoordfv,
+ glFogCoorddv,
+ glFogCoordPointer,
+ glMultiDrawArrays,
+ glMultiDrawElements,
+ glPointParameterf,
+ glPointParameteri,
+ glPointParameterfv,
+ glPointParameteriv,
+ glSecondaryColor3b,
+ glSecondaryColor3s,
+ glSecondaryColor3i,
+ glSecondaryColor3f,
+ glSecondaryColor3d,
+ glSecondaryColor3ub,
+ glSecondaryColor3us,
+ glSecondaryColor3ui,
+ glSecondaryColor3bv,
+ glSecondaryColor3sv,
+ glSecondaryColor3iv,
+ glSecondaryColor3fv,
+ glSecondaryColor3dv,
+ glSecondaryColor3ubv,
+ glSecondaryColor3usv,
+ glSecondaryColor3uiv,
+ glSecondaryColorPointer,
+ glBlendFuncSeparate,
+ glWindowPos2i,
+ glWindowPos2s,
+ glWindowPos2f,
+ glWindowPos2d,
+ glWindowPos2iv,
+ glWindowPos2sv,
+ glWindowPos2fv,
+ glWindowPos2dv,
+ glWindowPos3i,
+ glWindowPos3s,
+ glWindowPos3f,
+ glWindowPos3d,
+ glWindowPos3iv,
+ glWindowPos3sv,
+ glWindowPos3fv,
+ glWindowPos3dv;
+
+ // GL15
+ public final long
+ glBindBuffer,
+ glDeleteBuffers,
+ glGenBuffers,
+ glIsBuffer,
+ glBufferData,
+ glBufferSubData,
+ glGetBufferSubData,
+ glMapBuffer,
+ glUnmapBuffer,
+ glGetBufferParameteriv,
+ glGetBufferPointerv,
+ glGenQueries,
+ glDeleteQueries,
+ glIsQuery,
+ glBeginQuery,
+ glEndQuery,
+ glGetQueryiv,
+ glGetQueryObjectiv,
+ glGetQueryObjectuiv;
+
+ // GL20
+ public final long
+ glCreateProgram,
+ glDeleteProgram,
+ glIsProgram,
+ glCreateShader,
+ glDeleteShader,
+ glIsShader,
+ glAttachShader,
+ glDetachShader,
+ glShaderSource,
+ glCompileShader,
+ glLinkProgram,
+ glUseProgram,
+ glValidateProgram,
+ glUniform1f,
+ glUniform2f,
+ glUniform3f,
+ glUniform4f,
+ glUniform1i,
+ glUniform2i,
+ glUniform3i,
+ glUniform4i,
+ glUniform1fv,
+ glUniform2fv,
+ glUniform3fv,
+ glUniform4fv,
+ glUniform1iv,
+ glUniform2iv,
+ glUniform3iv,
+ glUniform4iv,
+ glUniformMatrix2fv,
+ glUniformMatrix3fv,
+ glUniformMatrix4fv,
+ glGetShaderiv,
+ glGetProgramiv,
+ glGetShaderInfoLog,
+ glGetProgramInfoLog,
+ glGetAttachedShaders,
+ glGetUniformLocation,
+ glGetActiveUniform,
+ glGetUniformfv,
+ glGetUniformiv,
+ glGetShaderSource,
+ glVertexAttrib1f,
+ glVertexAttrib1s,
+ glVertexAttrib1d,
+ glVertexAttrib2f,
+ glVertexAttrib2s,
+ glVertexAttrib2d,
+ glVertexAttrib3f,
+ glVertexAttrib3s,
+ glVertexAttrib3d,
+ glVertexAttrib4f,
+ glVertexAttrib4s,
+ glVertexAttrib4d,
+ glVertexAttrib4Nub,
+ glVertexAttrib1fv,
+ glVertexAttrib1sv,
+ glVertexAttrib1dv,
+ glVertexAttrib2fv,
+ glVertexAttrib2sv,
+ glVertexAttrib2dv,
+ glVertexAttrib3fv,
+ glVertexAttrib3sv,
+ glVertexAttrib3dv,
+ glVertexAttrib4fv,
+ glVertexAttrib4sv,
+ glVertexAttrib4dv,
+ glVertexAttrib4iv,
+ glVertexAttrib4bv,
+ glVertexAttrib4ubv,
+ glVertexAttrib4usv,
+ glVertexAttrib4uiv,
+ glVertexAttrib4Nbv,
+ glVertexAttrib4Nsv,
+ glVertexAttrib4Niv,
+ glVertexAttrib4Nubv,
+ glVertexAttrib4Nusv,
+ glVertexAttrib4Nuiv,
+ glVertexAttribPointer,
+ glEnableVertexAttribArray,
+ glDisableVertexAttribArray,
+ glBindAttribLocation,
+ glGetActiveAttrib,
+ glGetAttribLocation,
+ glGetVertexAttribiv,
+ glGetVertexAttribfv,
+ glGetVertexAttribdv,
+ glGetVertexAttribPointerv,
+ glDrawBuffers,
+ glBlendEquationSeparate,
+ glStencilOpSeparate,
+ glStencilFuncSeparate,
+ glStencilMaskSeparate;
+
+ // GL21
+ public final long
+ glUniformMatrix2x3fv,
+ glUniformMatrix3x2fv,
+ glUniformMatrix2x4fv,
+ glUniformMatrix4x2fv,
+ glUniformMatrix3x4fv,
+ glUniformMatrix4x3fv;
+
+ // GL30
+ public final long
+ glGetStringi,
+ glClearBufferiv,
+ glClearBufferuiv,
+ glClearBufferfv,
+ glClearBufferfi,
+ glVertexAttribI1i,
+ glVertexAttribI2i,
+ glVertexAttribI3i,
+ glVertexAttribI4i,
+ glVertexAttribI1ui,
+ glVertexAttribI2ui,
+ glVertexAttribI3ui,
+ glVertexAttribI4ui,
+ glVertexAttribI1iv,
+ glVertexAttribI2iv,
+ glVertexAttribI3iv,
+ glVertexAttribI4iv,
+ glVertexAttribI1uiv,
+ glVertexAttribI2uiv,
+ glVertexAttribI3uiv,
+ glVertexAttribI4uiv,
+ glVertexAttribI4bv,
+ glVertexAttribI4sv,
+ glVertexAttribI4ubv,
+ glVertexAttribI4usv,
+ glVertexAttribIPointer,
+ glGetVertexAttribIiv,
+ glGetVertexAttribIuiv,
+ glUniform1ui,
+ glUniform2ui,
+ glUniform3ui,
+ glUniform4ui,
+ glUniform1uiv,
+ glUniform2uiv,
+ glUniform3uiv,
+ glUniform4uiv,
+ glGetUniformuiv,
+ glBindFragDataLocation,
+ glGetFragDataLocation,
+ glBeginConditionalRender,
+ glEndConditionalRender,
+ glMapBufferRange,
+ glFlushMappedBufferRange,
+ glClampColor,
+ glIsRenderbuffer,
+ glBindRenderbuffer,
+ glDeleteRenderbuffers,
+ glGenRenderbuffers,
+ glRenderbufferStorage,
+ glRenderbufferStorageMultisample,
+ glGetRenderbufferParameteriv,
+ glIsFramebuffer,
+ glBindFramebuffer,
+ glDeleteFramebuffers,
+ glGenFramebuffers,
+ glCheckFramebufferStatus,
+ glFramebufferTexture1D,
+ glFramebufferTexture2D,
+ glFramebufferTexture3D,
+ glFramebufferTextureLayer,
+ glFramebufferRenderbuffer,
+ glGetFramebufferAttachmentParameteriv,
+ glBlitFramebuffer,
+ glGenerateMipmap,
+ glTexParameterIiv,
+ glTexParameterIuiv,
+ glGetTexParameterIiv,
+ glGetTexParameterIuiv,
+ glColorMaski,
+ glGetBooleani_v,
+ glGetIntegeri_v,
+ glEnablei,
+ glDisablei,
+ glIsEnabledi,
+ glBindBufferRange,
+ glBindBufferBase,
+ glBeginTransformFeedback,
+ glEndTransformFeedback,
+ glTransformFeedbackVaryings,
+ glGetTransformFeedbackVarying,
+ glBindVertexArray,
+ glDeleteVertexArrays,
+ glGenVertexArrays,
+ glIsVertexArray;
+
+ // GL31
+ public final long
+ glDrawArraysInstanced,
+ glDrawElementsInstanced,
+ glCopyBufferSubData,
+ glPrimitiveRestartIndex,
+ glTexBuffer,
+ glGetUniformIndices,
+ glGetActiveUniformsiv,
+ glGetActiveUniformName,
+ glGetUniformBlockIndex,
+ glGetActiveUniformBlockiv,
+ glGetActiveUniformBlockName,
+ glUniformBlockBinding;
+
+ // GL32
+ public final long
+ glGetBufferParameteri64v,
+ glDrawElementsBaseVertex,
+ glDrawRangeElementsBaseVertex,
+ glDrawElementsInstancedBaseVertex,
+ glMultiDrawElementsBaseVertex,
+ glProvokingVertex,
+ glTexImage2DMultisample,
+ glTexImage3DMultisample,
+ glGetMultisamplefv,
+ glSampleMaski,
+ glFramebufferTexture,
+ glFenceSync,
+ glIsSync,
+ glDeleteSync,
+ glClientWaitSync,
+ glWaitSync,
+ glGetInteger64v,
+ glGetInteger64i_v,
+ glGetSynciv;
+
+ // GL33
+ public final long
+ glBindFragDataLocationIndexed,
+ glGetFragDataIndex,
+ glGenSamplers,
+ glDeleteSamplers,
+ glIsSampler,
+ glBindSampler,
+ glSamplerParameteri,
+ glSamplerParameterf,
+ glSamplerParameteriv,
+ glSamplerParameterfv,
+ glSamplerParameterIiv,
+ glSamplerParameterIuiv,
+ glGetSamplerParameteriv,
+ glGetSamplerParameterfv,
+ glGetSamplerParameterIiv,
+ glGetSamplerParameterIuiv,
+ glQueryCounter,
+ glGetQueryObjecti64v,
+ glGetQueryObjectui64v,
+ glVertexAttribDivisor,
+ glVertexP2ui,
+ glVertexP3ui,
+ glVertexP4ui,
+ glVertexP2uiv,
+ glVertexP3uiv,
+ glVertexP4uiv,
+ glTexCoordP1ui,
+ glTexCoordP2ui,
+ glTexCoordP3ui,
+ glTexCoordP4ui,
+ glTexCoordP1uiv,
+ glTexCoordP2uiv,
+ glTexCoordP3uiv,
+ glTexCoordP4uiv,
+ glMultiTexCoordP1ui,
+ glMultiTexCoordP2ui,
+ glMultiTexCoordP3ui,
+ glMultiTexCoordP4ui,
+ glMultiTexCoordP1uiv,
+ glMultiTexCoordP2uiv,
+ glMultiTexCoordP3uiv,
+ glMultiTexCoordP4uiv,
+ glNormalP3ui,
+ glNormalP3uiv,
+ glColorP3ui,
+ glColorP4ui,
+ glColorP3uiv,
+ glColorP4uiv,
+ glSecondaryColorP3ui,
+ glSecondaryColorP3uiv,
+ glVertexAttribP1ui,
+ glVertexAttribP2ui,
+ glVertexAttribP3ui,
+ glVertexAttribP4ui,
+ glVertexAttribP1uiv,
+ glVertexAttribP2uiv,
+ glVertexAttribP3uiv,
+ glVertexAttribP4uiv;
+
+ // GL40
+ public final long
+ glBlendEquationi,
+ glBlendEquationSeparatei,
+ glBlendFunci,
+ glBlendFuncSeparatei,
+ glDrawArraysIndirect,
+ glDrawElementsIndirect,
+ glUniform1d,
+ glUniform2d,
+ glUniform3d,
+ glUniform4d,
+ glUniform1dv,
+ glUniform2dv,
+ glUniform3dv,
+ glUniform4dv,
+ glUniformMatrix2dv,
+ glUniformMatrix3dv,
+ glUniformMatrix4dv,
+ glUniformMatrix2x3dv,
+ glUniformMatrix2x4dv,
+ glUniformMatrix3x2dv,
+ glUniformMatrix3x4dv,
+ glUniformMatrix4x2dv,
+ glUniformMatrix4x3dv,
+ glGetUniformdv,
+ glMinSampleShading,
+ glGetSubroutineUniformLocation,
+ glGetSubroutineIndex,
+ glGetActiveSubroutineUniformiv,
+ glGetActiveSubroutineUniformName,
+ glGetActiveSubroutineName,
+ glUniformSubroutinesuiv,
+ glGetUniformSubroutineuiv,
+ glGetProgramStageiv,
+ glPatchParameteri,
+ glPatchParameterfv,
+ glBindTransformFeedback,
+ glDeleteTransformFeedbacks,
+ glGenTransformFeedbacks,
+ glIsTransformFeedback,
+ glPauseTransformFeedback,
+ glResumeTransformFeedback,
+ glDrawTransformFeedback,
+ glDrawTransformFeedbackStream,
+ glBeginQueryIndexed,
+ glEndQueryIndexed,
+ glGetQueryIndexediv;
+
+ // GL41
+ public final long
+ glReleaseShaderCompiler,
+ glShaderBinary,
+ glGetShaderPrecisionFormat,
+ glDepthRangef,
+ glClearDepthf,
+ glGetProgramBinary,
+ glProgramBinary,
+ glProgramParameteri,
+ glUseProgramStages,
+ glActiveShaderProgram,
+ glCreateShaderProgramv,
+ glBindProgramPipeline,
+ glDeleteProgramPipelines,
+ glGenProgramPipelines,
+ glIsProgramPipeline,
+ glGetProgramPipelineiv,
+ glProgramUniform1i,
+ glProgramUniform2i,
+ glProgramUniform3i,
+ glProgramUniform4i,
+ glProgramUniform1ui,
+ glProgramUniform2ui,
+ glProgramUniform3ui,
+ glProgramUniform4ui,
+ glProgramUniform1f,
+ glProgramUniform2f,
+ glProgramUniform3f,
+ glProgramUniform4f,
+ glProgramUniform1d,
+ glProgramUniform2d,
+ glProgramUniform3d,
+ glProgramUniform4d,
+ glProgramUniform1iv,
+ glProgramUniform2iv,
+ glProgramUniform3iv,
+ glProgramUniform4iv,
+ glProgramUniform1uiv,
+ glProgramUniform2uiv,
+ glProgramUniform3uiv,
+ glProgramUniform4uiv,
+ glProgramUniform1fv,
+ glProgramUniform2fv,
+ glProgramUniform3fv,
+ glProgramUniform4fv,
+ glProgramUniform1dv,
+ glProgramUniform2dv,
+ glProgramUniform3dv,
+ glProgramUniform4dv,
+ glProgramUniformMatrix2fv,
+ glProgramUniformMatrix3fv,
+ glProgramUniformMatrix4fv,
+ glProgramUniformMatrix2dv,
+ glProgramUniformMatrix3dv,
+ glProgramUniformMatrix4dv,
+ glProgramUniformMatrix2x3fv,
+ glProgramUniformMatrix3x2fv,
+ glProgramUniformMatrix2x4fv,
+ glProgramUniformMatrix4x2fv,
+ glProgramUniformMatrix3x4fv,
+ glProgramUniformMatrix4x3fv,
+ glProgramUniformMatrix2x3dv,
+ glProgramUniformMatrix3x2dv,
+ glProgramUniformMatrix2x4dv,
+ glProgramUniformMatrix4x2dv,
+ glProgramUniformMatrix3x4dv,
+ glProgramUniformMatrix4x3dv,
+ glValidateProgramPipeline,
+ glGetProgramPipelineInfoLog,
+ glVertexAttribL1d,
+ glVertexAttribL2d,
+ glVertexAttribL3d,
+ glVertexAttribL4d,
+ glVertexAttribL1dv,
+ glVertexAttribL2dv,
+ glVertexAttribL3dv,
+ glVertexAttribL4dv,
+ glVertexAttribLPointer,
+ glGetVertexAttribLdv,
+ glViewportArrayv,
+ glViewportIndexedf,
+ glViewportIndexedfv,
+ glScissorArrayv,
+ glScissorIndexed,
+ glScissorIndexedv,
+ glDepthRangeArrayv,
+ glDepthRangeIndexed,
+ glGetFloati_v,
+ glGetDoublei_v;
+
+ // GL42
+ public final long
+ glGetActiveAtomicCounterBufferiv,
+ glTexStorage1D,
+ glTexStorage2D,
+ glTexStorage3D,
+ glDrawTransformFeedbackInstanced,
+ glDrawTransformFeedbackStreamInstanced,
+ glDrawArraysInstancedBaseInstance,
+ glDrawElementsInstancedBaseInstance,
+ glDrawElementsInstancedBaseVertexBaseInstance,
+ glBindImageTexture,
+ glMemoryBarrier,
+ glGetInternalformativ;
+
+ // GL43
+ public final long
+ glClearBufferData,
+ glClearBufferSubData,
+ glDispatchCompute,
+ glDispatchComputeIndirect,
+ glCopyImageSubData,
+ glDebugMessageControl,
+ glDebugMessageInsert,
+ glDebugMessageCallback,
+ glGetDebugMessageLog,
+ glPushDebugGroup,
+ glPopDebugGroup,
+ glObjectLabel,
+ glGetObjectLabel,
+ glObjectPtrLabel,
+ glGetObjectPtrLabel,
+ glFramebufferParameteri,
+ glGetFramebufferParameteriv,
+ glGetInternalformati64v,
+ glInvalidateTexSubImage,
+ glInvalidateTexImage,
+ glInvalidateBufferSubData,
+ glInvalidateBufferData,
+ glInvalidateFramebuffer,
+ glInvalidateSubFramebuffer,
+ glMultiDrawArraysIndirect,
+ glMultiDrawElementsIndirect,
+ glGetProgramInterfaceiv,
+ glGetProgramResourceIndex,
+ glGetProgramResourceName,
+ glGetProgramResourceiv,
+ glGetProgramResourceLocation,
+ glGetProgramResourceLocationIndex,
+ glShaderStorageBlockBinding,
+ glTexBufferRange,
+ glTexStorage2DMultisample,
+ glTexStorage3DMultisample,
+ glTextureView,
+ glBindVertexBuffer,
+ glVertexAttribFormat,
+ glVertexAttribIFormat,
+ glVertexAttribLFormat,
+ glVertexAttribBinding,
+ glVertexBindingDivisor;
+
+ // GL44
+ public final long
+ glBufferStorage,
+ glClearTexSubImage,
+ glClearTexImage,
+ glBindBuffersBase,
+ glBindBuffersRange,
+ glBindTextures,
+ glBindSamplers,
+ glBindImageTextures,
+ glBindVertexBuffers;
+
+ // GL45
+ public final long
+ glClipControl,
+ glCreateTransformFeedbacks,
+ glTransformFeedbackBufferBase,
+ glTransformFeedbackBufferRange,
+ glGetTransformFeedbackiv,
+ glGetTransformFeedbacki_v,
+ glGetTransformFeedbacki64_v,
+ glCreateBuffers,
+ glNamedBufferStorage,
+ glNamedBufferData,
+ glNamedBufferSubData,
+ glCopyNamedBufferSubData,
+ glClearNamedBufferData,
+ glClearNamedBufferSubData,
+ glMapNamedBuffer,
+ glMapNamedBufferRange,
+ glUnmapNamedBuffer,
+ glFlushMappedNamedBufferRange,
+ glGetNamedBufferParameteriv,
+ glGetNamedBufferParameteri64v,
+ glGetNamedBufferPointerv,
+ glGetNamedBufferSubData,
+ glCreateFramebuffers,
+ glNamedFramebufferRenderbuffer,
+ glNamedFramebufferParameteri,
+ glNamedFramebufferTexture,
+ glNamedFramebufferTextureLayer,
+ glNamedFramebufferDrawBuffer,
+ glNamedFramebufferDrawBuffers,
+ glNamedFramebufferReadBuffer,
+ glInvalidateNamedFramebufferData,
+ glInvalidateNamedFramebufferSubData,
+ glClearNamedFramebufferiv,
+ glClearNamedFramebufferuiv,
+ glClearNamedFramebufferfv,
+ glClearNamedFramebufferfi,
+ glBlitNamedFramebuffer,
+ glCheckNamedFramebufferStatus,
+ glGetNamedFramebufferParameteriv,
+ glGetNamedFramebufferAttachmentParameteriv,
+ glCreateRenderbuffers,
+ glNamedRenderbufferStorage,
+ glNamedRenderbufferStorageMultisample,
+ glGetNamedRenderbufferParameteriv,
+ glCreateTextures,
+ glTextureBuffer,
+ glTextureBufferRange,
+ glTextureStorage1D,
+ glTextureStorage2D,
+ glTextureStorage3D,
+ glTextureStorage2DMultisample,
+ glTextureStorage3DMultisample,
+ glTextureSubImage1D,
+ glTextureSubImage2D,
+ glTextureSubImage3D,
+ glCompressedTextureSubImage1D,
+ glCompressedTextureSubImage2D,
+ glCompressedTextureSubImage3D,
+ glCopyTextureSubImage1D,
+ glCopyTextureSubImage2D,
+ glCopyTextureSubImage3D,
+ glTextureParameterf,
+ glTextureParameterfv,
+ glTextureParameteri,
+ glTextureParameterIiv,
+ glTextureParameterIuiv,
+ glTextureParameteriv,
+ glGenerateTextureMipmap,
+ glBindTextureUnit,
+ glGetTextureImage,
+ glGetCompressedTextureImage,
+ glGetTextureLevelParameterfv,
+ glGetTextureLevelParameteriv,
+ glGetTextureParameterfv,
+ glGetTextureParameterIiv,
+ glGetTextureParameterIuiv,
+ glGetTextureParameteriv,
+ glCreateVertexArrays,
+ glDisableVertexArrayAttrib,
+ glEnableVertexArrayAttrib,
+ glVertexArrayElementBuffer,
+ glVertexArrayVertexBuffer,
+ glVertexArrayVertexBuffers,
+ glVertexArrayAttribFormat,
+ glVertexArrayAttribIFormat,
+ glVertexArrayAttribLFormat,
+ glVertexArrayAttribBinding,
+ glVertexArrayBindingDivisor,
+ glGetVertexArrayiv,
+ glGetVertexArrayIndexediv,
+ glGetVertexArrayIndexed64iv,
+ glCreateSamplers,
+ glCreateProgramPipelines,
+ glCreateQueries,
+ glGetQueryBufferObjectiv,
+ glGetQueryBufferObjectuiv,
+ glGetQueryBufferObjecti64v,
+ glGetQueryBufferObjectui64v,
+ glMemoryBarrierByRegion,
+ glGetTextureSubImage,
+ glGetCompressedTextureSubImage,
+ glTextureBarrier,
+ glGetGraphicsResetStatus,
+ glGetnMapdv,
+ glGetnMapfv,
+ glGetnMapiv,
+ glGetnPixelMapfv,
+ glGetnPixelMapuiv,
+ glGetnPixelMapusv,
+ glGetnPolygonStipple,
+ glGetnTexImage,
+ glReadnPixels,
+ glGetnColorTable,
+ glGetnConvolutionFilter,
+ glGetnSeparableFilter,
+ glGetnHistogram,
+ glGetnMinmax,
+ glGetnCompressedTexImage,
+ glGetnUniformfv,
+ glGetnUniformdv,
+ glGetnUniformiv,
+ glGetnUniformuiv;
+
+ // GL46
+ public final long
+ glMultiDrawArraysIndirectCount,
+ glMultiDrawElementsIndirectCount,
+ glPolygonOffsetClamp,
+ glSpecializeShader;
+
+ // AMD_debug_output
+ public final long
+ glDebugMessageEnableAMD,
+ glDebugMessageInsertAMD,
+ glDebugMessageCallbackAMD,
+ glGetDebugMessageLogAMD;
+
+ // AMD_draw_buffers_blend
+ public final long
+ glBlendFuncIndexedAMD,
+ glBlendFuncSeparateIndexedAMD,
+ glBlendEquationIndexedAMD,
+ glBlendEquationSeparateIndexedAMD;
+
+ // AMD_framebuffer_multisample_advanced
+ public final long
+ glRenderbufferStorageMultisampleAdvancedAMD,
+ glNamedRenderbufferStorageMultisampleAdvancedAMD;
+
+ // AMD_gpu_shader_int64
+ public final long
+ glUniform1i64NV,
+ glUniform2i64NV,
+ glUniform3i64NV,
+ glUniform4i64NV,
+ glUniform1i64vNV,
+ glUniform2i64vNV,
+ glUniform3i64vNV,
+ glUniform4i64vNV,
+ glUniform1ui64NV,
+ glUniform2ui64NV,
+ glUniform3ui64NV,
+ glUniform4ui64NV,
+ glUniform1ui64vNV,
+ glUniform2ui64vNV,
+ glUniform3ui64vNV,
+ glUniform4ui64vNV,
+ glGetUniformi64vNV,
+ glGetUniformui64vNV,
+ glProgramUniform1i64NV,
+ glProgramUniform2i64NV,
+ glProgramUniform3i64NV,
+ glProgramUniform4i64NV,
+ glProgramUniform1i64vNV,
+ glProgramUniform2i64vNV,
+ glProgramUniform3i64vNV,
+ glProgramUniform4i64vNV,
+ glProgramUniform1ui64NV,
+ glProgramUniform2ui64NV,
+ glProgramUniform3ui64NV,
+ glProgramUniform4ui64NV,
+ glProgramUniform1ui64vNV,
+ glProgramUniform2ui64vNV,
+ glProgramUniform3ui64vNV,
+ glProgramUniform4ui64vNV;
+
+ // AMD_interleaved_elements
+ public final long
+ glVertexAttribParameteriAMD;
+
+ // AMD_occlusion_query_event
+ public final long
+ glQueryObjectParameteruiAMD;
+
+ // AMD_performance_monitor
+ public final long
+ glGetPerfMonitorGroupsAMD,
+ glGetPerfMonitorCountersAMD,
+ glGetPerfMonitorGroupStringAMD,
+ glGetPerfMonitorCounterStringAMD,
+ glGetPerfMonitorCounterInfoAMD,
+ glGenPerfMonitorsAMD,
+ glDeletePerfMonitorsAMD,
+ glSelectPerfMonitorCountersAMD,
+ glBeginPerfMonitorAMD,
+ glEndPerfMonitorAMD,
+ glGetPerfMonitorCounterDataAMD;
+
+ // AMD_sample_positions
+ public final long
+ glSetMultisamplefvAMD;
+
+ // AMD_sparse_texture
+ public final long
+ glTexStorageSparseAMD,
+ glTextureStorageSparseAMD;
+
+ // AMD_stencil_operation_extended
+ public final long
+ glStencilOpValueAMD;
+
+ // AMD_vertex_shader_tessellator
+ public final long
+ glTessellationFactorAMD,
+ glTessellationModeAMD;
+
+ // ARB_bindless_texture
+ public final long
+ glGetTextureHandleARB,
+ glGetTextureSamplerHandleARB,
+ glMakeTextureHandleResidentARB,
+ glMakeTextureHandleNonResidentARB,
+ glGetImageHandleARB,
+ glMakeImageHandleResidentARB,
+ glMakeImageHandleNonResidentARB,
+ glUniformHandleui64ARB,
+ glUniformHandleui64vARB,
+ glProgramUniformHandleui64ARB,
+ glProgramUniformHandleui64vARB,
+ glIsTextureHandleResidentARB,
+ glIsImageHandleResidentARB,
+ glVertexAttribL1ui64ARB,
+ glVertexAttribL1ui64vARB,
+ glGetVertexAttribLui64vARB;
+
+ // ARB_buffer_storage
+ public final long
+ glNamedBufferStorageEXT;
+
+ // ARB_cl_event
+ public final long
+ glCreateSyncFromCLeventARB;
+
+ // ARB_clear_buffer_object
+ public final long
+ glClearNamedBufferDataEXT,
+ glClearNamedBufferSubDataEXT;
+
+ // ARB_color_buffer_float
+ public final long
+ glClampColorARB;
+
+ // ARB_compute_variable_group_size
+ public final long
+ glDispatchComputeGroupSizeARB;
+
+ // ARB_debug_output
+ public final long
+ glDebugMessageControlARB,
+ glDebugMessageInsertARB,
+ glDebugMessageCallbackARB,
+ glGetDebugMessageLogARB;
+
+ // ARB_draw_buffers
+ public final long
+ glDrawBuffersARB;
+
+ // ARB_draw_buffers_blend
+ public final long
+ glBlendEquationiARB,
+ glBlendEquationSeparateiARB,
+ glBlendFunciARB,
+ glBlendFuncSeparateiARB;
+
+ // ARB_draw_instanced
+ public final long
+ glDrawArraysInstancedARB,
+ glDrawElementsInstancedARB;
+
+ // ARB_ES3_2_compatibility
+ public final long
+ glPrimitiveBoundingBoxARB;
+
+ // ARB_framebuffer_no_attachments
+ public final long
+ glNamedFramebufferParameteriEXT,
+ glGetNamedFramebufferParameterivEXT;
+
+ // ARB_geometry_shader4
+ public final long
+ glProgramParameteriARB,
+ glFramebufferTextureARB,
+ glFramebufferTextureLayerARB,
+ glFramebufferTextureFaceARB;
+
+ // ARB_gl_spirv
+ public final long
+ glSpecializeShaderARB;
+
+ // ARB_gpu_shader_fp64
+ public final long
+ glProgramUniform1dEXT,
+ glProgramUniform2dEXT,
+ glProgramUniform3dEXT,
+ glProgramUniform4dEXT,
+ glProgramUniform1dvEXT,
+ glProgramUniform2dvEXT,
+ glProgramUniform3dvEXT,
+ glProgramUniform4dvEXT,
+ glProgramUniformMatrix2dvEXT,
+ glProgramUniformMatrix3dvEXT,
+ glProgramUniformMatrix4dvEXT,
+ glProgramUniformMatrix2x3dvEXT,
+ glProgramUniformMatrix2x4dvEXT,
+ glProgramUniformMatrix3x2dvEXT,
+ glProgramUniformMatrix3x4dvEXT,
+ glProgramUniformMatrix4x2dvEXT,
+ glProgramUniformMatrix4x3dvEXT;
+
+ // ARB_gpu_shader_int64
+ public final long
+ glUniform1i64ARB,
+ glUniform1i64vARB,
+ glProgramUniform1i64ARB,
+ glProgramUniform1i64vARB,
+ glUniform2i64ARB,
+ glUniform2i64vARB,
+ glProgramUniform2i64ARB,
+ glProgramUniform2i64vARB,
+ glUniform3i64ARB,
+ glUniform3i64vARB,
+ glProgramUniform3i64ARB,
+ glProgramUniform3i64vARB,
+ glUniform4i64ARB,
+ glUniform4i64vARB,
+ glProgramUniform4i64ARB,
+ glProgramUniform4i64vARB,
+ glUniform1ui64ARB,
+ glUniform1ui64vARB,
+ glProgramUniform1ui64ARB,
+ glProgramUniform1ui64vARB,
+ glUniform2ui64ARB,
+ glUniform2ui64vARB,
+ glProgramUniform2ui64ARB,
+ glProgramUniform2ui64vARB,
+ glUniform3ui64ARB,
+ glUniform3ui64vARB,
+ glProgramUniform3ui64ARB,
+ glProgramUniform3ui64vARB,
+ glUniform4ui64ARB,
+ glUniform4ui64vARB,
+ glProgramUniform4ui64ARB,
+ glProgramUniform4ui64vARB,
+ glGetUniformi64vARB,
+ glGetUniformui64vARB,
+ glGetnUniformi64vARB,
+ glGetnUniformui64vARB;
+
+ // ARB_imaging
+ public final long
+ glColorTable,
+ glCopyColorTable,
+ glColorTableParameteriv,
+ glColorTableParameterfv,
+ glGetColorTable,
+ glGetColorTableParameteriv,
+ glGetColorTableParameterfv,
+ glColorSubTable,
+ glCopyColorSubTable,
+ glConvolutionFilter1D,
+ glConvolutionFilter2D,
+ glCopyConvolutionFilter1D,
+ glCopyConvolutionFilter2D,
+ glGetConvolutionFilter,
+ glSeparableFilter2D,
+ glGetSeparableFilter,
+ glConvolutionParameteri,
+ glConvolutionParameteriv,
+ glConvolutionParameterf,
+ glConvolutionParameterfv,
+ glGetConvolutionParameteriv,
+ glGetConvolutionParameterfv,
+ glHistogram,
+ glResetHistogram,
+ glGetHistogram,
+ glGetHistogramParameteriv,
+ glGetHistogramParameterfv,
+ glMinmax,
+ glResetMinmax,
+ glGetMinmax,
+ glGetMinmaxParameteriv,
+ glGetMinmaxParameterfv;
+
+ // ARB_indirect_parameters
+ public final long
+ glMultiDrawArraysIndirectCountARB,
+ glMultiDrawElementsIndirectCountARB;
+
+ // ARB_instanced_arrays
+ public final long
+ glVertexAttribDivisorARB,
+ glVertexArrayVertexAttribDivisorEXT;
+
+ // ARB_matrix_palette
+ public final long
+ glCurrentPaletteMatrixARB,
+ glMatrixIndexuivARB,
+ glMatrixIndexubvARB,
+ glMatrixIndexusvARB,
+ glMatrixIndexPointerARB;
+
+ // ARB_multisample
+ public final long
+ glSampleCoverageARB;
+
+ // ARB_multitexture
+ public final long
+ glActiveTextureARB,
+ glClientActiveTextureARB,
+ glMultiTexCoord1fARB,
+ glMultiTexCoord1sARB,
+ glMultiTexCoord1iARB,
+ glMultiTexCoord1dARB,
+ glMultiTexCoord1fvARB,
+ glMultiTexCoord1svARB,
+ glMultiTexCoord1ivARB,
+ glMultiTexCoord1dvARB,
+ glMultiTexCoord2fARB,
+ glMultiTexCoord2sARB,
+ glMultiTexCoord2iARB,
+ glMultiTexCoord2dARB,
+ glMultiTexCoord2fvARB,
+ glMultiTexCoord2svARB,
+ glMultiTexCoord2ivARB,
+ glMultiTexCoord2dvARB,
+ glMultiTexCoord3fARB,
+ glMultiTexCoord3sARB,
+ glMultiTexCoord3iARB,
+ glMultiTexCoord3dARB,
+ glMultiTexCoord3fvARB,
+ glMultiTexCoord3svARB,
+ glMultiTexCoord3ivARB,
+ glMultiTexCoord3dvARB,
+ glMultiTexCoord4fARB,
+ glMultiTexCoord4sARB,
+ glMultiTexCoord4iARB,
+ glMultiTexCoord4dARB,
+ glMultiTexCoord4fvARB,
+ glMultiTexCoord4svARB,
+ glMultiTexCoord4ivARB,
+ glMultiTexCoord4dvARB;
+
+ // ARB_occlusion_query
+ public final long
+ glGenQueriesARB,
+ glDeleteQueriesARB,
+ glIsQueryARB,
+ glBeginQueryARB,
+ glEndQueryARB,
+ glGetQueryivARB,
+ glGetQueryObjectivARB,
+ glGetQueryObjectuivARB;
+
+ // ARB_parallel_shader_compile
+ public final long
+ glMaxShaderCompilerThreadsARB;
+
+ // ARB_point_parameters
+ public final long
+ glPointParameterfARB,
+ glPointParameterfvARB;
+
+ // ARB_robustness
+ public final long
+ glGetGraphicsResetStatusARB,
+ glGetnMapdvARB,
+ glGetnMapfvARB,
+ glGetnMapivARB,
+ glGetnPixelMapfvARB,
+ glGetnPixelMapuivARB,
+ glGetnPixelMapusvARB,
+ glGetnPolygonStippleARB,
+ glGetnTexImageARB,
+ glReadnPixelsARB,
+ glGetnColorTableARB,
+ glGetnConvolutionFilterARB,
+ glGetnSeparableFilterARB,
+ glGetnHistogramARB,
+ glGetnMinmaxARB,
+ glGetnCompressedTexImageARB,
+ glGetnUniformfvARB,
+ glGetnUniformivARB,
+ glGetnUniformuivARB,
+ glGetnUniformdvARB;
+
+ // ARB_sample_locations
+ public final long
+ glFramebufferSampleLocationsfvARB,
+ glNamedFramebufferSampleLocationsfvARB,
+ glEvaluateDepthValuesARB;
+
+ // ARB_sample_shading
+ public final long
+ glMinSampleShadingARB;
+
+ // ARB_shader_objects
+ public final long
+ glDeleteObjectARB,
+ glGetHandleARB,
+ glDetachObjectARB,
+ glCreateShaderObjectARB,
+ glShaderSourceARB,
+ glCompileShaderARB,
+ glCreateProgramObjectARB,
+ glAttachObjectARB,
+ glLinkProgramARB,
+ glUseProgramObjectARB,
+ glValidateProgramARB,
+ glUniform1fARB,
+ glUniform2fARB,
+ glUniform3fARB,
+ glUniform4fARB,
+ glUniform1iARB,
+ glUniform2iARB,
+ glUniform3iARB,
+ glUniform4iARB,
+ glUniform1fvARB,
+ glUniform2fvARB,
+ glUniform3fvARB,
+ glUniform4fvARB,
+ glUniform1ivARB,
+ glUniform2ivARB,
+ glUniform3ivARB,
+ glUniform4ivARB,
+ glUniformMatrix2fvARB,
+ glUniformMatrix3fvARB,
+ glUniformMatrix4fvARB,
+ glGetObjectParameterfvARB,
+ glGetObjectParameterivARB,
+ glGetInfoLogARB,
+ glGetAttachedObjectsARB,
+ glGetUniformLocationARB,
+ glGetActiveUniformARB,
+ glGetUniformfvARB,
+ glGetUniformivARB,
+ glGetShaderSourceARB;
+
+ // ARB_shading_language_include
+ public final long
+ glNamedStringARB,
+ glDeleteNamedStringARB,
+ glCompileShaderIncludeARB,
+ glIsNamedStringARB,
+ glGetNamedStringARB,
+ glGetNamedStringivARB;
+
+ // ARB_sparse_buffer
+ public final long
+ glBufferPageCommitmentARB,
+ glNamedBufferPageCommitmentEXT,
+ glNamedBufferPageCommitmentARB;
+
+ // ARB_sparse_texture
+ public final long
+ glTexPageCommitmentARB,
+ glTexturePageCommitmentEXT;
+
+ // ARB_texture_buffer_object
+ public final long
+ glTexBufferARB;
+
+ // ARB_texture_buffer_range
+ public final long
+ glTextureBufferRangeEXT;
+
+ // ARB_texture_compression
+ public final long
+ glCompressedTexImage3DARB,
+ glCompressedTexImage2DARB,
+ glCompressedTexImage1DARB,
+ glCompressedTexSubImage3DARB,
+ glCompressedTexSubImage2DARB,
+ glCompressedTexSubImage1DARB,
+ glGetCompressedTexImageARB;
+
+ // ARB_texture_storage
+ public final long
+ glTextureStorage1DEXT,
+ glTextureStorage2DEXT,
+ glTextureStorage3DEXT;
+
+ // ARB_texture_storage_multisample
+ public final long
+ glTextureStorage2DMultisampleEXT,
+ glTextureStorage3DMultisampleEXT;
+
+ // ARB_transpose_matrix
+ public final long
+ glLoadTransposeMatrixfARB,
+ glLoadTransposeMatrixdARB,
+ glMultTransposeMatrixfARB,
+ glMultTransposeMatrixdARB;
+
+ // ARB_vertex_attrib_64bit
+ public final long
+ glVertexArrayVertexAttribLOffsetEXT;
+
+ // ARB_vertex_attrib_binding
+ public final long
+ glVertexArrayBindVertexBufferEXT,
+ glVertexArrayVertexAttribFormatEXT,
+ glVertexArrayVertexAttribIFormatEXT,
+ glVertexArrayVertexAttribLFormatEXT,
+ glVertexArrayVertexAttribBindingEXT,
+ glVertexArrayVertexBindingDivisorEXT;
+
+ // ARB_vertex_blend
+ public final long
+ glWeightfvARB,
+ glWeightbvARB,
+ glWeightubvARB,
+ glWeightsvARB,
+ glWeightusvARB,
+ glWeightivARB,
+ glWeightuivARB,
+ glWeightdvARB,
+ glWeightPointerARB,
+ glVertexBlendARB;
+
+ // ARB_vertex_buffer_object
+ public final long
+ glBindBufferARB,
+ glDeleteBuffersARB,
+ glGenBuffersARB,
+ glIsBufferARB,
+ glBufferDataARB,
+ glBufferSubDataARB,
+ glGetBufferSubDataARB,
+ glMapBufferARB,
+ glUnmapBufferARB,
+ glGetBufferParameterivARB,
+ glGetBufferPointervARB;
+
+ // ARB_vertex_program
+ public final long
+ glVertexAttrib1sARB,
+ glVertexAttrib1fARB,
+ glVertexAttrib1dARB,
+ glVertexAttrib2sARB,
+ glVertexAttrib2fARB,
+ glVertexAttrib2dARB,
+ glVertexAttrib3sARB,
+ glVertexAttrib3fARB,
+ glVertexAttrib3dARB,
+ glVertexAttrib4sARB,
+ glVertexAttrib4fARB,
+ glVertexAttrib4dARB,
+ glVertexAttrib4NubARB,
+ glVertexAttrib1svARB,
+ glVertexAttrib1fvARB,
+ glVertexAttrib1dvARB,
+ glVertexAttrib2svARB,
+ glVertexAttrib2fvARB,
+ glVertexAttrib2dvARB,
+ glVertexAttrib3svARB,
+ glVertexAttrib3fvARB,
+ glVertexAttrib3dvARB,
+ glVertexAttrib4fvARB,
+ glVertexAttrib4bvARB,
+ glVertexAttrib4svARB,
+ glVertexAttrib4ivARB,
+ glVertexAttrib4ubvARB,
+ glVertexAttrib4usvARB,
+ glVertexAttrib4uivARB,
+ glVertexAttrib4dvARB,
+ glVertexAttrib4NbvARB,
+ glVertexAttrib4NsvARB,
+ glVertexAttrib4NivARB,
+ glVertexAttrib4NubvARB,
+ glVertexAttrib4NusvARB,
+ glVertexAttrib4NuivARB,
+ glVertexAttribPointerARB,
+ glEnableVertexAttribArrayARB,
+ glDisableVertexAttribArrayARB,
+ glProgramStringARB,
+ glBindProgramARB,
+ glDeleteProgramsARB,
+ glGenProgramsARB,
+ glProgramEnvParameter4dARB,
+ glProgramEnvParameter4dvARB,
+ glProgramEnvParameter4fARB,
+ glProgramEnvParameter4fvARB,
+ glProgramLocalParameter4dARB,
+ glProgramLocalParameter4dvARB,
+ glProgramLocalParameter4fARB,
+ glProgramLocalParameter4fvARB,
+ glGetProgramEnvParameterfvARB,
+ glGetProgramEnvParameterdvARB,
+ glGetProgramLocalParameterfvARB,
+ glGetProgramLocalParameterdvARB,
+ glGetProgramivARB,
+ glGetProgramStringARB,
+ glGetVertexAttribfvARB,
+ glGetVertexAttribdvARB,
+ glGetVertexAttribivARB,
+ glGetVertexAttribPointervARB,
+ glIsProgramARB;
+
+ // ARB_vertex_shader
+ public final long
+ glBindAttribLocationARB,
+ glGetActiveAttribARB,
+ glGetAttribLocationARB;
+
+ // ARB_window_pos
+ public final long
+ glWindowPos2iARB,
+ glWindowPos2sARB,
+ glWindowPos2fARB,
+ glWindowPos2dARB,
+ glWindowPos2ivARB,
+ glWindowPos2svARB,
+ glWindowPos2fvARB,
+ glWindowPos2dvARB,
+ glWindowPos3iARB,
+ glWindowPos3sARB,
+ glWindowPos3fARB,
+ glWindowPos3dARB,
+ glWindowPos3ivARB,
+ glWindowPos3svARB,
+ glWindowPos3fvARB,
+ glWindowPos3dvARB;
+
+ // EXT_bindable_uniform
+ public final long
+ glUniformBufferEXT,
+ glGetUniformBufferSizeEXT,
+ glGetUniformOffsetEXT;
+
+ // EXT_blend_color
+ public final long
+ glBlendColorEXT;
+
+ // EXT_blend_equation_separate
+ public final long
+ glBlendEquationSeparateEXT;
+
+ // EXT_blend_func_separate
+ public final long
+ glBlendFuncSeparateEXT;
+
+ // EXT_blend_minmax
+ public final long
+ glBlendEquationEXT;
+
+ // EXT_compiled_vertex_array
+ public final long
+ glLockArraysEXT,
+ glUnlockArraysEXT;
+
+ // EXT_debug_label
+ public final long
+ glLabelObjectEXT,
+ glGetObjectLabelEXT;
+
+ // EXT_debug_marker
+ public final long
+ glInsertEventMarkerEXT,
+ glPushGroupMarkerEXT,
+ glPopGroupMarkerEXT;
+
+ // EXT_depth_bounds_test
+ public final long
+ glDepthBoundsEXT;
+
+ // EXT_direct_state_access
+ public final long
+ glClientAttribDefaultEXT,
+ glPushClientAttribDefaultEXT,
+ glMatrixLoadfEXT,
+ glMatrixLoaddEXT,
+ glMatrixMultfEXT,
+ glMatrixMultdEXT,
+ glMatrixLoadIdentityEXT,
+ glMatrixRotatefEXT,
+ glMatrixRotatedEXT,
+ glMatrixScalefEXT,
+ glMatrixScaledEXT,
+ glMatrixTranslatefEXT,
+ glMatrixTranslatedEXT,
+ glMatrixOrthoEXT,
+ glMatrixFrustumEXT,
+ glMatrixPushEXT,
+ glMatrixPopEXT,
+ glTextureParameteriEXT,
+ glTextureParameterivEXT,
+ glTextureParameterfEXT,
+ glTextureParameterfvEXT,
+ glTextureImage1DEXT,
+ glTextureImage2DEXT,
+ glTextureSubImage1DEXT,
+ glTextureSubImage2DEXT,
+ glCopyTextureImage1DEXT,
+ glCopyTextureImage2DEXT,
+ glCopyTextureSubImage1DEXT,
+ glCopyTextureSubImage2DEXT,
+ glGetTextureImageEXT,
+ glGetTextureParameterfvEXT,
+ glGetTextureParameterivEXT,
+ glGetTextureLevelParameterfvEXT,
+ glGetTextureLevelParameterivEXT,
+ glTextureImage3DEXT,
+ glTextureSubImage3DEXT,
+ glCopyTextureSubImage3DEXT,
+ glBindMultiTextureEXT,
+ glMultiTexCoordPointerEXT,
+ glMultiTexEnvfEXT,
+ glMultiTexEnvfvEXT,
+ glMultiTexEnviEXT,
+ glMultiTexEnvivEXT,
+ glMultiTexGendEXT,
+ glMultiTexGendvEXT,
+ glMultiTexGenfEXT,
+ glMultiTexGenfvEXT,
+ glMultiTexGeniEXT,
+ glMultiTexGenivEXT,
+ glGetMultiTexEnvfvEXT,
+ glGetMultiTexEnvivEXT,
+ glGetMultiTexGendvEXT,
+ glGetMultiTexGenfvEXT,
+ glGetMultiTexGenivEXT,
+ glMultiTexParameteriEXT,
+ glMultiTexParameterivEXT,
+ glMultiTexParameterfEXT,
+ glMultiTexParameterfvEXT,
+ glMultiTexImage1DEXT,
+ glMultiTexImage2DEXT,
+ glMultiTexSubImage1DEXT,
+ glMultiTexSubImage2DEXT,
+ glCopyMultiTexImage1DEXT,
+ glCopyMultiTexImage2DEXT,
+ glCopyMultiTexSubImage1DEXT,
+ glCopyMultiTexSubImage2DEXT,
+ glGetMultiTexImageEXT,
+ glGetMultiTexParameterfvEXT,
+ glGetMultiTexParameterivEXT,
+ glGetMultiTexLevelParameterfvEXT,
+ glGetMultiTexLevelParameterivEXT,
+ glMultiTexImage3DEXT,
+ glMultiTexSubImage3DEXT,
+ glCopyMultiTexSubImage3DEXT,
+ glEnableClientStateIndexedEXT,
+ glDisableClientStateIndexedEXT,
+ glEnableClientStateiEXT,
+ glDisableClientStateiEXT,
+ glGetFloatIndexedvEXT,
+ glGetDoubleIndexedvEXT,
+ glGetPointerIndexedvEXT,
+ glGetFloati_vEXT,
+ glGetDoublei_vEXT,
+ glGetPointeri_vEXT,
+ glEnableIndexedEXT,
+ glDisableIndexedEXT,
+ glIsEnabledIndexedEXT,
+ glGetIntegerIndexedvEXT,
+ glGetBooleanIndexedvEXT,
+ glNamedProgramStringEXT,
+ glNamedProgramLocalParameter4dEXT,
+ glNamedProgramLocalParameter4dvEXT,
+ glNamedProgramLocalParameter4fEXT,
+ glNamedProgramLocalParameter4fvEXT,
+ glGetNamedProgramLocalParameterdvEXT,
+ glGetNamedProgramLocalParameterfvEXT,
+ glGetNamedProgramivEXT,
+ glGetNamedProgramStringEXT,
+ glCompressedTextureImage3DEXT,
+ glCompressedTextureImage2DEXT,
+ glCompressedTextureImage1DEXT,
+ glCompressedTextureSubImage3DEXT,
+ glCompressedTextureSubImage2DEXT,
+ glCompressedTextureSubImage1DEXT,
+ glGetCompressedTextureImageEXT,
+ glCompressedMultiTexImage3DEXT,
+ glCompressedMultiTexImage2DEXT,
+ glCompressedMultiTexImage1DEXT,
+ glCompressedMultiTexSubImage3DEXT,
+ glCompressedMultiTexSubImage2DEXT,
+ glCompressedMultiTexSubImage1DEXT,
+ glGetCompressedMultiTexImageEXT,
+ glMatrixLoadTransposefEXT,
+ glMatrixLoadTransposedEXT,
+ glMatrixMultTransposefEXT,
+ glMatrixMultTransposedEXT,
+ glNamedBufferDataEXT,
+ glNamedBufferSubDataEXT,
+ glMapNamedBufferEXT,
+ glUnmapNamedBufferEXT,
+ glGetNamedBufferParameterivEXT,
+ glGetNamedBufferSubDataEXT,
+ glProgramUniform1fEXT,
+ glProgramUniform2fEXT,
+ glProgramUniform3fEXT,
+ glProgramUniform4fEXT,
+ glProgramUniform1iEXT,
+ glProgramUniform2iEXT,
+ glProgramUniform3iEXT,
+ glProgramUniform4iEXT,
+ glProgramUniform1fvEXT,
+ glProgramUniform2fvEXT,
+ glProgramUniform3fvEXT,
+ glProgramUniform4fvEXT,
+ glProgramUniform1ivEXT,
+ glProgramUniform2ivEXT,
+ glProgramUniform3ivEXT,
+ glProgramUniform4ivEXT,
+ glProgramUniformMatrix2fvEXT,
+ glProgramUniformMatrix3fvEXT,
+ glProgramUniformMatrix4fvEXT,
+ glProgramUniformMatrix2x3fvEXT,
+ glProgramUniformMatrix3x2fvEXT,
+ glProgramUniformMatrix2x4fvEXT,
+ glProgramUniformMatrix4x2fvEXT,
+ glProgramUniformMatrix3x4fvEXT,
+ glProgramUniformMatrix4x3fvEXT,
+ glTextureBufferEXT,
+ glMultiTexBufferEXT,
+ glTextureParameterIivEXT,
+ glTextureParameterIuivEXT,
+ glGetTextureParameterIivEXT,
+ glGetTextureParameterIuivEXT,
+ glMultiTexParameterIivEXT,
+ glMultiTexParameterIuivEXT,
+ glGetMultiTexParameterIivEXT,
+ glGetMultiTexParameterIuivEXT,
+ glProgramUniform1uiEXT,
+ glProgramUniform2uiEXT,
+ glProgramUniform3uiEXT,
+ glProgramUniform4uiEXT,
+ glProgramUniform1uivEXT,
+ glProgramUniform2uivEXT,
+ glProgramUniform3uivEXT,
+ glProgramUniform4uivEXT,
+ glNamedProgramLocalParameters4fvEXT,
+ glNamedProgramLocalParameterI4iEXT,
+ glNamedProgramLocalParameterI4ivEXT,
+ glNamedProgramLocalParametersI4ivEXT,
+ glNamedProgramLocalParameterI4uiEXT,
+ glNamedProgramLocalParameterI4uivEXT,
+ glNamedProgramLocalParametersI4uivEXT,
+ glGetNamedProgramLocalParameterIivEXT,
+ glGetNamedProgramLocalParameterIuivEXT,
+ glNamedRenderbufferStorageEXT,
+ glGetNamedRenderbufferParameterivEXT,
+ glNamedRenderbufferStorageMultisampleEXT,
+ glNamedRenderbufferStorageMultisampleCoverageEXT,
+ glCheckNamedFramebufferStatusEXT,
+ glNamedFramebufferTexture1DEXT,
+ glNamedFramebufferTexture2DEXT,
+ glNamedFramebufferTexture3DEXT,
+ glNamedFramebufferRenderbufferEXT,
+ glGetNamedFramebufferAttachmentParameterivEXT,
+ glGenerateTextureMipmapEXT,
+ glGenerateMultiTexMipmapEXT,
+ glFramebufferDrawBufferEXT,
+ glFramebufferDrawBuffersEXT,
+ glFramebufferReadBufferEXT,
+ glGetFramebufferParameterivEXT,
+ glNamedCopyBufferSubDataEXT,
+ glNamedFramebufferTextureEXT,
+ glNamedFramebufferTextureLayerEXT,
+ glNamedFramebufferTextureFaceEXT,
+ glTextureRenderbufferEXT,
+ glMultiTexRenderbufferEXT,
+ glVertexArrayVertexOffsetEXT,
+ glVertexArrayColorOffsetEXT,
+ glVertexArrayEdgeFlagOffsetEXT,
+ glVertexArrayIndexOffsetEXT,
+ glVertexArrayNormalOffsetEXT,
+ glVertexArrayTexCoordOffsetEXT,
+ glVertexArrayMultiTexCoordOffsetEXT,
+ glVertexArrayFogCoordOffsetEXT,
+ glVertexArraySecondaryColorOffsetEXT,
+ glVertexArrayVertexAttribOffsetEXT,
+ glVertexArrayVertexAttribIOffsetEXT,
+ glEnableVertexArrayEXT,
+ glDisableVertexArrayEXT,
+ glEnableVertexArrayAttribEXT,
+ glDisableVertexArrayAttribEXT,
+ glGetVertexArrayIntegervEXT,
+ glGetVertexArrayPointervEXT,
+ glGetVertexArrayIntegeri_vEXT,
+ glGetVertexArrayPointeri_vEXT,
+ glMapNamedBufferRangeEXT,
+ glFlushMappedNamedBufferRangeEXT;
+
+ // EXT_draw_buffers2
+ public final long
+ glColorMaskIndexedEXT;
+
+ // EXT_draw_instanced
+ public final long
+ glDrawArraysInstancedEXT,
+ glDrawElementsInstancedEXT;
+
+ // EXT_EGL_image_storage
+ public final long
+ glEGLImageTargetTexStorageEXT,
+ glEGLImageTargetTextureStorageEXT;
+
+ // EXT_external_buffer
+ public final long
+ glBufferStorageExternalEXT,
+ glNamedBufferStorageExternalEXT;
+
+ // EXT_framebuffer_blit
+ public final long
+ glBlitFramebufferEXT;
+
+ // EXT_framebuffer_multisample
+ public final long
+ glRenderbufferStorageMultisampleEXT;
+
+ // EXT_framebuffer_object
+ public final long
+ glIsRenderbufferEXT,
+ glBindRenderbufferEXT,
+ glDeleteRenderbuffersEXT,
+ glGenRenderbuffersEXT,
+ glRenderbufferStorageEXT,
+ glGetRenderbufferParameterivEXT,
+ glIsFramebufferEXT,
+ glBindFramebufferEXT,
+ glDeleteFramebuffersEXT,
+ glGenFramebuffersEXT,
+ glCheckFramebufferStatusEXT,
+ glFramebufferTexture1DEXT,
+ glFramebufferTexture2DEXT,
+ glFramebufferTexture3DEXT,
+ glFramebufferRenderbufferEXT,
+ glGetFramebufferAttachmentParameterivEXT,
+ glGenerateMipmapEXT;
+
+ // EXT_geometry_shader4
+ public final long
+ glProgramParameteriEXT,
+ glFramebufferTextureEXT,
+ glFramebufferTextureLayerEXT,
+ glFramebufferTextureFaceEXT;
+
+ // EXT_gpu_program_parameters
+ public final long
+ glProgramEnvParameters4fvEXT,
+ glProgramLocalParameters4fvEXT;
+
+ // EXT_gpu_shader4
+ public final long
+ glVertexAttribI1iEXT,
+ glVertexAttribI2iEXT,
+ glVertexAttribI3iEXT,
+ glVertexAttribI4iEXT,
+ glVertexAttribI1uiEXT,
+ glVertexAttribI2uiEXT,
+ glVertexAttribI3uiEXT,
+ glVertexAttribI4uiEXT,
+ glVertexAttribI1ivEXT,
+ glVertexAttribI2ivEXT,
+ glVertexAttribI3ivEXT,
+ glVertexAttribI4ivEXT,
+ glVertexAttribI1uivEXT,
+ glVertexAttribI2uivEXT,
+ glVertexAttribI3uivEXT,
+ glVertexAttribI4uivEXT,
+ glVertexAttribI4bvEXT,
+ glVertexAttribI4svEXT,
+ glVertexAttribI4ubvEXT,
+ glVertexAttribI4usvEXT,
+ glVertexAttribIPointerEXT,
+ glGetVertexAttribIivEXT,
+ glGetVertexAttribIuivEXT,
+ glGetUniformuivEXT,
+ glBindFragDataLocationEXT,
+ glGetFragDataLocationEXT,
+ glUniform1uiEXT,
+ glUniform2uiEXT,
+ glUniform3uiEXT,
+ glUniform4uiEXT,
+ glUniform1uivEXT,
+ glUniform2uivEXT,
+ glUniform3uivEXT,
+ glUniform4uivEXT;
+
+ // EXT_memory_object
+ public final long
+ glGetUnsignedBytevEXT,
+ glGetUnsignedBytei_vEXT,
+ glDeleteMemoryObjectsEXT,
+ glIsMemoryObjectEXT,
+ glCreateMemoryObjectsEXT,
+ glMemoryObjectParameterivEXT,
+ glGetMemoryObjectParameterivEXT,
+ glTexStorageMem2DEXT,
+ glTexStorageMem2DMultisampleEXT,
+ glTexStorageMem3DEXT,
+ glTexStorageMem3DMultisampleEXT,
+ glBufferStorageMemEXT,
+ glTextureStorageMem2DEXT,
+ glTextureStorageMem2DMultisampleEXT,
+ glTextureStorageMem3DEXT,
+ glTextureStorageMem3DMultisampleEXT,
+ glNamedBufferStorageMemEXT,
+ glTexStorageMem1DEXT,
+ glTextureStorageMem1DEXT;
+
+ // EXT_memory_object_fd
+ public final long
+ glImportMemoryFdEXT;
+
+ // EXT_memory_object_win32
+ public final long
+ glImportMemoryWin32HandleEXT,
+ glImportMemoryWin32NameEXT;
+
+ // EXT_point_parameters
+ public final long
+ glPointParameterfEXT,
+ glPointParameterfvEXT;
+
+ // EXT_polygon_offset_clamp
+ public final long
+ glPolygonOffsetClampEXT;
+
+ // EXT_provoking_vertex
+ public final long
+ glProvokingVertexEXT;
+
+ // EXT_raster_multisample
+ public final long
+ glRasterSamplesEXT;
+
+ // EXT_secondary_color
+ public final long
+ glSecondaryColor3bEXT,
+ glSecondaryColor3sEXT,
+ glSecondaryColor3iEXT,
+ glSecondaryColor3fEXT,
+ glSecondaryColor3dEXT,
+ glSecondaryColor3ubEXT,
+ glSecondaryColor3usEXT,
+ glSecondaryColor3uiEXT,
+ glSecondaryColor3bvEXT,
+ glSecondaryColor3svEXT,
+ glSecondaryColor3ivEXT,
+ glSecondaryColor3fvEXT,
+ glSecondaryColor3dvEXT,
+ glSecondaryColor3ubvEXT,
+ glSecondaryColor3usvEXT,
+ glSecondaryColor3uivEXT,
+ glSecondaryColorPointerEXT;
+
+ // EXT_semaphore
+ public final long
+ glGenSemaphoresEXT,
+ glDeleteSemaphoresEXT,
+ glIsSemaphoreEXT,
+ glSemaphoreParameterui64vEXT,
+ glGetSemaphoreParameterui64vEXT,
+ glWaitSemaphoreEXT,
+ glSignalSemaphoreEXT;
+
+ // EXT_semaphore_fd
+ public final long
+ glImportSemaphoreFdEXT;
+
+ // EXT_semaphore_win32
+ public final long
+ glImportSemaphoreWin32HandleEXT,
+ glImportSemaphoreWin32NameEXT;
+
+ // EXT_separate_shader_objects
+ public final long
+ glUseShaderProgramEXT,
+ glActiveProgramEXT,
+ glCreateShaderProgramEXT;
+
+ // EXT_shader_framebuffer_fetch_non_coherent
+ public final long
+ glFramebufferFetchBarrierEXT;
+
+ // EXT_shader_image_load_store
+ public final long
+ glBindImageTextureEXT,
+ glMemoryBarrierEXT;
+
+ // EXT_stencil_clear_tag
+ public final long
+ glStencilClearTagEXT;
+
+ // EXT_stencil_two_side
+ public final long
+ glActiveStencilFaceEXT;
+
+ // EXT_texture_buffer_object
+ public final long
+ glTexBufferEXT;
+
+ // EXT_texture_integer
+ public final long
+ glClearColorIiEXT,
+ glClearColorIuiEXT,
+ glTexParameterIivEXT,
+ glTexParameterIuivEXT,
+ glGetTexParameterIivEXT,
+ glGetTexParameterIuivEXT;
+
+ // EXT_texture_storage
+ public final long
+ glTexStorage1DEXT,
+ glTexStorage2DEXT,
+ glTexStorage3DEXT;
+
+ // EXT_timer_query
+ public final long
+ glGetQueryObjecti64vEXT,
+ glGetQueryObjectui64vEXT;
+
+ // EXT_transform_feedback
+ public final long
+ glBindBufferRangeEXT,
+ glBindBufferOffsetEXT,
+ glBindBufferBaseEXT,
+ glBeginTransformFeedbackEXT,
+ glEndTransformFeedbackEXT,
+ glTransformFeedbackVaryingsEXT,
+ glGetTransformFeedbackVaryingEXT;
+
+ // EXT_vertex_attrib_64bit
+ public final long
+ glVertexAttribL1dEXT,
+ glVertexAttribL2dEXT,
+ glVertexAttribL3dEXT,
+ glVertexAttribL4dEXT,
+ glVertexAttribL1dvEXT,
+ glVertexAttribL2dvEXT,
+ glVertexAttribL3dvEXT,
+ glVertexAttribL4dvEXT,
+ glVertexAttribLPointerEXT,
+ glGetVertexAttribLdvEXT;
+
+ // EXT_win32_keyed_mutex
+ public final long
+ glAcquireKeyedMutexWin32EXT,
+ glReleaseKeyedMutexWin32EXT;
+
+ // EXT_window_rectangles
+ public final long
+ glWindowRectanglesEXT;
+
+ // EXT_x11_sync_object
+ public final long
+ glImportSyncEXT;
+
+ // GREMEDY_frame_terminator
+ public final long
+ glFrameTerminatorGREMEDY;
+
+ // GREMEDY_string_marker
+ public final long
+ glStringMarkerGREMEDY;
+
+ // INTEL_framebuffer_CMAA
+ public final long
+ glApplyFramebufferAttachmentCMAAINTEL;
+
+ // INTEL_map_texture
+ public final long
+ glSyncTextureINTEL,
+ glUnmapTexture2DINTEL,
+ glMapTexture2DINTEL;
+
+ // INTEL_performance_query
+ public final long
+ glBeginPerfQueryINTEL,
+ glCreatePerfQueryINTEL,
+ glDeletePerfQueryINTEL,
+ glEndPerfQueryINTEL,
+ glGetFirstPerfQueryIdINTEL,
+ glGetNextPerfQueryIdINTEL,
+ glGetPerfCounterInfoINTEL,
+ glGetPerfQueryDataINTEL,
+ glGetPerfQueryIdByNameINTEL,
+ glGetPerfQueryInfoINTEL;
+
+ // KHR_blend_equation_advanced
+ public final long
+ glBlendBarrierKHR;
+
+ // KHR_parallel_shader_compile
+ public final long
+ glMaxShaderCompilerThreadsKHR;
+
+ // MESA_framebuffer_flip_y
+ public final long
+ glFramebufferParameteriMESA,
+ glGetFramebufferParameterivMESA;
+
+ // NV_alpha_to_coverage_dither_control
+ public final long
+ glAlphaToCoverageDitherControlNV;
+
+ // NV_bindless_multi_draw_indirect
+ public final long
+ glMultiDrawArraysIndirectBindlessNV,
+ glMultiDrawElementsIndirectBindlessNV;
+
+ // NV_bindless_multi_draw_indirect_count
+ public final long
+ glMultiDrawArraysIndirectBindlessCountNV,
+ glMultiDrawElementsIndirectBindlessCountNV;
+
+ // NV_bindless_texture
+ public final long
+ glGetTextureHandleNV,
+ glGetTextureSamplerHandleNV,
+ glMakeTextureHandleResidentNV,
+ glMakeTextureHandleNonResidentNV,
+ glGetImageHandleNV,
+ glMakeImageHandleResidentNV,
+ glMakeImageHandleNonResidentNV,
+ glUniformHandleui64NV,
+ glUniformHandleui64vNV,
+ glProgramUniformHandleui64NV,
+ glProgramUniformHandleui64vNV,
+ glIsTextureHandleResidentNV,
+ glIsImageHandleResidentNV;
+
+ // NV_blend_equation_advanced
+ public final long
+ glBlendParameteriNV,
+ glBlendBarrierNV;
+
+ // NV_clip_space_w_scaling
+ public final long
+ glViewportPositionWScaleNV;
+
+ // NV_command_list
+ public final long
+ glCreateStatesNV,
+ glDeleteStatesNV,
+ glIsStateNV,
+ glStateCaptureNV,
+ glGetCommandHeaderNV,
+ glGetStageIndexNV,
+ glDrawCommandsNV,
+ glDrawCommandsAddressNV,
+ glDrawCommandsStatesNV,
+ glDrawCommandsStatesAddressNV,
+ glCreateCommandListsNV,
+ glDeleteCommandListsNV,
+ glIsCommandListNV,
+ glListDrawCommandsStatesClientNV,
+ glCommandListSegmentsNV,
+ glCompileCommandListNV,
+ glCallCommandListNV;
+
+ // NV_conditional_render
+ public final long
+ glBeginConditionalRenderNV,
+ glEndConditionalRenderNV;
+
+ // NV_conservative_raster
+ public final long
+ glSubpixelPrecisionBiasNV;
+
+ // NV_conservative_raster_dilate
+ public final long
+ glConservativeRasterParameterfNV;
+
+ // NV_conservative_raster_pre_snap_triangles
+ public final long
+ glConservativeRasterParameteriNV;
+
+ // NV_copy_image
+ public final long
+ glCopyImageSubDataNV;
+
+ // NV_depth_buffer_float
+ public final long
+ glDepthRangedNV,
+ glClearDepthdNV,
+ glDepthBoundsdNV;
+
+ // NV_draw_texture
+ public final long
+ glDrawTextureNV;
+
+ // NV_draw_vulkan_image
+ public final long
+ glDrawVkImageNV,
+ glGetVkProcAddrNV,
+ glWaitVkSemaphoreNV,
+ glSignalVkSemaphoreNV,
+ glSignalVkFenceNV;
+
+ // NV_explicit_multisample
+ public final long
+ glGetMultisamplefvNV,
+ glSampleMaskIndexedNV,
+ glTexRenderbufferNV;
+
+ // NV_fence
+ public final long
+ glDeleteFencesNV,
+ glGenFencesNV,
+ glIsFenceNV,
+ glTestFenceNV,
+ glGetFenceivNV,
+ glFinishFenceNV,
+ glSetFenceNV;
+
+ // NV_fragment_coverage_to_color
+ public final long
+ glFragmentCoverageColorNV;
+
+ // NV_framebuffer_mixed_samples
+ public final long
+ glCoverageModulationTableNV,
+ glGetCoverageModulationTableNV,
+ glCoverageModulationNV;
+
+ // NV_framebuffer_multisample_coverage
+ public final long
+ glRenderbufferStorageMultisampleCoverageNV;
+
+ // NV_gpu_multicast
+ public final long
+ glRenderGpuMaskNV,
+ glMulticastBufferSubDataNV,
+ glMulticastCopyBufferSubDataNV,
+ glMulticastCopyImageSubDataNV,
+ glMulticastBlitFramebufferNV,
+ glMulticastFramebufferSampleLocationsfvNV,
+ glMulticastBarrierNV,
+ glMulticastWaitSyncNV,
+ glMulticastGetQueryObjectivNV,
+ glMulticastGetQueryObjectuivNV,
+ glMulticastGetQueryObjecti64vNV,
+ glMulticastGetQueryObjectui64vNV;
+
+ // NV_half_float
+ public final long
+ glVertex2hNV,
+ glVertex2hvNV,
+ glVertex3hNV,
+ glVertex3hvNV,
+ glVertex4hNV,
+ glVertex4hvNV,
+ glNormal3hNV,
+ glNormal3hvNV,
+ glColor3hNV,
+ glColor3hvNV,
+ glColor4hNV,
+ glColor4hvNV,
+ glTexCoord1hNV,
+ glTexCoord1hvNV,
+ glTexCoord2hNV,
+ glTexCoord2hvNV,
+ glTexCoord3hNV,
+ glTexCoord3hvNV,
+ glTexCoord4hNV,
+ glTexCoord4hvNV,
+ glMultiTexCoord1hNV,
+ glMultiTexCoord1hvNV,
+ glMultiTexCoord2hNV,
+ glMultiTexCoord2hvNV,
+ glMultiTexCoord3hNV,
+ glMultiTexCoord3hvNV,
+ glMultiTexCoord4hNV,
+ glMultiTexCoord4hvNV,
+ glFogCoordhNV,
+ glFogCoordhvNV,
+ glSecondaryColor3hNV,
+ glSecondaryColor3hvNV,
+ glVertexWeighthNV,
+ glVertexWeighthvNV,
+ glVertexAttrib1hNV,
+ glVertexAttrib1hvNV,
+ glVertexAttrib2hNV,
+ glVertexAttrib2hvNV,
+ glVertexAttrib3hNV,
+ glVertexAttrib3hvNV,
+ glVertexAttrib4hNV,
+ glVertexAttrib4hvNV,
+ glVertexAttribs1hvNV,
+ glVertexAttribs2hvNV,
+ glVertexAttribs3hvNV,
+ glVertexAttribs4hvNV;
+
+ // NV_internalformat_sample_query
+ public final long
+ glGetInternalformatSampleivNV;
+
+ // NV_memory_attachment
+ public final long
+ glGetMemoryObjectDetachedResourcesuivNV,
+ glResetMemoryObjectParameterNV,
+ glTexAttachMemoryNV,
+ glBufferAttachMemoryNV,
+ glTextureAttachMemoryNV,
+ glNamedBufferAttachMemoryNV;
+
+ // NV_memory_object_sparse
+ public final long
+ glBufferPageCommitmentMemNV,
+ glNamedBufferPageCommitmentMemNV,
+ glTexPageCommitmentMemNV,
+ glTexturePageCommitmentMemNV;
+
+ // NV_mesh_shader
+ public final long
+ glDrawMeshTasksNV,
+ glDrawMeshTasksIndirectNV,
+ glMultiDrawMeshTasksIndirectNV,
+ glMultiDrawMeshTasksIndirectCountNV;
+
+ // NV_path_rendering
+ public final long
+ glPathCommandsNV,
+ glPathCoordsNV,
+ glPathSubCommandsNV,
+ glPathSubCoordsNV,
+ glPathStringNV,
+ glPathGlyphsNV,
+ glPathGlyphRangeNV,
+ glPathGlyphIndexArrayNV,
+ glPathMemoryGlyphIndexArrayNV,
+ glCopyPathNV,
+ glWeightPathsNV,
+ glInterpolatePathsNV,
+ glTransformPathNV,
+ glPathParameterivNV,
+ glPathParameteriNV,
+ glPathParameterfvNV,
+ glPathParameterfNV,
+ glPathDashArrayNV,
+ glGenPathsNV,
+ glDeletePathsNV,
+ glIsPathNV,
+ glPathStencilFuncNV,
+ glPathStencilDepthOffsetNV,
+ glStencilFillPathNV,
+ glStencilStrokePathNV,
+ glStencilFillPathInstancedNV,
+ glStencilStrokePathInstancedNV,
+ glPathCoverDepthFuncNV,
+ glPathColorGenNV,
+ glPathTexGenNV,
+ glPathFogGenNV,
+ glCoverFillPathNV,
+ glCoverStrokePathNV,
+ glCoverFillPathInstancedNV,
+ glCoverStrokePathInstancedNV,
+ glStencilThenCoverFillPathNV,
+ glStencilThenCoverStrokePathNV,
+ glStencilThenCoverFillPathInstancedNV,
+ glStencilThenCoverStrokePathInstancedNV,
+ glPathGlyphIndexRangeNV,
+ glProgramPathFragmentInputGenNV,
+ glGetPathParameterivNV,
+ glGetPathParameterfvNV,
+ glGetPathCommandsNV,
+ glGetPathCoordsNV,
+ glGetPathDashArrayNV,
+ glGetPathMetricsNV,
+ glGetPathMetricRangeNV,
+ glGetPathSpacingNV,
+ glGetPathColorGenivNV,
+ glGetPathColorGenfvNV,
+ glGetPathTexGenivNV,
+ glGetPathTexGenfvNV,
+ glIsPointInFillPathNV,
+ glIsPointInStrokePathNV,
+ glGetPathLengthNV,
+ glPointAlongPathNV,
+ glMatrixLoad3x2fNV,
+ glMatrixLoad3x3fNV,
+ glMatrixLoadTranspose3x3fNV,
+ glMatrixMult3x2fNV,
+ glMatrixMult3x3fNV,
+ glMatrixMultTranspose3x3fNV,
+ glGetProgramResourcefvNV;
+
+ // NV_pixel_data_range
+ public final long
+ glPixelDataRangeNV,
+ glFlushPixelDataRangeNV;
+
+ // NV_point_sprite
+ public final long
+ glPointParameteriNV,
+ glPointParameterivNV;
+
+ // NV_primitive_restart
+ public final long
+ glPrimitiveRestartNV,
+ glPrimitiveRestartIndexNV;
+
+ // NV_query_resource
+ public final long
+ glQueryResourceNV;
+
+ // NV_query_resource_tag
+ public final long
+ glGenQueryResourceTagNV,
+ glDeleteQueryResourceTagNV,
+ glQueryResourceTagNV;
+
+ // NV_sample_locations
+ public final long
+ glFramebufferSampleLocationsfvNV,
+ glNamedFramebufferSampleLocationsfvNV,
+ glResolveDepthValuesNV;
+
+ // NV_scissor_exclusive
+ public final long
+ glScissorExclusiveArrayvNV,
+ glScissorExclusiveNV;
+
+ // NV_shader_buffer_load
+ public final long
+ glMakeBufferResidentNV,
+ glMakeBufferNonResidentNV,
+ glIsBufferResidentNV,
+ glMakeNamedBufferResidentNV,
+ glMakeNamedBufferNonResidentNV,
+ glIsNamedBufferResidentNV,
+ glGetBufferParameterui64vNV,
+ glGetNamedBufferParameterui64vNV,
+ glGetIntegerui64vNV,
+ glUniformui64NV,
+ glUniformui64vNV,
+ glProgramUniformui64NV,
+ glProgramUniformui64vNV;
+
+ // NV_shading_rate_image
+ public final long
+ glBindShadingRateImageNV,
+ glShadingRateImagePaletteNV,
+ glGetShadingRateImagePaletteNV,
+ glShadingRateImageBarrierNV,
+ glShadingRateSampleOrderNV,
+ glShadingRateSampleOrderCustomNV,
+ glGetShadingRateSampleLocationivNV;
+
+ // NV_texture_barrier
+ public final long
+ glTextureBarrierNV;
+
+ // NV_texture_multisample
+ public final long
+ glTexImage2DMultisampleCoverageNV,
+ glTexImage3DMultisampleCoverageNV,
+ glTextureImage2DMultisampleNV,
+ glTextureImage3DMultisampleNV,
+ glTextureImage2DMultisampleCoverageNV,
+ glTextureImage3DMultisampleCoverageNV;
+
+ // NV_timeline_semaphore
+ public final long
+ glCreateSemaphoresNV,
+ glSemaphoreParameterivNV,
+ glGetSemaphoreParameterivNV;
+
+ // NV_transform_feedback
+ public final long
+ glBeginTransformFeedbackNV,
+ glEndTransformFeedbackNV,
+ glTransformFeedbackAttribsNV,
+ glBindBufferRangeNV,
+ glBindBufferOffsetNV,
+ glBindBufferBaseNV,
+ glTransformFeedbackVaryingsNV,
+ glActiveVaryingNV,
+ glGetVaryingLocationNV,
+ glGetActiveVaryingNV,
+ glGetTransformFeedbackVaryingNV,
+ glTransformFeedbackStreamAttribsNV;
+
+ // NV_transform_feedback2
+ public final long
+ glBindTransformFeedbackNV,
+ glDeleteTransformFeedbacksNV,
+ glGenTransformFeedbacksNV,
+ glIsTransformFeedbackNV,
+ glPauseTransformFeedbackNV,
+ glResumeTransformFeedbackNV,
+ glDrawTransformFeedbackNV;
+
+ // NV_vertex_array_range
+ public final long
+ glVertexArrayRangeNV,
+ glFlushVertexArrayRangeNV;
+
+ // NV_vertex_attrib_integer_64bit
+ public final long
+ glVertexAttribL1i64NV,
+ glVertexAttribL2i64NV,
+ glVertexAttribL3i64NV,
+ glVertexAttribL4i64NV,
+ glVertexAttribL1i64vNV,
+ glVertexAttribL2i64vNV,
+ glVertexAttribL3i64vNV,
+ glVertexAttribL4i64vNV,
+ glVertexAttribL1ui64NV,
+ glVertexAttribL2ui64NV,
+ glVertexAttribL3ui64NV,
+ glVertexAttribL4ui64NV,
+ glVertexAttribL1ui64vNV,
+ glVertexAttribL2ui64vNV,
+ glVertexAttribL3ui64vNV,
+ glVertexAttribL4ui64vNV,
+ glGetVertexAttribLi64vNV,
+ glGetVertexAttribLui64vNV,
+ glVertexAttribLFormatNV;
+
+ // NV_vertex_buffer_unified_memory
+ public final long
+ glBufferAddressRangeNV,
+ glVertexFormatNV,
+ glNormalFormatNV,
+ glColorFormatNV,
+ glIndexFormatNV,
+ glTexCoordFormatNV,
+ glEdgeFlagFormatNV,
+ glSecondaryColorFormatNV,
+ glFogCoordFormatNV,
+ glVertexAttribFormatNV,
+ glVertexAttribIFormatNV,
+ glGetIntegerui64i_vNV;
+
+ // NV_viewport_swizzle
+ public final long
+ glViewportSwizzleNV;
+
+ // NVX_conditional_render
+ public final long
+ glBeginConditionalRenderNVX,
+ glEndConditionalRenderNVX;
+
+ // NVX_gpu_multicast2
+ public final long
+ glAsyncCopyImageSubDataNVX,
+ glAsyncCopyBufferSubDataNVX,
+ glUploadGpuMaskNVX,
+ glMulticastViewportArrayvNVX,
+ glMulticastScissorArrayvNVX,
+ glMulticastViewportPositionWScaleNVX;
+
+ // NVX_progress_fence
+ public final long
+ glCreateProgressFenceNVX,
+ glSignalSemaphoreui64NVX,
+ glWaitSemaphoreui64NVX,
+ glClientWaitSemaphoreui64NVX;
+
+ // OVR_multiview
+ public final long
+ glFramebufferTextureMultiviewOVR,
+ glNamedFramebufferTextureMultiviewOVR;
+
+ /** When true, {@link GL11} is supported. */
+ public final boolean OpenGL11;
+ /** When true, {@link GL12} is supported. */
+ public final boolean OpenGL12;
+ /** When true, {@link GL13} is supported. */
+ public final boolean OpenGL13;
+ /** When true, {@link GL14} is supported. */
+ public final boolean OpenGL14;
+ /** When true, {@link GL15} is supported. */
+ public final boolean OpenGL15;
+ /** When true, {@link GL20} is supported. */
+ public final boolean OpenGL20;
+ /** When true, {@link GL21} is supported. */
+ public final boolean OpenGL21;
+ /** When true, {@link GL30} is supported. */
+ public final boolean OpenGL30;
+ /** When true, {@link GL31} is supported. */
+ public final boolean OpenGL31;
+ /** When true, {@link GL32} is supported. */
+ public final boolean OpenGL32;
+ /** When true, {@link GL33} is supported. */
+ public final boolean OpenGL33;
+ /** When true, {@link GL40} is supported. */
+ public final boolean OpenGL40;
+ /** When true, {@link GL41} is supported. */
+ public final boolean OpenGL41;
+ /** When true, {@link GL42} is supported. */
+ public final boolean OpenGL42;
+ /** When true, {@link GL43} is supported. */
+ public final boolean OpenGL43;
+ /** When true, {@link GL44} is supported. */
+ public final boolean OpenGL44;
+ /** When true, {@link GL45} is supported. */
+ public final boolean OpenGL45;
+ /** When true, {@link GL46} is supported. */
+ public final boolean OpenGL46;
+ /** When true, {@link _3DFXTextureCompressionFXT1} is supported. */
+ public final boolean GL_3DFX_texture_compression_FXT1;
+ /** When true, {@link AMDBlendMinmaxFactor} is supported. */
+ public final boolean GL_AMD_blend_minmax_factor;
+ /**
+ * When true, the AMD_conservative_depth extension is supported.
+ *
+ * There is a common optimization for hardware accelerated implementation of OpenGL which relies on an early depth test to be run before the fragment
+ * shader so that the shader evaluation can be skipped if the fragment ends up being discarded because it is occluded.
+ *
+ * This optimization does not affect the final rendering, and is typically possible when the fragment does not change the depth programmatically. (i.e.: it
+ * does not write to the built-in {@code gl_FragDepth} output). There are, however a class of operations on the depth in the shader which could still be
+ * performed while allowing the early depth test to operate.
+ *
+ * This extension allows the application to pass enough information to the GL implementation to activate such optimizations safely.
+ *
+ * Requires {@link GL30 OpenGL 3.0}. Promoted to core in {@link GL42 OpenGL 4.2}.
+ */
+ public final boolean GL_AMD_conservative_depth;
+ /** When true, {@link AMDDebugOutput} is supported. */
+ public final boolean GL_AMD_debug_output;
+ /** When true, {@link AMDDepthClampSeparate} is supported. */
+ public final boolean GL_AMD_depth_clamp_separate;
+ /** When true, {@link AMDDrawBuffersBlend} is supported. */
+ public final boolean GL_AMD_draw_buffers_blend;
+ /** When true, {@link AMDFramebufferMultisampleAdvanced} is supported. */
+ public final boolean GL_AMD_framebuffer_multisample_advanced;
+ /**
+ * When true, the AMD_gcn_shader extension is supported.
+ *
+ * This extension exposes miscellaneous features of the AMD "Graphics Core Next" shader architecture that do not cleanly fit into other extensions
+ * and are not significant enough alone to warrant their own extensions. This includes cross-SIMD lane ballots, cube map query functions and a
+ * functionality to query the elapsed shader core time.
+ *
+ * Requires {@link #GL_AMD_gpu_shader_int64 AMD_gpu_shader_int64} or {@link #GL_NV_gpu_shader5 NV_gpu_shader5}.
+ */
+ public final boolean GL_AMD_gcn_shader;
+ /** When true, {@link AMDGPUShaderHalfFloat} is supported. */
+ public final boolean GL_AMD_gpu_shader_half_float;
+ /** When true, {@link AMDGPUShaderHalfFloatFetch} is supported. */
+ public final boolean GL_AMD_gpu_shader_half_float_fetch;
+ /**
+ * When true, the AMD_gpu_shader_int16 extension is supported.
+ *
+ * This extension was developed to allow implementations supporting 16-bit integers to expose the feature in GLSL.
+ *
+ * The extension introduces the following features for all shader types:
+ *
+ *
+ * - new built-in functions to pack and unpack 32-bit integer types into a two-component 16-bit integer vector;
+ * - new built-in functions to convert half-precision floating-point values to or from their 16-bit integer bit encodings;
+ * - vector relational functions supporting comparisons of vectors of 16-bit integer types; and
+ * - common functions abs, frexp, ldexp, sign, min, max, clamp, and mix supporting arguments of 16-bit integer types.
+ *
+ *
+ * Requires GLSL 4.00.
+ */
+ public final boolean GL_AMD_gpu_shader_int16;
+ /** When true, {@link AMDGPUShaderInt64} is supported. */
+ public final boolean GL_AMD_gpu_shader_int64;
+ /** When true, {@link AMDInterleavedElements} is supported. */
+ public final boolean GL_AMD_interleaved_elements;
+ /** When true, {@link AMDOcclusionQueryEvent} is supported. */
+ public final boolean GL_AMD_occlusion_query_event;
+ /** When true, {@link AMDPerformanceMonitor} is supported. */
+ public final boolean GL_AMD_performance_monitor;
+ /** When true, {@link AMDPinnedMemory} is supported. */
+ public final boolean GL_AMD_pinned_memory;
+ /** When true, {@link AMDQueryBufferObject} is supported. */
+ public final boolean GL_AMD_query_buffer_object;
+ /** When true, {@link AMDSamplePositions} is supported. */
+ public final boolean GL_AMD_sample_positions;
+ /** When true, {@link AMDSeamlessCubemapPerTexture} is supported. */
+ public final boolean GL_AMD_seamless_cubemap_per_texture;
+ /**
+ * When true, the AMD_shader_atomic_counter_ops extension is supported.
+ *
+ * This extension is written against the OpenGL 4.3 (core) specification and the GLSL 4.30.7 specification.
+ *
+ * Requires {@link GL42 OpenGL 4.2} or {@link #GL_ARB_shader_atomic_counters ARB_shader_atomic_counters}.
+ */
+ public final boolean GL_AMD_shader_atomic_counter_ops;
+ /**
+ * When true, the AMD_shader_ballot extension is supported.
+ *
+ * The extensions {@code ARB_shader_group_vote} and {@code ARB_shader_ballot} introduced the concept of sub-groups and a set of operations that allow data
+ * exchange across shader invocations within a sub-group.
+ *
+ * This extension further extends the capabilities of these extensions with additional sub-group operations.
+ *
+ * Requires {@link #GL_ARB_shader_group_vote ARB_shader_group_vote}, {@link #GL_ARB_shader_ballot ARB_shader_ballot} and {@link ARBGPUShaderInt64 ARB_gpu_shader_int64} or {@link AMDGPUShaderInt64 AMD_gpu_shader_int64}.
+ */
+ public final boolean GL_AMD_shader_ballot;
+ /**
+ * When true, the AMD_shader_explicit_vertex_parameter extension is supported.
+ *
+ * Unextended GLSL provides a set of fixed function interpolation modes and even those are limited to certain types of interpolants (for example,
+ * interpolation of integer and double isn't supported).
+ *
+ * This extension introduces new built-in functions allowing access to vertex parameters explicitly in the fragment shader. It also exposes barycentric
+ * coordinates as new built-in variables, which can be used to implement custom interpolation algorithms using shader code.
+ *
+ * Requires {@link GL20 OpenGL 2.0} or {@link ARBShaderObjects ARB_shader_objects}.
+ */
+ public final boolean GL_AMD_shader_explicit_vertex_parameter;
+ /**
+ * When true, the AMD_shader_image_load_store_lod extension is supported.
+ *
+ * This extension was developed based on the {@link ARBShaderImageLoadStore ARB_shader_image_load_store} extension to allow implementations supporting loads and stores on mipmap
+ * texture images.
+ *
+ * Requires {@link GL40 OpenGL 4.0} and GLSL 4.00
+ */
+ public final boolean GL_AMD_shader_image_load_store_lod;
+ /**
+ * When true, the AMD_shader_stencil_export extension is supported.
+ *
+ * In OpenGL, the stencil test is a powerful mechanism to selectively discard fragments based on the content of the stencil buffer. However, facilites to
+ * update the content of the stencil buffer are limited to operations such as incrementing the existing value, or overwriting with a fixed reference value.
+ *
+ * This extension provides a mechanism whereby a shader may generate the stencil reference value per invocation. When stencil testing is enabled, this
+ * allows the test to be performed against the value generated in the shader. When the stencil operation is set to {@link GL11#GL_REPLACE REPLACE}, this allows a value generated
+ * in the shader to be written to the stencil buffer directly.
+ *
+ * Requires {@link #GL_ARB_fragment_shader ARB_fragment_shader}.
+ */
+ public final boolean GL_AMD_shader_stencil_export;
+ /**
+ * When true, the AMD_shader_trinary_minmax extension is supported.
+ *
+ * This extension introduces three new trinary built-in functions to the OpenGL Shading Languages. These functions allow the minimum, maximum or median of
+ * three inputs to be found with a single function call. These operations may be useful for sorting and filtering operations, for example. By explicitly
+ * performing a trinary operation with a single built-in function, shader compilers and optimizers may be able to generate better instruction sequences for
+ * perform sorting and other multi-input functions.
+ *
+ * Requires {@link GL20 OpenGL 2.0} or {@link #GL_ARB_shader_objects ARB_shader_objects}.
+ */
+ public final boolean GL_AMD_shader_trinary_minmax;
+ /** When true, {@link AMDSparseTexture} is supported. */
+ public final boolean GL_AMD_sparse_texture;
+ /** When true, {@link AMDStencilOperationExtended} is supported. */
+ public final boolean GL_AMD_stencil_operation_extended;
+ /**
+ * When true, the AMD_texture_gather_bias_lod extension is supported.
+ *
+ * This extension was developed based on existing built-in texture gather functions to allow implementations supporting bias of implicit level of detail
+ * and explicit control of level of detail in texture gather operations.
+ */
+ public final boolean GL_AMD_texture_gather_bias_lod;
+ /**
+ * When true, the AMD_texture_texture4 extension is supported.
+ *
+ * This extension adds new shading language built-in texture functions to the shading language.
+ *
+ * These texture functions may be used to access one component textures.
+ *
+ * The {@code texture4} built-in function returns a texture value derived from a 2x2 set of texels in the image array of level levelbase is selected. These
+ * texels are selected in the same way as when the value of {@link GL11#GL_TEXTURE_MIN_FILTER TEXTURE_MIN_FILTER} is {@link GL11#GL_LINEAR LINEAR}, but instead of these texels being filtered to generate the
+ * texture value, the R, G, B and A texture values are derived directly from these four texels.
+ */
+ public final boolean GL_AMD_texture_texture4;
+ /**
+ * When true, the AMD_transform_feedback3_lines_triangles extension is supported.
+ *
+ * OpenGL 4.0 introduced the ability to record primitives into multiple output streams using transform feedback. However, the restriction that all streams
+ * must output {@link GL11#GL_POINT POINT} primitives when more than one output stream is active was also introduced. This extension simply removes that restriction, allowing
+ * the same set of primitives to be used with multiple transform feedback streams as with a single stream.
+ *
+ * Requires {@link GL40 OpenGL 4.0} or {@link ARBTransformFeedback3 ARB_transform_feedback3}.
+ */
+ public final boolean GL_AMD_transform_feedback3_lines_triangles;
+ /** When true, {@link AMDTransformFeedback4} is supported. */
+ public final boolean GL_AMD_transform_feedback4;
+ /**
+ * When true, the AMD_vertex_shader_layer extension is supported.
+ *
+ * The {@code gl_Layer} built-in shading language variable was introduced with the {@link #GL_ARB_geometry_shader4 ARB_geometry_shader4} extension and subsequently promoted to core
+ * OpenGL in version 3.2. This variable is an output from the geometry shader stage that allows rendering to be directed to a specific layer of an array
+ * texture, slice of a 3D texture or face of a cube map or cube map array attachment of the framebuffer. Thus, this extremely useful functionality is only
+ * available if a geometry shader is present - even if the geometry shader is not otherwise required by the application. This adds overhead to the graphics
+ * processing pipeline, and complexity to applications. It also precludes implementations that cannot support geometry shaders from supporting rendering to
+ * layered framebuffer attachments.
+ *
+ * This extension exposes the {@code gl_Layer} built-in variable in the vertex shader, allowing rendering to be directed to layered framebuffer attachments
+ * with only a vertex and fragment shader present. Combined with features such as instancing, or static vertex attributes and so on, this allows a wide
+ * variety of techniques to be implemented without the requirement for a geometry shader to be present.
+ *
+ * Requires {@link GL30 OpenGL 3.0} or {@link #GL_EXT_texture_array EXT_texture_array}.
+ */
+ public final boolean GL_AMD_vertex_shader_layer;
+ /** When true, {@link AMDVertexShaderTessellator} is supported. */
+ public final boolean GL_AMD_vertex_shader_tessellator;
+ /**
+ * When true, the AMD_vertex_shader_viewport_index extension is supported.
+ *
+ * The {@code gl_ViewportIndex} built-in variable was introduced by the {@link #GL_ARB_viewport_array ARB_viewport_array} extension and {@link GL41 OpenGL 4.1}. This variable is available
+ * in un-extended OpenGL only to the geometry shader. When written in the geometry shader, it causes geometry to be directed to one of an array of several
+ * independent viewport rectangles.
+ *
+ * In order to use any viewport other than zero, a geometry shader must be present. Geometry shaders introduce processing overhead and potential
+ * performance issues. This extension exposes the {@code gl_ViewportIndex} built-in variable to the vertex shader, allowing the functionality introduced by
+ * ARB_viewport_array to be accessed without requiring a geometry shader to be present.
+ *
+ * Requires {@link GL41 OpenGL 4.1} or {@link #GL_ARB_viewport_array ARB_viewport_array}.
+ */
+ public final boolean GL_AMD_vertex_shader_viewport_index;
+ /**
+ * When true, the ARB_arrays_of_arrays extension is supported.
+ *
+ * This extension removes the restriction that arrays cannot be formed into arrays, allowing arrays of arrays to be declared.
+ *
+ * Requires GLSL 1.2. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_arrays_of_arrays;
+ /** When true, {@link ARBBaseInstance} is supported. */
+ public final boolean GL_ARB_base_instance;
+ /** When true, {@link ARBBindlessTexture} is supported. */
+ public final boolean GL_ARB_bindless_texture;
+ /** When true, {@link ARBBlendFuncExtended} is supported. */
+ public final boolean GL_ARB_blend_func_extended;
+ /** When true, {@link ARBBufferStorage} is supported. */
+ public final boolean GL_ARB_buffer_storage;
+ /** When true, {@link ARBCLEvent} is supported. */
+ public final boolean GL_ARB_cl_event;
+ /** When true, {@link ARBClearBufferObject} is supported. */
+ public final boolean GL_ARB_clear_buffer_object;
+ /** When true, {@link ARBClearTexture} is supported. */
+ public final boolean GL_ARB_clear_texture;
+ /** When true, {@link ARBClipControl} is supported. */
+ public final boolean GL_ARB_clip_control;
+ /** When true, {@link ARBColorBufferFloat} is supported. */
+ public final boolean GL_ARB_color_buffer_float;
+ /**
+ * When true, the ARB_compatibility extension is supported.
+ *
+ * This extension restores features deprecated by {@link GL30 OpenGL 3.0}.
+ */
+ public final boolean GL_ARB_compatibility;
+ /** When true, {@link ARBCompressedTexturePixelStorage} is supported. */
+ public final boolean GL_ARB_compressed_texture_pixel_storage;
+ /** When true, {@link ARBComputeShader} is supported. */
+ public final boolean GL_ARB_compute_shader;
+ /** When true, {@link ARBComputeVariableGroupSize} is supported. */
+ public final boolean GL_ARB_compute_variable_group_size;
+ /** When true, {@link ARBConditionalRenderInverted} is supported. */
+ public final boolean GL_ARB_conditional_render_inverted;
+ /**
+ * When true, the ARB_conservative_depth extension is supported.
+ *
+ * There is a common optimization for hardware accelerated implementation of OpenGL which relies on an early depth test to be run before the fragment
+ * shader so that the shader evaluation can be skipped if the fragment ends up being discarded because it is occluded.
+ *
+ * This optimization does not affect the final rendering, and is typically possible when the fragment does not change the depth programmatically. (i.e.: it
+ * does not write to the built-in gl_FragDepth output). There are, however a class of operations on the depth in the shader which could still be performed
+ * while allowing the early depth test to operate.
+ *
+ * This extension allows the application to pass enough information to the GL implementation to activate such optimizations safely.
+ *
+ * Requires {@link GL30 OpenGL 3.0}. Promoted to core in {@link GL42 OpenGL 4.2}.
+ */
+ public final boolean GL_ARB_conservative_depth;
+ /** When true, {@link ARBCopyBuffer} is supported. */
+ public final boolean GL_ARB_copy_buffer;
+ /** When true, {@link ARBCopyImage} is supported. */
+ public final boolean GL_ARB_copy_image;
+ /** When true, {@link ARBCullDistance} is supported. */
+ public final boolean GL_ARB_cull_distance;
+ /** When true, {@link ARBDebugOutput} is supported. */
+ public final boolean GL_ARB_debug_output;
+ /** When true, {@link ARBDepthBufferFloat} is supported. */
+ public final boolean GL_ARB_depth_buffer_float;
+ /** When true, {@link ARBDepthClamp} is supported. */
+ public final boolean GL_ARB_depth_clamp;
+ /** When true, {@link ARBDepthTexture} is supported. */
+ public final boolean GL_ARB_depth_texture;
+ /**
+ * When true, the ARB_derivative_control extension is supported.
+ *
+ * This extension provides control over the spacial granularity at which the underlying implementation computes derivatives.
+ *
+ * For example, for the coarse-granularity derivative, a single x derivative could be computed for each 2x2 group of pixels, using that same derivative
+ * value for all 4 pixels. For the fine-granularity derivative, two derivatives could be computed for each 2x2 group of pixels; one for the top row and one
+ * for the bottom row. Implementations vary somewhat on how this is done.
+ *
+ * To select the coarse derivative, use:
+ *
+ *
+ * dFdxCoarse(p)
+ * dFdyCoarse(p)
+ * fwidthCoarse(p)
+ *
+ * To select the fine derivative, use:
+ *
+ *
+ * dFdxFine(p)
+ * dFdyFine(p)
+ * fwidthFine(p)
+ *
+ * To select which ever is "better" (based on performance, API hints, or other factors), use:
+ *
+ *
+ * dFdx(p)
+ * dFdy(p)
+ * fwidth(p)
+ *
+ * This last set is the set of previously existing built-ins for derivatives, and continues to work in a backward compatible way.
+ *
+ * Requires {@link GL40 OpenGL 4.0} and GLSL 4.00. Promoted to core in {@link GL45 OpenGL 4.5}.
+ */
+ public final boolean GL_ARB_derivative_control;
+ /** When true, {@link ARBDirectStateAccess} is supported. */
+ public final boolean GL_ARB_direct_state_access;
+ /** When true, {@link ARBDrawBuffers} is supported. */
+ public final boolean GL_ARB_draw_buffers;
+ /** When true, {@link ARBDrawBuffersBlend} is supported. */
+ public final boolean GL_ARB_draw_buffers_blend;
+ /** When true, {@link ARBDrawElementsBaseVertex} is supported. */
+ public final boolean GL_ARB_draw_elements_base_vertex;
+ /** When true, {@link ARBDrawIndirect} is supported. */
+ public final boolean GL_ARB_draw_indirect;
+ /** When true, {@link ARBDrawInstanced} is supported. */
+ public final boolean GL_ARB_draw_instanced;
+ /** When true, {@link ARBEnhancedLayouts} is supported. */
+ public final boolean GL_ARB_enhanced_layouts;
+ /** When true, {@link ARBES2Compatibility} is supported. */
+ public final boolean GL_ARB_ES2_compatibility;
+ /** When true, {@link ARBES31Compatibility} is supported. */
+ public final boolean GL_ARB_ES3_1_compatibility;
+ /** When true, {@link ARBES32Compatibility} is supported. */
+ public final boolean GL_ARB_ES3_2_compatibility;
+ /** When true, {@link ARBES3Compatibility} is supported. */
+ public final boolean GL_ARB_ES3_compatibility;
+ /**
+ * When true, the ARB_explicit_attrib_location extension is supported.
+ *
+ * This extension provides a method to pre-assign attribute locations to named vertex shader inputs and color numbers to named fragment shader outputs.
+ * This allows applications to globally assign a particular semantic meaning, such as diffuse color or vertex normal, to a particular attribute location
+ * without knowing how that attribute will be named in any particular shader.
+ *
+ * Requires {@link GL20 OpenGL 2.0} or {@link #GL_ARB_vertex_shader ARB_vertex_shader}. Promoted to core in {@link GL33 OpenGL 3.3}.
+ */
+ public final boolean GL_ARB_explicit_attrib_location;
+ /** When true, {@link ARBExplicitUniformLocation} is supported. */
+ public final boolean GL_ARB_explicit_uniform_location;
+ /**
+ * When true, the ARB_fragment_coord_conventions extension is supported.
+ *
+ * This extension provides alternative conventions for the fragment coordinate XY location available for programmable fragment processing.
+ *
+ * The scope of this extension deals *only* with how the fragment coordinate XY location appears during programming fragment processing. Beyond the scope
+ * of this extension are coordinate conventions used for rasterization or transformation.
+ *
+ * In the case of the coordinate conventions for rasterization and transformation, some combination of the viewport, depth range, culling state, and
+ * projection matrix state can be reconfigured to adopt other arbitrary clip-space and window-space coordinate space conventions. Adopting other clip-space
+ * and window-space conventions involves adjusting existing OpenGL state. However it is non-trivial to massage an arbitrary fragment shader or program to
+ * adopt a different window-space coordinate system because such shaders are encoded in various textual representations.
+ *
+ * The dominant 2D and 3D rendering APIs make two basic choices of convention when locating fragments in window space. The two choices are:
+ *
+ *
+ * - Is the origin nearest the lower-left- or upper-left-most pixel of the window?
+ * - Is the (x,y) location of the pixel nearest the origin at (0,0) or (0.5,0.5)?
+ *
+ *
+ * OpenGL assumes a lower-left origin for window coordinates and assumes pixel centers are located at half-pixel coordinates. This means the XY location
+ * (0.5,0.5) corresponds to the lower-left-most pixel in a window.
+ *
+ * Other window coordinate conventions exist for other rendering APIs. X11, GDI, and Direct3D version through DirectX 9 assume an upper-left window origin
+ * and locate pixel centers at integer XY values. By this alternative convention, the XY location (0,0) corresponds to the upper-left-most pixel in a window.
+ *
+ * Direct3D for DirectX 10 assumes an upper-left origin (as do prior DirectX versions) yet assumes half-pixel coordinates (unlike prior DirectX versions).
+ * By the DirectX 10 convention, the XY location (0.5,0.5) corresponds to the upper-left-most pixel in a window.
+ *
+ * Fragment shaders can directly access the location of a given processed fragment in window space. We call this location the "fragment coordinate".
+ *
+ * This extension provides a means for fragment shaders written in GLSL or OpenGL assembly extensions to specify alternative conventions for determining
+ * the fragment coordinate value accessed during programmable fragment processing.
+ *
+ * The motivation for this extension is to provide an easy, efficient means for fragment shaders accessing a fragment's window-space location to adopt the
+ * fragment coordinate convention for which the shader was originally written.
+ *
+ * Promoted to core in {@link GL32 OpenGL 3.2}.
+ */
+ public final boolean GL_ARB_fragment_coord_conventions;
+ /**
+ * When true, the ARB_fragment_layer_viewport extension is supported.
+ *
+ * The geometry shader has the special built-in variables gl_Layer and gl_ViewportIndex that specify which layer and viewport primitives are rendered to.
+ * Currently the fragment shader does not know which layer or viewport the fragments are being written to without the application implementing their own
+ * interface variables between the geometry and fragment shaders.
+ *
+ * This extension specifies that the gl_Layer and gl_ViewportIndex built-in variables are also available to the fragment shader so the application doesn't
+ * need to implement these manually.
+ *
+ * Requires {@link GL30 OpenGL 3.0} and {@link #GL_ARB_geometry_shader4 ARB_geometry_shader4}, or {@link GL32 OpenGL 3.2}. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_fragment_layer_viewport;
+ /** When true, {@link ARBFragmentProgram} is supported. */
+ public final boolean GL_ARB_fragment_program;
+ /**
+ * When true, the ARB_fragment_program_shadow extension is supported.
+ *
+ * This extension extends ARB_fragment_program to remove the interaction with ARB_shadow and defines the program option "ARB_fragment_program_shadow".
+ *
+ * Requires {@link #GL_ARB_fragment_program ARB_fragment_program} and {@link #GL_ARB_shadow ARB_shadow}.
+ */
+ public final boolean GL_ARB_fragment_program_shadow;
+ /** When true, {@link ARBFragmentShader} is supported. */
+ public final boolean GL_ARB_fragment_shader;
+ /**
+ * When true, the ARB_fragment_shader_interlock extension is supported.
+ *
+ * In unextended OpenGL 4.5, applications may produce a large number of fragment shader invocations that perform loads and stores to memory using image
+ * uniforms, atomic counter uniforms, buffer variables, or pointers. The order in which loads and stores to common addresses are performed by different
+ * fragment shader invocations is largely undefined. For algorithms that use shader writes and touch the same pixels more than once, one or more of the
+ * following techniques may be required to ensure proper execution ordering:
+ *
+ *
+ * - inserting Finish or WaitSync commands to drain the pipeline between different "passes" or "layers";
+ * - using only atomic memory operations to write to shader memory (which may be relatively slow and limits how memory may be updated); or
+ * - injecting spin loops into shaders to prevent multiple shader invocations from touching the same memory concurrently.
+ *
+ *
+ * This extension provides new GLSL built-in functions beginInvocationInterlockARB() and endInvocationInterlockARB() that delimit a critical section of
+ * fragment shader code. For pairs of shader invocations with "overlapping" coverage in a given pixel, the OpenGL implementation will guarantee that the
+ * critical section of the fragment shader will be executed for only one fragment at a time.
+ *
+ * There are four different interlock modes supported by this extension, which are identified by layout qualifiers. The qualifiers
+ * "pixel_interlock_ordered" and "pixel_interlock_unordered" provides mutual exclusion in the critical section for any pair of fragments corresponding to
+ * the same pixel. When using multisampling, the qualifiers "sample_interlock_ordered" and "sample_interlock_unordered" only provide mutual exclusion for
+ * pairs of fragments that both cover at least one common sample in the same pixel; these are recommended for performance if shaders use per-sample data
+ * structures.
+ *
+ * Additionally, when the "pixel_interlock_ordered" or "sample_interlock_ordered" layout qualifier is used, the interlock also guarantees that the
+ * critical section for multiple shader invocations with "overlapping" coverage will be executed in the order in which the primitives were processed by
+ * the GL. Such a guarantee is useful for applications like blending in the fragment shader, where an application requires that fragment values to be
+ * composited in the framebuffer in primitive order.
+ *
+ * This extension can be useful for algorithms that need to access per-pixel data structures via shader loads and stores. Such algorithms using this
+ * extension can access such data structures in the critical section without worrying about other invocations for the same pixel accessing the data
+ * structures concurrently. Additionally, the ordering guarantees are useful for cases where the API ordering of fragments is meaningful. For example,
+ * applications may be able to execute programmable blending operations in the fragment shader, where the destination buffer is read via image loads and
+ * the final value is written via image stores.
+ *
+ * Requires {@link GL42 OpenGL 4.2} or {@link ARBShaderImageLoadStore ARB_shader_image_load_store}.
+ */
+ public final boolean GL_ARB_fragment_shader_interlock;
+ /** When true, {@link ARBFramebufferNoAttachments} is supported. */
+ public final boolean GL_ARB_framebuffer_no_attachments;
+ /** When true, {@link ARBFramebufferObject} is supported. */
+ public final boolean GL_ARB_framebuffer_object;
+ /** When true, {@link ARBFramebufferSRGB} is supported. */
+ public final boolean GL_ARB_framebuffer_sRGB;
+ /** When true, {@link ARBGeometryShader4} is supported. */
+ public final boolean GL_ARB_geometry_shader4;
+ /** When true, {@link ARBGetProgramBinary} is supported. */
+ public final boolean GL_ARB_get_program_binary;
+ /** When true, {@link ARBGetTextureSubImage} is supported. */
+ public final boolean GL_ARB_get_texture_sub_image;
+ /** When true, {@link ARBGLSPIRV} is supported. */
+ public final boolean GL_ARB_gl_spirv;
+ /** When true, {@link ARBGPUShader5} is supported. */
+ public final boolean GL_ARB_gpu_shader5;
+ /** When true, {@link ARBGPUShaderFP64} is supported. */
+ public final boolean GL_ARB_gpu_shader_fp64;
+ /** When true, {@link ARBGPUShaderInt64} is supported. */
+ public final boolean GL_ARB_gpu_shader_int64;
+ /** When true, {@link ARBHalfFloatPixel} is supported. */
+ public final boolean GL_ARB_half_float_pixel;
+ /** When true, {@link ARBHalfFloatVertex} is supported. */
+ public final boolean GL_ARB_half_float_vertex;
+ /** When true, {@link ARBImaging} is supported. */
+ public final boolean GL_ARB_imaging;
+ /** When true, {@link ARBIndirectParameters} is supported. */
+ public final boolean GL_ARB_indirect_parameters;
+ /** When true, {@link ARBInstancedArrays} is supported. */
+ public final boolean GL_ARB_instanced_arrays;
+ /** When true, {@link ARBInternalformatQuery} is supported. */
+ public final boolean GL_ARB_internalformat_query;
+ /** When true, {@link ARBInternalformatQuery2} is supported. */
+ public final boolean GL_ARB_internalformat_query2;
+ /** When true, {@link ARBInvalidateSubdata} is supported. */
+ public final boolean GL_ARB_invalidate_subdata;
+ /** When true, {@link ARBMapBufferAlignment} is supported. */
+ public final boolean GL_ARB_map_buffer_alignment;
+ /** When true, {@link ARBMapBufferRange} is supported. */
+ public final boolean GL_ARB_map_buffer_range;
+ /** When true, {@link ARBMatrixPalette} is supported. */
+ public final boolean GL_ARB_matrix_palette;
+ /** When true, {@link ARBMultiBind} is supported. */
+ public final boolean GL_ARB_multi_bind;
+ /** When true, {@link ARBMultiDrawIndirect} is supported. */
+ public final boolean GL_ARB_multi_draw_indirect;
+ /** When true, {@link ARBMultisample} is supported. */
+ public final boolean GL_ARB_multisample;
+ /** When true, {@link ARBMultitexture} is supported. */
+ public final boolean GL_ARB_multitexture;
+ /** When true, {@link ARBOcclusionQuery} is supported. */
+ public final boolean GL_ARB_occlusion_query;
+ /** When true, {@link ARBOcclusionQuery2} is supported. */
+ public final boolean GL_ARB_occlusion_query2;
+ /** When true, {@link ARBParallelShaderCompile} is supported. */
+ public final boolean GL_ARB_parallel_shader_compile;
+ /** When true, {@link ARBPipelineStatisticsQuery} is supported. */
+ public final boolean GL_ARB_pipeline_statistics_query;
+ /** When true, {@link ARBPixelBufferObject} is supported. */
+ public final boolean GL_ARB_pixel_buffer_object;
+ /** When true, {@link ARBPointParameters} is supported. */
+ public final boolean GL_ARB_point_parameters;
+ /** When true, {@link ARBPointSprite} is supported. */
+ public final boolean GL_ARB_point_sprite;
+ /** When true, {@link ARBPolygonOffsetClamp} is supported. */
+ public final boolean GL_ARB_polygon_offset_clamp;
+ /**
+ * When true, the ARB_post_depth_coverage extension is supported.
+ *
+ * This extension allows the fragment shader to control whether values in {@code gl_SampleMaskIn[]} reflect the coverage after application of the early
+ * depth and stencil tests. This feature can be enabled with the following layout qualifier in the fragment shader:
+ *
+ *
+ * layout(post_depth_coverage) in;
+ *
+ * Use of this feature implicitly enables early fragment tests.
+ */
+ public final boolean GL_ARB_post_depth_coverage;
+ /** When true, {@link ARBProgramInterfaceQuery} is supported. */
+ public final boolean GL_ARB_program_interface_query;
+ /** When true, {@link ARBProvokingVertex} is supported. */
+ public final boolean GL_ARB_provoking_vertex;
+ /** When true, {@link ARBQueryBufferObject} is supported. */
+ public final boolean GL_ARB_query_buffer_object;
+ /**
+ * When true, the ARB_robust_buffer_access_behavior extension is supported.
+ *
+ * This extension specifies the behavior of out-of-bounds buffer and array accesses. This is an improvement over the existing ARB_robustness extension
+ * which stated that the application should not crash, but the behavior is otherwise undefined. This extension specifies the access protection provided by
+ * the GL to ensure that out-of-bounds accesses cannot read from or write to data not owned by the application. All accesses are contained within the
+ * buffer object and program area they reference. These additional robustness guarantees apply to contexts created with the
+ * {@code CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB} feature enabled.
+ *
+ * Requires {@link ARBRobustness ARB_robustness}. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_robust_buffer_access_behavior;
+ /** When true, {@link ARBRobustness} is supported. */
+ public final boolean GL_ARB_robustness;
+ /**
+ * When true, the ARB_robustness_application_isolation extension is supported.
+ *
+ * {@link ARBRobustness ARB_robustness} and supporting window system extensions allow creating an OpenGL context supporting graphics reset notification behavior. This
+ * extension provides stronger guarantees about the possible side-effects of a graphics reset.
+ *
+ * It is expected that there may be a performance cost associated with isolating an application or share group from other contexts on the GPU. For this
+ * reason, ARB_robustness_isolation is phrased as an opt-in mechanism, with a new context creation bit defined in the window system bindings. It is
+ * expected that implementations might only advertise the strings in this extension if both the implementation supports the desired isolation properties,
+ * and the context was created with the appropriate reset isolation bit.
+ *
+ * If the graphics driver advertises the {@code GL_ARB_robustness_application_isolation} extension string, then the driver guarantees that if a particular
+ * application causes a graphics reset to occur:
+ *
+ *
+ * - No other application on the system is affected by the graphics reset.
+ * - No other application on the system receives any notification that the graphics reset occurred.
+ *
+ *
+ * Requires {@link ARBRobustness ARB_robustness}. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_robustness_application_isolation;
+ /**
+ * When true, the ARB_robustness_share_group_isolation extension is supported.
+ *
+ * See {@link #GL_ARB_robustness_application_isolation ARB_robustness_application_isolation}.
+ *
+ * If the graphics driver advertises the {@code GL_ARB_robustness_share_group_isolation} extension string, then the driver guarantees that if a context in
+ * a particular share group causes a graphics reset to occur:
+ *
+ *
+ * - No other share group within the application is affected by the graphics reset. Additionally, no other application on the system is affected by the
+ * graphics reset.
+ * - No other share group within the application receives any notification that the graphics reset occurred. Additionally, no other application on the
+ * system receives any notification that the graphics reset occurred.
+ *
+ */
+ public final boolean GL_ARB_robustness_share_group_isolation;
+ /** When true, {@link ARBSampleLocations} is supported. */
+ public final boolean GL_ARB_sample_locations;
+ /** When true, {@link ARBSampleShading} is supported. */
+ public final boolean GL_ARB_sample_shading;
+ /** When true, {@link ARBSamplerObjects} is supported. */
+ public final boolean GL_ARB_sampler_objects;
+ /** When true, {@link ARBSeamlessCubeMap} is supported. */
+ public final boolean GL_ARB_seamless_cube_map;
+ /** When true, {@link ARBSeamlessCubemapPerTexture} is supported. */
+ public final boolean GL_ARB_seamless_cubemap_per_texture;
+ /** When true, {@link ARBSeparateShaderObjects} is supported. */
+ public final boolean GL_ARB_separate_shader_objects;
+ /**
+ * When true, the ARB_shader_atomic_counter_ops extension is supported.
+ *
+ * The {@link ARBShaderAtomicCounters ARB_shader_atomic_counters} extension introduced atomic counters, but it limits list of potential operations that can be performed on them
+ * to increment, decrement, and query. This extension extends the list of GLSL built-in functions that can operate on atomic counters. The list of new
+ * operations include:
+ *
+ *
+ * - Addition and subtraction
+ * - Minimum and maximum
+ * - Bitwise operators (AND, OR, XOR, etc.)
+ * - Exchange, and compare and exchange operators
+ *
+ *
+ * Requires {@link GL42 OpenGL 4.2} or {@link ARBShaderAtomicCounters ARB_shader_atomic_counters}.
+ */
+ public final boolean GL_ARB_shader_atomic_counter_ops;
+ /** When true, {@link ARBShaderAtomicCounters} is supported. */
+ public final boolean GL_ARB_shader_atomic_counters;
+ /**
+ * When true, the ARB_shader_ballot extension is supported.
+ *
+ * This extension provides the ability for a group of invocations which execute in lockstep to do limited forms of cross-invocation communication via a
+ * group broadcast of a invocation value, or broadcast of a bitarray representing a predicate value from each invocation in the group.
+ *
+ * Requires {@link ARBGPUShaderInt64 ARB_gpu_shader_int64}.
+ */
+ public final boolean GL_ARB_shader_ballot;
+ /**
+ * When true, the ARB_shader_bit_encoding extension is supported.
+ *
+ * This extension trivially adds built-in functions for getting/setting the bit encoding for floating-point values in the OpenGL Shading Language.
+ *
+ * Promoted to core in {@link GL33 OpenGL 3.3}.
+ */
+ public final boolean GL_ARB_shader_bit_encoding;
+ /**
+ * When true, the ARB_shader_clock extension is supported.
+ *
+ * This extension exposes a 64-bit monotonically incrementing shader counter which may be used to derive local timing information within a single shader
+ * invocation.
+ */
+ public final boolean GL_ARB_shader_clock;
+ /**
+ * When true, the ARB_shader_draw_parameters extension is supported.
+ *
+ * In unextended GL, vertex shaders have inputs named {@code gl_VertexID} and {@code gl_InstanceID}, which contain, respectively the index of the vertex
+ * and instance. The value of {@code gl_VertexID} is the implicitly passed index of the vertex being processed, which includes the value of baseVertex, for
+ * those commands that accept it. Meanwhile, {@code gl_InstanceID} is the integer index of the current instance being processed, but, even for commands
+ * that accept a baseInstance parameter, it does not include the value of this argument. Furthermore, the equivalents to these variables in other graphics
+ * APIs do not necessarily follow these conventions. The reason for this inconsistency is that there are legitimate use cases for both inclusion and
+ * exclusion of the baseVertex or baseInstance parameters in {@code gl_VertexID} and {@code gl_InstanceID}, respectively.
+ *
+ * Rather than change the semantics of either built-in variable, this extension adds two new built-in variables to the GL shading language,
+ * {@code gl_BaseVertexARB} and {@code gl_BaseInstanceARB}, which contain the values passed in the baseVertex and baseInstance parameters, respectively.
+ * Shaders provided by the application may use these variables to offset {@code gl_VertexID} or {@code gl_InstanceID} if desired, or use them for any other
+ * purpose.
+ *
+ * Additionally, this extension adds a further built-in variable, {@code gl_DrawID} to the shading language. This variable contains the index of the draw
+ * currently being processed by a Multi* variant of a drawing command (such as {@link GL14C#glMultiDrawElements MultiDrawElements} or {@link GL43C#glMultiDrawArraysIndirect MultiDrawArraysIndirect}).
+ *
+ * Requires {@link GL31 OpenGL 3.1}. Promoted to core in {@link GL33 OpenGL 3.3}.
+ */
+ public final boolean GL_ARB_shader_draw_parameters;
+ /**
+ * When true, the ARB_shader_group_vote extension is supported.
+ *
+ * This extension provides new built-in functions to compute the composite of a set of boolean conditions across a group of shader invocations. These
+ * composite results may be used to execute shaders more efficiently on a single-instruction multiple-data (SIMD) processor. The set of shader invocations
+ * across which boolean conditions are evaluated is implementation-dependent, and this extension provides no guarantee over how individual shader
+ * invocations are assigned to such sets. In particular, the set of shader invocations has no necessary relationship with the compute shader local work
+ * group -- a pair of shader invocations in a single compute shader work group may end up in different sets used by these built-ins.
+ *
+ * Compute shaders operate on an explicitly specified group of threads (a local work group), but many implementations of OpenGL 4.3 will even group
+ * non-compute shader invocations and execute them in a SIMD fashion. When executing code like
+ *
+ *
+ * if (condition) {
+ * result = do_fast_path();
+ * } else {
+ * result = do_general_path();
+ * }
+ *
+ * where {@code condition} diverges between invocations, a SIMD implementation might first call do_fast_path() for the invocations where {@code condition}
+ * is true and leave the other invocations dormant. Once do_fast_path() returns, it might call do_general_path() for invocations where {@code condition} is
+ * false and leave the other invocations dormant. In this case, the shader executes *both* the fast and the general path and might be better off just using
+ * the general path for all invocations.
+ *
+ * This extension provides the ability to avoid divergent execution by evaluting a condition across an entire SIMD invocation group using code like:
+ *
+ *
+ * if (allInvocationsARB(condition)) {
+ * result = do_fast_path();
+ * } else {
+ * result = do_general_path();
+ * }
+ *
+ * The built-in function allInvocationsARB() will return the same value for all invocations in the group, so the group will either execute do_fast_path()
+ * or do_general_path(), but never both. For example, shader code might want to evaluate a complex function iteratively by starting with an approximation
+ * of the result and then refining the approximation. Some input values may require a small number of iterations to generate an accurate result
+ * (do_fast_path) while others require a larger number (do_general_path). In another example, shader code might want to evaluate a complex function
+ * (do_general_path) that can be greatly simplified when assuming a specific value for one of its inputs (do_fast_path).
+ *
+ * Requires {@link GL43 OpenGL 4.3} or {@link ARBComputeShader ARB_compute_shader}.
+ */
+ public final boolean GL_ARB_shader_group_vote;
+ /** When true, {@link ARBShaderImageLoadStore} is supported. */
+ public final boolean GL_ARB_shader_image_load_store;
+ /**
+ * When true, the ARB_shader_image_size extension is supported.
+ *
+ * This extension provides GLSL built-in functions allowing shaders to query the size of an image.
+ *
+ * Requires {@link GL42 OpenGL 4.2} and GLSL 4.20. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_shader_image_size;
+ /** When true, {@link ARBShaderObjects} is supported. */
+ public final boolean GL_ARB_shader_objects;
+ /**
+ * When true, the ARB_shader_precision extension is supported.
+ *
+ * This extension more clearly restricts the precision requirements of implementations of the GLSL specification. These include precision of arithmetic
+ * operations (operators '+', '/', ...), transcendentals (log, exp, pow, reciprocal sqrt, ...), when NaNs (not a number) and INFs (infinities) will be
+ * supported and generated, and denorm flushing behavior. Trigonometric built-ins and some other categories of built-ins are not addressed.
+ *
+ * Requires {@link GL40 OpenGL 4.0}. Promoted to core in {@link GL41 OpenGL 4.1}.
+ */
+ public final boolean GL_ARB_shader_precision;
+ /**
+ * When true, the ARB_shader_stencil_export extension is supported.
+ *
+ * In OpenGL, the stencil test is a powerful mechanism to selectively discard fragments based on the content of the stencil buffer. However, facilites to
+ * update the content of the stencil buffer are limited to operations such as incrementing the existing value, or overwriting with a fixed reference value.
+ *
+ * This extension provides a mechanism whereby a shader may generate the stencil reference value per invocation. When stencil testing is enabled, this
+ * allows the test to be performed against the value generated in the shader. When the stencil operation is set to {@link GL11#GL_REPLACE REPLACE}, this allows a value generated
+ * in the shader to be written to the stencil buffer directly.
+ *
+ * Requires {@link #GL_ARB_fragment_shader ARB_fragment_shader}.
+ */
+ public final boolean GL_ARB_shader_stencil_export;
+ /** When true, {@link ARBShaderStorageBufferObject} is supported. */
+ public final boolean GL_ARB_shader_storage_buffer_object;
+ /** When true, {@link ARBShaderSubroutine} is supported. */
+ public final boolean GL_ARB_shader_subroutine;
+ /**
+ * When true, the ARB_shader_texture_image_samples extension is supported.
+ *
+ * This extension provides GLSL built-in functions allowing shaders to query the number of samples of a texture.
+ *
+ * Requires GLSL 1.50 or {@link ARBTextureMultisample ARB_texture_multisample}.
+ */
+ public final boolean GL_ARB_shader_texture_image_samples;
+ /**
+ * When true, the ARB_shader_texture_lod extension is supported.
+ *
+ * This extension adds additional texture functions to the OpenGL Shading Language which provide the shader writer with explicit control of LOD.
+ *
+ * Mipmap texture fetches and anisotropic texture fetches require an implicit derivatives to calculate rho, lambda and/or the line of anisotropy. These
+ * implicit derivatives will be undefined for texture fetches occurring inside non-uniform control flow or for vertex shader texture fetches, resulting in
+ * undefined texels.
+ *
+ * The additional texture functions introduced with this extension provide explict control of LOD (isotropic texture functions) or provide explicit
+ * derivatives (anisotropic texture functions).
+ *
+ * Anisotropic texture functions return defined texels for mipmap texture fetches or anisotropic texture fetches, even inside non-uniform control flow.
+ * Isotropic texture functions return defined texels for mipmap texture fetches, even inside non-uniform control flow. However, isotropic texture functions
+ * return undefined texels for anisotropic texture fetches.
+ *
+ * The existing isotropic vertex texture functions:
+ *
+ *
+ * texture1DLod, texture1DProjLod,
+ * texture2DLod, texture2DProjLod,
+ * texture3DLod, texture3DProjLod,
+ * textureCubeLod,
+ * shadow1DLod, shadow1DProjLod,
+ * shadow2DLod, shadow2DProjLod
+ *
+ * are added to the built-in functions for fragment shaders.
+ *
+ * New anisotropic texture functions, providing explicit derivatives:
+ *
+ *
+ * texture1DGradARB(
+ * sampler1D sampler,
+ * float P, float dPdx, float dPdy);
+ * texture1DProjGradARB(
+ * sampler1D sampler,
+ * vec2 P, float dPdx, float dPdy);
+ * texture1DProjGradARB(
+ * sampler1D sampler,
+ * vec4 P, float dPdx, float dPdy);
+ * texture2DGradARB(
+ * sampler2D sampler,
+ * vec2 P, vec2 dPdx, vec2 dPdy);
+ * texture2DProjGradARB(
+ * sampler2D sampler,
+ * vec3 P, vec2 dPdx, vec2 dPdy);
+ * texture2DProjGradARB(
+ * sampler2D sampler,
+ * vec4 P, vec2 dPdx, vec2 dPdy);
+ * texture3DGradARB(
+ * sampler3D sampler,
+ * vec3 P, vec3 dPdx, vec3 dPdy);
+ * texture3DProjGradARB(
+ * sampler3D sampler,
+ * vec4 P, vec3 dPdx, vec3 dPdy);
+ * textureCubeGradARB(
+ * samplerCube sampler,
+ * vec3 P, vec3 dPdx, vec3 dPdy);
+ *
+ * shadow1DGradARB(
+ * sampler1DShadow sampler,
+ * vec3 P, float dPdx, float dPdy);
+ * shadow1DProjGradARB(
+ * sampler1DShadow sampler,
+ * vec4 P, float dPdx, float dPdy);
+ * shadow2DGradARB(
+ * sampler2DShadow sampler,
+ * vec3 P, vec2 dPdx, vec2 dPdy);
+ * shadow2DProjGradARB(
+ * sampler2DShadow sampler,
+ * vec4 P, vec2 dPdx, vec2 dPdy);
+ *
+ * texture2DRectGradARB(
+ * sampler2DRect sampler,
+ * vec2 P, vec2 dPdx, vec2 dPdy);
+ * texture2DRectProjGradARB(
+ * sampler2DRect sampler,
+ * vec3 P, vec2 dPdx, vec2 dPdy);
+ * texture2DRectProjGradARB(
+ * sampler2DRect sampler,
+ * vec4 P, vec2 dPdx, vec2 dPdy);
+ *
+ * shadow2DRectGradARB(
+ * sampler2DRectShadow sampler,
+ * vec3 P, vec2 dPdx, vec2 dPdy);
+ * shadow2DRectProjGradARB(
+ * sampler2DRectShadow sampler,
+ * vec4 P, vec2 dPdx, vec2 dPdy);
+ *
+ * are added to the built-in functions for vertex shaders and fragment shaders.
+ *
+ * Requires {@link #GL_ARB_shader_objects ARB_shader_objects}. Promoted to core in {@link GL30 OpenGL 3.0}.
+ */
+ public final boolean GL_ARB_shader_texture_lod;
+ /**
+ * When true, the ARB_shader_viewport_layer_array extension is supported.
+ *
+ * The gl_ViewportIndex and gl_Layer built-in variables were introduced by the in OpenGL 4.1. These variables are available in un-extended OpenGL only to
+ * the geometry shader. When written in the geometry shader, they cause geometry to be directed to one of an array of several independent viewport
+ * rectangles or framebuffer attachment layers, respectively.
+ *
+ * In order to use any viewport or attachment layer other than zero, a geometry shader must be present. Geometry shaders introduce processing overhead and
+ * potential performance issues. The AMD_vertex_shader_layer and AMD_vertex_shader_viewport_index extensions allowed the gl_Layer and gl_ViewportIndex
+ * outputs to be written directly from the vertex shader with no geometry shader present.
+ *
+ * This extension effectively merges the AMD_vertex_shader_layer and AMD_vertex_shader_viewport_index extensions together and extends them further to
+ * allow both outputs to be written from tessellation evaluation shaders.
+ *
+ * Requires {@link GL41 OpenGL 4.1}.
+ */
+ public final boolean GL_ARB_shader_viewport_layer_array;
+ /** When true, {@link ARBShadingLanguage100} is supported. */
+ public final boolean GL_ARB_shading_language_100;
+ /**
+ * When true, the ARB_shading_language_420pack extension is supported.
+ *
+ * This is a language feature only extension formed from changes made to version 4.20 of GLSL. It includes:
+ *
+ *
+ * - Add line-continuation using '', as in C++.
+ * - Change from ASCII to UTF-8 for the language character set and also allow any characters inside comments.
+ * - Allow implicit conversions of return values to the declared type of the function.
+ * - The *const* keyword can be used to declare variables within a function body with initializer expressions that are not constant expressions.
+ * - Qualifiers on variable declarations no longer have to follow a strict order. The layout qualifier can be used multiple times, and multiple parameter
+ * qualifiers can be used. However, this is not as straightforward as saying declarations have arbitrary lists of initializers. Typically, one
+ * qualifier from each class of qualifiers is allowed, so care is now taken to classify them and say so. Then, of these, order restrictions are removed.
+ * - Add layout qualifier identifier "binding" to bind the location of a uniform block. This requires version 1.4 of GLSL. If this extension is used with
+ * an earlier version than 1.4, this feature is not present.
+ * - Add layout qualifier identifier "binding" to bind units to sampler and image variable declarations.
+ * - Add C-style curly brace initializer lists syntax for initializers. Full initialization of aggregates is required when these are used.
+ * - Allow ".length()" to be applied to vectors and matrices, returning the number of components or columns.
+ * - Allow swizzle operations on scalars.
+ * - Built-in constants for {@code gl_MinProgramTexelOffset} and {@code gl_MaxProgramTexelOffset}.
+ *
+ *
+ * Requires GLSL 1.30. Requires GLSL 1.40 for uniform block bindings. Promoted to core in {@link GL42 OpenGL 4.2}.
+ */
+ public final boolean GL_ARB_shading_language_420pack;
+ /** When true, {@link ARBShadingLanguageInclude} is supported. */
+ public final boolean GL_ARB_shading_language_include;
+ /**
+ * When true, the ARB_shading_language_packing extension is supported.
+ *
+ * This extension provides the GLSL built-in functions to convert a 32-bit unsigned integer holding a pair of 16-bit floating-point values to or from a
+ * two-component floating-point vector (vec2).
+ *
+ * This mechanism allows GLSL shaders to read and write 16-bit floating-point encodings (via 32-bit unsigned integers) without introducing a full set of
+ * 16-bit floating-point data types.
+ *
+ * This extension also adds the GLSL built-in packing functions included in GLSL version 4.00 and the ARB_gpu_shader5 extension which pack and unpack
+ * vectors of small fixed-point data types into a larger scalar. By putting these packing functions in this separate extension it allows implementations to
+ * provide these functions in hardware that supports them independent of the other {@link #GL_ARB_gpu_shader5 ARB_gpu_shader5} features.
+ *
+ * In addition to the packing functions from ARB_gpu_shader5 this extension also adds the missing {@code [un]packSnorm2x16} for completeness.
+ *
+ * Promoted to core in {@link GL42 OpenGL 4.2}.
+ */
+ public final boolean GL_ARB_shading_language_packing;
+ /** When true, {@link ARBShadow} is supported. */
+ public final boolean GL_ARB_shadow;
+ /** When true, {@link ARBShadowAmbient} is supported. */
+ public final boolean GL_ARB_shadow_ambient;
+ /** When true, {@link ARBSparseBuffer} is supported. */
+ public final boolean GL_ARB_sparse_buffer;
+ /** When true, {@link ARBSparseTexture} is supported. */
+ public final boolean GL_ARB_sparse_texture;
+ /**
+ * When true, the ARB_sparse_texture2 extension is supported.
+ *
+ * This extension builds on the {@link ARBSparseTexture ARB_sparse_texture} extension, providing the following new functionality:
+ *
+ *
+ * - New built-in GLSL texture lookup and image load functions are provided that return information on whether the texels accessed for the texture
+ * lookup accessed uncommitted texture memory.
+ * - New built-in GLSL texture lookup functions are provided that specify a minimum level of detail to use for lookups where the level of detail is
+ * computed automatically. This allows shaders to avoid accessing unpopulated portions of high-resolution levels of detail when it knows that the
+ * memory accessed is unpopulated, either from a priori knowledge or from feedback provided by the return value of previously executed "sparse"
+ * texture lookup functions.
+ * - Reads of uncommitted texture memory will act as though such memory were filled with zeroes; previously, the values returned by reads were
+ * undefined.
+ * - Standard implementation-independent virtual page sizes for internal formats required to be supported with sparse textures. These standard sizes can
+ * be requested by leaving {@link ARBSparseTexture#GL_VIRTUAL_PAGE_SIZE_INDEX_ARB VIRTUAL_PAGE_SIZE_INDEX_ARB} at its initial value (0).
+ * - Support for creating sparse multisample and multisample array textures is added. However, the virtual page sizes for such textures remain fully
+ * implementation-dependent.
+ *
+ *
+ * Requires {@link ARBSparseTexture ARB_sparse_texture}
+ */
+ public final boolean GL_ARB_sparse_texture2;
+ /**
+ * When true, the ARB_sparse_texture_clamp extension is supported.
+ *
+ * This extension builds on the {@link #GL_ARB_sparse_texture2 ARB_sparse_texture2} extension, providing the following new functionality:
+ *
+ * New built-in GLSL texture lookup functions are provided that specify a minimum level of detail to use for lookups where the level of detail is
+ * computed automatically. This allows shaders to avoid accessing unpopulated portions of high-resolution levels of detail when it knows that the memory
+ * accessed is unpopulated, either from a priori knowledge or from feedback provided by the return value of previously executed "sparse" texture lookup
+ * functions.
+ *
+ * Requires {@link #GL_ARB_sparse_texture2 ARB_sparse_texture2}
+ */
+ public final boolean GL_ARB_sparse_texture_clamp;
+ /** When true, {@link ARBSPIRVExtensions} is supported. */
+ public final boolean GL_ARB_spirv_extensions;
+ /** When true, {@link ARBStencilTexturing} is supported. */
+ public final boolean GL_ARB_stencil_texturing;
+ /** When true, {@link ARBSync} is supported. */
+ public final boolean GL_ARB_sync;
+ /** When true, {@link ARBTessellationShader} is supported. */
+ public final boolean GL_ARB_tessellation_shader;
+ /** When true, {@link ARBTextureBarrier} is supported. */
+ public final boolean GL_ARB_texture_barrier;
+ /** When true, {@link ARBTextureBorderClamp} is supported. */
+ public final boolean GL_ARB_texture_border_clamp;
+ /** When true, {@link ARBTextureBufferObject} is supported. */
+ public final boolean GL_ARB_texture_buffer_object;
+ /**
+ * When true, the ARB_texture_buffer_object_rgb32 extension is supported.
+ *
+ * This extension adds three new buffer texture formats - RGB32F, RGB32I, and RGB32UI. This partially addresses one of the limitations of buffer textures
+ * in the original {@link #GL_EXT_texture_buffer_object EXT_texture_buffer_object} extension and in {@link GL31 OpenGL 3.1}, which provide no support for three-component formats.
+ *
+ * Promoted to core in {@link GL40 OpenGL 4.0}.
+ */
+ public final boolean GL_ARB_texture_buffer_object_rgb32;
+ /** When true, {@link ARBTextureBufferRange} is supported. */
+ public final boolean GL_ARB_texture_buffer_range;
+ /** When true, {@link ARBTextureCompression} is supported. */
+ public final boolean GL_ARB_texture_compression;
+ /** When true, {@link ARBTextureCompressionBPTC} is supported. */
+ public final boolean GL_ARB_texture_compression_bptc;
+ /** When true, {@link ARBTextureCompressionRGTC} is supported. */
+ public final boolean GL_ARB_texture_compression_rgtc;
+ /** When true, {@link ARBTextureCubeMap} is supported. */
+ public final boolean GL_ARB_texture_cube_map;
+ /** When true, {@link ARBTextureCubeMapArray} is supported. */
+ public final boolean GL_ARB_texture_cube_map_array;
+ /**
+ * When true, the ARB_texture_env_add extension is supported.
+ *
+ * This extension adds a new texture environment function: ADD.
+ *
+ * Promoted to core in {@link GL13 OpenGL 1.3}.
+ */
+ public final boolean GL_ARB_texture_env_add;
+ /** When true, {@link ARBTextureEnvCombine} is supported. */
+ public final boolean GL_ARB_texture_env_combine;
+ /**
+ * When true, the ARB_texture_env_crossbar extension is supported.
+ *
+ * This extension adds the capability to use the texture color from other texture units as sources to the {@link ARBTextureEnvCombine#GL_COMBINE_ARB COMBINE_ARB} environment
+ * function. The {@link ARBTextureEnvCombine ARB_texture_env_combine} extension defined texture environment functions which could use the color from the current texture unit
+ * as a source. This extension adds the ability to use the color from any texture unit as a source.
+ *
+ * Requires {@link #GL_ARB_multitexture ARB_multitexture} and {@link ARBTextureEnvCombine ARB_texture_env_combine}. Promoted to core in {@link GL14 OpenGL 1.4}.
+ */
+ public final boolean GL_ARB_texture_env_crossbar;
+ /** When true, {@link ARBTextureEnvDot3} is supported. */
+ public final boolean GL_ARB_texture_env_dot3;
+ /** When true, {@link ARBTextureFilterAnisotropic} is supported. */
+ public final boolean GL_ARB_texture_filter_anisotropic;
+ /** When true, {@link ARBTextureFilterMinmax} is supported. */
+ public final boolean GL_ARB_texture_filter_minmax;
+ /** When true, {@link ARBTextureFloat} is supported. */
+ public final boolean GL_ARB_texture_float;
+ /** When true, {@link ARBTextureGather} is supported. */
+ public final boolean GL_ARB_texture_gather;
+ /** When true, {@link ARBTextureMirrorClampToEdge} is supported. */
+ public final boolean GL_ARB_texture_mirror_clamp_to_edge;
+ /** When true, {@link ARBTextureMirroredRepeat} is supported. */
+ public final boolean GL_ARB_texture_mirrored_repeat;
+ /** When true, {@link ARBTextureMultisample} is supported. */
+ public final boolean GL_ARB_texture_multisample;
+ /**
+ * When true, the ARB_texture_non_power_of_two extension is supported.
+ *
+ * Conventional OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. This extension relaxes the size
+ * restrictions for the 1D, 2D, cube map, and 3D texture targets.
+ *
+ * Promoted to core in {@link GL20 OpenGL 2.0}.
+ */
+ public final boolean GL_ARB_texture_non_power_of_two;
+ /**
+ * When true, the ARB_texture_query_levels extension is supported.
+ *
+ * This extension provides a new set of texture functions ({@code textureQueryLevels}) in the OpenGL Shading Language that exposes the number of accessible
+ * mipmap levels in the texture associated with a GLSL sampler variable. The set of accessible levels includes all the levels of the texture defined either
+ * through TexImage*, TexStorage*, or TextureView* ({@link ARBTextureView ARB_texture_view}) APIs that are not below the {@link GL12#GL_TEXTURE_BASE_LEVEL TEXTURE_BASE_LEVEL} or above the
+ * {@link GL12#GL_TEXTURE_MAX_LEVEL TEXTURE_MAX_LEVEL} parameters. For textures defined with TexImage*, the set of resident levels is somewhat implementation-dependent. For fully
+ * defined results, applications should use TexStorage*/TextureView unless the texture has a full mipmap chain and is used with a mipmapped minification
+ * filter.
+ *
+ * These functions means that shaders are not required to manually recompute, approximate, or maintain a uniform holding a pre-computed level count, since
+ * the true level count is already available to the implementation. This value can be used to avoid black or leaking pixel artifacts for rendering methods
+ * which are using texture images as memory pages (eg: virtual textures); methods that can't only rely on the fixed pipeline texture functions which take
+ * advantage of {@link GL12#GL_TEXTURE_MAX_LEVEL TEXTURE_MAX_LEVEL} for their sampling.
+ *
+ * Requires {@link GL30 OpenGL 3.0} and GLSL 1.30. Promoted to core in {@link GL43 OpenGL 4.3}.
+ */
+ public final boolean GL_ARB_texture_query_levels;
+ /**
+ * When true, the ARB_texture_query_lod extension is supported.
+ *
+ * This extension provides a new set of fragment shader texture functions ({@code textureLOD}) that return the results of automatic level-of-detail
+ * computations that would be performed if a texture lookup were performed.
+ *
+ * Requires {@link GL20 OpenGL 2.0}, {@link #GL_EXT_gpu_shader4 EXT_gpu_shader4}, {@link #GL_EXT_texture_array EXT_texture_array} and GLSL 1.30. Promoted to core in {@link GL40 OpenGL 4.0}.
+ */
+ public final boolean GL_ARB_texture_query_lod;
+ /** When true, {@link ARBTextureRectangle} is supported. */
+ public final boolean GL_ARB_texture_rectangle;
+ /** When true, {@link ARBTextureRG} is supported. */
+ public final boolean GL_ARB_texture_rg;
+ /** When true, {@link ARBTextureRGB10_A2UI} is supported. */
+ public final boolean GL_ARB_texture_rgb10_a2ui;
+ /**
+ * When true, the ARB_texture_stencil8 extension is supported.
+ *
+ * This extension accepts {@link GL30#GL_STENCIL_INDEX8 STENCIL_INDEX8} as a texture internal format, and adds STENCIL_INDEX8 to the required internal format list. This removes the
+ * need to use renderbuffers if a stencil-only format is desired.
+ *
+ * Promoted to core in {@link GL44 OpenGL 4.4}.
+ */
+ public final boolean GL_ARB_texture_stencil8;
+ /** When true, {@link ARBTextureStorage} is supported. */
+ public final boolean GL_ARB_texture_storage;
+ /** When true, {@link ARBTextureStorageMultisample} is supported. */
+ public final boolean GL_ARB_texture_storage_multisample;
+ /** When true, {@link ARBTextureSwizzle} is supported. */
+ public final boolean GL_ARB_texture_swizzle;
+ /** When true, {@link ARBTextureView} is supported. */
+ public final boolean GL_ARB_texture_view;
+ /** When true, {@link ARBTimerQuery} is supported. */
+ public final boolean GL_ARB_timer_query;
+ /** When true, {@link ARBTransformFeedback2} is supported. */
+ public final boolean GL_ARB_transform_feedback2;
+ /** When true, {@link ARBTransformFeedback3} is supported. */
+ public final boolean GL_ARB_transform_feedback3;
+ /** When true, {@link ARBTransformFeedbackInstanced} is supported. */
+ public final boolean GL_ARB_transform_feedback_instanced;
+ /** When true, {@link ARBTransformFeedbackOverflowQuery} is supported. */
+ public final boolean GL_ARB_transform_feedback_overflow_query;
+ /** When true, {@link ARBTransposeMatrix} is supported. */
+ public final boolean GL_ARB_transpose_matrix;
+ /** When true, {@link ARBUniformBufferObject} is supported. */
+ public final boolean GL_ARB_uniform_buffer_object;
+ /** When true, {@link ARBVertexArrayBGRA} is supported. */
+ public final boolean GL_ARB_vertex_array_bgra;
+ /** When true, {@link ARBVertexArrayObject} is supported. */
+ public final boolean GL_ARB_vertex_array_object;
+ /** When true, {@link ARBVertexAttrib64Bit} is supported. */
+ public final boolean GL_ARB_vertex_attrib_64bit;
+ /** When true, {@link ARBVertexAttribBinding} is supported. */
+ public final boolean GL_ARB_vertex_attrib_binding;
+ /** When true, {@link ARBVertexBlend} is supported. */
+ public final boolean GL_ARB_vertex_blend;
+ /** When true, {@link ARBVertexBufferObject} is supported. */
+ public final boolean GL_ARB_vertex_buffer_object;
+ /** When true, {@link ARBVertexProgram} is supported. */
+ public final boolean GL_ARB_vertex_program;
+ /** When true, {@link ARBVertexShader} is supported. */
+ public final boolean GL_ARB_vertex_shader;
+ /**
+ * When true, the ARB_vertex_type_10f_11f_11f_rev extension is supported.
+ *
+ * This extension a new vertex attribute data format: a packed 11.11.10 unsigned float vertex data format. This vertex data format can be used to describe
+ * a compressed 3 component stream of values that can be represented by 10- or 11-bit unsigned floating point values.
+ *
+ * The {@link GL30#GL_UNSIGNED_INT_10F_11F_11F_REV UNSIGNED_INT_10F_11F_11F_REV} vertex attribute type is equivalent to the {@link GL30#GL_R11F_G11F_B10F R11F_G11F_B10F} texture internal format.
+ *
+ * Requires {@link GL30 OpenGL 3.0} and {@link ARBVertexType2_10_10_10_REV ARB_vertex_type_2_10_10_10_rev}. Promoted to core in {@link GL44 OpenGL 4.4}.
+ */
+ public final boolean GL_ARB_vertex_type_10f_11f_11f_rev;
+ /** When true, {@link ARBVertexType2_10_10_10_REV} is supported. */
+ public final boolean GL_ARB_vertex_type_2_10_10_10_rev;
+ /** When true, {@link ARBViewportArray} is supported. */
+ public final boolean GL_ARB_viewport_array;
+ /** When true, {@link ARBWindowPos} is supported. */
+ public final boolean GL_ARB_window_pos;
+ /** When true, {@link ATIMeminfo} is supported. */
+ public final boolean GL_ATI_meminfo;
+ /** When true, the ATI_shader_texture_lod extension is supported. */
+ public final boolean GL_ATI_shader_texture_lod;
+ /** When true, {@link ATITextureCompression3DC} is supported. */
+ public final boolean GL_ATI_texture_compression_3dc;
+ /** When true, {@link EXT422Pixels} is supported. */
+ public final boolean GL_EXT_422_pixels;
+ /** When true, {@link EXTABGR} is supported. */
+ public final boolean GL_EXT_abgr;
+ /** When true, {@link EXTBGRA} is supported. */
+ public final boolean GL_EXT_bgra;
+ /** When true, {@link EXTBindableUniform} is supported. */
+ public final boolean GL_EXT_bindable_uniform;
+ /** When true, {@link EXTBlendColor} is supported. */
+ public final boolean GL_EXT_blend_color;
+ /** When true, {@link EXTBlendEquationSeparate} is supported. */
+ public final boolean GL_EXT_blend_equation_separate;
+ /** When true, {@link EXTBlendFuncSeparate} is supported. */
+ public final boolean GL_EXT_blend_func_separate;
+ /** When true, {@link EXTBlendMinmax} is supported. */
+ public final boolean GL_EXT_blend_minmax;
+ /** When true, {@link EXTBlendSubtract} is supported. */
+ public final boolean GL_EXT_blend_subtract;
+ /** When true, {@link EXTClipVolumeHint} is supported. */
+ public final boolean GL_EXT_clip_volume_hint;
+ /** When true, {@link EXTCompiledVertexArray} is supported. */
+ public final boolean GL_EXT_compiled_vertex_array;
+ /** When true, {@link EXTDebugLabel} is supported. */
+ public final boolean GL_EXT_debug_label;
+ /** When true, {@link EXTDebugMarker} is supported. */
+ public final boolean GL_EXT_debug_marker;
+ /** When true, {@link EXTDepthBoundsTest} is supported. */
+ public final boolean GL_EXT_depth_bounds_test;
+ /** When true, {@link EXTDirectStateAccess} is supported. */
+ public final boolean GL_EXT_direct_state_access;
+ /** When true, {@link EXTDrawBuffers2} is supported. */
+ public final boolean GL_EXT_draw_buffers2;
+ /** When true, {@link EXTDrawInstanced} is supported. */
+ public final boolean GL_EXT_draw_instanced;
+ /** When true, {@link EXTEGLImageStorage} is supported. */
+ public final boolean GL_EXT_EGL_image_storage;
+ /**
+ * When true, the EXT_EGL_sync extension is supported.
+ *
+ * This extension extends {@code EGL_KHR_fence_sync} with client API support for OpenGL (compatibility or core profiles) as an EXT extension.
+ *
+ * The {@code "GL_EXT_EGL_sync"} string indicates that a fence sync object can be created in association with a fence command placed in the command stream
+ * of a bound OpenGL context.
+ */
+ public final boolean GL_EXT_EGL_sync;
+ /** When true, {@link EXTExternalBuffer} is supported. */
+ public final boolean GL_EXT_external_buffer;
+ /** When true, {@link EXTFramebufferBlit} is supported. */
+ public final boolean GL_EXT_framebuffer_blit;
+ /** When true, {@link EXTFramebufferMultisample} is supported. */
+ public final boolean GL_EXT_framebuffer_multisample;
+ /** When true, {@link EXTFramebufferMultisampleBlitScaled} is supported. */
+ public final boolean GL_EXT_framebuffer_multisample_blit_scaled;
+ /** When true, {@link EXTFramebufferObject} is supported. */
+ public final boolean GL_EXT_framebuffer_object;
+ /** When true, {@link EXTFramebufferSRGB} is supported. */
+ public final boolean GL_EXT_framebuffer_sRGB;
+ /** When true, {@link EXTGeometryShader4} is supported. */
+ public final boolean GL_EXT_geometry_shader4;
+ /** When true, {@link EXTGPUProgramParameters} is supported. */
+ public final boolean GL_EXT_gpu_program_parameters;
+ /** When true, {@link EXTGPUShader4} is supported. */
+ public final boolean GL_EXT_gpu_shader4;
+ /** When true, {@link EXTMemoryObject} is supported. */
+ public final boolean GL_EXT_memory_object;
+ /** When true, {@link EXTMemoryObjectFD} is supported. */
+ public final boolean GL_EXT_memory_object_fd;
+ /** When true, {@link EXTMemoryObjectWin32} is supported. */
+ public final boolean GL_EXT_memory_object_win32;
+ /**
+ * When true, the EXT_multiview_tessellation_geometry_shader extension is supported.
+ *
+ * This extension removes one of the limitations of the {@code OVR_multiview} extension by allowing the use of tessellation control, tessellation
+ * evaluation, and geometry shaders during multiview rendering. {@code OVR_multiview} by itself forbids the use of any of these shader types.
+ *
+ * When using tessellation control, tessellation evaluation, and geometry shaders during multiview rendering, any such shader must use the
+ * "{@code num_views}" layout qualifier provided by the matching shading language extension to specify a view count. The view count specified in these
+ * shaders must match the count specified in the vertex shader. Additionally, the shading language extension allows these shaders to use the
+ * {@code gl_ViewID_OVR} built-in to handle tessellation or geometry shader processing differently for each view.
+ *
+ * {@code OVR_multiview2} extends {@code OVR_multiview} by allowing view-dependent values for any vertex attributes instead of just the position. This new
+ * extension does not imply the availability of {@code OVR_multiview2}, but if both are available, view-dependent values for any vertex attributes are
+ * also allowed in tessellation control, tessellation evaluation, and geometry shaders.
+ *
+ * Requires {@link GL40 OpenGL 4.0} and {@link OVRMultiview OVR_multiview}.
+ */
+ public final boolean GL_EXT_multiview_tessellation_geometry_shader;
+ /**
+ * When true, the EXT_multiview_texture_multisample extension is supported.
+ *
+ * This extension removes one of the limitations of the {@code OVR_multiview} extension by allowing the use of multisample textures during multiview
+ * rendering.
+ *
+ * This is one of two extensions that allow multisampling when using {@code OVR_multiview}. Each supports one of the two different approaches to
+ * multisampling in OpenGL:
+ *
+ * Core OpenGL has explicit support for multisample texture types, such as {@link GL32#GL_TEXTURE_2D_MULTISAMPLE TEXTURE_2D_MULTISAMPLE}. Applications can access the values of individual
+ * samples and can explicitly "resolve" the samples of each pixel down to a single color.
+ *
+ * The extension {@code EXT_multisampled_render_to_texture} provides support for multisampled rendering to non-multisample texture types, such as
+ * {@link GL11#GL_TEXTURE_2D TEXTURE_2D}. The individual samples for each pixel are maintained internally by the implementation and can not be accessed directly by applications.
+ * These samples are eventually resolved implicitly to a single color for each pixel.
+ *
+ * This extension supports the first multisampling style with multiview rendering; the {@code OVR_multiview_multisampled_render_to_texture} extension
+ * supports the second style. Note that support for one of these multiview extensions does not imply support for the other.
+ *
+ * Requires {@link GL40 OpenGL 4.0} and {@link OVRMultiview OVR_multiview}.
+ */
+ public final boolean GL_EXT_multiview_texture_multisample;
+ /**
+ * When true, the EXT_multiview_timer_query extension is supported.
+ *
+ * This extension removes one of the limitations of the {@code OVR_multiview} extension by allowing the use of timer queries during multiview rendering.
+ * {@code OVR_multiview} does not specify defined behavior for such usage.
+ *
+ * Requires {@link GL40 OpenGL 4.0} and {@link OVRMultiview OVR_multiview}.
+ */
+ public final boolean GL_EXT_multiview_timer_query;
+ /** When true, {@link EXTPackedDepthStencil} is supported. */
+ public final boolean GL_EXT_packed_depth_stencil;
+ /** When true, {@link EXTPackedFloat} is supported. */
+ public final boolean GL_EXT_packed_float;
+ /** When true, {@link EXTPixelBufferObject} is supported. */
+ public final boolean GL_EXT_pixel_buffer_object;
+ /** When true, {@link EXTPointParameters} is supported. */
+ public final boolean GL_EXT_point_parameters;
+ /** When true, {@link EXTPolygonOffsetClamp} is supported. */
+ public final boolean GL_EXT_polygon_offset_clamp;
+ /**
+ * When true, the EXT_post_depth_coverage extension is supported.
+ *
+ * This extension allows the fragment shader to control whether values in {@code gl_SampleMaskIn[]} reflect the coverage after application of the early
+ * depth and stencil tests. This feature can be enabled with the following layout qualifier in the fragment shader:
+ *
+ *
+ * layout(post_depth_coverage) in;
+ *
+ * To use this feature, early fragment tests must also be enabled in the fragment shader via:
+ *
+ *
+ * layout(early_fragment_tests) in;
+ */
+ public final boolean GL_EXT_post_depth_coverage;
+ /** When true, {@link EXTProvokingVertex} is supported. */
+ public final boolean GL_EXT_provoking_vertex;
+ /** When true, {@link EXTRasterMultisample} is supported. */
+ public final boolean GL_EXT_raster_multisample;
+ /** When true, {@link EXTSecondaryColor} is supported. */
+ public final boolean GL_EXT_secondary_color;
+ /** When true, {@link EXTSemaphore} is supported. */
+ public final boolean GL_EXT_semaphore;
+ /** When true, {@link EXTSemaphoreFD} is supported. */
+ public final boolean GL_EXT_semaphore_fd;
+ /** When true, {@link EXTSemaphoreWin32} is supported. */
+ public final boolean GL_EXT_semaphore_win32;
+ /** When true, {@link EXTSeparateShaderObjects} is supported. */
+ public final boolean GL_EXT_separate_shader_objects;
+ /** When true, {@link EXTShaderFramebufferFetch} is supported. */
+ public final boolean GL_EXT_shader_framebuffer_fetch;
+ /** When true, {@link EXTShaderFramebufferFetchNonCoherent} is supported. */
+ public final boolean GL_EXT_shader_framebuffer_fetch_non_coherent;
+ /**
+ * When true, the EXT_shader_image_load_formatted extension is supported.
+ *
+ * {@link ARBShaderImageLoadStore ARB_shader_image_load_store} (and OpenGL 4.2) added support for random access load and store from/to texture images, but due to hardware
+ * limitations, loads were required to declare the image format in the shader source. This extension relaxes that requirement, and the return values from
+ * {@code imageLoad} can be format-converted based on the format of the image binding.
+ */
+ public final boolean GL_EXT_shader_image_load_formatted;
+ /** When true, {@link EXTShaderImageLoadStore} is supported. */
+ public final boolean GL_EXT_shader_image_load_store;
+ /**
+ * When true, the EXT_shader_integer_mix extension is supported.
+ *
+ * GLSL 1.30 (and GLSL ES 3.00) expanded the mix() built-in function to operate on a boolean third argument that does not interpolate but selects. This
+ * extension extends mix() to select between int, uint, and bool components.
+ *
+ * Requires {@link GL30 OpenGL 3.0}.
+ */
+ public final boolean GL_EXT_shader_integer_mix;
+ /**
+ * When true, the EXT_shadow_funcs extension is supported.
+ *
+ * This extension generalizes the {@link #GL_ARB_shadow ARB_shadow} extension to support all eight binary texture comparison functions rather than just {@link GL11#GL_LEQUAL LEQUAL} and
+ * {@link GL11#GL_GEQUAL GEQUAL}.
+ *
+ * Requires {@link #GL_ARB_depth_texture ARB_depth_texture} and {@link #GL_ARB_shadow ARB_shadow}.
+ */
+ public final boolean GL_EXT_shadow_funcs;
+ /** When true, {@link EXTSharedTexturePalette} is supported. */
+ public final boolean GL_EXT_shared_texture_palette;
+ /**
+ * When true, the EXT_sparse_texture2 extension is supported.
+ *
+ * This extension builds on the {@link ARBSparseTexture ARB_sparse_texture} extension, providing the following new functionality:
+ *
+ *
+ * - New built-in GLSL texture lookup and image load functions are provided that return information on whether the texels accessed for the texture
+ * lookup accessed uncommitted texture memory.
+ *
+ *
New built-in GLSL texture lookup functions are provided that specify a minimum level of detail to use for lookups where the level of detail is
+ * computed automatically. This allows shaders to avoid accessing unpopulated portions of high-resolution levels of detail when it knows that the
+ * memory accessed is unpopulated, either from a priori knowledge or from feedback provided by the return value of previously executed "sparse"
+ * texture lookup functions.
+ *
+ * Reads of uncommitted texture memory will act as though such memory were filled with zeroes; previously, the values returned by reads were undefined.
+ *
+ * Standard implementation-independent virtual page sizes for internal formats required to be supported with sparse textures. These standard sizes can
+ * be requested by leaving {@link ARBSparseTexture#GL_VIRTUAL_PAGE_SIZE_INDEX_ARB VIRTUAL_PAGE_SIZE_INDEX_ARB} at its initial value (0).
+ *
+ * Support for creating sparse multisample and multisample array textures is added. However, the virtual page sizes for such textures remain fully
+ * implementation-dependent.
+ *
+ *
+ * Requires {@link ARBSparseTexture ARB_sparse_texture}.
+ */
+ public final boolean GL_EXT_sparse_texture2;
+ /** When true, {@link EXTStencilClearTag} is supported. */
+ public final boolean GL_EXT_stencil_clear_tag;
+ /** When true, {@link EXTStencilTwoSide} is supported. */
+ public final boolean GL_EXT_stencil_two_side;
+ /** When true, {@link EXTStencilWrap} is supported. */
+ public final boolean GL_EXT_stencil_wrap;
+ /** When true, {@link EXTTextureArray} is supported. */
+ public final boolean GL_EXT_texture_array;
+ /** When true, {@link EXTTextureBufferObject} is supported. */
+ public final boolean GL_EXT_texture_buffer_object;
+ /** When true, {@link EXTTextureCompressionLATC} is supported. */
+ public final boolean GL_EXT_texture_compression_latc;
+ /** When true, {@link EXTTextureCompressionRGTC} is supported. */
+ public final boolean GL_EXT_texture_compression_rgtc;
+ /** When true, {@link EXTTextureCompressionS3TC} is supported. */
+ public final boolean GL_EXT_texture_compression_s3tc;
+ /** When true, {@link EXTTextureFilterAnisotropic} is supported. */
+ public final boolean GL_EXT_texture_filter_anisotropic;
+ /** When true, {@link EXTTextureFilterMinmax} is supported. */
+ public final boolean GL_EXT_texture_filter_minmax;
+ /** When true, {@link EXTTextureInteger} is supported. */
+ public final boolean GL_EXT_texture_integer;
+ /** When true, {@link EXTTextureMirrorClamp} is supported. */
+ public final boolean GL_EXT_texture_mirror_clamp;
+ /**
+ * This extension adds support for various shadow sampler types with texture functions having interactions with the LOD of texture lookups.
+ *
+ * Modern shading languages support LOD queries for shadow sampler types, but until now the OpenGL Shading Language Specification has excluded multiple
+ * texture function overloads involving LOD calculations with various shadow samplers. Shading languages for other APIs do support the equivalent
+ * LOD-based texture sampling functions for these types which has made porting between those shading languages to GLSL cumbersome and has required the
+ * usage of sub-optimal workarounds.
+ *
+ * Requires {@link GL20 OpenGL 2.0} and {@link EXTGPUShader4 EXT_gpu_shader4} or equivalent functionality.
+ */
+ public final boolean GL_EXT_texture_shadow_lod;
+ /** When true, {@link EXTTextureSharedExponent} is supported. */
+ public final boolean GL_EXT_texture_shared_exponent;
+ /** When true, {@link EXTTextureSnorm} is supported. */
+ public final boolean GL_EXT_texture_snorm;
+ /** When true, {@link EXTTextureSRGB} is supported. */
+ public final boolean GL_EXT_texture_sRGB;
+ /** When true, {@link EXTTextureSRGBDecode} is supported. */
+ public final boolean GL_EXT_texture_sRGB_decode;
+ /** When true, {@link EXTTextureSRGBR8} is supported. */
+ public final boolean GL_EXT_texture_sRGB_R8;
+ /** When true, {@link EXTTextureSRGBRG8} is supported. */
+ public final boolean GL_EXT_texture_sRGB_RG8;
+ /** When true, {@link EXTTextureStorage} is supported. */
+ public final boolean GL_EXT_texture_storage;
+ /** When true, {@link EXTTextureSwizzle} is supported. */
+ public final boolean GL_EXT_texture_swizzle;
+ /** When true, {@link EXTTimerQuery} is supported. */
+ public final boolean GL_EXT_timer_query;
+ /** When true, {@link EXTTransformFeedback} is supported. */
+ public final boolean GL_EXT_transform_feedback;
+ /**
+ * When true, the EXT_vertex_array_bgra extension is supported.
+ *
+ * This extension provides a single new component format for vertex arrays to read 4-component unsigned byte vertex attributes with a BGRA component
+ * ordering.
+ *
+ * OpenGL expects vertex arrays containing 4 unsigned bytes per element to be in the RGBA, STRQ, or XYZW order (reading components left-to-right in their
+ * lower address to higher address order). Essentially the order the components appear in memory is the order the components appear in the resulting
+ * vertex attribute vector.
+ *
+ * However Direct3D has color (diffuse and specular) vertex arrays containing 4 unsigned bytes per element that are in a BGRA order (again reading
+ * components left-to-right in their lower address to higher address order). Direct3D calls this "ARGB" reading the components in the opposite order
+ * (reading components left-to-right in their higher address to lower address order). This ordering is generalized in the DirectX 10 by the
+ * DXGI_FORMAT_B8G8R8A8_UNORM format.
+ *
+ * For an OpenGL application to source color data from a vertex buffer formatted for Direct3D's color array format conventions, the application is forced
+ * to either:
+ *
+ *
+ * - Rely on a vertex program or shader to swizzle the color components from the BGRA to conventional RGBA order.
+ * - Re-order the color data components in the vertex buffer from Direct3D's native BGRA order to OpenGL's native RGBA order.
+ *
+ *
+ * Neither option is entirely satisfactory.
+ *
+ * Option 1 means vertex shaders have to be re-written to source colors differently. If the same vertex shader is used with vertex arrays configured to
+ * source the color as 4 floating-point color components, the swizzle for BGRA colors stored as 4 unsigned bytes is no longer appropriate. The shader's
+ * swizzling of colors becomes dependent on the type and number of color components. Ideally the vertex shader should be independent from the format and
+ * component ordering of the data it sources.
+ *
+ * Option 2 is expensive because vertex buffers may have to be reformatted prior to use. OpenGL treats the memory for vertex arrays (whether client-side
+ * memory or buffer objects) as essentially untyped memory and vertex arrays can be stored separately, interleaved, or even interwoven (where multiple
+ * arrays overlap with differing strides and formats).
+ *
+ * Rather than force a re-ordering of either vertex array components in memory or a vertex array format-dependent re-ordering of vertex shader inputs,
+ * OpenGL can simply provide a vertex array format that matches the Direct3D color component ordering.
+ *
+ * This approach mimics that of the EXT_bgra extension for pixel and texel formats except for vertex instead of image data.
+ */
+ public final boolean GL_EXT_vertex_array_bgra;
+ /** When true, {@link EXTVertexAttrib64bit} is supported. */
+ public final boolean GL_EXT_vertex_attrib_64bit;
+ /** When true, {@link EXTWin32KeyedMutex} is supported. */
+ public final boolean GL_EXT_win32_keyed_mutex;
+ /** When true, {@link EXTWindowRectangles} is supported. */
+ public final boolean GL_EXT_window_rectangles;
+ /** When true, {@link EXTX11SyncObject} is supported. */
+ public final boolean GL_EXT_x11_sync_object;
+ /** When true, {@link GREMEDYFrameTerminator} is supported. */
+ public final boolean GL_GREMEDY_frame_terminator;
+ /** When true, {@link GREMEDYStringMarker} is supported. */
+ public final boolean GL_GREMEDY_string_marker;
+ /** When true, {@link INTELBlackholeRender} is supported. */
+ public final boolean GL_INTEL_blackhole_render;
+ /** When true, {@link INTELConservativeRasterization} is supported. */
+ public final boolean GL_INTEL_conservative_rasterization;
+ /**
+ * When true, the INTEL_fragment_shader_ordering extension is supported.
+ *
+ * Graphics devices may execute in parallel fragment shaders referring to the same window xy coordinates. Framebuffer writes are guaranteed to be
+ * processed in primitive rasterization order, but there is no order guarantee for other instructions and image or buffer object accesses in particular.
+ *
+ * The extension introduces a new GLSL built-in function, beginFragmentShaderOrderingINTEL(), which blocks execution of a fragment shader invocation until
+ * invocations from previous primitives that map to the same xy window coordinates (and same sample when per-sample shading is active) complete their
+ * execution. All memory transactions from previous fragment shader invocations are made visible to the fragment shader invocation that called
+ * beginFragmentShaderOrderingINTEL() when the function returns.
+ */
+ public final boolean GL_INTEL_fragment_shader_ordering;
+ /** When true, {@link INTELFramebufferCMAA} is supported. */
+ public final boolean GL_INTEL_framebuffer_CMAA;
+ /** When true, {@link INTELMapTexture} is supported. */
+ public final boolean GL_INTEL_map_texture;
+ /** When true, {@link INTELPerformanceQuery} is supported. */
+ public final boolean GL_INTEL_performance_query;
+ /**
+ * When true, the INTEL_shader_integer_functions2 extension is supported.
+ *
+ * OpenCL and other GPU programming environments provides a number of useful functions operating on integer data. Many of these functions are supported by
+ * specialized instructions various GPUs. Correct GLSL implementations for some of these functions are non-trivial. Recognizing open-coded versions of
+ * these functions is often impractical. As a result, potential performance improvements go unrealized.
+ *
+ * This extension makes available a number of functions that have specialized instruction support on Intel GPUs.
+ *
+ * Requires GLSL 1.30 or EXT_gpu_shader4.
+ */
+ public final boolean GL_INTEL_shader_integer_functions2;
+ /** When true, {@link KHRBlendEquationAdvanced} is supported. */
+ public final boolean GL_KHR_blend_equation_advanced;
+ /** When true, {@link KHRBlendEquationAdvancedCoherent} is supported. */
+ public final boolean GL_KHR_blend_equation_advanced_coherent;
+ /** When true, {@link KHRContextFlushControl} is supported. */
+ public final boolean GL_KHR_context_flush_control;
+ /** When true, {@link KHRDebug} is supported. */
+ public final boolean GL_KHR_debug;
+ /** When true, {@link KHRNoError} is supported. */
+ public final boolean GL_KHR_no_error;
+ /** When true, {@link KHRParallelShaderCompile} is supported. */
+ public final boolean GL_KHR_parallel_shader_compile;
+ /**
+ * When true, the KHR_robust_buffer_access_behavior extension is supported.
+ *
+ * This extension specifies the behavior of out-of-bounds buffer and array accesses. This is an improvement over the existing {@link #GL_KHR_robustness KHR_robustness}
+ * extension which states that the application should not crash, but that behavior is otherwise undefined. This extension specifies the access protection
+ * provided by the GL to ensure that out-of-bounds accesses cannot read from or write to data not owned by the application. All accesses are contained
+ * within the buffer object and program area they reference. These additional robustness guarantees apply to contexts created with the robust access flag
+ * set.
+ *
+ * Requires {@link GL32 OpenGL 3.2} and {@link #GL_KHR_robustness KHR_robustness}.
+ */
+ public final boolean GL_KHR_robust_buffer_access_behavior;
+ /** When true, {@link KHRRobustness} is supported. */
+ public final boolean GL_KHR_robustness;
+ /** When true, {@link KHRShaderSubgroup} is supported. */
+ public final boolean GL_KHR_shader_subgroup;
+ /**
+ * When true, the KHR_texture_compression_astc_hdr extension is supported.
+ *
+ * This extension corresponds to the ASTC HDR Profile, see {@link KHRTextureCompressionASTCLDR KHR_texture_compression_astc_ldr} for details.
+ */
+ public final boolean GL_KHR_texture_compression_astc_hdr;
+ /** When true, {@link KHRTextureCompressionASTCLDR} is supported. */
+ public final boolean GL_KHR_texture_compression_astc_ldr;
+ /**
+ * When true, the KHR_texture_compression_astc_sliced_3d extension is supported.
+ *
+ * Adaptive Scalable Texture Compression (ASTC) is a new texture compression technology that offers unprecendented flexibility, while producing better or
+ * comparable results than existing texture compressions at all bit rates. It includes support for 2D and slice-based 3D textures, with low and high
+ * dynamic range, at bitrates from below 1 bit/pixel up to 8 bits/pixel in fine steps.
+ *
+ * This extension extends the functionality of {@link KHRTextureCompressionASTCLDR KHR_texture_compression_astc_ldr} to include slice-based 3D textures for textures using the LDR
+ * profile in the same way as the HDR profile allows slice-based 3D textures.
+ *
+ * Requires {@link KHRTextureCompressionASTCLDR KHR_texture_compression_astc_ldr}.
+ */
+ public final boolean GL_KHR_texture_compression_astc_sliced_3d;
+ /** When true, {@link MESAFramebufferFlipX} is supported. */
+ public final boolean GL_MESA_framebuffer_flip_x;
+ /** When true, {@link MESAFramebufferFlipY} is supported. */
+ public final boolean GL_MESA_framebuffer_flip_y;
+ /** When true, {@link MESAFramebufferSwapXY} is supported. */
+ public final boolean GL_MESA_framebuffer_swap_xy;
+ /**
+ * When true, the MESA_tile_raster_order extension is supported.
+ *
+ * This extension extends the sampling-from-the-framebuffer behavior provided by {@code GL_ARB_texture_barrier} to allow setting the rasterization order
+ * of the scene, so that overlapping blits can be implemented. This can be used for scrolling or window movement within in 2D scenes, without first
+ * copying to a temporary.
+ *
+ * Requires {@link ARBTextureBarrier ARB_texture_barrier} or {@link NVTextureBarrier NV_texture_barrier}.
+ */
+ public final boolean GL_MESA_tile_raster_order;
+ /** When true, {@link NVAlphaToCoverageDitherControl} is supported. */
+ public final boolean GL_NV_alpha_to_coverage_dither_control;
+ /** When true, {@link NVBindlessMultiDrawIndirect} is supported. */
+ public final boolean GL_NV_bindless_multi_draw_indirect;
+ /** When true, {@link NVBindlessMultiDrawIndirectCount} is supported. */
+ public final boolean GL_NV_bindless_multi_draw_indirect_count;
+ /** When true, {@link NVBindlessTexture} is supported. */
+ public final boolean GL_NV_bindless_texture;
+ /** When true, {@link NVBlendEquationAdvanced} is supported. */
+ public final boolean GL_NV_blend_equation_advanced;
+ /** When true, {@link NVBlendEquationAdvancedCoherent} is supported. */
+ public final boolean GL_NV_blend_equation_advanced_coherent;
+ /** When true, {@link NVBlendMinmaxFactor} is supported. */
+ public final boolean GL_NV_blend_minmax_factor;
+ /** When true, the NV_blend_square extension is supported. */
+ public final boolean GL_NV_blend_square;
+ /** When true, {@link NVClipSpaceWScaling} is supported. */
+ public final boolean GL_NV_clip_space_w_scaling;
+ /** When true, {@link NVCommandList} is supported. */
+ public final boolean GL_NV_command_list;
+ /**
+ * When true, the NV_compute_shader_derivatives extension is supported.
+ *
+ * This extension adds OpenGL API support for the OpenGL Shading Language (GLSL) extension {@code "NV_compute_shader_derivatives"}.
+ *
+ * That extension, when enabled, allows applications to use derivatives in compute shaders. It adds compute shader support for explicit derivative
+ * built-in functions like {@code dFdx()}, automatic derivative computation in texture lookup functions like {@code texture()}, use of the optional LOD
+ * bias parameter to adjust the computed level of detail values in texture lookup functions, and the texture level of detail query function
+ * {@code textureQueryLod()}.
+ *
+ * Requires {@link GL45 OpenGL 4.5}.
+ */
+ public final boolean GL_NV_compute_shader_derivatives;
+ /** When true, {@link NVConditionalRender} is supported. */
+ public final boolean GL_NV_conditional_render;
+ /** When true, {@link NVConservativeRaster} is supported. */
+ public final boolean GL_NV_conservative_raster;
+ /** When true, {@link NVConservativeRasterDilate} is supported. */
+ public final boolean GL_NV_conservative_raster_dilate;
+ /** When true, {@link NVConservativeRasterPreSnap} is supported. */
+ public final boolean GL_NV_conservative_raster_pre_snap;
+ /** When true, {@link NVConservativeRasterPreSnapTriangles} is supported. */
+ public final boolean GL_NV_conservative_raster_pre_snap_triangles;
+ /**
+ * When true, the NV_conservative_raster_underestimation extension is supported.
+ *
+ * The extension {@link NVConservativeRaster NV_conservative_raster} provides a new rasterization mode known as "Overestimated Conservative Rasterization", where any pixel
+ * that is partially covered, even if no sample location is covered, is treated as fully covered and a corresponding fragment will be shaded. There is
+ * also an "Underestimated Conservative Rasterization" variant, where only the pixels that are completely covered by the primitive are rasterized.
+ *
+ * This extension provides the underestimated conservative rasterization information for each fragment in the fragment shader through a new built-in
+ * {@code gl_FragFullyCoveredNV}.
+ */
+ public final boolean GL_NV_conservative_raster_underestimation;
+ /** When true, {@link NVCopyDepthToColor} is supported. */
+ public final boolean GL_NV_copy_depth_to_color;
+ /** When true, {@link NVCopyImage} is supported. */
+ public final boolean GL_NV_copy_image;
+ /** When true, {@link NVDeepTexture3D} is supported. */
+ public final boolean GL_NV_deep_texture3D;
+ /** When true, {@link NVDepthBufferFloat} is supported. */
+ public final boolean GL_NV_depth_buffer_float;
+ /** When true, {@link NVDepthClamp} is supported. */
+ public final boolean GL_NV_depth_clamp;
+ /** When true, {@link NVDrawTexture} is supported. */
+ public final boolean GL_NV_draw_texture;
+ /** When true, {@link NVDrawVulkanImage} is supported. */
+ public final boolean GL_NV_draw_vulkan_image;
+ /** When true, the NV_ES3_1_compatibility extension is supported. */
+ public final boolean GL_NV_ES3_1_compatibility;
+ /** When true, {@link NVExplicitMultisample} is supported. */
+ public final boolean GL_NV_explicit_multisample;
+ /** When true, {@link NVFence} is supported. */
+ public final boolean GL_NV_fence;
+ /** When true, {@link NVFillRectangle} is supported. */
+ public final boolean GL_NV_fill_rectangle;
+ /** When true, {@link NVFloatBuffer} is supported. */
+ public final boolean GL_NV_float_buffer;
+ /** When true, {@link NVFogDistance} is supported. */
+ public final boolean GL_NV_fog_distance;
+ /** When true, {@link NVFragmentCoverageToColor} is supported. */
+ public final boolean GL_NV_fragment_coverage_to_color;
+ /** When true, the NV_fragment_program4 extension is supported. */
+ public final boolean GL_NV_fragment_program4;
+ /** When true, the NV_fragment_program_option extension is supported. */
+ public final boolean GL_NV_fragment_program_option;
+ /**
+ * When true, the NV_fragment_shader_barycentric extension is supported.
+ *
+ * This extension advertises OpenGL support for the OpenGL Shading Language (GLSL) extension {@code "NV_fragment_shader_barycentric"}, which provides
+ * fragment shader built-in variables holding barycentric weight vectors that identify the location of the fragment within its primitive. Additionally,
+ * the GLSL extension allows fragment the ability to read raw attribute values for each of the vertices of the primitive that produced the fragment.
+ *
+ * Requires {@link GL45 OpenGL 4.5}.
+ */
+ public final boolean GL_NV_fragment_shader_barycentric;
+ /**
+ * When true, the NV_fragment_shader_interlock extension is supported.
+ *
+ * In unextended OpenGL 4.3, applications may produce a large number of fragment shader invocations that perform loads and stores to memory using image
+ * uniforms, atomic counter uniforms, buffer variables, or pointers. The order in which loads and stores to common addresses are performed by different
+ * fragment shader invocations is largely undefined. For algorithms that use shader writes and touch the same pixels more than once, one or more of the
+ * following techniques may be required to ensure proper execution ordering:
+ *
+ *
+ * - inserting Finish or WaitSync commands to drain the pipeline between different "passes" or "layers";
+ * - using only atomic memory operations to write to shader memory (which may be relatively slow and limits how memory may be updated); or
+ * - injecting spin loops into shaders to prevent multiple shader invocations from touching the same memory concurrently.
+ *
+ *
+ * This extension provides new GLSL built-in functions beginInvocationInterlockNV() and endInvocationInterlockNV() that delimit a critical section of
+ * fragment shader code. For pairs of shader invocations with "overlapping" coverage in a given pixel, the OpenGL implementation will guarantee that the
+ * critical section of the fragment shader will be executed for only one fragment at a time.
+ *
+ * There are four different interlock modes supported by this extension, which are identified by layout qualifiers. The qualifiers
+ * "pixel_interlock_ordered" and "pixel_interlock_unordered" provides mutual exclusion in the critical section for any pair of fragments corresponding to
+ * the same pixel. When using multisampling, the qualifiers "sample_interlock_ordered" and "sample_interlock_unordered" only provide mutual exclusion for
+ * pairs of fragments that both cover at least one common sample in the same pixel; these are recommended for performance if shaders use per-sample data
+ * structures.
+ *
+ * Additionally, when the "pixel_interlock_ordered" or "sample_interlock_ordered" layout qualifier is used, the interlock also guarantees that the
+ * critical section for multiple shader invocations with "overlapping" coverage will be executed in the order in which the primitives were processed by
+ * the GL. Such a guarantee is useful for applications like blending in the fragment shader, where an application requires that fragment values to be
+ * composited in the framebuffer in primitive order.
+ *
+ * This extension can be useful for algorithms that need to access per-pixel data structures via shader loads and stores. Such algorithms using this
+ * extension can access such data structures in the critical section without worrying about other invocations for the same pixel accessing the data
+ * structures concurrently. Additionally, the ordering guarantees are useful for cases where the API ordering of fragments is meaningful. For example,
+ * applications may be able to execute programmable blending operations in the fragment shader, where the destination buffer is read via image loads and
+ * the final value is written via image stores.
+ *
+ * Requires {@link GL43 OpenGL 4.3} and GLSL 4.30.
+ */
+ public final boolean GL_NV_fragment_shader_interlock;
+ /** When true, {@link NVFramebufferMixedSamples} is supported. */
+ public final boolean GL_NV_framebuffer_mixed_samples;
+ /** When true, {@link NVFramebufferMultisampleCoverage} is supported. */
+ public final boolean GL_NV_framebuffer_multisample_coverage;
+ /**
+ * When true, the NV_geometry_shader4 extension is supported.
+ *
+ * This extension builds upon the {@link #GL_EXT_geometry_shader4 EXT_geometry_shader4} specification to provide two additional capabilities:
+ *
+ *
+ * - Support for QUADS, QUAD_STRIP, and POLYGON primitive types when geometry shaders are enabled. Such primitives will be tessellated into individual
+ * triangles.
+ * - Setting the value of GEOMETRY_VERTICES_OUT_EXT will take effect immediately. It is not necessary to link the program object in order for this change
+ * to take effect, as is the case in the EXT version of this extension.
+ *
+ *
+ * Requires {@link #GL_EXT_geometry_shader4 EXT_geometry_shader4}.
+ */
+ public final boolean GL_NV_geometry_shader4;
+ /**
+ * When true, the NV_geometry_shader_passthrough extension is supported.
+ *
+ * This extension provides a shading language abstraction to express such shaders without requiring explicit logic to manually copy attributes from input
+ * vertices to output vertices.
+ */
+ public final boolean GL_NV_geometry_shader_passthrough;
+ /** When true, {@link NVGPUMulticast} is supported. */
+ public final boolean GL_NV_gpu_multicast;
+ /** When true, {@link NVGPUShader5} is supported. */
+ public final boolean GL_NV_gpu_shader5;
+ /** When true, {@link NVHalfFloat} is supported. */
+ public final boolean GL_NV_half_float;
+ /** When true, {@link NVInternalformatSampleQuery} is supported. */
+ public final boolean GL_NV_internalformat_sample_query;
+ /** When true, {@link NVLightMaxExponent} is supported. */
+ public final boolean GL_NV_light_max_exponent;
+ /** When true, {@link NVMemoryAttachment} is supported. */
+ public final boolean GL_NV_memory_attachment;
+ /** When true, {@link NVMemoryObjectSparse} is supported. */
+ public final boolean GL_NV_memory_object_sparse;
+ /** When true, {@link NVMeshShader} is supported. */
+ public final boolean GL_NV_mesh_shader;
+ /** When true, {@link NVMultisampleCoverage} is supported. */
+ public final boolean GL_NV_multisample_coverage;
+ /** When true, {@link NVMultisampleFilterHint} is supported. */
+ public final boolean GL_NV_multisample_filter_hint;
+ /** When true, {@link NVPackedDepthStencil} is supported. */
+ public final boolean GL_NV_packed_depth_stencil;
+ /** When true, {@link NVPathRendering} is supported. */
+ public final boolean GL_NV_path_rendering;
+ /** When true, {@link NVPathRenderingSharedEdge} is supported. */
+ public final boolean GL_NV_path_rendering_shared_edge;
+ /** When true, {@link NVPixelDataRange} is supported. */
+ public final boolean GL_NV_pixel_data_range;
+ /** When true, {@link NVPointSprite} is supported. */
+ public final boolean GL_NV_point_sprite;
+ /** When true, {@link NVPrimitiveRestart} is supported. */
+ public final boolean GL_NV_primitive_restart;
+ /** When true, {@link NVPrimitiveShadingRate} is supported. */
+ public final boolean GL_NV_primitive_shading_rate;
+ /** When true, {@link NVQueryResource} is supported. */
+ public final boolean GL_NV_query_resource;
+ /** When true, {@link NVQueryResourceTag} is supported. */
+ public final boolean GL_NV_query_resource_tag;
+ /** When true, {@link NVRepresentativeFragmentTest} is supported. */
+ public final boolean GL_NV_representative_fragment_test;
+ /** When true, {@link NVRobustnessVideoMemoryPurge} is supported. */
+ public final boolean GL_NV_robustness_video_memory_purge;
+ /** When true, {@link NVSampleLocations} is supported. */
+ public final boolean GL_NV_sample_locations;
+ /**
+ * When true, the NV_sample_mask_override_coverage extension is supported.
+ *
+ * This extension allows the fragment shader to control whether the gl_SampleMask output can enable samples that were not covered by the original
+ * primitive, or that failed the early depth/stencil tests.
+ */
+ public final boolean GL_NV_sample_mask_override_coverage;
+ /** When true, {@link NVScissorExclusive} is supported. */
+ public final boolean GL_NV_scissor_exclusive;
+ /**
+ * When true, the NV_shader_atomic_float extension is supported.
+ *
+ * This extension provides GLSL built-in functions and assembly opcodes allowing shaders to perform atomic read-modify-write operations to buffer or
+ * texture memory with floating-point components. The set of atomic operations provided by this extension is limited to adds and exchanges. Providing
+ * atomic add support allows shaders to atomically accumulate the sum of floating-point values into buffer or texture memory across multiple (possibly
+ * concurrent) shader invocations.
+ *
+ * This extension provides GLSL support for atomics targeting image uniforms (if GLSL 4.20, {@link #GL_ARB_shader_image_load_store ARB_shader_image_load_store}, or
+ * {@link #GL_EXT_shader_image_load_store EXT_shader_image_load_store} is supported) or floating-point pointers (if {@link #GL_NV_gpu_shader5 NV_gpu_shader5} is supported). Additionally, assembly opcodes
+ * for these operations is also provided if NV_gpu_program5 is supported.
+ */
+ public final boolean GL_NV_shader_atomic_float;
+ /**
+ * When true, the NV_shader_atomic_float64 extension is supported.
+ *
+ * This extension provides GLSL built-in functions and assembly opcodes allowing shaders to perform atomic read-modify-write operations to buffer or
+ * shared memory with double-precision floating-point components. The set of atomic operations provided by this extension is limited to adds and
+ * exchanges. Providing atomic add support allows shaders to atomically accumulate the sum of double-precision floating-point values into buffer memory
+ * across multiple (possibly concurrent) shader invocations.
+ *
+ * This extension provides GLSL support for atomics targeting double-precision floating-point pointers (if {@link NVGPUShader5 NV_gpu_shader5} is supported).
+ * Additionally, assembly opcodes for these operations are also provided if {@code NV_gpu_program5} is supported.
+ *
+ * Requires {@link ARBGPUShaderFP64 ARB_gpu_shader_fp64} or {@code NV_gpu_program_fp64}.
+ */
+ public final boolean GL_NV_shader_atomic_float64;
+ /**
+ * When true, the NV_shader_atomic_fp16_vector extension is supported.
+ *
+ * This extension provides GLSL built-in functions and assembly opcodes allowing shaders to perform a limited set of atomic read-modify-write operations
+ * to buffer or texture memory with 16-bit floating point vector surface formats.
+ *
+ * Requires {@link #GL_NV_gpu_shader5 NV_gpu_shader5}.
+ */
+ public final boolean GL_NV_shader_atomic_fp16_vector;
+ /**
+ * When true, the NV_shader_atomic_int64 extension is supported.
+ *
+ * This extension provides additional GLSL built-in functions and assembly opcodes allowing shaders to perform additional atomic read-modify-write
+ * operations on 64-bit signed and unsigned integers stored in buffer object memory.
+ */
+ public final boolean GL_NV_shader_atomic_int64;
+ /** When true, {@link NVShaderBufferLoad} is supported. */
+ public final boolean GL_NV_shader_buffer_load;
+ /** When true, {@link NVShaderBufferStore} is supported. */
+ public final boolean GL_NV_shader_buffer_store;
+ /** When true, {@link NVShaderSubgroupPartitioned} is supported. */
+ public final boolean GL_NV_shader_subgroup_partitioned;
+ /**
+ * When true, the NV_shader_texture_footprint extension is supported.
+ *
+ * This extension adds OpenGL API support for the OpenGL Shading Language (GLSL) extension {@code "NV_shader_texture_footprint"}. That extension adds a
+ * new set of texture query functions ({@code "textureFootprint*NV"}) to GLSL. These built-in functions prepare to perform a filtered texture lookup based
+ * on coordinates and other parameters passed in by the calling code. However, instead of returning data from the provided texture image, these query
+ * functions instead return data identifying the texture footprint for an equivalent texture access. The texture footprint identifies a set of
+ * texels that may be accessed in order to return a filtered result for the texture access.
+ *
+ * The footprint itself is a structure that includes integer values that identify a small neighborhood of texels in the texture being accessed and a
+ * bitfield that indicates which texels in that neighborhood would be used. Each bit in the returned bitfield identifies whether any texel in a small
+ * aligned block of texels would be fetched by the texture lookup. The size of each block is specified by an access granularity provided by the
+ * shader. The minimum granularity supported by this extension is 2x2 (for 2D textures) and 2x2x2 (for 3D textures); the maximum granularity is 256x256
+ * (for 2D textures) or 64x32x32 (for 3D textures). Each footprint query returns the footprint from a single texture level. When using minification
+ * filters that combine accesses from multiple mipmap levels, shaders must perform separate queries for the two levels accessed ("fine" and "coarse"). The
+ * footprint query also returns a flag indicating if the texture lookup would access texels from only one mipmap level or from two neighboring levels.
+ *
+ * This extension should be useful for multi-pass rendering operations that do an initial expensive rendering pass to produce a first image that is then
+ * used as a texture for a second pass. If the second pass ends up accessing only portions of the first image (e.g., due to visibility), the work spent
+ * rendering the non-accessed portion of the first image was wasted. With this feature, an application can limit this waste using an initial pass over the
+ * geometry in the second image that performs a footprint query for each visible pixel to determine the set of pixels that it needs from the first image.
+ * This pass would accumulate an aggregate footprint of all visible pixels into a separate "footprint texture" using shader atomics. Then, when rendering
+ * the first image, the application can kill all shading work for pixels not in this aggregate footprint.
+ *
+ * The implementation of this extension has a number of limitations. The texture footprint query functions are only supported for two- and
+ * three-dimensional textures ({@link GL11#GL_TEXTURE_2D TEXTURE_2D}, {@link GL12#GL_TEXTURE_3D TEXTURE_3D}). Texture footprint evaluation only supports the {@link GL12#GL_CLAMP_TO_EDGE CLAMP_TO_EDGE} wrap mode; results are undefined
+ * for all other wrap modes. The implementation supports only a limited set of granularity values and does not support separate coverage information for
+ * each texel in the original texture.
+ *
+ * Requires {@link GL45 OpenGL 4.5}.
+ */
+ public final boolean GL_NV_shader_texture_footprint;
+ /** When true, {@link NVShaderThreadGroup} is supported. */
+ public final boolean GL_NV_shader_thread_group;
+ /**
+ * When true, the NV_shader_thread_shuffle extension is supported.
+ *
+ * Implementations of the OpenGL Shading Language may, but are not required, to run multiple shader threads for a single stage as a SIMD thread group,
+ * where individual execution threads are assigned to thread groups in an undefined, implementation-dependent order. This extension provides a set of
+ * new features to the OpenGL Shading Language to share data between multiple threads within a thread group.
+ *
+ * Requires {@link GL43 OpenGL 4.3} and GLSL 4.3.
+ */
+ public final boolean GL_NV_shader_thread_shuffle;
+ /** When true, {@link NVShadingRateImage} is supported. */
+ public final boolean GL_NV_shading_rate_image;
+ /**
+ * When true, the NV_stereo_view_rendering extension is supported.
+ *
+ * Virtual reality (VR) applications often render a single logical scene from multiple views corresponding to a pair of eyes. The views (eyes) are
+ * separated by a fixed offset in the X direction.
+ *
+ * Traditionally, multiple views are rendered via multiple rendering passes. This is expensive for the GPU because the objects in the scene must be
+ * transformed, rasterized, shaded, and fragment processed redundantly. This is expensive for the CPU because the scene graph needs to be visited multiple
+ * times and driver validation happens for each view. Rendering N passes tends to take N times longer than a single pass.
+ *
+ * This extension provides a mechanism to render binocular (stereo) views from a single stream of OpenGL rendering commands. Vertex, tessellation, and
+ * geometry (VTG) shaders can output two positions for each vertex corresponding to the two eye views. A built-in "gl_SecondaryPositionNV" is added to
+ * specify the second position. The positions from each view may be sent to different viewports and/or layers. A built-in "gl_SecondaryViewportMaskNV[]"
+ * is also added to specify the viewport mask for the second view. A new layout-qualifier "secondary_view_offset" is added for built-in output "gl_Layer"
+ * which allows for the geometry from each view to be sent to different layers for rendering.
+ *
+ * Requires {@link #GL_NV_viewport_array2 NV_viewport_array2}.
+ */
+ public final boolean GL_NV_stereo_view_rendering;
+ /** When true, {@link NVTexgenReflection} is supported. */
+ public final boolean GL_NV_texgen_reflection;
+ /** When true, {@link NVTextureBarrier} is supported. */
+ public final boolean GL_NV_texture_barrier;
+ /**
+ * When true, the NV_texture_compression_vtc extension is supported.
+ *
+ * This extension adds support for the VTC 3D texture compression formats, which are analogous to the S3TC texture compression formats, with the addition
+ * of some retiling in the Z direction. VTC has the same compression ratio as S3TC and uses 4x4x1, 4x4x2, (4x4x3 when non-power-of-two textures are
+ * supported), or 4x4x4 blocks.
+ */
+ public final boolean GL_NV_texture_compression_vtc;
+ /** When true, {@link NVTextureMultisample} is supported. */
+ public final boolean GL_NV_texture_multisample;
+ /**
+ * When true, the NV_texture_rectangle_compressed extension is supported.
+ *
+ * This extension allows applications to use compressed texture formats with the {@link GL31#GL_TEXTURE_RECTANGLE TEXTURE_RECTANGLE} texture target, removing an old limitation that
+ * prohibited such usage globally for rectangle textures.
+ */
+ public final boolean GL_NV_texture_rectangle_compressed;
+ /** When true, {@link NVTextureShader} is supported. */
+ public final boolean GL_NV_texture_shader;
+ /** When true, {@link NVTextureShader2} is supported. */
+ public final boolean GL_NV_texture_shader2;
+ /** When true, {@link NVTextureShader3} is supported. */
+ public final boolean GL_NV_texture_shader3;
+ /** When true, {@link NVTimelineSemaphore} is supported. */
+ public final boolean GL_NV_timeline_semaphore;
+ /** When true, {@link NVTransformFeedback} is supported. */
+ public final boolean GL_NV_transform_feedback;
+ /** When true, {@link NVTransformFeedback2} is supported. */
+ public final boolean GL_NV_transform_feedback2;
+ /** When true, {@link NVUniformBufferUnifiedMemory} is supported. */
+ public final boolean GL_NV_uniform_buffer_unified_memory;
+ /** When true, {@link NVVertexArrayRange} is supported. */
+ public final boolean GL_NV_vertex_array_range;
+ /** When true, {@link NVVertexArrayRange2} is supported. */
+ public final boolean GL_NV_vertex_array_range2;
+ /** When true, {@link NVVertexAttribInteger64bit} is supported. */
+ public final boolean GL_NV_vertex_attrib_integer_64bit;
+ /** When true, {@link NVVertexBufferUnifiedMemory} is supported. */
+ public final boolean GL_NV_vertex_buffer_unified_memory;
+ /**
+ * When true, the NV_viewport_array2 extension is supported.
+ *
+ * This extension provides new support allowing a single primitive to be broadcast to multiple viewports and/or multiple layers. A shader output
+ * gl_ViewportMask[] is provided, allowing a single primitive to be output to multiple viewports simultaneously. Also, a new shader option is provided to
+ * control whether the effective viewport index is added into gl_Layer. These capabilities allow a single primitive to be output to multiple layers
+ * simultaneously.
+ *
+ * The gl_ViewportMask[] output is available in vertex, tessellation control, tessellation evaluation, and geometry shaders. gl_ViewportIndex and gl_Layer
+ * are also made available in all these shader stages. The actual viewport index or mask and render target layer values are taken from the last active
+ * shader stage from this set of stages.
+ *
+ * This extension is a superset of the GL_AMD_vertex_shader_layer and GL_AMD_vertex_shader_viewport_index extensions, and thus those extension strings are
+ * expected to be exported if GL_NV_viewport_array2 is supported.
+ */
+ public final boolean GL_NV_viewport_array2;
+ /** When true, {@link NVViewportSwizzle} is supported. */
+ public final boolean GL_NV_viewport_swizzle;
+ /**
+ * When true, the NVX_blend_equation_advanced_multi_draw_buffers extension is supported.
+ *
+ * This extension adds support for using advanced blend equations introduced with {@link NVBlendEquationAdvanced NV_blend_equation_advanced} (and standardized by
+ * {@link KHRBlendEquationAdvanced KHR_blend_equation_advanced}) in conjunction with multiple draw buffers. The NV_blend_equation_advanced extension supports advanced blending
+ * equations only when rending to a single color buffer using fragment color zero and throws and {@link GL11#GL_INVALID_OPERATION INVALID_OPERATION} error when multiple draw buffers are
+ * used. This extension removes this restriction.
+ *
+ * Requires either {@link NVBlendEquationAdvanced NV_blend_equation_advanced} or {@link KHRBlendEquationAdvanced KHR_blend_equation_advanced}.
+ */
+ public final boolean GL_NVX_blend_equation_advanced_multi_draw_buffers;
+ /** When true, {@link NVXConditionalRender} is supported. */
+ public final boolean GL_NVX_conditional_render;
+ /** When true, {@link NVXGPUMemoryInfo} is supported. */
+ public final boolean GL_NVX_gpu_memory_info;
+ /** When true, {@link NVXGpuMulticast2} is supported. */
+ public final boolean GL_NVX_gpu_multicast2;
+ /** When true, {@link NVXProgressFence} is supported. */
+ public final boolean GL_NVX_progress_fence;
+ /** When true, {@link OVRMultiview} is supported. */
+ public final boolean GL_OVR_multiview;
+ /**
+ * When true, the OVR_multiview2 extension is supported.
+ *
+ * This extension relaxes the restriction in OVR_multiview that only {@code gl_Position} can depend on {@code ViewID} in the vertex shader. With this
+ * change, view-dependent outputs like reflection vectors and similar are allowed.
+ *
+ * Requires {@link GL30 OpenGL 3.0} and {@link OVRMultiview OVR_multiview}.
+ */
+ public final boolean GL_OVR_multiview2;
+ /** When true, {@link S3S3TC} is supported. */
+ public final boolean GL_S3_s3tc;
+
+ /** When true, deprecated functions are not available. */
+ public final boolean forwardCompatible;
+
+ /** Off-heap array of the above function addresses. */
+ final PointerBuffer addresses;
+
+ GLCapabilities(FunctionProvider provider, Set ext, boolean fc, IntFunction bufferFactory) {
+ forwardCompatible = fc;
+
+ PointerBuffer caps = bufferFactory.apply(ADDRESS_BUFFER_SIZE);
+
+ OpenGL11 = check_GL11(provider, caps, ext, fc);
+ OpenGL12 = check_GL12(provider, caps, ext);
+ OpenGL13 = check_GL13(provider, caps, ext, fc);
+ OpenGL14 = check_GL14(provider, caps, ext, fc);
+ OpenGL15 = check_GL15(provider, caps, ext);
+ OpenGL20 = check_GL20(provider, caps, ext);
+ OpenGL21 = check_GL21(provider, caps, ext);
+ OpenGL30 = check_GL30(provider, caps, ext);
+ OpenGL31 = check_GL31(provider, caps, ext);
+ OpenGL32 = check_GL32(provider, caps, ext);
+ OpenGL33 = check_GL33(provider, caps, ext, fc);
+ OpenGL40 = check_GL40(provider, caps, ext);
+ OpenGL41 = check_GL41(provider, caps, ext);
+ OpenGL42 = check_GL42(provider, caps, ext);
+ OpenGL43 = check_GL43(provider, caps, ext);
+ OpenGL44 = check_GL44(provider, caps, ext);
+ OpenGL45 = check_GL45(provider, caps, ext);
+ OpenGL46 = check_GL46(provider, caps, ext);
+ GL_3DFX_texture_compression_FXT1 = ext.contains("GL_3DFX_texture_compression_FXT1");
+ GL_AMD_blend_minmax_factor = ext.contains("GL_AMD_blend_minmax_factor");
+ GL_AMD_conservative_depth = ext.contains("GL_AMD_conservative_depth");
+ GL_AMD_debug_output = check_AMD_debug_output(provider, caps, ext);
+ GL_AMD_depth_clamp_separate = ext.contains("GL_AMD_depth_clamp_separate");
+ GL_AMD_draw_buffers_blend = check_AMD_draw_buffers_blend(provider, caps, ext);
+ GL_AMD_framebuffer_multisample_advanced = check_AMD_framebuffer_multisample_advanced(provider, caps, ext);
+ GL_AMD_gcn_shader = ext.contains("GL_AMD_gcn_shader");
+ GL_AMD_gpu_shader_half_float = ext.contains("GL_AMD_gpu_shader_half_float");
+ GL_AMD_gpu_shader_half_float_fetch = ext.contains("GL_AMD_gpu_shader_half_float_fetch");
+ GL_AMD_gpu_shader_int16 = ext.contains("GL_AMD_gpu_shader_int16");
+ GL_AMD_gpu_shader_int64 = check_AMD_gpu_shader_int64(provider, caps, ext);
+ GL_AMD_interleaved_elements = check_AMD_interleaved_elements(provider, caps, ext);
+ GL_AMD_occlusion_query_event = check_AMD_occlusion_query_event(provider, caps, ext);
+ GL_AMD_performance_monitor = check_AMD_performance_monitor(provider, caps, ext);
+ GL_AMD_pinned_memory = ext.contains("GL_AMD_pinned_memory");
+ GL_AMD_query_buffer_object = ext.contains("GL_AMD_query_buffer_object");
+ GL_AMD_sample_positions = check_AMD_sample_positions(provider, caps, ext);
+ GL_AMD_seamless_cubemap_per_texture = ext.contains("GL_AMD_seamless_cubemap_per_texture");
+ GL_AMD_shader_atomic_counter_ops = ext.contains("GL_AMD_shader_atomic_counter_ops");
+ GL_AMD_shader_ballot = ext.contains("GL_AMD_shader_ballot");
+ GL_AMD_shader_explicit_vertex_parameter = ext.contains("GL_AMD_shader_explicit_vertex_parameter");
+ GL_AMD_shader_image_load_store_lod = ext.contains("GL_AMD_shader_image_load_store_lod");
+ GL_AMD_shader_stencil_export = ext.contains("GL_AMD_shader_stencil_export");
+ GL_AMD_shader_trinary_minmax = ext.contains("GL_AMD_shader_trinary_minmax");
+ GL_AMD_sparse_texture = check_AMD_sparse_texture(provider, caps, ext);
+ GL_AMD_stencil_operation_extended = check_AMD_stencil_operation_extended(provider, caps, ext);
+ GL_AMD_texture_gather_bias_lod = ext.contains("GL_AMD_texture_gather_bias_lod");
+ GL_AMD_texture_texture4 = ext.contains("GL_AMD_texture_texture4");
+ GL_AMD_transform_feedback3_lines_triangles = ext.contains("GL_AMD_transform_feedback3_lines_triangles");
+ GL_AMD_transform_feedback4 = ext.contains("GL_AMD_transform_feedback4");
+ GL_AMD_vertex_shader_layer = ext.contains("GL_AMD_vertex_shader_layer");
+ GL_AMD_vertex_shader_tessellator = check_AMD_vertex_shader_tessellator(provider, caps, ext);
+ GL_AMD_vertex_shader_viewport_index = ext.contains("GL_AMD_vertex_shader_viewport_index");
+ GL_ARB_arrays_of_arrays = ext.contains("GL_ARB_arrays_of_arrays");
+ GL_ARB_base_instance = check_ARB_base_instance(provider, caps, ext);
+ GL_ARB_bindless_texture = check_ARB_bindless_texture(provider, caps, ext);
+ GL_ARB_blend_func_extended = check_ARB_blend_func_extended(provider, caps, ext);
+ GL_ARB_buffer_storage = check_ARB_buffer_storage(provider, caps, ext);
+ GL_ARB_cl_event = check_ARB_cl_event(provider, caps, ext);
+ GL_ARB_clear_buffer_object = check_ARB_clear_buffer_object(provider, caps, ext);
+ GL_ARB_clear_texture = check_ARB_clear_texture(provider, caps, ext);
+ GL_ARB_clip_control = check_ARB_clip_control(provider, caps, ext);
+ GL_ARB_color_buffer_float = check_ARB_color_buffer_float(provider, caps, ext);
+ GL_ARB_compatibility = ext.contains("GL_ARB_compatibility");
+ GL_ARB_compressed_texture_pixel_storage = ext.contains("GL_ARB_compressed_texture_pixel_storage");
+ GL_ARB_compute_shader = check_ARB_compute_shader(provider, caps, ext);
+ GL_ARB_compute_variable_group_size = check_ARB_compute_variable_group_size(provider, caps, ext);
+ GL_ARB_conditional_render_inverted = ext.contains("GL_ARB_conditional_render_inverted");
+ GL_ARB_conservative_depth = ext.contains("GL_ARB_conservative_depth");
+ GL_ARB_copy_buffer = check_ARB_copy_buffer(provider, caps, ext);
+ GL_ARB_copy_image = check_ARB_copy_image(provider, caps, ext);
+ GL_ARB_cull_distance = ext.contains("GL_ARB_cull_distance");
+ GL_ARB_debug_output = check_ARB_debug_output(provider, caps, ext);
+ GL_ARB_depth_buffer_float = ext.contains("GL_ARB_depth_buffer_float");
+ GL_ARB_depth_clamp = ext.contains("GL_ARB_depth_clamp");
+ GL_ARB_depth_texture = ext.contains("GL_ARB_depth_texture");
+ GL_ARB_derivative_control = ext.contains("GL_ARB_derivative_control");
+ GL_ARB_direct_state_access = check_ARB_direct_state_access(provider, caps, ext);
+ GL_ARB_draw_buffers = check_ARB_draw_buffers(provider, caps, ext);
+ GL_ARB_draw_buffers_blend = check_ARB_draw_buffers_blend(provider, caps, ext);
+ GL_ARB_draw_elements_base_vertex = check_ARB_draw_elements_base_vertex(provider, caps, ext);
+ GL_ARB_draw_indirect = check_ARB_draw_indirect(provider, caps, ext);
+ GL_ARB_draw_instanced = check_ARB_draw_instanced(provider, caps, ext);
+ GL_ARB_enhanced_layouts = ext.contains("GL_ARB_enhanced_layouts");
+ GL_ARB_ES2_compatibility = check_ARB_ES2_compatibility(provider, caps, ext);
+ GL_ARB_ES3_1_compatibility = check_ARB_ES3_1_compatibility(provider, caps, ext);
+ GL_ARB_ES3_2_compatibility = check_ARB_ES3_2_compatibility(provider, caps, ext);
+ GL_ARB_ES3_compatibility = ext.contains("GL_ARB_ES3_compatibility");
+ GL_ARB_explicit_attrib_location = ext.contains("GL_ARB_explicit_attrib_location");
+ GL_ARB_explicit_uniform_location = ext.contains("GL_ARB_explicit_uniform_location");
+ GL_ARB_fragment_coord_conventions = ext.contains("GL_ARB_fragment_coord_conventions");
+ GL_ARB_fragment_layer_viewport = ext.contains("GL_ARB_fragment_layer_viewport");
+ GL_ARB_fragment_program = ext.contains("GL_ARB_fragment_program");
+ GL_ARB_fragment_program_shadow = ext.contains("GL_ARB_fragment_program_shadow");
+ GL_ARB_fragment_shader = ext.contains("GL_ARB_fragment_shader");
+ GL_ARB_fragment_shader_interlock = ext.contains("GL_ARB_fragment_shader_interlock");
+ GL_ARB_framebuffer_no_attachments = check_ARB_framebuffer_no_attachments(provider, caps, ext);
+ GL_ARB_framebuffer_object = check_ARB_framebuffer_object(provider, caps, ext);
+ GL_ARB_framebuffer_sRGB = ext.contains("GL_ARB_framebuffer_sRGB");
+ GL_ARB_geometry_shader4 = check_ARB_geometry_shader4(provider, caps, ext);
+ GL_ARB_get_program_binary = check_ARB_get_program_binary(provider, caps, ext);
+ GL_ARB_get_texture_sub_image = check_ARB_get_texture_sub_image(provider, caps, ext);
+ GL_ARB_gl_spirv = check_ARB_gl_spirv(provider, caps, ext);
+ GL_ARB_gpu_shader5 = ext.contains("GL_ARB_gpu_shader5");
+ GL_ARB_gpu_shader_fp64 = check_ARB_gpu_shader_fp64(provider, caps, ext);
+ GL_ARB_gpu_shader_int64 = check_ARB_gpu_shader_int64(provider, caps, ext);
+ GL_ARB_half_float_pixel = ext.contains("GL_ARB_half_float_pixel");
+ GL_ARB_half_float_vertex = ext.contains("GL_ARB_half_float_vertex");
+ GL_ARB_imaging = check_ARB_imaging(provider, caps, ext, fc);
+ GL_ARB_indirect_parameters = check_ARB_indirect_parameters(provider, caps, ext);
+ GL_ARB_instanced_arrays = check_ARB_instanced_arrays(provider, caps, ext);
+ GL_ARB_internalformat_query = check_ARB_internalformat_query(provider, caps, ext);
+ GL_ARB_internalformat_query2 = check_ARB_internalformat_query2(provider, caps, ext);
+ GL_ARB_invalidate_subdata = check_ARB_invalidate_subdata(provider, caps, ext);
+ GL_ARB_map_buffer_alignment = ext.contains("GL_ARB_map_buffer_alignment");
+ GL_ARB_map_buffer_range = check_ARB_map_buffer_range(provider, caps, ext);
+ GL_ARB_matrix_palette = check_ARB_matrix_palette(provider, caps, ext);
+ GL_ARB_multi_bind = check_ARB_multi_bind(provider, caps, ext);
+ GL_ARB_multi_draw_indirect = check_ARB_multi_draw_indirect(provider, caps, ext);
+ GL_ARB_multisample = check_ARB_multisample(provider, caps, ext);
+ GL_ARB_multitexture = check_ARB_multitexture(provider, caps, ext);
+ GL_ARB_occlusion_query = check_ARB_occlusion_query(provider, caps, ext);
+ GL_ARB_occlusion_query2 = ext.contains("GL_ARB_occlusion_query2");
+ GL_ARB_parallel_shader_compile = check_ARB_parallel_shader_compile(provider, caps, ext);
+ GL_ARB_pipeline_statistics_query = ext.contains("GL_ARB_pipeline_statistics_query");
+ GL_ARB_pixel_buffer_object = ext.contains("GL_ARB_pixel_buffer_object");
+ GL_ARB_point_parameters = check_ARB_point_parameters(provider, caps, ext);
+ GL_ARB_point_sprite = ext.contains("GL_ARB_point_sprite");
+ GL_ARB_polygon_offset_clamp = check_ARB_polygon_offset_clamp(provider, caps, ext);
+ GL_ARB_post_depth_coverage = ext.contains("GL_ARB_post_depth_coverage");
+ GL_ARB_program_interface_query = check_ARB_program_interface_query(provider, caps, ext);
+ GL_ARB_provoking_vertex = check_ARB_provoking_vertex(provider, caps, ext);
+ GL_ARB_query_buffer_object = ext.contains("GL_ARB_query_buffer_object");
+ GL_ARB_robust_buffer_access_behavior = ext.contains("GL_ARB_robust_buffer_access_behavior");
+ GL_ARB_robustness = check_ARB_robustness(provider, caps, ext);
+ GL_ARB_robustness_application_isolation = ext.contains("GL_ARB_robustness_application_isolation");
+ GL_ARB_robustness_share_group_isolation = ext.contains("GL_ARB_robustness_share_group_isolation");
+ GL_ARB_sample_locations = check_ARB_sample_locations(provider, caps, ext);
+ GL_ARB_sample_shading = check_ARB_sample_shading(provider, caps, ext);
+ GL_ARB_sampler_objects = check_ARB_sampler_objects(provider, caps, ext);
+ GL_ARB_seamless_cube_map = ext.contains("GL_ARB_seamless_cube_map");
+ GL_ARB_seamless_cubemap_per_texture = ext.contains("GL_ARB_seamless_cubemap_per_texture");
+ GL_ARB_separate_shader_objects = check_ARB_separate_shader_objects(provider, caps, ext);
+ GL_ARB_shader_atomic_counter_ops = ext.contains("GL_ARB_shader_atomic_counter_ops");
+ GL_ARB_shader_atomic_counters = check_ARB_shader_atomic_counters(provider, caps, ext);
+ GL_ARB_shader_ballot = ext.contains("GL_ARB_shader_ballot");
+ GL_ARB_shader_bit_encoding = ext.contains("GL_ARB_shader_bit_encoding");
+ GL_ARB_shader_clock = ext.contains("GL_ARB_shader_clock");
+ GL_ARB_shader_draw_parameters = ext.contains("GL_ARB_shader_draw_parameters");
+ GL_ARB_shader_group_vote = ext.contains("GL_ARB_shader_group_vote");
+ GL_ARB_shader_image_load_store = check_ARB_shader_image_load_store(provider, caps, ext);
+ GL_ARB_shader_image_size = ext.contains("GL_ARB_shader_image_size");
+ GL_ARB_shader_objects = check_ARB_shader_objects(provider, caps, ext);
+ GL_ARB_shader_precision = ext.contains("GL_ARB_shader_precision");
+ GL_ARB_shader_stencil_export = ext.contains("GL_ARB_shader_stencil_export");
+ GL_ARB_shader_storage_buffer_object = check_ARB_shader_storage_buffer_object(provider, caps, ext);
+ GL_ARB_shader_subroutine = check_ARB_shader_subroutine(provider, caps, ext);
+ GL_ARB_shader_texture_image_samples = ext.contains("GL_ARB_shader_texture_image_samples");
+ GL_ARB_shader_texture_lod = ext.contains("GL_ARB_shader_texture_lod");
+ GL_ARB_shader_viewport_layer_array = ext.contains("GL_ARB_shader_viewport_layer_array");
+ GL_ARB_shading_language_100 = ext.contains("GL_ARB_shading_language_100");
+ GL_ARB_shading_language_420pack = ext.contains("GL_ARB_shading_language_420pack");
+ GL_ARB_shading_language_include = check_ARB_shading_language_include(provider, caps, ext);
+ GL_ARB_shading_language_packing = ext.contains("GL_ARB_shading_language_packing");
+ GL_ARB_shadow = ext.contains("GL_ARB_shadow");
+ GL_ARB_shadow_ambient = ext.contains("GL_ARB_shadow_ambient");
+ GL_ARB_sparse_buffer = check_ARB_sparse_buffer(provider, caps, ext);
+ GL_ARB_sparse_texture = check_ARB_sparse_texture(provider, caps, ext);
+ GL_ARB_sparse_texture2 = ext.contains("GL_ARB_sparse_texture2");
+ GL_ARB_sparse_texture_clamp = ext.contains("GL_ARB_sparse_texture_clamp");
+ GL_ARB_spirv_extensions = ext.contains("GL_ARB_spirv_extensions");
+ GL_ARB_stencil_texturing = ext.contains("GL_ARB_stencil_texturing");
+ GL_ARB_sync = check_ARB_sync(provider, caps, ext);
+ GL_ARB_tessellation_shader = check_ARB_tessellation_shader(provider, caps, ext);
+ GL_ARB_texture_barrier = check_ARB_texture_barrier(provider, caps, ext);
+ GL_ARB_texture_border_clamp = ext.contains("GL_ARB_texture_border_clamp");
+ GL_ARB_texture_buffer_object = check_ARB_texture_buffer_object(provider, caps, ext);
+ GL_ARB_texture_buffer_object_rgb32 = ext.contains("GL_ARB_texture_buffer_object_rgb32");
+ GL_ARB_texture_buffer_range = check_ARB_texture_buffer_range(provider, caps, ext);
+ GL_ARB_texture_compression = check_ARB_texture_compression(provider, caps, ext);
+ GL_ARB_texture_compression_bptc = ext.contains("GL_ARB_texture_compression_bptc");
+ GL_ARB_texture_compression_rgtc = ext.contains("GL_ARB_texture_compression_rgtc");
+ GL_ARB_texture_cube_map = ext.contains("GL_ARB_texture_cube_map");
+ GL_ARB_texture_cube_map_array = ext.contains("GL_ARB_texture_cube_map_array");
+ GL_ARB_texture_env_add = ext.contains("GL_ARB_texture_env_add");
+ GL_ARB_texture_env_combine = ext.contains("GL_ARB_texture_env_combine");
+ GL_ARB_texture_env_crossbar = ext.contains("GL_ARB_texture_env_crossbar");
+ GL_ARB_texture_env_dot3 = ext.contains("GL_ARB_texture_env_dot3");
+ GL_ARB_texture_filter_anisotropic = ext.contains("GL_ARB_texture_filter_anisotropic");
+ GL_ARB_texture_filter_minmax = ext.contains("GL_ARB_texture_filter_minmax");
+ GL_ARB_texture_float = ext.contains("GL_ARB_texture_float");
+ GL_ARB_texture_gather = ext.contains("GL_ARB_texture_gather");
+ GL_ARB_texture_mirror_clamp_to_edge = ext.contains("GL_ARB_texture_mirror_clamp_to_edge");
+ GL_ARB_texture_mirrored_repeat = ext.contains("GL_ARB_texture_mirrored_repeat");
+ GL_ARB_texture_multisample = check_ARB_texture_multisample(provider, caps, ext);
+ GL_ARB_texture_non_power_of_two = ext.contains("GL_ARB_texture_non_power_of_two");
+ GL_ARB_texture_query_levels = ext.contains("GL_ARB_texture_query_levels");
+ GL_ARB_texture_query_lod = ext.contains("GL_ARB_texture_query_lod");
+ GL_ARB_texture_rectangle = ext.contains("GL_ARB_texture_rectangle");
+ GL_ARB_texture_rg = ext.contains("GL_ARB_texture_rg");
+ GL_ARB_texture_rgb10_a2ui = ext.contains("GL_ARB_texture_rgb10_a2ui");
+ GL_ARB_texture_stencil8 = ext.contains("GL_ARB_texture_stencil8");
+ GL_ARB_texture_storage = check_ARB_texture_storage(provider, caps, ext);
+ GL_ARB_texture_storage_multisample = check_ARB_texture_storage_multisample(provider, caps, ext);
+ GL_ARB_texture_swizzle = ext.contains("GL_ARB_texture_swizzle");
+ GL_ARB_texture_view = check_ARB_texture_view(provider, caps, ext);
+ GL_ARB_timer_query = check_ARB_timer_query(provider, caps, ext);
+ GL_ARB_transform_feedback2 = check_ARB_transform_feedback2(provider, caps, ext);
+ GL_ARB_transform_feedback3 = check_ARB_transform_feedback3(provider, caps, ext);
+ GL_ARB_transform_feedback_instanced = check_ARB_transform_feedback_instanced(provider, caps, ext);
+ GL_ARB_transform_feedback_overflow_query = ext.contains("GL_ARB_transform_feedback_overflow_query");
+ GL_ARB_transpose_matrix = check_ARB_transpose_matrix(provider, caps, ext);
+ GL_ARB_uniform_buffer_object = check_ARB_uniform_buffer_object(provider, caps, ext);
+ GL_ARB_vertex_array_bgra = ext.contains("GL_ARB_vertex_array_bgra");
+ GL_ARB_vertex_array_object = check_ARB_vertex_array_object(provider, caps, ext);
+ GL_ARB_vertex_attrib_64bit = check_ARB_vertex_attrib_64bit(provider, caps, ext);
+ GL_ARB_vertex_attrib_binding = check_ARB_vertex_attrib_binding(provider, caps, ext);
+ GL_ARB_vertex_blend = check_ARB_vertex_blend(provider, caps, ext);
+ GL_ARB_vertex_buffer_object = check_ARB_vertex_buffer_object(provider, caps, ext);
+ GL_ARB_vertex_program = check_ARB_vertex_program(provider, caps, ext);
+ GL_ARB_vertex_shader = check_ARB_vertex_shader(provider, caps, ext);
+ GL_ARB_vertex_type_10f_11f_11f_rev = ext.contains("GL_ARB_vertex_type_10f_11f_11f_rev");
+ GL_ARB_vertex_type_2_10_10_10_rev = check_ARB_vertex_type_2_10_10_10_rev(provider, caps, ext, fc);
+ GL_ARB_viewport_array = check_ARB_viewport_array(provider, caps, ext);
+ GL_ARB_window_pos = check_ARB_window_pos(provider, caps, ext);
+ GL_ATI_meminfo = ext.contains("GL_ATI_meminfo");
+ GL_ATI_shader_texture_lod = ext.contains("GL_ATI_shader_texture_lod");
+ GL_ATI_texture_compression_3dc = ext.contains("GL_ATI_texture_compression_3dc");
+ GL_EXT_422_pixels = ext.contains("GL_EXT_422_pixels");
+ GL_EXT_abgr = ext.contains("GL_EXT_abgr");
+ GL_EXT_bgra = ext.contains("GL_EXT_bgra");
+ GL_EXT_bindable_uniform = check_EXT_bindable_uniform(provider, caps, ext);
+ GL_EXT_blend_color = check_EXT_blend_color(provider, caps, ext);
+ GL_EXT_blend_equation_separate = check_EXT_blend_equation_separate(provider, caps, ext);
+ GL_EXT_blend_func_separate = check_EXT_blend_func_separate(provider, caps, ext);
+ GL_EXT_blend_minmax = check_EXT_blend_minmax(provider, caps, ext);
+ GL_EXT_blend_subtract = ext.contains("GL_EXT_blend_subtract");
+ GL_EXT_clip_volume_hint = ext.contains("GL_EXT_clip_volume_hint");
+ GL_EXT_compiled_vertex_array = check_EXT_compiled_vertex_array(provider, caps, ext);
+ GL_EXT_debug_label = check_EXT_debug_label(provider, caps, ext);
+ GL_EXT_debug_marker = check_EXT_debug_marker(provider, caps, ext);
+ GL_EXT_depth_bounds_test = check_EXT_depth_bounds_test(provider, caps, ext);
+ GL_EXT_direct_state_access = check_EXT_direct_state_access(provider, caps, ext);
+ GL_EXT_draw_buffers2 = check_EXT_draw_buffers2(provider, caps, ext);
+ GL_EXT_draw_instanced = check_EXT_draw_instanced(provider, caps, ext);
+ GL_EXT_EGL_image_storage = check_EXT_EGL_image_storage(provider, caps, ext);
+ GL_EXT_EGL_sync = ext.contains("GL_EXT_EGL_sync");
+ GL_EXT_external_buffer = check_EXT_external_buffer(provider, caps, ext);
+ GL_EXT_framebuffer_blit = check_EXT_framebuffer_blit(provider, caps, ext);
+ GL_EXT_framebuffer_multisample = check_EXT_framebuffer_multisample(provider, caps, ext);
+ GL_EXT_framebuffer_multisample_blit_scaled = ext.contains("GL_EXT_framebuffer_multisample_blit_scaled");
+ GL_EXT_framebuffer_object = check_EXT_framebuffer_object(provider, caps, ext);
+ GL_EXT_framebuffer_sRGB = ext.contains("GL_EXT_framebuffer_sRGB");
+ GL_EXT_geometry_shader4 = check_EXT_geometry_shader4(provider, caps, ext);
+ GL_EXT_gpu_program_parameters = check_EXT_gpu_program_parameters(provider, caps, ext);
+ GL_EXT_gpu_shader4 = check_EXT_gpu_shader4(provider, caps, ext);
+ GL_EXT_memory_object = check_EXT_memory_object(provider, caps, ext);
+ GL_EXT_memory_object_fd = check_EXT_memory_object_fd(provider, caps, ext);
+ GL_EXT_memory_object_win32 = check_EXT_memory_object_win32(provider, caps, ext);
+ GL_EXT_multiview_tessellation_geometry_shader = ext.contains("GL_EXT_multiview_tessellation_geometry_shader");
+ GL_EXT_multiview_texture_multisample = ext.contains("GL_EXT_multiview_texture_multisample");
+ GL_EXT_multiview_timer_query = ext.contains("GL_EXT_multiview_timer_query");
+ GL_EXT_packed_depth_stencil = ext.contains("GL_EXT_packed_depth_stencil");
+ GL_EXT_packed_float = ext.contains("GL_EXT_packed_float");
+ GL_EXT_pixel_buffer_object = ext.contains("GL_EXT_pixel_buffer_object");
+ GL_EXT_point_parameters = check_EXT_point_parameters(provider, caps, ext);
+ GL_EXT_polygon_offset_clamp = check_EXT_polygon_offset_clamp(provider, caps, ext);
+ GL_EXT_post_depth_coverage = ext.contains("GL_EXT_post_depth_coverage");
+ GL_EXT_provoking_vertex = check_EXT_provoking_vertex(provider, caps, ext);
+ GL_EXT_raster_multisample = check_EXT_raster_multisample(provider, caps, ext);
+ GL_EXT_secondary_color = check_EXT_secondary_color(provider, caps, ext);
+ GL_EXT_semaphore = check_EXT_semaphore(provider, caps, ext);
+ GL_EXT_semaphore_fd = check_EXT_semaphore_fd(provider, caps, ext);
+ GL_EXT_semaphore_win32 = check_EXT_semaphore_win32(provider, caps, ext);
+ GL_EXT_separate_shader_objects = check_EXT_separate_shader_objects(provider, caps, ext);
+ GL_EXT_shader_framebuffer_fetch = ext.contains("GL_EXT_shader_framebuffer_fetch");
+ GL_EXT_shader_framebuffer_fetch_non_coherent = check_EXT_shader_framebuffer_fetch_non_coherent(provider, caps, ext);
+ GL_EXT_shader_image_load_formatted = ext.contains("GL_EXT_shader_image_load_formatted");
+ GL_EXT_shader_image_load_store = check_EXT_shader_image_load_store(provider, caps, ext);
+ GL_EXT_shader_integer_mix = ext.contains("GL_EXT_shader_integer_mix");
+ GL_EXT_shadow_funcs = ext.contains("GL_EXT_shadow_funcs");
+ GL_EXT_shared_texture_palette = ext.contains("GL_EXT_shared_texture_palette");
+ GL_EXT_sparse_texture2 = ext.contains("GL_EXT_sparse_texture2");
+ GL_EXT_stencil_clear_tag = check_EXT_stencil_clear_tag(provider, caps, ext);
+ GL_EXT_stencil_two_side = check_EXT_stencil_two_side(provider, caps, ext);
+ GL_EXT_stencil_wrap = ext.contains("GL_EXT_stencil_wrap");
+ GL_EXT_texture_array = check_EXT_texture_array(provider, caps, ext);
+ GL_EXT_texture_buffer_object = check_EXT_texture_buffer_object(provider, caps, ext);
+ GL_EXT_texture_compression_latc = ext.contains("GL_EXT_texture_compression_latc");
+ GL_EXT_texture_compression_rgtc = ext.contains("GL_EXT_texture_compression_rgtc");
+ GL_EXT_texture_compression_s3tc = ext.contains("GL_EXT_texture_compression_s3tc");
+ GL_EXT_texture_filter_anisotropic = ext.contains("GL_EXT_texture_filter_anisotropic");
+ GL_EXT_texture_filter_minmax = ext.contains("GL_EXT_texture_filter_minmax");
+ GL_EXT_texture_integer = check_EXT_texture_integer(provider, caps, ext);
+ GL_EXT_texture_mirror_clamp = ext.contains("GL_EXT_texture_mirror_clamp");
+ GL_EXT_texture_shadow_lod = ext.contains("GL_EXT_texture_shadow_lod");
+ GL_EXT_texture_shared_exponent = ext.contains("GL_EXT_texture_shared_exponent");
+ GL_EXT_texture_snorm = ext.contains("GL_EXT_texture_snorm");
+ GL_EXT_texture_sRGB = ext.contains("GL_EXT_texture_sRGB");
+ GL_EXT_texture_sRGB_decode = ext.contains("GL_EXT_texture_sRGB_decode");
+ GL_EXT_texture_sRGB_R8 = ext.contains("GL_EXT_texture_sRGB_R8");
+ GL_EXT_texture_sRGB_RG8 = ext.contains("GL_EXT_texture_sRGB_RG8");
+ GL_EXT_texture_storage = check_EXT_texture_storage(provider, caps, ext);
+ GL_EXT_texture_swizzle = ext.contains("GL_EXT_texture_swizzle");
+ GL_EXT_timer_query = check_EXT_timer_query(provider, caps, ext);
+ GL_EXT_transform_feedback = check_EXT_transform_feedback(provider, caps, ext);
+ GL_EXT_vertex_array_bgra = ext.contains("GL_EXT_vertex_array_bgra");
+ GL_EXT_vertex_attrib_64bit = check_EXT_vertex_attrib_64bit(provider, caps, ext);
+ GL_EXT_win32_keyed_mutex = check_EXT_win32_keyed_mutex(provider, caps, ext);
+ GL_EXT_window_rectangles = check_EXT_window_rectangles(provider, caps, ext);
+ GL_EXT_x11_sync_object = check_EXT_x11_sync_object(provider, caps, ext);
+ GL_GREMEDY_frame_terminator = check_GREMEDY_frame_terminator(provider, caps, ext);
+ GL_GREMEDY_string_marker = check_GREMEDY_string_marker(provider, caps, ext);
+ GL_INTEL_blackhole_render = ext.contains("GL_INTEL_blackhole_render");
+ GL_INTEL_conservative_rasterization = ext.contains("GL_INTEL_conservative_rasterization");
+ GL_INTEL_fragment_shader_ordering = ext.contains("GL_INTEL_fragment_shader_ordering");
+ GL_INTEL_framebuffer_CMAA = check_INTEL_framebuffer_CMAA(provider, caps, ext);
+ GL_INTEL_map_texture = check_INTEL_map_texture(provider, caps, ext);
+ GL_INTEL_performance_query = check_INTEL_performance_query(provider, caps, ext);
+ GL_INTEL_shader_integer_functions2 = ext.contains("GL_INTEL_shader_integer_functions2");
+ GL_KHR_blend_equation_advanced = check_KHR_blend_equation_advanced(provider, caps, ext);
+ GL_KHR_blend_equation_advanced_coherent = ext.contains("GL_KHR_blend_equation_advanced_coherent");
+ GL_KHR_context_flush_control = ext.contains("GL_KHR_context_flush_control");
+ GL_KHR_debug = check_KHR_debug(provider, caps, ext);
+ GL_KHR_no_error = ext.contains("GL_KHR_no_error");
+ GL_KHR_parallel_shader_compile = check_KHR_parallel_shader_compile(provider, caps, ext);
+ GL_KHR_robust_buffer_access_behavior = ext.contains("GL_KHR_robust_buffer_access_behavior");
+ GL_KHR_robustness = check_KHR_robustness(provider, caps, ext);
+ GL_KHR_shader_subgroup = ext.contains("GL_KHR_shader_subgroup");
+ GL_KHR_texture_compression_astc_hdr = ext.contains("GL_KHR_texture_compression_astc_hdr");
+ GL_KHR_texture_compression_astc_ldr = ext.contains("GL_KHR_texture_compression_astc_ldr");
+ GL_KHR_texture_compression_astc_sliced_3d = ext.contains("GL_KHR_texture_compression_astc_sliced_3d");
+ GL_MESA_framebuffer_flip_x = ext.contains("GL_MESA_framebuffer_flip_x");
+ GL_MESA_framebuffer_flip_y = check_MESA_framebuffer_flip_y(provider, caps, ext);
+ GL_MESA_framebuffer_swap_xy = ext.contains("GL_MESA_framebuffer_swap_xy");
+ GL_MESA_tile_raster_order = ext.contains("GL_MESA_tile_raster_order");
+ GL_NV_alpha_to_coverage_dither_control = check_NV_alpha_to_coverage_dither_control(provider, caps, ext);
+ GL_NV_bindless_multi_draw_indirect = check_NV_bindless_multi_draw_indirect(provider, caps, ext);
+ GL_NV_bindless_multi_draw_indirect_count = check_NV_bindless_multi_draw_indirect_count(provider, caps, ext);
+ GL_NV_bindless_texture = check_NV_bindless_texture(provider, caps, ext);
+ GL_NV_blend_equation_advanced = check_NV_blend_equation_advanced(provider, caps, ext);
+ GL_NV_blend_equation_advanced_coherent = ext.contains("GL_NV_blend_equation_advanced_coherent");
+ GL_NV_blend_minmax_factor = ext.contains("GL_NV_blend_minmax_factor");
+ GL_NV_blend_square = ext.contains("GL_NV_blend_square");
+ GL_NV_clip_space_w_scaling = check_NV_clip_space_w_scaling(provider, caps, ext);
+ GL_NV_command_list = check_NV_command_list(provider, caps, ext);
+ GL_NV_compute_shader_derivatives = ext.contains("GL_NV_compute_shader_derivatives");
+ GL_NV_conditional_render = check_NV_conditional_render(provider, caps, ext);
+ GL_NV_conservative_raster = check_NV_conservative_raster(provider, caps, ext);
+ GL_NV_conservative_raster_dilate = check_NV_conservative_raster_dilate(provider, caps, ext);
+ GL_NV_conservative_raster_pre_snap = ext.contains("GL_NV_conservative_raster_pre_snap");
+ GL_NV_conservative_raster_pre_snap_triangles = check_NV_conservative_raster_pre_snap_triangles(provider, caps, ext);
+ GL_NV_conservative_raster_underestimation = ext.contains("GL_NV_conservative_raster_underestimation");
+ GL_NV_copy_depth_to_color = ext.contains("GL_NV_copy_depth_to_color");
+ GL_NV_copy_image = check_NV_copy_image(provider, caps, ext);
+ GL_NV_deep_texture3D = ext.contains("GL_NV_deep_texture3D");
+ GL_NV_depth_buffer_float = check_NV_depth_buffer_float(provider, caps, ext);
+ GL_NV_depth_clamp = ext.contains("GL_NV_depth_clamp");
+ GL_NV_draw_texture = check_NV_draw_texture(provider, caps, ext);
+ GL_NV_draw_vulkan_image = check_NV_draw_vulkan_image(provider, caps, ext);
+ GL_NV_ES3_1_compatibility = ext.contains("GL_NV_ES3_1_compatibility");
+ GL_NV_explicit_multisample = check_NV_explicit_multisample(provider, caps, ext);
+ GL_NV_fence = check_NV_fence(provider, caps, ext);
+ GL_NV_fill_rectangle = ext.contains("GL_NV_fill_rectangle");
+ GL_NV_float_buffer = ext.contains("GL_NV_float_buffer");
+ GL_NV_fog_distance = ext.contains("GL_NV_fog_distance");
+ GL_NV_fragment_coverage_to_color = check_NV_fragment_coverage_to_color(provider, caps, ext);
+ GL_NV_fragment_program4 = ext.contains("GL_NV_fragment_program4");
+ GL_NV_fragment_program_option = ext.contains("GL_NV_fragment_program_option");
+ GL_NV_fragment_shader_barycentric = ext.contains("GL_NV_fragment_shader_barycentric");
+ GL_NV_fragment_shader_interlock = ext.contains("GL_NV_fragment_shader_interlock");
+ GL_NV_framebuffer_mixed_samples = check_NV_framebuffer_mixed_samples(provider, caps, ext);
+ GL_NV_framebuffer_multisample_coverage = check_NV_framebuffer_multisample_coverage(provider, caps, ext);
+ GL_NV_geometry_shader4 = ext.contains("GL_NV_geometry_shader4");
+ GL_NV_geometry_shader_passthrough = ext.contains("GL_NV_geometry_shader_passthrough");
+ GL_NV_gpu_multicast = check_NV_gpu_multicast(provider, caps, ext);
+ GL_NV_gpu_shader5 = check_NV_gpu_shader5(provider, caps, ext);
+ GL_NV_half_float = check_NV_half_float(provider, caps, ext);
+ GL_NV_internalformat_sample_query = check_NV_internalformat_sample_query(provider, caps, ext);
+ GL_NV_light_max_exponent = ext.contains("GL_NV_light_max_exponent");
+ GL_NV_memory_attachment = check_NV_memory_attachment(provider, caps, ext);
+ GL_NV_memory_object_sparse = check_NV_memory_object_sparse(provider, caps, ext);
+ GL_NV_mesh_shader = check_NV_mesh_shader(provider, caps, ext);
+ GL_NV_multisample_coverage = ext.contains("GL_NV_multisample_coverage");
+ GL_NV_multisample_filter_hint = ext.contains("GL_NV_multisample_filter_hint");
+ GL_NV_packed_depth_stencil = ext.contains("GL_NV_packed_depth_stencil");
+ GL_NV_path_rendering = check_NV_path_rendering(provider, caps, ext);
+ GL_NV_path_rendering_shared_edge = ext.contains("GL_NV_path_rendering_shared_edge");
+ GL_NV_pixel_data_range = check_NV_pixel_data_range(provider, caps, ext);
+ GL_NV_point_sprite = check_NV_point_sprite(provider, caps, ext);
+ GL_NV_primitive_restart = check_NV_primitive_restart(provider, caps, ext);
+ GL_NV_primitive_shading_rate = ext.contains("GL_NV_primitive_shading_rate");
+ GL_NV_query_resource = check_NV_query_resource(provider, caps, ext);
+ GL_NV_query_resource_tag = check_NV_query_resource_tag(provider, caps, ext);
+ GL_NV_representative_fragment_test = ext.contains("GL_NV_representative_fragment_test");
+ GL_NV_robustness_video_memory_purge = ext.contains("GL_NV_robustness_video_memory_purge");
+ GL_NV_sample_locations = check_NV_sample_locations(provider, caps, ext);
+ GL_NV_sample_mask_override_coverage = ext.contains("GL_NV_sample_mask_override_coverage");
+ GL_NV_scissor_exclusive = check_NV_scissor_exclusive(provider, caps, ext);
+ GL_NV_shader_atomic_float = ext.contains("GL_NV_shader_atomic_float");
+ GL_NV_shader_atomic_float64 = ext.contains("GL_NV_shader_atomic_float64");
+ GL_NV_shader_atomic_fp16_vector = ext.contains("GL_NV_shader_atomic_fp16_vector");
+ GL_NV_shader_atomic_int64 = ext.contains("GL_NV_shader_atomic_int64");
+ GL_NV_shader_buffer_load = check_NV_shader_buffer_load(provider, caps, ext);
+ GL_NV_shader_buffer_store = ext.contains("GL_NV_shader_buffer_store");
+ GL_NV_shader_subgroup_partitioned = ext.contains("GL_NV_shader_subgroup_partitioned");
+ GL_NV_shader_texture_footprint = ext.contains("GL_NV_shader_texture_footprint");
+ GL_NV_shader_thread_group = ext.contains("GL_NV_shader_thread_group");
+ GL_NV_shader_thread_shuffle = ext.contains("GL_NV_shader_thread_shuffle");
+ GL_NV_shading_rate_image = check_NV_shading_rate_image(provider, caps, ext);
+ GL_NV_stereo_view_rendering = ext.contains("GL_NV_stereo_view_rendering");
+ GL_NV_texgen_reflection = ext.contains("GL_NV_texgen_reflection");
+ GL_NV_texture_barrier = check_NV_texture_barrier(provider, caps, ext);
+ GL_NV_texture_compression_vtc = ext.contains("GL_NV_texture_compression_vtc");
+ GL_NV_texture_multisample = check_NV_texture_multisample(provider, caps, ext);
+ GL_NV_texture_rectangle_compressed = ext.contains("GL_NV_texture_rectangle_compressed");
+ GL_NV_texture_shader = ext.contains("GL_NV_texture_shader");
+ GL_NV_texture_shader2 = ext.contains("GL_NV_texture_shader2");
+ GL_NV_texture_shader3 = ext.contains("GL_NV_texture_shader3");
+ GL_NV_timeline_semaphore = check_NV_timeline_semaphore(provider, caps, ext);
+ GL_NV_transform_feedback = check_NV_transform_feedback(provider, caps, ext);
+ GL_NV_transform_feedback2 = check_NV_transform_feedback2(provider, caps, ext);
+ GL_NV_uniform_buffer_unified_memory = ext.contains("GL_NV_uniform_buffer_unified_memory");
+ GL_NV_vertex_array_range = check_NV_vertex_array_range(provider, caps, ext);
+ GL_NV_vertex_array_range2 = ext.contains("GL_NV_vertex_array_range2");
+ GL_NV_vertex_attrib_integer_64bit = check_NV_vertex_attrib_integer_64bit(provider, caps, ext);
+ GL_NV_vertex_buffer_unified_memory = check_NV_vertex_buffer_unified_memory(provider, caps, ext);
+ GL_NV_viewport_array2 = ext.contains("GL_NV_viewport_array2");
+ GL_NV_viewport_swizzle = check_NV_viewport_swizzle(provider, caps, ext);
+ GL_NVX_blend_equation_advanced_multi_draw_buffers = ext.contains("GL_NVX_blend_equation_advanced_multi_draw_buffers");
+ GL_NVX_conditional_render = check_NVX_conditional_render(provider, caps, ext);
+ GL_NVX_gpu_memory_info = ext.contains("GL_NVX_gpu_memory_info");
+ GL_NVX_gpu_multicast2 = check_NVX_gpu_multicast2(provider, caps, ext);
+ GL_NVX_progress_fence = check_NVX_progress_fence(provider, caps, ext);
+ GL_OVR_multiview = check_OVR_multiview(provider, caps, ext);
+ GL_OVR_multiview2 = ext.contains("GL_OVR_multiview2");
+ GL_S3_s3tc = ext.contains("GL_S3_s3tc");
+
+ glEnable = caps.get(0);
+ glDisable = caps.get(1);
+ glAccum = caps.get(2);
+ glAlphaFunc = caps.get(3);
+ glAreTexturesResident = caps.get(4);
+ glArrayElement = caps.get(5);
+ glBegin = caps.get(6);
+ glBindTexture = caps.get(7);
+ glBitmap = caps.get(8);
+ glBlendFunc = caps.get(9);
+ glCallList = caps.get(10);
+ glCallLists = caps.get(11);
+ glClear = caps.get(12);
+ glClearAccum = caps.get(13);
+ glClearColor = caps.get(14);
+ glClearDepth = caps.get(15);
+ glClearIndex = caps.get(16);
+ glClearStencil = caps.get(17);
+ glClipPlane = caps.get(18);
+ glColor3b = caps.get(19);
+ glColor3s = caps.get(20);
+ glColor3i = caps.get(21);
+ glColor3f = caps.get(22);
+ glColor3d = caps.get(23);
+ glColor3ub = caps.get(24);
+ glColor3us = caps.get(25);
+ glColor3ui = caps.get(26);
+ glColor3bv = caps.get(27);
+ glColor3sv = caps.get(28);
+ glColor3iv = caps.get(29);
+ glColor3fv = caps.get(30);
+ glColor3dv = caps.get(31);
+ glColor3ubv = caps.get(32);
+ glColor3usv = caps.get(33);
+ glColor3uiv = caps.get(34);
+ glColor4b = caps.get(35);
+ glColor4s = caps.get(36);
+ glColor4i = caps.get(37);
+ glColor4f = caps.get(38);
+ glColor4d = caps.get(39);
+ glColor4ub = caps.get(40);
+ glColor4us = caps.get(41);
+ glColor4ui = caps.get(42);
+ glColor4bv = caps.get(43);
+ glColor4sv = caps.get(44);
+ glColor4iv = caps.get(45);
+ glColor4fv = caps.get(46);
+ glColor4dv = caps.get(47);
+ glColor4ubv = caps.get(48);
+ glColor4usv = caps.get(49);
+ glColor4uiv = caps.get(50);
+ glColorMask = caps.get(51);
+ glColorMaterial = caps.get(52);
+ glColorPointer = caps.get(53);
+ glCopyPixels = caps.get(54);
+ glCullFace = caps.get(55);
+ glDeleteLists = caps.get(56);
+ glDepthFunc = caps.get(57);
+ glDepthMask = caps.get(58);
+ glDepthRange = caps.get(59);
+ glDisableClientState = caps.get(60);
+ glDrawArrays = caps.get(61);
+ glDrawBuffer = caps.get(62);
+ glDrawElements = caps.get(63);
+ glDrawPixels = caps.get(64);
+ glEdgeFlag = caps.get(65);
+ glEdgeFlagv = caps.get(66);
+ glEdgeFlagPointer = caps.get(67);
+ glEnableClientState = caps.get(68);
+ glEnd = caps.get(69);
+ glEvalCoord1f = caps.get(70);
+ glEvalCoord1fv = caps.get(71);
+ glEvalCoord1d = caps.get(72);
+ glEvalCoord1dv = caps.get(73);
+ glEvalCoord2f = caps.get(74);
+ glEvalCoord2fv = caps.get(75);
+ glEvalCoord2d = caps.get(76);
+ glEvalCoord2dv = caps.get(77);
+ glEvalMesh1 = caps.get(78);
+ glEvalMesh2 = caps.get(79);
+ glEvalPoint1 = caps.get(80);
+ glEvalPoint2 = caps.get(81);
+ glFeedbackBuffer = caps.get(82);
+ glFinish = caps.get(83);
+ glFlush = caps.get(84);
+ glFogi = caps.get(85);
+ glFogiv = caps.get(86);
+ glFogf = caps.get(87);
+ glFogfv = caps.get(88);
+ glFrontFace = caps.get(89);
+ glGenLists = caps.get(90);
+ glGenTextures = caps.get(91);
+ glDeleteTextures = caps.get(92);
+ glGetClipPlane = caps.get(93);
+ glGetBooleanv = caps.get(94);
+ glGetFloatv = caps.get(95);
+ glGetIntegerv = caps.get(96);
+ glGetDoublev = caps.get(97);
+ glGetError = caps.get(98);
+ glGetLightiv = caps.get(99);
+ glGetLightfv = caps.get(100);
+ glGetMapiv = caps.get(101);
+ glGetMapfv = caps.get(102);
+ glGetMapdv = caps.get(103);
+ glGetMaterialiv = caps.get(104);
+ glGetMaterialfv = caps.get(105);
+ glGetPixelMapfv = caps.get(106);
+ glGetPixelMapusv = caps.get(107);
+ glGetPixelMapuiv = caps.get(108);
+ glGetPointerv = caps.get(109);
+ glGetPolygonStipple = caps.get(110);
+ glGetString = caps.get(111);
+ glGetTexEnviv = caps.get(112);
+ glGetTexEnvfv = caps.get(113);
+ glGetTexGeniv = caps.get(114);
+ glGetTexGenfv = caps.get(115);
+ glGetTexGendv = caps.get(116);
+ glGetTexImage = caps.get(117);
+ glGetTexLevelParameteriv = caps.get(118);
+ glGetTexLevelParameterfv = caps.get(119);
+ glGetTexParameteriv = caps.get(120);
+ glGetTexParameterfv = caps.get(121);
+ glHint = caps.get(122);
+ glIndexi = caps.get(123);
+ glIndexub = caps.get(124);
+ glIndexs = caps.get(125);
+ glIndexf = caps.get(126);
+ glIndexd = caps.get(127);
+ glIndexiv = caps.get(128);
+ glIndexubv = caps.get(129);
+ glIndexsv = caps.get(130);
+ glIndexfv = caps.get(131);
+ glIndexdv = caps.get(132);
+ glIndexMask = caps.get(133);
+ glIndexPointer = caps.get(134);
+ glInitNames = caps.get(135);
+ glInterleavedArrays = caps.get(136);
+ glIsEnabled = caps.get(137);
+ glIsList = caps.get(138);
+ glIsTexture = caps.get(139);
+ glLightModeli = caps.get(140);
+ glLightModelf = caps.get(141);
+ glLightModeliv = caps.get(142);
+ glLightModelfv = caps.get(143);
+ glLighti = caps.get(144);
+ glLightf = caps.get(145);
+ glLightiv = caps.get(146);
+ glLightfv = caps.get(147);
+ glLineStipple = caps.get(148);
+ glLineWidth = caps.get(149);
+ glListBase = caps.get(150);
+ glLoadMatrixf = caps.get(151);
+ glLoadMatrixd = caps.get(152);
+ glLoadIdentity = caps.get(153);
+ glLoadName = caps.get(154);
+ glLogicOp = caps.get(155);
+ glMap1f = caps.get(156);
+ glMap1d = caps.get(157);
+ glMap2f = caps.get(158);
+ glMap2d = caps.get(159);
+ glMapGrid1f = caps.get(160);
+ glMapGrid1d = caps.get(161);
+ glMapGrid2f = caps.get(162);
+ glMapGrid2d = caps.get(163);
+ glMateriali = caps.get(164);
+ glMaterialf = caps.get(165);
+ glMaterialiv = caps.get(166);
+ glMaterialfv = caps.get(167);
+ glMatrixMode = caps.get(168);
+ glMultMatrixf = caps.get(169);
+ glMultMatrixd = caps.get(170);
+ glFrustum = caps.get(171);
+ glNewList = caps.get(172);
+ glEndList = caps.get(173);
+ glNormal3f = caps.get(174);
+ glNormal3b = caps.get(175);
+ glNormal3s = caps.get(176);
+ glNormal3i = caps.get(177);
+ glNormal3d = caps.get(178);
+ glNormal3fv = caps.get(179);
+ glNormal3bv = caps.get(180);
+ glNormal3sv = caps.get(181);
+ glNormal3iv = caps.get(182);
+ glNormal3dv = caps.get(183);
+ glNormalPointer = caps.get(184);
+ glOrtho = caps.get(185);
+ glPassThrough = caps.get(186);
+ glPixelMapfv = caps.get(187);
+ glPixelMapusv = caps.get(188);
+ glPixelMapuiv = caps.get(189);
+ glPixelStorei = caps.get(190);
+ glPixelStoref = caps.get(191);
+ glPixelTransferi = caps.get(192);
+ glPixelTransferf = caps.get(193);
+ glPixelZoom = caps.get(194);
+ glPointSize = caps.get(195);
+ glPolygonMode = caps.get(196);
+ glPolygonOffset = caps.get(197);
+ glPolygonStipple = caps.get(198);
+ glPushAttrib = caps.get(199);
+ glPushClientAttrib = caps.get(200);
+ glPopAttrib = caps.get(201);
+ glPopClientAttrib = caps.get(202);
+ glPopMatrix = caps.get(203);
+ glPopName = caps.get(204);
+ glPrioritizeTextures = caps.get(205);
+ glPushMatrix = caps.get(206);
+ glPushName = caps.get(207);
+ glRasterPos2i = caps.get(208);
+ glRasterPos2s = caps.get(209);
+ glRasterPos2f = caps.get(210);
+ glRasterPos2d = caps.get(211);
+ glRasterPos2iv = caps.get(212);
+ glRasterPos2sv = caps.get(213);
+ glRasterPos2fv = caps.get(214);
+ glRasterPos2dv = caps.get(215);
+ glRasterPos3i = caps.get(216);
+ glRasterPos3s = caps.get(217);
+ glRasterPos3f = caps.get(218);
+ glRasterPos3d = caps.get(219);
+ glRasterPos3iv = caps.get(220);
+ glRasterPos3sv = caps.get(221);
+ glRasterPos3fv = caps.get(222);
+ glRasterPos3dv = caps.get(223);
+ glRasterPos4i = caps.get(224);
+ glRasterPos4s = caps.get(225);
+ glRasterPos4f = caps.get(226);
+ glRasterPos4d = caps.get(227);
+ glRasterPos4iv = caps.get(228);
+ glRasterPos4sv = caps.get(229);
+ glRasterPos4fv = caps.get(230);
+ glRasterPos4dv = caps.get(231);
+ glReadBuffer = caps.get(232);
+ glReadPixels = caps.get(233);
+ glRecti = caps.get(234);
+ glRects = caps.get(235);
+ glRectf = caps.get(236);
+ glRectd = caps.get(237);
+ glRectiv = caps.get(238);
+ glRectsv = caps.get(239);
+ glRectfv = caps.get(240);
+ glRectdv = caps.get(241);
+ glRenderMode = caps.get(242);
+ glRotatef = caps.get(243);
+ glRotated = caps.get(244);
+ glScalef = caps.get(245);
+ glScaled = caps.get(246);
+ glScissor = caps.get(247);
+ glSelectBuffer = caps.get(248);
+ glShadeModel = caps.get(249);
+ glStencilFunc = caps.get(250);
+ glStencilMask = caps.get(251);
+ glStencilOp = caps.get(252);
+ glTexCoord1f = caps.get(253);
+ glTexCoord1s = caps.get(254);
+ glTexCoord1i = caps.get(255);
+ glTexCoord1d = caps.get(256);
+ glTexCoord1fv = caps.get(257);
+ glTexCoord1sv = caps.get(258);
+ glTexCoord1iv = caps.get(259);
+ glTexCoord1dv = caps.get(260);
+ glTexCoord2f = caps.get(261);
+ glTexCoord2s = caps.get(262);
+ glTexCoord2i = caps.get(263);
+ glTexCoord2d = caps.get(264);
+ glTexCoord2fv = caps.get(265);
+ glTexCoord2sv = caps.get(266);
+ glTexCoord2iv = caps.get(267);
+ glTexCoord2dv = caps.get(268);
+ glTexCoord3f = caps.get(269);
+ glTexCoord3s = caps.get(270);
+ glTexCoord3i = caps.get(271);
+ glTexCoord3d = caps.get(272);
+ glTexCoord3fv = caps.get(273);
+ glTexCoord3sv = caps.get(274);
+ glTexCoord3iv = caps.get(275);
+ glTexCoord3dv = caps.get(276);
+ glTexCoord4f = caps.get(277);
+ glTexCoord4s = caps.get(278);
+ glTexCoord4i = caps.get(279);
+ glTexCoord4d = caps.get(280);
+ glTexCoord4fv = caps.get(281);
+ glTexCoord4sv = caps.get(282);
+ glTexCoord4iv = caps.get(283);
+ glTexCoord4dv = caps.get(284);
+ glTexCoordPointer = caps.get(285);
+ glTexEnvi = caps.get(286);
+ glTexEnviv = caps.get(287);
+ glTexEnvf = caps.get(288);
+ glTexEnvfv = caps.get(289);
+ glTexGeni = caps.get(290);
+ glTexGeniv = caps.get(291);
+ glTexGenf = caps.get(292);
+ glTexGenfv = caps.get(293);
+ glTexGend = caps.get(294);
+ glTexGendv = caps.get(295);
+ glTexImage1D = caps.get(296);
+ glTexImage2D = caps.get(297);
+ glCopyTexImage1D = caps.get(298);
+ glCopyTexImage2D = caps.get(299);
+ glCopyTexSubImage1D = caps.get(300);
+ glCopyTexSubImage2D = caps.get(301);
+ glTexParameteri = caps.get(302);
+ glTexParameteriv = caps.get(303);
+ glTexParameterf = caps.get(304);
+ glTexParameterfv = caps.get(305);
+ glTexSubImage1D = caps.get(306);
+ glTexSubImage2D = caps.get(307);
+ glTranslatef = caps.get(308);
+ glTranslated = caps.get(309);
+ glVertex2f = caps.get(310);
+ glVertex2s = caps.get(311);
+ glVertex2i = caps.get(312);
+ glVertex2d = caps.get(313);
+ glVertex2fv = caps.get(314);
+ glVertex2sv = caps.get(315);
+ glVertex2iv = caps.get(316);
+ glVertex2dv = caps.get(317);
+ glVertex3f = caps.get(318);
+ glVertex3s = caps.get(319);
+ glVertex3i = caps.get(320);
+ glVertex3d = caps.get(321);
+ glVertex3fv = caps.get(322);
+ glVertex3sv = caps.get(323);
+ glVertex3iv = caps.get(324);
+ glVertex3dv = caps.get(325);
+ glVertex4f = caps.get(326);
+ glVertex4s = caps.get(327);
+ glVertex4i = caps.get(328);
+ glVertex4d = caps.get(329);
+ glVertex4fv = caps.get(330);
+ glVertex4sv = caps.get(331);
+ glVertex4iv = caps.get(332);
+ glVertex4dv = caps.get(333);
+ glVertexPointer = caps.get(334);
+ glViewport = caps.get(335);
+ glTexImage3D = caps.get(336);
+ glTexSubImage3D = caps.get(337);
+ glCopyTexSubImage3D = caps.get(338);
+ glDrawRangeElements = caps.get(339);
+ glCompressedTexImage3D = caps.get(340);
+ glCompressedTexImage2D = caps.get(341);
+ glCompressedTexImage1D = caps.get(342);
+ glCompressedTexSubImage3D = caps.get(343);
+ glCompressedTexSubImage2D = caps.get(344);
+ glCompressedTexSubImage1D = caps.get(345);
+ glGetCompressedTexImage = caps.get(346);
+ glSampleCoverage = caps.get(347);
+ glActiveTexture = caps.get(348);
+ glClientActiveTexture = caps.get(349);
+ glMultiTexCoord1f = caps.get(350);
+ glMultiTexCoord1s = caps.get(351);
+ glMultiTexCoord1i = caps.get(352);
+ glMultiTexCoord1d = caps.get(353);
+ glMultiTexCoord1fv = caps.get(354);
+ glMultiTexCoord1sv = caps.get(355);
+ glMultiTexCoord1iv = caps.get(356);
+ glMultiTexCoord1dv = caps.get(357);
+ glMultiTexCoord2f = caps.get(358);
+ glMultiTexCoord2s = caps.get(359);
+ glMultiTexCoord2i = caps.get(360);
+ glMultiTexCoord2d = caps.get(361);
+ glMultiTexCoord2fv = caps.get(362);
+ glMultiTexCoord2sv = caps.get(363);
+ glMultiTexCoord2iv = caps.get(364);
+ glMultiTexCoord2dv = caps.get(365);
+ glMultiTexCoord3f = caps.get(366);
+ glMultiTexCoord3s = caps.get(367);
+ glMultiTexCoord3i = caps.get(368);
+ glMultiTexCoord3d = caps.get(369);
+ glMultiTexCoord3fv = caps.get(370);
+ glMultiTexCoord3sv = caps.get(371);
+ glMultiTexCoord3iv = caps.get(372);
+ glMultiTexCoord3dv = caps.get(373);
+ glMultiTexCoord4f = caps.get(374);
+ glMultiTexCoord4s = caps.get(375);
+ glMultiTexCoord4i = caps.get(376);
+ glMultiTexCoord4d = caps.get(377);
+ glMultiTexCoord4fv = caps.get(378);
+ glMultiTexCoord4sv = caps.get(379);
+ glMultiTexCoord4iv = caps.get(380);
+ glMultiTexCoord4dv = caps.get(381);
+ glLoadTransposeMatrixf = caps.get(382);
+ glLoadTransposeMatrixd = caps.get(383);
+ glMultTransposeMatrixf = caps.get(384);
+ glMultTransposeMatrixd = caps.get(385);
+ glBlendColor = caps.get(386);
+ glBlendEquation = caps.get(387);
+ glFogCoordf = caps.get(388);
+ glFogCoordd = caps.get(389);
+ glFogCoordfv = caps.get(390);
+ glFogCoorddv = caps.get(391);
+ glFogCoordPointer = caps.get(392);
+ glMultiDrawArrays = caps.get(393);
+ glMultiDrawElements = caps.get(394);
+ glPointParameterf = caps.get(395);
+ glPointParameteri = caps.get(396);
+ glPointParameterfv = caps.get(397);
+ glPointParameteriv = caps.get(398);
+ glSecondaryColor3b = caps.get(399);
+ glSecondaryColor3s = caps.get(400);
+ glSecondaryColor3i = caps.get(401);
+ glSecondaryColor3f = caps.get(402);
+ glSecondaryColor3d = caps.get(403);
+ glSecondaryColor3ub = caps.get(404);
+ glSecondaryColor3us = caps.get(405);
+ glSecondaryColor3ui = caps.get(406);
+ glSecondaryColor3bv = caps.get(407);
+ glSecondaryColor3sv = caps.get(408);
+ glSecondaryColor3iv = caps.get(409);
+ glSecondaryColor3fv = caps.get(410);
+ glSecondaryColor3dv = caps.get(411);
+ glSecondaryColor3ubv = caps.get(412);
+ glSecondaryColor3usv = caps.get(413);
+ glSecondaryColor3uiv = caps.get(414);
+ glSecondaryColorPointer = caps.get(415);
+ glBlendFuncSeparate = caps.get(416);
+ glWindowPos2i = caps.get(417);
+ glWindowPos2s = caps.get(418);
+ glWindowPos2f = caps.get(419);
+ glWindowPos2d = caps.get(420);
+ glWindowPos2iv = caps.get(421);
+ glWindowPos2sv = caps.get(422);
+ glWindowPos2fv = caps.get(423);
+ glWindowPos2dv = caps.get(424);
+ glWindowPos3i = caps.get(425);
+ glWindowPos3s = caps.get(426);
+ glWindowPos3f = caps.get(427);
+ glWindowPos3d = caps.get(428);
+ glWindowPos3iv = caps.get(429);
+ glWindowPos3sv = caps.get(430);
+ glWindowPos3fv = caps.get(431);
+ glWindowPos3dv = caps.get(432);
+ glBindBuffer = caps.get(433);
+ glDeleteBuffers = caps.get(434);
+ glGenBuffers = caps.get(435);
+ glIsBuffer = caps.get(436);
+ glBufferData = caps.get(437);
+ glBufferSubData = caps.get(438);
+ glGetBufferSubData = caps.get(439);
+ glMapBuffer = caps.get(440);
+ glUnmapBuffer = caps.get(441);
+ glGetBufferParameteriv = caps.get(442);
+ glGetBufferPointerv = caps.get(443);
+ glGenQueries = caps.get(444);
+ glDeleteQueries = caps.get(445);
+ glIsQuery = caps.get(446);
+ glBeginQuery = caps.get(447);
+ glEndQuery = caps.get(448);
+ glGetQueryiv = caps.get(449);
+ glGetQueryObjectiv = caps.get(450);
+ glGetQueryObjectuiv = caps.get(451);
+ glCreateProgram = caps.get(452);
+ glDeleteProgram = caps.get(453);
+ glIsProgram = caps.get(454);
+ glCreateShader = caps.get(455);
+ glDeleteShader = caps.get(456);
+ glIsShader = caps.get(457);
+ glAttachShader = caps.get(458);
+ glDetachShader = caps.get(459);
+ glShaderSource = caps.get(460);
+ glCompileShader = caps.get(461);
+ glLinkProgram = caps.get(462);
+ glUseProgram = caps.get(463);
+ glValidateProgram = caps.get(464);
+ glUniform1f = caps.get(465);
+ glUniform2f = caps.get(466);
+ glUniform3f = caps.get(467);
+ glUniform4f = caps.get(468);
+ glUniform1i = caps.get(469);
+ glUniform2i = caps.get(470);
+ glUniform3i = caps.get(471);
+ glUniform4i = caps.get(472);
+ glUniform1fv = caps.get(473);
+ glUniform2fv = caps.get(474);
+ glUniform3fv = caps.get(475);
+ glUniform4fv = caps.get(476);
+ glUniform1iv = caps.get(477);
+ glUniform2iv = caps.get(478);
+ glUniform3iv = caps.get(479);
+ glUniform4iv = caps.get(480);
+ glUniformMatrix2fv = caps.get(481);
+ glUniformMatrix3fv = caps.get(482);
+ glUniformMatrix4fv = caps.get(483);
+ glGetShaderiv = caps.get(484);
+ glGetProgramiv = caps.get(485);
+ glGetShaderInfoLog = caps.get(486);
+ glGetProgramInfoLog = caps.get(487);
+ glGetAttachedShaders = caps.get(488);
+ glGetUniformLocation = caps.get(489);
+ glGetActiveUniform = caps.get(490);
+ glGetUniformfv = caps.get(491);
+ glGetUniformiv = caps.get(492);
+ glGetShaderSource = caps.get(493);
+ glVertexAttrib1f = caps.get(494);
+ glVertexAttrib1s = caps.get(495);
+ glVertexAttrib1d = caps.get(496);
+ glVertexAttrib2f = caps.get(497);
+ glVertexAttrib2s = caps.get(498);
+ glVertexAttrib2d = caps.get(499);
+ glVertexAttrib3f = caps.get(500);
+ glVertexAttrib3s = caps.get(501);
+ glVertexAttrib3d = caps.get(502);
+ glVertexAttrib4f = caps.get(503);
+ glVertexAttrib4s = caps.get(504);
+ glVertexAttrib4d = caps.get(505);
+ glVertexAttrib4Nub = caps.get(506);
+ glVertexAttrib1fv = caps.get(507);
+ glVertexAttrib1sv = caps.get(508);
+ glVertexAttrib1dv = caps.get(509);
+ glVertexAttrib2fv = caps.get(510);
+ glVertexAttrib2sv = caps.get(511);
+ glVertexAttrib2dv = caps.get(512);
+ glVertexAttrib3fv = caps.get(513);
+ glVertexAttrib3sv = caps.get(514);
+ glVertexAttrib3dv = caps.get(515);
+ glVertexAttrib4fv = caps.get(516);
+ glVertexAttrib4sv = caps.get(517);
+ glVertexAttrib4dv = caps.get(518);
+ glVertexAttrib4iv = caps.get(519);
+ glVertexAttrib4bv = caps.get(520);
+ glVertexAttrib4ubv = caps.get(521);
+ glVertexAttrib4usv = caps.get(522);
+ glVertexAttrib4uiv = caps.get(523);
+ glVertexAttrib4Nbv = caps.get(524);
+ glVertexAttrib4Nsv = caps.get(525);
+ glVertexAttrib4Niv = caps.get(526);
+ glVertexAttrib4Nubv = caps.get(527);
+ glVertexAttrib4Nusv = caps.get(528);
+ glVertexAttrib4Nuiv = caps.get(529);
+ glVertexAttribPointer = caps.get(530);
+ glEnableVertexAttribArray = caps.get(531);
+ glDisableVertexAttribArray = caps.get(532);
+ glBindAttribLocation = caps.get(533);
+ glGetActiveAttrib = caps.get(534);
+ glGetAttribLocation = caps.get(535);
+ glGetVertexAttribiv = caps.get(536);
+ glGetVertexAttribfv = caps.get(537);
+ glGetVertexAttribdv = caps.get(538);
+ glGetVertexAttribPointerv = caps.get(539);
+ glDrawBuffers = caps.get(540);
+ glBlendEquationSeparate = caps.get(541);
+ glStencilOpSeparate = caps.get(542);
+ glStencilFuncSeparate = caps.get(543);
+ glStencilMaskSeparate = caps.get(544);
+ glUniformMatrix2x3fv = caps.get(545);
+ glUniformMatrix3x2fv = caps.get(546);
+ glUniformMatrix2x4fv = caps.get(547);
+ glUniformMatrix4x2fv = caps.get(548);
+ glUniformMatrix3x4fv = caps.get(549);
+ glUniformMatrix4x3fv = caps.get(550);
+ glGetStringi = caps.get(551);
+ glClearBufferiv = caps.get(552);
+ glClearBufferuiv = caps.get(553);
+ glClearBufferfv = caps.get(554);
+ glClearBufferfi = caps.get(555);
+ glVertexAttribI1i = caps.get(556);
+ glVertexAttribI2i = caps.get(557);
+ glVertexAttribI3i = caps.get(558);
+ glVertexAttribI4i = caps.get(559);
+ glVertexAttribI1ui = caps.get(560);
+ glVertexAttribI2ui = caps.get(561);
+ glVertexAttribI3ui = caps.get(562);
+ glVertexAttribI4ui = caps.get(563);
+ glVertexAttribI1iv = caps.get(564);
+ glVertexAttribI2iv = caps.get(565);
+ glVertexAttribI3iv = caps.get(566);
+ glVertexAttribI4iv = caps.get(567);
+ glVertexAttribI1uiv = caps.get(568);
+ glVertexAttribI2uiv = caps.get(569);
+ glVertexAttribI3uiv = caps.get(570);
+ glVertexAttribI4uiv = caps.get(571);
+ glVertexAttribI4bv = caps.get(572);
+ glVertexAttribI4sv = caps.get(573);
+ glVertexAttribI4ubv = caps.get(574);
+ glVertexAttribI4usv = caps.get(575);
+ glVertexAttribIPointer = caps.get(576);
+ glGetVertexAttribIiv = caps.get(577);
+ glGetVertexAttribIuiv = caps.get(578);
+ glUniform1ui = caps.get(579);
+ glUniform2ui = caps.get(580);
+ glUniform3ui = caps.get(581);
+ glUniform4ui = caps.get(582);
+ glUniform1uiv = caps.get(583);
+ glUniform2uiv = caps.get(584);
+ glUniform3uiv = caps.get(585);
+ glUniform4uiv = caps.get(586);
+ glGetUniformuiv = caps.get(587);
+ glBindFragDataLocation = caps.get(588);
+ glGetFragDataLocation = caps.get(589);
+ glBeginConditionalRender = caps.get(590);
+ glEndConditionalRender = caps.get(591);
+ glMapBufferRange = caps.get(592);
+ glFlushMappedBufferRange = caps.get(593);
+ glClampColor = caps.get(594);
+ glIsRenderbuffer = caps.get(595);
+ glBindRenderbuffer = caps.get(596);
+ glDeleteRenderbuffers = caps.get(597);
+ glGenRenderbuffers = caps.get(598);
+ glRenderbufferStorage = caps.get(599);
+ glRenderbufferStorageMultisample = caps.get(600);
+ glGetRenderbufferParameteriv = caps.get(601);
+ glIsFramebuffer = caps.get(602);
+ glBindFramebuffer = caps.get(603);
+ glDeleteFramebuffers = caps.get(604);
+ glGenFramebuffers = caps.get(605);
+ glCheckFramebufferStatus = caps.get(606);
+ glFramebufferTexture1D = caps.get(607);
+ glFramebufferTexture2D = caps.get(608);
+ glFramebufferTexture3D = caps.get(609);
+ glFramebufferTextureLayer = caps.get(610);
+ glFramebufferRenderbuffer = caps.get(611);
+ glGetFramebufferAttachmentParameteriv = caps.get(612);
+ glBlitFramebuffer = caps.get(613);
+ glGenerateMipmap = caps.get(614);
+ glTexParameterIiv = caps.get(615);
+ glTexParameterIuiv = caps.get(616);
+ glGetTexParameterIiv = caps.get(617);
+ glGetTexParameterIuiv = caps.get(618);
+ glColorMaski = caps.get(619);
+ glGetBooleani_v = caps.get(620);
+ glGetIntegeri_v = caps.get(621);
+ glEnablei = caps.get(622);
+ glDisablei = caps.get(623);
+ glIsEnabledi = caps.get(624);
+ glBindBufferRange = caps.get(625);
+ glBindBufferBase = caps.get(626);
+ glBeginTransformFeedback = caps.get(627);
+ glEndTransformFeedback = caps.get(628);
+ glTransformFeedbackVaryings = caps.get(629);
+ glGetTransformFeedbackVarying = caps.get(630);
+ glBindVertexArray = caps.get(631);
+ glDeleteVertexArrays = caps.get(632);
+ glGenVertexArrays = caps.get(633);
+ glIsVertexArray = caps.get(634);
+ glDrawArraysInstanced = caps.get(635);
+ glDrawElementsInstanced = caps.get(636);
+ glCopyBufferSubData = caps.get(637);
+ glPrimitiveRestartIndex = caps.get(638);
+ glTexBuffer = caps.get(639);
+ glGetUniformIndices = caps.get(640);
+ glGetActiveUniformsiv = caps.get(641);
+ glGetActiveUniformName = caps.get(642);
+ glGetUniformBlockIndex = caps.get(643);
+ glGetActiveUniformBlockiv = caps.get(644);
+ glGetActiveUniformBlockName = caps.get(645);
+ glUniformBlockBinding = caps.get(646);
+ glGetBufferParameteri64v = caps.get(647);
+ glDrawElementsBaseVertex = caps.get(648);
+ glDrawRangeElementsBaseVertex = caps.get(649);
+ glDrawElementsInstancedBaseVertex = caps.get(650);
+ glMultiDrawElementsBaseVertex = caps.get(651);
+ glProvokingVertex = caps.get(652);
+ glTexImage2DMultisample = caps.get(653);
+ glTexImage3DMultisample = caps.get(654);
+ glGetMultisamplefv = caps.get(655);
+ glSampleMaski = caps.get(656);
+ glFramebufferTexture = caps.get(657);
+ glFenceSync = caps.get(658);
+ glIsSync = caps.get(659);
+ glDeleteSync = caps.get(660);
+ glClientWaitSync = caps.get(661);
+ glWaitSync = caps.get(662);
+ glGetInteger64v = caps.get(663);
+ glGetInteger64i_v = caps.get(664);
+ glGetSynciv = caps.get(665);
+ glBindFragDataLocationIndexed = caps.get(666);
+ glGetFragDataIndex = caps.get(667);
+ glGenSamplers = caps.get(668);
+ glDeleteSamplers = caps.get(669);
+ glIsSampler = caps.get(670);
+ glBindSampler = caps.get(671);
+ glSamplerParameteri = caps.get(672);
+ glSamplerParameterf = caps.get(673);
+ glSamplerParameteriv = caps.get(674);
+ glSamplerParameterfv = caps.get(675);
+ glSamplerParameterIiv = caps.get(676);
+ glSamplerParameterIuiv = caps.get(677);
+ glGetSamplerParameteriv = caps.get(678);
+ glGetSamplerParameterfv = caps.get(679);
+ glGetSamplerParameterIiv = caps.get(680);
+ glGetSamplerParameterIuiv = caps.get(681);
+ glQueryCounter = caps.get(682);
+ glGetQueryObjecti64v = caps.get(683);
+ glGetQueryObjectui64v = caps.get(684);
+ glVertexAttribDivisor = caps.get(685);
+ glVertexP2ui = caps.get(686);
+ glVertexP3ui = caps.get(687);
+ glVertexP4ui = caps.get(688);
+ glVertexP2uiv = caps.get(689);
+ glVertexP3uiv = caps.get(690);
+ glVertexP4uiv = caps.get(691);
+ glTexCoordP1ui = caps.get(692);
+ glTexCoordP2ui = caps.get(693);
+ glTexCoordP3ui = caps.get(694);
+ glTexCoordP4ui = caps.get(695);
+ glTexCoordP1uiv = caps.get(696);
+ glTexCoordP2uiv = caps.get(697);
+ glTexCoordP3uiv = caps.get(698);
+ glTexCoordP4uiv = caps.get(699);
+ glMultiTexCoordP1ui = caps.get(700);
+ glMultiTexCoordP2ui = caps.get(701);
+ glMultiTexCoordP3ui = caps.get(702);
+ glMultiTexCoordP4ui = caps.get(703);
+ glMultiTexCoordP1uiv = caps.get(704);
+ glMultiTexCoordP2uiv = caps.get(705);
+ glMultiTexCoordP3uiv = caps.get(706);
+ glMultiTexCoordP4uiv = caps.get(707);
+ glNormalP3ui = caps.get(708);
+ glNormalP3uiv = caps.get(709);
+ glColorP3ui = caps.get(710);
+ glColorP4ui = caps.get(711);
+ glColorP3uiv = caps.get(712);
+ glColorP4uiv = caps.get(713);
+ glSecondaryColorP3ui = caps.get(714);
+ glSecondaryColorP3uiv = caps.get(715);
+ glVertexAttribP1ui = caps.get(716);
+ glVertexAttribP2ui = caps.get(717);
+ glVertexAttribP3ui = caps.get(718);
+ glVertexAttribP4ui = caps.get(719);
+ glVertexAttribP1uiv = caps.get(720);
+ glVertexAttribP2uiv = caps.get(721);
+ glVertexAttribP3uiv = caps.get(722);
+ glVertexAttribP4uiv = caps.get(723);
+ glBlendEquationi = caps.get(724);
+ glBlendEquationSeparatei = caps.get(725);
+ glBlendFunci = caps.get(726);
+ glBlendFuncSeparatei = caps.get(727);
+ glDrawArraysIndirect = caps.get(728);
+ glDrawElementsIndirect = caps.get(729);
+ glUniform1d = caps.get(730);
+ glUniform2d = caps.get(731);
+ glUniform3d = caps.get(732);
+ glUniform4d = caps.get(733);
+ glUniform1dv = caps.get(734);
+ glUniform2dv = caps.get(735);
+ glUniform3dv = caps.get(736);
+ glUniform4dv = caps.get(737);
+ glUniformMatrix2dv = caps.get(738);
+ glUniformMatrix3dv = caps.get(739);
+ glUniformMatrix4dv = caps.get(740);
+ glUniformMatrix2x3dv = caps.get(741);
+ glUniformMatrix2x4dv = caps.get(742);
+ glUniformMatrix3x2dv = caps.get(743);
+ glUniformMatrix3x4dv = caps.get(744);
+ glUniformMatrix4x2dv = caps.get(745);
+ glUniformMatrix4x3dv = caps.get(746);
+ glGetUniformdv = caps.get(747);
+ glMinSampleShading = caps.get(748);
+ glGetSubroutineUniformLocation = caps.get(749);
+ glGetSubroutineIndex = caps.get(750);
+ glGetActiveSubroutineUniformiv = caps.get(751);
+ glGetActiveSubroutineUniformName = caps.get(752);
+ glGetActiveSubroutineName = caps.get(753);
+ glUniformSubroutinesuiv = caps.get(754);
+ glGetUniformSubroutineuiv = caps.get(755);
+ glGetProgramStageiv = caps.get(756);
+ glPatchParameteri = caps.get(757);
+ glPatchParameterfv = caps.get(758);
+ glBindTransformFeedback = caps.get(759);
+ glDeleteTransformFeedbacks = caps.get(760);
+ glGenTransformFeedbacks = caps.get(761);
+ glIsTransformFeedback = caps.get(762);
+ glPauseTransformFeedback = caps.get(763);
+ glResumeTransformFeedback = caps.get(764);
+ glDrawTransformFeedback = caps.get(765);
+ glDrawTransformFeedbackStream = caps.get(766);
+ glBeginQueryIndexed = caps.get(767);
+ glEndQueryIndexed = caps.get(768);
+ glGetQueryIndexediv = caps.get(769);
+ glReleaseShaderCompiler = caps.get(770);
+ glShaderBinary = caps.get(771);
+ glGetShaderPrecisionFormat = caps.get(772);
+ glDepthRangef = caps.get(773);
+ glClearDepthf = caps.get(774);
+ glGetProgramBinary = caps.get(775);
+ glProgramBinary = caps.get(776);
+ glProgramParameteri = caps.get(777);
+ glUseProgramStages = caps.get(778);
+ glActiveShaderProgram = caps.get(779);
+ glCreateShaderProgramv = caps.get(780);
+ glBindProgramPipeline = caps.get(781);
+ glDeleteProgramPipelines = caps.get(782);
+ glGenProgramPipelines = caps.get(783);
+ glIsProgramPipeline = caps.get(784);
+ glGetProgramPipelineiv = caps.get(785);
+ glProgramUniform1i = caps.get(786);
+ glProgramUniform2i = caps.get(787);
+ glProgramUniform3i = caps.get(788);
+ glProgramUniform4i = caps.get(789);
+ glProgramUniform1ui = caps.get(790);
+ glProgramUniform2ui = caps.get(791);
+ glProgramUniform3ui = caps.get(792);
+ glProgramUniform4ui = caps.get(793);
+ glProgramUniform1f = caps.get(794);
+ glProgramUniform2f = caps.get(795);
+ glProgramUniform3f = caps.get(796);
+ glProgramUniform4f = caps.get(797);
+ glProgramUniform1d = caps.get(798);
+ glProgramUniform2d = caps.get(799);
+ glProgramUniform3d = caps.get(800);
+ glProgramUniform4d = caps.get(801);
+ glProgramUniform1iv = caps.get(802);
+ glProgramUniform2iv = caps.get(803);
+ glProgramUniform3iv = caps.get(804);
+ glProgramUniform4iv = caps.get(805);
+ glProgramUniform1uiv = caps.get(806);
+ glProgramUniform2uiv = caps.get(807);
+ glProgramUniform3uiv = caps.get(808);
+ glProgramUniform4uiv = caps.get(809);
+ glProgramUniform1fv = caps.get(810);
+ glProgramUniform2fv = caps.get(811);
+ glProgramUniform3fv = caps.get(812);
+ glProgramUniform4fv = caps.get(813);
+ glProgramUniform1dv = caps.get(814);
+ glProgramUniform2dv = caps.get(815);
+ glProgramUniform3dv = caps.get(816);
+ glProgramUniform4dv = caps.get(817);
+ glProgramUniformMatrix2fv = caps.get(818);
+ glProgramUniformMatrix3fv = caps.get(819);
+ glProgramUniformMatrix4fv = caps.get(820);
+ glProgramUniformMatrix2dv = caps.get(821);
+ glProgramUniformMatrix3dv = caps.get(822);
+ glProgramUniformMatrix4dv = caps.get(823);
+ glProgramUniformMatrix2x3fv = caps.get(824);
+ glProgramUniformMatrix3x2fv = caps.get(825);
+ glProgramUniformMatrix2x4fv = caps.get(826);
+ glProgramUniformMatrix4x2fv = caps.get(827);
+ glProgramUniformMatrix3x4fv = caps.get(828);
+ glProgramUniformMatrix4x3fv = caps.get(829);
+ glProgramUniformMatrix2x3dv = caps.get(830);
+ glProgramUniformMatrix3x2dv = caps.get(831);
+ glProgramUniformMatrix2x4dv = caps.get(832);
+ glProgramUniformMatrix4x2dv = caps.get(833);
+ glProgramUniformMatrix3x4dv = caps.get(834);
+ glProgramUniformMatrix4x3dv = caps.get(835);
+ glValidateProgramPipeline = caps.get(836);
+ glGetProgramPipelineInfoLog = caps.get(837);
+ glVertexAttribL1d = caps.get(838);
+ glVertexAttribL2d = caps.get(839);
+ glVertexAttribL3d = caps.get(840);
+ glVertexAttribL4d = caps.get(841);
+ glVertexAttribL1dv = caps.get(842);
+ glVertexAttribL2dv = caps.get(843);
+ glVertexAttribL3dv = caps.get(844);
+ glVertexAttribL4dv = caps.get(845);
+ glVertexAttribLPointer = caps.get(846);
+ glGetVertexAttribLdv = caps.get(847);
+ glViewportArrayv = caps.get(848);
+ glViewportIndexedf = caps.get(849);
+ glViewportIndexedfv = caps.get(850);
+ glScissorArrayv = caps.get(851);
+ glScissorIndexed = caps.get(852);
+ glScissorIndexedv = caps.get(853);
+ glDepthRangeArrayv = caps.get(854);
+ glDepthRangeIndexed = caps.get(855);
+ glGetFloati_v = caps.get(856);
+ glGetDoublei_v = caps.get(857);
+ glGetActiveAtomicCounterBufferiv = caps.get(858);
+ glTexStorage1D = caps.get(859);
+ glTexStorage2D = caps.get(860);
+ glTexStorage3D = caps.get(861);
+ glDrawTransformFeedbackInstanced = caps.get(862);
+ glDrawTransformFeedbackStreamInstanced = caps.get(863);
+ glDrawArraysInstancedBaseInstance = caps.get(864);
+ glDrawElementsInstancedBaseInstance = caps.get(865);
+ glDrawElementsInstancedBaseVertexBaseInstance = caps.get(866);
+ glBindImageTexture = caps.get(867);
+ glMemoryBarrier = caps.get(868);
+ glGetInternalformativ = caps.get(869);
+ glClearBufferData = caps.get(870);
+ glClearBufferSubData = caps.get(871);
+ glDispatchCompute = caps.get(872);
+ glDispatchComputeIndirect = caps.get(873);
+ glCopyImageSubData = caps.get(874);
+ glDebugMessageControl = caps.get(875);
+ glDebugMessageInsert = caps.get(876);
+ glDebugMessageCallback = caps.get(877);
+ glGetDebugMessageLog = caps.get(878);
+ glPushDebugGroup = caps.get(879);
+ glPopDebugGroup = caps.get(880);
+ glObjectLabel = caps.get(881);
+ glGetObjectLabel = caps.get(882);
+ glObjectPtrLabel = caps.get(883);
+ glGetObjectPtrLabel = caps.get(884);
+ glFramebufferParameteri = caps.get(885);
+ glGetFramebufferParameteriv = caps.get(886);
+ glGetInternalformati64v = caps.get(887);
+ glInvalidateTexSubImage = caps.get(888);
+ glInvalidateTexImage = caps.get(889);
+ glInvalidateBufferSubData = caps.get(890);
+ glInvalidateBufferData = caps.get(891);
+ glInvalidateFramebuffer = caps.get(892);
+ glInvalidateSubFramebuffer = caps.get(893);
+ glMultiDrawArraysIndirect = caps.get(894);
+ glMultiDrawElementsIndirect = caps.get(895);
+ glGetProgramInterfaceiv = caps.get(896);
+ glGetProgramResourceIndex = caps.get(897);
+ glGetProgramResourceName = caps.get(898);
+ glGetProgramResourceiv = caps.get(899);
+ glGetProgramResourceLocation = caps.get(900);
+ glGetProgramResourceLocationIndex = caps.get(901);
+ glShaderStorageBlockBinding = caps.get(902);
+ glTexBufferRange = caps.get(903);
+ glTexStorage2DMultisample = caps.get(904);
+ glTexStorage3DMultisample = caps.get(905);
+ glTextureView = caps.get(906);
+ glBindVertexBuffer = caps.get(907);
+ glVertexAttribFormat = caps.get(908);
+ glVertexAttribIFormat = caps.get(909);
+ glVertexAttribLFormat = caps.get(910);
+ glVertexAttribBinding = caps.get(911);
+ glVertexBindingDivisor = caps.get(912);
+ glBufferStorage = caps.get(913);
+ glClearTexSubImage = caps.get(914);
+ glClearTexImage = caps.get(915);
+ glBindBuffersBase = caps.get(916);
+ glBindBuffersRange = caps.get(917);
+ glBindTextures = caps.get(918);
+ glBindSamplers = caps.get(919);
+ glBindImageTextures = caps.get(920);
+ glBindVertexBuffers = caps.get(921);
+ glClipControl = caps.get(922);
+ glCreateTransformFeedbacks = caps.get(923);
+ glTransformFeedbackBufferBase = caps.get(924);
+ glTransformFeedbackBufferRange = caps.get(925);
+ glGetTransformFeedbackiv = caps.get(926);
+ glGetTransformFeedbacki_v = caps.get(927);
+ glGetTransformFeedbacki64_v = caps.get(928);
+ glCreateBuffers = caps.get(929);
+ glNamedBufferStorage = caps.get(930);
+ glNamedBufferData = caps.get(931);
+ glNamedBufferSubData = caps.get(932);
+ glCopyNamedBufferSubData = caps.get(933);
+ glClearNamedBufferData = caps.get(934);
+ glClearNamedBufferSubData = caps.get(935);
+ glMapNamedBuffer = caps.get(936);
+ glMapNamedBufferRange = caps.get(937);
+ glUnmapNamedBuffer = caps.get(938);
+ glFlushMappedNamedBufferRange = caps.get(939);
+ glGetNamedBufferParameteriv = caps.get(940);
+ glGetNamedBufferParameteri64v = caps.get(941);
+ glGetNamedBufferPointerv = caps.get(942);
+ glGetNamedBufferSubData = caps.get(943);
+ glCreateFramebuffers = caps.get(944);
+ glNamedFramebufferRenderbuffer = caps.get(945);
+ glNamedFramebufferParameteri = caps.get(946);
+ glNamedFramebufferTexture = caps.get(947);
+ glNamedFramebufferTextureLayer = caps.get(948);
+ glNamedFramebufferDrawBuffer = caps.get(949);
+ glNamedFramebufferDrawBuffers = caps.get(950);
+ glNamedFramebufferReadBuffer = caps.get(951);
+ glInvalidateNamedFramebufferData = caps.get(952);
+ glInvalidateNamedFramebufferSubData = caps.get(953);
+ glClearNamedFramebufferiv = caps.get(954);
+ glClearNamedFramebufferuiv = caps.get(955);
+ glClearNamedFramebufferfv = caps.get(956);
+ glClearNamedFramebufferfi = caps.get(957);
+ glBlitNamedFramebuffer = caps.get(958);
+ glCheckNamedFramebufferStatus = caps.get(959);
+ glGetNamedFramebufferParameteriv = caps.get(960);
+ glGetNamedFramebufferAttachmentParameteriv = caps.get(961);
+ glCreateRenderbuffers = caps.get(962);
+ glNamedRenderbufferStorage = caps.get(963);
+ glNamedRenderbufferStorageMultisample = caps.get(964);
+ glGetNamedRenderbufferParameteriv = caps.get(965);
+ glCreateTextures = caps.get(966);
+ glTextureBuffer = caps.get(967);
+ glTextureBufferRange = caps.get(968);
+ glTextureStorage1D = caps.get(969);
+ glTextureStorage2D = caps.get(970);
+ glTextureStorage3D = caps.get(971);
+ glTextureStorage2DMultisample = caps.get(972);
+ glTextureStorage3DMultisample = caps.get(973);
+ glTextureSubImage1D = caps.get(974);
+ glTextureSubImage2D = caps.get(975);
+ glTextureSubImage3D = caps.get(976);
+ glCompressedTextureSubImage1D = caps.get(977);
+ glCompressedTextureSubImage2D = caps.get(978);
+ glCompressedTextureSubImage3D = caps.get(979);
+ glCopyTextureSubImage1D = caps.get(980);
+ glCopyTextureSubImage2D = caps.get(981);
+ glCopyTextureSubImage3D = caps.get(982);
+ glTextureParameterf = caps.get(983);
+ glTextureParameterfv = caps.get(984);
+ glTextureParameteri = caps.get(985);
+ glTextureParameterIiv = caps.get(986);
+ glTextureParameterIuiv = caps.get(987);
+ glTextureParameteriv = caps.get(988);
+ glGenerateTextureMipmap = caps.get(989);
+ glBindTextureUnit = caps.get(990);
+ glGetTextureImage = caps.get(991);
+ glGetCompressedTextureImage = caps.get(992);
+ glGetTextureLevelParameterfv = caps.get(993);
+ glGetTextureLevelParameteriv = caps.get(994);
+ glGetTextureParameterfv = caps.get(995);
+ glGetTextureParameterIiv = caps.get(996);
+ glGetTextureParameterIuiv = caps.get(997);
+ glGetTextureParameteriv = caps.get(998);
+ glCreateVertexArrays = caps.get(999);
+ glDisableVertexArrayAttrib = caps.get(1000);
+ glEnableVertexArrayAttrib = caps.get(1001);
+ glVertexArrayElementBuffer = caps.get(1002);
+ glVertexArrayVertexBuffer = caps.get(1003);
+ glVertexArrayVertexBuffers = caps.get(1004);
+ glVertexArrayAttribFormat = caps.get(1005);
+ glVertexArrayAttribIFormat = caps.get(1006);
+ glVertexArrayAttribLFormat = caps.get(1007);
+ glVertexArrayAttribBinding = caps.get(1008);
+ glVertexArrayBindingDivisor = caps.get(1009);
+ glGetVertexArrayiv = caps.get(1010);
+ glGetVertexArrayIndexediv = caps.get(1011);
+ glGetVertexArrayIndexed64iv = caps.get(1012);
+ glCreateSamplers = caps.get(1013);
+ glCreateProgramPipelines = caps.get(1014);
+ glCreateQueries = caps.get(1015);
+ glGetQueryBufferObjectiv = caps.get(1016);
+ glGetQueryBufferObjectuiv = caps.get(1017);
+ glGetQueryBufferObjecti64v = caps.get(1018);
+ glGetQueryBufferObjectui64v = caps.get(1019);
+ glMemoryBarrierByRegion = caps.get(1020);
+ glGetTextureSubImage = caps.get(1021);
+ glGetCompressedTextureSubImage = caps.get(1022);
+ glTextureBarrier = caps.get(1023);
+ glGetGraphicsResetStatus = caps.get(1024);
+ glGetnMapdv = caps.get(1025);
+ glGetnMapfv = caps.get(1026);
+ glGetnMapiv = caps.get(1027);
+ glGetnPixelMapfv = caps.get(1028);
+ glGetnPixelMapuiv = caps.get(1029);
+ glGetnPixelMapusv = caps.get(1030);
+ glGetnPolygonStipple = caps.get(1031);
+ glGetnTexImage = caps.get(1032);
+ glReadnPixels = caps.get(1033);
+ glGetnColorTable = caps.get(1034);
+ glGetnConvolutionFilter = caps.get(1035);
+ glGetnSeparableFilter = caps.get(1036);
+ glGetnHistogram = caps.get(1037);
+ glGetnMinmax = caps.get(1038);
+ glGetnCompressedTexImage = caps.get(1039);
+ glGetnUniformfv = caps.get(1040);
+ glGetnUniformdv = caps.get(1041);
+ glGetnUniformiv = caps.get(1042);
+ glGetnUniformuiv = caps.get(1043);
+ glMultiDrawArraysIndirectCount = caps.get(1044);
+ glMultiDrawElementsIndirectCount = caps.get(1045);
+ glPolygonOffsetClamp = caps.get(1046);
+ glSpecializeShader = caps.get(1047);
+ glDebugMessageEnableAMD = caps.get(1048);
+ glDebugMessageInsertAMD = caps.get(1049);
+ glDebugMessageCallbackAMD = caps.get(1050);
+ glGetDebugMessageLogAMD = caps.get(1051);
+ glBlendFuncIndexedAMD = caps.get(1052);
+ glBlendFuncSeparateIndexedAMD = caps.get(1053);
+ glBlendEquationIndexedAMD = caps.get(1054);
+ glBlendEquationSeparateIndexedAMD = caps.get(1055);
+ glRenderbufferStorageMultisampleAdvancedAMD = caps.get(1056);
+ glNamedRenderbufferStorageMultisampleAdvancedAMD = caps.get(1057);
+ glUniform1i64NV = caps.get(1058);
+ glUniform2i64NV = caps.get(1059);
+ glUniform3i64NV = caps.get(1060);
+ glUniform4i64NV = caps.get(1061);
+ glUniform1i64vNV = caps.get(1062);
+ glUniform2i64vNV = caps.get(1063);
+ glUniform3i64vNV = caps.get(1064);
+ glUniform4i64vNV = caps.get(1065);
+ glUniform1ui64NV = caps.get(1066);
+ glUniform2ui64NV = caps.get(1067);
+ glUniform3ui64NV = caps.get(1068);
+ glUniform4ui64NV = caps.get(1069);
+ glUniform1ui64vNV = caps.get(1070);
+ glUniform2ui64vNV = caps.get(1071);
+ glUniform3ui64vNV = caps.get(1072);
+ glUniform4ui64vNV = caps.get(1073);
+ glGetUniformi64vNV = caps.get(1074);
+ glGetUniformui64vNV = caps.get(1075);
+ glProgramUniform1i64NV = caps.get(1076);
+ glProgramUniform2i64NV = caps.get(1077);
+ glProgramUniform3i64NV = caps.get(1078);
+ glProgramUniform4i64NV = caps.get(1079);
+ glProgramUniform1i64vNV = caps.get(1080);
+ glProgramUniform2i64vNV = caps.get(1081);
+ glProgramUniform3i64vNV = caps.get(1082);
+ glProgramUniform4i64vNV = caps.get(1083);
+ glProgramUniform1ui64NV = caps.get(1084);
+ glProgramUniform2ui64NV = caps.get(1085);
+ glProgramUniform3ui64NV = caps.get(1086);
+ glProgramUniform4ui64NV = caps.get(1087);
+ glProgramUniform1ui64vNV = caps.get(1088);
+ glProgramUniform2ui64vNV = caps.get(1089);
+ glProgramUniform3ui64vNV = caps.get(1090);
+ glProgramUniform4ui64vNV = caps.get(1091);
+ glVertexAttribParameteriAMD = caps.get(1092);
+ glQueryObjectParameteruiAMD = caps.get(1093);
+ glGetPerfMonitorGroupsAMD = caps.get(1094);
+ glGetPerfMonitorCountersAMD = caps.get(1095);
+ glGetPerfMonitorGroupStringAMD = caps.get(1096);
+ glGetPerfMonitorCounterStringAMD = caps.get(1097);
+ glGetPerfMonitorCounterInfoAMD = caps.get(1098);
+ glGenPerfMonitorsAMD = caps.get(1099);
+ glDeletePerfMonitorsAMD = caps.get(1100);
+ glSelectPerfMonitorCountersAMD = caps.get(1101);
+ glBeginPerfMonitorAMD = caps.get(1102);
+ glEndPerfMonitorAMD = caps.get(1103);
+ glGetPerfMonitorCounterDataAMD = caps.get(1104);
+ glSetMultisamplefvAMD = caps.get(1105);
+ glTexStorageSparseAMD = caps.get(1106);
+ glTextureStorageSparseAMD = caps.get(1107);
+ glStencilOpValueAMD = caps.get(1108);
+ glTessellationFactorAMD = caps.get(1109);
+ glTessellationModeAMD = caps.get(1110);
+ glGetTextureHandleARB = caps.get(1111);
+ glGetTextureSamplerHandleARB = caps.get(1112);
+ glMakeTextureHandleResidentARB = caps.get(1113);
+ glMakeTextureHandleNonResidentARB = caps.get(1114);
+ glGetImageHandleARB = caps.get(1115);
+ glMakeImageHandleResidentARB = caps.get(1116);
+ glMakeImageHandleNonResidentARB = caps.get(1117);
+ glUniformHandleui64ARB = caps.get(1118);
+ glUniformHandleui64vARB = caps.get(1119);
+ glProgramUniformHandleui64ARB = caps.get(1120);
+ glProgramUniformHandleui64vARB = caps.get(1121);
+ glIsTextureHandleResidentARB = caps.get(1122);
+ glIsImageHandleResidentARB = caps.get(1123);
+ glVertexAttribL1ui64ARB = caps.get(1124);
+ glVertexAttribL1ui64vARB = caps.get(1125);
+ glGetVertexAttribLui64vARB = caps.get(1126);
+ glNamedBufferStorageEXT = caps.get(1127);
+ glCreateSyncFromCLeventARB = caps.get(1128);
+ glClearNamedBufferDataEXT = caps.get(1129);
+ glClearNamedBufferSubDataEXT = caps.get(1130);
+ glClampColorARB = caps.get(1131);
+ glDispatchComputeGroupSizeARB = caps.get(1132);
+ glDebugMessageControlARB = caps.get(1133);
+ glDebugMessageInsertARB = caps.get(1134);
+ glDebugMessageCallbackARB = caps.get(1135);
+ glGetDebugMessageLogARB = caps.get(1136);
+ glDrawBuffersARB = caps.get(1137);
+ glBlendEquationiARB = caps.get(1138);
+ glBlendEquationSeparateiARB = caps.get(1139);
+ glBlendFunciARB = caps.get(1140);
+ glBlendFuncSeparateiARB = caps.get(1141);
+ glDrawArraysInstancedARB = caps.get(1142);
+ glDrawElementsInstancedARB = caps.get(1143);
+ glPrimitiveBoundingBoxARB = caps.get(1144);
+ glNamedFramebufferParameteriEXT = caps.get(1145);
+ glGetNamedFramebufferParameterivEXT = caps.get(1146);
+ glProgramParameteriARB = caps.get(1147);
+ glFramebufferTextureARB = caps.get(1148);
+ glFramebufferTextureLayerARB = caps.get(1149);
+ glFramebufferTextureFaceARB = caps.get(1150);
+ glSpecializeShaderARB = caps.get(1151);
+ glProgramUniform1dEXT = caps.get(1152);
+ glProgramUniform2dEXT = caps.get(1153);
+ glProgramUniform3dEXT = caps.get(1154);
+ glProgramUniform4dEXT = caps.get(1155);
+ glProgramUniform1dvEXT = caps.get(1156);
+ glProgramUniform2dvEXT = caps.get(1157);
+ glProgramUniform3dvEXT = caps.get(1158);
+ glProgramUniform4dvEXT = caps.get(1159);
+ glProgramUniformMatrix2dvEXT = caps.get(1160);
+ glProgramUniformMatrix3dvEXT = caps.get(1161);
+ glProgramUniformMatrix4dvEXT = caps.get(1162);
+ glProgramUniformMatrix2x3dvEXT = caps.get(1163);
+ glProgramUniformMatrix2x4dvEXT = caps.get(1164);
+ glProgramUniformMatrix3x2dvEXT = caps.get(1165);
+ glProgramUniformMatrix3x4dvEXT = caps.get(1166);
+ glProgramUniformMatrix4x2dvEXT = caps.get(1167);
+ glProgramUniformMatrix4x3dvEXT = caps.get(1168);
+ glUniform1i64ARB = caps.get(1169);
+ glUniform1i64vARB = caps.get(1170);
+ glProgramUniform1i64ARB = caps.get(1171);
+ glProgramUniform1i64vARB = caps.get(1172);
+ glUniform2i64ARB = caps.get(1173);
+ glUniform2i64vARB = caps.get(1174);
+ glProgramUniform2i64ARB = caps.get(1175);
+ glProgramUniform2i64vARB = caps.get(1176);
+ glUniform3i64ARB = caps.get(1177);
+ glUniform3i64vARB = caps.get(1178);
+ glProgramUniform3i64ARB = caps.get(1179);
+ glProgramUniform3i64vARB = caps.get(1180);
+ glUniform4i64ARB = caps.get(1181);
+ glUniform4i64vARB = caps.get(1182);
+ glProgramUniform4i64ARB = caps.get(1183);
+ glProgramUniform4i64vARB = caps.get(1184);
+ glUniform1ui64ARB = caps.get(1185);
+ glUniform1ui64vARB = caps.get(1186);
+ glProgramUniform1ui64ARB = caps.get(1187);
+ glProgramUniform1ui64vARB = caps.get(1188);
+ glUniform2ui64ARB = caps.get(1189);
+ glUniform2ui64vARB = caps.get(1190);
+ glProgramUniform2ui64ARB = caps.get(1191);
+ glProgramUniform2ui64vARB = caps.get(1192);
+ glUniform3ui64ARB = caps.get(1193);
+ glUniform3ui64vARB = caps.get(1194);
+ glProgramUniform3ui64ARB = caps.get(1195);
+ glProgramUniform3ui64vARB = caps.get(1196);
+ glUniform4ui64ARB = caps.get(1197);
+ glUniform4ui64vARB = caps.get(1198);
+ glProgramUniform4ui64ARB = caps.get(1199);
+ glProgramUniform4ui64vARB = caps.get(1200);
+ glGetUniformi64vARB = caps.get(1201);
+ glGetUniformui64vARB = caps.get(1202);
+ glGetnUniformi64vARB = caps.get(1203);
+ glGetnUniformui64vARB = caps.get(1204);
+ glColorTable = caps.get(1205);
+ glCopyColorTable = caps.get(1206);
+ glColorTableParameteriv = caps.get(1207);
+ glColorTableParameterfv = caps.get(1208);
+ glGetColorTable = caps.get(1209);
+ glGetColorTableParameteriv = caps.get(1210);
+ glGetColorTableParameterfv = caps.get(1211);
+ glColorSubTable = caps.get(1212);
+ glCopyColorSubTable = caps.get(1213);
+ glConvolutionFilter1D = caps.get(1214);
+ glConvolutionFilter2D = caps.get(1215);
+ glCopyConvolutionFilter1D = caps.get(1216);
+ glCopyConvolutionFilter2D = caps.get(1217);
+ glGetConvolutionFilter = caps.get(1218);
+ glSeparableFilter2D = caps.get(1219);
+ glGetSeparableFilter = caps.get(1220);
+ glConvolutionParameteri = caps.get(1221);
+ glConvolutionParameteriv = caps.get(1222);
+ glConvolutionParameterf = caps.get(1223);
+ glConvolutionParameterfv = caps.get(1224);
+ glGetConvolutionParameteriv = caps.get(1225);
+ glGetConvolutionParameterfv = caps.get(1226);
+ glHistogram = caps.get(1227);
+ glResetHistogram = caps.get(1228);
+ glGetHistogram = caps.get(1229);
+ glGetHistogramParameteriv = caps.get(1230);
+ glGetHistogramParameterfv = caps.get(1231);
+ glMinmax = caps.get(1232);
+ glResetMinmax = caps.get(1233);
+ glGetMinmax = caps.get(1234);
+ glGetMinmaxParameteriv = caps.get(1235);
+ glGetMinmaxParameterfv = caps.get(1236);
+ glMultiDrawArraysIndirectCountARB = caps.get(1237);
+ glMultiDrawElementsIndirectCountARB = caps.get(1238);
+ glVertexAttribDivisorARB = caps.get(1239);
+ glVertexArrayVertexAttribDivisorEXT = caps.get(1240);
+ glCurrentPaletteMatrixARB = caps.get(1241);
+ glMatrixIndexuivARB = caps.get(1242);
+ glMatrixIndexubvARB = caps.get(1243);
+ glMatrixIndexusvARB = caps.get(1244);
+ glMatrixIndexPointerARB = caps.get(1245);
+ glSampleCoverageARB = caps.get(1246);
+ glActiveTextureARB = caps.get(1247);
+ glClientActiveTextureARB = caps.get(1248);
+ glMultiTexCoord1fARB = caps.get(1249);
+ glMultiTexCoord1sARB = caps.get(1250);
+ glMultiTexCoord1iARB = caps.get(1251);
+ glMultiTexCoord1dARB = caps.get(1252);
+ glMultiTexCoord1fvARB = caps.get(1253);
+ glMultiTexCoord1svARB = caps.get(1254);
+ glMultiTexCoord1ivARB = caps.get(1255);
+ glMultiTexCoord1dvARB = caps.get(1256);
+ glMultiTexCoord2fARB = caps.get(1257);
+ glMultiTexCoord2sARB = caps.get(1258);
+ glMultiTexCoord2iARB = caps.get(1259);
+ glMultiTexCoord2dARB = caps.get(1260);
+ glMultiTexCoord2fvARB = caps.get(1261);
+ glMultiTexCoord2svARB = caps.get(1262);
+ glMultiTexCoord2ivARB = caps.get(1263);
+ glMultiTexCoord2dvARB = caps.get(1264);
+ glMultiTexCoord3fARB = caps.get(1265);
+ glMultiTexCoord3sARB = caps.get(1266);
+ glMultiTexCoord3iARB = caps.get(1267);
+ glMultiTexCoord3dARB = caps.get(1268);
+ glMultiTexCoord3fvARB = caps.get(1269);
+ glMultiTexCoord3svARB = caps.get(1270);
+ glMultiTexCoord3ivARB = caps.get(1271);
+ glMultiTexCoord3dvARB = caps.get(1272);
+ glMultiTexCoord4fARB = caps.get(1273);
+ glMultiTexCoord4sARB = caps.get(1274);
+ glMultiTexCoord4iARB = caps.get(1275);
+ glMultiTexCoord4dARB = caps.get(1276);
+ glMultiTexCoord4fvARB = caps.get(1277);
+ glMultiTexCoord4svARB = caps.get(1278);
+ glMultiTexCoord4ivARB = caps.get(1279);
+ glMultiTexCoord4dvARB = caps.get(1280);
+ glGenQueriesARB = caps.get(1281);
+ glDeleteQueriesARB = caps.get(1282);
+ glIsQueryARB = caps.get(1283);
+ glBeginQueryARB = caps.get(1284);
+ glEndQueryARB = caps.get(1285);
+ glGetQueryivARB = caps.get(1286);
+ glGetQueryObjectivARB = caps.get(1287);
+ glGetQueryObjectuivARB = caps.get(1288);
+ glMaxShaderCompilerThreadsARB = caps.get(1289);
+ glPointParameterfARB = caps.get(1290);
+ glPointParameterfvARB = caps.get(1291);
+ glGetGraphicsResetStatusARB = caps.get(1292);
+ glGetnMapdvARB = caps.get(1293);
+ glGetnMapfvARB = caps.get(1294);
+ glGetnMapivARB = caps.get(1295);
+ glGetnPixelMapfvARB = caps.get(1296);
+ glGetnPixelMapuivARB = caps.get(1297);
+ glGetnPixelMapusvARB = caps.get(1298);
+ glGetnPolygonStippleARB = caps.get(1299);
+ glGetnTexImageARB = caps.get(1300);
+ glReadnPixelsARB = caps.get(1301);
+ glGetnColorTableARB = caps.get(1302);
+ glGetnConvolutionFilterARB = caps.get(1303);
+ glGetnSeparableFilterARB = caps.get(1304);
+ glGetnHistogramARB = caps.get(1305);
+ glGetnMinmaxARB = caps.get(1306);
+ glGetnCompressedTexImageARB = caps.get(1307);
+ glGetnUniformfvARB = caps.get(1308);
+ glGetnUniformivARB = caps.get(1309);
+ glGetnUniformuivARB = caps.get(1310);
+ glGetnUniformdvARB = caps.get(1311);
+ glFramebufferSampleLocationsfvARB = caps.get(1312);
+ glNamedFramebufferSampleLocationsfvARB = caps.get(1313);
+ glEvaluateDepthValuesARB = caps.get(1314);
+ glMinSampleShadingARB = caps.get(1315);
+ glDeleteObjectARB = caps.get(1316);
+ glGetHandleARB = caps.get(1317);
+ glDetachObjectARB = caps.get(1318);
+ glCreateShaderObjectARB = caps.get(1319);
+ glShaderSourceARB = caps.get(1320);
+ glCompileShaderARB = caps.get(1321);
+ glCreateProgramObjectARB = caps.get(1322);
+ glAttachObjectARB = caps.get(1323);
+ glLinkProgramARB = caps.get(1324);
+ glUseProgramObjectARB = caps.get(1325);
+ glValidateProgramARB = caps.get(1326);
+ glUniform1fARB = caps.get(1327);
+ glUniform2fARB = caps.get(1328);
+ glUniform3fARB = caps.get(1329);
+ glUniform4fARB = caps.get(1330);
+ glUniform1iARB = caps.get(1331);
+ glUniform2iARB = caps.get(1332);
+ glUniform3iARB = caps.get(1333);
+ glUniform4iARB = caps.get(1334);
+ glUniform1fvARB = caps.get(1335);
+ glUniform2fvARB = caps.get(1336);
+ glUniform3fvARB = caps.get(1337);
+ glUniform4fvARB = caps.get(1338);
+ glUniform1ivARB = caps.get(1339);
+ glUniform2ivARB = caps.get(1340);
+ glUniform3ivARB = caps.get(1341);
+ glUniform4ivARB = caps.get(1342);
+ glUniformMatrix2fvARB = caps.get(1343);
+ glUniformMatrix3fvARB = caps.get(1344);
+ glUniformMatrix4fvARB = caps.get(1345);
+ glGetObjectParameterfvARB = caps.get(1346);
+ glGetObjectParameterivARB = caps.get(1347);
+ glGetInfoLogARB = caps.get(1348);
+ glGetAttachedObjectsARB = caps.get(1349);
+ glGetUniformLocationARB = caps.get(1350);
+ glGetActiveUniformARB = caps.get(1351);
+ glGetUniformfvARB = caps.get(1352);
+ glGetUniformivARB = caps.get(1353);
+ glGetShaderSourceARB = caps.get(1354);
+ glNamedStringARB = caps.get(1355);
+ glDeleteNamedStringARB = caps.get(1356);
+ glCompileShaderIncludeARB = caps.get(1357);
+ glIsNamedStringARB = caps.get(1358);
+ glGetNamedStringARB = caps.get(1359);
+ glGetNamedStringivARB = caps.get(1360);
+ glBufferPageCommitmentARB = caps.get(1361);
+ glNamedBufferPageCommitmentEXT = caps.get(1362);
+ glNamedBufferPageCommitmentARB = caps.get(1363);
+ glTexPageCommitmentARB = caps.get(1364);
+ glTexturePageCommitmentEXT = caps.get(1365);
+ glTexBufferARB = caps.get(1366);
+ glTextureBufferRangeEXT = caps.get(1367);
+ glCompressedTexImage3DARB = caps.get(1368);
+ glCompressedTexImage2DARB = caps.get(1369);
+ glCompressedTexImage1DARB = caps.get(1370);
+ glCompressedTexSubImage3DARB = caps.get(1371);
+ glCompressedTexSubImage2DARB = caps.get(1372);
+ glCompressedTexSubImage1DARB = caps.get(1373);
+ glGetCompressedTexImageARB = caps.get(1374);
+ glTextureStorage1DEXT = caps.get(1375);
+ glTextureStorage2DEXT = caps.get(1376);
+ glTextureStorage3DEXT = caps.get(1377);
+ glTextureStorage2DMultisampleEXT = caps.get(1378);
+ glTextureStorage3DMultisampleEXT = caps.get(1379);
+ glLoadTransposeMatrixfARB = caps.get(1380);
+ glLoadTransposeMatrixdARB = caps.get(1381);
+ glMultTransposeMatrixfARB = caps.get(1382);
+ glMultTransposeMatrixdARB = caps.get(1383);
+ glVertexArrayVertexAttribLOffsetEXT = caps.get(1384);
+ glVertexArrayBindVertexBufferEXT = caps.get(1385);
+ glVertexArrayVertexAttribFormatEXT = caps.get(1386);
+ glVertexArrayVertexAttribIFormatEXT = caps.get(1387);
+ glVertexArrayVertexAttribLFormatEXT = caps.get(1388);
+ glVertexArrayVertexAttribBindingEXT = caps.get(1389);
+ glVertexArrayVertexBindingDivisorEXT = caps.get(1390);
+ glWeightfvARB = caps.get(1391);
+ glWeightbvARB = caps.get(1392);
+ glWeightubvARB = caps.get(1393);
+ glWeightsvARB = caps.get(1394);
+ glWeightusvARB = caps.get(1395);
+ glWeightivARB = caps.get(1396);
+ glWeightuivARB = caps.get(1397);
+ glWeightdvARB = caps.get(1398);
+ glWeightPointerARB = caps.get(1399);
+ glVertexBlendARB = caps.get(1400);
+ glBindBufferARB = caps.get(1401);
+ glDeleteBuffersARB = caps.get(1402);
+ glGenBuffersARB = caps.get(1403);
+ glIsBufferARB = caps.get(1404);
+ glBufferDataARB = caps.get(1405);
+ glBufferSubDataARB = caps.get(1406);
+ glGetBufferSubDataARB = caps.get(1407);
+ glMapBufferARB = caps.get(1408);
+ glUnmapBufferARB = caps.get(1409);
+ glGetBufferParameterivARB = caps.get(1410);
+ glGetBufferPointervARB = caps.get(1411);
+ glVertexAttrib1sARB = caps.get(1412);
+ glVertexAttrib1fARB = caps.get(1413);
+ glVertexAttrib1dARB = caps.get(1414);
+ glVertexAttrib2sARB = caps.get(1415);
+ glVertexAttrib2fARB = caps.get(1416);
+ glVertexAttrib2dARB = caps.get(1417);
+ glVertexAttrib3sARB = caps.get(1418);
+ glVertexAttrib3fARB = caps.get(1419);
+ glVertexAttrib3dARB = caps.get(1420);
+ glVertexAttrib4sARB = caps.get(1421);
+ glVertexAttrib4fARB = caps.get(1422);
+ glVertexAttrib4dARB = caps.get(1423);
+ glVertexAttrib4NubARB = caps.get(1424);
+ glVertexAttrib1svARB = caps.get(1425);
+ glVertexAttrib1fvARB = caps.get(1426);
+ glVertexAttrib1dvARB = caps.get(1427);
+ glVertexAttrib2svARB = caps.get(1428);
+ glVertexAttrib2fvARB = caps.get(1429);
+ glVertexAttrib2dvARB = caps.get(1430);
+ glVertexAttrib3svARB = caps.get(1431);
+ glVertexAttrib3fvARB = caps.get(1432);
+ glVertexAttrib3dvARB = caps.get(1433);
+ glVertexAttrib4fvARB = caps.get(1434);
+ glVertexAttrib4bvARB = caps.get(1435);
+ glVertexAttrib4svARB = caps.get(1436);
+ glVertexAttrib4ivARB = caps.get(1437);
+ glVertexAttrib4ubvARB = caps.get(1438);
+ glVertexAttrib4usvARB = caps.get(1439);
+ glVertexAttrib4uivARB = caps.get(1440);
+ glVertexAttrib4dvARB = caps.get(1441);
+ glVertexAttrib4NbvARB = caps.get(1442);
+ glVertexAttrib4NsvARB = caps.get(1443);
+ glVertexAttrib4NivARB = caps.get(1444);
+ glVertexAttrib4NubvARB = caps.get(1445);
+ glVertexAttrib4NusvARB = caps.get(1446);
+ glVertexAttrib4NuivARB = caps.get(1447);
+ glVertexAttribPointerARB = caps.get(1448);
+ glEnableVertexAttribArrayARB = caps.get(1449);
+ glDisableVertexAttribArrayARB = caps.get(1450);
+ glProgramStringARB = caps.get(1451);
+ glBindProgramARB = caps.get(1452);
+ glDeleteProgramsARB = caps.get(1453);
+ glGenProgramsARB = caps.get(1454);
+ glProgramEnvParameter4dARB = caps.get(1455);
+ glProgramEnvParameter4dvARB = caps.get(1456);
+ glProgramEnvParameter4fARB = caps.get(1457);
+ glProgramEnvParameter4fvARB = caps.get(1458);
+ glProgramLocalParameter4dARB = caps.get(1459);
+ glProgramLocalParameter4dvARB = caps.get(1460);
+ glProgramLocalParameter4fARB = caps.get(1461);
+ glProgramLocalParameter4fvARB = caps.get(1462);
+ glGetProgramEnvParameterfvARB = caps.get(1463);
+ glGetProgramEnvParameterdvARB = caps.get(1464);
+ glGetProgramLocalParameterfvARB = caps.get(1465);
+ glGetProgramLocalParameterdvARB = caps.get(1466);
+ glGetProgramivARB = caps.get(1467);
+ glGetProgramStringARB = caps.get(1468);
+ glGetVertexAttribfvARB = caps.get(1469);
+ glGetVertexAttribdvARB = caps.get(1470);
+ glGetVertexAttribivARB = caps.get(1471);
+ glGetVertexAttribPointervARB = caps.get(1472);
+ glIsProgramARB = caps.get(1473);
+ glBindAttribLocationARB = caps.get(1474);
+ glGetActiveAttribARB = caps.get(1475);
+ glGetAttribLocationARB = caps.get(1476);
+ glWindowPos2iARB = caps.get(1477);
+ glWindowPos2sARB = caps.get(1478);
+ glWindowPos2fARB = caps.get(1479);
+ glWindowPos2dARB = caps.get(1480);
+ glWindowPos2ivARB = caps.get(1481);
+ glWindowPos2svARB = caps.get(1482);
+ glWindowPos2fvARB = caps.get(1483);
+ glWindowPos2dvARB = caps.get(1484);
+ glWindowPos3iARB = caps.get(1485);
+ glWindowPos3sARB = caps.get(1486);
+ glWindowPos3fARB = caps.get(1487);
+ glWindowPos3dARB = caps.get(1488);
+ glWindowPos3ivARB = caps.get(1489);
+ glWindowPos3svARB = caps.get(1490);
+ glWindowPos3fvARB = caps.get(1491);
+ glWindowPos3dvARB = caps.get(1492);
+ glUniformBufferEXT = caps.get(1493);
+ glGetUniformBufferSizeEXT = caps.get(1494);
+ glGetUniformOffsetEXT = caps.get(1495);
+ glBlendColorEXT = caps.get(1496);
+ glBlendEquationSeparateEXT = caps.get(1497);
+ glBlendFuncSeparateEXT = caps.get(1498);
+ glBlendEquationEXT = caps.get(1499);
+ glLockArraysEXT = caps.get(1500);
+ glUnlockArraysEXT = caps.get(1501);
+ glLabelObjectEXT = caps.get(1502);
+ glGetObjectLabelEXT = caps.get(1503);
+ glInsertEventMarkerEXT = caps.get(1504);
+ glPushGroupMarkerEXT = caps.get(1505);
+ glPopGroupMarkerEXT = caps.get(1506);
+ glDepthBoundsEXT = caps.get(1507);
+ glClientAttribDefaultEXT = caps.get(1508);
+ glPushClientAttribDefaultEXT = caps.get(1509);
+ glMatrixLoadfEXT = caps.get(1510);
+ glMatrixLoaddEXT = caps.get(1511);
+ glMatrixMultfEXT = caps.get(1512);
+ glMatrixMultdEXT = caps.get(1513);
+ glMatrixLoadIdentityEXT = caps.get(1514);
+ glMatrixRotatefEXT = caps.get(1515);
+ glMatrixRotatedEXT = caps.get(1516);
+ glMatrixScalefEXT = caps.get(1517);
+ glMatrixScaledEXT = caps.get(1518);
+ glMatrixTranslatefEXT = caps.get(1519);
+ glMatrixTranslatedEXT = caps.get(1520);
+ glMatrixOrthoEXT = caps.get(1521);
+ glMatrixFrustumEXT = caps.get(1522);
+ glMatrixPushEXT = caps.get(1523);
+ glMatrixPopEXT = caps.get(1524);
+ glTextureParameteriEXT = caps.get(1525);
+ glTextureParameterivEXT = caps.get(1526);
+ glTextureParameterfEXT = caps.get(1527);
+ glTextureParameterfvEXT = caps.get(1528);
+ glTextureImage1DEXT = caps.get(1529);
+ glTextureImage2DEXT = caps.get(1530);
+ glTextureSubImage1DEXT = caps.get(1531);
+ glTextureSubImage2DEXT = caps.get(1532);
+ glCopyTextureImage1DEXT = caps.get(1533);
+ glCopyTextureImage2DEXT = caps.get(1534);
+ glCopyTextureSubImage1DEXT = caps.get(1535);
+ glCopyTextureSubImage2DEXT = caps.get(1536);
+ glGetTextureImageEXT = caps.get(1537);
+ glGetTextureParameterfvEXT = caps.get(1538);
+ glGetTextureParameterivEXT = caps.get(1539);
+ glGetTextureLevelParameterfvEXT = caps.get(1540);
+ glGetTextureLevelParameterivEXT = caps.get(1541);
+ glTextureImage3DEXT = caps.get(1542);
+ glTextureSubImage3DEXT = caps.get(1543);
+ glCopyTextureSubImage3DEXT = caps.get(1544);
+ glBindMultiTextureEXT = caps.get(1545);
+ glMultiTexCoordPointerEXT = caps.get(1546);
+ glMultiTexEnvfEXT = caps.get(1547);
+ glMultiTexEnvfvEXT = caps.get(1548);
+ glMultiTexEnviEXT = caps.get(1549);
+ glMultiTexEnvivEXT = caps.get(1550);
+ glMultiTexGendEXT = caps.get(1551);
+ glMultiTexGendvEXT = caps.get(1552);
+ glMultiTexGenfEXT = caps.get(1553);
+ glMultiTexGenfvEXT = caps.get(1554);
+ glMultiTexGeniEXT = caps.get(1555);
+ glMultiTexGenivEXT = caps.get(1556);
+ glGetMultiTexEnvfvEXT = caps.get(1557);
+ glGetMultiTexEnvivEXT = caps.get(1558);
+ glGetMultiTexGendvEXT = caps.get(1559);
+ glGetMultiTexGenfvEXT = caps.get(1560);
+ glGetMultiTexGenivEXT = caps.get(1561);
+ glMultiTexParameteriEXT = caps.get(1562);
+ glMultiTexParameterivEXT = caps.get(1563);
+ glMultiTexParameterfEXT = caps.get(1564);
+ glMultiTexParameterfvEXT = caps.get(1565);
+ glMultiTexImage1DEXT = caps.get(1566);
+ glMultiTexImage2DEXT = caps.get(1567);
+ glMultiTexSubImage1DEXT = caps.get(1568);
+ glMultiTexSubImage2DEXT = caps.get(1569);
+ glCopyMultiTexImage1DEXT = caps.get(1570);
+ glCopyMultiTexImage2DEXT = caps.get(1571);
+ glCopyMultiTexSubImage1DEXT = caps.get(1572);
+ glCopyMultiTexSubImage2DEXT = caps.get(1573);
+ glGetMultiTexImageEXT = caps.get(1574);
+ glGetMultiTexParameterfvEXT = caps.get(1575);
+ glGetMultiTexParameterivEXT = caps.get(1576);
+ glGetMultiTexLevelParameterfvEXT = caps.get(1577);
+ glGetMultiTexLevelParameterivEXT = caps.get(1578);
+ glMultiTexImage3DEXT = caps.get(1579);
+ glMultiTexSubImage3DEXT = caps.get(1580);
+ glCopyMultiTexSubImage3DEXT = caps.get(1581);
+ glEnableClientStateIndexedEXT = caps.get(1582);
+ glDisableClientStateIndexedEXT = caps.get(1583);
+ glEnableClientStateiEXT = caps.get(1584);
+ glDisableClientStateiEXT = caps.get(1585);
+ glGetFloatIndexedvEXT = caps.get(1586);
+ glGetDoubleIndexedvEXT = caps.get(1587);
+ glGetPointerIndexedvEXT = caps.get(1588);
+ glGetFloati_vEXT = caps.get(1589);
+ glGetDoublei_vEXT = caps.get(1590);
+ glGetPointeri_vEXT = caps.get(1591);
+ glEnableIndexedEXT = caps.get(1592);
+ glDisableIndexedEXT = caps.get(1593);
+ glIsEnabledIndexedEXT = caps.get(1594);
+ glGetIntegerIndexedvEXT = caps.get(1595);
+ glGetBooleanIndexedvEXT = caps.get(1596);
+ glNamedProgramStringEXT = caps.get(1597);
+ glNamedProgramLocalParameter4dEXT = caps.get(1598);
+ glNamedProgramLocalParameter4dvEXT = caps.get(1599);
+ glNamedProgramLocalParameter4fEXT = caps.get(1600);
+ glNamedProgramLocalParameter4fvEXT = caps.get(1601);
+ glGetNamedProgramLocalParameterdvEXT = caps.get(1602);
+ glGetNamedProgramLocalParameterfvEXT = caps.get(1603);
+ glGetNamedProgramivEXT = caps.get(1604);
+ glGetNamedProgramStringEXT = caps.get(1605);
+ glCompressedTextureImage3DEXT = caps.get(1606);
+ glCompressedTextureImage2DEXT = caps.get(1607);
+ glCompressedTextureImage1DEXT = caps.get(1608);
+ glCompressedTextureSubImage3DEXT = caps.get(1609);
+ glCompressedTextureSubImage2DEXT = caps.get(1610);
+ glCompressedTextureSubImage1DEXT = caps.get(1611);
+ glGetCompressedTextureImageEXT = caps.get(1612);
+ glCompressedMultiTexImage3DEXT = caps.get(1613);
+ glCompressedMultiTexImage2DEXT = caps.get(1614);
+ glCompressedMultiTexImage1DEXT = caps.get(1615);
+ glCompressedMultiTexSubImage3DEXT = caps.get(1616);
+ glCompressedMultiTexSubImage2DEXT = caps.get(1617);
+ glCompressedMultiTexSubImage1DEXT = caps.get(1618);
+ glGetCompressedMultiTexImageEXT = caps.get(1619);
+ glMatrixLoadTransposefEXT = caps.get(1620);
+ glMatrixLoadTransposedEXT = caps.get(1621);
+ glMatrixMultTransposefEXT = caps.get(1622);
+ glMatrixMultTransposedEXT = caps.get(1623);
+ glNamedBufferDataEXT = caps.get(1624);
+ glNamedBufferSubDataEXT = caps.get(1625);
+ glMapNamedBufferEXT = caps.get(1626);
+ glUnmapNamedBufferEXT = caps.get(1627);
+ glGetNamedBufferParameterivEXT = caps.get(1628);
+ glGetNamedBufferSubDataEXT = caps.get(1629);
+ glProgramUniform1fEXT = caps.get(1630);
+ glProgramUniform2fEXT = caps.get(1631);
+ glProgramUniform3fEXT = caps.get(1632);
+ glProgramUniform4fEXT = caps.get(1633);
+ glProgramUniform1iEXT = caps.get(1634);
+ glProgramUniform2iEXT = caps.get(1635);
+ glProgramUniform3iEXT = caps.get(1636);
+ glProgramUniform4iEXT = caps.get(1637);
+ glProgramUniform1fvEXT = caps.get(1638);
+ glProgramUniform2fvEXT = caps.get(1639);
+ glProgramUniform3fvEXT = caps.get(1640);
+ glProgramUniform4fvEXT = caps.get(1641);
+ glProgramUniform1ivEXT = caps.get(1642);
+ glProgramUniform2ivEXT = caps.get(1643);
+ glProgramUniform3ivEXT = caps.get(1644);
+ glProgramUniform4ivEXT = caps.get(1645);
+ glProgramUniformMatrix2fvEXT = caps.get(1646);
+ glProgramUniformMatrix3fvEXT = caps.get(1647);
+ glProgramUniformMatrix4fvEXT = caps.get(1648);
+ glProgramUniformMatrix2x3fvEXT = caps.get(1649);
+ glProgramUniformMatrix3x2fvEXT = caps.get(1650);
+ glProgramUniformMatrix2x4fvEXT = caps.get(1651);
+ glProgramUniformMatrix4x2fvEXT = caps.get(1652);
+ glProgramUniformMatrix3x4fvEXT = caps.get(1653);
+ glProgramUniformMatrix4x3fvEXT = caps.get(1654);
+ glTextureBufferEXT = caps.get(1655);
+ glMultiTexBufferEXT = caps.get(1656);
+ glTextureParameterIivEXT = caps.get(1657);
+ glTextureParameterIuivEXT = caps.get(1658);
+ glGetTextureParameterIivEXT = caps.get(1659);
+ glGetTextureParameterIuivEXT = caps.get(1660);
+ glMultiTexParameterIivEXT = caps.get(1661);
+ glMultiTexParameterIuivEXT = caps.get(1662);
+ glGetMultiTexParameterIivEXT = caps.get(1663);
+ glGetMultiTexParameterIuivEXT = caps.get(1664);
+ glProgramUniform1uiEXT = caps.get(1665);
+ glProgramUniform2uiEXT = caps.get(1666);
+ glProgramUniform3uiEXT = caps.get(1667);
+ glProgramUniform4uiEXT = caps.get(1668);
+ glProgramUniform1uivEXT = caps.get(1669);
+ glProgramUniform2uivEXT = caps.get(1670);
+ glProgramUniform3uivEXT = caps.get(1671);
+ glProgramUniform4uivEXT = caps.get(1672);
+ glNamedProgramLocalParameters4fvEXT = caps.get(1673);
+ glNamedProgramLocalParameterI4iEXT = caps.get(1674);
+ glNamedProgramLocalParameterI4ivEXT = caps.get(1675);
+ glNamedProgramLocalParametersI4ivEXT = caps.get(1676);
+ glNamedProgramLocalParameterI4uiEXT = caps.get(1677);
+ glNamedProgramLocalParameterI4uivEXT = caps.get(1678);
+ glNamedProgramLocalParametersI4uivEXT = caps.get(1679);
+ glGetNamedProgramLocalParameterIivEXT = caps.get(1680);
+ glGetNamedProgramLocalParameterIuivEXT = caps.get(1681);
+ glNamedRenderbufferStorageEXT = caps.get(1682);
+ glGetNamedRenderbufferParameterivEXT = caps.get(1683);
+ glNamedRenderbufferStorageMultisampleEXT = caps.get(1684);
+ glNamedRenderbufferStorageMultisampleCoverageEXT = caps.get(1685);
+ glCheckNamedFramebufferStatusEXT = caps.get(1686);
+ glNamedFramebufferTexture1DEXT = caps.get(1687);
+ glNamedFramebufferTexture2DEXT = caps.get(1688);
+ glNamedFramebufferTexture3DEXT = caps.get(1689);
+ glNamedFramebufferRenderbufferEXT = caps.get(1690);
+ glGetNamedFramebufferAttachmentParameterivEXT = caps.get(1691);
+ glGenerateTextureMipmapEXT = caps.get(1692);
+ glGenerateMultiTexMipmapEXT = caps.get(1693);
+ glFramebufferDrawBufferEXT = caps.get(1694);
+ glFramebufferDrawBuffersEXT = caps.get(1695);
+ glFramebufferReadBufferEXT = caps.get(1696);
+ glGetFramebufferParameterivEXT = caps.get(1697);
+ glNamedCopyBufferSubDataEXT = caps.get(1698);
+ glNamedFramebufferTextureEXT = caps.get(1699);
+ glNamedFramebufferTextureLayerEXT = caps.get(1700);
+ glNamedFramebufferTextureFaceEXT = caps.get(1701);
+ glTextureRenderbufferEXT = caps.get(1702);
+ glMultiTexRenderbufferEXT = caps.get(1703);
+ glVertexArrayVertexOffsetEXT = caps.get(1704);
+ glVertexArrayColorOffsetEXT = caps.get(1705);
+ glVertexArrayEdgeFlagOffsetEXT = caps.get(1706);
+ glVertexArrayIndexOffsetEXT = caps.get(1707);
+ glVertexArrayNormalOffsetEXT = caps.get(1708);
+ glVertexArrayTexCoordOffsetEXT = caps.get(1709);
+ glVertexArrayMultiTexCoordOffsetEXT = caps.get(1710);
+ glVertexArrayFogCoordOffsetEXT = caps.get(1711);
+ glVertexArraySecondaryColorOffsetEXT = caps.get(1712);
+ glVertexArrayVertexAttribOffsetEXT = caps.get(1713);
+ glVertexArrayVertexAttribIOffsetEXT = caps.get(1714);
+ glEnableVertexArrayEXT = caps.get(1715);
+ glDisableVertexArrayEXT = caps.get(1716);
+ glEnableVertexArrayAttribEXT = caps.get(1717);
+ glDisableVertexArrayAttribEXT = caps.get(1718);
+ glGetVertexArrayIntegervEXT = caps.get(1719);
+ glGetVertexArrayPointervEXT = caps.get(1720);
+ glGetVertexArrayIntegeri_vEXT = caps.get(1721);
+ glGetVertexArrayPointeri_vEXT = caps.get(1722);
+ glMapNamedBufferRangeEXT = caps.get(1723);
+ glFlushMappedNamedBufferRangeEXT = caps.get(1724);
+ glColorMaskIndexedEXT = caps.get(1725);
+ glDrawArraysInstancedEXT = caps.get(1726);
+ glDrawElementsInstancedEXT = caps.get(1727);
+ glEGLImageTargetTexStorageEXT = caps.get(1728);
+ glEGLImageTargetTextureStorageEXT = caps.get(1729);
+ glBufferStorageExternalEXT = caps.get(1730);
+ glNamedBufferStorageExternalEXT = caps.get(1731);
+ glBlitFramebufferEXT = caps.get(1732);
+ glRenderbufferStorageMultisampleEXT = caps.get(1733);
+ glIsRenderbufferEXT = caps.get(1734);
+ glBindRenderbufferEXT = caps.get(1735);
+ glDeleteRenderbuffersEXT = caps.get(1736);
+ glGenRenderbuffersEXT = caps.get(1737);
+ glRenderbufferStorageEXT = caps.get(1738);
+ glGetRenderbufferParameterivEXT = caps.get(1739);
+ glIsFramebufferEXT = caps.get(1740);
+ glBindFramebufferEXT = caps.get(1741);
+ glDeleteFramebuffersEXT = caps.get(1742);
+ glGenFramebuffersEXT = caps.get(1743);
+ glCheckFramebufferStatusEXT = caps.get(1744);
+ glFramebufferTexture1DEXT = caps.get(1745);
+ glFramebufferTexture2DEXT = caps.get(1746);
+ glFramebufferTexture3DEXT = caps.get(1747);
+ glFramebufferRenderbufferEXT = caps.get(1748);
+ glGetFramebufferAttachmentParameterivEXT = caps.get(1749);
+ glGenerateMipmapEXT = caps.get(1750);
+ glProgramParameteriEXT = caps.get(1751);
+ glFramebufferTextureEXT = caps.get(1752);
+ glFramebufferTextureLayerEXT = caps.get(1753);
+ glFramebufferTextureFaceEXT = caps.get(1754);
+ glProgramEnvParameters4fvEXT = caps.get(1755);
+ glProgramLocalParameters4fvEXT = caps.get(1756);
+ glVertexAttribI1iEXT = caps.get(1757);
+ glVertexAttribI2iEXT = caps.get(1758);
+ glVertexAttribI3iEXT = caps.get(1759);
+ glVertexAttribI4iEXT = caps.get(1760);
+ glVertexAttribI1uiEXT = caps.get(1761);
+ glVertexAttribI2uiEXT = caps.get(1762);
+ glVertexAttribI3uiEXT = caps.get(1763);
+ glVertexAttribI4uiEXT = caps.get(1764);
+ glVertexAttribI1ivEXT = caps.get(1765);
+ glVertexAttribI2ivEXT = caps.get(1766);
+ glVertexAttribI3ivEXT = caps.get(1767);
+ glVertexAttribI4ivEXT = caps.get(1768);
+ glVertexAttribI1uivEXT = caps.get(1769);
+ glVertexAttribI2uivEXT = caps.get(1770);
+ glVertexAttribI3uivEXT = caps.get(1771);
+ glVertexAttribI4uivEXT = caps.get(1772);
+ glVertexAttribI4bvEXT = caps.get(1773);
+ glVertexAttribI4svEXT = caps.get(1774);
+ glVertexAttribI4ubvEXT = caps.get(1775);
+ glVertexAttribI4usvEXT = caps.get(1776);
+ glVertexAttribIPointerEXT = caps.get(1777);
+ glGetVertexAttribIivEXT = caps.get(1778);
+ glGetVertexAttribIuivEXT = caps.get(1779);
+ glGetUniformuivEXT = caps.get(1780);
+ glBindFragDataLocationEXT = caps.get(1781);
+ glGetFragDataLocationEXT = caps.get(1782);
+ glUniform1uiEXT = caps.get(1783);
+ glUniform2uiEXT = caps.get(1784);
+ glUniform3uiEXT = caps.get(1785);
+ glUniform4uiEXT = caps.get(1786);
+ glUniform1uivEXT = caps.get(1787);
+ glUniform2uivEXT = caps.get(1788);
+ glUniform3uivEXT = caps.get(1789);
+ glUniform4uivEXT = caps.get(1790);
+ glGetUnsignedBytevEXT = caps.get(1791);
+ glGetUnsignedBytei_vEXT = caps.get(1792);
+ glDeleteMemoryObjectsEXT = caps.get(1793);
+ glIsMemoryObjectEXT = caps.get(1794);
+ glCreateMemoryObjectsEXT = caps.get(1795);
+ glMemoryObjectParameterivEXT = caps.get(1796);
+ glGetMemoryObjectParameterivEXT = caps.get(1797);
+ glTexStorageMem2DEXT = caps.get(1798);
+ glTexStorageMem2DMultisampleEXT = caps.get(1799);
+ glTexStorageMem3DEXT = caps.get(1800);
+ glTexStorageMem3DMultisampleEXT = caps.get(1801);
+ glBufferStorageMemEXT = caps.get(1802);
+ glTextureStorageMem2DEXT = caps.get(1803);
+ glTextureStorageMem2DMultisampleEXT = caps.get(1804);
+ glTextureStorageMem3DEXT = caps.get(1805);
+ glTextureStorageMem3DMultisampleEXT = caps.get(1806);
+ glNamedBufferStorageMemEXT = caps.get(1807);
+ glTexStorageMem1DEXT = caps.get(1808);
+ glTextureStorageMem1DEXT = caps.get(1809);
+ glImportMemoryFdEXT = caps.get(1810);
+ glImportMemoryWin32HandleEXT = caps.get(1811);
+ glImportMemoryWin32NameEXT = caps.get(1812);
+ glPointParameterfEXT = caps.get(1813);
+ glPointParameterfvEXT = caps.get(1814);
+ glPolygonOffsetClampEXT = caps.get(1815);
+ glProvokingVertexEXT = caps.get(1816);
+ glRasterSamplesEXT = caps.get(1817);
+ glSecondaryColor3bEXT = caps.get(1818);
+ glSecondaryColor3sEXT = caps.get(1819);
+ glSecondaryColor3iEXT = caps.get(1820);
+ glSecondaryColor3fEXT = caps.get(1821);
+ glSecondaryColor3dEXT = caps.get(1822);
+ glSecondaryColor3ubEXT = caps.get(1823);
+ glSecondaryColor3usEXT = caps.get(1824);
+ glSecondaryColor3uiEXT = caps.get(1825);
+ glSecondaryColor3bvEXT = caps.get(1826);
+ glSecondaryColor3svEXT = caps.get(1827);
+ glSecondaryColor3ivEXT = caps.get(1828);
+ glSecondaryColor3fvEXT = caps.get(1829);
+ glSecondaryColor3dvEXT = caps.get(1830);
+ glSecondaryColor3ubvEXT = caps.get(1831);
+ glSecondaryColor3usvEXT = caps.get(1832);
+ glSecondaryColor3uivEXT = caps.get(1833);
+ glSecondaryColorPointerEXT = caps.get(1834);
+ glGenSemaphoresEXT = caps.get(1835);
+ glDeleteSemaphoresEXT = caps.get(1836);
+ glIsSemaphoreEXT = caps.get(1837);
+ glSemaphoreParameterui64vEXT = caps.get(1838);
+ glGetSemaphoreParameterui64vEXT = caps.get(1839);
+ glWaitSemaphoreEXT = caps.get(1840);
+ glSignalSemaphoreEXT = caps.get(1841);
+ glImportSemaphoreFdEXT = caps.get(1842);
+ glImportSemaphoreWin32HandleEXT = caps.get(1843);
+ glImportSemaphoreWin32NameEXT = caps.get(1844);
+ glUseShaderProgramEXT = caps.get(1845);
+ glActiveProgramEXT = caps.get(1846);
+ glCreateShaderProgramEXT = caps.get(1847);
+ glFramebufferFetchBarrierEXT = caps.get(1848);
+ glBindImageTextureEXT = caps.get(1849);
+ glMemoryBarrierEXT = caps.get(1850);
+ glStencilClearTagEXT = caps.get(1851);
+ glActiveStencilFaceEXT = caps.get(1852);
+ glTexBufferEXT = caps.get(1853);
+ glClearColorIiEXT = caps.get(1854);
+ glClearColorIuiEXT = caps.get(1855);
+ glTexParameterIivEXT = caps.get(1856);
+ glTexParameterIuivEXT = caps.get(1857);
+ glGetTexParameterIivEXT = caps.get(1858);
+ glGetTexParameterIuivEXT = caps.get(1859);
+ glTexStorage1DEXT = caps.get(1860);
+ glTexStorage2DEXT = caps.get(1861);
+ glTexStorage3DEXT = caps.get(1862);
+ glGetQueryObjecti64vEXT = caps.get(1863);
+ glGetQueryObjectui64vEXT = caps.get(1864);
+ glBindBufferRangeEXT = caps.get(1865);
+ glBindBufferOffsetEXT = caps.get(1866);
+ glBindBufferBaseEXT = caps.get(1867);
+ glBeginTransformFeedbackEXT = caps.get(1868);
+ glEndTransformFeedbackEXT = caps.get(1869);
+ glTransformFeedbackVaryingsEXT = caps.get(1870);
+ glGetTransformFeedbackVaryingEXT = caps.get(1871);
+ glVertexAttribL1dEXT = caps.get(1872);
+ glVertexAttribL2dEXT = caps.get(1873);
+ glVertexAttribL3dEXT = caps.get(1874);
+ glVertexAttribL4dEXT = caps.get(1875);
+ glVertexAttribL1dvEXT = caps.get(1876);
+ glVertexAttribL2dvEXT = caps.get(1877);
+ glVertexAttribL3dvEXT = caps.get(1878);
+ glVertexAttribL4dvEXT = caps.get(1879);
+ glVertexAttribLPointerEXT = caps.get(1880);
+ glGetVertexAttribLdvEXT = caps.get(1881);
+ glAcquireKeyedMutexWin32EXT = caps.get(1882);
+ glReleaseKeyedMutexWin32EXT = caps.get(1883);
+ glWindowRectanglesEXT = caps.get(1884);
+ glImportSyncEXT = caps.get(1885);
+ glFrameTerminatorGREMEDY = caps.get(1886);
+ glStringMarkerGREMEDY = caps.get(1887);
+ glApplyFramebufferAttachmentCMAAINTEL = caps.get(1888);
+ glSyncTextureINTEL = caps.get(1889);
+ glUnmapTexture2DINTEL = caps.get(1890);
+ glMapTexture2DINTEL = caps.get(1891);
+ glBeginPerfQueryINTEL = caps.get(1892);
+ glCreatePerfQueryINTEL = caps.get(1893);
+ glDeletePerfQueryINTEL = caps.get(1894);
+ glEndPerfQueryINTEL = caps.get(1895);
+ glGetFirstPerfQueryIdINTEL = caps.get(1896);
+ glGetNextPerfQueryIdINTEL = caps.get(1897);
+ glGetPerfCounterInfoINTEL = caps.get(1898);
+ glGetPerfQueryDataINTEL = caps.get(1899);
+ glGetPerfQueryIdByNameINTEL = caps.get(1900);
+ glGetPerfQueryInfoINTEL = caps.get(1901);
+ glBlendBarrierKHR = caps.get(1902);
+ glMaxShaderCompilerThreadsKHR = caps.get(1903);
+ glFramebufferParameteriMESA = caps.get(1904);
+ glGetFramebufferParameterivMESA = caps.get(1905);
+ glAlphaToCoverageDitherControlNV = caps.get(1906);
+ glMultiDrawArraysIndirectBindlessNV = caps.get(1907);
+ glMultiDrawElementsIndirectBindlessNV = caps.get(1908);
+ glMultiDrawArraysIndirectBindlessCountNV = caps.get(1909);
+ glMultiDrawElementsIndirectBindlessCountNV = caps.get(1910);
+ glGetTextureHandleNV = caps.get(1911);
+ glGetTextureSamplerHandleNV = caps.get(1912);
+ glMakeTextureHandleResidentNV = caps.get(1913);
+ glMakeTextureHandleNonResidentNV = caps.get(1914);
+ glGetImageHandleNV = caps.get(1915);
+ glMakeImageHandleResidentNV = caps.get(1916);
+ glMakeImageHandleNonResidentNV = caps.get(1917);
+ glUniformHandleui64NV = caps.get(1918);
+ glUniformHandleui64vNV = caps.get(1919);
+ glProgramUniformHandleui64NV = caps.get(1920);
+ glProgramUniformHandleui64vNV = caps.get(1921);
+ glIsTextureHandleResidentNV = caps.get(1922);
+ glIsImageHandleResidentNV = caps.get(1923);
+ glBlendParameteriNV = caps.get(1924);
+ glBlendBarrierNV = caps.get(1925);
+ glViewportPositionWScaleNV = caps.get(1926);
+ glCreateStatesNV = caps.get(1927);
+ glDeleteStatesNV = caps.get(1928);
+ glIsStateNV = caps.get(1929);
+ glStateCaptureNV = caps.get(1930);
+ glGetCommandHeaderNV = caps.get(1931);
+ glGetStageIndexNV = caps.get(1932);
+ glDrawCommandsNV = caps.get(1933);
+ glDrawCommandsAddressNV = caps.get(1934);
+ glDrawCommandsStatesNV = caps.get(1935);
+ glDrawCommandsStatesAddressNV = caps.get(1936);
+ glCreateCommandListsNV = caps.get(1937);
+ glDeleteCommandListsNV = caps.get(1938);
+ glIsCommandListNV = caps.get(1939);
+ glListDrawCommandsStatesClientNV = caps.get(1940);
+ glCommandListSegmentsNV = caps.get(1941);
+ glCompileCommandListNV = caps.get(1942);
+ glCallCommandListNV = caps.get(1943);
+ glBeginConditionalRenderNV = caps.get(1944);
+ glEndConditionalRenderNV = caps.get(1945);
+ glSubpixelPrecisionBiasNV = caps.get(1946);
+ glConservativeRasterParameterfNV = caps.get(1947);
+ glConservativeRasterParameteriNV = caps.get(1948);
+ glCopyImageSubDataNV = caps.get(1949);
+ glDepthRangedNV = caps.get(1950);
+ glClearDepthdNV = caps.get(1951);
+ glDepthBoundsdNV = caps.get(1952);
+ glDrawTextureNV = caps.get(1953);
+ glDrawVkImageNV = caps.get(1954);
+ glGetVkProcAddrNV = caps.get(1955);
+ glWaitVkSemaphoreNV = caps.get(1956);
+ glSignalVkSemaphoreNV = caps.get(1957);
+ glSignalVkFenceNV = caps.get(1958);
+ glGetMultisamplefvNV = caps.get(1959);
+ glSampleMaskIndexedNV = caps.get(1960);
+ glTexRenderbufferNV = caps.get(1961);
+ glDeleteFencesNV = caps.get(1962);
+ glGenFencesNV = caps.get(1963);
+ glIsFenceNV = caps.get(1964);
+ glTestFenceNV = caps.get(1965);
+ glGetFenceivNV = caps.get(1966);
+ glFinishFenceNV = caps.get(1967);
+ glSetFenceNV = caps.get(1968);
+ glFragmentCoverageColorNV = caps.get(1969);
+ glCoverageModulationTableNV = caps.get(1970);
+ glGetCoverageModulationTableNV = caps.get(1971);
+ glCoverageModulationNV = caps.get(1972);
+ glRenderbufferStorageMultisampleCoverageNV = caps.get(1973);
+ glRenderGpuMaskNV = caps.get(1974);
+ glMulticastBufferSubDataNV = caps.get(1975);
+ glMulticastCopyBufferSubDataNV = caps.get(1976);
+ glMulticastCopyImageSubDataNV = caps.get(1977);
+ glMulticastBlitFramebufferNV = caps.get(1978);
+ glMulticastFramebufferSampleLocationsfvNV = caps.get(1979);
+ glMulticastBarrierNV = caps.get(1980);
+ glMulticastWaitSyncNV = caps.get(1981);
+ glMulticastGetQueryObjectivNV = caps.get(1982);
+ glMulticastGetQueryObjectuivNV = caps.get(1983);
+ glMulticastGetQueryObjecti64vNV = caps.get(1984);
+ glMulticastGetQueryObjectui64vNV = caps.get(1985);
+ glVertex2hNV = caps.get(1986);
+ glVertex2hvNV = caps.get(1987);
+ glVertex3hNV = caps.get(1988);
+ glVertex3hvNV = caps.get(1989);
+ glVertex4hNV = caps.get(1990);
+ glVertex4hvNV = caps.get(1991);
+ glNormal3hNV = caps.get(1992);
+ glNormal3hvNV = caps.get(1993);
+ glColor3hNV = caps.get(1994);
+ glColor3hvNV = caps.get(1995);
+ glColor4hNV = caps.get(1996);
+ glColor4hvNV = caps.get(1997);
+ glTexCoord1hNV = caps.get(1998);
+ glTexCoord1hvNV = caps.get(1999);
+ glTexCoord2hNV = caps.get(2000);
+ glTexCoord2hvNV = caps.get(2001);
+ glTexCoord3hNV = caps.get(2002);
+ glTexCoord3hvNV = caps.get(2003);
+ glTexCoord4hNV = caps.get(2004);
+ glTexCoord4hvNV = caps.get(2005);
+ glMultiTexCoord1hNV = caps.get(2006);
+ glMultiTexCoord1hvNV = caps.get(2007);
+ glMultiTexCoord2hNV = caps.get(2008);
+ glMultiTexCoord2hvNV = caps.get(2009);
+ glMultiTexCoord3hNV = caps.get(2010);
+ glMultiTexCoord3hvNV = caps.get(2011);
+ glMultiTexCoord4hNV = caps.get(2012);
+ glMultiTexCoord4hvNV = caps.get(2013);
+ glFogCoordhNV = caps.get(2014);
+ glFogCoordhvNV = caps.get(2015);
+ glSecondaryColor3hNV = caps.get(2016);
+ glSecondaryColor3hvNV = caps.get(2017);
+ glVertexWeighthNV = caps.get(2018);
+ glVertexWeighthvNV = caps.get(2019);
+ glVertexAttrib1hNV = caps.get(2020);
+ glVertexAttrib1hvNV = caps.get(2021);
+ glVertexAttrib2hNV = caps.get(2022);
+ glVertexAttrib2hvNV = caps.get(2023);
+ glVertexAttrib3hNV = caps.get(2024);
+ glVertexAttrib3hvNV = caps.get(2025);
+ glVertexAttrib4hNV = caps.get(2026);
+ glVertexAttrib4hvNV = caps.get(2027);
+ glVertexAttribs1hvNV = caps.get(2028);
+ glVertexAttribs2hvNV = caps.get(2029);
+ glVertexAttribs3hvNV = caps.get(2030);
+ glVertexAttribs4hvNV = caps.get(2031);
+ glGetInternalformatSampleivNV = caps.get(2032);
+ glGetMemoryObjectDetachedResourcesuivNV = caps.get(2033);
+ glResetMemoryObjectParameterNV = caps.get(2034);
+ glTexAttachMemoryNV = caps.get(2035);
+ glBufferAttachMemoryNV = caps.get(2036);
+ glTextureAttachMemoryNV = caps.get(2037);
+ glNamedBufferAttachMemoryNV = caps.get(2038);
+ glBufferPageCommitmentMemNV = caps.get(2039);
+ glNamedBufferPageCommitmentMemNV = caps.get(2040);
+ glTexPageCommitmentMemNV = caps.get(2041);
+ glTexturePageCommitmentMemNV = caps.get(2042);
+ glDrawMeshTasksNV = caps.get(2043);
+ glDrawMeshTasksIndirectNV = caps.get(2044);
+ glMultiDrawMeshTasksIndirectNV = caps.get(2045);
+ glMultiDrawMeshTasksIndirectCountNV = caps.get(2046);
+ glPathCommandsNV = caps.get(2047);
+ glPathCoordsNV = caps.get(2048);
+ glPathSubCommandsNV = caps.get(2049);
+ glPathSubCoordsNV = caps.get(2050);
+ glPathStringNV = caps.get(2051);
+ glPathGlyphsNV = caps.get(2052);
+ glPathGlyphRangeNV = caps.get(2053);
+ glPathGlyphIndexArrayNV = caps.get(2054);
+ glPathMemoryGlyphIndexArrayNV = caps.get(2055);
+ glCopyPathNV = caps.get(2056);
+ glWeightPathsNV = caps.get(2057);
+ glInterpolatePathsNV = caps.get(2058);
+ glTransformPathNV = caps.get(2059);
+ glPathParameterivNV = caps.get(2060);
+ glPathParameteriNV = caps.get(2061);
+ glPathParameterfvNV = caps.get(2062);
+ glPathParameterfNV = caps.get(2063);
+ glPathDashArrayNV = caps.get(2064);
+ glGenPathsNV = caps.get(2065);
+ glDeletePathsNV = caps.get(2066);
+ glIsPathNV = caps.get(2067);
+ glPathStencilFuncNV = caps.get(2068);
+ glPathStencilDepthOffsetNV = caps.get(2069);
+ glStencilFillPathNV = caps.get(2070);
+ glStencilStrokePathNV = caps.get(2071);
+ glStencilFillPathInstancedNV = caps.get(2072);
+ glStencilStrokePathInstancedNV = caps.get(2073);
+ glPathCoverDepthFuncNV = caps.get(2074);
+ glPathColorGenNV = caps.get(2075);
+ glPathTexGenNV = caps.get(2076);
+ glPathFogGenNV = caps.get(2077);
+ glCoverFillPathNV = caps.get(2078);
+ glCoverStrokePathNV = caps.get(2079);
+ glCoverFillPathInstancedNV = caps.get(2080);
+ glCoverStrokePathInstancedNV = caps.get(2081);
+ glStencilThenCoverFillPathNV = caps.get(2082);
+ glStencilThenCoverStrokePathNV = caps.get(2083);
+ glStencilThenCoverFillPathInstancedNV = caps.get(2084);
+ glStencilThenCoverStrokePathInstancedNV = caps.get(2085);
+ glPathGlyphIndexRangeNV = caps.get(2086);
+ glProgramPathFragmentInputGenNV = caps.get(2087);
+ glGetPathParameterivNV = caps.get(2088);
+ glGetPathParameterfvNV = caps.get(2089);
+ glGetPathCommandsNV = caps.get(2090);
+ glGetPathCoordsNV = caps.get(2091);
+ glGetPathDashArrayNV = caps.get(2092);
+ glGetPathMetricsNV = caps.get(2093);
+ glGetPathMetricRangeNV = caps.get(2094);
+ glGetPathSpacingNV = caps.get(2095);
+ glGetPathColorGenivNV = caps.get(2096);
+ glGetPathColorGenfvNV = caps.get(2097);
+ glGetPathTexGenivNV = caps.get(2098);
+ glGetPathTexGenfvNV = caps.get(2099);
+ glIsPointInFillPathNV = caps.get(2100);
+ glIsPointInStrokePathNV = caps.get(2101);
+ glGetPathLengthNV = caps.get(2102);
+ glPointAlongPathNV = caps.get(2103);
+ glMatrixLoad3x2fNV = caps.get(2104);
+ glMatrixLoad3x3fNV = caps.get(2105);
+ glMatrixLoadTranspose3x3fNV = caps.get(2106);
+ glMatrixMult3x2fNV = caps.get(2107);
+ glMatrixMult3x3fNV = caps.get(2108);
+ glMatrixMultTranspose3x3fNV = caps.get(2109);
+ glGetProgramResourcefvNV = caps.get(2110);
+ glPixelDataRangeNV = caps.get(2111);
+ glFlushPixelDataRangeNV = caps.get(2112);
+ glPointParameteriNV = caps.get(2113);
+ glPointParameterivNV = caps.get(2114);
+ glPrimitiveRestartNV = caps.get(2115);
+ glPrimitiveRestartIndexNV = caps.get(2116);
+ glQueryResourceNV = caps.get(2117);
+ glGenQueryResourceTagNV = caps.get(2118);
+ glDeleteQueryResourceTagNV = caps.get(2119);
+ glQueryResourceTagNV = caps.get(2120);
+ glFramebufferSampleLocationsfvNV = caps.get(2121);
+ glNamedFramebufferSampleLocationsfvNV = caps.get(2122);
+ glResolveDepthValuesNV = caps.get(2123);
+ glScissorExclusiveArrayvNV = caps.get(2124);
+ glScissorExclusiveNV = caps.get(2125);
+ glMakeBufferResidentNV = caps.get(2126);
+ glMakeBufferNonResidentNV = caps.get(2127);
+ glIsBufferResidentNV = caps.get(2128);
+ glMakeNamedBufferResidentNV = caps.get(2129);
+ glMakeNamedBufferNonResidentNV = caps.get(2130);
+ glIsNamedBufferResidentNV = caps.get(2131);
+ glGetBufferParameterui64vNV = caps.get(2132);
+ glGetNamedBufferParameterui64vNV = caps.get(2133);
+ glGetIntegerui64vNV = caps.get(2134);
+ glUniformui64NV = caps.get(2135);
+ glUniformui64vNV = caps.get(2136);
+ glProgramUniformui64NV = caps.get(2137);
+ glProgramUniformui64vNV = caps.get(2138);
+ glBindShadingRateImageNV = caps.get(2139);
+ glShadingRateImagePaletteNV = caps.get(2140);
+ glGetShadingRateImagePaletteNV = caps.get(2141);
+ glShadingRateImageBarrierNV = caps.get(2142);
+ glShadingRateSampleOrderNV = caps.get(2143);
+ glShadingRateSampleOrderCustomNV = caps.get(2144);
+ glGetShadingRateSampleLocationivNV = caps.get(2145);
+ glTextureBarrierNV = caps.get(2146);
+ glTexImage2DMultisampleCoverageNV = caps.get(2147);
+ glTexImage3DMultisampleCoverageNV = caps.get(2148);
+ glTextureImage2DMultisampleNV = caps.get(2149);
+ glTextureImage3DMultisampleNV = caps.get(2150);
+ glTextureImage2DMultisampleCoverageNV = caps.get(2151);
+ glTextureImage3DMultisampleCoverageNV = caps.get(2152);
+ glCreateSemaphoresNV = caps.get(2153);
+ glSemaphoreParameterivNV = caps.get(2154);
+ glGetSemaphoreParameterivNV = caps.get(2155);
+ glBeginTransformFeedbackNV = caps.get(2156);
+ glEndTransformFeedbackNV = caps.get(2157);
+ glTransformFeedbackAttribsNV = caps.get(2158);
+ glBindBufferRangeNV = caps.get(2159);
+ glBindBufferOffsetNV = caps.get(2160);
+ glBindBufferBaseNV = caps.get(2161);
+ glTransformFeedbackVaryingsNV = caps.get(2162);
+ glActiveVaryingNV = caps.get(2163);
+ glGetVaryingLocationNV = caps.get(2164);
+ glGetActiveVaryingNV = caps.get(2165);
+ glGetTransformFeedbackVaryingNV = caps.get(2166);
+ glTransformFeedbackStreamAttribsNV = caps.get(2167);
+ glBindTransformFeedbackNV = caps.get(2168);
+ glDeleteTransformFeedbacksNV = caps.get(2169);
+ glGenTransformFeedbacksNV = caps.get(2170);
+ glIsTransformFeedbackNV = caps.get(2171);
+ glPauseTransformFeedbackNV = caps.get(2172);
+ glResumeTransformFeedbackNV = caps.get(2173);
+ glDrawTransformFeedbackNV = caps.get(2174);
+ glVertexArrayRangeNV = caps.get(2175);
+ glFlushVertexArrayRangeNV = caps.get(2176);
+ glVertexAttribL1i64NV = caps.get(2177);
+ glVertexAttribL2i64NV = caps.get(2178);
+ glVertexAttribL3i64NV = caps.get(2179);
+ glVertexAttribL4i64NV = caps.get(2180);
+ glVertexAttribL1i64vNV = caps.get(2181);
+ glVertexAttribL2i64vNV = caps.get(2182);
+ glVertexAttribL3i64vNV = caps.get(2183);
+ glVertexAttribL4i64vNV = caps.get(2184);
+ glVertexAttribL1ui64NV = caps.get(2185);
+ glVertexAttribL2ui64NV = caps.get(2186);
+ glVertexAttribL3ui64NV = caps.get(2187);
+ glVertexAttribL4ui64NV = caps.get(2188);
+ glVertexAttribL1ui64vNV = caps.get(2189);
+ glVertexAttribL2ui64vNV = caps.get(2190);
+ glVertexAttribL3ui64vNV = caps.get(2191);
+ glVertexAttribL4ui64vNV = caps.get(2192);
+ glGetVertexAttribLi64vNV = caps.get(2193);
+ glGetVertexAttribLui64vNV = caps.get(2194);
+ glVertexAttribLFormatNV = caps.get(2195);
+ glBufferAddressRangeNV = caps.get(2196);
+ glVertexFormatNV = caps.get(2197);
+ glNormalFormatNV = caps.get(2198);
+ glColorFormatNV = caps.get(2199);
+ glIndexFormatNV = caps.get(2200);
+ glTexCoordFormatNV = caps.get(2201);
+ glEdgeFlagFormatNV = caps.get(2202);
+ glSecondaryColorFormatNV = caps.get(2203);
+ glFogCoordFormatNV = caps.get(2204);
+ glVertexAttribFormatNV = caps.get(2205);
+ glVertexAttribIFormatNV = caps.get(2206);
+ glGetIntegerui64i_vNV = caps.get(2207);
+ glViewportSwizzleNV = caps.get(2208);
+ glBeginConditionalRenderNVX = caps.get(2209);
+ glEndConditionalRenderNVX = caps.get(2210);
+ glAsyncCopyImageSubDataNVX = caps.get(2211);
+ glAsyncCopyBufferSubDataNVX = caps.get(2212);
+ glUploadGpuMaskNVX = caps.get(2213);
+ glMulticastViewportArrayvNVX = caps.get(2214);
+ glMulticastScissorArrayvNVX = caps.get(2215);
+ glMulticastViewportPositionWScaleNVX = caps.get(2216);
+ glCreateProgressFenceNVX = caps.get(2217);
+ glSignalSemaphoreui64NVX = caps.get(2218);
+ glWaitSemaphoreui64NVX = caps.get(2219);
+ glClientWaitSemaphoreui64NVX = caps.get(2220);
+ glFramebufferTextureMultiviewOVR = caps.get(2221);
+ glNamedFramebufferTextureMultiviewOVR = caps.get(2222);
+
+ addresses = ThreadLocalUtil.setupAddressBuffer(caps);
+ }
+
+ /** Returns the buffer of OpenGL function pointers. */
+ public PointerBuffer getAddressBuffer() {
+ return addresses;
+ }
+
+ /** Ensures that the lwjgl_opengl shared library has been loaded. */
+ public static void initialize() {
+ // intentionally empty to trigger static initializer
+ }
+
+ private static boolean check_GL11(FunctionProvider provider, PointerBuffer caps, Set ext, boolean fc) {
+ int flag0 = !fc || ext.contains("GL_NV_vertex_buffer_unified_memory") ? 0 : Integer.MIN_VALUE;
+
+ return ((fc || checkFunctions(provider, caps, new int[] {
+ 2, 3, 4, 5, 6, 8, 10, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 52, 53, 54, 56, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 86, 87, 88, 90, 93, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 110, 112, 113, 114, 115, 116, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 193, 194, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334
+ },
+ "glAccum", "glAlphaFunc", "glAreTexturesResident", "glArrayElement", "glBegin", "glBitmap", "glCallList", "glCallLists", "glClearAccum",
+ "glClearIndex", "glClipPlane", "glColor3b", "glColor3s", "glColor3i", "glColor3f", "glColor3d", "glColor3ub", "glColor3us", "glColor3ui",
+ "glColor3bv", "glColor3sv", "glColor3iv", "glColor3fv", "glColor3dv", "glColor3ubv", "glColor3usv", "glColor3uiv", "glColor4b", "glColor4s",
+ "glColor4i", "glColor4f", "glColor4d", "glColor4ub", "glColor4us", "glColor4ui", "glColor4bv", "glColor4sv", "glColor4iv", "glColor4fv",
+ "glColor4dv", "glColor4ubv", "glColor4usv", "glColor4uiv", "glColorMaterial", "glColorPointer", "glCopyPixels", "glDeleteLists", "glDrawPixels",
+ "glEdgeFlag", "glEdgeFlagv", "glEdgeFlagPointer", "glEnd", "glEvalCoord1f", "glEvalCoord1fv", "glEvalCoord1d", "glEvalCoord1dv", "glEvalCoord2f",
+ "glEvalCoord2fv", "glEvalCoord2d", "glEvalCoord2dv", "glEvalMesh1", "glEvalMesh2", "glEvalPoint1", "glEvalPoint2", "glFeedbackBuffer", "glFogi",
+ "glFogiv", "glFogf", "glFogfv", "glGenLists", "glGetClipPlane", "glGetLightiv", "glGetLightfv", "glGetMapiv", "glGetMapfv", "glGetMapdv",
+ "glGetMaterialiv", "glGetMaterialfv", "glGetPixelMapfv", "glGetPixelMapusv", "glGetPixelMapuiv", "glGetPolygonStipple", "glGetTexEnviv",
+ "glGetTexEnvfv", "glGetTexGeniv", "glGetTexGenfv", "glGetTexGendv", "glIndexi", "glIndexub", "glIndexs", "glIndexf", "glIndexd", "glIndexiv",
+ "glIndexubv", "glIndexsv", "glIndexfv", "glIndexdv", "glIndexMask", "glIndexPointer", "glInitNames", "glInterleavedArrays", "glIsList",
+ "glLightModeli", "glLightModelf", "glLightModeliv", "glLightModelfv", "glLighti", "glLightf", "glLightiv", "glLightfv", "glLineStipple",
+ "glListBase", "glLoadMatrixf", "glLoadMatrixd", "glLoadIdentity", "glLoadName", "glMap1f", "glMap1d", "glMap2f", "glMap2d", "glMapGrid1f",
+ "glMapGrid1d", "glMapGrid2f", "glMapGrid2d", "glMateriali", "glMaterialf", "glMaterialiv", "glMaterialfv", "glMatrixMode", "glMultMatrixf",
+ "glMultMatrixd", "glFrustum", "glNewList", "glEndList", "glNormal3f", "glNormal3b", "glNormal3s", "glNormal3i", "glNormal3d", "glNormal3fv",
+ "glNormal3bv", "glNormal3sv", "glNormal3iv", "glNormal3dv", "glNormalPointer", "glOrtho", "glPassThrough", "glPixelMapfv", "glPixelMapusv",
+ "glPixelMapuiv", "glPixelTransferi", "glPixelTransferf", "glPixelZoom", "glPolygonStipple", "glPushAttrib", "glPushClientAttrib", "glPopAttrib",
+ "glPopClientAttrib", "glPopMatrix", "glPopName", "glPrioritizeTextures", "glPushMatrix", "glPushName", "glRasterPos2i", "glRasterPos2s",
+ "glRasterPos2f", "glRasterPos2d", "glRasterPos2iv", "glRasterPos2sv", "glRasterPos2fv", "glRasterPos2dv", "glRasterPos3i", "glRasterPos3s",
+ "glRasterPos3f", "glRasterPos3d", "glRasterPos3iv", "glRasterPos3sv", "glRasterPos3fv", "glRasterPos3dv", "glRasterPos4i", "glRasterPos4s",
+ "glRasterPos4f", "glRasterPos4d", "glRasterPos4iv", "glRasterPos4sv", "glRasterPos4fv", "glRasterPos4dv", "glRecti", "glRects", "glRectf",
+ "glRectd", "glRectiv", "glRectsv", "glRectfv", "glRectdv", "glRenderMode", "glRotatef", "glRotated", "glScalef", "glScaled", "glSelectBuffer",
+ "glShadeModel", "glTexCoord1f", "glTexCoord1s", "glTexCoord1i", "glTexCoord1d", "glTexCoord1fv", "glTexCoord1sv", "glTexCoord1iv", "glTexCoord1dv",
+ "glTexCoord2f", "glTexCoord2s", "glTexCoord2i", "glTexCoord2d", "glTexCoord2fv", "glTexCoord2sv", "glTexCoord2iv", "glTexCoord2dv", "glTexCoord3f",
+ "glTexCoord3s", "glTexCoord3i", "glTexCoord3d", "glTexCoord3fv", "glTexCoord3sv", "glTexCoord3iv", "glTexCoord3dv", "glTexCoord4f", "glTexCoord4s",
+ "glTexCoord4i", "glTexCoord4d", "glTexCoord4fv", "glTexCoord4sv", "glTexCoord4iv", "glTexCoord4dv", "glTexCoordPointer", "glTexEnvi", "glTexEnviv",
+ "glTexEnvf", "glTexEnvfv", "glTexGeni", "glTexGeniv", "glTexGenf", "glTexGenfv", "glTexGend", "glTexGendv", "glTranslatef", "glTranslated",
+ "glVertex2f", "glVertex2s", "glVertex2i", "glVertex2d", "glVertex2fv", "glVertex2sv", "glVertex2iv", "glVertex2dv", "glVertex3f", "glVertex3s",
+ "glVertex3i", "glVertex3d", "glVertex3fv", "glVertex3sv", "glVertex3iv", "glVertex3dv", "glVertex4f", "glVertex4s", "glVertex4i", "glVertex4d",
+ "glVertex4fv", "glVertex4sv", "glVertex4iv", "glVertex4dv", "glVertexPointer"
+ )) && checkFunctions(provider, caps, new int[] {
+ 0, 1, 7, 9, 12, 14, 15, 17, 51, 55, 57, 58, 59, flag0 + 60, 61, 62, 63, flag0 + 68, 83, 84, 89, 91, 92, 94, 95, 96, 97, 98, 109, 111, 117, 118, 119,
+ 120, 121, 122, 137, 139, 149, 155, 190, 191, 195, 196, 197, 232, 233, 247, 250, 251, 252, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 335
+ },
+ "glEnable", "glDisable", "glBindTexture", "glBlendFunc", "glClear", "glClearColor", "glClearDepth", "glClearStencil", "glColorMask", "glCullFace",
+ "glDepthFunc", "glDepthMask", "glDepthRange", "glDisableClientState", "glDrawArrays", "glDrawBuffer", "glDrawElements", "glEnableClientState",
+ "glFinish", "glFlush", "glFrontFace", "glGenTextures", "glDeleteTextures", "glGetBooleanv", "glGetFloatv", "glGetIntegerv", "glGetDoublev",
+ "glGetError", "glGetPointerv", "glGetString", "glGetTexImage", "glGetTexLevelParameteriv", "glGetTexLevelParameterfv", "glGetTexParameteriv",
+ "glGetTexParameterfv", "glHint", "glIsEnabled", "glIsTexture", "glLineWidth", "glLogicOp", "glPixelStorei", "glPixelStoref", "glPointSize",
+ "glPolygonMode", "glPolygonOffset", "glReadBuffer", "glReadPixels", "glScissor", "glStencilFunc", "glStencilMask", "glStencilOp", "glTexImage1D",
+ "glTexImage2D", "glCopyTexImage1D", "glCopyTexImage2D", "glCopyTexSubImage1D", "glCopyTexSubImage2D", "glTexParameteri", "glTexParameteriv",
+ "glTexParameterf", "glTexParameterfv", "glTexSubImage1D", "glTexSubImage2D", "glViewport"
+ ) && ext.contains("OpenGL11")) || reportMissing("GL", "OpenGL11");
+ }
+
+ private static boolean check_GL12(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 336, 337, 338, 339
+ },
+ "glTexImage3D", "glTexSubImage3D", "glCopyTexSubImage3D", "glDrawRangeElements"
+ ) && ext.contains("OpenGL12")) || reportMissing("GL", "OpenGL12");
+ }
+
+ private static boolean check_GL13(FunctionProvider provider, PointerBuffer caps, Set ext, boolean fc) {
+
+ return ((fc || checkFunctions(provider, caps, new int[] {
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385
+ },
+ "glClientActiveTexture", "glMultiTexCoord1f", "glMultiTexCoord1s", "glMultiTexCoord1i", "glMultiTexCoord1d", "glMultiTexCoord1fv",
+ "glMultiTexCoord1sv", "glMultiTexCoord1iv", "glMultiTexCoord1dv", "glMultiTexCoord2f", "glMultiTexCoord2s", "glMultiTexCoord2i",
+ "glMultiTexCoord2d", "glMultiTexCoord2fv", "glMultiTexCoord2sv", "glMultiTexCoord2iv", "glMultiTexCoord2dv", "glMultiTexCoord3f",
+ "glMultiTexCoord3s", "glMultiTexCoord3i", "glMultiTexCoord3d", "glMultiTexCoord3fv", "glMultiTexCoord3sv", "glMultiTexCoord3iv",
+ "glMultiTexCoord3dv", "glMultiTexCoord4f", "glMultiTexCoord4s", "glMultiTexCoord4i", "glMultiTexCoord4d", "glMultiTexCoord4fv",
+ "glMultiTexCoord4sv", "glMultiTexCoord4iv", "glMultiTexCoord4dv", "glLoadTransposeMatrixf", "glLoadTransposeMatrixd", "glMultTransposeMatrixf",
+ "glMultTransposeMatrixd"
+ )) && checkFunctions(provider, caps, new int[] {
+ 340, 341, 342, 343, 344, 345, 346, 347, 348
+ },
+ "glCompressedTexImage3D", "glCompressedTexImage2D", "glCompressedTexImage1D", "glCompressedTexSubImage3D", "glCompressedTexSubImage2D",
+ "glCompressedTexSubImage1D", "glGetCompressedTexImage", "glSampleCoverage", "glActiveTexture"
+ ) && ext.contains("OpenGL13")) || reportMissing("GL", "OpenGL13");
+ }
+
+ private static boolean check_GL14(FunctionProvider provider, PointerBuffer caps, Set ext, boolean fc) {
+
+ return ((fc || checkFunctions(provider, caps, new int[] {
+ 388, 389, 390, 391, 392, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432
+ },
+ "glFogCoordf", "glFogCoordd", "glFogCoordfv", "glFogCoorddv", "glFogCoordPointer", "glSecondaryColor3b", "glSecondaryColor3s", "glSecondaryColor3i",
+ "glSecondaryColor3f", "glSecondaryColor3d", "glSecondaryColor3ub", "glSecondaryColor3us", "glSecondaryColor3ui", "glSecondaryColor3bv",
+ "glSecondaryColor3sv", "glSecondaryColor3iv", "glSecondaryColor3fv", "glSecondaryColor3dv", "glSecondaryColor3ubv", "glSecondaryColor3usv",
+ "glSecondaryColor3uiv", "glSecondaryColorPointer", "glWindowPos2i", "glWindowPos2s", "glWindowPos2f", "glWindowPos2d", "glWindowPos2iv",
+ "glWindowPos2sv", "glWindowPos2fv", "glWindowPos2dv", "glWindowPos3i", "glWindowPos3s", "glWindowPos3f", "glWindowPos3d", "glWindowPos3iv",
+ "glWindowPos3sv", "glWindowPos3fv", "glWindowPos3dv"
+ )) && checkFunctions(provider, caps, new int[] {
+ 386, 387, 393, 394, 395, 396, 397, 398, 416
+ },
+ "glBlendColor", "glBlendEquation", "glMultiDrawArrays", "glMultiDrawElements", "glPointParameterf", "glPointParameteri", "glPointParameterfv",
+ "glPointParameteriv", "glBlendFuncSeparate"
+ ) && ext.contains("OpenGL14")) || reportMissing("GL", "OpenGL14");
+ }
+
+ private static boolean check_GL15(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451
+ },
+ "glBindBuffer", "glDeleteBuffers", "glGenBuffers", "glIsBuffer", "glBufferData", "glBufferSubData", "glGetBufferSubData", "glMapBuffer",
+ "glUnmapBuffer", "glGetBufferParameteriv", "glGetBufferPointerv", "glGenQueries", "glDeleteQueries", "glIsQuery", "glBeginQuery", "glEndQuery",
+ "glGetQueryiv", "glGetQueryObjectiv", "glGetQueryObjectuiv"
+ ) && ext.contains("OpenGL15")) || reportMissing("GL", "OpenGL15");
+ }
+
+ private static boolean check_GL20(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544
+ },
+ "glCreateProgram", "glDeleteProgram", "glIsProgram", "glCreateShader", "glDeleteShader", "glIsShader", "glAttachShader", "glDetachShader",
+ "glShaderSource", "glCompileShader", "glLinkProgram", "glUseProgram", "glValidateProgram", "glUniform1f", "glUniform2f", "glUniform3f",
+ "glUniform4f", "glUniform1i", "glUniform2i", "glUniform3i", "glUniform4i", "glUniform1fv", "glUniform2fv", "glUniform3fv", "glUniform4fv",
+ "glUniform1iv", "glUniform2iv", "glUniform3iv", "glUniform4iv", "glUniformMatrix2fv", "glUniformMatrix3fv", "glUniformMatrix4fv", "glGetShaderiv",
+ "glGetProgramiv", "glGetShaderInfoLog", "glGetProgramInfoLog", "glGetAttachedShaders", "glGetUniformLocation", "glGetActiveUniform",
+ "glGetUniformfv", "glGetUniformiv", "glGetShaderSource", "glVertexAttrib1f", "glVertexAttrib1s", "glVertexAttrib1d", "glVertexAttrib2f",
+ "glVertexAttrib2s", "glVertexAttrib2d", "glVertexAttrib3f", "glVertexAttrib3s", "glVertexAttrib3d", "glVertexAttrib4f", "glVertexAttrib4s",
+ "glVertexAttrib4d", "glVertexAttrib4Nub", "glVertexAttrib1fv", "glVertexAttrib1sv", "glVertexAttrib1dv", "glVertexAttrib2fv", "glVertexAttrib2sv",
+ "glVertexAttrib2dv", "glVertexAttrib3fv", "glVertexAttrib3sv", "glVertexAttrib3dv", "glVertexAttrib4fv", "glVertexAttrib4sv", "glVertexAttrib4dv",
+ "glVertexAttrib4iv", "glVertexAttrib4bv", "glVertexAttrib4ubv", "glVertexAttrib4usv", "glVertexAttrib4uiv", "glVertexAttrib4Nbv",
+ "glVertexAttrib4Nsv", "glVertexAttrib4Niv", "glVertexAttrib4Nubv", "glVertexAttrib4Nusv", "glVertexAttrib4Nuiv", "glVertexAttribPointer",
+ "glEnableVertexAttribArray", "glDisableVertexAttribArray", "glBindAttribLocation", "glGetActiveAttrib", "glGetAttribLocation",
+ "glGetVertexAttribiv", "glGetVertexAttribfv", "glGetVertexAttribdv", "glGetVertexAttribPointerv", "glDrawBuffers", "glBlendEquationSeparate",
+ "glStencilOpSeparate", "glStencilFuncSeparate", "glStencilMaskSeparate"
+ ) && ext.contains("OpenGL20")) || reportMissing("GL", "OpenGL20");
+ }
+
+ private static boolean check_GL21(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 545, 546, 547, 548, 549, 550
+ },
+ "glUniformMatrix2x3fv", "glUniformMatrix3x2fv", "glUniformMatrix2x4fv", "glUniformMatrix4x2fv", "glUniformMatrix3x4fv", "glUniformMatrix4x3fv"
+ ) && ext.contains("OpenGL21")) || reportMissing("GL", "OpenGL21");
+ }
+
+ private static boolean check_GL30(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634
+ },
+ "glGetStringi", "glClearBufferiv", "glClearBufferuiv", "glClearBufferfv", "glClearBufferfi", "glVertexAttribI1i", "glVertexAttribI2i",
+ "glVertexAttribI3i", "glVertexAttribI4i", "glVertexAttribI1ui", "glVertexAttribI2ui", "glVertexAttribI3ui", "glVertexAttribI4ui",
+ "glVertexAttribI1iv", "glVertexAttribI2iv", "glVertexAttribI3iv", "glVertexAttribI4iv", "glVertexAttribI1uiv", "glVertexAttribI2uiv",
+ "glVertexAttribI3uiv", "glVertexAttribI4uiv", "glVertexAttribI4bv", "glVertexAttribI4sv", "glVertexAttribI4ubv", "glVertexAttribI4usv",
+ "glVertexAttribIPointer", "glGetVertexAttribIiv", "glGetVertexAttribIuiv", "glUniform1ui", "glUniform2ui", "glUniform3ui", "glUniform4ui",
+ "glUniform1uiv", "glUniform2uiv", "glUniform3uiv", "glUniform4uiv", "glGetUniformuiv", "glBindFragDataLocation", "glGetFragDataLocation",
+ "glBeginConditionalRender", "glEndConditionalRender", "glMapBufferRange", "glFlushMappedBufferRange", "glClampColor", "glIsRenderbuffer",
+ "glBindRenderbuffer", "glDeleteRenderbuffers", "glGenRenderbuffers", "glRenderbufferStorage", "glRenderbufferStorageMultisample",
+ "glGetRenderbufferParameteriv", "glIsFramebuffer", "glBindFramebuffer", "glDeleteFramebuffers", "glGenFramebuffers", "glCheckFramebufferStatus",
+ "glFramebufferTexture1D", "glFramebufferTexture2D", "glFramebufferTexture3D", "glFramebufferTextureLayer", "glFramebufferRenderbuffer",
+ "glGetFramebufferAttachmentParameteriv", "glBlitFramebuffer", "glGenerateMipmap", "glTexParameterIiv", "glTexParameterIuiv", "glGetTexParameterIiv",
+ "glGetTexParameterIuiv", "glColorMaski", "glGetBooleani_v", "glGetIntegeri_v", "glEnablei", "glDisablei", "glIsEnabledi", "glBindBufferRange",
+ "glBindBufferBase", "glBeginTransformFeedback", "glEndTransformFeedback", "glTransformFeedbackVaryings", "glGetTransformFeedbackVarying",
+ "glBindVertexArray", "glDeleteVertexArrays", "glGenVertexArrays", "glIsVertexArray"
+ ) && ext.contains("OpenGL30")) || reportMissing("GL", "OpenGL30");
+ }
+
+ private static boolean check_GL31(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646
+ },
+ "glDrawArraysInstanced", "glDrawElementsInstanced", "glCopyBufferSubData", "glPrimitiveRestartIndex", "glTexBuffer", "glGetUniformIndices",
+ "glGetActiveUniformsiv", "glGetActiveUniformName", "glGetUniformBlockIndex", "glGetActiveUniformBlockiv", "glGetActiveUniformBlockName",
+ "glUniformBlockBinding"
+ ) && ext.contains("OpenGL31")) || reportMissing("GL", "OpenGL31");
+ }
+
+ private static boolean check_GL32(FunctionProvider provider, PointerBuffer caps, Set ext) {
+
+ return (checkFunctions(provider, caps, new int[] {
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665
+ },
+ "glGetBufferParameteri64v", "glDrawElementsBaseVertex", "glDrawRangeElementsBaseVertex", "glDrawElementsInstancedBaseVertex",
+ "glMultiDrawElementsBaseVertex", "glProvokingVertex", "glTexImage2DMultisample", "glTexImage3DMultisample", "glGetMultisamplefv", "glSampleMaski",
+ "glFramebufferTexture", "glFenceSync", "glIsSync", "glDeleteSync", "glClientWaitSync", "glWaitSync", "glGetInteger64v", "glGetInteger64i_v",
+ "glGetSynciv"
+ ) && ext.contains("OpenGL32")) || reportMissing("GL", "OpenGL32");
+ }
+
+ private static boolean check_GL33(FunctionProvider provider, PointerBuffer caps, Set ext, boolean fc) {
+
+ return ((fc || checkFunctions(provider, caps, new int[] {
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715
+ },
+ "glVertexP2ui", "glVertexP3ui", "glVertexP4ui", "glVertexP2uiv", "glVertexP3uiv", "glVertexP4uiv", "glTexCoordP1ui", "glTexCoordP2ui",
+ "glTexCoordP3ui", "glTexCoordP4ui", "glTexCoordP1uiv", "glTexCoordP2uiv", "glTexCoordP3uiv", "glTexCoordP4uiv", "glMultiTexCoordP1ui",
+ "glMultiTexCoordP2ui", "glMultiTexCoordP3ui", "glMultiTexCoordP4ui", "glMultiTexCoordP1uiv", "glMultiTexCoordP2uiv", "glMultiTexCoordP3uiv",
+ "glMultiTexCoordP4uiv", "glNormalP3ui", "glNormalP3uiv", "glColorP3ui", "glColorP4ui", "glColorP3uiv", "glColorP4uiv", "glSecondaryColorP3ui",
+ "glSecondaryColorP3uiv"
+ )) && checkFunctions(provider, caps, new int[] {
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 716, 717, 718, 719, 720, 721, 722, 723
+ },
+ "glBindFragDataLocationIndexed", "glGetFragDataIndex", "glGenSamplers", "glDeleteSamplers", "glIsSampler", "glBindSampler", "glSamplerParameteri",
+ "glSamplerParameterf", "glSamplerParameteriv", "glSamplerParameterfv", "glSamplerParameterIiv", "glSamplerParameterIuiv", "glGetSamplerParameteriv",
+ "glGetSamplerParameterfv", "glGetSamplerParameterIiv", "glGetSamplerParameterIuiv", "glQueryCounter", "glGetQueryObjecti64v",
+ "glGetQueryObjectui64v", "glVertexAttribDivisor", "glVertexAttribP1ui", "glVertexAttribP2ui", "glVertexAttribP3ui", "glVertexAttribP4ui",
+ "glVertexAttribP1uiv", "glVertexAttribP2uiv", "glVertexAttribP3uiv", "glVertexAttribP4uiv"
+ ) && ext.contains("OpenGL33")) || reportMissing("GL", "OpenGL33");
+ }
+
+ private static boolean check_GL40(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL40")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769
+ },
+ "glBlendEquationi", "glBlendEquationSeparatei", "glBlendFunci", "glBlendFuncSeparatei", "glDrawArraysIndirect", "glDrawElementsIndirect",
+ "glUniform1d", "glUniform2d", "glUniform3d", "glUniform4d", "glUniform1dv", "glUniform2dv", "glUniform3dv", "glUniform4dv", "glUniformMatrix2dv",
+ "glUniformMatrix3dv", "glUniformMatrix4dv", "glUniformMatrix2x3dv", "glUniformMatrix2x4dv", "glUniformMatrix3x2dv", "glUniformMatrix3x4dv",
+ "glUniformMatrix4x2dv", "glUniformMatrix4x3dv", "glGetUniformdv", "glMinSampleShading", "glGetSubroutineUniformLocation", "glGetSubroutineIndex",
+ "glGetActiveSubroutineUniformiv", "glGetActiveSubroutineUniformName", "glGetActiveSubroutineName", "glUniformSubroutinesuiv",
+ "glGetUniformSubroutineuiv", "glGetProgramStageiv", "glPatchParameteri", "glPatchParameterfv", "glBindTransformFeedback",
+ "glDeleteTransformFeedbacks", "glGenTransformFeedbacks", "glIsTransformFeedback", "glPauseTransformFeedback", "glResumeTransformFeedback",
+ "glDrawTransformFeedback", "glDrawTransformFeedbackStream", "glBeginQueryIndexed", "glEndQueryIndexed", "glGetQueryIndexediv"
+ )) || reportMissing("GL", "OpenGL40");
+ }
+
+ private static boolean check_GL41(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL41")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798,
+ 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827,
+ 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856,
+ 857
+ },
+ "glReleaseShaderCompiler", "glShaderBinary", "glGetShaderPrecisionFormat", "glDepthRangef", "glClearDepthf", "glGetProgramBinary",
+ "glProgramBinary", "glProgramParameteri", "glUseProgramStages", "glActiveShaderProgram", "glCreateShaderProgramv", "glBindProgramPipeline",
+ "glDeleteProgramPipelines", "glGenProgramPipelines", "glIsProgramPipeline", "glGetProgramPipelineiv", "glProgramUniform1i", "glProgramUniform2i",
+ "glProgramUniform3i", "glProgramUniform4i", "glProgramUniform1ui", "glProgramUniform2ui", "glProgramUniform3ui", "glProgramUniform4ui",
+ "glProgramUniform1f", "glProgramUniform2f", "glProgramUniform3f", "glProgramUniform4f", "glProgramUniform1d", "glProgramUniform2d",
+ "glProgramUniform3d", "glProgramUniform4d", "glProgramUniform1iv", "glProgramUniform2iv", "glProgramUniform3iv", "glProgramUniform4iv",
+ "glProgramUniform1uiv", "glProgramUniform2uiv", "glProgramUniform3uiv", "glProgramUniform4uiv", "glProgramUniform1fv", "glProgramUniform2fv",
+ "glProgramUniform3fv", "glProgramUniform4fv", "glProgramUniform1dv", "glProgramUniform2dv", "glProgramUniform3dv", "glProgramUniform4dv",
+ "glProgramUniformMatrix2fv", "glProgramUniformMatrix3fv", "glProgramUniformMatrix4fv", "glProgramUniformMatrix2dv", "glProgramUniformMatrix3dv",
+ "glProgramUniformMatrix4dv", "glProgramUniformMatrix2x3fv", "glProgramUniformMatrix3x2fv", "glProgramUniformMatrix2x4fv",
+ "glProgramUniformMatrix4x2fv", "glProgramUniformMatrix3x4fv", "glProgramUniformMatrix4x3fv", "glProgramUniformMatrix2x3dv",
+ "glProgramUniformMatrix3x2dv", "glProgramUniformMatrix2x4dv", "glProgramUniformMatrix4x2dv", "glProgramUniformMatrix3x4dv",
+ "glProgramUniformMatrix4x3dv", "glValidateProgramPipeline", "glGetProgramPipelineInfoLog", "glVertexAttribL1d", "glVertexAttribL2d",
+ "glVertexAttribL3d", "glVertexAttribL4d", "glVertexAttribL1dv", "glVertexAttribL2dv", "glVertexAttribL3dv", "glVertexAttribL4dv",
+ "glVertexAttribLPointer", "glGetVertexAttribLdv", "glViewportArrayv", "glViewportIndexedf", "glViewportIndexedfv", "glScissorArrayv",
+ "glScissorIndexed", "glScissorIndexedv", "glDepthRangeArrayv", "glDepthRangeIndexed", "glGetFloati_v", "glGetDoublei_v"
+ )) || reportMissing("GL", "OpenGL41");
+ }
+
+ private static boolean check_GL42(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL42")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869
+ },
+ "glGetActiveAtomicCounterBufferiv", "glTexStorage1D", "glTexStorage2D", "glTexStorage3D", "glDrawTransformFeedbackInstanced",
+ "glDrawTransformFeedbackStreamInstanced", "glDrawArraysInstancedBaseInstance", "glDrawElementsInstancedBaseInstance",
+ "glDrawElementsInstancedBaseVertexBaseInstance", "glBindImageTexture", "glMemoryBarrier", "glGetInternalformativ"
+ )) || reportMissing("GL", "OpenGL42");
+ }
+
+ private static boolean check_GL43(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL43")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898,
+ 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912
+ },
+ "glClearBufferData", "glClearBufferSubData", "glDispatchCompute", "glDispatchComputeIndirect", "glCopyImageSubData", "glDebugMessageControl",
+ "glDebugMessageInsert", "glDebugMessageCallback", "glGetDebugMessageLog", "glPushDebugGroup", "glPopDebugGroup", "glObjectLabel",
+ "glGetObjectLabel", "glObjectPtrLabel", "glGetObjectPtrLabel", "glFramebufferParameteri", "glGetFramebufferParameteriv", "glGetInternalformati64v",
+ "glInvalidateTexSubImage", "glInvalidateTexImage", "glInvalidateBufferSubData", "glInvalidateBufferData", "glInvalidateFramebuffer",
+ "glInvalidateSubFramebuffer", "glMultiDrawArraysIndirect", "glMultiDrawElementsIndirect", "glGetProgramInterfaceiv", "glGetProgramResourceIndex",
+ "glGetProgramResourceName", "glGetProgramResourceiv", "glGetProgramResourceLocation", "glGetProgramResourceLocationIndex",
+ "glShaderStorageBlockBinding", "glTexBufferRange", "glTexStorage2DMultisample", "glTexStorage3DMultisample", "glTextureView", "glBindVertexBuffer",
+ "glVertexAttribFormat", "glVertexAttribIFormat", "glVertexAttribLFormat", "glVertexAttribBinding", "glVertexBindingDivisor"
+ )) || reportMissing("GL", "OpenGL43");
+ }
+
+ private static boolean check_GL44(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL44")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 913, 914, 915, 916, 917, 918, 919, 920, 921
+ },
+ "glBufferStorage", "glClearTexSubImage", "glClearTexImage", "glBindBuffersBase", "glBindBuffersRange", "glBindTextures", "glBindSamplers",
+ "glBindImageTextures", "glBindVertexBuffers"
+ )) || reportMissing("GL", "OpenGL44");
+ }
+
+ private static boolean check_GL45(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL45")) {
+ return false;
+ }
+
+ int flag0 = provider.getFunctionAddress("glGetMapdv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag1 = provider.getFunctionAddress("glGetMapfv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag2 = provider.getFunctionAddress("glGetMapiv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag3 = provider.getFunctionAddress("glGetPixelMapfv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag4 = provider.getFunctionAddress("glGetPixelMapuiv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag5 = provider.getFunctionAddress("glGetPixelMapusv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag6 = provider.getFunctionAddress("glGetPolygonStipple") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag7 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetColorTable") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag8 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetConvolutionFilter") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag9 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetSeparableFilter") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag10 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetHistogram") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag11 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetMinmax") != NULL ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950,
+ 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979,
+ 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
+ 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1033, 1040, 1042, 1043
+ },
+ "glClipControl", "glCreateTransformFeedbacks", "glTransformFeedbackBufferBase", "glTransformFeedbackBufferRange", "glGetTransformFeedbackiv",
+ "glGetTransformFeedbacki_v", "glGetTransformFeedbacki64_v", "glCreateBuffers", "glNamedBufferStorage", "glNamedBufferData", "glNamedBufferSubData",
+ "glCopyNamedBufferSubData", "glClearNamedBufferData", "glClearNamedBufferSubData", "glMapNamedBuffer", "glMapNamedBufferRange",
+ "glUnmapNamedBuffer", "glFlushMappedNamedBufferRange", "glGetNamedBufferParameteriv", "glGetNamedBufferParameteri64v", "glGetNamedBufferPointerv",
+ "glGetNamedBufferSubData", "glCreateFramebuffers", "glNamedFramebufferRenderbuffer", "glNamedFramebufferParameteri", "glNamedFramebufferTexture",
+ "glNamedFramebufferTextureLayer", "glNamedFramebufferDrawBuffer", "glNamedFramebufferDrawBuffers", "glNamedFramebufferReadBuffer",
+ "glInvalidateNamedFramebufferData", "glInvalidateNamedFramebufferSubData", "glClearNamedFramebufferiv", "glClearNamedFramebufferuiv",
+ "glClearNamedFramebufferfv", "glClearNamedFramebufferfi", "glBlitNamedFramebuffer", "glCheckNamedFramebufferStatus",
+ "glGetNamedFramebufferParameteriv", "glGetNamedFramebufferAttachmentParameteriv", "glCreateRenderbuffers", "glNamedRenderbufferStorage",
+ "glNamedRenderbufferStorageMultisample", "glGetNamedRenderbufferParameteriv", "glCreateTextures", "glTextureBuffer", "glTextureBufferRange",
+ "glTextureStorage1D", "glTextureStorage2D", "glTextureStorage3D", "glTextureStorage2DMultisample", "glTextureStorage3DMultisample",
+ "glTextureSubImage1D", "glTextureSubImage2D", "glTextureSubImage3D", "glCompressedTextureSubImage1D", "glCompressedTextureSubImage2D",
+ "glCompressedTextureSubImage3D", "glCopyTextureSubImage1D", "glCopyTextureSubImage2D", "glCopyTextureSubImage3D", "glTextureParameterf",
+ "glTextureParameterfv", "glTextureParameteri", "glTextureParameterIiv", "glTextureParameterIuiv", "glTextureParameteriv", "glGenerateTextureMipmap",
+ "glBindTextureUnit", "glGetTextureImage", "glGetCompressedTextureImage", "glGetTextureLevelParameterfv", "glGetTextureLevelParameteriv",
+ "glGetTextureParameterfv", "glGetTextureParameterIiv", "glGetTextureParameterIuiv", "glGetTextureParameteriv", "glCreateVertexArrays",
+ "glDisableVertexArrayAttrib", "glEnableVertexArrayAttrib", "glVertexArrayElementBuffer", "glVertexArrayVertexBuffer", "glVertexArrayVertexBuffers",
+ "glVertexArrayAttribFormat", "glVertexArrayAttribIFormat", "glVertexArrayAttribLFormat", "glVertexArrayAttribBinding",
+ "glVertexArrayBindingDivisor", "glGetVertexArrayiv", "glGetVertexArrayIndexediv", "glGetVertexArrayIndexed64iv", "glCreateSamplers",
+ "glCreateProgramPipelines", "glCreateQueries", "glGetQueryBufferObjectiv", "glGetQueryBufferObjectuiv", "glGetQueryBufferObjecti64v",
+ "glGetQueryBufferObjectui64v", "glMemoryBarrierByRegion", "glGetTextureSubImage", "glGetCompressedTextureSubImage", "glTextureBarrier",
+ "glGetGraphicsResetStatus", "glReadnPixels", "glGetnUniformfv", "glGetnUniformiv", "glGetnUniformuiv"
+ )) || reportMissing("GL", "OpenGL45");
+ }
+
+ private static boolean check_GL46(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("OpenGL46")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1044, 1045, 1046, 1047
+ },
+ "glMultiDrawArraysIndirectCount", "glMultiDrawElementsIndirectCount", "glPolygonOffsetClamp", "glSpecializeShader"
+ )) || reportMissing("GL", "OpenGL46");
+ }
+
+ private static boolean check_AMD_debug_output(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_debug_output")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1048, 1049, 1050, 1051
+ },
+ "glDebugMessageEnableAMD", "glDebugMessageInsertAMD", "glDebugMessageCallbackAMD", "glGetDebugMessageLogAMD"
+ )) || reportMissing("GL", "GL_AMD_debug_output");
+ }
+
+ private static boolean check_AMD_draw_buffers_blend(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_draw_buffers_blend")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1052, 1053, 1054, 1055
+ },
+ "glBlendFuncIndexedAMD", "glBlendFuncSeparateIndexedAMD", "glBlendEquationIndexedAMD", "glBlendEquationSeparateIndexedAMD"
+ )) || reportMissing("GL", "GL_AMD_draw_buffers_blend");
+ }
+
+ private static boolean check_AMD_framebuffer_multisample_advanced(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_framebuffer_multisample_advanced")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1056, 1057
+ },
+ "glRenderbufferStorageMultisampleAdvancedAMD", "glNamedRenderbufferStorageMultisampleAdvancedAMD"
+ )) || reportMissing("GL", "GL_AMD_framebuffer_multisample_advanced");
+ }
+
+ private static boolean check_AMD_gpu_shader_int64(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_gpu_shader_int64")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, flag0 + 1076, flag0 + 1077,
+ flag0 + 1078, flag0 + 1079, flag0 + 1080, flag0 + 1081, flag0 + 1082, flag0 + 1083, flag0 + 1084, flag0 + 1085, flag0 + 1086, flag0 + 1087,
+ flag0 + 1088, flag0 + 1089, flag0 + 1090, flag0 + 1091
+ },
+ "glUniform1i64NV", "glUniform2i64NV", "glUniform3i64NV", "glUniform4i64NV", "glUniform1i64vNV", "glUniform2i64vNV", "glUniform3i64vNV",
+ "glUniform4i64vNV", "glUniform1ui64NV", "glUniform2ui64NV", "glUniform3ui64NV", "glUniform4ui64NV", "glUniform1ui64vNV", "glUniform2ui64vNV",
+ "glUniform3ui64vNV", "glUniform4ui64vNV", "glGetUniformi64vNV", "glGetUniformui64vNV", "glProgramUniform1i64NV", "glProgramUniform2i64NV",
+ "glProgramUniform3i64NV", "glProgramUniform4i64NV", "glProgramUniform1i64vNV", "glProgramUniform2i64vNV", "glProgramUniform3i64vNV",
+ "glProgramUniform4i64vNV", "glProgramUniform1ui64NV", "glProgramUniform2ui64NV", "glProgramUniform3ui64NV", "glProgramUniform4ui64NV",
+ "glProgramUniform1ui64vNV", "glProgramUniform2ui64vNV", "glProgramUniform3ui64vNV", "glProgramUniform4ui64vNV"
+ )) || reportMissing("GL", "GL_AMD_gpu_shader_int64");
+ }
+
+ private static boolean check_AMD_interleaved_elements(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_interleaved_elements")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1092
+ },
+ "glVertexAttribParameteriAMD"
+ )) || reportMissing("GL", "GL_AMD_interleaved_elements");
+ }
+
+ private static boolean check_AMD_occlusion_query_event(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_occlusion_query_event")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1093
+ },
+ "glQueryObjectParameteruiAMD"
+ )) || reportMissing("GL", "GL_AMD_occlusion_query_event");
+ }
+
+ private static boolean check_AMD_performance_monitor(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_performance_monitor")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104
+ },
+ "glGetPerfMonitorGroupsAMD", "glGetPerfMonitorCountersAMD", "glGetPerfMonitorGroupStringAMD", "glGetPerfMonitorCounterStringAMD",
+ "glGetPerfMonitorCounterInfoAMD", "glGenPerfMonitorsAMD", "glDeletePerfMonitorsAMD", "glSelectPerfMonitorCountersAMD", "glBeginPerfMonitorAMD",
+ "glEndPerfMonitorAMD", "glGetPerfMonitorCounterDataAMD"
+ )) || reportMissing("GL", "GL_AMD_performance_monitor");
+ }
+
+ private static boolean check_AMD_sample_positions(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_sample_positions")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1105
+ },
+ "glSetMultisamplefvAMD"
+ )) || reportMissing("GL", "GL_AMD_sample_positions");
+ }
+
+ private static boolean check_AMD_sparse_texture(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_sparse_texture")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1106, 1107
+ },
+ "glTexStorageSparseAMD", "glTextureStorageSparseAMD"
+ )) || reportMissing("GL", "GL_AMD_sparse_texture");
+ }
+
+ private static boolean check_AMD_stencil_operation_extended(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_stencil_operation_extended")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1108
+ },
+ "glStencilOpValueAMD"
+ )) || reportMissing("GL", "GL_AMD_stencil_operation_extended");
+ }
+
+ private static boolean check_AMD_vertex_shader_tessellator(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_AMD_vertex_shader_tessellator")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1109, 1110
+ },
+ "glTessellationFactorAMD", "glTessellationModeAMD"
+ )) || reportMissing("GL", "GL_AMD_vertex_shader_tessellator");
+ }
+
+ private static boolean check_ARB_base_instance(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_base_instance")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 864, 865, 866
+ },
+ "glDrawArraysInstancedBaseInstance", "glDrawElementsInstancedBaseInstance", "glDrawElementsInstancedBaseVertexBaseInstance"
+ )) || reportMissing("GL", "GL_ARB_base_instance");
+ }
+
+ private static boolean check_ARB_bindless_texture(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_bindless_texture")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126
+ },
+ "glGetTextureHandleARB", "glGetTextureSamplerHandleARB", "glMakeTextureHandleResidentARB", "glMakeTextureHandleNonResidentARB",
+ "glGetImageHandleARB", "glMakeImageHandleResidentARB", "glMakeImageHandleNonResidentARB", "glUniformHandleui64ARB", "glUniformHandleui64vARB",
+ "glProgramUniformHandleui64ARB", "glProgramUniformHandleui64vARB", "glIsTextureHandleResidentARB", "glIsImageHandleResidentARB",
+ "glVertexAttribL1ui64ARB", "glVertexAttribL1ui64vARB", "glGetVertexAttribLui64vARB"
+ )) || reportMissing("GL", "GL_ARB_bindless_texture");
+ }
+
+ private static boolean check_ARB_blend_func_extended(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_blend_func_extended")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 666, 667
+ },
+ "glBindFragDataLocationIndexed", "glGetFragDataIndex"
+ )) || reportMissing("GL", "GL_ARB_blend_func_extended");
+ }
+
+ private static boolean check_ARB_buffer_storage(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_buffer_storage")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 913, flag0 + 1127
+ },
+ "glBufferStorage", "glNamedBufferStorageEXT"
+ )) || reportMissing("GL", "GL_ARB_buffer_storage");
+ }
+
+ private static boolean check_ARB_cl_event(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_cl_event")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1128
+ },
+ "glCreateSyncFromCLeventARB"
+ )) || reportMissing("GL", "GL_ARB_cl_event");
+ }
+
+ private static boolean check_ARB_clear_buffer_object(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_clear_buffer_object")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 870, 871, flag0 + 1129, flag0 + 1130
+ },
+ "glClearBufferData", "glClearBufferSubData", "glClearNamedBufferDataEXT", "glClearNamedBufferSubDataEXT"
+ )) || reportMissing("GL", "GL_ARB_clear_buffer_object");
+ }
+
+ private static boolean check_ARB_clear_texture(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_clear_texture")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 914, 915
+ },
+ "glClearTexSubImage", "glClearTexImage"
+ )) || reportMissing("GL", "GL_ARB_clear_texture");
+ }
+
+ private static boolean check_ARB_clip_control(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_clip_control")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 922
+ },
+ "glClipControl"
+ )) || reportMissing("GL", "GL_ARB_clip_control");
+ }
+
+ private static boolean check_ARB_color_buffer_float(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_color_buffer_float")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1131
+ },
+ "glClampColorARB"
+ )) || reportMissing("GL", "GL_ARB_color_buffer_float");
+ }
+
+ private static boolean check_ARB_compute_shader(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_compute_shader")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 872, 873
+ },
+ "glDispatchCompute", "glDispatchComputeIndirect"
+ )) || reportMissing("GL", "GL_ARB_compute_shader");
+ }
+
+ private static boolean check_ARB_compute_variable_group_size(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_compute_variable_group_size")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1132
+ },
+ "glDispatchComputeGroupSizeARB"
+ )) || reportMissing("GL", "GL_ARB_compute_variable_group_size");
+ }
+
+ private static boolean check_ARB_copy_buffer(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_copy_buffer")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 637
+ },
+ "glCopyBufferSubData"
+ )) || reportMissing("GL", "GL_ARB_copy_buffer");
+ }
+
+ private static boolean check_ARB_copy_image(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_copy_image")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 874
+ },
+ "glCopyImageSubData"
+ )) || reportMissing("GL", "GL_ARB_copy_image");
+ }
+
+ private static boolean check_ARB_debug_output(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_debug_output")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1133, 1134, 1135, 1136
+ },
+ "glDebugMessageControlARB", "glDebugMessageInsertARB", "glDebugMessageCallbackARB", "glGetDebugMessageLogARB"
+ )) || reportMissing("GL", "GL_ARB_debug_output");
+ }
+
+ private static boolean check_ARB_direct_state_access(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_direct_state_access")) {
+ return false;
+ }
+
+ int flag0 = ARB_transform_feedback2(ext) ? 0 : Integer.MIN_VALUE;
+ int flag1 = ARB_uniform_buffer_object(ext) ? 0 : Integer.MIN_VALUE;
+ int flag6 = ARB_buffer_storage(ext) ? 0 : Integer.MIN_VALUE;
+ int flag7 = ARB_copy_buffer(ext) ? 0 : Integer.MIN_VALUE;
+ int flag8 = ARB_clear_texture(ext) ? 0 : Integer.MIN_VALUE;
+ int flag10 = ARB_map_buffer_range(ext) ? 0 : Integer.MIN_VALUE;
+ int flag12 = ARB_framebuffer_object(ext) ? 0 : Integer.MIN_VALUE;
+ int flag14 = ARB_framebuffer_no_attachments(ext) ? 0 : Integer.MIN_VALUE;
+ int flag20 = ARB_invalidate_subdata(ext) ? 0 : Integer.MIN_VALUE;
+ int flag34 = ARB_texture_buffer_object(ext) ? 0 : Integer.MIN_VALUE;
+ int flag35 = ARB_texture_buffer_range(ext) ? 0 : Integer.MIN_VALUE;
+ int flag36 = ARB_texture_storage(ext) ? 0 : Integer.MIN_VALUE;
+ int flag39 = ARB_texture_storage_multisample(ext) ? 0 : Integer.MIN_VALUE;
+ int flag42 = ARB_vertex_array_object(ext) ? 0 : Integer.MIN_VALUE;
+ int flag46 = ARB_vertex_attrib_binding(ext) ? 0 : Integer.MIN_VALUE;
+ int flag47 = ARB_multi_bind(ext) ? 0 : Integer.MIN_VALUE;
+ int flag56 = ARB_sampler_objects(ext) ? 0 : Integer.MIN_VALUE;
+ int flag57 = ARB_separate_shader_objects(ext) ? 0 : Integer.MIN_VALUE;
+ int flag58 = ARB_query_buffer_object(ext) ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ flag0 + 923, flag1 + 924, flag1 + 925, flag0 + 926, flag0 + 927, flag0 + 928, 929, flag6 + 930, 931, 932, flag7 + 933, flag8 + 934, flag8 + 935,
+ 936, flag10 + 937, 938, flag10 + 939, 940, 941, 942, 943, flag12 + 944, flag12 + 945, flag14 + 946, flag12 + 947, flag12 + 948, flag12 + 949,
+ flag12 + 950, flag12 + 951, flag20 + 952, flag20 + 953, flag12 + 954, flag12 + 955, flag12 + 956, flag12 + 957, flag12 + 958, flag12 + 959,
+ flag14 + 960, flag12 + 961, flag12 + 962, flag12 + 963, flag12 + 964, flag12 + 965, 966, flag34 + 967, flag35 + 968, flag36 + 969, flag36 + 970,
+ flag36 + 971, flag39 + 972, flag39 + 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, flag12 + 989, 990, 991, 992,
+ 993, 994, 995, 996, 997, 998, flag42 + 999, flag42 + 1000, flag42 + 1001, flag42 + 1002, flag46 + 1003, flag47 + 1004, flag46 + 1005, flag46 + 1006,
+ flag46 + 1007, flag46 + 1008, flag46 + 1009, flag42 + 1010, flag42 + 1011, flag42 + 1012, flag56 + 1013, flag57 + 1014, 1015, flag58 + 1018,
+ flag58 + 1016, flag58 + 1019, flag58 + 1017
+ },
+ "glCreateTransformFeedbacks", "glTransformFeedbackBufferBase", "glTransformFeedbackBufferRange", "glGetTransformFeedbackiv",
+ "glGetTransformFeedbacki_v", "glGetTransformFeedbacki64_v", "glCreateBuffers", "glNamedBufferStorage", "glNamedBufferData", "glNamedBufferSubData",
+ "glCopyNamedBufferSubData", "glClearNamedBufferData", "glClearNamedBufferSubData", "glMapNamedBuffer", "glMapNamedBufferRange",
+ "glUnmapNamedBuffer", "glFlushMappedNamedBufferRange", "glGetNamedBufferParameteriv", "glGetNamedBufferParameteri64v", "glGetNamedBufferPointerv",
+ "glGetNamedBufferSubData", "glCreateFramebuffers", "glNamedFramebufferRenderbuffer", "glNamedFramebufferParameteri", "glNamedFramebufferTexture",
+ "glNamedFramebufferTextureLayer", "glNamedFramebufferDrawBuffer", "glNamedFramebufferDrawBuffers", "glNamedFramebufferReadBuffer",
+ "glInvalidateNamedFramebufferData", "glInvalidateNamedFramebufferSubData", "glClearNamedFramebufferiv", "glClearNamedFramebufferuiv",
+ "glClearNamedFramebufferfv", "glClearNamedFramebufferfi", "glBlitNamedFramebuffer", "glCheckNamedFramebufferStatus",
+ "glGetNamedFramebufferParameteriv", "glGetNamedFramebufferAttachmentParameteriv", "glCreateRenderbuffers", "glNamedRenderbufferStorage",
+ "glNamedRenderbufferStorageMultisample", "glGetNamedRenderbufferParameteriv", "glCreateTextures", "glTextureBuffer", "glTextureBufferRange",
+ "glTextureStorage1D", "glTextureStorage2D", "glTextureStorage3D", "glTextureStorage2DMultisample", "glTextureStorage3DMultisample",
+ "glTextureSubImage1D", "glTextureSubImage2D", "glTextureSubImage3D", "glCompressedTextureSubImage1D", "glCompressedTextureSubImage2D",
+ "glCompressedTextureSubImage3D", "glCopyTextureSubImage1D", "glCopyTextureSubImage2D", "glCopyTextureSubImage3D", "glTextureParameterf",
+ "glTextureParameterfv", "glTextureParameteri", "glTextureParameterIiv", "glTextureParameterIuiv", "glTextureParameteriv", "glGenerateTextureMipmap",
+ "glBindTextureUnit", "glGetTextureImage", "glGetCompressedTextureImage", "glGetTextureLevelParameterfv", "glGetTextureLevelParameteriv",
+ "glGetTextureParameterfv", "glGetTextureParameterIiv", "glGetTextureParameterIuiv", "glGetTextureParameteriv", "glCreateVertexArrays",
+ "glDisableVertexArrayAttrib", "glEnableVertexArrayAttrib", "glVertexArrayElementBuffer", "glVertexArrayVertexBuffer", "glVertexArrayVertexBuffers",
+ "glVertexArrayAttribFormat", "glVertexArrayAttribIFormat", "glVertexArrayAttribLFormat", "glVertexArrayAttribBinding",
+ "glVertexArrayBindingDivisor", "glGetVertexArrayiv", "glGetVertexArrayIndexediv", "glGetVertexArrayIndexed64iv", "glCreateSamplers",
+ "glCreateProgramPipelines", "glCreateQueries", "glGetQueryBufferObjecti64v", "glGetQueryBufferObjectiv", "glGetQueryBufferObjectui64v",
+ "glGetQueryBufferObjectuiv"
+ )) || reportMissing("GL", "GL_ARB_direct_state_access");
+ }
+
+ private static boolean check_ARB_draw_buffers(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_draw_buffers")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1137
+ },
+ "glDrawBuffersARB"
+ )) || reportMissing("GL", "GL_ARB_draw_buffers");
+ }
+
+ private static boolean check_ARB_draw_buffers_blend(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_draw_buffers_blend")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1138, 1139, 1140, 1141
+ },
+ "glBlendEquationiARB", "glBlendEquationSeparateiARB", "glBlendFunciARB", "glBlendFuncSeparateiARB"
+ )) || reportMissing("GL", "GL_ARB_draw_buffers_blend");
+ }
+
+ private static boolean check_ARB_draw_elements_base_vertex(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_draw_elements_base_vertex")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 648, 649, 650, 651
+ },
+ "glDrawElementsBaseVertex", "glDrawRangeElementsBaseVertex", "glDrawElementsInstancedBaseVertex", "glMultiDrawElementsBaseVertex"
+ )) || reportMissing("GL", "GL_ARB_draw_elements_base_vertex");
+ }
+
+ private static boolean check_ARB_draw_indirect(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_draw_indirect")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 728, 729
+ },
+ "glDrawArraysIndirect", "glDrawElementsIndirect"
+ )) || reportMissing("GL", "GL_ARB_draw_indirect");
+ }
+
+ private static boolean check_ARB_draw_instanced(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_draw_instanced")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1142, 1143
+ },
+ "glDrawArraysInstancedARB", "glDrawElementsInstancedARB"
+ )) || reportMissing("GL", "GL_ARB_draw_instanced");
+ }
+
+ private static boolean check_ARB_ES2_compatibility(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_ES2_compatibility")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 770, 771, 772, 773, 774
+ },
+ "glReleaseShaderCompiler", "glShaderBinary", "glGetShaderPrecisionFormat", "glDepthRangef", "glClearDepthf"
+ )) || reportMissing("GL", "GL_ARB_ES2_compatibility");
+ }
+
+ private static boolean check_ARB_ES3_1_compatibility(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_ES3_1_compatibility")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1020
+ },
+ "glMemoryBarrierByRegion"
+ )) || reportMissing("GL", "GL_ARB_ES3_1_compatibility");
+ }
+
+ private static boolean check_ARB_ES3_2_compatibility(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_ES3_2_compatibility")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1144
+ },
+ "glPrimitiveBoundingBoxARB"
+ )) || reportMissing("GL", "GL_ARB_ES3_2_compatibility");
+ }
+
+ private static boolean check_ARB_framebuffer_no_attachments(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_framebuffer_no_attachments")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 885, 886, flag0 + 1145, flag0 + 1146
+ },
+ "glFramebufferParameteri", "glGetFramebufferParameteriv", "glNamedFramebufferParameteriEXT", "glGetNamedFramebufferParameterivEXT"
+ )) || reportMissing("GL", "GL_ARB_framebuffer_no_attachments");
+ }
+
+ private static boolean check_ARB_framebuffer_object(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_framebuffer_object")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614
+ },
+ "glIsRenderbuffer", "glBindRenderbuffer", "glDeleteRenderbuffers", "glGenRenderbuffers", "glRenderbufferStorage",
+ "glRenderbufferStorageMultisample", "glGetRenderbufferParameteriv", "glIsFramebuffer", "glBindFramebuffer", "glDeleteFramebuffers",
+ "glGenFramebuffers", "glCheckFramebufferStatus", "glFramebufferTexture1D", "glFramebufferTexture2D", "glFramebufferTexture3D",
+ "glFramebufferTextureLayer", "glFramebufferRenderbuffer", "glGetFramebufferAttachmentParameteriv", "glBlitFramebuffer", "glGenerateMipmap"
+ )) || reportMissing("GL", "GL_ARB_framebuffer_object");
+ }
+
+ private static boolean check_ARB_geometry_shader4(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_geometry_shader4")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1147, 1148, 1149, 1150
+ },
+ "glProgramParameteriARB", "glFramebufferTextureARB", "glFramebufferTextureLayerARB", "glFramebufferTextureFaceARB"
+ )) || reportMissing("GL", "GL_ARB_geometry_shader4");
+ }
+
+ private static boolean check_ARB_get_program_binary(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_get_program_binary")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 775, 776, 777
+ },
+ "glGetProgramBinary", "glProgramBinary", "glProgramParameteri"
+ )) || reportMissing("GL", "GL_ARB_get_program_binary");
+ }
+
+ private static boolean check_ARB_get_texture_sub_image(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_get_texture_sub_image")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1021, 1022
+ },
+ "glGetTextureSubImage", "glGetCompressedTextureSubImage"
+ )) || reportMissing("GL", "GL_ARB_get_texture_sub_image");
+ }
+
+ private static boolean check_ARB_gl_spirv(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_gl_spirv")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1151
+ },
+ "glSpecializeShaderARB"
+ )) || reportMissing("GL", "GL_ARB_gl_spirv");
+ }
+
+ private static boolean check_ARB_gpu_shader_fp64(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_gpu_shader_fp64")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747
+ },
+ "glUniform1d", "glUniform2d", "glUniform3d", "glUniform4d", "glUniform1dv", "glUniform2dv", "glUniform3dv", "glUniform4dv", "glUniformMatrix2dv",
+ "glUniformMatrix3dv", "glUniformMatrix4dv", "glUniformMatrix2x3dv", "glUniformMatrix2x4dv", "glUniformMatrix3x2dv", "glUniformMatrix3x4dv",
+ "glUniformMatrix4x2dv", "glUniformMatrix4x3dv", "glGetUniformdv"
+ )) || reportMissing("GL", "GL_ARB_gpu_shader_fp64");
+ }
+
+ private static boolean check_ARB_gpu_shader_int64(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_gpu_shader_int64")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+ 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204
+ },
+ "glUniform1i64ARB", "glUniform1i64vARB", "glProgramUniform1i64ARB", "glProgramUniform1i64vARB", "glUniform2i64ARB", "glUniform2i64vARB",
+ "glProgramUniform2i64ARB", "glProgramUniform2i64vARB", "glUniform3i64ARB", "glUniform3i64vARB", "glProgramUniform3i64ARB",
+ "glProgramUniform3i64vARB", "glUniform4i64ARB", "glUniform4i64vARB", "glProgramUniform4i64ARB", "glProgramUniform4i64vARB", "glUniform1ui64ARB",
+ "glUniform1ui64vARB", "glProgramUniform1ui64ARB", "glProgramUniform1ui64vARB", "glUniform2ui64ARB", "glUniform2ui64vARB",
+ "glProgramUniform2ui64ARB", "glProgramUniform2ui64vARB", "glUniform3ui64ARB", "glUniform3ui64vARB", "glProgramUniform3ui64ARB",
+ "glProgramUniform3ui64vARB", "glUniform4ui64ARB", "glUniform4ui64vARB", "glProgramUniform4ui64ARB", "glProgramUniform4ui64vARB",
+ "glGetUniformi64vARB", "glGetUniformui64vARB", "glGetnUniformi64vARB", "glGetnUniformui64vARB"
+ )) || reportMissing("GL", "GL_ARB_gpu_shader_int64");
+ }
+
+ private static boolean check_ARB_imaging(FunctionProvider provider, PointerBuffer caps, Set ext, boolean fc) {
+ if (!ext.contains("GL_ARB_imaging")) {
+ return false;
+ }
+
+ return ((fc || checkFunctions(provider, caps, new int[] {
+ 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
+ 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236
+ },
+ "glColorTable", "glCopyColorTable", "glColorTableParameteriv", "glColorTableParameterfv", "glGetColorTable", "glGetColorTableParameteriv",
+ "glGetColorTableParameterfv", "glColorSubTable", "glCopyColorSubTable", "glConvolutionFilter1D", "glConvolutionFilter2D",
+ "glCopyConvolutionFilter1D", "glCopyConvolutionFilter2D", "glGetConvolutionFilter", "glSeparableFilter2D", "glGetSeparableFilter",
+ "glConvolutionParameteri", "glConvolutionParameteriv", "glConvolutionParameterf", "glConvolutionParameterfv", "glGetConvolutionParameteriv",
+ "glGetConvolutionParameterfv", "glHistogram", "glResetHistogram", "glGetHistogram", "glGetHistogramParameteriv", "glGetHistogramParameterfv",
+ "glMinmax", "glResetMinmax", "glGetMinmax", "glGetMinmaxParameteriv", "glGetMinmaxParameterfv"
+ )) && checkFunctions(provider, caps, new int[] {
+ 386, 387
+ },
+ "glBlendColor", "glBlendEquation"
+ )) || reportMissing("GL", "GL_ARB_imaging");
+ }
+
+ private static boolean check_ARB_indirect_parameters(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_indirect_parameters")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1237, 1238
+ },
+ "glMultiDrawArraysIndirectCountARB", "glMultiDrawElementsIndirectCountARB"
+ )) || reportMissing("GL", "GL_ARB_indirect_parameters");
+ }
+
+ private static boolean check_ARB_instanced_arrays(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_instanced_arrays")) {
+ return false;
+ }
+
+ int flag0 = ext.contains("GL_EXT_direct_state_access") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1239
+ },
+ "glVertexAttribDivisorARB"
+ )) || reportMissing("GL", "GL_ARB_instanced_arrays");
+ }
+
+ private static boolean check_ARB_internalformat_query(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_internalformat_query")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 869
+ },
+ "glGetInternalformativ"
+ )) || reportMissing("GL", "GL_ARB_internalformat_query");
+ }
+
+ private static boolean check_ARB_internalformat_query2(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_internalformat_query2")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 887
+ },
+ "glGetInternalformati64v"
+ )) || reportMissing("GL", "GL_ARB_internalformat_query2");
+ }
+
+ private static boolean check_ARB_invalidate_subdata(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_invalidate_subdata")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 888, 889, 890, 891, 892, 893
+ },
+ "glInvalidateTexSubImage", "glInvalidateTexImage", "glInvalidateBufferSubData", "glInvalidateBufferData", "glInvalidateFramebuffer",
+ "glInvalidateSubFramebuffer"
+ )) || reportMissing("GL", "GL_ARB_invalidate_subdata");
+ }
+
+ private static boolean check_ARB_map_buffer_range(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_map_buffer_range")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 592, 593
+ },
+ "glMapBufferRange", "glFlushMappedBufferRange"
+ )) || reportMissing("GL", "GL_ARB_map_buffer_range");
+ }
+
+ private static boolean check_ARB_matrix_palette(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_matrix_palette")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1241, 1242, 1243, 1244, 1245
+ },
+ "glCurrentPaletteMatrixARB", "glMatrixIndexuivARB", "glMatrixIndexubvARB", "glMatrixIndexusvARB", "glMatrixIndexPointerARB"
+ )) || reportMissing("GL", "GL_ARB_matrix_palette");
+ }
+
+ private static boolean check_ARB_multi_bind(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_multi_bind")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 916, 917, 918, 919, 920, 921
+ },
+ "glBindBuffersBase", "glBindBuffersRange", "glBindTextures", "glBindSamplers", "glBindImageTextures", "glBindVertexBuffers"
+ )) || reportMissing("GL", "GL_ARB_multi_bind");
+ }
+
+ private static boolean check_ARB_multi_draw_indirect(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_multi_draw_indirect")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 894, 895
+ },
+ "glMultiDrawArraysIndirect", "glMultiDrawElementsIndirect"
+ )) || reportMissing("GL", "GL_ARB_multi_draw_indirect");
+ }
+
+ private static boolean check_ARB_multisample(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_multisample")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1246
+ },
+ "glSampleCoverageARB"
+ )) || reportMissing("GL", "GL_ARB_multisample");
+ }
+
+ private static boolean check_ARB_multitexture(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_multitexture")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
+ 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280
+ },
+ "glActiveTextureARB", "glClientActiveTextureARB", "glMultiTexCoord1fARB", "glMultiTexCoord1sARB", "glMultiTexCoord1iARB", "glMultiTexCoord1dARB",
+ "glMultiTexCoord1fvARB", "glMultiTexCoord1svARB", "glMultiTexCoord1ivARB", "glMultiTexCoord1dvARB", "glMultiTexCoord2fARB", "glMultiTexCoord2sARB",
+ "glMultiTexCoord2iARB", "glMultiTexCoord2dARB", "glMultiTexCoord2fvARB", "glMultiTexCoord2svARB", "glMultiTexCoord2ivARB", "glMultiTexCoord2dvARB",
+ "glMultiTexCoord3fARB", "glMultiTexCoord3sARB", "glMultiTexCoord3iARB", "glMultiTexCoord3dARB", "glMultiTexCoord3fvARB", "glMultiTexCoord3svARB",
+ "glMultiTexCoord3ivARB", "glMultiTexCoord3dvARB", "glMultiTexCoord4fARB", "glMultiTexCoord4sARB", "glMultiTexCoord4iARB", "glMultiTexCoord4dARB",
+ "glMultiTexCoord4fvARB", "glMultiTexCoord4svARB", "glMultiTexCoord4ivARB", "glMultiTexCoord4dvARB"
+ )) || reportMissing("GL", "GL_ARB_multitexture");
+ }
+
+ private static boolean check_ARB_occlusion_query(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_occlusion_query")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288
+ },
+ "glGenQueriesARB", "glDeleteQueriesARB", "glIsQueryARB", "glBeginQueryARB", "glEndQueryARB", "glGetQueryivARB", "glGetQueryObjectivARB",
+ "glGetQueryObjectuivARB"
+ )) || reportMissing("GL", "GL_ARB_occlusion_query");
+ }
+
+ private static boolean check_ARB_parallel_shader_compile(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_parallel_shader_compile")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1289
+ },
+ "glMaxShaderCompilerThreadsARB"
+ )) || reportMissing("GL", "GL_ARB_parallel_shader_compile");
+ }
+
+ private static boolean check_ARB_point_parameters(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_point_parameters")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1290, 1291
+ },
+ "glPointParameterfARB", "glPointParameterfvARB"
+ )) || reportMissing("GL", "GL_ARB_point_parameters");
+ }
+
+ private static boolean check_ARB_polygon_offset_clamp(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_polygon_offset_clamp")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1046
+ },
+ "glPolygonOffsetClamp"
+ )) || reportMissing("GL", "GL_ARB_polygon_offset_clamp");
+ }
+
+ private static boolean check_ARB_program_interface_query(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_program_interface_query")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 896, 897, 898, 899, 900, 901
+ },
+ "glGetProgramInterfaceiv", "glGetProgramResourceIndex", "glGetProgramResourceName", "glGetProgramResourceiv", "glGetProgramResourceLocation",
+ "glGetProgramResourceLocationIndex"
+ )) || reportMissing("GL", "GL_ARB_program_interface_query");
+ }
+
+ private static boolean check_ARB_provoking_vertex(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_provoking_vertex")) {
+ return false;
+ }
+
+ return (checkFunctions(provider, caps, new int[] {
+ 652
+ },
+ "glProvokingVertex"
+ )) || reportMissing("GL", "GL_ARB_provoking_vertex");
+ }
+
+ private static boolean check_ARB_robustness(FunctionProvider provider, PointerBuffer caps, Set ext) {
+ if (!ext.contains("GL_ARB_robustness")) {
+ return false;
+ }
+
+ int flag0 = provider.getFunctionAddress("glGetMapdv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag1 = provider.getFunctionAddress("glGetMapfv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag2 = provider.getFunctionAddress("glGetMapiv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag3 = provider.getFunctionAddress("glGetPixelMapfv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag4 = provider.getFunctionAddress("glGetPixelMapuiv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag5 = provider.getFunctionAddress("glGetPixelMapusv") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag6 = provider.getFunctionAddress("glGetPolygonStipple") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag7 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetColorTable") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag8 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetConvolutionFilter") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag9 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetSeparableFilter") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag10 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetHistogram") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag11 = ext.contains("GL_ARB_imaging") && provider.getFunctionAddress("glGetMinmax") != NULL ? 0 : Integer.MIN_VALUE;
+ int flag12 = ext.contains("OpenGL13") ? 0 : Integer.MIN_VALUE;
+ int flag13 = ext.contains("OpenGL20") ? 0 : Integer.MIN_VALUE;
+ int flag15 = ext.contains("OpenGL30") ? 0 : Integer.MIN_VALUE;
+ int flag16 = ext.contains("OpenGL40") ? 0 : Integer.MIN_VALUE;
+
+ return (checkFunctions(provider, caps, new int[] {
+ 1292, flag0 + 1293, flag1 + 1294, flag2 + 1295, flag3 + 1296, flag4 + 1297, flag5 + 1298, flag6 + 1299, 1300, 1301, flag7 + 1302, flag8 + 1303,
+ flag9 + 1304, flag10 + 1305, flag11 + 1306, flag12 + 1307, flag13 + 1308, flag13 + 1309, flag15 + 1310, flag16 + 1311
+ },
+ "glGetGraphicsResetStatusARB", "glGetnMapdvARB", "glGetnMapfvARB", "glGetnMapivARB", "glGetnPixelMapfvARB", "glGetnPixelMapuivARB",
+ "glGetnPixelMapusvARB", "glGetnPolygonStippleARB", "glGetnTexImageARB", "glReadnPixelsARB", "glGetnColorTableARB", "glGetnConvolutionFilterARB",
+ "glGetnSeparableFilterARB", "glGetnHistogramARB", "glGetnMinmaxARB", "glGetnCompressedTexImageARB", "glGetnUniformfvARB", "glGetnUniformivARB",
+ "glGetnUniformuivARB", "glGetnUniformdvARB"
+ )) || reportMissing("GL", "GL_ARB_robustness");
+ }
+
+ private static boolean check_ARB_sample_locations(FunctionProvider provider, PointerBuffer caps, Set