osg::Image* createImage3DWithAlpha(const ImageList& imageList, int s_maximumImageSize, int t_maximumImageSize, int r_maximumImageSize, bool resizeToPowerOfTwo) { GLenum desiredPixelFormat = 0; bool modulateAlphaByLuminance = false; unsigned int maxNumComponents = maximimNumOfComponents(imageList); if (maxNumComponents==3) { desiredPixelFormat = GL_RGBA; modulateAlphaByLuminance = true; } osg::ref_ptr<osg::Image> image = createImage3D(imageList, desiredPixelFormat, s_maximumImageSize, t_maximumImageSize, r_maximumImageSize, resizeToPowerOfTwo); if (image.valid()) { if (modulateAlphaByLuminance) { modifyImage(image.get(), ModulateAlphaByLuminanceOperator()); } return image.release(); } else { return 0; } }
OpenCLImage* OpenCL::createImage2D(int width, int height, cl_channel_order imageChannelOrder, cl_channel_type imageChannelDataType, cl_mem_flags memFlags, void *dataPtr, bool blockingWrite) { return createImage3D(width, height, 1, imageChannelOrder, imageChannelDataType, memFlags, dataPtr, blockingWrite); }