Se verifică versiunea opengl. Ce este OpenGL? Ce oferă noua versiune?

Întrebare: Determinați versiunea opengl


Aveți nevoie de cod pentru opengl es 2,
iar rețeaua este plină de cod pentru prima versiune
cum puteți determina rapid versiunea opengl prin cod?
Este nevoie de un semn negru în primii pași?

Răspuns:în primul rând trebuie să folosească VBO. adică glGenBuffers, glBindBuffer etc. deși acest lucru este suportat din 1.5. În al doilea rând, trebuie să utilizați shadere. adică glCreateProgram, glLinkProgram, glSetShader etc. Ei bine, codul ar trebui să includă și codul shader (deși până la 3.3 nu există nicio cerință pentru shadere, dar fără shadere de la 2.0 nu este de folos ce de la 1.5).

Întrebare: Ce versiune de OpenGL ar trebui să aleg astfel încât aplicația să accepte cel mai mare număr de plăci video?


Buna ziua! Întrebarea este exact aceeași ca în subiect: ce versiune de OpenGL ar trebui să aleg astfel încât aplicația să accepte cel mai mare număr de plăci video?

Răspuns:În general, asta cred.
La început, numărul utilizatorilor de PC a crescut exponențial și cred că această creștere a atins apogeul undeva între 2008-2011 (pentru fiecare țară acest vârf a fost în timpuri diferite, dar altundeva s-ar putea să nu fi fost realizat) iar acum această creștere este în scădere.

De fapt, aș începe de la acest vârf, adică... M-aș uita la ce versiune de OpenGL era la acel moment și m-aș folosi în scopul meu dacă aș avea nevoie de suport pentru a fi cel mai probabil. Ei bine, poate încă un minus câteva luni... adică timpul necesar pentru ca computerul să treacă de la producător la cumpărător.

Întrebare: Alegerea versiunii optime de OpenGL


Întrebarea este: care ar trebui să fie adecvat cerinţele de sistem pentru un simplu joc 2D în 2016? Există o idee că ar fi incorect să creezi un proiect la nivel Flappy Bird pe OpenGL 4.x din cauza incompatibilității multor plăci video cu această versiune. Versiunea minimă de OpenGL, după părerea mea, este 2.0, deoarece pe de o parte acoperă hardware-ul generațiilor mai vechi, pe de altă parte face posibilă folosirea shaderelor GLSL. Post-procesarea folosind un framebuffer este suportată de extensii. Dar nu sunt mulțumit de limitarea asociată cu funcția glTexImage2D. Nu toate plăcile video OpenGL 2.0 permit crearea de texturi în memorie mai mari de 1024px*1024px. De asemenea, necesită mai mult efort de optimizare pentru un astfel de hardware. Voi fi bucuros la orice sfat. De asemenea, ar fi bine să avem câteva statistici despre această problemă.

Răspuns:

Mesaj de la 8Observator8

Am o situație în care colectez jocuri (în exe) pe un laptop modern care rulează Win7 OS.

Nu contează pe ce colectezi.
Pentru motor, configurația mașinii pe care rulează este importantă.

Mesaj de la 8Observator8

Se pare că motorul compilează exe-ul în așa fel încât atunci când exe este lansat, aplicația însăși va alege ce să folosească: OpenGL 2.0 sau OpenGL 4.x?

exe conține motorul.
Acesta este cel care își asamblează configurația în mod dinamic atunci când este lansat din modulele existente.

Întrebare: versiunea OpenGL


Bună seara, dragi membri ai forumului. Este posibil să utilizați versiunile OpenGL 1.0–1.5 (această limitare a fost stabilită de un profesor de la institut) instalând, de exemplu, GLUT (sau alte biblioteci)? Multumesc anticipat pentru raspuns.
PS: limbaj de programare C sau C++.

Răspuns: Dacă nu utilizați extensii și funcții precum glCreateShaderObjectARB(..), glAttachObjectARB(..), etc. (adică, fără niciun shader), atunci acesta va fi OpenGL 1.5

Întrebare: Definiți Versiunea Windows


Salutare tuturor.
Am întâmpinat următoarea problemă: trebuie să determin versiunea sistemului de operare fără a folosi GetVersionEx. Cert este că pe msdn este scris despre această funcție:

Citat

Aplicații nu s-au manifestat pentru Windows 8.1 sau Windows 10 va returna valoarea versiunii sistemului de operare Windows 8 (6.2). Odată ce o cerere este manifestată pentru un dat sistem de operare versiune, GetVersionEx va returna întotdeauna versiunea pentru care se manifestă aplicația în versiunile viitoare.

