2013-05-04 71 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

回答