2011-08-27 61 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