LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

Basta chiamare glGetString(GL_VERSION) (una volta inizializzato il contesto, ovviamente) e svuotare il risultato (che in realtà è lo stesso di glxinfo, credo):

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

Il tuo programma dovrebbe utilizzare automaticamente la versione più alta possibile del supporto hardware e driver, che nel tuo caso sembra essere la 3.3. Ma per creare un contesto di profilo principale per OpenGL 3+ (uno in cui le funzionalità legacy sono state completamente rimosse), è necessario adottare misure speciali. Ma dalla versione 2.7 di GLFW esiste un mezzo per farlo utilizzando la funzione glfwOpenWindowHint. Ma se non vuoi disabilitare esplicitamente le funzionalità legacy, puoi semplicemente utilizzare il contesto fornito dalle funzioni di creazione del contesto predefinite di GLFW, che si dice supporti la versione più alta possibile del tuo hardware e dei tuoi driver.

Ma tieni anche presente che per utilizzare le funzionalità OpenGL superiori alla versione 1.1 devi ottenere i puntatori alle funzioni appropriati o utilizzare una libreria che lo gestisca per te, come .

Ho iniziato a scrivere programmi in C (per ora), utilizzando GLFW e OpenGL. La domanda è: come faccio a sapere quale versione di OpenGL utilizzerà il mio programma? Il mio portatile dice che la mia scheda grafica ha OpenGL 3.3. Inserendo "glxinfo | grep -i opengl" restituisce.

Nella maggior parte dei casi, gli utenti richiedono un pacchetto di file chiamato OpenGL per eseguire correttamente determinati giochi su un computer che esegue il sistema operativo Windows 7. Se questo driver manca o la sua versione non è aggiornata, i programmi semplicemente non si accenderanno e a sullo schermo verrà visualizzata la notifica corrispondente che richiede l'installazione o l'aggiornamento BY. In questo articolo parleremo nel modo più dettagliato possibile del caricamento di nuove librerie OpenGL.

Innanzitutto è bene capire come viene installato il componente in questione su un PC. Tutti i file necessari vengono installati insieme ai driver dell'adattatore grafico. Pertanto, dovresti prima aggiornare il software di questo componente, quindi passare all'analisi del metodo alternativo.

Quando hai installato il driver più recente sulla tua scheda video e non ci sono più aggiornamenti, ma appare ancora una notifica sulla necessità di aggiornare OpenGL, procedi immediatamente al terzo metodo. Se questa opzione non porta alcun risultato, significa che il tuo hardware non supporta le librerie più recenti. Ti consigliamo di pensare alla scelta di una nuova scheda video.

Metodo 1: aggiorna i driver della scheda video in Windows 7

Come accennato in precedenza, i componenti OpenGL vengono installati insieme ai file dell'adattatore grafico. Windows 7 dispone di diversi metodi per aggiornarli. Ognuno di essi è adatto a diverse situazioni e richiede all'utente di eseguire determinate azioni. Vai all'articolo al link sottostante per conoscere tutti i metodi in dettaglio. Scegli quello più adatto a te e segui le istruzioni fornite. Una volta completato il processo, basta riavviare il computer e verificare la funzionalità dei giochi o di altri programmi che richiedono una nuova versione della libreria.

Metodo 2: aggiornamento dei componenti nell'utilità proprietaria della scheda video

Attualmente, i principali produttori di adattatori grafici sono AMD e NVIDIA. Ognuno ha il proprio software che garantisce il corretto funzionamento del sistema operativo e consente di aggiornare il software. Si consiglia ai possessori di schede video NVIDIA di fare riferimento al materiale al seguente collegamento per comprendere come installare la nuova versione del driver OpenGL in GeForce Experience.

I possessori di schede AMD devono leggere altri articoli, poiché in questo caso tutte le azioni vengono eseguite nel Catalyst Control Center o in Radeon Software Adrenalin Edition, a seconda del tipo di software installato.

Metodo 3: aggiornamento DirectX

Non è il metodo più efficace, ma a volte funziona, consiste nell'installare nuovi componenti della libreria DirectX. A volte contiene file adatti che consentono il normale funzionamento dei giochi o dei programmi necessari. Per prima cosa devi scoprire quale DirectX è già installato sul tuo computer. Per fare ciò, leggi le istruzioni nell'articolo qui sotto.

Al momento, l'ultima versione per il sistema operativo Windows 7 è DirectX 11. Se hai installato una libreria precedente, ti consigliamo di aggiornarla e di verificare la funzionalità del software. Maggiori informazioni su questo argomento in un altro articolo.