Dar am nevoie doar de aplicația mea pentru a detecta că rulează pe Windows 10.
Opțiune de adăugat la manifest aplicații Windows 10 nu este potrivit.

Iată, de fapt, întrebarea: există modalități de a determina versiunea Windows folosind doar funcțiile în modul utilizator (RtlGetVersion nu este potrivit, deoarece rulează în modul kernel).

Acest mesaj a fost editat de rudolfninja - 13.8.2015, 12:16

Întrebare: Determinați versiunea ASP.NET instalată


Buna ziua! Scriu un program pentru a colecta informații din mediu.
Spuneți-mi cum să determin versiunea ASP.NET instalată pe un computer
Am determinat deja versiunea framework-ului .NET și multe altele, dar sunt probleme cu ASP.NET.

Răspuns:

Mesaj de la nevbie

sau se potriveste versiuni NET Cadru?

Ea nu poate lipsi, pentru că asta este NET Framework, doar câteva ansambluri din componența sa.

Fără îndoială, mulți jucători știu că pentru ca astfel de jocuri celebre precum Minecraft sau CS să funcționeze corect, una dintre cele mai de bază condiții este să aibă cele mai recente versiuni ale driverelor OpenGL instalate pe sistem. Cum să actualizați acest pachet de drivere va fi acum discutat, deoarece, ca oricare altul software, acestea pot deveni depășite. Acesta este motivul pentru care uneori apar probleme la lansarea jocurilor tale preferate.

OpenGL: care este cel mai simplu mod?

În primul rând, dacă, la pornirea unui joc sau a unei anumite aplicații, sistemul raportează că driverele OpenGL trebuie actualizate, ar trebui să utilizați cea mai standard soluție.

Pentru a activa procesul, trebuie să introduceți standardul „Manager dispozitive”, care se poate face din „Panou de control”, secțiunea de administrare a computerului sau prin comanda devmgmgt.msc prin linia consolei „Run” și să găsiți videoclipul instalat. adaptor acolo.

Actualizarea poate fi lansată folosind comanda cu același nume din meniul de clic dreapta sau din secțiunea de proprietăți a dispozitivului. Dacă specificați căutare automată, este posibil să nu funcționeze, iar sistemul va raporta cel mai mult șofer potrivit deja instalat. Prin urmare, este recomandabil să accesați mai întâi site-ul web al producătorului de echipamente, să selectați modelul plăcii grafice, să descărcați cel mai mult șofer nou, iar în timpul instalării, indicați locația distribuției salvate.

Cum să actualizez OpenGL pe Windows 7 sau orice alt sistem folosind utilitare specializate?

Pentru proprietarii de cipuri NVIDIA și Radeon, sarcina poate fi oarecum simplificată. De regulă, programele speciale de control precum PhysX și Catalyst sunt furnizate preinstalate pentru ele. De aceea, puteți actualiza driverul OpenGL folosindu-le.

Dacă din anumite motive, astfel de utilități nu sunt disponibile, ar trebui pur și simplu să le descărcați și să le integrați în sistem. Dacă aveți o conexiune la Internet activă în mod constant, acestea vor fi utile nu numai pentru configurarea jocurilor, ci și pentru monitorizarea automată a apariției noilor versiuni driverele necesare, inclusiv OpenGL.

În principiu, dacă utilizatorului nu îi place această opțiune, puteți folosi cel puțin programe interesante precum Driver Booster, care actualizează driverele pentru absolut tot hardware-ul și dispozitive software instalat pe un computer sau laptop. Aplicația va determina automat versiunea driverului OpenGL în timpul scanării sistemului. Cum să-l actualizez? Trebuie doar să fiți de acord cu oferta pentru a instala actualizările găsite. Odată ce procesul de actualizare este finalizat, va fi necesară o repornire completă.

În sfârșit, puteți instala utilitate specială numit OpenGL Extensions Viewer, cu ajutorul căruia puteți afla versiunea pachetului de driver instalat și o puteți actualiza la cea mai recentă versiune.

Actualizare DirectX

Cu toate acestea, este posibil ca actualizarea să nu vă ofere ceea ce doriți. rezultat pozitiv fără a actualiza platforma DirectX, care este un fel de punte de legătură între hardware și software în ceea ce privește multimedia.

A sti versiunea instalată puteți folosi comanda dxdiag introdusă în meniul Run. Puteți descărca noua distribuție de pe site-ul oficial Suport Microsoftîn secțiunea Descărcări.

