// This method needs a properly cleaned error state before the checked instruction is called bool COpenGLShaderMaterialRenderer::checkError(const irr::c8* type) { #if defined(GL_ARB_vertex_program) || defined(GL_NV_vertex_program) || defined(GL_ARB_fragment_program) || defined(GL_NV_fragment_program) GLenum g = glGetError(); if (g == GL_NO_ERROR) return false; core::stringc errString = type; errString += " compilation failed"; errString += " at position "; GLint errPos=-1; #if defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) glGetIntegerv( GL_PROGRAM_ERROR_POSITION_ARB, &errPos ); #else glGetIntegerv( GL_PROGRAM_ERROR_POSITION_NV, &errPos ); #endif errString += core::stringc(s32(errPos)); errString += ":\n"; #if defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) errString += reinterpret_cast<const char*>(glGetString(GL_PROGRAM_ERROR_STRING_ARB)); #else errString += reinterpret_cast<const char*>(glGetString(GL_PROGRAM_ERROR_STRING_NV)); #endif #else core::stringc errString("Shaders not supported."); #endif os::Printer::log(errString.c_str(), ELL_ERROR); return true; }
void Shader::compileShader(const GLuint &ID,const std::string &src,const std::string &name){ GLint compileStatus = GL_FALSE; GLint infoLogLength; //Compile shader. std::cout << "Compiling shader: " << name << std::endl; char const * sourcePointer = src.c_str(); glShaderSource(ID, 1, &sourcePointer, NULL); glCompileShader(ID); //Get error status, if any. glGetShaderiv(ID, GL_COMPILE_STATUS, &compileStatus); glGetShaderiv(ID, GL_INFO_LOG_LENGTH, &infoLogLength); std::vector<char> errorMessage(infoLogLength); glGetShaderInfoLog(ID, infoLogLength, NULL, &errorMessage[0]); void *errorExists; errorExists = &errorMessage[0]; if (errorExists != nullptr) { std::string errString(errorMessage.begin(),errorMessage.end()); std::cout << errString << std::endl; } }
void EmHAL::LineDriverChanged (EmUARTDeviceType type) { ErrCode err = errNone; EmTransport* transport = gEmuPrefs->GetTransportForDevice (type); if (transport) { if (EmHAL::GetLineDriverState (type)) { err = transport->Open (); } else { /* err = */ transport->Close (); } if (err != errNone) { string errString (transport->GetSpecificName ()); ::PrvHandlePortOpenErrors (err, errString); } } }
void init() { new Logger; new Settings; ERR_CODE ret = settings.load(CONFIG); if (ret != NONE) { logger.logln(LOG_USER | LOG_FILE, "An error occurred while loading the default settings file (" + CONFIG + "): " + errString(ret)); delete loggerPtr; delete settingsPtr; exit(0); } new TextureManager; new SkeletonManager; atexit(cleanUp); srand(time(0)); //plant.parse(); Skeleton *skel = new Skeleton; ret = skel->load("HumanSkel"); if (ret != NONE) { delete skel; die("An error occurred while loading skeleton file: " + errString(ret)); } ret = skel->add_animation("idle"); if (ret != NONE) { delete skel; die("An error occurred while loading idle animation file: " + errString(ret)); } skeletonManager.add_skeleton(skel); #ifdef ANIMATION ret = animation.link_skeleton("HumanSkel"); if (ret != NONE) die("An error occurred while linking skeleton to animation: " + errString(ret)); ret = animation.animate("idle", true); if (ret != NONE) die("An error occurred in starting idle animation: " + errString(ret)); #else ret = mesh.load("human.mesh"); if (ret != NONE) die("An error occurred while loading mesh file: " + errString(ret)); ret = mesh.animate("idle", true); if (ret != NONE) die("An error occurred while animating mesh: " + errString(ret)); #endif cam.advance(-15.0); setPerspective(); glViewport(0, 0, WIDTH, HEIGHT); glClearColor(0.0, 0.0, 0.0, 1.0); glFogi(GL_FOG_MODE, GL_LINEAR); glFogfv(GL_FOG_COLOR, fog_color); glFogf(GL_FOG_DENSITY, 0.25f); glHint(GL_FOG_HINT, GL_DONT_CARE); glFogf(GL_FOG_START, 1.0f); glFogf(GL_FOG_END, 5.0f); glEnable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); Image front, back, right, left, up, down; #define CHECK_RET_NAME(x, name) if ((ret = x.load(name ".tga")) != NONE) die("Error while loading " name ".tga: " + errString(ret)); #define CHECK_RET(x) CHECK_RET_NAME(x, #x) CHECK_RET(front); CHECK_RET(back); CHECK_RET(right); CHECK_RET(left); CHECK_RET(up); CHECK_RET(down); Image img_grass, img_snow; CHECK_RET_NAME(img_grass, "grass"); CHECK_RET_NAME(img_snow, "snow"); grass = textureManager.load(img_grass); snow_tex = textureManager.load(img_snow); box.init(front, left, back, right, up, down); }
QVariant KConfigGroup::convertToQVariant(const char *pKey, const QByteArray& value, const QVariant& aDefault) { // if a type handler is added here you must add a QVConversions definition // to conversion_check.h, or ConversionCheck::to_QVariant will not allow // readEntry<T> to convert to QVariant. switch( aDefault.type() ) { case QVariant::Invalid: return QVariant(); case QVariant::String: // this should return the raw string not the dollar expanded string. // imho if processed string is wanted should call // readEntry(key, QString) not readEntry(key, QVariant) return QString::fromUtf8(value); case QVariant::List: case QVariant::StringList: return KConfigGroupPrivate::deserializeList(QString::fromUtf8(value)); case QVariant::ByteArray: return value; case QVariant::Bool: { const QByteArray lower(value.toLower()); if (lower == "false" || lower == "no" || lower == "off" || lower == "0") return false; return true; } case QVariant::Double: case QMetaType::Float: case QVariant::Int: case QVariant::UInt: case QVariant::LongLong: case QVariant::ULongLong: { QVariant tmp = value; if ( !tmp.convert(aDefault.type()) ) tmp = aDefault; return tmp; } case QVariant::Point: { const QList<int> list = asIntList(value); if ( list.count() != 2 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 2, list.count() ); return aDefault; } return QPoint(list.at( 0 ), list.at( 1 )); } case QVariant::PointF: { const QList<qreal> list = asRealList(value); if ( list.count() != 2 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 2, list.count() ); return aDefault; } return QPointF(list.at( 0 ), list.at( 1 )); } case QVariant::Rect: { const QList<int> list = asIntList(value); if ( list.count() != 4 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 4, list.count() ); return aDefault; } const QRect rect(list.at( 0 ), list.at( 1 ), list.at( 2 ), list.at( 3 )); if ( !rect.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return rect; } case QVariant::RectF: { const QList<qreal> list = asRealList(value); if ( list.count() != 4 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 4, list.count() ); return aDefault; } const QRectF rect(list.at( 0 ), list.at( 1 ), list.at( 2 ), list.at( 3 )); if ( !rect.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return rect; } case QVariant::Size: { const QList<int> list = asIntList(value); if ( list.count() != 2 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 2, list.count() ); return aDefault; } const QSize size(list.at( 0 ), list.at( 1 )); if ( !size.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return size; } case QVariant::SizeF: { const QList<qreal> list = asRealList(value); if ( list.count() != 2 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 2, list.count() ); return aDefault; } const QSizeF size(list.at( 0 ), list.at( 1 )); if ( !size.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return size; } case QVariant::DateTime: { const QList<int> list = asIntList(value); if ( list.count() != 6 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 6, list.count() ); return aDefault; } const QDate date( list.at( 0 ), list.at( 1 ), list.at( 2 ) ); const QTime time( list.at( 3 ), list.at( 4 ), list.at( 5 ) ); const QDateTime dt( date, time ); if ( !dt.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return dt; } case QVariant::Date: { QList<int> list = asIntList(value); if ( list.count() == 6 ) list = list.mid(0, 3); // don't break config files that stored QDate as QDateTime if ( list.count() != 3 ) { qWarning() << errString( pKey, value, aDefault ) << formatError( 3, list.count() ); return aDefault; } const QDate date( list.at( 0 ), list.at( 1 ), list.at( 2 ) ); if ( !date.isValid() ) { qWarning() << errString( pKey, value, aDefault ); return aDefault; } return date; } case QVariant::Color: case QVariant::Font: qWarning() << "KConfigGroup::readEntry was passed GUI type '" << aDefault.typeName() << "' but kdeui isn't linked! If it is linked to your program, " "this is a platform bug. Please inform the KDE developers"; break; case QVariant::Url: return QUrl(QString::fromUtf8(value)); default: break; } qWarning() << "unhandled type " << aDefault.typeName(); return QVariant(); }