Fix EXR loading code. Issue 45. Fix provided by alastairpatrick.
This commit is contained in:
parent
ea340443d9
commit
e068964423
@ -1328,6 +1328,23 @@ namespace
|
|||||||
Stream & m_stream;
|
Stream & m_stream;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int channelIndexFromName(const char* name)
|
||||||
|
{
|
||||||
|
char c = tolower(name[0]);
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case 'r':
|
||||||
|
return 0;
|
||||||
|
case 'g':
|
||||||
|
return 1;
|
||||||
|
case 'b':
|
||||||
|
return 2;
|
||||||
|
case 'a':
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
FloatImage * nv::ImageIO::loadFloatEXR(const char * fileName, Stream & s)
|
FloatImage * nv::ImageIO::loadFloatEXR(const char * fileName, Stream & s)
|
||||||
@ -1361,7 +1378,8 @@ FloatImage * nv::ImageIO::loadFloatEXR(const char * fileName, Stream & s)
|
|||||||
uint i = 0;
|
uint i = 0;
|
||||||
for (Imf::ChannelList::ConstIterator it = channels.begin(); it != channels.end(); ++it, ++i)
|
for (Imf::ChannelList::ConstIterator it = channels.begin(); it != channels.end(); ++it, ++i)
|
||||||
{
|
{
|
||||||
frameBuffer.insert(it.name(), Imf::Slice(Imf::FLOAT, (char *)fimage->channel(i), sizeof(float), sizeof(float) * width));
|
int channelIndex = channelIndexFromName(it.name());
|
||||||
|
frameBuffer.insert(it.name(), Imf::Slice(Imf::FLOAT, (char *)fimage->channel(channelIndex), sizeof(float), sizeof(float) * width));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read it.
|
// Read it.
|
||||||
@ -1525,7 +1543,7 @@ bool nv::ImageIO::saveFloatPFM(const char * fileName, const FloatImage * fimage,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning(disable : 4996)
|
//#pragma warning(disable : 4996)
|
||||||
|
|
||||||
NVIMAGE_API FloatImage * nv::ImageIO::loadGridFloat(const char * fileName, Stream & s)
|
NVIMAGE_API FloatImage * nv::ImageIO::loadGridFloat(const char * fileName, Stream & s)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user