mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
don't use vertex arrays anymore
This commit is contained in:
@@ -911,7 +911,7 @@ public abstract class PGL {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int texGeoVBO;
|
||||
protected void drawTexture2D(int id, int texW, int texH, int scrW, int scrH,
|
||||
int texX0, int texY0, int texX1, int texY1,
|
||||
int scrX0, int scrY0, int scrX1, int scrY1) {
|
||||
@@ -927,6 +927,11 @@ public abstract class PGL {
|
||||
}
|
||||
loadedTex2DShader = true;
|
||||
tex2DShaderContext = glContext;
|
||||
|
||||
genBuffers(1, intBuffer);
|
||||
texGeoVBO = intBuffer.get(0);
|
||||
bindBuffer(ARRAY_BUFFER, texGeoVBO);
|
||||
bufferData(ARRAY_BUFFER, 16 * SIZEOF_FLOAT, null, STATIC_DRAW);
|
||||
}
|
||||
|
||||
if (texData == null) {
|
||||
@@ -989,16 +994,27 @@ public abstract class PGL {
|
||||
}
|
||||
bindTexture(TEXTURE_2D, id);
|
||||
|
||||
bindBuffer(ARRAY_BUFFER, 0); // Making sure that no VBO is bound at this point.
|
||||
|
||||
texData.position(0);
|
||||
vertexAttribPointer(tex2DVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
texData);
|
||||
texData.position(2);
|
||||
vertexAttribPointer(tex2DTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
texData);
|
||||
bindBuffer(PGL.ARRAY_BUFFER, texGeoVBO);
|
||||
bufferData(PGL.ARRAY_BUFFER, 16 * SIZEOF_FLOAT, texData, PGL.STATIC_DRAW);
|
||||
|
||||
pg.report("HERE 1");
|
||||
vertexAttribPointer(tex2DVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT, 0);
|
||||
vertexAttribPointer(tex2DTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT, 2 * SIZEOF_FLOAT);
|
||||
|
||||
|
||||
// texData.position(0);
|
||||
// vertexAttribPointer(tex2DVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
// texData);
|
||||
// texData.position(2);
|
||||
// vertexAttribPointer(tex2DTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
// texData);
|
||||
// pg.report("HERE 2");
|
||||
|
||||
drawArrays(TRIANGLE_STRIP, 0, 4);
|
||||
pg.report("HERE 3");
|
||||
|
||||
bindBuffer(ARRAY_BUFFER, 0); // Making sure that no VBO is bound at this point.
|
||||
|
||||
bindTexture(TEXTURE_2D, 0);
|
||||
if (enabledTex) {
|
||||
@@ -1039,6 +1055,11 @@ public abstract class PGL {
|
||||
}
|
||||
loadedTexRectShader = true;
|
||||
texRectShaderContext = glContext;
|
||||
|
||||
genBuffers(1, intBuffer);
|
||||
texGeoVBO = intBuffer.get(0);
|
||||
bindBuffer(ARRAY_BUFFER, texGeoVBO);
|
||||
bufferData(ARRAY_BUFFER, 16 * SIZEOF_FLOAT, null, STATIC_DRAW);
|
||||
}
|
||||
|
||||
if (texData == null) {
|
||||
@@ -1101,17 +1122,26 @@ public abstract class PGL {
|
||||
}
|
||||
bindTexture(TEXTURE_RECTANGLE, id);
|
||||
|
||||
bindBuffer(ARRAY_BUFFER, 0); // Making sure that no VBO is bound at this point.
|
||||
|
||||
texData.position(0);
|
||||
vertexAttribPointer(texRectVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
texData);
|
||||
texData.position(2);
|
||||
vertexAttribPointer(texRectTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
texData);
|
||||
bindBuffer(PGL.ARRAY_BUFFER, texGeoVBO);
|
||||
bufferData(PGL.ARRAY_BUFFER, 16 * SIZEOF_FLOAT, texData, PGL.STATIC_DRAW);
|
||||
|
||||
pg.report("HERE 1");
|
||||
vertexAttribPointer(texRectVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT, 0);
|
||||
vertexAttribPointer(texRectTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT, 2 * SIZEOF_FLOAT);
|
||||
|
||||
|
||||
// texData.position(0);
|
||||
// vertexAttribPointer(texRectVertLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
// texData);
|
||||
// texData.position(2);
|
||||
// vertexAttribPointer(texRectTCoordLoc, 2, FLOAT, false, 4 * SIZEOF_FLOAT,
|
||||
// texData);
|
||||
|
||||
drawArrays(TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
bindBuffer(ARRAY_BUFFER, 0); // Making sure that no VBO is bound at this point.
|
||||
|
||||
bindTexture(TEXTURE_RECTANGLE, 0);
|
||||
if (enabledTex) {
|
||||
disableTexturing(TEXTURE_RECTANGLE);
|
||||
@@ -2391,12 +2421,12 @@ public abstract class PGL {
|
||||
public abstract void vertexAttrib3fv(int index, FloatBuffer values);
|
||||
public abstract void vertexAttri4fv(int index, FloatBuffer values);
|
||||
public abstract void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, int offset);
|
||||
public abstract void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, Buffer data);
|
||||
//public abstract void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, Buffer data);
|
||||
public abstract void enableVertexAttribArray(int index);
|
||||
public abstract void disableVertexAttribArray(int index);
|
||||
public abstract void drawArrays(int mode, int first, int count);
|
||||
public abstract void drawElements(int mode, int count, int type, int offset);
|
||||
public abstract void drawElements(int mode, int count, int type, Buffer indices);
|
||||
//public abstract void drawElements(int mode, int count, int type, Buffer indices);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -1629,7 +1629,6 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
}
|
||||
setDrawDefaults(); // TODO: look at using checkSettings() instead...
|
||||
|
||||
|
||||
pgCurrent = this;
|
||||
drawing = true;
|
||||
|
||||
@@ -5259,7 +5258,6 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
|
||||
// First, copy the pixels to the texture. We don't need to invert the
|
||||
// pixel copy because the texture will be drawn inverted.
|
||||
|
||||
pgl.copyToTexture(texture.glTarget, texture.glFormat, texture.glName,
|
||||
x, y, w, h, nativePixelBuffer);
|
||||
beginPixelsOp(OP_WRITE);
|
||||
@@ -6211,9 +6209,7 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
|
||||
if (restoreSurface) {
|
||||
restoreSurfaceFromPixels();
|
||||
//if (1 < parent.frameCount) {
|
||||
restoreSurface = false;
|
||||
//}
|
||||
}
|
||||
|
||||
if (hints[DISABLE_DEPTH_MASK]) {
|
||||
|
||||
@@ -985,6 +985,29 @@ public class PJOGL extends PGL {
|
||||
// Utility functions
|
||||
|
||||
|
||||
@Override
|
||||
protected void enableTexturing(int target) {
|
||||
if (PROFILE == 2) enable(target);
|
||||
if (target == TEXTURE_2D) {
|
||||
texturingTargets[0] = true;
|
||||
} else if (target == TEXTURE_RECTANGLE) {
|
||||
texturingTargets[1] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void disableTexturing(int target) {
|
||||
if (PROFILE == 2) disable(target);
|
||||
if (target == TEXTURE_2D) {
|
||||
texturingTargets[0] = false;
|
||||
} else if (target == TEXTURE_RECTANGLE) {
|
||||
texturingTargets[1] = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected int getFontAscent(Object font) {
|
||||
FontMetrics metrics = pg.parent.getFontMetrics((Font)font);
|
||||
@@ -1670,14 +1693,14 @@ public class PJOGL extends PGL {
|
||||
gl2.glVertexAttribPointer(index, size, type, normalized, stride, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, Buffer data) {
|
||||
if (gl2x != null) {
|
||||
gl2x.glVertexAttribPointer(index, size, type, normalized, stride, data);
|
||||
} else if (gl3bc != null) {
|
||||
gl3bc.glVertexAttribPointer(index, size, type, normalized, stride, data);
|
||||
}
|
||||
}
|
||||
// @Override
|
||||
// public void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, Buffer data) {
|
||||
// if (gl2x != null) {
|
||||
// gl2x.glVertexAttribPointer(index, size, type, normalized, stride, data);
|
||||
// } else if (gl3bc != null) {
|
||||
// gl3bc.glVertexAttribPointer(index, size, type, normalized, stride, data);
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void enableVertexAttribArray(int index) {
|
||||
@@ -1699,14 +1722,14 @@ public class PJOGL extends PGL {
|
||||
gl.glDrawElements(mode, count, type, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawElements(int mode, int count, int type, Buffer indices) {
|
||||
if (gl2x != null) {
|
||||
gl2x.glDrawElements(mode, count, type, indices);
|
||||
} else if (gl3bc != null) {
|
||||
gl3bc.glDrawElements(mode, count, type, indices);
|
||||
}
|
||||
}
|
||||
// @Override
|
||||
// public void drawElements(int mode, int count, int type, Buffer indices) {
|
||||
// if (gl2x != null) {
|
||||
// gl2x.glDrawElements(mode, count, type, indices);
|
||||
// } else if (gl3bc != null) {
|
||||
// gl3bc.glDrawElements(mode, count, type, indices);
|
||||
// }
|
||||
// }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
Reference in New Issue
Block a user