Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > просвечивает квадрат


Автор: v_enom 13.5.2009, 01:28
Народ, я создал  несколько квадратов для эмуляции ландшафта в дальнейшем.
вот примерно так они у меня выглядят, если смотреть вдоль оси z:            /\/
типо заборчика такого. Всего 3 квадрата, 6 треугольников.


при рендеринге один из квадратов просвечивается почему-то. Как сделать, чтобы этого не было?

вот как должно быть (смотреть на передний зеленый квадрат. Сейчас, пока за ним только желтый фон, то он не просвечивает и показывает зеленым)
http://ipicture.ru/




но как только за ним появляется голубая сторона, то он сразу начинает ее отображать и просвечивать.
http://ipicture.ru/
или вот как тут: вершина просто просвечивает, как только появляется задний голубой квадрат
http://ipicture.ru/


что это? и чем убирается?

вот какие у меня настройки выставлены (из анг. уроков, потому может что-то не правильно для моего примера):
Код

 // Setup our D3D Device initial states 
    pD3DDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD );
    pD3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
    pD3DDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

    // Setup option dependant states
    pD3DDevice->SetRenderState( D3DRS_FILLMODE, fillMode );                

    // Setup our vertex FVF code
    pD3DDevice->SetFVF( D3DFVF_XYZ | D3DFVF_DIFFUSE );



игрался с     pD3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
ставил в NONE - не помогло, все равно просвечивает.

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


PS подобную тему читал, но там вопрос так и не был решен.

Автор: NightmareZ 13.5.2009, 02:37
Код

pD3DDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );

Автор: v_enom 13.5.2009, 11:16
Цитата(NightmareZ @ 13.5.2009,  02:37)
Код

pD3DDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );

не помогло. (((((


а может это как-то с прозрачностью по-умолчанию связано???? может у меня просто текстуры сами по себе прозрачные??? как это проверить и исправить????

Автор: v_enom 13.5.2009, 16:53
кажется я понял в чем дело: надо использовать Z-буффер

Автор: NightmareZ 13.5.2009, 17:00
Цитата(v_enom @  13.5.2009,  16:53 Найти цитируемый пост)
кажется я понял в чем дело: надо использовать Z-буффер

Ну собсно это я тебе и писал  smile 

Автор: v_enom 13.5.2009, 17:03
я подумал, что только одну строку надо ввести  и все заработает.
Если бы ты написал, что следует использовать Z-буфферезацию и тогда я бы полез искать про нее инфу.
потому и курьез вышел такой smile С любым может случиться

Добавлено @ 17:16
да, все заработало, но почему-то притормаживает. Еще вчера достаточно быстро все крутилось, а сегодня - тормоза. (еще до включения Z-буфера)
с чем это может быть связано? где искать косяк???
файлик  с прогой прикрепил

Автор: v_enom 13.5.2009, 21:35
странно, после того как тачку перезагрузил - стало все нормально.
В операционке дело? потому что у меня мощный комп и видяха, 4 полигона тормозить просто не могут.

Автор: arilou 14.5.2009, 15:46
Цитата(v_enom @  13.5.2009,  21:35 Найти цитируемый пост)
странно, после того как тачку перезагрузил - стало все нормально.
В операционке дело? потому что у меня мощный комп и видяха, 4 полигона тормозить просто не могут. 


Возможно, утекает видеопамять.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)