Browse Source

fix issue with rgb + alpha movie textures

David Rose 13 years ago
parent
commit
8b53d19a68
1 changed files with 6 additions and 6 deletions
  1. 6 6
      panda/src/movies/movieVideoCursor.cxx

+ 6 - 6
panda/src/movies/movieVideoCursor.cxx

@@ -211,24 +211,24 @@ apply_to_texture_alpha(const Buffer *buffer, Texture *t, int page, int alpha_src
   unsigned char *data = img.p() + page * t->get_expected_ram_page_size();
   
   PStatTimer timer2(_copy_pcollector_copy);
-  int src_stride = size_x() * get_num_components();
+  int src_width = get_num_components();
+  int src_stride = size_x() * src_width;
   int dst_stride = t->get_x_size() * 4;
+  unsigned char *p = buffer->_block;
   if (alpha_src == 0) {
-    unsigned char *p = buffer->_block;
     for (int y=0; y<size_y(); y++) {
       for (int x=0; x<size_x(); x++) {
-        data[x*4+3] = (p[x*4+0] + p[x*4+1] + p[x*4+2]) / 3;
+        unsigned char *pp = &p[x * src_width];
+        data[x*4+3] = (pp[0] + pp[1] + pp[2]) / 3;
       }
       data += dst_stride;
       p += src_stride;
     }
   } else {
     alpha_src -= 1;
-    unsigned char *p = buffer->_block;
-    int src_width = get_num_components();
     for (int y=0; y<size_y(); y++) {
       for (int x=0; x<size_x(); x++) {
-        data[x*4+3] = p[x *src_width + alpha_src];
+        data[x*4+3] = p[x * src_width + alpha_src];
       }
       data += dst_stride;
       p += src_stride;