Смешанная отрисовка моделей

300
21 января 2018, 04:38

Отрисовываю в Direct3D9 модели. Взял минимальный пример. На фоне плоскость с текстурой, перед ней чайник, созданный функцией dx. Модели отрисовываются друг на друге. Как правильно отрисовать модели,чтобы чайник был именно перед плоскостью, а не наоборот? Код отрисовки:

void D3DXDevice::PaintModel()
    {
        if (this->Device)
        {
        Device->Clear(NULL, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Colors::White, 1, NULL);
        Device->BeginScene();
        Device->SetFVF(Vertex::FVF); // настройки, там текстуры, нормали и прочее
        Device->SetStreamSource(0, this->models, 0, sizeof(Vertex)); 
        // this->model - экземпляр класса модель, (там все, материал, текстур, и т.д.)
       // отрисовываем плоскость
       // сдвигаем мировое преобразование на 20 единиц на нас(по -z) и рисуем чайник
        ID3DXMesh* Teapot;
        D3DXCreateTeapot(Device, &Teapot, 0);
        D3DXMATRIX trans;
        D3DXMatrixTranslation(&trans, 0.f, 0.f, -20.f);
        Device->SetTransform(D3DTS_WORLD, &trans);
        Teapot->DrawSubset(0);
        Teapot->Release();
        Device->EndScene();
        Device->Present(NULL, NULL, NULL, NULL);
    }
}

Прикладываю скриншот результата. Какую технику следует применить, чтобы рисовалось все верно(у меня модель, в ней несколько текстур, все это надо рисовать не за раз, а переключая материалы, на скриншоте видно, как модели просвечиваются сквозь друг друга).

READ ALSO
Проблема со связными списками

Проблема со связными списками

Код компилируется, но выводится только один список, в порядке, в котором он был созданА функция reverse, которая ставит в обратном порядке элементы,...

386
дана прямокутна матриця цілих чисел [требует правки]

дана прямокутна матриця цілих чисел [требует правки]

дана прямокутна матриця цілих чиселВизначити номер першого зі стовпців, що містять хоча б один нульовий елемент та номери всіх рядків, які...

378