예제 #1
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);
        }