Loading assimp

Dlearner via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Mar 26 05:40:42 PDT 2017


On Sunday, 26 March 2017 at 11:10:55 UTC, ag0aep6g wrote:
> On Sunday, 26 March 2017 at 10:34:21 UTC, Dlearner wrote:
>> I came back to this project and realised my mistakes (Importer 
>> is a class for the C++ API, and we're using the C API).
>> So I fixed all my errors, but now I get an access violation.
>> As far as I can tell, it seems to be an issue with 
>> `aiGetMaterialTexture`.  It is meant to return an aiString 
>> with a filename (default value of "$texture.png"), I believe.  
>> But I get:
>>
>> aiString(13, x"67 6C 61 73 73 5F 64 69 66 2E 70 6E 67 00 FF FF 
>> FF ... FF"c)
>> [shortened for brevity]
>
> The data is "glass_dif.png", followed by a null terminator, 
> followed by a bunch of 0xFFs. 13 is the length of 
> "glass_dif.png". Judging from the definition of aiString [1], 
> the 0xFFs are just unused space. So, this looks good.
>
>> I'm meant to add this on to a directory string so I can load 
>> an image, but obviously this wouldn't work.
>
> To convert an aiString to a D string, it should be possible to 
> slice the data with the length:
>
>     aiString x;
>     const(char)[] y = x.data[0 .. x.length];
>
> You have to be cautiots of lifetime requirements, of course. If 
> needed, you can make a copy with dup (mutable copy) or idup 
> (immutable copy):
>
>     const(char)[] y = x.data[0 .. x.length].dup;
>     string z = x.data[0 .. x.length].idup;
>
>
> [1] http://www.assimp.org/lib_html/structai_string.html

Ahh this did help!  I practically followed your advice, then 
fixed a somewhat unrelated range violation, and got a similar 
"object.Error@(0): Access Violation".  But in the console I got:
filename: Models/Nanosuit/glass_dif.png
filename: Models/Nanosuit/leg_dif.png
filename: Models/Nanosuit/leg_showroom_spec.png
filename: Models/Nanosuit/hand_dif.png
filename: Models/Nanosuit/hand_showroom_spec.png
filename: Models/Nanosuit/arm_dif.png
filename: Models/Nanosuit/arm_showroom_spec.png
filename: Models/Nanosuit/helmet_diff.png

About half the textures seem to load fine.  Some progress!


More information about the Digitalmars-d-learn mailing list