Ejemplo n.º 1
0
void G3D::write(AbstractWriter& writer, const GeometrySoA& geometry, uint32_t vertexType) {
    if (writer.isOpen()) {
        if (vertexType == SoA) {
            writeHeader(writer, geometry.info);
            writeContent(writer, geometry);
        } else if (vertexType == AoS) {
            writeHeader(writer, geometry.info, &vertexType);
            writeIndices(writer, geometry.indices, geometry.info);
            auto vertices = convertVertices(geometry.vertexAttributes, geometry.info);
            writeVertices(writer, vertices, geometry.info);
        }
    }
}
Ejemplo n.º 2
0
void G3D::readSoA(AbstractReader& reader, G3D::GeometrySoA& geometry) {
    if (reader.isOpen()) {
        geometry.info = readHeader(reader);
        if (geometry.info.numberVertices == 0)
            return;
        if (geometry.info.vertexType == SoA)
            readContent(reader, geometry);
        else if (geometry.info.vertexType == AoS) {
            geometry.info.vertexType = SoA;
            geometry.indices = readIndices(reader, geometry.info);
            std::vector<float> vertices = readVertices(reader, geometry.info);
            geometry.vertexAttributes = convertVertices(vertices, geometry.info);
        }
    }
}
Ejemplo n.º 3
0
void G3D::readAoS(AbstractReader& reader, G3D::GeometryAoS& geometry) {
    if (reader.isOpen()) {
        geometry.info = readHeader(reader);
        if (geometry.info.numberVertices == 0)
            return;
        if (geometry.info.vertexType == AoS)
            readContent(reader, geometry);
        else if (geometry.info.vertexType == SoA) {
            geometry.info.vertexType = AoS;
            geometry.indices = readIndices(reader, geometry.info);
            auto vertexAttributes = readVertexAttributes(reader, geometry.info);
            geometry.vertices = convertVertices(vertexAttributes, geometry.info);
        }
    }
}
Ejemplo n.º 4
0
void generatePolygon(int array[][COL], float XCoord[], float YCoord[], int n) {

    plotVertices(array, XCoord, YCoord, n);
    //pressEnter();
    int i, j;
    for (i = 0; i < n; i++) {
        j = i + 1;

        if (j < n) generateEdge(array, XCoord[i], YCoord[i], XCoord[j], YCoord[j]);
        else generateEdge(array, XCoord[i], YCoord[i], XCoord[0], YCoord[0]);
    }
    //pressEnter();
    //fillPolygon(array, XCoord, YCoord, n);
    convertVertices(array);
    //pressEnter();

}
Ejemplo n.º 5
0
void G3D::read(const std::string & file, GeometrySoA * const geometry)
{
	std::fstream fs;
	fs.open(file.c_str(), std::fstream::in | std::fstream::binary);

	if (fs.is_open())
	{
		readHeader(fs, geometry->info);
		if (geometry->info.vertexType == SoA) readContent(fs, *geometry);
		else if (geometry->info.vertexType == AoS)
		{
			geometry->info.vertexType = SoA;
			readIndices(fs, geometry->indices, geometry->info);
			float * vertices = NULL;
			readVertices(fs, vertices, geometry->info);
			convertVertices(vertices, geometry->vertexAttributes, geometry->info);
			cleanVertices(vertices);
		}
		fs.close();
	}
}
Ejemplo n.º 6
0
void G3D::write(const std::string & file, const GeometryAoS * const geometry, const uint32_t vertexType)
{
	std::fstream fs;
	fs.open(file.c_str(), std::fstream::out | std::fstream::binary | std::fstream::trunc);

	if (fs.is_open())
	{
		if (vertexType == AoS) 
		{
			writeHeader(fs, geometry->info);
			writeContent(fs, *geometry);
		}
		else if (vertexType == SoA)
		{
			writeHeader(fs, geometry->info, &vertexType);
			writeIndices(fs, geometry->indices, geometry->info);
			std::vector<float*> vertexAttributes;
			convertVertices(geometry->vertices, vertexAttributes, geometry->info);
			writeVertices(fs, vertexAttributes, geometry->info);
			cleanVertices(vertexAttributes);
		}
		fs.close();
	}
}