Hi, For the lurker coming here for Awesomium, use the following code. The key is to use the unpack alignment settings.
Very non optimized and copied from https://github.com/assertfail/bezel-webkit/blob/master/Source/wkSurface.cpp Code: void nr::awe::Drawer::operator() (const osg::Camera& cam) const { OpenThreads::ScopedLock<OpenThreads::Mutex> lock(mutex); if (paints.size()<1) return; //if ( ! gGc->getState() ) //return; auto cid = gGc->getState()->getContextID(); if ( NULL == awe::texture->getTextureObject( cid ) ) return; auto obj = awe::texture->getTextureObject( cid ); obj->bind(); int bpp = 4; int stride = nr::width * 4; for ( auto p : paints ) { glPixelStorei(GL_UNPACK_ROW_LENGTH, stride/bpp); glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, p.dest_rect.height); glPixelStorei(GL_UNPACK_SKIP_PIXELS, p.dest_rect.x); glPixelStorei(GL_UNPACK_SKIP_ROWS, p.dest_rect.y); glTexSubImage2D( GL_TEXTURE_2D, 0, p.dest_rect.x, p.dest_rect.y, p.dest_rect.width, p.dest_rect.height, GL_BGRA, GL_UNSIGNED_BYTE, p.src_buffer); //unsigned char* a = &p.src_buffer[0]; //glTexSubImage2D(GL_TEXTURE_2D, 0, p.dest_rect.x, p.dest_rect.y, p.dest_rect.width, p.dest_rect.height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, a); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); delete p.src_buffer; } paints.clear(); } void nr::awe::Zurface::Paint(unsigned char* buffer, int ss, const Awesomium::Rect& sr, const Awesomium::Rect& dr) { int row; int bpp = 4; int stride = nr::width * 4; unsigned char* store = (unsigned char*) malloc(nr::height * stride); memset(store, 0, height * stride); // copy the region to our store for (row = 0 ; row < dr.height ; ++row) memcpy(store+(row+dr.y)*stride+(dr.x*bpp), buffer+(row+sr.y)*ss+(sr.x*4), dr.width*bpp); //memcpy(copy, src_buffer, src_row_span * src_rect.height); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(mutex); paints.push_back( {store, ss, sr, dr} ); }; Thank you! Cheers, Johny ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=70405#70405 _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org