|
我想实现滚动纹理,方法如下:每一帧渲染都做如下处理,我把每一帧的image_c 都保存成bmp下来了,效果是对的,但现实到模型上就不对,纹理好像只改变了一次,为什么?谢谢!
txtOldTexture是我每一帧都得到的纹理,没有一帧是null
- osg::Image *image_c=new osg::Image();
- image_c->allocateImage(64,64,1,GL_RGB,GL_UNSIGNED_BYTE);
- image_c=txtOldTexture->getImage();
- unsigned char* pD=image_c->data();
- for(y=0;y<63;y++)
- {
- for(x=0;x<64;x++)
- {
- pDa[2]=pD[(0)*64*3+x*3+2];
- pDa[1]=pD[(0)*64*3+x*3+1];
- pDa[0]=pD[(0)*64*3+x*3+0];
- pDat[2]=pD[(y+1)*64*3+x*3+2];
- pDat[1]=pD[(y+1)*64*3+x*3+1];
- pDat[0]=pD[(y+1)*64*3+x*3+0];
- pD[(y)*64*3+x*3+2]=pDat[2];
- pD[(y)*64*3+x*3+1]=pDat[1];
- pD[(y)*64*3+x*3+0]=pDat[0];
- }
- }
- for(x=0;x<64;x++)
- {
- pD[63*64*3+x*3+2]=pDa[2];
- pD[63*64*3+x*3+1]=pDa[1];
- pD[63*64*3+x*3+0]=pDa[0];
- }
- txtOldTexture->setImage(image_c);
复制代码 |
|