Use loaded flag to upate texture object, and image format when setting

pixels. Fixes #1830
This commit is contained in:
codeanticode
2013-05-30 10:57:58 -04:00
parent 3a24d67840
commit a3fabaf246
2 changed files with 19 additions and 17 deletions
@@ -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);
}
+15 -15
View File
@@ -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);
// }
////////////////////////////////////////////////////////////