Actualmente para un additive blending hago lo siguiente:
pD3dDevice7->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE , TRUE );
pD3dDevice7->SetRenderState( D3DRENDERSTATE_SRCBLEND , D3DBLEND_SRCALPHA);
pD3dDevice7->SetRenderState( D3DRENDERSTATE_DESTBLEND , D3DBLEND_ONE);
Cómo podría hacer un subtractive blending?? por la naturaleza de la operación, la cual incluye una suma, parece que es imposible.
Hay alguna manera sencilla de hacer subtractive blending?? cuando digo sencilla me refiero a poco más que jugar con el render state, es un código de hace algún tiempo que usa DirectX7.
quizá haya algun método (inviertiendo, sumando y volviendo a invertir) pero si hablamos de hacerlo a pantalla completa a veces es más facil pintarlo en un rendertarget y aplicar un shader que haga la operacion adecuada.
Aunque me da que en tu caso sería matar moscas a cañonazos
Como hacer subtractive blending con la fixed pipeline (no shaders):
OpenGL con la extensión EXT_blend_subtract:
BlendEquationEXT , FUNC_REVERSE_SUBTRACT_EXT
Direct3D8 y superior:
D3DBLENDOP_REVSUBTRACT
Direct3D7 e inferiores, OpenGL sin dicha extensión:
Me temo que te toca aproximar el resultado con dos stages y otros modos de blending (subtract, addsigned2x, etc..),
Vamos, que en la práctica olvidate.
Con un rendertarget tal vez puedas hacerlo.
Gracias por las respuestas.
Mis temores sobre los parametros del pipeline por defecto son ciertos. Me tocaría usar rendertargets y jugar con los stages de las texturas, usando la superficie de destino como textura de entrada.
Matar moscas a cañonazos, como dice tamat.
Probablemente lo intente aplicar de todas formas, por tener la capacidad más que nada, todo y que sería un proceso bastante costoso en cuestión de rendimiento.
Gracias.
No se si esto que voy a decir es lo que buscas. Hay 2 métodos para hacer blending de texturas o render targets etc...
1 Configurando las textura para que al "multiplicarlas" se haga de cierta manera, que es como creo que lo haces o se plantea aquí.
2 Utilizar glBlend, yo lo uso para el Lighting Stage de mi Deferred Rendering. También te digo que uso FBOs y Shaders.