GLuint loadShader(const char * filename, GLenum shader_type, bool check_errors) { GLuint result = 0; string shaderCode = ""; ifstream codeStream(filename, ios::in); if (codeStream.is_open()) { string Line = ""; while (getline(codeStream, Line)) { shaderCode += Line; shaderCode += "\n"; } codeStream.close(); } result = glCreateShader(shader_type); // Compile Vertex Shader //cout << "Compiling shader : " << filename << endl; char const * codePointer = shaderCode.c_str(); glShaderSource(result, 1, &codePointer, NULL); glCompileShader(result); if (check_errors) { GLint status = 0; glGetShaderiv(result, GL_COMPILE_STATUS, &status); if (!status) { char buffer[4096]; glGetShaderInfoLog(result, 4096, NULL, buffer); cout << filename << buffer << endl; } } return result; }
bool MwWebServer::GenerateHtmlContents(MwString requestFile, MwWebRequest *request, MwBaseStream *responseContents) { MwString fileName = this->rootPath + "\\" + requestFile; if (!this->fileSystem->FileExists(fileName)) return false; MwFileStream codeStream(fileName.contents, FileStreamAccessMode_Read); char *sourceData = new char[(unsigned int)codeStream.length + 1]; codeStream.ReadData(sourceData, codeStream.length); sourceData[codeStream.length] = 0; MwString source(sourceData); delete[] sourceData; MwString output; // TODO: Real parsing of html int parsedIndex = 0; while (parsedIndex < source.length) { int mwwTagStart = source.IndexOf("<mww", parsedIndex); int mwwTagEnd = -1; if (mwwTagStart != -1) { int classNameStart = source.IndexOf("component=\"", mwwTagStart + 5); if (classNameStart != -1) { classNameStart += 11; int classNameEnd = source.IndexOf("\"", classNameStart); if (classNameEnd != -1) { mwwTagEnd = source.IndexOf("/>", mwwTagStart); if (mwwTagEnd != -1) mwwTagEnd += 2; else { mwwTagEnd = source.IndexOf("</mww>", mwwTagStart); if (mwwTagEnd != -1) mwwTagEnd += 6; } if (mwwTagEnd != -1) { output += source.SubString(parsedIndex, mwwTagStart - parsedIndex); parsedIndex = mwwTagEnd; MwString className = source.SubString(classNameStart, classNameEnd - classNameStart); int componentIndex = this->components.count - 1; for (; componentIndex >= 0; componentIndex--) if (this->components[componentIndex]->name.Equals(className)) break; if (componentIndex != -1) { MwString s = this->components[componentIndex]->Output(request); output += s; } } } } } if (mwwTagEnd == -1) { output += source.SubString(parsedIndex, source.length - parsedIndex); parsedIndex = source.length; } } responseContents->WriteData((void*)output.GetCharContents(), output.length); return true; }