Opengl extensions viewer как пользоваться
Перейти к содержимому

Opengl extensions viewer как пользоваться

learnopengl. Урок 1.3 — Hello Window

В прошлом уроке мы подготовили рабочее пространство и теперь мы полностью готовы создать окно.
Данный перевод подготовлен совместно с FERusM за что ему большое спасибо.
Заинтересовавшихся прошу под кат.

Часть 1.3. Hello Window

После установки GLFW самое время сделать простенькую программку, как это принято в подобных материалах, пусть это будет Hello World. Для начала нужно создать .cpp файл и подключить несколько заголовочников, также необходимо установить переменную GLEW_STATIC, которая указывает на то, что мы будем использовать статическую версию библиотеки GLEW.

Далее напишем функцию main, пока что в ней будет создаваться окно GLFW. Она будет иметь следующий вид:

В данной функции мы сначала инициализируем GLFW вызывом функции glfwInit, после чего приступаем к его настройке, используя функцию glfwWindowHint. glfwWindowHint имеет очень простую сигнатуру, первым аргументом необходимо передать идентификатор параметра, который подвергается изменению, а вторым параметром передается значение, которое устанавливается соответствующему параметру. Идентификаторы параметров, а также некоторые их значения находятся в общем перечислении с префиксом GLFW_. Больше подробностей о настройке контекста GLFW можно найти в официальной документации GLFW. Если при запуске этого примера вы получаете ошибки, сильно похожие на неопределенное поведение, это значит то, что вы неправильно подключили библиотеку GLFW.

Поскольку в статьях будет использоваться OpenGL версии 3.3, то необходимо сообщить GLFW то что мы используем именно эту версию, что происходит в результате вызова метода glfwWindowHint c аргументами:

Таким образом, GLFW производит все необходимые действия при создании OpenGL контекста. Это гарантирует то, что если у пользователя нет необходимой версии OpenGL (в данном случае рассматривается версия 3.3), то GLFW просто не запустится. Помимо установки версии, мы явно указали на то, что будем использовать профиль GLFW_OPENGL_CORE_PROFILE. Это приведет к ошибке в случае использования устаревших функций OpenGL. Если вы используете Mac OS X, то необходимо добавить следующий вызов функции glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE) в код инициализации GLEW.

Теперь нужно создать объект окна. Этот объект содержит всю необходимую информацию об окне и используется функциями GLFW.

Сигнатура функции glfwCreateWindow требует следующие аргументы: “Высота окна”, “Ширина окна”, “Название окна” (оставшиеся аргументы нам не понадобятся). Возвращает указатель на объект типа GLFWwindow, который нам потом понадобится. Далее мы создаем контекст окна, который будет основным контекстом в данном потоке.

В прошлом уроке мы говорили, что GLEW управляет указателями на функции OpenGL, соответственно мы должны инициализировать GLEW, перед тем как вызывать какие либо функции OpenGL.

Заметьте, что мы установили переменную glewExperimental в GL_TRUE, перед тем как инициализировать GLEW. Установка значения glewExperimental в GL_TRUE позволяет GLEW использовать новейшие техники для управления функционалом OpenGL. Также, если оставить эту переменную со значением по умолчанию, то могут возникнуть проблемы с использованием Core-profile режима.

Viewport

Прежде чем мы начнем что-либо отрисовывать нам надо еще кое что сделать. Нам нужно сообщить OpenGL размер отрисовываемого окна, чтобы OpenGL знал, как мы хотим отображать данные и координаты относительно окна. Мы можем установить эти значения через функцию glViewport.

Первые 2 аргумента функции glViewport — это позиция нижнего левого угла окна. Третий и четвертый — это ширина и высота отрисовываемого окна в px, которые мы получаем напрямую из GLFW. Вместо того, чтобы руками задавать значения ширины и высоты в 800 и 600 соответственно мы будем использовать значения из GLFW, поскольку такой алгоритм также работает и на экранах с большим DPI (как Apple Retina).

