void render_to(const array<GLuint, num_elements> &textures);
// Convenience wrappers.
- void render_to(GLuint texture0, enable_if<num_elements == 1> * = nullptr) {
+ void render_to(GLuint texture0) {
render_to({{texture0}});
}
- void render_to(GLuint texture0, GLuint texture1, enable_if<num_elements == 2> * = nullptr) {
+ void render_to(GLuint texture0, GLuint texture1) {
render_to({{texture0, texture1}});
}
- void render_to(GLuint texture0, GLuint texture1, GLuint texture2, enable_if<num_elements == 3> * = nullptr) {
+ void render_to(GLuint texture0, GLuint texture1, GLuint texture2) {
render_to({{texture0, texture1, texture2}});
}
- void render_to(GLuint texture0, GLuint texture1, GLuint texture2, GLuint texture3, enable_if<num_elements == 4> * = nullptr) {
+ void render_to(GLuint texture0, GLuint texture1, GLuint texture2, GLuint texture3) {
render_to({{texture0, texture1, texture2, texture3}});
}
ScopedTimer total_timer("Total", &timers);
for (int level = coarsest_level; level >= int(finest_level); --level) {
char timer_name[256];
- snprintf(timer_name, sizeof(timer_name), "Level %d", level);
+ snprintf(timer_name, sizeof(timer_name), "Level %d (%d x %d)", level, width >> level, height >> level);
ScopedTimer level_timer(timer_name, &total_timer);
int level_width = width >> level;
SDL_GLContext context = SDL_GL_CreateContext(window);
assert(context != nullptr);
+ glDisable(GL_DITHER);
+
// FIXME: Should be part of DISComputeFlow (but needs to be initialized
// before all the render passes).
float vertices[] = {