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); } }
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(); }
//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); } }