Autor Wątek: Co muszę zmienić w hardware/software, aby uczyć się OpenGL 4.0?  (Przeczytany 1561 razy)

Offline 0DFh

  • Użytkownik

# Wrzesień 05, 2010, 00:26:24
Witam,
Niewiele znam się na grafice 3D i postanowiłem uczyć się OpenGL 4.0, ale z tego co sprawdziłem na komputerze stacjonarnym z systemem Windows XP mam OpenGL 1.2 (karta VIA/S3G Unichrome Pro IGP/MMX/SSE), a na laptopie z systemem Windows 7 x64 mam OpenGL 2.1.0 (Karta Mobile Intel GMA 4500M).

Jak już pisałem mam małe pojęcie o grafice, zatem pytam: Co muszę zmienić w hardware/software, aby uczyć się OpenGL 4.0?

Jeżeli nie ma możliwości spróbowania najnowszego OpenGL to pewnie spróbuję DirectX, na laptopie mam DirectX 11.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Wrzesień 05, 2010, 00:28:49
OpenGL 4.x jest obsługiwany przez karty NVidii z serii GTX 400 a także karty ATI z serii HD 5000. Intel obsługi OpenGL 4.0 doczeka się około roku 2024.

Offline 0DFh

  • Użytkownik

# Wrzesień 05, 2010, 00:35:20
Dziękuję za odpowiedź.

Odpowiedź dostałem, nie chcę bez potrzeby ciągnąć tematu, ale trochę to dziwne dla mnie, czemu mogę programować w nowym DirectX 11, a w OpenGL tylko w wersji 2.1. jak jest już 4.0.

Offline Zielony

  • Użytkownik
    • Ghurund Engine

# Wrzesień 05, 2010, 00:49:44
Nie wiem, jak OpenGL, ale DirectX 11 pozwala na odpalanie go na sprzęcie nie obsługującym wszystkich najnowszych funkcji. Jeśli masz system obsługujący DX 11 i kartę graficzną zgodną ze standardem DX 9, to możesz uruchomić bibliotekę, używać jej klas, funkcji, itp., ale nie uzyskasz na ekranie efektów wymagających lepszego sprzętu. Ewentualnie wszystko, co wymaga lepszej karty będzie uruchamiane pod emulatorem.

Offline Dab

  • Redaktor
    • blog

# Wrzesień 05, 2010, 00:53:07
Można pisać w DX11 na sprzęt DX9 ale można używać wyłącznie możliwości dostępnych dla sprzętu DX9. Dodatkowo ogranicza to zasięg aplikacji do systemów Vista/7.

W przypadku OpenGL taki zabieg jest niepotrzebny -- tutaj "wersje" są bardziej płynne i zależą od drivera a nie od SDK. Program napisany pod OGL 2.1 jest również prawidłowym programem OGL 4.0 (oczywiście w profilu Compatibility). Aczkolwiek można pisać taki kod pod 2.1, żeby był zgodny również z profilem Core.

Offline Avaj

  • Użytkownik

# Wrzesień 05, 2010, 01:00:57
tak na dobrą sprawę, to wygląda tak:

karta DX10 - możesz pisać w OGL 3.3 + to co dorzucili w nowszych zgodne w dół (np GL_arb_separate_shaders)
karta DX11 - to co wyżej, plus wszystko co jest w 4.0 i 4.1 (głównie chodzi o control/eval shader do teselacji)

Offline skoti

  • Użytkownik

# Wrzesień 05, 2010, 01:09:40
Odpowiedź dostałem, nie chcę bez potrzeby ciągnąć tematu, ale trochę to dziwne dla mnie, czemu mogę programować w nowym DirectX 11, a w OpenGL tylko w wersji 2.1. jak jest już 4.0.
Ta karta intela, którą masz nie obsługuje Dx11, a tylko Dx10 (i możesz wykorzystać tylko tą funkcjonalność którą masz w dx10, a to co nowsze użyć nie możesz). Obsługa Dx11 u intela zapowiedziana jest na rok 2012 (Ivy Bridge) i może wtedy zrobią aktualizację sterowników OpenGL (ostatnio nie spieszyli się z tym, bo OpenGL 3.x oznaczał praktycznie to samo co OpenGL 2.1 + rozszerzenia (poza kilkoma rzeczami z 3.2 - których nie ma w dx10, a dopiero w dx10.1 i dx11, ale ich karty i tak tych rzeczy nie obsługują więc tego nawet nie mogli dać ;p) więc nie widzieli sensu - teraz jest wiele nowinek w OpenGL 4.x które nie są już dostępne dla OpenGL 2.1 (np. tesselacja to minimum OpenGL 3.3 + rozszerzenia)).

Podsumowując:
Dx10 = OpenGL 2.1 + rozszerzenia lub OpenGL 3.x + kilka rozszerzeń
dx10.1 = OpenGL 3.x + rozszerzenia
dx11 = OpenGL 4.x

Offline 0DFh

  • Użytkownik

# Wrzesień 05, 2010, 02:53:47
Dzięki wszystkim za odpowiedzi. O możliwości mi na razie nie chodzi, bardziej o styl pisania, żeby po prostu pracować już na najnowszych wersjach.

Offline Avaj

  • Użytkownik

# Wrzesień 05, 2010, 18:31:02
Jeśli chodzi o styl pisania, to w OGL 2.x już można bardziej przyszłościowo pisać, wyrzucając cały fixed function. Czyli zostają shadery + VBO, macierze przekazywane do shadera przez uniformy, atrybuty przez glVertexAttribArray.

Warto też popatrzeć na rozszerzenie GL_ext_direct_state_access. Na razie 'wymaga' OpenGL 3.3 i nie wiem czy w ogóle jest wspierane na AMD, ale wszystkie nowe obiekty dodane do OpenGLa np. pipeline object i sampler object już korzystają z DSA w swoim API.

Offline Patryk N.

  • Użytkownik

# Wrzesień 07, 2010, 00:44:01
GL_ext_direct_state_access jest wspierane na kartach AMD od Catalyst 10.7.