Dobre 3D w Opengl

0

Są tu pewnie specjaliści więc wiedzą, czy warto zaczynać robić coś poważnego w OpenGL w Windows,
czy też od razu brać się za ten DirectX?

W OpenGl 1.0 to nic prawie nie można zrobić, w 1.1 jest trochę lepiej - kilka textur i coś jeszcze,
ale konkretne sprawy to władowano do tych wszystkich GL_ARB_xxx, GL_EXT_xxxx, GL_ATI_xxx, itd.
A bump maping, cienie, lustra, vertex shader i te nowsze sprawy to nieosiągalne chyba...

W DX9 to nie wiem za bardzo co tam jest, ale jest przynajmniej dokumentacja dostępna... konkretna,
a nie jakieś strzępy jak w GL.
Do Gl 2.0 to nawet headerów nie widać... a kilka lat już to jest - nawet Radeon 9200 już obsługiwał,
a może i wcześniejsze.

0

DX jest dużo bardziej kompleksowe od OpenGL, natomiast OpenGL jest wygodniejszy od DX. Ja na razie ucze się OpenGL i oczekuję na DX .NET, które nie będzie takie beznajdziejn w obsłudze.

0
zxspectrum napisał(a)

W OpenGl 1.0 to nic prawie nie można zrobić, w 1.1 jest trochę lepiej - kilka textur i coś jeszcze,
ale konkretne sprawy to władowano do tych wszystkich GL_ARB_xxx, GL_EXT_xxxx, GL_ATI_xxx, itd.
A bump maping, cienie, lustra, vertex shader i te nowsze sprawy to nieosiągalne chyba...

W DX9 to nie wiem za bardzo co tam jest, ale jest przynajmniej dokumentacja dostępna... konkretna,
a nie jakieś strzępy jak w GL.
Do Gl 2.0 to nawet headerów nie widać... a kilka lat już to jest - nawet Radeon 9200 już obsługiwał,
a może i wcześniejsze.

Widziałeś gry "Return to Castle Wolfenstein" i "Medal of honor" ? Obie napisane w OpenGl. Proponuję strony
www.sulaco.us i http://nehe.gamedev.net/. Co do dokumentacji to poszukaj dokładnie. Osobiście wolę OpenGl. Darmowy. Działa pod linuksem.

0
Oleksy_Adam napisał(a)

Widziałeś gry "Return to Castle Wolfenstein" i "Medal of honor" ? Obie napisane w OpenGl. Proponuję strony
www.sulaco.us i http://nehe.gamedev.net/. Co do dokumentacji to poszukaj dokładnie. Osobiście wolę OpenGl. Darmowy. Działa pod linuksem.

DX nie jest płatny.

Większość gier ma opcję pracy w OpenGl, ale jak to jest zrobione to nie wiem.
Na pewno nie robią tego na tych gl.h, glu.h z Windowsa, lub jakiś zdegenerowanych glutach.
Być może importują funkcje bezpośrednio ze sterowników GL - atiogl lub nvgl, albo robią własne stery,
które jadą bezpośrednio po karcie graficznej...

Linux i inne takie niszowe systemiki raczej mnie nie interesują - a zresztą jest tam jakiś emulator windowsa,
więc można odpalać prostsze programy z Win - te z GL powinny chodzić.

Jak się nazywa funkcja która pozwala zwielokrotniać obiekty i jak to użyć?
Chodzi o coś takiego, co jest zrobione w 3DMark 2003 z tymi skaczącymi krasnalami.

0
zxspectrum napisał(a)

Linux i inne takie niszowe systemiki
nie wywoluj wojny ;]

jezeli chcesz pisac profesjonalne gry, to jestes glupi, jezeli mowisz, ze nie obchodza cie takie systemy jak linux. duza czesc osob, ktora korzysta z tego systemy, korzysta z niego ze wzgledow ideologicznych, badz finansowych. wola uzywac czegos co maja za darmo, bo nie chca okradac takich firm jak MS czy Adobe. i jest wieksza prawdopodobienstwo, ze to oni kupia gre niz statystyczny windowsowiec. jezeli zrobisz gre wieloplatformowa, to sie ciesz, bo zdobedziesz wiecej klientow. taka przewage daje OpenGL.

0
Karolaq napisał(a)

taka przewage daje OpenGL.

I zawsze można faworyzować niektóre karty graficzne :P (oczywiście za niewielką opłatą ze strpny firm [rotfl] )

0
Karolaq napisał(a)

jezeli chcesz pisac profesjonalne gry, to jestes glupi, jezeli mowisz, ze nie obchodza cie takie systemy jak linux. duza czesc osob, ktora korzysta z tego systemy, korzysta z niego ze wzgledow ideologicznych, badz finansowych. wola uzywac czegos co maja za darmo, bo nie chca okradac takich firm jak MS czy Adobe. i jest wieksza prawdopodobienstwo, ze to oni kupia gre niz statystyczny windowsowiec. jezeli zrobisz gre wieloplatformowa, to sie ciesz, bo zdobedziesz wiecej klientow. taka przewage daje OpenGL.

W tej chwili chodzi mi o zastosowanie 3D w programie użytkowym - architektura,
projekty konstrukcji budowlanych, itp.

Gry to więcej roboty - efekty specjalne, muzyka, scenariusze - robota dla grafików, plastyków,
muzyków, i setki innych szaleńców... a i tak kosztuje to wszystko później grosze - 50zł to już kosmos. :-D

0
zxspectrum napisał(a)

W tej chwili chodzi mi o zastosowanie 3D w programie użytkowym - architektura,
projekty konstrukcji budowlanych, itp.

Jeżeli tylko coś takiego to bardziej odpowiedni wydaje się być OGL.

0

OK, niech będzie OGL.

Bardziej realne powierzchnie 3d - oświetlenie, odbłyski, rysy, itp.

Użycie glLight daje słaby efekt - aby uzyskać gładkie oświetlenie trzeba
posiekać powierzchnię na ogromną liczbę fragmentów - tekseli, a to kosztuje...
a i tak efekt będzie słaby - wszystko przesadnie gładziutkie i równiutkie.

Jest metoda, która robi to dużo lepiej: cube mapping
user image

Jak opracować te 6 obrazków tekstury, które tu nałożono?
Może jest jeszcze lepsza metoda od kubicznego teksturowania?

0

A ja mam jeszcze pytanie dotyczące OGL. Otoż niedawno napisalem prosty program, który wyświetla pewien obiekt 3D. Jest to jednak algorytm powolny (chodzi o parametry obiektu), który wymaga wielu obliczeń, w dwu pętlach. Czy nie dało by się zapamiętać samego obiektu (mnóstwo malutkich sześcianików), który by był wyświetlany pod różnymi kątami i w różnym przybliżeniu, tak, by użytkownik mógł oglądać dany obiekt z różnych stron, ale na wyliczanie współrzędnych musiał czekać tylko raz?

0

Poczytajcie http://4programmers.net/Delphi/Gotowce/Wykorzystanie_obiekt%C3%B3w_z_3dsMax_i_Solid_Works_w_OpenGL

Można przygotować obiekt w 3ds lub solidworks i przerobić na open gl

0

Nie o to chodzi. Słyszałeś kiedyś o Fraktalu Mandelbrota? Wymyśliłem jego graficzną prezentację w 3d (wartość z była ustawiana w zależności od promienia liczby zespolonej po ostatniej iteracji. Mój program pokazywał piękne "Wyspy" z których spływały strumienie odpadających pikseli. Można było w ten sposób zobaczyć, gdzie miały nie długo "odpaść" kolejne piksele, a gdzie były one dobrze ukorzenione. Grafika była dosyć ciekawa, ale jeżeli chciałeś się przybliżyć, musiałeś poczekać, aż dwie pętle przeanalizują i wyświetlą płaszczyznę pomiędzy wartościami -2 na osi x, do wartości 2 na osi x i -2 na osi y, do wartości 2 na osi y, poruszając się o wartość 0.01. Nie da się chyba zaprogramować w zewnętrznym pliku tylu wartości. Można by jednak spróbować zapisać je tylko raz - na początku programu, ale to aż takie proste i pamęcio-oszczędne nie jest.

0
Marandil napisał(a)

Czy nie dało by się zapamiętać samego obiektu (mnóstwo malutkich sześcianików), który by był wyświetlany pod różnymi kątami i w różnym przybliżeniu, tak, by użytkownik mógł oglądać dany obiekt z różnych stron, ale na wyliczanie współrzędnych musiał czekać tylko raz?

Do takiego powielania obiektu służą display lists: glGenLists, glNewList, itd.

Wymyśliłem jego graficzną prezentację w 3d (wartość z była ustawiana w zależności od promienia liczby zespolonej po ostatniej iteracji.

to jest tzw. rzeźba funkcji zespolonej, np.:
f(z) = sin(z), i teraz robimy wykres modułu: |f(z)| = |f(x,y)|,
dodatkowo można pokazać arg(f(z)) -> kolor. :-)

0

Ja osobiście do grafiki używam ogl, a do dźwięku, obsługi myszy i klawiatury odpowiednio DSound i DInput, do sieci bezapelacyjnie winsock.

1 użytkowników online, w tym zalogowanych: 0, gości: 1