]> git.mxchange.org Git - simgear.git/blobdiff - simgear/screen/texture.hxx
Don't bother other develoers with problems caused by MipsPro (version < 7.3) compilers
[simgear.git] / simgear / screen / texture.hxx
index 7a947429e207d09e51a8c2e8d2808ba0e9cb74c4..bb99b5c2dec5932db576d465d997efb8f99bd03d 100644 (file)
@@ -67,6 +67,7 @@ protected:
 #else
         glDeleteTexturesEXT(1, &texture_id);
 #endif
+        texture_id = 0;
     }
 
 
@@ -82,7 +83,7 @@ public:
     void read_raw_texture(const char *name);
     void read_r8_texture(const char *name);
 
-    inline bool usable() { return texture_data ? true : false; }
+    inline bool usable() { return (texture_id > 0) ? true : false; }
 
     inline GLuint id() { return texture_id; }
     inline GLubyte *texture() { return texture_data; }
@@ -98,19 +99,20 @@ public:
     void prepare(unsigned int width = 256, unsigned int height = 256);
     void finish(unsigned int width, unsigned int height);
 
-#if 0
     // texture pixel manipulation functions.
     void set_pixel(GLuint x, GLuint y, sgVec3 &c);
-    sgVec3 *get_pixel(GLuint x, GLuint y);
-#endif
+    float *get_pixel(GLuint x, GLuint y);
 
     void bind();
-    inline void select() {
+    inline void select(bool keep_data = false) {
         glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB,
                       texture_width, texture_height, 0,
                       GL_RGB, GL_UNSIGNED_BYTE, texture_data );
 
-        delete texture_data;
+        if (!keep_data) {
+            delete[] texture_data;
+            texture_data = 0;
+        }
     }
 
     // Nowhere does it say that resident textures have to be in video memory!