Як дізнатися який opengl встановлено Windows 7. Що таке OpenGL? Що робити далі

4 відповідей

Я боюся, що вам доведеться відкрити командний рядок вашого першого дня Linux (не хвилюйтеся, що трапилося зі мною теж). Програми -> Стандартні -> Термінал. Type lspci та натисніть Enter. Тут перераховані всі підключення через PCI або PCI Express, включаючи відеокарту. Прочитайте список, поки не побачите що-небудь про ATI або nVidia або одну з моделей Intel.

потім перейдіть до порівняльних таблиць Вікіпедії для відеокарт, щоб дізнатися версію OpenGL, яку підтримує ваша карта.

пам'ятайте, що вони лише кажуть, яку версію підтримує обладнання. Щоб мати можливість запускати бібліотеки OpenGL, вам також потрібний драйвер, який їх підтримує. Численні відео-водії для кожного уламку покоління для Linux. Ubuntu поставляється з версіями з відкритим вихідним кодом, які не погані, але, як правило, на крок позаду пропрієтарних драйверів, випущених виробниками графічних карт (які часто називають binary drivers або proprietary drivers). Якщо з'ясується, що обладнання підтримує OpenGL 2.0 (яких більшість), Ви можете спробувати пропрієтарні драйвера. Вони називаються nvidia-current для nvidia та fglrx для ATI. Для Intel існують лише драйвери з відкритим вихідним кодом.

приклад із мого ноутбука:

Prompt>lspci | grep VGA 00:02.0 VGA compatible controller: Intel Core Processor Integrated Graphics Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation Device 0df0 (rev a1) prompt>

та відповідна витримка з lshw:

*-pci:0 опис: PCI bridge product: Core Processor PCI Express x16 Root Port vendor: Intel Corporation physical id: 1 bus info: :00:01.0 version: 02 width: 32 bits clock: 33MHz capabilities: pci pm msi pci bus_master cap_list configuration: driver=pcieport resources: irq:42 ioport:2000(size=4096) memory:fb000000-fbffffff ioport:f0000000(size=167772160) *-display id: 0 bus info: :01:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vga_controller bus_master cap_list configuration: f7ffffff memory:f8000000-f9ffffff ioport:2000(size=128) *-відтворення документа: VGA compatible controller product: Core Processor Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info.

Просто викличте glGetString(GL_VERSION) (як тільки контекст ініціалізується, звичайно), і згасіть результат (який насправді той самий, що і glxinfo, я вважаю):

Printf("%s\n", glGetString(GL_VERSION));

Ваша програма повинна автоматично використовувати максимально можливу версію обладнання та підтримки драйверів, яка у вашому випадку, мабуть, становить 3,3. Але для створення контексту основного профілю OpenGL 3+ (той, де застарілі функціональні можливості були повністю видалені), ви повинні вжити спеціальних заходів. Але оскільки версія 2.7 GLFW має засоби для цього, використовуючи функцію glfwOpenWindowHint . Але якщо ви не хочете явно забороняти застарілі функції, ви можете просто використовувати контекст, наданий вам функціями контекстного створення за промовчанням GLFW, який, як стверджується, підтримує максимально можливу версію обладнання та драйверів.

Але також майте на увазі, що для використання функцій OpenGL вище версії 1.1 необхідно отримати відповідні покажчики на функції або використовувати бібліотеку, яка обробляє це для вас, наприклад .

