void start_3d(int número_3d, int fichero, int gráfico, int ancho, int profundidad, int región, void * camara)
Descripción:
Crea una ventana de visualización de un modo 3D, es decir, visualiza un gráfico tridimensionalmente en un plano abatido.
Para conseguir este efecto se llamará a esta función con los siguientes parámetros:
número de 3D - Se pueden crear hasta 10 ventanas en pantalla, con los números del 0 al 9; si sólo se quiere crear una, lo mejor es definir la número 0. Este número será necesario posteriormente para modificar los parámetros de la ventana, pues el sistema necesitará saber cuál de las 10 posibles ventanas de scroll se quiere alterar.
fichero - Los gráficos que se pretendan abatir en la ventana deben estar en un fichero cuyo código de fichero se debe especificar aquí, como segundo parámetro de la función. Los gráficos cargados con las funciones load_map() o load_pcx() (o creados con new_map()) se utilizarán como si pertenecieran al primer fichero (el fichero con el código 0).
gráfico - El tercer parámetro debe ser el código del gráfico principal que se va a abatir en la ventana y debe pertenecer al fichero anteriormente indicado. El ancho y alto del gráfico de la textura debe ser potencia de dos, pero puede ser diferente, ejemplo: una textura 64x16 está bien, pero una de 17x3 no.
número de región - Aquí se indicará la región rectangular de pantalla en la que se va a mostrar el scroll, si se indica 0 como número de región, se mostrará en toda la pantalla. El resto de regiones se deben definir previamente con la función define_region() (una región no es más que una zona rectangular de la pantalla).
cámara - Aquí se indicará el identificador del proceso que va ha funcionar como cámara, el que determina en cada momento la posición de la misma, por medio de dicho proceso.
Además de la llamada a la función se deben inicializar algunos valores de la estructura global m3d para el correcto funcionamiento de la ventana. Ésta es una estructura de 10 registros (uno para cada posible ventana de modo 3D) y cada registro tiene los siguientes campos:
camera // Código identificador de la cámara file // Fichero de FPG graph // Gráfico del suelo width // Ancho del suelo depth // Profundidad del suelo region // Región en la que se va a representar position // Posición 3D de cámara en los ejes X, Y, Z angle3d // Ángulo 3D de cámara en los ejes X, Y, Z distance // Distancia 3D de la cámara en los ejes X, Y, Z z // Plano de profundidad
La cámara se situará en el plano abatido a la distancia (distance) indicada del proceso cuyo código identificador se haya puesto en camera, y mirando en su mismo ángulo (el que indique su variable local angle3d). La altura a la que se sitúa la cámara respecto al suelo será la indicada en su variable local "y".
Ver la ayuda sobre la estructura m3d para más información sobre estos campos, o para saber cómo acceder a ellos.
Ejemplo de movimiento en un espacio 3D:
MAIN_PROGRAM_CDIV PRIVATE int fichero; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m640x480); // Subimos la altura de la cámara y = -64; fichero = load_fpg("../help.fpg"); start_3d(0, fichero, 100, 1000, 1000, 0, this); // Nos movemos en el espacio 3D LOOP{ if( key(_left) ) angle3d.y += 5000; if( key(_right)) angle3d.y -= 5000; if( key(_up)) advance3d(5); if( key(_down)) advance3d(-5); FRAME; } END_PROGRAM
En el ejemplo se carga el fichero de gráficos y entonces se crea una ventana de modo 3D con la función start_3d(). A esta última se le pasan los siguientes parámetros:
0 - Número de ventana de modo 3d (la primera, puesto que sólo se creará una ventana de esta clase).
fichero - Código del fichero del que se deben tomar los gráficos; este es el código del archivo help.fpg que se cargó con la función load_fpg().
100 - Código del gráfico de la superficie del modo 3D.
512 - Ancho de la superficie.
512 - Profundidad de la superficie.
0 - Número de región de la pantalla en la que se debe colocar el modo 3D; con 0 se indica que se debe colocar en la pantalla entera.
this - Indicamos que el proceso cámara es el mismo que llamó a la función start_3d().
Tras llamar a la función start_3d() utilizando las teclas se puede desplazar por el espacio 3D, dicho espacio no tiene límites ni restricciones, las cuales tendrá que ponerlas el usuario.
Ver: stop_3d() - Estructura m3d