Febrero 22, 2016, 11:01:17 PM Ultima modificación: Febrero 23, 2016, 05:16:43 PM por DarkKRuleR
d3d_primitive_begin_texture( pr_trianglestrip, sprite_get_texture( spMuestra, 0 ) );
    d3d_vertex_normal_texture( x-100 - obTrucos.vrGradual, y+100, vrZ+5, 0, 0, 1, 0, 1 );
    d3d_vertex_normal_texture( x-100, y-100, vrZ+5, 0, 0, 1, 0, 0 );
    d3d_vertex_normal_texture( x+100 + obTrucos.vrGradual, y+100, vrZ+5, 0, 0, 1, 5, 1 );
    d3d_vertex_normal_texture( x+100, y-100, vrZ+5, 0, 0, 1, 5, 0 );
d3d_primitive_end();


Buenas! Pues tiene un comportamiento muy extraño... creo que tengo desconocimiento sobre algún aspecto de las primitivas.

EDIT: He reproducido y resubido el error de una forma simple. Como véis el comportamiento es MUY feo. Primero tenemos el cuadrado, y abajo tenemos el mismo, pero los dos vértices inferiores han sido estirados hacia los lados. Querría que las líneas se estirasen de una forma uniforme, pero se ve claramente una línea digonal que lo separa, y... sólo medio dibujo es estirado de una forma brusca. Cómo se podría estirar de una forma más uniforme, más "smooth"? Siguen siendo 4 vértices y las coordenadas de textura están bien, no sé por qué falla. Debería verse como un ABANICO en que las lineas van rotando un poquito más respecto a las anteriores, NO ESO :(

Es un comportamiento normal, no un bug, lo mismo sucecería si se estira una tela  o algo parecido.
Para que la primitiva mantenga las líneas paralelas, se deben modificar las coordenadas de los vértices dentro de la textura, además de cambiar las coordenadas en el espacio. Algo así:
[gml]
d3d_primitive_begin_texture( pr_trianglestrip, obCtrl.txBordeBotGris[obCtrl.vrBordeAnim] );
    d3d_vertex_normal_texture( -100 - obTrucos.vrGradual, +200, -50, 0, 0, 1, 0, 1 );
    d3d_vertex_normal_texture( -100, +170, -50, 0, 0, 1, 0+(obTrucos.vrGradual/100), 0 );
    d3d_vertex_normal_texture( +100 + obTrucos.vrGradual, +200, -50, 0, 0, 1, 5, 1 );
    d3d_vertex_normal_texture( +100, +170, -50, 0, 0, 1, 5-(obTrucos.vrGradual/100), 0 );
d3d_primitive_end();
[/gml]
El problema es encontrar la proporción correcta

#2 Febrero 23, 2016, 05:05:12 PM Ultima modificación: Febrero 23, 2016, 05:16:33 PM por DarkKRuleR
EDIT: he resubido el problema de una forma más simple donde se ve claramente el problema :D Porque no quiero que la primitiva tenga las líneas paralelas, precisamente sí quiero estirarlas como una tela, pero que se vea bien

EDIT2: Estoy viendo que el problema es inevitable, y.. la solución es... la más sencilla sería dejarlo como un cuadrado, y hacer 2 triángulos a cada lado simulando el "estiramiento" :D

EDIT3: Vale, hacer 2 triángulos extra va perfecto, creo que el tema está resuelto xD

Hice algunas pruebas, pero la única forma que encontré para evitar que se note la distorsión es usar varios triángulos. En la imagen se muestran dos configuraciones que se podrían utilizar (tira y abanico). Tal vez se pueda solucionar con shaders, pero hay que investigar.

yo voto por tira xD
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]