Пример #1
0
void cTexture::FromQByteArray(QByteArray buffer)
{
	if (bitmap)
	{
		//qDebug() << "void cTexture::FromQByteArray(QByteArray buffer): delete[] bitmap;:" << width * height * sizeof(sRGB8);
		delete[] bitmap;
	}

	bitmap = NULL;
	QImage qimage(buffer);
	qimage.loadFromData(buffer);
	qimage = qimage.convertToFormat(QImage::Format_RGB888);
	if (!qimage.isNull())
	{
		width = qimage.width();
		height = qimage.height();
		bitmap = new sRGB8[width * height];
		memcpy(bitmap, qimage.constBits(), sizeof(sRGB8) * width * height);
		//qDebug() << "void cTexture::FromQByteArray(QByteArray buffer): (sRGB8*)(qimage.bits()):" << width * height * sizeof(sRGB8);
		CreateMipMaps();
		loaded = true;
	}
	else
	{
		cErrorMessage::showMessage(QObject::tr("Can't load texture from QByteArray!\n"),
															 cErrorMessage::errorMessage);
	}
}
Пример #2
0
bool Texture::Initialise()
{
    glGenTextures(1, &m_id);
    m_initialised = true;
    glBindTexture(GL_TEXTURE_2D, m_id);

    return LoadTexture(GL_TEXTURE_2D, m_path) && 
        CreateMipMaps() && !HasCallFailed();
}
Пример #3
0
//constructor
cTexture::cTexture(QString filename, enumUseMipmaps useMipmaps, bool beQuiet)
{
	bitmap = NULL;
	QImage qimage;
	qimage.load(filename);
	qimage = qimage.convertToFormat(QImage::Format_RGB888);

	if (!qimage.isNull())
	{
		width = qimage.width();
		height = qimage.height();
		bitmap = new sRGB8[width * height];

		for(int y = 0; y < height; y++)
		{
			memcpy(&bitmap[y * width], qimage.scanLine(y), sizeof(sRGB8) * width);
		}

		//qDebug() << "cTexture::cTexture(QString filename, bool beQuiet): (sRGB8*)(qimage.bits());:" << width * height * sizeof(sRGB8);
		loaded = true;
		originalFileName = filename;
		if(useMipmaps == useMipmaps)
		{
			CreateMipMaps();
		}
	}
	else
	{
		if (!beQuiet) cErrorMessage::showMessage(QObject::tr("Can't load texture!\n") + filename,
																						 cErrorMessage::errorMessage);
		width = 100;
		height = 100;
		loaded = false;
		bitmap = new sRGB8[100 * 100];
		memset(bitmap, 255, sizeof(sRGB8) * 100 * 100);
		//qDebug() << "cTexture::cTexture(QString filename, bool beQuiet): new sRGB8[100 * 100];:" << width * height * sizeof(sRGB8);
	}
}