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.


Wiadomości - ForKing

Strony: [1]
1
Skrypty / DrawPolySimple
« dnia: 2018-01-28, 18:01 »
zrenderer->SetZBufferCompare(zRND_ZBUFFER_CMP_ALWAYS);
zrenderer->SetBilerpFilterEnabled(TRUE);
zrenderer->SetAlphaBlendFunc(zRND_ALPHA_FUNC_BLEND);

U mnie działa bez tego, może to kwestia tego, że rysuję je w hooku na funkcję renderująca.


No i mam kolejne pytanie, wie ktoś może jak obliczyć pozycje UV dla np. takiego zestawu punktów? Czy są potrzebne do tego jeszcze jakieś dodatkowe dane?

zVEC2(300, 300);
zVEC2(300, 700);
zVEC2(450, 800);
zVEC2(700, 700);
zVEC2(700, 300);

#Edit
(0.5 + (verts[0] - center.x) / (radius.x * 2)) + " : " + (0.5 + (verts[1] - center.y) / (radius.y * 2)
Ok zdaje mi się, że powinno to mniej więcej tak wyglądać. center.x/center.y = centroida(formuła do ogarnięcia z wiki), radius.x/radius.y = odległość centroida-współrzędna.  :pokerface:


2
Skrypty / DrawPolySimple
« dnia: 2018-01-27, 01:21 »
Szczerze mówiąc wątpię, że to jest to, ale niby lepszy rydz niż nic... Pierwsze o czym pomyślałem to, że tekstura ma wciąż ustawiony taki sam obrót, więc po zmianie kamery robi się coś takiego.

W każdym razie łatwo można zweryfikować tą tezę powracając kamerą do początkowego ustawienia.

To jest efekt używania Draw z zCCamera:
Spoiler

@up
Dzięki, ale do tej pory pewnie już sam coś też wymyśle, znając życie brakuje mi czegoś głupiego.(jak to zwykle bywa)  :lol:

W sumie na początku miałem w zamiarze spróbować przez directx, ale jak zobaczyłem, że to jest wersja 7 to mi się mocno odechciało. Może muszę wrócić do tego pomysłu.  :D

#Edit

Spróbowałem wyrysować dwa obiekty, efekt jest taki, że obiekt 1 wyświetla się ciągle(tyle, że traci "kolor"), a kolejny zanika?
Spoiler

#Edit2
Ostatecznie metodą prób udało mi się wyeliminować ten błąd, teraz została jeszcze jedna rzecz, która mocno mnie uwiera. Mianowicie, "migotania". Co jakiś czas moje tekstury, znikają na 0.5s i się pojawiają. No ale chyba z tym też sobie jakoś  radę dam.  :pokerface:

Spoiler

#Edit3
Udało mi się wyeliminować migotania poprzez manipulację wartością "z", która jest chyba czymś w rodzaju z-index, z CSS.

3
Dzieje Khorinis / Więcej niż tylko modyfikacja?
« dnia: 2018-01-27, 00:02 »
Jeżeli Dzieje Khorinis byłyby dodatkiem to modyfikacje pokroju Złotych Wrót czy Returninga też by nim były?   :hmmm:

4
Skrypty / DrawPolySimple
« dnia: 2018-01-26, 23:47 »
IDirect3DDevice7*& device = *(IDirect3DDevice7**)0x009FC9F4;

device->SetRenderState(D3DRENDERSTATETYPE::D3DRENDERSTATE_ZENABLE, FALSE);
zrenderer->DrawPolySimple(m_pTexture, m_vertex, 4);
device->SetRenderState(D3DRENDERSTATETYPE::D3DRENDERSTATE_ZENABLE, TRUE);

Spróbowałem w ten sposób, ale tekstura i tak zaczyna znikać po tym jak zacznę zmieniać pozycję kamery.  :/

#Edit

Co do DrawSimple z klasy zCCamera...

void CGame::render()
{
    zCCamera * pCamera = g_pCGame->GetCamera();

    if (pCamera)
    {
        static zCCamera::zTCamVertSimple * pVertex = nullptr;
       
        if (pVertex == nullptr)
        {
            pVertex = new zCCamera::zTCamVertSimple;

            pVertex[0].color =
                pVertex[1].color =
                pVertex[2].color =
                pVertex[3].color = zCOLOR(255, 0, 0, 255);

            pVertex[0].texuv = zVEC2(0, 0);
            pVertex[1].texuv = zVEC2(1, 0);
            pVertex[2].texuv = zVEC2(0, 1);
            pVertex[3].texuv = zVEC2(0, 1);

            pVertex[0].x = 50.0;
            pVertex[0].y = 50.0;
            pVertex[0].z = 0.0;
               
            pVertex[1].x = 50.0;
            pVertex[1].y = 250.0;
            pVertex[1].z = 0.0;

            pVertex[2].x = 250.0;
            pVertex[2].y = 250.0;
            pVertex[2].z = 0.0;

            pVertex[3].x = 250.0;
            pVertex[3].y = 50.0;
            pVertex[3].z = 0.0;
        }

        static zCMaterial * pMaterial = nullptr;

        if (pMaterial == nullptr)
        {
            pMaterial = new zCMaterial;

            zSTRING string("MENU_INGAME.TGA");
            pMaterial->SetDetailTexture(zCTexture::Load(string, 0));
            pMaterial->SetTexScale(zVEC2(5.0, 1.0));
            pMaterial->SetTexAniMappingDir(zVEC2(1.0, 1.0));

            pMaterial->color = zCOLOR(255, 0, 0, 255);
        }

        pCamera->DrawPolySimple(pVertex, 4, pMaterial, 1);
    }
}

Spróbowałem tak, niby coś się wyświetla, ale tak samo jak poprzednio przy przemieszczeniu obraz zaczyna zanikać.  :hmmm:

5
Skrypty / DrawPolySimple
« dnia: 2018-01-26, 22:42 »
Ponieważ istnieje drugie DrawPolySimple w klasie, z której zdaje się dziedziczy zCRenderer.

Spoiler

#Edit

Spoiler

Ok, zrobiłem sobie hooka i spróbowałem dorzucić do kodu:

m_vertex[0].z = 1;
m_vertex[1].z = 1;
m_vertex[2].z = 1;
m_vertex[3].z = 1;

Ostatecznie moja tekstura się renderuje z tym, że mam kolejny problem. Podczas ruchu tekstura "zanika", np. z kwadratu robi się trójkąt. Jakieś pomysły na solucję?

Spoiler

6
Skrypty / DrawPolySimple
« dnia: 2018-01-26, 21:32 »
Zapowiedziałem powiedzieć że, używam headerów AST, co na 99% eliminuje ten problem. :lol:

7
Skrypty / DrawPolySimple
« dnia: 2018-01-26, 20:50 »
Witam, ostatnio przeglądając na dissemblerze pliki Gothica trafiłem na klasę zCRenderer, przejrzałem ją sobie i zainteresowała mnie ta metoda.

.text:0064A000 ; public: virtual void __thiscall zCRenderer::DrawPolySimple(class zCTexture *, struct zTRndSimpleVertex *, int)
void CGame::render()
{
if (!m_vertex)
{
zSTRING string("MENU_INGAME.TGA");
m_pTexture = zCTexture::Load(string, 1);

m_vertex = new zTRndSimpleVertex;

m_vertex[0].pos = zVEC2(300, 300);
m_vertex[1].pos = zVEC2(300, 800);
m_vertex[2].pos = zVEC2(800, 800);
m_vertex[3].pos = zVEC2(800, 300);

m_vertex[0].uv = zVEC2(0, 1);
m_vertex[1].uv = zVEC2(1, 0);
m_vertex[2].uv = zVEC2(1, 0);
m_vertex[3].uv = zVEC2(0, 1);

m_vertex[0].color =
m_vertex[1].color =
m_vertex[2].color =
m_vertex[3].color = zCOLOR(255, 0, 0);
}

if (m_vertex) g_pRender->DrawPolySimple(m_pTexture, m_vertex, 4);
}

Próbowałem jej użyć w mniej więcej taki sposób, ale nie widzę na ekranie żadnego efektu. Jakieś pomysły co mogłem zrobić źle? :hmmm:

Strony: [1]
Do góry