Skocz do zawartości

[Delphi][OpenGL]Menedżer tekstur


Brainer

Polecane posty

Siemka. :)

 

Napisałem dość zaawansowany menedżer tekstur. Może się przydać nawet w zaawansowanych projektach. Główne cechy to:

  • Wielowątkowy dostęp do tekstur
  • Obsługa wielu formatów graficznych (BMP, JPG, TGA, DDS)
  • Prostota korzystania i konfiguracji z tekstur
  • Pozwala korzystać z anizotropii w prosty i wygodny sposób
Tutaj macie kod menedżera tekstur. :)

Menedżer tekstur [ver. 1.0]

 

Zaznaczam, iż jest to wersja 1.0, a więc będę starał się regularnie zamieszczać aktualizacje. Podsuwajcie też ciekawe pomysły, opinie oraz niezbędną krytykę.

 

Dodałem również proste demo, które pokazuje jak z tego korzystać. Niestety, wysiadł mi serwerek i umieściłem to na YouSendIt. Jak wygaśnie, to mogę przesyłać na mail. Chociaż do tego czasu powinienem mieć już wszystko sprawne i umieszczę demko na serwerku. :D

 

Demo menedżera + klika innych rzeczy

 

Miłej zabawy! :)

Link do komentarza
Udostępnij na innych stronach

O coś dla Spidera ;]

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

HNB nie zgrywaj się <_>

Spoko zabawka, ale trochę pokręciłeś np.

 

To mi się nie podoba:

CYTAT{ .: TTextureEnvironment :. }

TTextureEnvironment = (teModulate, teBlend, teDecal, teReplace,

teAdd, teCombine);

Widac ze zrobiłes o mechanicznie i nigdy nie używałeś:

CYTATglTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);

Dla multitexturingu trzeba zadeklarować więcej opcji np co jest pobierane przy wejściu czy przekazywać kolor materiału kolor tekstury sposób mieszania tekstur czy to jest interpolacja może dot3 itp.

 

Przykład dla efektu blooma trzeba było coś takiego napisać:

CYTATglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);

 

glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);

glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);

 

glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);

glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);

 

glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, @CONST_HALF);

glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_CONSTANT_ARB);

Dlatego najlepiej jest przechowywać wszystko w tablicy jako

 

TEnvMaterial = array of record

tTarget: Cardinal;

tName: Cardinal;

tParam: Cardinal;

end;

glTexEnvf(tTarget, tName, tParam);

Dużo jeszcze pracy przed Tobą ;)

Pozdrawiam!

Spider^*^

www.spider.dathox.com :)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Gość
Temat jest zablokowany i nie można w nim pisać.
×
×
  • Utwórz nowe...