|
在OPENGL中可以用BLEND的方法实现纹理中某一颜色(比如纯黑或者纯白),在OSG中能实现这样的效果吗,我现在是以视频文件中的每一帧作为纹理,想实现黑色的部分为透明色,但不知道该怎么做。
如果用osg::Image直接打开一个带alpha通道的纹理是有透明效果的,但是如果自己定义了一个osg::Image然后填充数据却实现不了透明效果。我觉得可能是我填充数据时可能有问题,代码如下。请大家帮帮忙啊!
osg::Image* osgImg = new osg::Image();
osgImg->setImage(
cvImg->width, //s
cvImg->height, //t
3, //r
GL_LINE_STRIP, //GLint internalTextureformat, (GL_LINE_STRIP, 0x0003)
GL_RGB, // GLenum pixelFormat, (GL_RGB, 0x1907)
GL_UNSIGNED_BYTE, // GLenum type, (GL_UNSIGNED_BYTE, 0x1401)
(BYTE*)(cvImg->imageData), // unsigned char* data
osg::Image::AllocationMode::NO_DELETE // AllocationMode mode (shallow copy)
);//int packing=1); |
|