Autor Wątek: [d3d9] Problem z shaderem??  (Przeczytany 3475 razy)

Offline adsko

  • Użytkownik

# Kwiecień 29, 2011, 23:18:13
To nie od tego, same błędy z pTexture, pEffect, i zmienna w pętli passes jest poza wymiarem.
Jak udało mi się uruchomić program to czarne tło.
« Ostatnia zmiana: Kwiecień 29, 2011, 23:19:50 wysłana przez adsko »

Offline Mr. Spam

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

Offline Oti

  • Użytkownik

# Kwiecień 29, 2011, 23:21:31
Jak udało mi się uruchomić program to czarne tło.
Zapewne dlatego, że rysujesz czarne obiekty na czarnym tle.

Offline adsko

  • Użytkownik

# Kwiecień 29, 2011, 23:25:08
Jest to z kursu kod więc działa on.

Offline adsko

  • Użytkownik

# Maj 12, 2011, 17:44:52
Ok udało mi się skompilować shader, dla tych co mają taki problem co ja to musicie skopiować fxc.exe do folderu windows i jakoś się kompiluje bez błędów, ale mam inny problem, nie wiem dlaczego ale    D3DXCreateEffectFromFile(pDev, "shader.fx", 0, 0, 0, 0, &pEffect, &pErrs); nie daje żadnej wartości dla pEffect, a nie wiem dlaczego..

Offline radsun

  • Użytkownik
    • CaRpg

# Maj 12, 2011, 18:01:57
Kod: (cpp) [Zaznacz]
HRESULT hr = D3DXCreateEffectFromFile(...);
if(FAILED(hr))
{
   // błąd
}

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 12, 2011, 18:18:36
Cytuj
dla tych co mają taki problem co ja to musicie skopiować fxc.exe do folderu windows
A zmiennej środowiskowej PATH to ustawić nie łaska? ;)

Offline adsko

  • Użytkownik

# Maj 12, 2011, 18:52:58
Nic o tym nie wiedziałem;] Myślałem że directx sam wszystko sobie ustawia, przecież sam Microsoft go zrobił...
P.S Co do obsługi błędów to błąd występuje w tym, ustawiłem go tak:
   HRESULT hr =D3DXCreateEffectFromFile(pDev, "shader.fx", 0, 0, 0, 0, &pEffect, &pErrs);
   if (FAILED(hr))
   {
      MessageBox(hWnd,"error", "Błąd kompilacji shadera?!", 0);
      return 1;
   }
Podczas uruchomienia programu to go wywala, może coś jeszcze źle kompiluje?

Kszysiek.K Jesteś moim wybawcą:D Dzięki za pomoc:D Wszystko działa bez żadnych problemów!
« Ostatnia zmiana: Maj 12, 2011, 19:32:15 wysłana przez adsko »

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 12, 2011, 20:50:42
Cytuj
   HRESULT hr =D3DXCreateEffectFromFile(pDev, "shader.fx", 0, 0, 0, 0, &pEffect, &pErrs);
   if (FAILED(hr))
   {
      MessageBox(hWnd,"error", "Błąd kompilacji shadera?!", 0);
      return 1;
   }
Proponuję raczej:
   HRESULT hr =D3DXCreateEffectFromFile(pDev, "shader.fx", 0, 0, 0, 0, &pEffect, &pErrs);
   if (FAILED(hr))
   {
      MessageBox(hWnd,pErrs ? "Unknown error" : (char*)pErrs->GetBufferPointer(), "Błąd kompilacji shadera?!", 0);
      if(pErrs) pErrs->Release();
      return 1;
   }
Z reguły dostaniesz w ten sposób odpowiedź na wszystkie problemy. Ja u siebie dodatkowo mam OK/Cancel w tym messageboxie z brutalnym ExitProcess(0) na Cancel, bo jak się shader nie kompiluje, to najczęściej nie ma i tak po co iść dalej z wykonaniem.

Offline adsko

  • Użytkownik

# Maj 12, 2011, 21:36:01
Lepiej uczyć się z dokumentacji Directx czy z kursu Charibo? Albo może jeszcze jakiś inny kurs?
« Ostatnia zmiana: Maj 12, 2011, 21:42:19 wysłana przez adsko »

Offline Oti

  • Użytkownik

# Maj 12, 2011, 22:06:37
Lepiej uczyć się z dokumentacji Directx czy z kursu Charibo?
Jedno nie wyklucza drugiego. Ja leciałem na kursie Charibo tak długo jak się dało, ale od dokumentacji się nie ucieknie.