@Override public void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels) { if (pixels == null) { gl.texImage2D(target, level, internalformat, width, height, border, format, type, null); } else { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView)pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); } gl.texImage2D(target, level, internalformat, width, height, border, format, type, buffer); } else { Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer)pixels).get(0)); // Prefer to use the HTMLImageElement when possible, since reading from the CanvasElement can be lossy. if (pixmap.canUseImageElement()) { gl.texImage2D(target, level, internalformat, format, type, pixmap.getImageElement()); } else { gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } } } }
@Override public void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels) { if (pixels == null) { gl.texImage2D(target, level, internalformat, width, height, border, format, type, null); } else { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView)pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); } gl.texImage2D(target, level, internalformat, width, height, border, format, type, buffer); } else { Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer)pixels).get(0)); // Prefer to use the HTMLImageElement when possible, since reading from the CanvasElement can be lossy. if (pixmap.canUseImageElement()) { gl.texImage2D(target, level, internalformat, format, type, pixmap.getImageElement()); } else { gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } } } }
@Override public void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels) { if (pixels == null) { gl.texImage2D(target, level, internalformat, width, height, border, format, type, null); } else { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView)pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); } gl.texImage2D(target, level, internalformat, width, height, border, format, type, buffer); } else { Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer)pixels).get(0)); // Prefer to use the HTMLImageElement when possible, since reading from the CanvasElement can be lossy. if (pixmap.canUseImageElement()) { gl.texImage2D(target, level, internalformat, format, type, pixmap.getImageElement()); } else { gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } } } }