Jump to content

  • Log In with Google      Sign In   
  • Create Account


newbiex11

Member Since 14 Oct 2009
Offline Last Active Jan 03 2013 11:01 AM

Topics I've Started

Texture maping problem with vertex buffer object

14 September 2012 - 02:09 PM

Hello friends.
I have a problem with texture mapping VBO.
did the mapping with blender and exported the information to a txt file then loaded into the software

Attached File  mapeamento.png   101.99KB   32 downloads
texture mapping

Attached File  render.png   15.99KB   35 downloads
blender render

Attached File  resultado.png   54.27KB   36 downloads
my render

Code of load texture

[source lang="cpp"]image = SDL_LoadBMP(filename); if (image != NULL) { unsigned int size = sizeof(image->pixels); colorFormat = TEXTURE_RGB; dimension = TEXTURE_2D; glGenTextures(1,&name); glBindTexture (GL_TEXTURE_2D,name); // set pixel unpacking mode glPixelStorei (GL_UNPACK_SWAP_BYTES, 0); glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glPixelStorei (GL_UNPACK_SKIP_ROWS, 0); glPixelStorei (GL_UNPACK_SKIP_PIXELS, 0); data = malloc(size); memcpy(&data,&image->pixels,size); glTexImage2D (GL_TEXTURE_2D, 0, 3, image->w, image->h, 0, GL_RGB, GL_UNSIGNED_BYTE, data); gluBuild2DMipmaps (GL_TEXTURE_2D, 3, image->w, image->h, GL_RGB, GL_UNSIGNED_BYTE, data); SDL_FreeSurface(image); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); //glGenerateMipmap(GL_TEXTURE_2D); glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); }}void TexturePCX::bind (){ glBindTexture(GL_TEXTURE_2D,name); glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV, GL_DECAL);}TexturePCX::~TexturePCX(){ free(data);//TODO : Liberar textura (OpenGL)}void TexturePCX::begin(){ glEnable(GL_TEXTURE); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,name); glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV, GL_DECAL);}void TexturePCX::end(){ glDisable(GL_TEXTURE); glDisable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,0);}[/source]

Vertex Buffer Objects draw
[source lang="cpp"]void VertexBufferObject::setVertices(vec3d *data,unsigned int size){ glGenBuffers( 1, &vertexBuffId); glBindBuffer( GL_ARRAY_BUFFER, vertexBuffId ); vertices = data; glBufferDataARB( GL_ARRAY_BUFFER, size * 3 * sizeof(float), data, GL_STATIC_DRAW_ARB );}void VertexBufferObject::setIndexs(unsigned int *data,unsigned int size){ glGenBuffers( 1, &indexBuffId ); glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, indexBuffId ); indexs = data; numIndices = size; glBufferDataARB( GL_ELEMENT_ARRAY_BUFFER, size * sizeof(unsigned int), data, GL_STATIC_DRAW );}void VertexBufferObject::setNormals(float *data,unsigned int size){ glGenBuffers( 1, &normalBuffId ); glBindBuffer( GL_ARRAY_BUFFER, normalBuffId ); normals = data; glBufferDataARB( GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW_ARB );}void VertexBufferObject::setTexCoords(TexCoord2 *data,unsigned int size){ glGenBuffers( 1, &texBuffId ); glBindBuffer( GL_ARRAY_BUFFER, texBuffId ); texCoord = data; glBufferDataARB( GL_ARRAY_BUFFER, size * 2 * sizeof(float), data, GL_STATIC_DRAW_ARB );}void VertexBufferObject::draw(){ if (vertexBuffId != 0 ) { glEnableClientState(GL_VERTEX_ARRAY); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffId); glVertexPointer(3,GL_FLOAT,0,0); } if (indexBuffId != 0 ) { glEnableClientState(GL_INDEX_ARRAY); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffId); glIndexPointer(GL_UNSIGNED_INT,0,0);// glBufferData() } if (normalBuffId != 0) { glEnableClientState(GL_NORMAL_ARRAY); glNormalPointer(GL_FLOAT,0,normals); } if (texBuffId != 0) { glEnableClientState(GL_TEXTURE_COORD_ARRAY); glBindBuffer(GL_TEXTURE_COORD_ARRAY, texBuffId); glTexCoordPointer(3,GL_FLOAT,0,0); } glDrawElements(glMode,numIndices,GL_UNSIGNED_INT,0); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_INDEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);}VertexBufferObject::~VertexBufferObject(){}[/source]


Cube information

Mesh: Cube.001
v: 1.000000 0.999999 1.000000
v: 1.000000 1.000000 -1.000000
v: -1.000000 1.000000 -1.000000
v: 1.000000 0.999999 1.000000
v: -1.000000 1.000000 -1.000000
v: -1.000000 1.000000 1.000000
v: -1.000000 -1.000000 -1.000000
v: -1.000000 -1.000000 1.000000
v: -1.000000 1.000000 1.000000
v: -1.000000 -1.000000 -1.000000
v: -1.000000 1.000000 1.000000
v: -1.000000 1.000000 -1.000000
v: 1.000000 -1.000000 -1.000000
v: 0.999999 -1.000001 1.000000
v: -1.000000 -1.000000 -1.000000
v: 0.999999 -1.000001 1.000000
v: -1.000000 -1.000000 1.000000
v: -1.000000 -1.000000 -1.000000
v: 1.000000 1.000000 -1.000000
v: 1.000000 0.999999 1.000000
v: 1.000000 -1.000000 -1.000000
v: 1.000000 0.999999 1.000000
v: 0.999999 -1.000001 1.000000
v: 1.000000 -1.000000 -1.000000
v: 1.000000 0.999999 1.000000
v: -1.000000 1.000000 1.000000
v: 0.999999 -1.000001 1.000000
v: -1.000000 1.000000 1.000000
v: -1.000000 -1.000000 1.000000
v: 0.999999 -1.000001 1.000000
v: 1.000000 1.000000 -1.000000
v: 1.000000 -1.000000 -1.000000
v: -1.000000 -1.000000 -1.000000
v: 1.000000 1.000000 -1.000000
v: -1.000000 -1.000000 -1.000000
v: -1.000000 1.000000 -1.000000
tex: h.bmp
t: 0.332314 0.000000
t: 0.333333 0.332314
t: 0.001020 0.333333
t: 0.332314 0.000000
t: 0.001020 0.333333
t: 0.000000 0.001020
t: 0.332314 0.333333
t: 0.333333 0.665647
t: 0.001020 0.666667
t: 0.332314 0.333333
t: 0.001020 0.666667
t: 0.000000 0.334353
t: 0.334353 0.333333
t: 0.333333 0.001020
t: 0.666667 0.332314
t: 0.333333 0.001020
t: 0.665647 0.000000
t: 0.666667 0.332314
t: 0.998981 0.000000
t: 1.000000 0.332314
t: 0.666667 0.001019
t: 1.000000 0.332314
t: 0.667686 0.333333
t: 0.666667 0.001019
t: 1.000000 0.334353
t: 0.998980 0.666667
t: 0.667686 0.333333
t: 0.998980 0.666667
t: 0.666667 0.665647
t: 0.667686 0.333333
t: 0.665647 0.333333
t: 0.666667 0.665647
t: 0.334353 0.666667
t: 0.665647 0.333333
t: 0.334353 0.666667
t: 0.333333 0.334353
End:


thanks for help.

PARTNERS