示例#1
0
        void testTooManyPoints()
        {
            FTGL_DOUBLE testPoint[3] = { 1, 2, 3};

            FTGL_DOUBLE* testOutput[] = { 0, 0, 0, 0};
            void *pOutput = (void *)testOutput;
            FTGL_DOUBLE* hole[] = { 0, 0, 0, 0};
            void *pHole = (void *)hole;

            FTMesh mesh;
            unsigned int x;

            ftglBegin(GL_TRIANGLES, &mesh);
            ftglCombine(testPoint, NULL, NULL, &pOutput, &mesh);

            for(x = 0; x < 200; ++x)
            {
                ftglCombine(testPoint, NULL, NULL, &pHole, &mesh);
            }

            CPPUNIT_ASSERT(*testOutput == static_cast<const FTGL_DOUBLE*>(mesh.TempPointList().front()));

            for(x = 201; x < 300; ++x)
            {
                ftglCombine(testPoint, NULL, NULL, &pHole, &mesh);
            }

            ftglEnd(&mesh);

            CPPUNIT_ASSERT(*testOutput == static_cast<const FTGL_DOUBLE*>(mesh.TempPointList().front()));
        }
示例#2
0
    void testGetTesselation() {
        FTMesh mesh;

        CPPUNIT_ASSERT( mesh.Tesselation(0) == NULL);

        ftglBegin( GL_TRIANGLES, &mesh);
        ftglVertex( &POINT_DATA[0], &mesh);
        ftglVertex( &POINT_DATA[3], &mesh);
        ftglVertex( &POINT_DATA[6], &mesh);
        ftglVertex( &POINT_DATA[9], &mesh);
        ftglEnd( &mesh);

        CPPUNIT_ASSERT( mesh.Tesselation(0));
        CPPUNIT_ASSERT( mesh.Tesselation(10) == NULL);
    }
示例#3
0
        void testAddPoint()
        {
            FTGL_DOUBLE testPoint[3] = { 1, 2, 3 };
            FTGL_DOUBLE* hole[] = { 0, 0, 0, 0 };
            void *pHole = (void *)hole;

            FTMesh mesh;
            CPPUNIT_ASSERT(mesh.TesselationCount() == 0);

            ftglBegin(GL_TRIANGLES, &mesh);
            ftglVertex(&POINT_DATA[0], &mesh);
            ftglVertex(&POINT_DATA[3], &mesh);
            ftglVertex(&POINT_DATA[6], &mesh);
            ftglVertex(&POINT_DATA[9], &mesh);
            ftglEnd(&mesh);

            CPPUNIT_ASSERT(mesh.TesselationCount() == 1);
            CPPUNIT_ASSERT(mesh.Tesselation(0)->PolygonType() == GL_TRIANGLES);
            CPPUNIT_ASSERT(mesh.Tesselation(0)->PointCount() == 4);
            CPPUNIT_ASSERT(mesh.Error() == 0);

            ftglBegin(GL_QUADS, &mesh);
            ftglVertex(&POINT_DATA[12], &mesh);
            ftglVertex(&POINT_DATA[15], &mesh);
            ftglError(2, &mesh);
            ftglVertex(&POINT_DATA[18], &mesh);
            ftglCombine(testPoint, NULL, NULL, &pHole, &mesh);
            ftglVertex(&POINT_DATA[21], &mesh);
            ftglError(3, &mesh);
            ftglEnd(&mesh);

            CPPUNIT_ASSERT(mesh.TesselationCount() == 2);
            CPPUNIT_ASSERT(mesh.Tesselation(0)->PointCount() == 4);
            CPPUNIT_ASSERT(mesh.Tesselation(1)->PolygonType() == GL_QUADS);
            CPPUNIT_ASSERT(mesh.Tesselation(1)->PointCount() == 4);
            CPPUNIT_ASSERT(mesh.Error() == 3);

            CPPUNIT_ASSERT(mesh.TesselationCount() == 2);
        }