Глюки при отдалении камеры

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Глюки при отдалении камеры

Сообщение Bonesnapper » 10.06.2005 (Пт) 12:39

При от далении камеры
все начинает рисоваться не правильно - обьекты которые находятся выше почему то рисуются ниже чем те которые выше
такое ощущение что Z буффер работает не правильно
подскажите че делать

вот скриншот
У вас нет доступа для просмотра вложений в этом сообщении.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 13:32

поставь глубину буффера 32 бита, это раз. а два - матрицу проекции когда создаешь не делай очень большой интервал между передней и дальней гранью. Переднюю грань поставь поменьше на порядок.
ХЎ

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 10.06.2005 (Пт) 14:53

спасибо

поставил переднюю грань по больше (поначалу она была 1) и все ок :D

но как поставить глубину буфера на 32 :oops:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 16:15

смотри форматы при инициализации... вот кусок кода из iR, что и как думаю разберешься...

Код: Выделить всё
If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16_LOCKABLE) = D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D16_LOCKABLE) = D3D_OK Then
        GetZBufferFormat = D3DFMT_D16_LOCKABLE
        BestFormat = "16 бит Z-буффер c возможностью блокировки (D3DFMT_D16_LOCKABLE)"
    End If
    End If
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16) = D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D16) = D3D_OK Then
        GetZBufferFormat = D3DFMT_D16
        BestFormat = "16 бит Z-буффер (D3DFMT_D16)"
    End If
    End If
   
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D15S1) >= D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D15S1) >= D3D_OK Then
        GetZBufferFormat = D3DFMT_D15S1
        BestFormat = "15 бит Z-буффер,(D3DFMT_D15S1)"
    End If
    End If
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D24X8) >= D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D24X8) >= D3D_OK Then
        GetZBufferFormat = D3DFMT_D24X8
        BestFormat = "24 бита Z-буффер и 8 бит неиспользуются (D3DFMT_D24X8)"
    End If
    End If
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D24S8) >= D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D24S8) >= D3D_OK Then
        GetZBufferFormat = D3DFMT_D24S8
        BestFormat = "24 бита Z-буффер и 8 бит Stencil-буффер (D3DFMT_D24S8)"
    End If
    End If
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D24X4S4) >= D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D24X4S4) >= D3D_OK Then
        GetZBufferFormat = D3DFMT_D24X4S4
        BestFormat = "24 бита Z-буффер, 4 бита Stencil-буффер и 4 бита неиспользуются (D3DFMT_D24X4S4)"
    End If
    End If
   
    If Direct3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D32) >= D3D_OK Then
    If Direct3D.CheckDepthStencilMatch(D3DADAPTER_DEFAULT, DevType, BackBufferFormat, BackBufferFormat, D3DFMT_D32) >= D3D_OK Then
        GetZBufferFormat = D3DFMT_D32
        BestFormat = "32 бита Z-буффер (D3DFMT_D32)"
    End If
    End If
ХЎ

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 10.06.2005 (Пт) 19:57

как я понял после того как я узнаю лучший формат на ставить его так
d3dpp.AutoDepthStencilFormat = D3DFMT_D16

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 11.06.2005 (Сб) 10:37

Bonesnapper
Даже если карта поддерживает 32 бита Z-буффер, стоит ставить 16 бит, когда этого достаточно для конкретной игры, потому что так быстрее работает и меньше жрет видеопамять.

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 11.06.2005 (Сб) 13:29

да уменя кроме 16 чето не че не работает :?
странно карта вроде новая наверное как всегда чето не то делаю
:?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.06.2005 (Пн) 18:52

Mikle, зато графика лажовая, никуда не годится...
ХЎ

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.06.2005 (Пн) 19:25

d3drm
Я же написал "когда этого достаточно для конкретной игры". Например у меня AoS фиксирован на 16 бит Z-буфере. Я понимаю, что графика далеко не сегоднешнего дня, но это не из-за Z-буфера.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 40

    TopList