Salve ho scritto questo pezzo di codice
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/gl.h>
#include <GL/glut.h>
typedef struct {
char *name; /* Il nome del terreno. Di default equivale al nome del file. */
int height; /* L'altezza della heightmap. */
int width; /* La larghezza della Heightmap. */
unsigned char *data; /* Puntatore alla zona di memoria contenente la Heightmap. */
GLuint GLuinGLID; /* Il numero ID dell'oggetto nella lista di OpenGL. = 0 fino alla compilazione del terreno. */
GLuint primitive; /* La primitiva da utilizzare per costruire il terreno. Può essere GL_TRIANGLE_STRIP o GL_SQUARE. */
int rendermode; /* La modalitˆ di disegno del terreno. Può essere VLP_MODE_WIREFRAME o VLP_MODE_FLAT. */
int resolution; /* La risoluzione del terreno equivale alla distanza tra un punto e l'altro nella Heightmap. */
/* Pi il valore piccolo, pi vertici verranno disegnati. Può essere al minimo = 2. */
//vlpVec3 pos; /* La posizione del centro del terreno. */
float scaleF; /* scaleF un fattore che verrˆ moltiplicato alle dimensioni (x,y,z) del terreno. */
float heightF; /* heightF un fattore che verrˆ moltiplicato all'altezza del terreno (y). */
int textureID; /* Il numero ID di OpenGL della texture da applicare al terreno. */
/* textureID = 0 fino a quando non verrˆ applicata una texture tramite vlbAttachTexture. */
int textureRepeat; /* Il numero di volte (per l'altezza e per la larghezza) che la texture dovrˆ venire riprodotta sul terreno. */
/* Se ad esempio = 2 allora la texture verrˆ riprodotta 4 volte (2 per l'altezza e 2 per la larghezza). */
int walkable; /* Determina se la camera, quando impostata in modalitˆ VLP_CAMERA_WALK, pu˜ camminare sul terreno. */
/* Può essere VLP_WALKABLE_YES o VLP_WALKABLE_NO. */
int lightRespond; /* Determina se il terreno deve interagire con le luci presenti nella scena. */
/* Può essere VLP_lightRespond_YES o VLP_lightRespond_NO. */
int visible; /* Determina se il terreno deve venire disegnato oppure no. Può essere VLP_VISIBLE_YES o VLP_VISIBLE_NO. */
}vlpTer;
typedef struct {
GLuint GLID; /* Il numero ID assegnato da OpenGL per identificare la texture.*/
int height; /* L'altezza della texture. */
int width; /* La larghezza della texture. */
char *name; /* Il nome della texture. Di default equivale al nome del file. */
} vlpTex;
// Puntatore al terreno selezionato
vlpTer *selected_terrain;
// Definizione dei terreni
vlpTer terPianura;
vlpTer skydome;
vlpTer terMontagna1;
vlpTer terMontagna2;
vlpTer terMontagna3;
vlpTer terMontagna4;
// Definizione delle texture
vlpTex texPianura; // Texture: terreno, erba e sassi
vlpTex texSkydoome; // Texture: cielo, nuvole
vlpTex texGhiacciao; // Texture: neve, sassi
vlpTex texGhiacciao2; // Texture: neve, sassi
// Definizione bound principale
int boundx, boundz;
int boundwidth, boundheight;
vlpBound boundprincipale;
// Definizione delle luci
GLfloat lightAmbient[] = {0.2f, 0.2f, 0.2f, 1.0f}; // Impostazione della luce d'ambiente.
GLfloat lightDiffuse[] = {0.8f, 0.8f, 0.8f, 1.0f}; // Impostazione della luce diffusa.
float lightPosition[] = {500, 200.0, 500.0, 1.0f}; // Posizione della luce.
float lightDir[]={0.0, 0.0, 0.0}; // Direzione della luce
float lightCutoff = 180; // Apertura dello spot (in gradi).
// Definizione di altre variabili
int mousewas_x; // Memorizza la posizione precedente x del mouse.
int mousewas_y; // Memorizza la posizione precedente x del mouse.
int left_button_state = 0; // Se = 1 allora il pulsante LEFT attivo.
int right_button_state = 0; // Se = 1 allora il pulsante RIGHT attivo.
int up_button_state = 0; // Se = 1 allora il pulsante UP attivo.
int down_button_state = 0; // Se = 1 allora il pulsante DOWN attivo.
int resolution_button_state = 0; // Se = 1: resolution UP, se = 2: resolution DOWN, se 0: pulsante non attivo.
int scaleF_button_state = 0; // Se = 1: scaleF UP, se = 2: scaleF DOWN, se 0: pulsante non attivo.
int heightF_button_state = 0; // Se = 1: heightF UP, se = 2: heightF DOWN, se 0: pulsante non attivo.
int special_key = 0; // 0 = nessun tasto speciale, 1 = ctrl premuto , 2 = shift premuto, 3 = alt premuto
int movingLight = 0; // Si sta spostando la luce?
int no_vertex = 0; // Numero di vertici generati dal terreno.
int helpPane = 1; // Determina se visualizzare o meno l'help pane.
int isfullscreen = 0;
int DefWindowHeight = 660; // L'altezza di default della finestra.
int DefWindowWidth = 890; // La larghezza di default della finestra.
int CurrentWindowHeight = 660; // L'altezza corrente della finestra.
int CurrentWindowWidth = 960; // La larghezza corrente della finestra.
//Prototipi funzioni
GLvoid DefineScene(int Width, int Height);
GLvoid DrawScene(GLvoid);
GLvoid idle(GLvoid);
void InitScene(void);
GLvoid ProcessNormalKeys (unsigned char key, int x, int y);
GLvoid ProcessSpecialKeys (int key, int x, int y);
void process_Mouse(int x, int y);
void print_values(void);
void ProcessMainKeys (void);
void move_camera(void);
void release_specialbutton (int key, int x, int y);
void renderHelpPane(void);
void reset_mouse (int button, int state, int mouse_x, int mouse_y);
void process_mouse(int mouse_x, int mouse_y);
void MoveLightOnLatitude(float angle);
void MoveLightOnLongitude(float angle);
void DrawLightSphere(void);
void preset1 (void);
void preset2 (void);
void preset3 (void);
void release_button (int key, int x, int y);
int main(int argc, char** argv)
{
// Inizializzo GLUT.
glutInit(&argc, argv);
// Inizializzo la scena
InitScene();
// Abilito i callback di GLUT
glutKeyboardFunc(ProcessNormalKeys);
glutSpecialFunc(ProcessSpecialKeys);
//glutKeyboardUpFunc (release_button);
glutSpecialUpFunc(release_specialbutton);
glutMotionFunc(process_mouse);
glutMouseFunc(reset_mouse);
glutDisplayFunc(DrawScene);
glutReshapeFunc(DefineScene);
glutMainLoop();
return 0;
}
e mi dà il seguente errore in compilazione
c:\documents and settings\utente\desktop\terrenirendering\terrenire ndering\terreni.cpp(55) : fatal error C1075: fine file raggiunta prima che fosse trovata la corrispondenza per l'elemento parentesi graffa '{' di sinistra in 'c:\documents and settings\utente\desktop\terrenirendering\terrenire ndering\terreni.cpp(54)'.
Non riesco a capire il problema (premetto che è la prima volta che programmo in c).
Qualcuno mi sa dire dove sbaglio?![]()
Grazie

Rispondi quotando