Teksturowanie OpenGL

0

Nie dawno zacząłem bawić się teksturami.
Teksturowałem sobie przykład z kursu o tak:

glBegin( GL_LINES );
    glTexCoord3f(1,1,1);
    glVertex3f( 1.0, 1.0, 1.0 );
    glTexCoord3f(1,-1,1);
    glVertex3f( 1.0, - 1.0, 1.0 );
    ////
    glTexCoord3f(1,-1,1);
    glVertex3f( 1.0, - 1.0, 1.0 );
    glTexCoord3f(1,-1,-1);
    glVertex3f( 1.0, - 1.0, - 1.0 );
    ////
    glTexCoord3f(1,-1,-1);
    glVertex3f( 1.0, - 1.0, - 1.0 );
    glTexCoord3f(1,1,-1);
    glVertex3f( 1.0, 1.0, - 1.0 );
    ////
    glTexCoord3f(1,1,-1);
    glVertex3f( 1.0, 1.0, - 1.0 );
    glTexCoord3f(1,1,1);
    glVertex3f( 1.0, 1.0, 1.0 );
    ////
    glTexCoord3f(-1,1,-1);
    glVertex3f( - 1.0, 1.0, 1.0 );
    glTexCoord3f(-1,-1,1);
    glVertex3f( - 1.0, - 1.0, 1.0 );
    ////
    glTexCoord3f(-1,-1,1);
    glVertex3f( - 1.0, - 1.0, 1.0 );
    glTexCoord3f(-1,-1,-1);
    glVertex3f( - 1.0, - 1.0, - 1.0 );
    ////
    glTexCoord3f(-1,-1,-1);
    glVertex3f( - 1.0, - 1.0, - 1.0 );
    glTexCoord3f(-1,1,-1);
    glVertex3f( - 1.0, 1.0, - 1.0 );
    ////
    glTexCoord3f(-1,1,-1);
    glVertex3f( - 1.0, 1.0, - 1.0 );
    glTexCoord3f(-1,1,1);
    glVertex3f( - 1.0, 1.0, 1.0 );
    ////
    glTexCoord3f(1,1,-1);
    glVertex3f( 1.0, 1.0, 1.0 );
    glTexCoord3f(-1,1,-1);
    glVertex3f( - 1.0, 1.0, 1.0 );
    ////
    glTexCoord3f(1,-1,1);
    glVertex3f( 1.0, - 1.0, 1.0 );
    glTexCoord3f(-1,-1,1);
    glVertex3f( - 1.0, - 1.0, 1.0 );
    ////
    glTexCoord3f(1,-1,-1);
    glVertex3f( 1.0, - 1.0, - 1.0 );
    glTexCoord3f(-1,-1,-1);
    glVertex3f( - 1.0, - 1.0, - 1.0 );
    ////
    glTexCoord3f(1,1,-1);
    glVertex3f( 1.0, 1.0, - 1.0 );
    glTexCoord3f(-1,1,-1);
    glVertex3f( - 1.0, 1.0, - 1.0 );
    glEnd();

Tą teksturą:

void tekstura()
{
	// tablica z danymi dla tekstury o wymiarach 8x8 punktów; 
	// obraz składa się z czterech kwadratów, których 
	// kolory podawane są jako składowe RGB, czyli:
	// - czerwony:  {250,  0,250} 
	// - biały:     {230,230,230}
	// - zielony:   {  0,250,  0}
	// - niebieski: {  0,  0,250}
	GLubyte tekstura[8][8][3]=
	{
		{
		{250,  0,  0},{250,  0,  0},{250,  0,  0},{250,  0,  0},
		{230,230,230},{230,230,230},{230,230,230},{230,230,230}
		},
		{
		{250,  0,  0},{250,  0,  0},{250,  0,  0},{250,  0,  0},
		{230,230,230},{230,230,230},{230,230,230},{230,230,230}
		},
		{
		{250,  0,  0},{250,  0,  0},{250,  0,  0},{250,  0,  0},
		{230,230,230},{230,230,230},{230,230,230},{230,230,230}
		},
		{
		{250,  0,  0},{250,  0,  0},{250,  0,  0},{250,  0,  0},
		{230,230,230},{230,230,230},{230,230,230},{230,230,230}
		},
		{
		{  0,250,  0},{  0,250,  0},{  0,250,  0},{  0,250,  0},
		{  0,  0,250},{  0,  0,250},{  0,  0,250},{  0,  0,250}
		},
		{
		{  0,250,  0},{  0,250,  0},{  0,250,  0},{  0,250,  0},
		{  0,  0,250},{  0,  0,250},{  0,  0,250},{  0,  0,250}
		},
		{
		{  0,250,  0},{  0,250,  0},{  0,250,  0},{  0,250,  0},
		{  0,  0,250},{  0,  0,250},{  0,  0,250},{  0,  0,250}
		},
		{
		{  0,250,  0},{  0,250,  0},{  0,250,  0},{  0,250,  0},
		{  0,  0,250},{  0,  0,250},{  0,  0,250},{  0,  0,250}
		}
	};

	// definicja tekstury
	glTexImage2D(GL_TEXTURE_2D,0,3,8,8,0,GL_RGB,GL_UNSIGNED_BYTE,tekstura);
	// ustalenie parametrów tekstury
   	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
   	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
   	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
	// ustalenie trybu teksturowania
	glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);	
	// włączenie teksturowania
	glDisable(GL_TEXTURE_1D);
	glEnable(GL_TEXTURE_2D);
}

Jednak efekt jest taki:
gtr4nm9auvix_t.jpg
Co zrobić aby teksturowane były ściany boczne a nie krawędzie tego graniastosłupa?

0
glBegin( GL_LINES );

Zgaduję, że to jest problemem.

0

Racja pomogło tylko, że wszystko dziwnie wygląda muszę 'przebudować' graniastosłup.
A zna ktoś sposób jak wyelminować miganie gdy wywołamy menu przy włączonym glutFullscreen?

0

VSync?

1 użytkowników online, w tym zalogowanych: 0, gości: 1