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

Релиз 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

NVIDIA уже представила бета версию драйвера, с поддержкой новой версии OpenGL 4.6, по ходу дела - nvidia пытается воскресить opengl, ну или хотя бы продлить его существование... Многие уже пытались поставить крест на этом графическом API, но миллионы пользователей не спешат покупать новейшие видеокарты, и Вулкан им не доступен, а значит и разработчики не спешат делать ставку на новое API...



Комментарии

Популярные сообщения из этого блога

Ray marching и не только

Давненько я не баловался фракталами, а руки что-то чешутся... Видимо пора сотворить что-то и поделиться с миром ) Но всё меняется, вернее давно поменялось, фракталы уже давно рисуются шейдерами, как правило фрагментными. И то что я когда то делал (ковёр Серпинского, остора Коха и другое - на основе линий) - увы, уже не впечатляет ;) Скрины 3d фракталов впечатляют и завораживают, глядя на некоторые даже не верится, что их сотворил алгоритм. Для визуализации поверхности, которая не определена полигонами, мы попробуем использовать ray marching (raymarching, марширующий луч, марш луча, ну в общем за точность перевода не ручаюсь), а результат думаю скоро сами увидим )) Важно заметить, что эта техника используется не только для рисования фракталов. И так, в чём же суть? Всё очень просто.  Допустим у нас есть, некая поверхность, точка наблюдателя (позиция камеры, глаза), есть луч, направленный из позиции наблюдателя. Теперь мы начинаем продвигаться по лучу (маршировать). На каждо...

Вводная

Решил потихоньку сливать в сеть, свои разные эксперименты в сфере программирования. Меня больше интересует 3D графика и игрострой, так что всё будет крутиться около этих составляющих. Ну и C++, OpenGL, GLSL и прочая братия - будут присутствовать ))

Замеряем скорость выполнения команд 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; ...