void FeedbackTransformPass::DoRun() { glDisable(GL_DEPTH_TEST); glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, buf->vbo); { Use shader(program); glBeginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, query); glBeginTransformFeedback(objtype); glEnable(GL_RASTERIZER_DISCARD); out->Draw(program); glDisable(GL_RASTERIZER_DISCARD); glEndTransformFeedback(); glEndQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN); // performance loss of 15ms order TODO_W("Move this query to the *start* of the transform, use the old objects in the drawing phase."); glGetQueryObjectuiv(query, GL_QUERY_RESULT, &buf->count); } glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0); swap(*buf, *out); }
Texture *TextureDeserializer::deserialize() { TODO_W("Fix this to not use try/catch for resource file handling - precompile textures"); try { return deserializeHdr(ResourceFile::open(name, ResourceFile::HdrTexture)); } catch(std::exception) { try { return deserializeHdr(ResourceFile::open("OGA_" + name, ResourceFile::HdrTexture)); } catch(std::exception) { try { return deserializePng(ResourceFile::open(name, ResourceFile::PngTexture)); } catch(std::exception) { try { return deserializePng(ResourceFile::open("OGA_" + name, ResourceFile::PngTexture)); } catch(std::exception) { try { return deserializeBmp(ResourceFile::open(name, ResourceFile::BmpTexture)); } catch(std::exception) { try { return deserializeBmp(ResourceFile::open("OGA_" + name, ResourceFile::BmpTexture)); } catch(std::exception) { LOG_WARN("Texture %s not found.", name.c_str()); return NULL; }}}}}} }