в общем не работает он, хрен знает почему, в сиплюсплюсной версии работал, настраи ваю все так: d3d8 GetAdapterDisplayMode,g_pd3d,D3DADAPTER_DEFAULT,addr d3ddm mov eax, d3ddm.Format mov d3dpp.BackBufferFormat,eax mov d3dpp.Windowed,1 mov d3dpp.EnableAutoDepthStencil,1 mov d3dpp.AutoDepthStencilFormat,D3DFMT_D16 mov d3dpp.SwapEffect,D3DSWAPEFFECT_FLIP ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> d3d8 CreateDevice, g_pd3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd , D3DCREATE_HARDWARE_VERTEXPROCESSING, ADDR d3dpp, ADDR g_pd3ddev test eax,eax jnz fail_CreateDevice потом еще: d3dev8 SetTransform, g_pd3ddev, D3DTS_WORLD, ADDR WorldMatrix d3dev8 SetTransform, g_pd3ddev, D3DTS_VIEW, ADDR ViewMatrix d3dev8 SetTransform, g_pd3ddev, D3DTS_PROJECTION, ADDR ProjectionMatrix d3dev8 SetRenderState, g_pd3ddev, D3DRS_ZENABLE, TRUE d3dev8 SetRenderState, g_pd3ddev, D3DRS_CULLMODE, D3DCULL_CCW d3dev8 SetRenderState, g_pd3ddev, D3DRS_LIGHTING, FALSE d3dev8 SetTextureStageState,g_pd3ddev,0, D3DTSS_MAGFILTER, CurrentFilter d3dev8 SetTextureStageState,g_pd3ddev,0, D3DTSS_MINFILTER, CurrentFilter d3dev8 SetTextureStageState,g_pd3ddev,0, D3DTSS_MIPFILTER, CurrentFilter и че-то не работает
А D3DRS_ZWRITEENABLE нигде не отключался? И в Clear стоит D3DCLEAR_ZBUFFER? У меня 16-битный сильно глючит, я использую 24.
В общем что-то вроде з-буфера работает, поскольку если поиграть с ZValue, которое я передаю в Clear, то на экране ничего нету(если ZValue < 1) и все как обычно если >=1. Может дело в том, что я рисую все из одного вертексного буфера, но не сразу, сначала немного треугольников, потом меняю текстуру, рисую еще треугольники и т.д.
а что может быть с кординатами вертексов не так? Рисуются где надо, может быть проблема в том, что я юзаю D3DCULL_CCW?
Сорри за ламерство, а почему ближнюю границу клиппинга нельзя ставить 0.0ф?(поставил 1.0ф, заработало). Каким макаром это влият на з буфер, я думал, что если полигон отсекается, то он отсекается, и никакой буфер о его существовании не узнает.
Оно не влияет на Z буфер, это как-то влияет на результат вычисления Z вершины. Чем меньше ближний клиппер, тем ближе будут начинанаться глюки. Еще есть вариант D3DZB_USEW (для D3DRS_ZENABLE).
NearZ влияет на поекцию объектов на экранную плоскость. А так как экранной плоскостью является ближняя грань усеченной проекциооной пирамиды, то при NearZ=0 площадь этой плоскости сжимается в точку и происходит потеря точности и соответсвенно отсутсвие проецирования вообще. В общем пацаны, читайте внимательно про ProjectionMatrix в D3D или OpenGL SDK.