Come puoi vedere, non c'è nulla di complicato nell'aggiornare OpenGL; il problema principale è solo il supporto degli ultimi file di questo componente da parte della tua scheda video. Raccomandiamo di testare tutti i metodi, poiché l'efficacia di ciascuno dipende da circostanze diverse. Leggi le istruzioni e seguile, quindi avrai sicuramente successo.

  1. I driver per le schede video NVIDIA inclusi nel sistema operativo Windows solitamente non supportano OpenGL. Le applicazioni utilizzeranno il rendering del software Windows OpenGL (un wrapper in Direct3D in Windows Vista). È possibile verificare la presenza di un driver OpenGL nel sistema utilizzando le utilità OpenGL Extensions Viewer e GPU Caps Viewer. Se mostrano che il fornitore OpenGL è Microsoft, il sistema non dispone di un driver OpenGL. Scarica e installa il driver più recente della scheda grafica dal sito Web NVIDIA.
  2. Una nuova versione del driver potrebbe avere aggiunto il supporto per una nuova versione dell'API OpenGL sconosciuta all'applicazione. Ad esempio, il driver comunica alle applicazioni che supporta OpenGL versione 2.0 e l'applicazione/gioco verifica il supporto per OpenGL versione 1.X. Per risolvere il problema, è possibile utilizzare RivaTuner nelle impostazioni OpenGL nella scheda "Compatibilità" per forzare la sostituzione della stringa della versione OpenGL riportata dal driver su quella supportata dall'applicazione, ad esempio 1.5. Questa opzione non influisce sull'esecuzione di OpenGL da parte della scheda video, ma per lo stesso motivo le applicazioni che richiedono OpenGL versione 2.0 potrebbero smettere di funzionare. Un modo più flessibile è creare un profilo del driver per l'applicazione problematica utilizzando l'utilità nHancer, specificando la versione richiesta nell'opzione "Versione OpenGL segnalata" nella scheda "Compatibilità".
  3. Il problema può verificarsi se per qualche motivo nel sistema sono installati più driver OpenGL. Nel registro all'indirizzo HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdrivers per Windows 9x-ME) verificare che sia presente un'unica sottochiave RIVATNT e che la chiave Dll in questa sezione abbia il valore nvoglnt (esiste un'unica chiave con il valore nvopengl.dll per Windows 9x-ME). Se sono presenti altre sottosezioni, ad esempio ati2dvag (driver ATI OpenGL), è necessario rimuoverle esportandole prima in un file .reg.
  4. L'implementazione di OpenGL 2.0 per GeForce FX e GPU superiori nel driver NVIDIA richiede il supporto della CPU per le estensioni SSE. Se queste estensioni non sono disponibili, il driver OpenGL ICD non verrà inizializzato, le applicazioni OpenGL verranno chiuse o verrà utilizzato il rendering del software. Puoi controllare l'inizializzazione del driver utilizzando le utilità OpenGL Extensions Viewer e GPU Caps Viewer; puoi controllare le estensioni supportate dal processore utilizzando le utilità; CPU-Z O Sandra. Se il processore non supporta SSE, è possibile utilizzare versioni precedenti del driver (fino a 75.XX) oppure, utilizzando RivaTuner nelle impostazioni OpenGL nella scheda "Compatibilità", abilitare la "Modalità emulazione NV25" invece di quella predefinita “Accelerazione massima” " Come ultima risorsa è possibile utilizzare OpenGL -> wrapper Direct3D GLDirect o TitaniumGL. A volte il processore supporta SSE, ma il supporto non funziona a causa del BIOS della scheda madre obsoleto. Questo problema è particolarmente tipico dei sistemi con processori AMD Athlon XP e Duron. L'aggiornamento del BIOS della scheda madre potrebbe ripristinare il supporto SSE.
  5. Se il sistema dispone di più schede video basate su diverse GPU NVIDIA, il driver OpenGL supporterà solo la versione OpenGL supportata da tutte le schede video.


scoprire la versione di opengl linux (4)

Il modo più semplice e veloce è utilizzare uno strumento diagnostico come GPU Caps Viewer.

Puoi anche utilizzare glGetString(GL_VERSION) ma ricorda che la versione che desideri visualizzare è la versione del contesto OpenGL fornito, che non è necessariamente il massimo che la tua GPU può fare. Tuttavia, se stai creando un contesto con impostazioni predefinite, probabilmente ti ritroverai con il contesto OpenGL più grande possibile nel profilo di compatibilità, quindi sì, questo metodo può essere utile.

Inoltre, poiché glGetString(GL_VERSION) è specifico per un dato contesto OpenGL, è necessario crearlo in anticipo. In realtà per la chiamata Qualunque La funzione gl* richiede un contesto GL.

In effetti, aggiornamento del driver Forse darti una versione GL superiore, ma è improbabile che la versione principale cambi. Ad esempio, se disponi del supporto GL 3.1, è molto probabile che i driver più recenti ti forniranno GL 3.3 ma non GL 4.0.

Sto usando Windows 7. Sto programmando con OpenGL. Ma ho scoperto che ci sono alcune possibilità che posso usare. Quindi voglio controllare la versione OpenGL sul mio sistema. Sto usando il codice seguente per testarlo

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

Ma ottengo un puntatore nullo. E se voglio aggiornare OpenGL, cosa devo fare?

prova a usare il seguente codice, per me funziona:

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

Assicurati di includere string e iostream nel tuo programma.

Hai bisogno del contesto GL corrente prima di poter chiedere quale versione possiedi.

Quindi prima crea un contesto, chiama wglMakeCurrent su di esso e dopo puoi chiamare glGetString.

La versione segnalata proviene dal driver installato. La versione di OpenGL che il tuo hardware può supportare non è di per sé "aggiornata" (perché mancheranno alcune funzionalità hardware per supportare la versione più recente e migliore).

Quindi la cosa migliore che puoi fare è aggiornare il tuo driver, ma non aspettarti grandi risultati, si tradurrà in un nuovo OpenGL.

Hai bisogno creare un contesto OpenGL(WGL) prima di chiamare glGetString(GL_VERSION):

#includere #includere #pragma commento (lib, "opengl32.lib") LRESULT CALLBACK WndProc(HWND hWnd, messaggio UINT, 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 = WndProc; wc.hInstance = hInstance; wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND); wc.lpszClassName = L"oglversionchecksample"; wc.style = CS_OWNDC; if(!RegisterClass(&wc)) restituisce 1;WS_VISIBLE,0; 0,640,480,0,0,hInstance,0); while(GetMessage(&msg, NULL, 0, 0) > 0) DispatchMessage(&msg); return 0 LRESULT CALLBACK WndProc(HWND hWnd, messaggio UINT, WPARAM wParam, LPARAM lParam ) ( switch(messaggio) ( case WM_CREATE: ( PIXELFORMATDESCRIPTOR pfd = ( sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags PFD_TYPE_RGBA, //Il tipo di framebuffer. RGBA o tavolozza. 32, //Profondità colore del framebuffer. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, //Numero di bit per Depthbuffer 8, //Numero di bit per Stencilbuffer 0, //Numero di buffer Aux nel framebuffer.

PFD_PIANO_MAIN, 0, 0, 0, 0 );

