Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[vb][d3d8] Dibujar Rectangulos Con Contorno

Iniciado por Abc7, 29 de Enero de 2006, 10:39:33 PM

« anterior - próximo »

Abc7

 EDIT: ERA CON D3D7, SI ALGUIEN ME PUEDE CAMBIAR EL TITULO PORQUE DE ACA NO ME DEJA u.u gracias..

hola que tal, hacia mucho que no pasaba por aca.. es una lastima que en vez de saludar  venga con una duda, pero buen..

resumiendo, yo venia trabajando con directdraw, en sus funciones DrawBox(), en la que le indico el color de background y el color de foreground.
el color de foreground lo que hace es dibujarme un contorno.
bueno, estaba haciendo toda mi libreria de controles en directdraw, (listbox, textbox, forms, etc), y decidi pasarme a d3d, ya que toda mi aplicacion la estaba portando a d3d.
pero al pasar los controles me surgio este problema, de que SE como dibujar rectangulos usando el trianglestrip, pero lo que necesito es saber como dibujar ese triangulo pero con contorno, como me dejaba hacerlo directdraw.

la unica opcion que se me ocurrio fue dibujar primero un rect con el color del borde, mas grande que el rect original, y despues dibujar el rect original arriba de este, quedando asi un 'borde' a la vista, aunque en realidad es uno tapando al otro.
pero este metodo me parece un poco lento, y ademas no puedo usar la capacidad de alpha fading de d3d, ya que el rect original se mezclaria con el rect del borde que esta atras, quedando algo muy feo.

sisi, ya se q me hago mucho lio con las palabras, asi que lo q necesito es esto:

pero en d3d, y que pueda usar alpha blending


bueno gracias anticipadas ^^!


muchos saludos!

BeRSeRKeR

 Pues en vez de meter un polígono más grande detrás para crear el borde, genera el borde con polígonos, cuatro en este caso.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Abc7

Cita de: "BeRSeRKeR"Pues en vez de meter un polígono más grande detrás para crear el borde, genera el borde con polígonos, cuatro en este caso.

Saludos.
claro.. serian 4 primitivas no? (1 para cada lado)
o sino no entendi.

igualmente crei que habia una forma de que el d3d te dibuje el contorno de las primitivas, alguna vez lei que opengl te dejaba hacerlo, y pense q d3d tambien

escribiendo esto se me ocurrio otra forma =S
podria hacerlo con lineas, recorrer el rectangulo pero.. pregunta: a las lineas tambien se les puede aplicar alpha fading? y se les puede cambiar el grosor?

gracias por sus respuestas, me son de gran ayuda como siempre ^^!

BeRSeRKeR

 La opción de crear el borde con 4 polígonos (o los que hagán falta) me parece correcta. Si no recuerdo mal, cuando salió el código de quake1 le eché un vistazo y lo hacía así a la hora de crear los marcos de las ventanas de la interface.

Si lo que te preocupa es el rendimiento, dudo que a la aceleradora le afecte mucho que renderices 4 polígonos más (8 triángulos)... jeje

Además, a la hora de ponerle una textura al marco será más sencillo.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

[EX3]

 Yo en la dx_lib32 por ejemplo, para la funcion DRAW_Box() que permite dibujar cajas con o sin relleno genero una lista de 4 primitivas (en realidad vertices para ser mas exactos) que renderizo configuradas como lineas mediante el parametro D3DPT_LINESTRIP para generar el borde. El relleno, en caso de realizarse, seria otra lista de primitivas que configuro como D3DPT_TRIANGLESTRIP que generan dos triangulos.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Abc7

 
Cita de: "[EX3"] Yo en la dx_lib32 por ejemplo, para la funcion DRAW_Box() que permite dibujar cajas con o sin relleno genero una lista de 4 primitivas (en realidad vertices para ser mas exactos) que renderizo configuradas como lineas mediante el parametro D3DPT_LINESTRIP para generar el borde. El relleno, en caso de realizarse, seria otra lista de primitivas que configuro como D3DPT_TRIANGLESTRIP que generan dos triangulos.

Salu2...
claro, asi es como lo acabo de hacer.. solo que con 4 vertices no me cerraba el cuadrado, me quedaba algo como
.._______
|             |
|             |
|             |



osea, faltaba la parte de abajo.. y el orden de los vertices es el siguiente

1    3
|\    |
|  \  |
|    \|
0    2

el con trianglestrip me andaba bien el relleno, se cerraba el cuadrado, pero el linelist me quedaba como esta mas arriba

igualmente lo resolvi agregando un nuevo vertice, asi pasa por el 0 dos veces para cerrarse.


muchas gracias por las respuestas ^^!






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.