Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Manu343726 en 01 de Septiembre de 2012, 08:17:10 PM

Título: Error de indexación con trianglestrips
Publicado por: Manu343726 en 01 de Septiembre de 2012, 08:17:10 PM
Buenas

Estoy intentando implementar un sistema para renderizar pequeñas mallas en 2D con Direct3D9, mediante trianglestrips e indexbuffers
Para una malla de mxn vertices, subdivido la malla en n-1 trianglestrips dibujados mediante indexado. Por ejemplo, para el caso 3x3:
(http://img687.imageshack.us/img687/8382/mesh1t.jpg) (http://imageshack.us/photo/my-images/687/mesh1t.jpg/)

De manera que los dos trianglestrips serían:
(http://img21.imageshack.us/img21/1364/mesh22.jpg) (http://imageshack.us/photo/my-images/21/mesh22.jpg/)

Y en ésta se muestra la posición del vertice dentro del index buffer (Vxiy, siendo x el indice del vertice, e y la posición que ocupa dentro del indexbuffer):
(http://img207.imageshack.us/img207/74/mesh3.jpg) (http://imageshack.us/photo/my-images/207/mesh3.jpg/)

De ésta forma, siendo el vertex buffer de 9 vértices (indices del 0-8), el index buffer quedaria: 3,0,4,1,5,2,6,3,7,4,8,5

Por tanto, para dibujar el primer strip tenemos (Dibujando mediante DrawIndexedPrimitive, por supuesto http://msdn.microsoft.com/en-us/library/windows/desktop/bb174369(v=vs.85).aspx):
- StartIndex=0
- VertexCount=6
- PrimitiveCount=4
Y para el segundo:
- StartIndex=6
- VertexCount=6
- PrimitiveCount=4

Me gustaría saber si éstos datos están bien. Yo creo que es así, pero sucede ésto:
(http://img94.imageshack.us/img94/9513/mesh4.jpg) (http://imageshack.us/photo/my-images/94/mesh4.jpg/)

El primer strip se dibuja bien pero el inferior no.

Ésto es con la malla rotada 45º aproximadamente en sentido horario:
(http://img824.imageshack.us/img824/347/mesh5.jpg) (http://imageshack.us/photo/my-images/824/mesh5.jpg/)

He examinado una y otra vez los datos de la malla y las coordenadas de textura están bien. Visto lo visto, me inclino a pensar que es un problema con el indexado.
Alguna idea?

Título: Re: Error de indexación con trianglestrips
Publicado por: blau en 02 de Septiembre de 2012, 02:01:14 AM
¿Código?  ::)

parece que no calculas bien los indices... ^_^'
Título: Re: Error de indexación con trianglestrips
Publicado por: XÑA en 02 de Septiembre de 2012, 01:14:56 PM
Esto está mal:

el index buffer quedaria: 3,0,4,1,5,2,6,3,7,4,8,5

Estás poniendo el vértice, no el índice. El primer quad sería:

0,1,2,1,32
Título: Re: Re: Error de indexación con trianglestrips
Publicado por: Manu343726 en 03 de Septiembre de 2012, 10:16:30 AM
no es el mismo indexbuffer que he puesto yo????
Título: Re: Error de indexación con trianglestrips
Publicado por: XÑA en 03 de Septiembre de 2012, 10:36:14 AM
Ups, me he equivocado!!!! Perdona.  :-[

Creo que el error es VertexCount, que siempre debe ser 8. Al decirle 6, sólo te está cogiendo los 6 primeros. En realidad es una tontería este campo, no le veo sentido, porqué la información está en los índices. Pero se ve que es necesario para temas de optimización.
Título: Re: Re: Error de indexación con trianglestrips
Publicado por: Manu343726 en 03 de Septiembre de 2012, 11:47:33 AM
esta tarde lo pruebo y os comento. a mi vertexcount tambien me parecia un poco redundante. no deberia saber el numero de vertices a procesar en base al numero y tipo de primitivas?
no se, su razon tendra
Título: Re: Error de indexación con trianglestrips
Publicado por: Manu343726 en 03 de Septiembre de 2012, 10:10:15 PM
he estado probando un poco y funciona cuando vertexcount es el doble de grande que el número de vértices que (creo yo) se deberían procesar.

Por ejemplo, para el caso 3x3, si le pasas 12 en vez de 6 funciona , y para 4x4 16 en vez de 8....

Ésto si que no lo entiendo...No voy a dejar ésto así, implementado por la cuenta de la vieja. Alguien sabe algo?
Título: Re: Error de indexación con trianglestrips
Publicado por: XÑA en 03 de Septiembre de 2012, 10:13:52 PM
¿has probado pasarle siempre el nº total de vértices? Si es así, es correcto, es como dice las especificaciones.
Título: Re: Error de indexación con trianglestrips
Publicado por: Manu343726 en 03 de Septiembre de 2012, 10:34:43 PM
nada, me manda a paseo. Y de hecho lo que dije antes del doble de vertices no es del todo cierto...jajajaj ya me habia animado un poco. Y nada
Título: Re: Error de indexación con trianglestrips
Publicado por: Manu343726 en 03 de Septiembre de 2012, 10:59:24 PM
pues ahora por arte de magia, lo del total de vertices funciona...vete tu a saber que toque antes. Gracias por todo