Я почав писати програми, C (на даний момент), використовуючи GLFW і OpenGL. Питання, як дізнатися, яка версія OpenGL буде використовуватися моєю програмою? Мій ноутбук каже, що моя відеокарта має OpenGL 3.3. Введення “glxinfo | grep -i opengl» повертає.

  1. У драйверах для відеокарт NVIDIA, які постачаються у складі операційної системи Windows, підтримка OpenGL зазвичай відсутня. Програми будуть використовувати програмний рендеринг Windows OpenGL (вперпер у Direct3D у Windows Vista). Перевірити наявність у системі драйвера OpenGL можна за допомогою утиліт OpenGL Extensions Viewer та GPU Caps Viewer. Якщо вони показують, що постачальник OpenGL — Microsoft, то в системі немає драйвера OpenGL. Завантажте та встановіть останню версію драйвера для відеокарти із сайту NVIDIA.
  2. У новій версії драйвера могла бути додана підтримка нової версії API OpenGL, невідома програмі. Наприклад, драйвер повідомляє про програми OpenGL версії 2.0, а програма/гра перевіряє підтримку версії OpenGL у форматі 1.Х. Для вирішення проблеми можна за допомогою RivaTuner в налаштуваннях OpenGL на закладці «Сумісність» (Compatibility) форсувати повідомлення драйвером значення версії OpenGL (OpenGL version string override) на підтримувану програмою, наприклад на 1.5 . Ця опція не впливає на виконання OpenGL відеокартою, але з тієї ж причини можуть припинити працювати програми, що вимагають OpenGL версії 2.0. Більш гнучкий спосіб — створити для проблемної програми профіль драйвера за допомогою утиліти nHancer , вказавши потрібну версію в опції Reported OpenGL Version на закладці Compatibility.
  3. Проблема може виникнути, якщо в системі з якоїсь причини встановлено кілька драйверів OpenGL. У реєстрі за адресою HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdriversдля Windows 9x-ME) перевірте, що є єдиний підрозділ RIVATNT і ключ Dll у цьому розділі має значення nvoglnt (є єдиний ключ зі значенням nvopengl.dll для Windows 9x-ME). Якщо є інші підрозділи, наприклад ati2dvag (OpenGL драйвер ATI), їх слід видалити, попередньо експортувавши файл .reg .
  4. Реалізація OpenGL 2.0 для графічних процесорів GeForce FX і вище у драйвері NVIDIA вимагає підтримки центральним процесором розширень SSE. Якщо ці розширення недоступні, драйвер OpenGL ICD не буде ініціалізований, OpenGL програми будуть закриватися або використати програмний рендеринг. Перевірити ініціалізацію драйвера можна за допомогою утиліт OpenGL Extensions Viewer і GPU Caps Viewer, перевірити підтримувані процесором розширення можна за допомогою утиліт CPU-Zабо Sandra. Якщо процесор не підтримує SSE , можна або використовувати більш ранні версії драйвера (до 75.ХХ), або за допомогою RivaTuner в налаштуваннях OpenGL на закладці «Сумісність» (Compatibility) увімкнути режим «NV25 Emulation mode» замість «Max acceleration» ». У крайньому випадку можна скористатися OpenGL -> Direct3D враппером GLDirect або TitaniumGL. Іноді процесор підтримує SSE, але підтримка не працює через застарілий BIOS материнської плати. Особливо дана проблема характерна для систем із процесорами AMD Athlon XP та Duron. Оновлення BIOS материнської плати може відновити підтримку SSE.
  5. Якщо в системі є кілька відеокарт на базі різних графічних процесорів NVIDIA, то OpenGL драйвер буде підтримувати лише версії OpenGL підтримуваної всіма відеокартами.

Привіт друзі. Останні мої статті були орієнтовані на тему графіки та відеоадаптерів. Думаю, що цю тему продовжу розкривати і далі. У минулих статтях ми розмовляли про DirectX і шейдери, сьогодні поринемо у світ OpenGL. Дізнаємось що це таке, де скачати і для чого він потрібен. Тема буде розрахована на тих, хто тільки цих зацікавився і кому дуже цікаво дізнатися щось нове про комп'ютери. Томити не почну писати. Приємно читати 🙂

Що таке OpenGL та з чим його їдять?

OpenGL – це графічний стандарт у галузі комп'ютерної графіки. На даний момент він є одним із найпопулярніших графічних стандартів у всьому світі.

OpenGL перекладається як Відкрита Графічна Бібліотека (Open Graphics Library), це означає, що OpenGL – це відкритий та мобільний стандарт. Програми, написані за допомогою OpenGL можна переносити практично на будь-які платформи, отримуючи при цьому однаковий результат, чи це графічна станція, чи суперЕОМ.

OpenGL звільняє програміста від написання програм під якесь конкретне устаткування. Якщо пристрій підтримує якусь функцію, то ця функція виконується апаратно, якщо ні, її реалізацією займається програма-бібліотека.

На одному популярному сайті можна знайти подробиці цього стандарту:

Він включає близько 150 різних команд, за допомогою яких програміст може визначати різні об'єкти і проводити рендеринг. Говорячи простішою мовою, ви визначаєте об'єкти, задає їх місце розташування в тривимірному просторі, визначаєте інші параметри (поворот, масштаб, …), задає властивості об'єктів (колір, текстура, матеріал, …), положення спостерігача, а бібліотека OpenGL подбає про те щоб відобразити це на екрані.

Реалізація OpenGL.

Як ви могли зрозуміти з описаного вище. Що OpenGL, це лише якась описана специфікація за 3D графікою. Щоб цю специфікацію перетворити на життя необхідно написати (реалізувати) код. Код потім упаковується у спеціальну бібліотеку. І ось таких бібліотек існує кілька різних програмістів.

Перша з цих бібліотек називається GLU. Ця бібліотека вже стала стандартом і постачається разом із головною бібліотекою OpenGL. Наступна бібліотека, яка також широко використовується - це GLUT. Це також незалежна бібліотека від платформи. Вона реалізує не тільки додаткові функції OpenGL, але й надає функції для роботи з вікнами, клавіатурою та мишкою. Є ще одна бібліотека схожа на GLUT, називається вона GLAUX. Ця бібліотека розроблена фірмою Microsoft для операційної системи Windows. Вона багато в чому схожа на бібліотеку GLUT, але трохи відстає від неї за своїми можливостями.

Альтернатива для OpenGL.

Хоча бібліотека OpenGL і вважається однією з найкращих бібліотек, але вона існує в цій галузі не одна. Є в неї один прямий конкурент, про який я розповідав в одній із минулих статей. І цим конкурентом вважається Direct3D із пакета DirectX, розроблений фірмою Microsoft. Direct3D створювався виключно для ігрових програм. Між ними існує безліч відмінностей, з найбільш явних можна виділити, що Direct3D здійснюємо підтримку починаючи з дешевого обладнання, а OpenGL підтримується не на всіх графічних картах.

Чи потрібно встановлювати OpenGL?

Якщо Ви вже встановили драйвера на свою відеокарту, то ні. Оскільки остання версія OpenGL встановлюється під час встановлення драйверів від вашої графічної карти.

Щоб встановити нову версію OpenGL, необхідно оновити драйвера вашої відеокарти. Зайдіть на сайт виробника Вашої відеокарти: NVIDIA, AMD чи інше. Завантажте останні драйвери для вашої карти, встановіть їх.

Наприклад, моя відеокарта Radeon 7850. Заходжу я на сайт www.amd.com, знаходжу там сторінку з моєю відеокартою, дивлюся технічні характеристики.

Як можете помітити, з OpenGL 4.2 мій відеоадаптер дружить. Тепер підбираємо драйвера.

Чи може OpenGL працювати на одному комп'ютері з Direct3D?

Так. Обидві програми включені у версію Windows, працюють на високій швидкості та надають багато функцій для геймерів та відеоредакторів. Тому немає приводу переживати, щодо їхнього спільного «проживання» на вашому комп'ютері 🙂

Як увімкнути OpenGL?

Це питання не можна дати однозначної інструкції. Взагалі за умовчанням підтримка цієї технології прописується творцем гри ще на момент написання коду. І використання скажімо DirectX або OpenGL може налаштовуватися через певний пункт в меню гри, або включати самою грою за замовчуванням. Тому якщо творець гри не випускає додаткових оновлень та інструкцій до них зі встановлення скажімо додаткових бібліотек, то немає сенсу Вам думати про це питання. Ну а якщо якісь доповнення вийшли, скажімо на той же Counter Strike 1.6, ентузіасти написали чіт (а чіт - це погано!! атата), то для цього установки необхідно завантажити невеликий файл.dllі закинути в кореневу директорію гри, а потім в налаштуваннях гри вибрати OpenGL.

