int main(int argc, char** argv) { TGAImage* rendu = new TGAImage(size, size, TGAImage::RGB); Matrice rotationY = Matrice::rorationY(radiustoRadian(0)); // on instancie le tableau qui nous servira du buffer int **zbuffer = new int*[size]; for(int i = 0 ; i<size ; i++){ zbuffer[i] = new int[size]; for(int j=0; j<size ; j++) zbuffer[i][j] = std::numeric_limits<int>::min(); } lumiere.normaliser(); //matrice de transformation Matrice transformation = viewport * proj* lookat(camera,origine,u) *rotationY ; former("objet/african_head.obj",rendu, &transformation, zbuffer); former("objet/african_head_eye_inner.obj",rendu, &transformation, zbuffer); rendu->flip_vertically(); rendu->write_tga_file("rendu.tga"); for(int i = 0 ; i<1000 ; i++){ delete [] zbuffer[i]; } delete [] zbuffer ; delete rendu ; return 0; }
virtual void render(const btDiscreteDynamicsWorld* rbWorld) { //clear the color buffer TGAColor clearColor; clearColor.bgra[0] = 255; clearColor.bgra[1] = 255; clearColor.bgra[2] = 255; clearColor.bgra[3] = 255; clearBuffers(clearColor); ATTRIBUTE_ALIGNED16(btScalar modelMat[16]); ATTRIBUTE_ALIGNED16(float viewMat[16]); ATTRIBUTE_ALIGNED16(float projMat[16]); m_camera.getCameraProjectionMatrix(projMat); m_camera.getCameraViewMatrix(viewMat); btVector3 lightDirWorld(-5,200,-40); switch (m_upAxis) { case 1: lightDirWorld = btVector3(-50.f,100,30); break; case 2: lightDirWorld = btVector3(-50.f,30,100); break; default:{} }; lightDirWorld.normalize(); for (int i=0;i<rbWorld->getNumCollisionObjects();i++) { btCollisionObject* colObj = rbWorld->getCollisionObjectArray()[i]; int colObjIndex = colObj->getUserIndex(); int shapeIndex = colObj->getCollisionShape()->getUserIndex(); if (colObjIndex>=0 && shapeIndex>=0) { TinyRenderObjectData* renderObj = 0; int* cptr = m_swInstances[colObjIndex]; if (cptr) { int c = *cptr; TinyRenderObjectData** sptr = m_swRenderObjects[c]; if (sptr) { renderObj = *sptr; //sync the object transform const btTransform& tr = colObj->getWorldTransform(); tr.getOpenGLMatrix(modelMat); for (int i=0;i<4;i++) { for (int j=0;j<4;j++) { renderObj->m_projectionMatrix[i][j] = projMat[i+4*j]; renderObj->m_modelMatrix[i][j] = modelMat[i+4*j]; renderObj->m_viewMatrix[i][j] = viewMat[i+4*j]; renderObj->m_localScaling = colObj->getCollisionShape()->getLocalScaling(); renderObj->m_lightDirWorld = lightDirWorld; } } TinyRenderer::renderObject(*renderObj); } } } } static int counter=0; counter++; if ((counter&7)==0) { char filename[1024]; sprintf(filename,"framebuf%d.tga",counter); m_rgbColorBuffer.flip_vertically(); getFrameBuffer().write_tga_file(filename,true); } float color[4] = {1,1,1,1}; }