Пример #1
0
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);
}
Пример #2
0
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;
	}}}}}}
}