gpt4 book ai didi

java - 在线框中绘制隐藏线作为点画

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:28 25 4
gpt4 key购买 nike

我试图在我的线框图中将所有隐藏线(或线的一部分)绘制为虚线(即点画)。经过一些研究,这应该可以通过在渲染时进行多次传递来实现。

这是我目前所拥有的。

// -- preamble stuff --
gl.glClearColor(1.f, 1.f, 1.f, 1.f);
gl.glShadeModel(GL.GL_SMOOTH);
gl.glDepthFunc(GL.GL_LEQUAL);
gl.glLineWidth(2);

gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// -- render hidden lines with stipple set, color mask enabled, depth buffer disabled --
gl.glDisable(GL_DEPTH_TEST);
gl.glColorMask(true, true, true, true);
gl.glLineStipple(1, (short) 0x00FF);
gl.glEnable(GL_LINE_STIPPLE);
gl.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderGLDisplayLists(); // -- does the rendering

// -- render in fill mode with color mask disabled, depth buffer enabled --
gl.glEnable(GL_DEPTH_TEST);
gl.glColorMask(false, false, false, false);
gl.glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
renderGLDisplayLists();

// -- final pass to render visible lines --
gl.glColorMask(true, true, true, true);
gl.glEnable(GL_LINE);
gl.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderGLDisplayLists();

我附上了当我在我正在处理的特定案例上运行它时会发生什么。

最佳答案

您应该在启用深度缓冲区的情况下最后绘制点画线,但相反并且是只读的

//just drew the fills
gl.glDepthMask(false);
lg.glDepthFunc(gl.GL_GREATER);//reverses the depth buffer
//render
gl.glColorMask(true, true, true, true);
gl.glLineStipple(1, (short) 0x00FF);
gl.glEnable(GL_LINE_STIPPLE);
gl.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderGLDisplayLists(); // -- does the rendering

gl.glDepthMask(true);
lg.glDepthFunc(gl.GL_LESS);//restores the depth buffer

关于java - 在线框中绘制隐藏线作为点画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com