mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
Use loaded flag to upate texture object, and image format when setting
pixels. Fixes #1830
This commit is contained in:
@@ -5773,7 +5773,7 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
Texture tex = (Texture)initCache(img);
|
||||
if (tex == null) return null;
|
||||
|
||||
if (img.isModified()) {
|
||||
if (img.isModified() || img.isLoaded()) {
|
||||
if (img.width != tex.width || img.height != tex.height) {
|
||||
tex.init(img.width, img.height);
|
||||
}
|
||||
@@ -5801,7 +5801,8 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
tex = addTexture(img);
|
||||
if (tex != null) {
|
||||
img.loadPixels();
|
||||
tex.set(img.pixels);
|
||||
tex.set(img.pixels, img.format);
|
||||
img.setLoaded(false);
|
||||
}
|
||||
}
|
||||
return tex;
|
||||
@@ -5897,6 +5898,7 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
tex.set(img.pixels, x, y, w, h, img.format);
|
||||
}
|
||||
img.setModified(false);
|
||||
img.setLoaded(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -524,21 +524,21 @@ public class Texture implements PConstants {
|
||||
* Copies the contents of the texture to the pixels array.
|
||||
* @param pixels
|
||||
*/
|
||||
public void loadPixels(int[] pixels) {
|
||||
if (hasBuffers()) {
|
||||
// Updates the texture AND the pixels array of the image at the same time,
|
||||
// getting the pixels directly from the buffer data (and thus avoiding
|
||||
// expensive transfer between video and main memory).
|
||||
bufferUpdate(pixels);
|
||||
}
|
||||
|
||||
if (isModified()) {
|
||||
// Regular pixel copy from texture.
|
||||
get(pixels);
|
||||
}
|
||||
|
||||
setModified(false);
|
||||
}
|
||||
// public void loadPixels(int[] pixels) {
|
||||
// if (hasBuffers()) {
|
||||
// // Updates the texture AND the pixels array of the image at the same time,
|
||||
// // getting the pixels directly from the buffer data (and thus avoiding
|
||||
// // expensive transfer between video and main memory).
|
||||
// bufferUpdate(pixels);
|
||||
// }
|
||||
//
|
||||
// if (isModified()) {
|
||||
// // Regular pixel copy from texture.
|
||||
// get(pixels);
|
||||
// }
|
||||
//
|
||||
// setModified(false);
|
||||
// }
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user