Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-10-2011, 16:02   #1
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
[c] opengl problemi nel disegno di un cubo

Ciao a tutti,
sto provando a disegnare un cubo ma purtroppo ho un problema, alcuni lati anche se vengono disegnati risultano invisibili sapreste aiutarmi?

eccovi la funzione che dovrebbe disegnare il cubo:
Codice:
GLvoid drawCubo(GLvoid){
	GLfloat lato=.2,zinf=-.2,zsup=.2;
	GLfloat x[]={-lato,-lato,lato,lato},y[]={-lato,lato,lato,-lato};	
	GLint i;
  //lati del cubo
	glBegin(GL_QUAD_STRIP);
	glColor3ub(255,255,0);
	for(i=0;i<4;i++){		
		glVertex3f(x[i],y[i],zinf);
		glVertex3f(x[i],y[i],zsup);
		}
	glVertex3f(x[0],y[0],zinf);glVertex3f(x[0],y[0],zsup);	
	glEnd();
//base superiore e inferiore del cubo
	glBegin(GL_QUADS);
	glColor3ub(0,255,255);
	for(i=0;i<4;i++)		
		glVertex3f(x[i],y[i],zinf);//base superiore azzurra	
	glColor3ub(0,0,255);
	for(i=0;i<4;i++)		
		glVertex3f(x[i],y[i],zsup);//base superiore blu	
	glEnd();		
	
	}
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2011, 16:38   #2
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
Iscritto dal: Dec 2006
Messaggi: 3808
manca il resto del programma ed uno screen di quello che ti renderizza.
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2011, 17:48   #3
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
ecco il programma:

Codice:
#include<stdio.h>
#include<GL/glut.h>


GLvoid ControlloErrori(char *label){
	GLenum errore;
	while((errore=glGetError())!=GL_NO_ERROR){
		printf("%s %s\n",label,gluErrorString(errore));
		}	
	}

GLvoid drawAssi(GLvoid){
	GLfloat x[]={1,0,0};
	GLfloat y[]={0,1,0};
	GLfloat z[]={0,0,1};
	GLfloat center[]={0,0,0};

	glBegin(GL_LINES);
	glColor3ub(255,0,0);
	glVertex3fv(center);
	glVertex3fv(x);
	glColor3ub(0,255,0);
	glVertex3fv(center);
	glVertex3fv(y);
	glColor3ub(0,0,255);
	glVertex3fv(center);
	glVertex3fv(z);
	glEnd();
			
	}

GLvoid drawCubo(GLvoid){
	GLfloat lato=.2,zinf=-.2,zsup=.2;
	GLfloat x[]={-lato,-lato,lato,lato},y[]={-lato,lato,lato,-lato};	
	GLint i;

	glBegin(GL_QUAD_STRIP);
	glColor3ub(255,255,0);
	for(i=0;i<4;i++){		
		glVertex3f(x[i],y[i],zinf);
		glVertex3f(x[i],y[i],zsup);
		}
	glVertex3f(x[0],y[0],zinf);glVertex3f(x[0],y[0],zsup);	
	glEnd();

	glBegin(GL_QUADS);
	glColor3ub(0,255,255);
	for(i=0;i<4;i++)		
		glVertex3f(x[i],y[i],zinf);//base superiore azzurra	
	glColor3ub(0,0,255);
	for(i=0;i<4;i++)		
		glVertex3f(x[i],y[i],zsup);//base superiore blu	
	glEnd();		
	
	}

void disegno(GLvoid){

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		
	glPushMatrix();	
	glRotatef(-50,1,0,0);
	glRotatef(-130,0,0,1);	
	drawAssi();
	drawCubo();
	
	glPopMatrix();
	ControlloErrori("disegno");
	glutSwapBuffers();
	
	}


int main(int argc,char** argv){
	
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
	glEnable(GL_DEPTH_TEST);
	glutCreateWindow("cubo");
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-1,1,-1,1,-1,1);
	glMatrixMode(GL_MODELVIEW);
	glClearColor(0,0.3,0,0);
	glShadeModel(GL_FLAT);
	glutDisplayFunc(disegno);
	glutMainLoop();
	
	}
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2011, 19:22   #4
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
Iscritto dal: Dec 2006
Messaggi: 3808
a me funziona, il problema forse è che ti aspetti che il cubo si possa ruotare tramite un drag&drop con il cursore, in questo caso la risposta è sempre negativa semplicemente perché OpenGL è una tecnologia per il rendering e non un framework con velleità multimediali, OpenGL, o meglio GLUT e/o freeGLUT che siano, non gestiscono altro all'infuori del rendering di punti, linee, primitive e colori, per i comandi devi far riferimento ad altri framework o altre librerie.
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2011, 20:52   #5
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
no il problema è che non vedo due lati, mancano due lati gialli !!!
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2011, 01:40   #6
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
La normale di un triangolo va nel verso del "vertex winding", ovvero nel verso dell'enumerazione dei vertici.

Dati V1, V2, V3, la normale è messa in modo che girando intorno, si percorrono da 1 a 3 in senso orario... in poche parole è calcolata col prodotto vettoriale.

In breve: sei sicuro che disegni i vertici nell'ordine giusto? Se la normale viene invertita le facce non si vedono dal verso che ti aspetti (backface culling) e sembra ci sia un "buco"

PS: per il futuro, non usare GL_QUADS. Non usare GLUT. Non usare glBegin()-glEnd(). Usa i VBO e meshes indicizzate.
Purtroppo OpenGL ha il problema che se non sai cosa stai facendo puoi usarla come se fosse il '91, ed è quello che stai facendo qui
__________________
*ToMmO*

devlog | twitter

Ultima modifica di Tommo : 25-10-2011 alle 01:45.
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2011, 08:54   #7
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
per adesso devo usare glut e non riesco a capire dove sbaglio!!!
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2011, 09:34   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
per adesso devo usare glut e non riesco a capire dove sbaglio!!!
Come dice Tommo: prova a disegnare i vertici in senso anti-orario, ho letto i valori negli array 'x' e 'y' al tuo primo post, e mi pare vadano in senso orario
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
Disponibili i video e le immagini in alt...
La NASA ha rilasciato le prime fotografi...
Cometa interstellare 3I/ATLAS: l'ESA dif...
Kodak PIXPRO AZ653: la fotocamera bridge...
Monitor da gaming: Samsung si conferma l...
The Duskbloods potrebbe arrivare a fine ...
Il miglior pesce d'aprile del mondo Linu...
Monopattini elettrici a 62 km/h fermati ...
OpenAI porta la modalità vocale d...
Mercedes-Benz introduce lo steer-by-wire...
Hacker agli Uffizi, il museo smentisce: ...
Nvidia mostra il futuro della grafica co...
Windows 11, scattano gli aggiornamenti f...
TIM lancia l'offerta di Pasqua: Giga ill...
Prime foto reali per OPPO Find X9 Ultra:...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v