Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - Khaine

Strony: [1]
1
Ogre3D / [ogre] ustawnienie textury w shaderze
« dnia: Wrzesień 19, 2008, 23:54:07 »
Jak mozna ustawic texture w shaderze/materiale? Mam nastepujacy kod:
Entity *pEnt = pSceneManager->createEntity("mesh", "mesh.mesh");
pEnt->getSubEntity(0)->setMaterialName("jakis_material");

Chcialbym teraz ustawic w materiale/shaderze (konkretnie hlsl/cg), texture, ktora jest ladowana w createEntity dla danego subMesha, czyli cos na zasadzie material->setTexture("textura", index). Jedyne co na razie u dalo mi sie zrobic to w materiale ustawic texture (texture_unit) i w shaderze (uniform sampler2D texture : register(s0)), ale ogre'a uzywam dopiero od wczoraj i nie udalo mi sie jeszcze nic wygooglac, a w samplach tylko takie rozwiazanie znajduje.

Bede wdzieczny za pomoc.

2
C++ / kilka pytan - metody
« dnia: Luty 22, 2008, 22:19:41 »
Z gory przepraszam, jesli moje pytania sa lamerskie ;)

1. czy mozna sprawdzic podczas kompilacji czy zostala wywolana jakas funkcja/methoda w kodzie?
2. czy mozna napisac metode GetClass1 taka, ze...
class Class1 { ... };
class Class2
{
public:
 Class1 *GetClass1() { return pClass1; }
private:
 Class1 *pClass1;
};

//... niemozliwe jest wywolanie operatora ->
Class2.GetClass1()->DoSth(); //dowolna metoda z klasy Class1

Chcialbym, zeby mozna bylo tylko pobrac wskaznik do Class1 taka metoda. Rozwiazanie takie, ze kompilator zwroci error tez mi odpowiada.

3. Jesli mamy wskaznik na klase (pA - wsk. na klase A), to czy mozna uniemozliwic wykonanie kodu delete pA, jednoczesnie umozliwiajac delete pA, ale tyko w metodzie klasy A (np. A::Delete())? W tym przypadku errorem tez sie zadowole, grunt zeby sie nie dalo :) Dzieki za pomoc.

3
DirectX / vertex buffer
« dnia: Luty 07, 2008, 01:28:08 »
moje pytanie niestety nie jest gornolotne :P Chodzi o to, ze mam N - wierzcholkow, M - normalnych i K - face'ow. Dla przykladu wezmy szescian. 8 wierzcholkow, 24 normalne i 12 face'ow (kazdy face ma 3 indexy na wierzcholki i 3 indexy na normalne). Jak z tego zrobic vertex buffer? Jedyny sposob jaki znam to zrobic strukture
struct vertex
{
 float x,y,z; //wierzcholek
 float nX, nY, nZ; //normalna
};
I w tablicy takich struktur zapisac cala siatke i wrzucic do VB.
Tylko, ze wtedy musialbym z tych 8 wierzcholkow zrobic 24 (czyli kazdy powtarza sie 3 razy :P), wiec indexy sa niepotrzebne. Da sie to zrobic optymalniej?

Dzieki za pomoc.

4
C++ / void* to float
« dnia: Styczeń 28, 2008, 14:42:59 »
mam taki problem: chce odczystac z pliku (binarnego) dane do tablicy a nastepnie w miare potrzeb odczytywac z tej tablicy dane (zeby nie robic tego bezposrednio z pliku).

Robie tak:
void** buff = new void*[rozmiar_pliku];
fread(buff, rozmiar_pliku, 1, pPlik);
int i = (int)(*buff); //dziala
int *pI = (int*)(buff); //tez dziala
float f = (float)(*buff); //error - nie mozna void* do float
float *pF = (float*)(buff); //bez errora, ale wywala sie podczas odczytywania z jakiegos adresu

jeszcze inaczej. Mam strukture
struct S { int i; float f; }po zapisaniu do pliku moge ja odczytac
S *pS = (S*)(buff);i tutaj juz float jest odczytany i nie wywala sie.

Mi jednak zalezy na samej wartosci float, nie na wskazniku

Dzieki za pomoc.

Aha, zeby nie bylo: przesuwam wskaznik tablicy 'buff' jak odczytam jakies dane. W kodzie podalem tylko alternatywne 'odczytywania'

//Edit: pokombinowalem jeszcze troche i zauwazylem, ze jesli jako pierwszy (z tablicy) odczytam float (pod warunkiem ze jako pierwszy byl zapisany do pliku) to odczytuje sie poprawnie: float *p = (float*)(buff); Problem jest jesli chce odczytac float (nawet do wskaznika) po np: int
int i = (int)(*buff);
buff += sizeof(int);
float *pF = (float*)(buff);
cout<<*pF; //wyswietla wartosc -0.00132704, podczas gdy do pliku zostala zapisana liczba 3.45f

5
C++ / kodowanie plikow
« dnia: Styczeń 11, 2008, 11:58:24 »
Jak sie dowiedziec jakie kodowanie ma odczytywany plik (ansi, unicode, etc)?

Dzieki za pomoc ;)

6
DirectX / problem ze wspolrzednymi (okno-directX)
« dnia: Listopad 30, 2006, 21:54:54 »
Mam maly problem:
Chce narysowac prymityw w 2D, taki ktory bedzie zajmowal caly ekran (tj. od 0,0 do max_szerokosc_okna, max_wysokosc_okna).
Uzywam do tego macierzy ortogonalnej (D3DXMatrixOrthoOffCenter).
Problem jest w tym, ze gdy odpalam shader na tym prymitywie to uzywa on wspolrzednych podanych dla okna, przez co prymityw jest rysowany w ukladzie wspolrzednych directX (wiec jest 'nieco' za duzy).
mnozenie macierzy ortogonalnej z pozycja wierzcholka (w shaderze) nie pomaga, efekt jest taki sam (prymityw rysowany jest od 0,0 do szerokosc_okna, wysokosc_okna we wspolrzednych directx, a nie wspolrzednych okna).

Ktos ma pomysl jak sobie z tym poradzic?

Dziekuje za pomoc

7
DirectX / problem z maskingiem/transparency
« dnia: Kwiecień 25, 2006, 12:52:52 »
Witam.

Uzywajac 24bitowej bitmapy png zoriblem masking jak nastepuje:
wlaczylem alpha blending, wylaczylem zbuffer i zapisywanie do niego, ustawilem blend: src blend =src alpha, dest blend =inv src alpha, odpalilem odpowiednia bitmape, zoriblem rotacje, narysowalem prymityw1, wykonalem translacje, narysowalem prymityw2 pod prymitywem1.
Masking dziala jak nalezy, ale problem jest w tym, ze prymityw2 zaslania prymityw1 mimo ze jest pod nim lub za nim (jak mniemam przez wylaczony zbuffer), ale, co dziwne, dzieje sie tak TYLKO z dest blend =inv src alpha. Przy innych opcjach dziala dobrze.

Na inne formaty bitmap ten sposob nie dziala.

Ma ktos jakis pomysl jak sobie z tym poradzic?

Dziekuje za pomoc

Strony: [1]