За рахунок цього гра починає використовувати функції, написані всередині цього файлу.

Висновок

Ось і пробіглися ми ще однією бібліотекою для роботи з графікою. OpenGL скажімо така специфічна річ, яка більшою мірою застосовується у професійній діяльності для 3D моделей. В іграх вистачає і функцій Direct3D, і навіть більше. Взяти версію 12, що недавно вийшла. Але OpenGL теж не стоїть на місці і з певним проміжком часу випускає нові версії з останніх — версія 4.5 від 11 серпня 2014 року.



дізнатися версію opengl linux (4)

Найпростіший і найшвидший спосіб - використовувати діагностичний інструмент, такий як GPU Caps Viewer.

Ви також можете використовувати glGetString(GL_VERSION), але пам'ятайте, що версія, яку ви хочете відобразити, є версією даного контексту OpenGL, що не обов'язково є найвищим, що може зробити ваш GPU. Однак, якщо ви створюєте контекст із налаштуваннями за промовчанням, ви, ймовірно, отримаєте максимально можливий контекст OpenGL у профілі сумісності, так що так, цей метод може бути корисним.

Крім того, оскільки glGetString(GL_VERSION) належить до контексту OpenGL, вам необхідно створити його заздалегідь. Насправді для виклику будь-якийфункції gl* потрібний контекст GL.

Дійсно, оновлення драйверів можедати вам вищу версію GL, але малоймовірно, що основна версія зміниться. Наприклад, якщо у вас буде підтримка GL 3.1, ймовірно, що останні драйвери дадуть вам GL 3.3, але не GL 4.0.

Я використовую Windows 7. Я програмую за допомогою OpenGL. Але я виявив, що є деякі можливості, які я можу використати. Тому я хочу перевірити версію OpenGL на моїй системі. Я використовую нижче код, щоб перевірити його

Const char * version = (const char *) glGetString (GL_VERSION);

Але я отримую нульовий покажчик. І якщо я хочу оновити OpenGL, що робити?

спробуйте використати наступний код, він працює для мене:

Cout<< "OpenGL Version: " << glGetString(GL_VERSION) << endl;

Переконайтеся, що ви включили рядок і iostream у програмі.

Вам потрібен струм контексту GL, перш ніж ви зможете спитати, яка у вас версія.

Отже, спочатку створіть контекст, викличте wglMakeCurrent на ньому і після цього ви зможете викликати glGetString.

Версія, про яку повідомляється, надходить із встановленого вами драйвера. Версія OpenGL, яку може підтримувати ваше обладнання, сама по собі не «оновлюється» (бо деякі апаратні функції будуть відсутні, щоб підтримувати останні та найкращі).

Таким чином, найкраще ви можете оновити свій драйвер, але не сподівайтеся на високі результати, це призведе до появи нового OpenGL.

Вам потрібно створити контекст OpenGL(WGL) перед викликом glGetString (GL_VERSION):

#include #include #pragma comment (lib, "opengl32.lib") LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); int WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd) (MSG msg = (0); WNDCLASS wc = (0); wc.lpfnWndProc = Wc = (HBRUSH)(COLOR_BACKGROUND); wc.lpszClassName = L"oglversionchecksample"; wc.style = CS_OWNDC; 0,640,480,0,0,hInstance,0); while(GetMessage(&msg, NULL, 0, 0) > 0) ) ( switch(message) ( case WM_CREATE: ( PIXELFORMATDESCRIPTOR pfd = ( sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags palette. Framebuffer. //Number of Aux buffers in the framebuffer.

PFD_MAIN_PLANE, 0, 0, 0, 0);