După cum este deja clar, DirectX OpenGL poate fi actualizat pur și simplu pornind procesul de instalare a distribuției descărcate. Un alt avantaj al acestei actualizări este că puteți rula o serie de teste în cadrul casei de dialog DirectX, inclusiv performanța DirectSound, ffdshow, Direct3D etc.

De ce driverele nu sunt actualizate?

Dacă, brusc, nici una dintre soluțiile de mai sus nu ajută, cel mai probabil motivul constă doar în faptul că adaptorul video pur și simplu nu acceptă versiunea instalată a OpenGL, prin urmare, indiferent cum ați încerca, nu veți putea instala driverul. Singura soluție este instalarea unei plăci video mai puternice.

Apropo, această problemă apare cel mai adesea în cazul cipurilor video integrate ale standardului video-on-board, care sunt încorporate în plăcile de bază. De regulă, nu există astfel de probleme cu plăcile video discrete (desigur, cu condiția ca cipul să nu fie prea depășit și să suporte nativ tehnologia OpenGL). Cred că este deja clar cum pentru astfel de carduri. Dar uneori poate fi necesară actualizarea platformelor JAVA Runtime sau chiar a .NET Framework de la Microsoft - nu trebuie să uităm nici de asta. Dar, de regulă, în cele mai multe cazuri acest lucru nu este necesar - este suficient să utilizați în paralel utilitarul OpenGL Extensions Viewer.

  1. În șoferi pentru placi video NVIDIA furnizate ca parte a sălii de operație sisteme Windows, suportul OpenGL lipsește de obicei. Aplicațiile vor utiliza redarea software Windows OpenGL (wrapper în Direct3D în Windows Vista). Puteți verifica prezența unui driver OpenGL în sistem utilizând utilitățile OpenGL Extensions Viewer și GPU Caps Viewer. Dacă arată că furnizorul OpenGL este Microsoft, atunci sistemul nu are un driver OpenGL. Descărcați și instalați ultima versiune Drivere pentru placa video de pe site-ul web NVIDIA.
  2. Este posibil ca o nouă versiune a driverului să fi adăugat suport pentru o nouă versiune a API-ului OpenGL, care este necunoscută aplicației. De exemplu, driverul spune aplicațiilor că acceptă OpenGL versiunea 2.0, iar aplicația/jocul verifică dacă este compatibil cu OpenGL versiunea 1.X. Pentru a rezolva problema, puteți utiliza RivaTuner în Setări OpenGLîn fila „Compatibilitate”, forțați înlocuirea șirului versiunii OpenGL raportată de driver la cea acceptată de aplicație, de exemplu, 1.5. Această opțiune nu afectează execuția OpenGL de către placa video, dar din același motiv aplicațiile care necesită OpenGL versiunea 2.0 pot înceta să funcționeze. O modalitate mai flexibilă este de a crea pentru aplicare problematică profil de driver folosind utilitarul nHancer, specificând versiunea dorită în opțiunea „Versiune OpenGL raportată” din fila „Compatibilitate”.
  3. Problema poate apărea dacă mai multe drivere OpenGL sunt instalate pe sistem dintr-un motiv oarecare. In registrul de la adresa HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdrivers pentru Windows 9x-ME) verificați dacă există o singură subcheie RIVATNT și cheia Dll din această secțiune are valoarea nvoglnt (există o singură cheie cu valoarea nvopengl.dll pentru Windows 9x-ME). Dacă există alte subsecțiuni, de exemplu ati2dvag (OpenGL driver ATI), ar trebui eliminate exportându-le mai întâi într-un fișier .reg.
  4. Implementarea OpenGL 2.0 pentru GPU-uri GeForce FX și o versiune superioară Driver NVIDIA necesită sprijin procesor central Extensii SSE. Dacă aceste extensii nu sunt disponibile, driverul OpenGL ICD nu va fi inițializat. aplicații OpenGL va fi închis sau va fi utilizată redarea software. Puteți verifica inițializarea driverului folosind utilitarele OpenGL Extensions Viewer și GPU Caps Viewer, puteți verifica extensiile acceptate de procesor folosind utilitarele CPU-Z sau Sandra. Dacă procesorul nu acceptă SSE, puteți fie să utilizați mai mult versiuni timpurii driver (până la 75.ХХ), sau folosind RivaTuner în setările OpenGL din fila „Compatibilitate”, activați „Modul de emulare NV25” în loc de „Accelerația maximă” implicită. Ca ultimă soluție, puteți utiliza OpenGL -> Direct3D wrapper GLDirect sau TitaniumGL. Uneori procesorul acceptă SSE, dar suportul nu funcționează din cauza deprecierii BIOS placii de baza taxe. În special această problemă tipic pentru sistemele cu procesoare AMD Athlon XP și Duron. actualizare BIOS placa de baza poate restabili suportul SSE.
  5. Dacă sistemul are mai multe plăci video bazate pe diferite GPU-uri NVIDIA, atunci driverul OpenGL va accepta doar versiunea OpenGL acceptată de toate plăcile video.

Doar apelați glGetString(GL_VERSION) (odată ce contextul este inițializat, desigur) și ștergeți rezultatul (care este de fapt același cu glxinfo, cred):

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

Programul dvs. ar trebui să utilizeze automat cea mai înaltă versiune posibilă a suportului hardware și al driverelor, care în cazul dvs. pare a fi 3.3. Dar pentru a crea un context de profil principal pentru OpenGL 3+ (cel în care moștenirea funcţionalitate au fost complet eliminate), trebuie să luați măsuri speciale. Dar, începând cu versiunea 2.7 a GLFW, există o modalitate de a face acest lucru folosind funcția glfwOpenWindowHint. Dar dacă nu doriți să dezactivați în mod explicit funcțiile vechi, puteți utiliza pur și simplu contextul oferit de funcțiile implicite de creare a contextului GLFW, despre care se spune că acceptă cea mai înaltă versiune posibilă a hardware-ului și a driverelor dumneavoastră.

Dar rețineți că, pentru a utiliza funcțiile OpenGL de mai sus versiunii 1.1, trebuie să obțineți indicatorii de funcție corespunzătoare sau să utilizați o bibliotecă care se ocupă de acest lucru, cum ar fi .

Am început să scriu programe în C (pe în acest moment) folosind GLFW și OpenGL. Întrebarea este, de unde știu ce versiune de OpenGL va folosi programul meu? Laptopul meu spune că placa mea grafică are OpenGL 3.3. Introducerea „glxinfo | grep -i opengl" revine.

4 raspunsuri

Mă tem că va trebui să deschizi linie de comandă prima ta zi de Linux (nu-ți face griji, mi s-a întâmplat și mie). Aplicații -> Standard -> Terminal. Tastați lspci și apăsați Enter. Toate conexiunile prin PCI sau PCI express sunt enumerate aici, inclusiv placa video. Citiți lista până când vedeți ceva despre ATI sau nVidia sau despre unul dintre modelele Intel.

apoi accesați diagramele de comparație ale plăcilor grafice ale Wikipedia pentru a afla versiunea de OpenGL pe care o acceptă placa dvs.

amintiți-vă că vă spun doar ce versiune suportă hardware-ul. Pentru a putea rula biblioteci OpenGL, aveți nevoie și de un driver care să le accepte. Mai multe drivere video pentru fiecare generație de cip pentru Linux. Ubuntu vine cu versiuni open source cod sursă, care nu sunt rele, dar tind să fie cu un pas în spatele driverelor proprietare lansate de producători plăci grafice(care sunt adesea numite drivere binare sau drivere proprietare). Dacă se dovedește că hardware-ul dvs. acceptă OpenGL 2.0 (ceea ce majoritatea fac), puteți încerca drivere proprietare. Ele sunt numite nvidia-current pentru nvidia și fglrx pentru ATI. Pentru Intel, există doar drivere open source.

exemplu de pe laptopul meu:

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

și fragmentul corespunzător din lshw:

*-pci:0 descriere: PCI bridge product: Core Processor PCI Express x16 Root Port furnizor: Intel Corporation ID fizic: 1 bus info: :00:01.0 versiune: 02 lățime: 32 biți ceas: 33MHz capabilități: pci pm msi pciexpress normal_decode bus_master cap_list configurație: driver=pcieport resurse: irq:42 ioport:2000(size=4096) memory:fb000000-fbffffff ioport:f0000000(size=167772160) *-display descriere: VGA controler compatibil produs: nVidia Corporation furnizor fizic: nVidia Corporation id: 0 info bus: :01:00.0 versiune: a1 lățime: 64 biți ceas: 33MHz capabilități: pm msi pciexpress vga_controller bus_master cap_list configurație: driver=nouveau latency=0 resurse: irq:16 memorie:fb000000-fbffffff memorie:f0-0000 f7ffffff memorie:f8000000-f9ffffff ioport:2000(dimensiune=128) *-afișare descriere: produs controler compatibil VGA: procesor de bază pentru grafică integrată Vânzător controler: Intel Corporation ID fizic: 2 informații despre bus.