К основному контенту

Сообщения

Сообщения за июль, 2017

Релиз OpenGL 4.6

Уже все думали, что OpenGL умер, ну или погружается в сон, а вот и выстрелило)) В ядро были включены следующие расширения: GL_ARB_indirect_parameters GL_ARB_pipeline_statistics_query GL_ARB_polygon_offset_clamp  GL_KHR_no_error - позволяет отключать код проверки ошибок GL_ARB_shader_atomic_counter_ops - атомарные счётчики GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_gl_spirv - использование SPIR-V в OpenGL GL_ARB_spirv_extensions GL_ARB_texture_filter_anisotropic - анизотропная фильтрация для текстур GL_ARB_transform_feedback_overflow_query Так же добавили расширений : GL_KHR_parallel_shader_compile WGL_ARB_create_context_no_error GXL_ARB_create_context_no_error Спецификация OpenGL 4.6 Спецификация GLSL 4.6 NVIDIA уже представила бета версию драйвера , с поддержкой новой версии OpenGL 4.6, по ходу дела - nvidia пытается воскресить opengl, ну или хотя бы продлить его существование... Многие уже пытались поставить крест на этом г

Замеряем скорость выполнения команд OpenGL

Самый простой вариант, это обозначить тестируемый блок команд вызовами  glBeginQuery (GL_TIME_ELAPSED, id)   и    glEndQuery (GL_TIME_ELAPSED) . Результат получаем командой  glGetQueryObjectui64v или  glGetQueryObjectuiv , в зависимости от разрядности счётчика, 32 бит может и не хватить (в наносекундах, как никак). Важное замечание, что за меряется только только затраченное на выполнение команд OpenGL. Вариант №1: GLuint id; GLuint64 elapsedTime; glGenQueries( 1 , &id ); // Начало блока glBeginQuery(GL_TIME_ELAPSED, id); //Тут пишем код, который надо проверить //Окончание проверяемого блока glEndQuery(GL_TIME_ELAPSED); // Тут могут быть другие команды OpenGL, скорость которых не надо замерять // получаем затраченное время в наносекундах glGetQueryObjectui64v(id, GL_QUERY_RESULT, & elapsedTime); Вариант №2: GLuint queryStart, queryEnd; // query id GLuint64 startTime, endTime; GLuint64 elapsedTime; // затраченное время в наносе