Отрисовываю в 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);
}
}
Прикладываю скриншот результата. Какую технику следует применить, чтобы рисовалось все верно(у меня модель, в ней несколько текстур, все это надо рисовать не за раз, а переключая материалы, на скриншоте видно, как модели просвечиваются сквозь друг друга).
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости