mirror of
https://github.com/minetest/irrlicht.git
synced 2024-09-07 05:10:19 +02:00
obj writer can now write 32 bit buffers
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6334 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
c58afe8038
commit
8447d3f531
|
@ -1,6 +1,7 @@
|
||||||
--------------------------
|
--------------------------
|
||||||
Changes in 1.9 (not yet released)
|
Changes in 1.9 (not yet released)
|
||||||
- obj meshloader can now load 32-bit buffers when setPreferredIndexType is set to EIT_32BIT.
|
- obj writer can now write 32 bit buffers
|
||||||
|
- obj meshloader can now load 32 bit buffers when setPreferredIndexType is set to EIT_32BIT.
|
||||||
It's 16 bit meshes use now also an IDynamicMeshbuffer instead of an SMeshBuffer.
|
It's 16 bit meshes use now also an IDynamicMeshbuffer instead of an SMeshBuffer.
|
||||||
- Add IMeshLoader::setPreferredIndexType and getPreferredIndexType to allow setting hints for the loaders if users prefer 16 or 32 bit meshbuffers.
|
- Add IMeshLoader::setPreferredIndexType and getPreferredIndexType to allow setting hints for the loaders if users prefer 16 or 32 bit meshbuffers.
|
||||||
- Add IMeshBuffer::getType to allow finding out which class type a meshbuffer has (similar to ISceneNode::getType).
|
- Add IMeshBuffer::getType to allow finding out which class type a meshbuffer has (similar to ISceneNode::getType).
|
||||||
|
|
|
@ -130,8 +130,23 @@ bool COBJMeshWriter::writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 fla
|
||||||
const u32 indexCount = buffer->getIndexCount();
|
const u32 indexCount = buffer->getIndexCount();
|
||||||
for (j=0; j<indexCount; j+=3)
|
for (j=0; j<indexCount; j+=3)
|
||||||
{
|
{
|
||||||
|
unsigned int idx2, idx1, idx0;
|
||||||
|
switch(buffer->getIndexType())
|
||||||
|
{
|
||||||
|
case video::EIT_16BIT:
|
||||||
|
idx2 = buffer->getIndices()[j+2]+allVertexCount;
|
||||||
|
idx1 = buffer->getIndices()[j+1]+allVertexCount;
|
||||||
|
idx0 = buffer->getIndices()[j+0]+allVertexCount;
|
||||||
|
break;
|
||||||
|
case video::EIT_32BIT:
|
||||||
|
idx2 = ((u32*)buffer->getIndices())[j+2]+allVertexCount;
|
||||||
|
idx1 = ((u32*)buffer->getIndices())[j+1]+allVertexCount;
|
||||||
|
idx0 = ((u32*)buffer->getIndices())[j+0]+allVertexCount;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
file->write("f ",2);
|
file->write("f ",2);
|
||||||
num = core::stringc(buffer->getIndices()[j+2]+allVertexCount);
|
num = core::stringc(idx2);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
file->write("/",1);
|
file->write("/",1);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
|
@ -139,7 +154,7 @@ bool COBJMeshWriter::writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 fla
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
file->write(" ",1);
|
file->write(" ",1);
|
||||||
|
|
||||||
num = core::stringc(buffer->getIndices()[j+1]+allVertexCount);
|
num = core::stringc(idx1);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
file->write("/",1);
|
file->write("/",1);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
|
@ -147,7 +162,7 @@ bool COBJMeshWriter::writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 fla
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
file->write(" ",1);
|
file->write(" ",1);
|
||||||
|
|
||||||
num = core::stringc(buffer->getIndices()[j+0]+allVertexCount);
|
num = core::stringc(idx0);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
file->write("/",1);
|
file->write("/",1);
|
||||||
file->write(num.c_str(), num.size());
|
file->write(num.c_str(), num.size());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user