Hi,
I'm working on r20, and I found I can't use BaseShader::BakeShaderIntoBaseBitmap() because it is a new feature in r21. Trying find a way around, I want to extract the bitmap of the layer shader. However, my code does not work.
BaseBitmap* diffuseBitmap ;
GeData gd;
BaseShader* shader = bm->GetChannel(CHANNEL_DIFFUSION)->GetShader();
if (shader->GetType() == Xlayer) {
LayerShader* layerShader = static_cast<LayerShader*>(shader);
LayerShaderLayer* layerShaderLayer = layerShader->GetFirstLayer();
while (layerShaderLayer != NULL)
{
if (layerShaderLayer->GetType() == LayerType::TypeShader)
{
Bool res = layerShaderLayer->GetParameter(LAYER_S_PARAM_SHADER_LINK, gd);
// diffuseBitmap = layerShaderLayer->GetPreview(); // this does not work, too!
BaseLink *bl = gd.GetBaseLink(); // program stop here, and I can't see why
BaseShader *thisShader = static_cast<BaseShader*>(bl->GetLinkAtom(bd));
thisShader->InitRender(irs);
diffuseBitmap = thisShader->GetBitmap();
thisShader->FreeRender();
break;
}
layerShaderLayer = layerShaderLayer->GetNext();
}
}
else
{
// ...
}
ShowBitmap(diffuseBitmap); // can't see anything here when using 'layerShaderLayer->GetPreview()'
diffuseBitmap->Save(fn, FILTER_JPG, nullptr, SAVEBIT::NONE); // fail when using 'GetPreview()'
Could anyone kindly explain where I am doing wrong? Thanks a lot!