Fail to load DDS with NV_DDS utility under linux

Hi All. I posted this question on SO but got no answer so I am asking it here.Hopefully someone can shed some light.I am using nvidia DDS load utility to load DDS (DXT5).On windows 7 it works great.But now I cross compile my engine on Linux platform (Ubuntu 12.10)
and it fails at DDS header read.

This block :

    // open file    FILE *fp = fopen(filename.c_str(),"rb");
    if (fp == NULL) {
        return false;
    // read in file marker, make sure its a DDS file
    char filecode[4];
    fread(filecode, 1, 4, fp);
    if (strncmp(filecode, "DDS ", 4) != 0) {
        return false;
    // read in DDS header
    DDS_HEADER ddsh;

    fread(&ddsh, 1,sizeof( DDS_HEADER ), fp);//sizeof( DDS_HEADER )

First fread() reads the “magic word” all right.But the second one fills ddsh header struct with wrong data.How can it be? The utility is said to be Windows/Linux compatible.Maybe the header size is interpreted differently between the platforms?Anyone can test it on Ubuntu and confirm it works or not ?Thanks.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.