HDC ourWindowHandleToDeviceContext = GetDC(hWnd);

int letWindowsChooseThisPixelFormat;

ricorda che ti dicono solo quale versione supporta l'hardware. Per poter eseguire le librerie OpenGL è necessario anche un driver che le supporti. Più driver video per ogni chip di generazione per Linux. Ubuntu viene fornito con versioni open source, che non sono male, ma tendono ad essere un passo indietro rispetto ai driver proprietari rilasciati dai produttori di schede grafiche (spesso chiamati driver binari o driver proprietari). Se risulta che il tuo hardware supporta OpenGL 2.0 (come la maggior parte), puoi provare i driver proprietari. Si chiamano nvidia-current per nvidia e fglrx per ATI. Per Intel esistono solo driver open source.

esempio dal mio portatile:

Richiesta>lspci | grep VGA 00:02.0 Controller compatibile VGA: Intel Corporation Core Processor Controller grafico integrato (rev 02) 01:00.0 Controller compatibile VGA: nVidia Corporation Dispositivo 0df0 (rev a1) prompt>

e il corrispondente estratto da lshw:

*-pci:0 descrizione: Prodotto bridge PCI: Core Processor PCI Express x16 Root Port fornitore: Intel Corporation ID fisico: 1 informazioni bus: :00:01.0 versione: 02 larghezza: 32 bit clock: 33 MHz funzionalità: pci pm msi pciexpress normal_decode bus_master cap_list configurazione: driver=pcieport risorse: irq:42 ioport:2000(size=4096) memoria:fb000000-fbffffff ioport:f0000000(size=167772160) *-descrizione display: prodotto controller compatibile VGA: nVidia Corporation fornitore: nVidia Corporation fisico id: 0 informazioni bus: :01:00.0 versione: a1 larghezza: 64 bit orologio: 33 MHz funzionalità: pm msi pciexpress vga_controller bus_master cap_list configurazione: driver=nouveau latenza=0 risorse: irq:16 memoria:fb000000-fbffffff memoria:f0000000- memoria f7ffffff: f8000000-f9ffffff ioport:2000(dimensione=128) *-descrizione display: prodotto controller compatibile VGA: fornitore del controller grafico integrato con processore core: Intel Corporation ID fisico: 2 informazioni bus.

LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam