2013-05-04 68 views
0

我正在使用OpenGL ES和GLKitBaseEffect。我开始渲染具有单个纹理的单个3d网格。每个人都很好,很漂亮。现在我添加了第二个基本效果(对于第二个纹理),所以我可以渲染第二个3D网格。如何渲染2个不同纹理的对象?

我似乎无法得到这个工作。

我觉得我的问题是,我对VBO顶点和索引缓冲区发送到GPU的方式有误解。

我基本上调用下面的两倍(每个纹理文件之一):

// apply buffers... 
glGenBuffers(1, &_vertexBufferFrameBorder); 
glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferFrameBorder); 
glBufferData(GL_ARRAY_BUFFER, sizeof(meshData), meshData, GL_STATIC_DRAW); 

glGenBuffers(1, &_indexBufferFrameBorder); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferFrameBorder); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(meshIndices), meshIndices, GL_STATIC_DRAW); 

// position 
glEnableVertexAttribArray(GLKVertexAttribPosition); 
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(VertexData), BUFFER_OFFSET(0)); 
// normal 
glEnableVertexAttribArray(GLKVertexAttribNormal); 
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, sizeof(VertexData), BUFFER_OFFSET(12)); 
// texture 
glEnableVertexAttribArray(GLKVertexAttribTexCoord0); 
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(VertexData), (char *)24); 

// set frame texture 
UIImage *frameImage = [UIImage imageNamed:@"polaroid.png"]; 
self.frameBorderEffect.texture2d0.name = [ImageLoader LoadGLKTextureInfo_ByImage:frameImage]; 
+0

好的。我刚刚看到类似我的所有类型的问题:http://stackoverflow.com/questions/13678485/how-can-i-apply-different-textures-to-different-objects-using-glkit?rq=1 – AlvinfromDiaspar 2013-05-04 08:28:31

回答