首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用OpenGL ES中删除的隐藏线绘制线框网格?

如何用OpenGL ES中删除的隐藏线绘制线框网格?
EN

Stack Overflow用户
提问于 2015-06-01 06:33:47
回答 1查看 4.9K关注 0票数 5

我想画的立方体:

上面的多维数据集很容易在OpenGL中用函数glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)创建,但是众所周知,OpenGL ES不包括我想要使用的函数。总之,我不想像这样画立方体:

我要感谢那些能提供任何帮助的人。

========================least更新picture============================

后缘比前缘薄一点。有解决这个问题的办法吗?

当前代码:

代码语言:javascript
运行
复制
    GLES20.glEnable(GLES20.GL_DEPTH_TEST);
    GLES20.glDisable(GLES20.GL_POLYGON_OFFSET_FILL);
    // Draw edge
    GLES20.glDrawElements(GLES20.GL_LINES, lineIndices.length,
            GLES20.GL_UNSIGNED_SHORT, lineIndexBuffer);

    GLES20.glEnable(GLES20.GL_POLYGON_OFFSET_FILL);
    GLES20.glPolygonOffset(1.0f, 1.0f);
    // Apply background color and draw faces
    GLES20.glUniform4fv(mColorHandle, 1, faceColor, 0);
    GLES20.glDrawElements(GLES20.GL_TRIANGLES, triangleIndices.length,
            GLES20.GL_UNSIGNED_SHORT, triangleIndexBuffer);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-02 18:01:35

下面是一个标准技巧(假设启用深度缓冲区):

  1. 绘制网格边(线)
  2. 用背景颜色填充网格多边形(以掩盖隐藏的线条)

由于网格边和网格面将有相同的z值,在它们遇到的地方,你需要解决z格斗问题。最简单的方法是使用多边形偏移量,使边沿“悬停”在“多边形面”之上:

代码语言:javascript
运行
复制
gl.disable(gl.POLYGON_OFFSET_FILL)
/* draw polygon edges */
gl.enable(gl.POLYGON_OFFSET_FILL);
gl.polygonOffset(1.0, 1.0);
/* fill polygons in background color */

这里有一个线框酒杯,说明了z格斗的问题:

在这里,我用多边形偏移量解决了z格斗问题:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30567044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档