【问题标题】:OpenGL Texturing mesh FrontSide and BackSideOpenGL 纹理网格 FrontSide 和 BackSide
【发布时间】:2011-08-27 19:36:41
【问题描述】:

我没有使用 OpenGL 的经验(我的问题证明了这一点),但我需要一些小技巧来解决问题。我有一个网格,一个正方形,我需要应用 2 个纹理:1 个 FrontSide 和 1 个 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] 有人可以发布片段或指出教程或其他材料吗?
谢谢。

【问题讨论】:

    标签: opengl mesh texturing


    【解决方案1】:

    由于您似乎没有使用着色器,因此您可以做的最简单的事情就是使用背面剔除来发挥您的优势。使用一个面剔除渲染对象,然后更改纹理并使用正在渲染的相反面进行渲染。

    【讨论】:

    • 将纹理更改为 rander 的解决方案不是解决方案,因为网格是“灵活的”方形,可以同时看到两侧。那么唯一的其他解决方案是使用着色器?
    • @Neo1975:根据定义,三角形是平面的。您只能看到任何单个三角形的一侧。因此,使用一个面剔除渲染的三角形将必然不会与另一个渲染。因此,您可以保证能够按照我的描述渲染网格,因为网格的每个三角形组件将仅在两个通道中的一个中可见。
    • @Nicole 你是对的。我必须对此进行调查。你的粉丝有什么推荐的吗?通过其他乐队,您是否使用具有相同坐标的 2 个正方形可以解决我的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多