Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Manu343726 en 13 de Febrero de 2013, 11:53:45 PM

Título: DrawIndexedPrimitive() netbook y sobremesa
Publicado por: Manu343726 en 13 de Febrero de 2013, 11:53:45 PM
Buenas

Sigo peleándome con direct3d9.

El caso es que tengo implementada la función DRAW_Trapezoid() de dx_lib32 mediante indexbuffers, para empaquetar todas las llamadas encadenadas en una sola llamada a drawindexedprimitive. En el sobremesa funciona perfectamente, pero cuando lo pruebo en el netbook me salta un bufffer overflow en la llamada a drawindexedprimitive().

Alguna idea?
Título: Re:DrawIndexedPrimitive() netbook y sobremesa
Publicado por: [EX3] en 14 de Febrero de 2013, 12:06:11 AM
Según recordaba, hay un limite de indices que puedes mandar en una llamada, y efectivamente lo indica la documentación de la función:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb174369(v=vs.85).aspx

CitarThe maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the D3DCAPS9 (http://msdn.microsoft.com/en-us/library/windows/desktop/bb172513(v=vs.85).aspx) structure.

O bien aplicas un limite valido para cualquier maquina, igual que se hace con el tamaño máximo de textura, o bien trabajas acorde con el limite impuesto por el hardware. Yo optaría por el primero, tomando como limite el más bajo, el de la gráfica integrada del netbook, más que nada por asegurar la misma compatibilidad de ejecución entre distintas maquinas.

Salu2...
Título: Re:DrawIndexedPrimitive() netbook y sobremesa
Publicado por: Manu343726 en 14 de Febrero de 2013, 08:42:13 AM
La verdad es que nunca se mehabria ocurrido que pudiera ser eso. Suponía que hoy en día esa limitación sería bastante alta... Yo estoy haciendo llamadas de 1000-6000 vértices
Título: Re:DrawIndexedPrimitive() netbook y sobremesa
Publicado por: Manu343726 en 14 de Febrero de 2013, 08:21:26 PM
He estado probando y tampoco es eso, con llamadas de 500 vertices también peta.
He estado mirando si era que la declaracion de los buffers estaba mal, pero parece correcto. Ya no se que puede ser....

En concreto, ésto es lo que me suelta:
(http://img834.imageshack.us/img834/8932/drawindexedprimitiveerr.png)

Y en cambio en el sobremesa, funciona perfectamente:
(http://img259.imageshack.us/img259/9725/isotilemap.png)