Witam
Próbuje sie nauczyć opengl, chce zrobić poruszającą się kulkę po jakimś podłożu.
Jednak wczytujac i nakladając teksture nakłada mi sie ona na kulkę oraz na wszystkie elementy które wyswietlam
Prosze o pomoc - wytlumacznie - wskazówki
Troche zakomentowanych linii bo próbuje znaleźć jakieś rozwiazanie ...
Luint LoadTextureRAW(const char * filename)
{
GLuint obraz;
int width, height;
unsigned char * data;
FILE * file;
file = fopen(filename, "rb");
if (file == NULL) return 0;
width = 1024;
height = 512;
data = (unsigned char *)malloc(width * height * 3);
fread(data, width * height * 3, 1, file);
fclose(file);
for (int i = 0; i < width * height; ++i)
{
int index = i * 3;
unsigned char B, R;
B = data[index];
R = data[index + 2];
data[index] = R;
data[index + 2] = B;
}
glGenTextures(1, &obraz);
glBindTexture(GL_TEXTURE_2D, obraz);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // GL_REPEAT zamiast GL_SPHERE_MAP
/*
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
*/
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
free(data);
return obraz;
}
void DisplaySphere(GLuint texture)
{
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//glPushMatrix();
GLUquadricObj *quad;
quad = gluNewQuadric();
//glRotatef(180, 1.0f, 0.0f, 0.0f);
//glRotatef(180, 1, 0, 0);
gluQuadricNormals(quad, GLU_SMOOTH);
gluQuadricTexture(quad, GL_TRUE);
glBindTexture(GL_TEXTURE_2D, nejm);
gluSphere(quad, 0.3f, 36, 36);
gluDeleteQuadric(quad);
//glPopMatrix();
}
void displaySphere(void) {
//glutSwapBuffers();
glClearDepth(1);
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(90, 1, 0, 0);
DisplaySphere(nejm);
glutSwapBuffers();
}