Osaako joku kertoa, kuinka saan Direct3D:llä asetettua piirtoalueen niin, että tietyn alueen ulkopuolella olevat pikselit jätettäisiin piirtämättä? Ei tätä ongelmaani voi muutenkaan ratkaista: Molempien pelaajien näkökentän reunoilla olevat vinot kappaleet (käännän samaa kuvaa) näkyvät molempien puolella. Suorat osat (esim. laatoitus) saa leikattua ihan laskemalla.
Esimerkkikuva; vinot palikat kuvaavat pelaajia ja keskellä vaakatasossa kulkee pelaajat erottava viiva.
DirectX8, vaikka ei sillä niin väliä ole.
Jos tämä tapahtuu SetClipPlane-funktiolla, tarvitsen esimerkin, koska tuolla en saanut mitään aikaan. Muuten saatan selvitä itsekin kun vain funktio kerrotaan.
No huh huh... Arvelin, että täältä löytyisi päivän aikana edes joku, joka tietää... Pitkän mietinnän jälkeen sain kuitenkin ongelman ratkaistuksi.
Olen pettynyt Putkaan. :'(
On yleensä kohteliasta, postattuaan kysymyksen ja sitten ratkaistuaan sen itse, postata myös vastaus siihen, jotteivät muut joudu ehkä kysymään samaa myöhemmin.
Etpä ole ainut jolta on apu jäänyt saamatta;
https://www.ohjelmointiputka.net/keskustelu/2480-delphi-näppäinten-lukitseminen
https://www.ohjelmointiputka.net/keskustelu/2036-delphi-mediaplayer
Itsellä nyt tulisi ensimmäisenä scissorit mieleen vaikka ei hirveästi DX:stä kokemusta olekaan (http://msdn.microsoft.com/library/default.asp?
Janezki: Vieläkö tarvitset noihin apua? En vielä tuolloin kuulunut Putkaan...
Vastaus oli:
IDirect3DDevice8::SetViewport();
Tässä tapauksessa onnistuisi myös ScissorRect, joka Viewportista poiketen rajoittaa vain X- ja Y-koordinaatit; Viewporttiin saa vielä Z-koordinaatinkin.
IDirect3DDevice8::SetScissorRect();
Vielä jäi sellainen kysymys, että onko mitenkään mahdollista saada vinoa rajausta?
En tuosta DirectX:stä tiedä, mutta kävisiköhän sapluunapuskuri(stencil buffer)? Sillä saa piirtoalueen rajattua muistaakseni millaiseksi haluaa.
Metabolix kirjoitti:
Janezki: Vieläkö tarvitset noihin apua?
Kyllä ongelmat on vielä ajankohtaisia.
No katsotaan jos noilla saa jotain aikaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.