Estoy implemetando un sistema de ventanas dentro de mi motor utilizando DirectX8.1 y para evitar que el dibujado de algún texto se escape de la ventana quería setear lo que en OpenGL haría con glScissor, que es una zona fuera de la cual todo se clipea.
No encontré una función similar en DirectX. Si fijo un viewport (con SetViewport) generaría también una zona fuera de la cual todo se clipearía pero también tendría que alterar la matriz de proyección para evitar un reescalado. ¿Existe otro método alternativo bajo en costos de CPU?
No estoy seguro de que en Direct3D 8.1 exista esa opción. En Direct3D 9 si. Aquí están los métodos relacionados con el scissor test
// methods
HRESULT IDirect3DDevice9::SetScissorRect( CONST RECT* pRect );
HRESULT IDirect3DDevice9::GetScissorRect( RECT* pRect );
// new RenderState, values are TRUE or FALSE
D3DRS_SCISSORTESTENABLE
// new hardware cap
D3D9CAPS.RasterCaps -> D3DPRASTERCAPS_SCISSORTEST;
Saludos
Muchas gracias, BeRSeRKeR. Lástima que a MS se le ocurrió agregar los scissors recién la versión 9 (grrr) ya veré como hacer.
Saludos
Para que luego digan que es siempre M$ el que innova y los demás los que copian (twist)
P.D.: No hagáis caso del comentario, es mi parida de las 11:20