Также мы можем задать меньшие значения для viewport. В таком случае, вся отрисовываемая информация будет меньших размеров, и мы сможем, к примеру, отрисовывать другую часть приложения вне viewport.

Подготавливаем двигатели

Мы не хотим, чтобы приложение сразу после отрисовки одного изображения упало. Мы хотим, чтобы программа продолжала отрисовывать изображения и обрабатывать пользовательский ввод до тех пор, пока ее не закроют. Для этого мы должны создать цикл, называемый игровым циклом, который будет обрабатываться до тех пор, пока мы не скажем GLFW остановиться.

Функция glfwWindowShouldClose проверяет в начале каждой итерации цикла, получил ли GLFW инструкцию к закрытию, если так — то функция вернет true и игровой цикл перестанет работать, после чего мы сможем закрыть наше приложение.

Функция glfwPollEvents проверяет были ли вызваны какие либо события (вроде ввода с клавиатуры или перемещение мыши) и вызывает установленные функции (которые мы можем установить через функции обратного вызова (callback)). Обычно мы вызываем функции обработки событий в начале итерации цикла.

Функция glfwSwapBuffers заменяет цветовой буфер (большой буфер, содержащий значения цвета для каждого пикселя в GLFW окне), который использовался для отрисовки во время текущей итерации и показывает результат на экране.

Еще кое что

Как только мы вышли из игрового цикла, надо очистить выделенные нам ресурсы. Делается это функцией glfwTerminate в конце main функции.

Этот код очистит все ресурсы и выйдет из приложения. Теперь, попробуйте собрать приложение и если проблем с этим не возникнет вы увидите следующее:

Если у вас отобразилась скучнейшая черная картинка — то вы все сделали правильно! Если у вас отрисовывается что-то другое или у вас возникли проблемы с соединением всех примеров в уроке, то попробуйте этот исходный код.

Если у вас есть проблемы со сборкой приложения, для начала, удостоверьтесь, что линковщик в вашей IDE настроен верно (как было описано в прошлом уроке). Также удостоверьтесь, что ваш код не имеет ошибок. Вы можете с легкостью сравнить его с исходным кодом, представленным выше. Если у вас все еще возникают проблемы, просмотрите комментарии к исходной статье, возможно там вы найдете решение своей проблемы.

Для достижения некоего контроля над вводом, мы можем воспользоваться функциями обратного вызова в GLFW. Функции обратного вызова это указатели на функции, которые можно передать в GLFW, чтобы они были вызваны в нужное время. Одной из таких функций является KeyCallback, которая будет вызываться каждый раз, когда пользователь использует клавиатуру. Прототип этой функции выглядит следующим образом:

Эта функция принимает первым аргументом указатель на GLFWwindow, далее идет число описывающее нажатую клавишу, действие осуществляемое над клавишей и число описывающее модификаторы (shift, control, alt или super). Когда будет нажата клавиша, GLFW вызовет эту функцию и передаст в нее требуемые аргументы.

В нашей (новой) key_callback функции мы проверяем является ли нажатая клавиша клавишей ESC и если на нее нажали (а не отпустили) — то мы закрываем GLFW устанавливая свойство WindowShouldClose в true используя glfwSetWindowShouldClose. Следующая проверка состояния в игровом цикле прервет цикл и приложение закроется.

Осталось только передать это функцию в GLFW. Делается это следующим образом:

Существует большое количество функций обратного вызова, которые можно переопределить. К примеру мы можем переопределить функции для изменения размера окна, обработки ошибок и т.д. Зарегистрировать функцию обратного вызова надо после создания окна и до игрового цикла.

Отрисовка

Нам хотелось бы разместить все команды отрисовки в игровом цикле, так как мы хотим, чтобы отрисовка происходила на каждой итерации цикла. Это должно выглядеть как-то так:

Чтобы просто удостовериться в том, что все работает как надо мы будем очищать экран, заливая его своим цветом. В начале каждой итерации отрисовки зачастую надо очищать экран, иначе мы будем видеть результаты прошлой отрисовки (иногда действительно надо добиться такого эффекта, но зачастую это не так). Мы можем с легкостью очистить буфер, использовав glClear, в которую мы передадим специальные биты, чтобы указать какие конкретно буферы надо очистить. Биты, которые мы можем сейчас установить — это GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT и GL_STENCIL_BUFFER_BIT. Сейчас нам надо очистить только цветовой буфер.

Заметьте, что мы также установили требуемый нами цвет, которым будет очищен экран, через glClearColor. Как только мы вызываем glClear весь буфер будет заполнен указанным цветом. В результату вы получите зелено-голубой цвет.

Полный исходный код урока можно найти здесь.

Теперь у нас есть все, чтобы начать заполнять игровой цикл вызовами функций отрисовки, но мы прибережем это для следующего урока.

Opengl extensions viewer как пользоваться

Прикрепленное изображение

Краткое описание:
Отображает имя производителя, версию, имя визуализации для OpenGl ES.

Описание:
From the makers of the famous OpenGL Extensions Viewer on PC and Mac, the Android version can access each extension documentation, renderers capabilities.



Ideal if you are developing application for Android,

CPU information, Android OS revision are also reported.



Main key features:

• Reports Android version, model and CPU.

• Reports OpenGL ES information and gives access to OpenGL Extension extension specification online (requires internet connection).


• Submit your OpenGL EX information into to the Cloud storage and check the results on the Mac and PC version.

• Free of charge.


OpenGL Extensions Viewer 6 | realtech VR

A reliable software which displays useful information about the current OpenGL 3D accelerator and new Vulkan 3D API. This program displays the vendor name, the version implemented, the renderer name and the extensions of the current OpenGL 3D accelerator.

Check our FAQ question, updated (November 2021).

6.3.7 — Latest Version (2022-03-23)
— Added sRGB and Linear framebuffer for Vulkan and OpenGL rendering tests.
— Other bug fixes and improvements.

6.3.4
— Fix accents in portuguese language.
— Updated vulkan rendering tests and compliance
— Other bug fixes and improvements.

6.3.2
— Changed debug.log to glview.log
— Added more information on failed rendering context not being initialized
— Other bug fixes and improvements.

6.3.1
— Address issue with GDI only devices.
— Address HDR rendering test on Vulkan

6.3.0
— Added Vulkan rendering tests!
— Optimization in GL rendering tests.
— Added command line parameter glview.exe -fast, for loading the UI without the GL database.

6.2.3
— Address compability with nVidia when starting the rendering tests without multisampling.

6.2.0
— New OpenGL code, and preparing for Vulkan rendering tests
— Translation to russian, french in the PC version.
— Android version has now CPU reporting and Vulkan reporting.

6.1.2
— Android Vulkan Database
— Support for virtual renderer (without monitors)
— Vulkan extensions database browser.
— Entirely rewritten interface in WPF, optimized for Windows 10, search functions, new high definitions icons, new vendors icons and more.
— Vulkan extensions database browser
— New generated database, up to 10,000 renderers, with version and more
— Faster loading times,
— New CPUID section with processor name and number.
— Many bug fixes and improvements.

5.3.4
— Updated video memory size using AMD and nVidia GL Extensions. This now reports more than 4GB size. Adding GPU processor clock for AMD video cards.
— nVidia and AMD drivers version are now reported properly.
— Fixed an issue with WMI ‘AdapterRAM’ crashing at startup.
— Improved database navigation.

5.2.0 (2019-03)

— Updated processor detection : Added more processor family.
— Version is displayed when starting the application.
— Improved database navigation.

5.1.4 (2019-01)

— Improved Vulkan Support
— Support for high density screens
— Improved database

OpenGL Extension Viewer is reliable software which displays the vendor name, the version implemented, the renderer name, and the extensions of the current OpenGL 3D accelerator. Many OpenGL extensions, as well as extensions to related APIs like GLU, GLX, and WGL, have been defined by vendors and groups of vendors. The extension registry is maintained by SGI and contains specifications for all known extensions, written as modifications to the appropriate specification documents. The registry also defines naming conventions, guidelines for creating new extensions and writing suitable extension specifications, and other related documentation.

OpenGL Extensions Viewer is free of charge and was awarded by Softpedia as 100% FREE No Spyware, No Adware, No Viruses

You can download the latest version of OpenGL Extensions Viewer (GLview) from those selected stores for free

Or, if you run Windows 7 or later, click here to download for Windows:


Download For Windows
SHA-256 Checksum: glview637-setup.exe 94B3945E8F005B21C1AC3D86A8B8334C9692331DFA3D53B91594E00387A68DD2

Also available, DirectX Extensions Viewer on Windows Store

English badge

USER MANUAL

OpenGL
Display system information and core feature test.

Extensions
Display extensions, sorted by vendor. If you have an Internet connection, you can retrieve from OpenGL.org the extensions’s specifications that explain the available extensions. You can click on extension and press ‘Search’ for getting extension’s specification from severals different databases. You can also use the left button mouse.

Pixel Formats
Display all supported pixel format
Report
Create a report based from current configuration.

Report
The OpenGL diagnostic tool performs some OpenGL initialisation and graphical test. It will use the desktop resolution. So in case of slow downs or initialisation errors, use a smaller desktop resolution.

OpenGL 1.1 : use the standard OpenGL without extension usage.
OpenGL 1.2 : OpenGL test using GL_lock_array and glDrawElement.
OpenGL 1.3 : OpenGL using GL_lock_array and multitexturing.
OpenGL 1.4 : OpenGL test using GL_lock_array and multitexturing using a DOT3 shading and an ARB vertex program code.
OpenGL 1.5 : OpenGL test using Vertex Buffer Object.
OpenGL 2.0 : OpenGL test using a GLSL 1.0 program.
OpenGL 2.1 : OpenGL test using pixel buffer object.
OpenGL 3.0 : OpenGL test using OpenGL 3.0 Forward Context (only supported under Windows).
Credits
execom / main code.
arekkusu / cocoa code.
genevois / web site / graphist.

OpenGL EXTENSIONS

A very extensive list of details of all extensions available of your system, which OpenGL functions are implemented and more.
A core feature set check also show how well from OpenGL version 1.2 to 4.0 are implemented in your system.
More than 450 extensions reported and collected since 2000!

OpenGL 1.1 / 1.2OpenGL 1.3

OpenGL Extensions Viewer has been suggested by OpenGL.org
in the OpenGL technical FAQ (see 23.050) (**)
and by nVidia as Developer Resources.

Vulkan Extensions are available in the Vulkan Report Section

OpenGL 1.1 / 1.2

RENDERER DATABASE

A database of all known renderers for Windows and MacOSX is available. If an renderer is being updated, you can submit to the server. You can also update to the latest database directly from the application.

OpenGL 1.1 / 1.2

Q> I’m using a software that requires OpenGL 2.1, but I’m not able to find the driver to load
A> You can’t really download OpenGL but only download display drivers that have OpenGL. Check with OpenGL Extensions Viewer what version it shows. If it reporting ‘GDI Renderer’, it means that something is blocking OpenGL from working. Sometimes an environement variable with QT_OPENGL solves the problem.

Q> I want to run Blend on my computer. It requires OpenGL 3.3 or above. OpenGL Extensions Viewer is reporting ‘4.613572 Core Profile Compability 19.11.1’. Will this version works ?
A> Yes it will works, the version is the first figures in the version name, in this case it is 4.6

Q> I’ve downloaded the latest version of OpenGL, because it was necessary to play a certain game. This game requires OpenGL 2.1 or above. but once I open, it says it is version 1.1
A> As said, it means something is blocking OpenGL to works. For example, opening an OpenGL software thru a remote distance, or virtual machine doesn’t works most of the time. Check with OpenGL Extensions Viewer to see which version is installed, especially the DirectX version. If you have DirectX 11, there is good chance that OpenGL is compatible but a software, or resolution is blocking it.

Initial released in 2000
Available for iOS, Android, Windows 7 and above, macOS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *