MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / standard

Method standard

src/main/java/field/graphics/BaseMesh.java:304–351  ·  view source on GitHub ↗
(int numVertex, int numElements, int primitiveType, int primitiveSize)

Source from the content-addressed store, hash-verified

302 }
303
304 static public BaseMesh standard(int numVertex, int numElements, int primitiveType, int primitiveSize) {
305 BaseMesh m = new BaseMesh() {
306 protected boolean performNow() {
307
308 if (GraphicsContext.getContext().stateTracker.shader.get() == 0) {
309 System.err.println("trying to draw geometry (" + this + ") without a shader attached will draw nothing");
310 return true;
311 }
312
313 GraphicsContext.checkError(() -> "on entry " + this);
314
315 int ii = instances.get();
316
317 if (ii == 0) {
318 if (primitiveSize == 0) {
319 glDrawArrays(primitiveType, 0, limitVertex);
320 } else {
321 Log.log("graphics.trace", () -> "drawing " + primitiveType + " " + limitElement + " " + primitiveSize + " " + GraphicsContext.getContext()
322 .stateTracker.fbo.get());
323 Log.log("graphics.trace", () -> "target FBO is complete ? " + GL30.glCheckFramebufferStatus(GL30.GL_DRAW_FRAMEBUFFER));
324 GraphicsContext.checkError(() -> "before draw " + this);
325 glDrawElements(primitiveType, limitElement * primitiveSize, GL_UNSIGNED_INT, 0);
326 GraphicsContext.checkError(() -> "after draw " + this);
327 }
328 } else {
329 if (primitiveSize == 0) {
330 glDrawArraysInstanced(primitiveType, 0, limitVertex, ii);
331 } else {
332 Log.log("graphics.trace", () -> "drawing " + primitiveType + " " + limitElement + " " + primitiveSize + " " + GraphicsContext.getContext()
333 .stateTracker.fbo.get());
334 Log.log("graphics.trace", () -> "target FBO is complete ? " + GL30.glCheckFramebufferStatus(GL30.GL_DRAW_FRAMEBUFFER));
335 GraphicsContext.checkError(() -> "before draw " + this);
336 glDrawElementsInstanced(primitiveType, limitElement * primitiveSize, GL_UNSIGNED_INT, 0, ii);
337 GraphicsContext.checkError(() -> "after draw " + this);
338 }
339
340 }
341 GraphicsContext.checkError(() -> "on exit " + this);
342 return true;
343 }
344 };
345 m.setVertexMax(numVertex);
346 if (primitiveSize > 0) {
347 m.setElements(new SimpleArrayBuffer(numElements, GL_ELEMENT_ARRAY_BUFFER, -1, primitiveSize, 0));
348 m.setElementMax(numElements);
349 }
350 return m;
351 }
352
353 /**
354 * returns a new BaseMesh that draws up to numPoints.

Callers 5

pointListMethod · 0.95
lineListMethod · 0.95
lineAdjecencyListMethod · 0.95
triangleAdjacencyListMethod · 0.95
triangleListMethod · 0.95

Calls 3

setVertexMaxMethod · 0.95
setElementsMethod · 0.95
setElementMaxMethod · 0.95

Tested by

no test coverage detected