#include #include "createLoader.h" static lsInterface *ls = NULL; void createLoaderInit(lsInterface *l) { ls = l; } lsGroup gr1,gr2; lsGeometry geo1,geo2; lsStateSet st1,st1; lsLightSource li1,li2; lsTransformation tr1; lsTexture tex1,tex2; int createSupportsFile(FILE *file) { return 1; } void createLoad(FILE *file) { if(ls == NULL) { printf("CreateLoad: Lodestone interface not set, aborting!\n"); return; } printf("Create Loader: loading %p\n", file); printf("Lodestone version %d.%d\n", ls->getMajorVersion(), ls->getMinorVersion()); printf("Backend supports extension 'foo': %d\n", ls->hasExtension("foo")); printf("Backend supports extension 'bar': %d\n", ls->hasExtension("bar")); printf("Backend supports extension 'baz': %d\n", ls->hasExtension("baz")); printf("Backend function 'fooFunc': %d\n", ls->getExtensionFunction("fooFunc")); printf("Backend function 'barFunc': %d\n", ls->getExtensionFunction("barFunc")); gr1 = ls->createGroup(); gr2 = ls->createGroup(); ls->addChild(gr1, gr2); /* texture */ tex1 = ls->createTexture(); ls->texSetImage(tex1, "test.jpg"); ls->texGenf(tex1, GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); ls->closeTexture(tex1); /* state 1 */ st1 = ls->createStateSet(); ls->openStateSet(st1); ls->stateEnable(st1, GL_LIGHTING); { float c[4] = { 1,0,0,1 }; ls->stateMaterialfv(st1, GL_FRONT_AND_BACK, GL_DIFFUSE, c); } ls->stateMaterialf(st1, GL_FRONT_AND_BACK, GL_SHININESS, 20); ls->stateColorMaterial(st1, GL_FRONT_AND_BACK, GL_DIFFUSE); ls->statePolygonMode(st1, GL_FRONT_AND_BACK, GL_LINE); ls->statePolygonOffset(st1, 1, 2); ls->stateCullFace(st1, GL_FRONT); ls->closeStateSet(st1); /* geometry 1 */ geo1 = ls->createGeometry(); { float v[4][3] = { {0,0,0}, {1,0,0}, {2,2,0}, {2,3,0} }; ls->setVertexCount(geo1, 4); ls->setVertices(geo1, v); } { unsigned int indices[] = { 0,1,3,2 }; ls->addFace(geo1, GL_POLYGON, 4, indices); ls->addFace(geo1, GL_TRIANGLE_STRIP, 4, indices); } ls->closeGeometry(geo1); ls->addChild(gr1, geo1); /* geometry 2 */ geo2 = ls->createGeometry(); { float v[4][3] = { {0,0,1}, {0,0,2}, {0,2,2}, {0,3,2} }; ls->setVertexCount(geo1, 4); ls->addVertex(geo1, v[0]); ls->addVertex(geo1, v[1]); ls->addVertex(geo1, v[2]); ls->addVertex(geo1, v[3]); } ls->closeGeometry(geo2); ls->addChild(gr2, geo2); /* Light Source */ li1 = ls->createLightSource(); { float v[3] = { 1,2,3 }; ls->lightfv(li1, GL_POSITION, v); } ls->closeLightSource(li1); li2 = ls->createLightSource(); { float v[3] = { 1,2,3 }; ls->lightfv(li2, GL_DIFFUSE, v); } ls->closeLightSource(li2); }