FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Weird OpenGL buffer issue

Post new topic   Reply to topic     Forum Index -> General
View previous topic :: View next topic  
Author Message

Joined: 09 Dec 2010
Posts: 8

PostPosted: Tue Feb 01, 2011 9:40 am    Post subject: Weird OpenGL buffer issue Reply with quote

Now first off, I know this isn't an OpenGL forum, but I think this has something to do with they way I am using D and I have yet to find an OpenGL forum that deals with D. That said... I seem to have an issue in my model loader(renders the same regardless of how I bind to the buffer) where it looks like my normals are getting tacked onto or into my vertex buffer (not interleaving at the moment, trying to get everything working first then with get "fancy"). here is the jist of my load code:
GLfloat [] verts;
GLfloat [] finalVerts;
GLfloat [] uvs;
GLfloat [] finalUvs;
GLfloat [] norms;
GLfloat [] finalNorms;

//load the list of verts into verts
//load the list of normals into norms
//load the list of uvs into uvs

//read in triangle indices
//for each line of indices
finalVerts ~= verts[i1..(i1+3)];//load first vert in tri
finalVerts ~= verts[i2..(i2+3)];//second
finalVerts ~= verts[i3..(i3+3)];//third

finalUvs ~= uvs[i1..i1+2];//load first vert in tri's uv coords
finalUvs ~= uvs[i2..i2+2];//second
finalUvs ~= uvs[i3..i3+2];//third

finalNorms ~= norms[i1..(i1+3)];//load first vert's normal
finalNorms ~= norms[i2..(i2+3)];//second
finalNorms ~= norms[i3..(i3+3)];//third

glBindBuffer(GL_ARRAY_BUFFER, IDs[ID_types.VBO]);
glBufferData(GL_ARRAY_BUFFER, finalVerts.length * finalVerts[0].sizeof, finalVerts.ptr, GL_STATIC_DRAW);
numFaces = finalVerts.length;
glBindBuffer(GL_ARRAY_BUFFER, 0);//added to make good and sure the buffer bind was reset

glBindBuffer(GL_ARRAY_BUFFER, IDs[ID_types.Normal]);
glBufferData(GL_ARRAY_BUFFER, finalNorms.length * finalNorms[0].sizeof, finalNorms.ptr, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

glBindBuffer(GL_ARRAY_BUFFER, IDs[ID_types.Texture]);
glBufferData(GL_ARRAY_BUFFER, finalUvs.length * finalUvs[0].sizeof, finalUvs.ptr, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

like I said the render code doesn't seem to make(binding to the vert buffer regardless). ... Any ideas on what I'm doing wrong? Any help (including links to a more appropriate forum for this question) would be greatly appreciated!


images for reference:

with smooth normals:

and with "hard" normals:
Back to top
View user's profile Send private message

Joined: 09 Dec 2010
Posts: 8

PostPosted: Thu Feb 03, 2011 8:38 am    Post subject: Reply with quote

Little update:
When I go to try and get this working on OSX(have been developing on windows) I had the same issue, but it looked different. That is until I started using shaders with glVertexPointer instead of glVertexAttribPointer for positional data... and then some times it does come up with that junk but if I close the program, suspend the computer, wake it up and try again it fixes it.... no more junk... it's just so weird...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> General All times are GMT - 6 Hours
Page 1 of 1

Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2001, 2005 phpBB Group