Ładny brzuch
Na podstawie artykuw z Eksperta chciaem doda nowe pomieszczenie do ognego projektu, ale wyskakuja mi bedy. Czy ktos moze powiedziec mi, gdzie sa bedy?
:(
#include <GL/gl.h> #include <GL/glut.h> #include <stdlib.h> #include "Texture.h" using namespace std; struct TPointf { GLfloat x, y, z; }; GLuint tex[1]; //tablica numerow textur GLUquadric* obj; //potrzebny do rysowania obiektow z bib. glu void RysujSciane( const TPointf& p1, const TPointf& p2, const TPointf& p3, const TPointf& p4, GLfloat krotnoscX, GLfloat krotnoscY ) { glBegin( GL_QUADS ); glTexCoord2f( 0, 0 ); glVertex3f( p1.x, p1.y, p1.z ); glTexCoord2f( krotnoscX, 0 ); glVertex3f( p2.x, p2.y, p2.z ); glTexCoord2f( krotnoscX, krotnoscY ); glVertex3f( p3.x, p3.y, p3.z ); glTexCoord2f( 0, krotnoscY ); glVertex3f( p4.x, p4.y, p4.z ); glEnd(); } void Keyboard( unsigned char key, int x, int y ) { if ( key == 27 ) exit( EXIT_SUCCESS ); } void Init() { glClearColor( 0.2f, 0.2f, 0.4f, 1.0f ); glEnable( GL_DEPTH_TEST ); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective( 60.0, 1.0, 0.1, 1000.0 ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glutFullScreen(); glutKeyboardFunc( Keyboard ); LoadTexture( "cegly.bmp", tex[0] ); obj = gluNewQuadric(); gluQuadricTexture( obj, GL_TRUE ); } void Render() { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); TPointf p1 = { -300.0f, 50.0f, -300.0f }, p2 = { -300.0f, 50.0f, 300.0f }, p3 = { 300.0f, 50.0f, 300.0f }, p4 = { 300.0f, 50.0f, -300.0f }, p5 = { -300.0f, -50.0f, -300.0f }, p6 = { -300.0f, -50.0f, 300.0f }, p7 = { 300.0f, -50.0f, 300.0f }, p8 = { 300.0f, -50.0f, -300.0f }; p9 = { -150.0f, 50.0f, -450.0f }; p10 = { -150.0f, 50.0f, -300.0f }; p11 = { 150.0f, 50.0f, -300.0f }; p12 = { 150.0f, 50.0f, -450.0f }; p13 = { -150.0f, -50.0f, -450.0f }; p14 = { -150.0f, -50.0f, -300.0f }; p15 = { 150.0f, -50.0f, -300.0f }; p16 = { 150.0f, -50.0f, -450.0f }; //rysowanie pomieszczenia glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, tex[0] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujSciane( p5, p1, p2, p6, 1, 4 ); glColor3f( 1.0f, 0.0f, 0.0f ); RysujSciane( p4, p8, p7, p3, 1, 4 ); glColor3f( 0.0f, 1.0f, 0.0f ); RysujSciane( p1, p5, p8, p4, 1, 4 ); glColor3f( 0.0f, 1.0f, 1.0f ); RysujSciane( p3, p7, p6, p2, 1, 4 ); glColor3f( 0.0f, 0.0f, 1.0f ); RysujSciane( p1, p4, p3, p2, 1, 4 ); glColor3f( 1.0f, 1.0f, 0.0f ); RysujSciane( p5, p6, p7, p8, 10, 10 ); /* drugie pomieszczenie */ glColor3f( 1.0f, 1.0f, 1.0f ); RysujSciane( p9, p10, p14, p13, 1, 4 ); glColor3f( 1.0f, 0.0f, 1.0f ); RysujSciane( p12, p16, p15, p11, 1, 4 ); glColor3f( 0.0f, 1.0f, 0.0f ); RysujSciane( p9, p13, p14, p12, 1, 4 ); glColor3f( 0.0f, 0.0f, 1.0f ); RysujSciane( p11, p15, p14, p10, 1, 4 ); glColor3f( 0.0f, 1.0f, 1.0f ); RysujSciane( p9, p12, p11, p10, 1, 4 ); glColor3f( 0.0f, 0.0f, 0.0f ); RysujSciane( p13, p14, p15, p16, 1, 4 ); glPopMatrix(); glutSwapBuffers(); } void Idle( void ) { Render(); } int main( int argc, char **argv ) { glutInitDisplayMode( GLUT_DOUBLE ); glutCreateWindow( "Ekspert-OpenGL" ); Init(); glutDisplayFunc( Render ); glutIdleFunc( Idle ); glutMainLoop(); return EXIT_SUCCESS; }
Przy zmiennych TPointf masz od pewnego momentu sredniki zamiast przecinkow.
Uytkownik st3tc edytowa ten post 30 sierpie 2005, 08:05
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
:(
#include <GL/gl.h> #include <GL/glut.h> #include <stdlib.h> #include "Texture.h" using namespace std; struct TPointf { GLfloat x, y, z; }; GLuint tex[1]; //tablica numerow textur GLUquadric* obj; //potrzebny do rysowania obiektow z bib. glu void RysujSciane( const TPointf& p1, const TPointf& p2, const TPointf& p3, const TPointf& p4, GLfloat krotnoscX, GLfloat krotnoscY ) { glBegin( GL_QUADS ); glTexCoord2f( 0, 0 ); glVertex3f( p1.x, p1.y, p1.z ); glTexCoord2f( krotnoscX, 0 ); glVertex3f( p2.x, p2.y, p2.z ); glTexCoord2f( krotnoscX, krotnoscY ); glVertex3f( p3.x, p3.y, p3.z ); glTexCoord2f( 0, krotnoscY ); glVertex3f( p4.x, p4.y, p4.z ); glEnd(); } void Keyboard( unsigned char key, int x, int y ) { if ( key == 27 ) exit( EXIT_SUCCESS ); } void Init() { glClearColor( 0.2f, 0.2f, 0.4f, 1.0f ); glEnable( GL_DEPTH_TEST ); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective( 60.0, 1.0, 0.1, 1000.0 ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glutFullScreen(); glutKeyboardFunc( Keyboard ); LoadTexture( "cegly.bmp", tex[0] ); obj = gluNewQuadric(); gluQuadricTexture( obj, GL_TRUE ); } void Render() { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); TPointf p1 = { -300.0f, 50.0f, -300.0f }, p2 = { -300.0f, 50.0f, 300.0f }, p3 = { 300.0f, 50.0f, 300.0f }, p4 = { 300.0f, 50.0f, -300.0f }, p5 = { -300.0f, -50.0f, -300.0f }, p6 = { -300.0f, -50.0f, 300.0f }, p7 = { 300.0f, -50.0f, 300.0f }, p8 = { 300.0f, -50.0f, -300.0f }; p9 = { -150.0f, 50.0f, -450.0f }; p10 = { -150.0f, 50.0f, -300.0f }; p11 = { 150.0f, 50.0f, -300.0f }; p12 = { 150.0f, 50.0f, -450.0f }; p13 = { -150.0f, -50.0f, -450.0f }; p14 = { -150.0f, -50.0f, -300.0f }; p15 = { 150.0f, -50.0f, -300.0f }; p16 = { 150.0f, -50.0f, -450.0f }; //rysowanie pomieszczenia glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, tex[0] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujSciane( p5, p1, p2, p6, 1, 4 ); glColor3f( 1.0f, 0.0f, 0.0f ); RysujSciane( p4, p8, p7, p3, 1, 4 ); glColor3f( 0.0f, 1.0f, 0.0f ); RysujSciane( p1, p5, p8, p4, 1, 4 ); glColor3f( 0.0f, 1.0f, 1.0f ); RysujSciane( p3, p7, p6, p2, 1, 4 ); glColor3f( 0.0f, 0.0f, 1.0f ); RysujSciane( p1, p4, p3, p2, 1, 4 ); glColor3f( 1.0f, 1.0f, 0.0f ); RysujSciane( p5, p6, p7, p8, 10, 10 ); /* drugie pomieszczenie */ glColor3f( 1.0f, 1.0f, 1.0f ); RysujSciane( p9, p10, p14, p13, 1, 4 ); glColor3f( 1.0f, 0.0f, 1.0f ); RysujSciane( p12, p16, p15, p11, 1, 4 ); glColor3f( 0.0f, 1.0f, 0.0f ); RysujSciane( p9, p13, p14, p12, 1, 4 ); glColor3f( 0.0f, 0.0f, 1.0f ); RysujSciane( p11, p15, p14, p10, 1, 4 ); glColor3f( 0.0f, 1.0f, 1.0f ); RysujSciane( p9, p12, p11, p10, 1, 4 ); glColor3f( 0.0f, 0.0f, 0.0f ); RysujSciane( p13, p14, p15, p16, 1, 4 ); glPopMatrix(); glutSwapBuffers(); } void Idle( void ) { Render(); } int main( int argc, char **argv ) { glutInitDisplayMode( GLUT_DOUBLE ); glutCreateWindow( "Ekspert-OpenGL" ); Init(); glutDisplayFunc( Render ); glutIdleFunc( Idle ); glutMainLoop(); return EXIT_SUCCESS; }
Przy zmiennych TPointf masz od pewnego momentu sredniki zamiast przecinkow.
Uytkownik st3tc edytowa ten post 30 sierpie 2005, 08:05