Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modo inmediato en Direct3D 8?

Iniciado por MChiz, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

MChiz

                                Hola a todos!
Como podreis comprobar, de Direct3D 8 he tocado poco :b
Como ya sabreis, OpenGL dispone del modo inmediato para enviar datos( glVertex*, glTexCoord2*, glColor*, etc. )
Mi pregunta es:
En Direct3D 8 se puede hacer algo similar?
Me refiero a hacer un begin de triangulos, por ejemplo, mandar los datos y hacer un end, o tengo que crear un vertex buffer obligatoriamente para crear un simple triangulo?
Muchisimas gracias por adelantado :sonriendo:
Un saludo!!

< MChiz >                                

Lord Trancos

                                No se si sera lo que buscas, pero hechale un vistazo a las funciones: DrawIndexedPrimitiveUP y DrawPrimitiveUP. (Estas no usan VertexBuffers...)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

MChiz

                                Mas o menos si. Gracias!!

< MChiz >                                

_Grey

                                Es muy recomendable que uses las DrawIndexPrimitive() y DrawPrimitive() en lugar de sus omologas sin buffers, *UP(), puesto que son mas rapidas.

Tambien decir que seria mas correcto que llenaras un vertexbuffer con la geometria a representar y lo llamases con del Draw(Index?)Primivite(), por que ir triengulo a triangulo seria muy lento.

y, si finalmente te metes !!! Recuerda, no crees los vertexbuffer ni los indexbuffer dinamicamente, crealos al principio y luego reusalos!

Saludos.                                

MChiz

                                Muchas gracias _Grey!
Veras, no me interesan los vertex buffers porque si por ejemplo, quiero hacer un sistema de particulas, tendria que crear un vertex buffer con toda la malla de las particulas y luego enviarsela al hard.
En GL es mas rapido hacerlo en modo inmediato, ya que no tienes que estar con movimientos de memoria arriba y abajo. Lo probe de hacer con un glDrawArray y iba mas lento!!
En fin, ahi dejo eso :sonriendo:
Un saludo!

< MChiz >                                

Grugnorr

                                Busca info en la web de nvidia sobre los diferentes tipos de Vertex Buffers, veo que desconoces los "Dynamic". Te vendrá mucho mejor explicado de lo que puedo explicarte yo.
                               
hat the hells!

BeRSeRKeR

                                Para los sistemas de partículas es posible que te interese usar la primitiva Point Sprite (con lo que te ahorrarás tener que definir el quad de la partícula y de tener que asignar coordenadas de textura)...así que mírate en la SDK de DX este tipo de primitivas...te puede facilitar las cosas.

Una estructura de vértice para este tipo de primitiva para un sistema de partículas podría ser

typedef struct
{
   D3DXVECTOR3 pos;
   float size;
   DWORD color;

}vertex_t;

Con "size" indicas la distancia entre "pos" y cada una de las esquinas del quad que te crea D3D automáticamente para la partícula...en definitiva, el radio de la partícula :sonriendo:

Como digo, mirate la SDK de DX para más info.

Y el tema de los vertex buffers...utiliza un vertex buffer dinámico como dice Grugnorr.

Un saludo

_________________
BeRSeRKeR
http://www.planetquake.com/digitalys">DiGiTALYS TEAM

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-05-02 23:21 ]                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

ProD

                                Como dice el colega berserker, usar los point sprites de DX es una buena opción, todo esto mezclado con un Vertex Buffer dinamico, puede hacer que tu sistema de particulas corra bastante rápido, ya que el vertex buffer dinamico tiene la caracteristica de no tener que borrarse cada vez que se suben vertices al buffer, sino que permite ir añadiendo vertices hasta llenarlo, bueno de nuevo te remito a la ayuda. Un saludo
                               
as ideas son capitales que sólo ganan intereses entre las manos del talento

MChiz

                                Muchisimas gracias a todos!! :riendo:
Mi idea no es la de hacer un sistema de particulas, solo era un ejemplo, pero creo que me servira :sonriendo:
Muchas gracias, de veras. Lo mirare en cuanto pueda.
Un saludo!!

< MChiz >                                






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.