Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Jak rysować sprite'y na ekranie?
#1
W mojej grze chcę narysować sprite'y załadowane z mojej hd, w granaty, dymy, ogłuszenia ... Następnie, używając kodu z evilhack i kilku sztuczek wysłanych z PizzaPan, ja (kopia) tworzę moją funkcję.       Kod:   struct vertex_t {float x, y, z; unosić tu, tv; }; LPDIRECT3DVERTEXBUFFER8 pMyVertex; const float ImageAWidth = 29,7f * 10; const float ImageAHeigt = 10.0f * 10; vertex_t ImageAVertices [] = {{0.0f, ImageAHeigt, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, {ImageAWidth, ImageAHeigt, 0.0f, 1.0f, 1.0f}, {ImageAWidth, 0.0f, 0.0f, 1.0f, 0.0f},}; void DrawImage (LPDIRECT3DDEVICE8 pDevice, LPDIRECT3DTEXTURE8 pTex, LPDIRECT3DVERTEXBUFFER8 pVertex, float x, float y, float z) {pDevice -> SetTexture (0, pTex); D3DXMATRIX LocationMatrix; D3DXMatrixTranslation (& LocationMatrix, x, y, z); pDevice -> SetTransform (D3DTS_WORLD i LocationMatrix); pDevice -> DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, 2); }   W DIP inicjalizuję teksturę (tylko raz)     Kod:       TCHAR blue [1024]; appSprintf (niebieski, L "c: \\ myTexture.png"); D3DXLoadTexture (pDevice, blue, tTeste); // tTeste to LPDIRECT3DTEXTURE8   Aby narysować obrazek, zadzwonię do Present:     Kod:           pDevice -> BeginScene (); DrawImage (pDevice, tTeste, pMyVertex, 200, 200, 0); pDevice -> EndScene ();   Ale nic się nie dzieje ... I zmieniają się współrzędne niektórych obiektów. Masz błąd w funkcji DrawImage?   Dzięki za pomoc
Reply
#2
Niedawno zmyliłem się z tutorialem RoverTurbo: http://www.unknowncheats.me/tutorial...read.php?t=234 Nie mogłem uzyskać funkcji rysowania do pracy bez zmiany liczby argumentów, ale nie zagłębiałem się w to jeszcze bardziej, poniżej działa mi dobrze. Kod: LPDIRECT3DTEXTURE9 0Tekstura; LPD3DXSPRITE 0Sprite = NULL; D3DXVECTOR3 vPos, vCenter; Rozpocznij gdzieś raz Kod: D3DXCreateTextureFromFile (pDevice, "c: \\ image.png", i oTexture); D3DXCreateSprite (pDevice, & oSprite); // Współrzędne względem zdefiniowanego środka vPos. x = 10,0f; vPos. y = 10,0f vPos. z = 0,0f; // służy do definiowania punktu tekstury w celu renderowania z (IE: center) // 0,0,0, aby był to lewy górny róg vCenter. x = 0,0f; vCenter. y = 0,0f; vCenter. z = 0,0f; W EndScene Kod: oSprite -> Rozpocznij (0); oSprite -> Draw (oTexture, NULL, i oSize, & oPos, 0xFFFFFFFF); oSprite -> End (); Kredyty: RoverTurbo
Reply
#3
dzięki za kod, Zoomgod ... Dobrze jest narysować logo ... Było zabawnie zobaczyć króliczek evillogo "bać się" w moim kodzie Tylko drobna korekta dokonana w moim kodzie: w deklaracjach: Kod: // to wektor 2D, LPD3DXSPRITE to 2D sprite D3DXVECTOR2 vPos, vCenter; w EndScene Kod: oSprite -> Draw (oTexture, NULL, NULL, NULL, NULL i vPos, 0xFFFFFFFF);
Reply
#4
Masz rację, potrzebujesz tylko wektora centrującego, jeśli chcesz zmienić współrzędną względną, której nie chcesz.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)