2011-08-27 46 views
0

我没有OpenGL的经验(和我的问题证明这一点),但我需要一个小小的snipplet来解决问题。我有一个网格,一个正方形,我需要应用2个纹理:1个FrontSide和1个BackSide。 这是应用纹理前端代码:OpenGL纹理网格FrontSide和BackSide

mTextureIds = new int[1]; 
gl.glGenTextures(1, mTextureIds, 0); 
// Set texture attributes. 
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureIds[0]); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); 
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureIds[0]); 
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, mBitmapFrontSide, 0); 
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTexCoords); 

有人能帮助我吗?
1]是否可以应用2个不同的纹理1正面和1个背面?
2]有人可以发布小窍门或指示教程或其他材料?
谢谢。

回答

2

由于您似乎没有使用着色器,因此最简单的方法就是使用背面剔除来获得优势。使用一个面剔除来渲染对象,然后更改纹理并渲染相反的面。

+0

将纹理更改为rander的解决方案不是解决方案,因为网格是“灵活的”sqare,并且可以同时看到两侧。所以唯一的其他解决方案是使用着色器? – Neo1975

+0

@ Neo1975:根据定义,三角形是平面的。你只能看到任何单个三角形的一面。因此,用一个面部剔除渲染的三角形将不会与另一个渲染。因此,您可以保证能够像我所描述的那样渲染网格,因为网格中的每个三角形组件都只能在两次传递中的一个中可见。 –

+0

@Nicole你说得对。我必须对此进行调查。你的粉丝建议读些什么吗?通过其他乐队你是否使用同一坐标的2个方格可以解决我的问题? – Neo1975