Hi,
I want to make a simple cubeMap texture.
I wrote this code for do it:
// Cube Map
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
glGenTextures(1, &CubeMap);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, CubeMap);
Textures.InitCubeMap(128);
glTexParameterf( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameterf( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf( GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
---------------------------------------------------------------------------------------
//Textures.cpp
/*
----------
|\ A \
| \__________\
| | |
|C| |
| | B |
| | |
\|__________|
*/
void _Textures::InitCubeMap(int size){
unsigned char * data=new unsigned char[size*size*3];
int Index=0;
for(int t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=255;
data[Index+1]=0;
data[Index+2]=0;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\C' Face
Index = 0;
for( t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=0;
data[Index+1]=255;
data[Index+2]=0;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\C Face
Index = 0;
for( t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=255;
data[Index+1]=255;
data[Index+2]=0;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\A Face
Index = 0;
for( t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=0;
data[Index+1]=255;
data[Index+2]=0;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\A' Face
Index = 0;
for( t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=0;
data[Index+1]=255;
data[Index+2]=255;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\B Face
Index = 0;
for( t=0;t<size;t++){
for(int v=0;v<size;v++){
data[Index]=255;
data[Index+1]=0;
data[Index+2]=255;
Index+=3;
}
}
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,0, GL_RGB8, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, data); \\B' Face
delete [] data;
};
And resault is this:
But i think this is wrong and this isnt valid resault!
Please help me and say where are my mistakes?