Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Error de indexación con trianglestrips

Iniciado por Manu343726, 01 de Septiembre de 2012, 08:17:10 PM

« anterior - próximo »

Manu343726

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:


De manera que los dos trianglestrips serían:


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):


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:


El primer strip se dibuja bien pero el inferior no.

Ésto es con la malla rotada 45º aproximadamente en sentido horario:


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?


blau

¿Código?  ::)

parece que no calculas bien los indices... ^_^'

XÑA

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

Manu343726


XÑA

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.

Manu343726

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

Manu343726

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?

XÑA

¿has probado pasarle siempre el nº total de vértices? Si es así, es correcto, es como dice las especificaciones.

Manu343726

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

Manu343726

pues ahora por arte de magia, lo del total de vertices funciona...vete tu a saber que toque antes. Gracias por todo






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.