//-------------------------------------------------------------------------- // get shader log error messages as string void GL21getShaderLog( GLuint shader, mgString& logStr) { GLint logLen, retLen; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLen); char* logText = new char[logLen]; glGetShaderInfoLog(shader, logLen, &retLen, logText); logStr.empty(); logStr.write(logText, retLen); delete logText; }
//-------------------------------------------------------------------------- // return shader log error messages as a string void mgLinuxGL33Support::getShaderLog( GLuint shader, mgString& log) { GLint logLen, retLen; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLen); char* logText = new char[logLen]; glGetShaderInfoLog(shader, logLen, &retLen, logText); log.empty(); log.write((const char*) logText, retLen); delete logText; }
//-------------------------------------------------------------- // parse a name or value off the strings int mgErrorTable::parseVar( mgString& value, const char* argString, int posn) { value.empty(); while (true) { char c = argString[posn++]; if (c == '\0') return -1; if (c == MG_ERROR_DELIM) return posn; value += c; } }
//-------------------------------------------------------------- // resolve possibly relative file name. void mgOSResolveRelativeName( const char* sourceName, const char* relName, mgString& absName) { mgString name(relName); mgOSFixFileName(name); // if relative name starts with backslash, we're done if (name.startsWith("\\")) { absName = name; return; } // if relative name starts with X: (drive letter), we're done char letter[MG_MAX_LETTER]; int posn = name.nextLetter(0, letter); if (posn < name.length()) { posn = name.nextLetter(posn, letter); if (strcmp(letter, ":") == 0) { absName = name; return; } } // assume it's really relative. strip last directory in source file mgString sourceFile(sourceName); int lastSlash = sourceFile.reverseFind(sourceFile.length(), '\\'); if (lastSlash != -1) sourceFile.substring(absName, 0, lastSlash+1); else absName.empty(); // source file has no dir absName += name; }
//-------------------------------------------------------------- // resolve possibly relative file name. void mgOSResolveRelativeName( const char* sourceFile, const char* relName, mgString& absName) { mgString name(relName); mgOSFixFileName(name); // if relative name starts with /, we're done if (name.startsWith("/")) { absName = name; return; } // assume it's really relative. strip last directory in source file absName = sourceFile; int lastSlash = absName.reverseFind(absName.length(), "/"); if (lastSlash != -1) absName.deleteAt(lastSlash+1, absName.length()-(lastSlash+1)); else absName.empty(); // source file has no dir absName += name; }