Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   GLScene : los objetos no mantienen los colores (https://www.clubdelphi.com/foros/showthread.php?t=93568)

FENIXadr 18-11-2018 00:55:29

GLScene : los objetos no mantienen los colores
 
Hola gente.. que tal.. acá estoy de nuevo con unos problemitas de programación.. hace unos días que estoy haciendo una aplicación gráfica con GLScene y la verdad es una librería muy buena.. pero tengo un inconveniente que ya he buscado por la red y no he encontrado como solucionarlo.. la cosas es así..

Mi aplicación carga una imagen vectorial y en tiempo de ejecución crea un MultiPolygon para representar los diferentes polígonos de la figura.. luego creo otras figuras (GLLines) una por cada polígono para marcar los bordes (lo hago de esta forma porque no se si se puede hacer que MultiPoligon muestre los bordes de otro color) ... bueno hasta aquí todo bien...

El problema surge cuando le pongo los colores..

El primer MultiPoligon queda joya.. cada polígono con su color y cada borde con el suyo.. pero los MultiPoligon`s que creo desde ahí en adelante, o sea si cargo otra imagen vectorial, no respetan su propio material.. sino que se pone el material del borde..
o sea si la primera imagen vectorial tenía sus polígonos verdes y los bordes negros (por decir algo).. las demás imágenes vectoriales se cargan de color negro con bordes negros... alguien sabe porque el ultimo color es el que se usa siempre después de cargar la primera imagen???

Desde ya muchas gracias!!.

Ñuño Martínez 30-11-2018 17:55:21

Yo diría que olvidas aplicar el material del nuevo MultiPoligon, o que no se lo asignas correctamente. Sin código, difícil decir algo más.

FENIXadr 30-11-2018 18:40:07

Hola Ñuño .. gracias por responder.. lo pude solucionar... es un comportamiento de OpenGL que no llego a comprender del todo.. te cuento ..

Como todos ya sabemos OpenGL es una máquina de estados .. por lo tanto si asigno colores de materiales y bordes antes de dibujar los polígonos, se aplicarán correctamente una vez dibujados.. este inconveniente de que la primera vez funcione correctamente y después deje de funcionar ya lo había tenido cuando hice algunas cosas sobre OpenGL directamente. Después de renegar un buen tiempo, de repente empezó a funcionar bien y nunca supe porque se había solucionado.. Pero en la programación nada se soluciona solo..
Cuando comencé a trabajar con GLScene.. rápidamente vi lo solucionado que tienen algunos procesos tediosos de OpenGL y me gustó bastante..
La aplicación que estoy haciendo ahora es una aplicación para CNC donde es todo 2D y no necesito sombras, por lo tanto decidí trabajar sin luces para que los colores quedaran brillantes sin ninguna regulación de nada, ESE fue mi gran error... porque si bien los colores quedan más brillantes al no calcular las luces, tienen el inconveniente de que asigna bien los colores la primera vez, pero después no funciona correctamente y es un inconveniente que no logro entender del todo... de todos modos agregando luces se soluciona, y si éstas luces se manejan correctamente los colores quedan brillantes como uno desee..

En resumen.. mi problema fue en aquel momento y ahora NO COLOCAR LUCES..

Lección aprendida!!.. :D

Ñuño Martínez 09-12-2018 12:55:34

Mira que estuve a punto de poner "recuerda que OpenGL es una máquina de estados", pero pensé que iba a pasarme de condescendiente...

Me alegra que lo hayas arreglado y hayas aprendido. Enhorabuena. :)

FENIXadr 09-12-2018 13:45:09

.. ^\||/ ^\||/ ^\||/ ^\||/


La franja horaria es GMT +2. Ahora son las 12:36:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi